[SCM] Samba Shared Repository - branch master updated
Andrew Bartlett
abartlet at samba.org
Tue Aug 21 05:13:03 MDT 2012
The branch, master has been updated
via ebb776f selftest: Add tests for vfs_aio_fork
via e79ed4f s3-vfs: Make vfs_aio_fork erratic timing behaviour a run-time option
from a817959 build: Create bin/ when doing 'waf dist' from a fresh checkout
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit ebb776f51f697ece62ed5c7ee6aa4865397347c2
Author: Andrew Bartlett <abartlet at samba.org>
Date: Tue Aug 21 19:22:54 2012 +1000
selftest: Add tests for vfs_aio_fork
Autobuild-User(master): Andrew Bartlett <abartlet at samba.org>
Autobuild-Date(master): Tue Aug 21 13:12:33 CEST 2012 on sn-devel-104
commit e79ed4fe72208e632cd980d4adec07f1c78f1511
Author: Andrew Bartlett <abartlet at samba.org>
Date: Tue Aug 21 19:22:37 2012 +1000
s3-vfs: Make vfs_aio_fork erratic timing behaviour a run-time option
This will allow this to be tested as part of a normal selftest.
Andrew Bartlett
-----------------------------------------------------------------------
Summary of changes:
selftest/target/Samba3.pm | 8 ++++++
source3/modules/vfs_aio_fork.c | 49 +++++++++++++++++++++++++++++++++++----
source3/selftest/tests.py | 4 +++
3 files changed, 56 insertions(+), 5 deletions(-)
Changeset truncated at 500 lines:
diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index 31bd15b..cb11827 100755
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -344,10 +344,18 @@ sub setup_secshare($$)
print "PROVISIONING server with security=share...";
+ my $prefix_abs = abs_path($path);
+
my $secshare_options = "
security = share
lanman auth = yes
vfs objects = $vfs_modulesdir_abs/xattr_tdb.so $vfs_modulesdir_abs/streams_depot.so
+
+[vfs_aio_fork]
+ path = $prefix_abs/share
+ vfs objects = $vfs_modulesdir_abs/aio_fork.so
+ read only = no
+ vfs_aio_fork:erratic_testing_mode=yes
";
my $vars = $self->provision($path,
diff --git a/source3/modules/vfs_aio_fork.c b/source3/modules/vfs_aio_fork.c
index 811d44e..2ec3d3d 100644
--- a/source3/modules/vfs_aio_fork.c
+++ b/source3/modules/vfs_aio_fork.c
@@ -33,6 +33,10 @@
#define MAP_FILE 0
#endif
+struct aio_fork_config {
+ bool erratic_testing_mode;
+};
+
struct mmap_area {
size_t size;
volatile void *ptr;
@@ -112,6 +116,7 @@ struct rw_cmd {
size_t n;
off_t offset;
enum cmd_type cmd;
+ bool erratic_testing_mode;
};
struct rw_ret {
@@ -355,8 +360,7 @@ static void aio_child_loop(int sockfd, struct mmap_area *map)
cmd_type_str(cmd_struct.cmd),
(int)cmd_struct.n, (int)cmd_struct.offset, fd));
-#ifdef DEVELOPER
- {
+ if (cmd_struct.erratic_testing_mode) {
/*
* For developer testing, we want erratic behaviour for
* async I/O times
@@ -372,8 +376,6 @@ static void aio_child_loop(int sockfd, struct mmap_area *map)
DEBUG(10, ("delaying for %u msecs\n", msecs));
smb_msleep(msecs);
}
-#endif
-
ZERO_STRUCT(ret_struct);
@@ -587,6 +589,10 @@ static struct tevent_req *aio_fork_pread_send(struct vfs_handle_struct *handle,
struct rw_cmd cmd;
ssize_t written;
int err;
+ struct aio_fork_config *config;
+ SMB_VFS_HANDLE_GET_DATA(handle, config,
+ struct aio_fork_config,
+ return -1);
req = tevent_req_create(mem_ctx, &state, struct aio_fork_pread_state);
if (req == NULL) {
@@ -609,6 +615,7 @@ static struct tevent_req *aio_fork_pread_send(struct vfs_handle_struct *handle,
cmd.n = n;
cmd.offset = offset;
cmd.cmd = READ_CMD;
+ cmd.erratic_testing_mode = config->erratic_testing_mode;
DEBUG(10, ("sending fd %d to child %d\n", fsp->fh->fd,
(int)state->child->pid));
@@ -698,6 +705,10 @@ static struct tevent_req *aio_fork_pwrite_send(
struct rw_cmd cmd;
ssize_t written;
int err;
+ struct aio_fork_config *config;
+ SMB_VFS_HANDLE_GET_DATA(handle, config,
+ struct aio_fork_config,
+ return NULL);
req = tevent_req_create(mem_ctx, &state, struct aio_fork_pwrite_state);
if (req == NULL) {
@@ -720,6 +731,7 @@ static struct tevent_req *aio_fork_pwrite_send(
cmd.n = n;
cmd.offset = offset;
cmd.cmd = WRITE_CMD;
+ cmd.erratic_testing_mode = config->erratic_testing_mode;
DEBUG(10, ("sending fd %d to child %d\n", fsp->fh->fd,
(int)state->child->pid));
@@ -808,6 +820,10 @@ static struct tevent_req *aio_fork_fsync_send(
struct rw_cmd cmd;
ssize_t written;
int err;
+ struct aio_fork_config *config;
+ SMB_VFS_HANDLE_GET_DATA(handle, config,
+ struct aio_fork_config,
+ return -1);
req = tevent_req_create(mem_ctx, &state, struct aio_fork_fsync_state);
if (req == NULL) {
@@ -822,6 +838,7 @@ static struct tevent_req *aio_fork_fsync_send(
ZERO_STRUCT(cmd);
cmd.cmd = FSYNC_CMD;
+ cmd.erratic_testing_mode = config->erratic_testing_mode;
DEBUG(10, ("sending fd %d to child %d\n", fsp->fh->fd,
(int)state->child->pid));
@@ -896,6 +913,28 @@ static int aio_fork_fsync_recv(struct tevent_req *req, int *err)
static int aio_fork_connect(vfs_handle_struct *handle, const char *service,
const char *user)
{
+ int ret;
+ struct aio_fork_config *config;
+ ret = SMB_VFS_NEXT_CONNECT(handle, service, user);
+
+ if (ret < 0) {
+ return ret;
+ }
+
+ config = talloc_zero(handle->conn, struct aio_fork_config);
+ if (!config) {
+ SMB_VFS_NEXT_DISCONNECT(handle);
+ DEBUG(0, ("talloc_zero() failed\n"));
+ return -1;
+ }
+
+ config->erratic_testing_mode = lp_parm_bool(SNUM(handle->conn), "vfs_aio_fork",
+ "erratic_testing_mode", false);
+
+ SMB_VFS_HANDLE_SET_DATA(handle, config,
+ NULL, struct aio_fork_config,
+ return -1);
+
/*********************************************************************
* How many threads to initialize ?
* 100 per process seems insane as a default until you realize that
@@ -907,7 +946,7 @@ static int aio_fork_connect(vfs_handle_struct *handle, const char *service,
* says different.
*********************************************************************/
aio_pending_size = 100;
- return SMB_VFS_NEXT_CONNECT(handle, service, user);
+ return 0;
}
static struct vfs_fn_pointers vfs_aio_fork_fns = {
diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py
index f9f2e22..2e13ca0 100755
--- a/source3/selftest/tests.py
+++ b/source3/selftest/tests.py
@@ -102,6 +102,10 @@ for t in tests:
plantestsuite("samba3.smbtorture_s3.crypt_server(s3dc).%s" % t, "s3dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmpenc', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
plantestsuite("samba3.smbtorture_s3.plain(dc).%s" % t, "dc", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/tmp', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
+tests = ["RW1", "RW2", "RW3"]
+for t in tests:
+ plantestsuite("samba3.smbtorture_s3.vfs_aio_fork(secshare).%s" % t, "secshare", [os.path.join(samba3srcdir, "script/tests/test_smbtorture_s3.sh"), t, '//$SERVER_IP/vfs_aio_fork', '$USERNAME', '$PASSWORD', smbtorture3, "", "-l $LOCAL_PATH"])
+
posix_tests=[ "POSIX", "POSIX-APPEND"]
for t in posix_tests:
--
Samba Shared Repository
More information about the samba-cvs
mailing list