[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha7-825-g108cf27

Tim Prouty tprouty at samba.org
Thu Apr 2 04:00:54 GMT 2009


The branch, master has been updated
       via  108cf27bb1fe0e602d00a8cc0b54c1d72a1630c8 (commit)
       via  9d95f8704d4dab70d50290ebd1e3c0b8800261a7 (commit)
      from  c57b32c5ab754cdf99527e4dfc4bb6ff3ca93e25 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 108cf27bb1fe0e602d00a8cc0b54c1d72a1630c8
Author: Zack Kirsch <zack.kirsch at isilon.com>
Date:   Wed Apr 1 17:46:40 2009 -0700

    s4 torture: Addition to RAW-BENCH-LOCK to take a configurable number of locks before starting the test
    
    This can be useful for benchmarking as well as stress testing.

commit 9d95f8704d4dab70d50290ebd1e3c0b8800261a7
Author: Zach Loafman <zachary.loafman at isilon.com>
Date:   Wed Apr 1 11:06:51 2009 -0700

    s/NT_STATUS_WIN7_INVALID_RANGE/NT_STATUS_INVALID_LOCK_RANGE/g

-----------------------------------------------------------------------

Summary of changes:
 libcli/util/ntstatus.h          |    4 ++--
 source4/libcli/util/nterr.c     |    2 +-
 source4/torture/raw/lock.c      |    4 ++--
 source4/torture/raw/lockbench.c |   20 +++++++++++++++++++-
 source4/torture/smb2/lock.c     |   10 +++++-----
 5 files changed, 29 insertions(+), 11 deletions(-)


Changeset truncated at 500 lines:

diff --git a/libcli/util/ntstatus.h b/libcli/util/ntstatus.h
index 1608e28..a97ef53 100644
--- a/libcli/util/ntstatus.h
+++ b/libcli/util/ntstatus.h
@@ -60,8 +60,8 @@ typedef uint32_t NTSTATUS;
 #define ERROR_INSUFFICIENT_BUFFER	  NT_STATUS(0x007a)
 #define ERROR_INVALID_DATATYPE		  NT_STATUS(0x070c)
 
-/* XXX Win7 Status code: Name unknown. */
-#define NT_STATUS_WIN7_INVALID_RANGE NT_STATUS(0xC0000000 | 0x01a1)
+/* Win7 status codes. */
+#define NT_STATUS_INVALID_LOCK_RANGE      NT_STATUS(0xC0000000 | 0x01a1)
 
 /* Win32 Error codes extracted using a loop in smbclient then printing a
    netmon sniff to a file. */
diff --git a/source4/libcli/util/nterr.c b/source4/libcli/util/nterr.c
index 7f544b5..c196433 100644
--- a/source4/libcli/util/nterr.c
+++ b/source4/libcli/util/nterr.c
@@ -549,7 +549,7 @@ static const nt_err_code_struct nt_errs[] =
 	{ "NT_STATUS_OBJECTID_NOT_FOUND", NT_STATUS_OBJECTID_NOT_FOUND },
 	{ "NT_STATUS_DOWNGRADE_DETECTED", NT_STATUS_DOWNGRADE_DETECTED },
 	{ "NT_STATUS_DS_BUSY", NT_STATUS_DS_BUSY },
-	{ "XXX_INVALID_RANGE", NT_STATUS_WIN7_INVALID_RANGE },
+	{ "NT_STATUS_INVALID_LOCK_RANGE", NT_STATUS_INVALID_LOCK_RANGE },
 	{ "STATUS_MORE_ENTRIES", STATUS_MORE_ENTRIES },
 	{ "STATUS_SOME_UNMAPPED", STATUS_SOME_UNMAPPED },
 	{ "STATUS_NOTIFY_CLEANUP", STATUS_NOTIFY_CLEANUP },
diff --git a/source4/torture/raw/lock.c b/source4/torture/raw/lock.c
index 72a03e1..7e3ac29 100644
--- a/source4/torture/raw/lock.c
+++ b/source4/torture/raw/lock.c
@@ -364,7 +364,7 @@ static bool test_lockx(struct torture_context *tctx, struct smbcli_state *cli)
 	lock[0].count = 2;
 	status = smb_raw_lock(cli->tree, &io);
 	if (TARGET_IS_WIN7(tctx))
-		CHECK_STATUS(status, NT_STATUS_WIN7_INVALID_RANGE);
+		CHECK_STATUS(status, NT_STATUS_INVALID_LOCK_RANGE);
 	else
 		CHECK_STATUS(status, NT_STATUS_OK);
 	lock[0].pid--;
@@ -376,7 +376,7 @@ static bool test_lockx(struct torture_context *tctx, struct smbcli_state *cli)
 	/* XXX This is very strange - Win7 gives us an invalid range when we
 	 * unlock the range even though the range is locked! Win7 bug? */
 	if (TARGET_IS_WIN7(tctx))
-		CHECK_STATUS(status, NT_STATUS_WIN7_INVALID_RANGE);
+		CHECK_STATUS(status, NT_STATUS_INVALID_LOCK_RANGE);
 	else {
 		CHECK_STATUS(status, NT_STATUS_OK);
 		status = smb_raw_lock(cli->tree, &io);
diff --git a/source4/torture/raw/lockbench.c b/source4/torture/raw/lockbench.c
index d20175a..c7f99ae 100644
--- a/source4/torture/raw/lockbench.c
+++ b/source4/torture/raw/lockbench.c
@@ -317,13 +317,15 @@ bool torture_bench_lock(struct torture_context *torture)
 {
 	bool ret = true;
 	TALLOC_CTX *mem_ctx = talloc_new(torture);
-	int i;
+	int i, j;
 	int timelimit = torture_setting_int(torture, "timelimit", 10);
 	struct timeval tv;
 	struct benchlock_state *state;
 	int total = 0, minops=0;
 	struct smbcli_state *cli;
 	bool progress;
+	off_t offset;
+	int initial_locks = torture_setting_int(torture, "initial_locks", 0);
 
 	progress = torture_setting_bool(torture, "progress", true);
 
@@ -371,6 +373,21 @@ bool torture_bench_lock(struct torture_context *torture)
 			goto failed;
 		}
 
+		/* Optionally, lock initial_locks for each proc beforehand. */
+		if (i == 0 && initial_locks > 0) {
+			printf("Initializing %d locks on each proc.\n",
+			    initial_locks);
+		}
+
+		for (j = 0; j < initial_locks; j++) {
+			offset = (0xFFFFFED8LLU * (i+2)) + j;
+			if (!NT_STATUS_IS_OK(smbcli_lock64(state[i].tree,
+			    state[i].fnum, offset, 1, 0, WRITE_LOCK))) {
+				printf("Failed initializing, lock=%d\n", j);
+				goto failed;
+			}
+		}
+
 		state[i].stage = LOCK_INITIAL;
 		lock_send(&state[i]);
 	}
@@ -413,6 +430,7 @@ bool torture_bench_lock(struct torture_context *torture)
 	return ret;
 
 failed:
+	smbcli_deltree(state[0].tree, BASEDIR);
 	talloc_free(mem_ctx);
 	return false;
 }
diff --git a/source4/torture/smb2/lock.c b/source4/torture/smb2/lock.c
index 5f0293c..844309e 100644
--- a/source4/torture/smb2/lock.c
+++ b/source4/torture/smb2/lock.c
@@ -101,7 +101,7 @@ static bool test_valid_request(struct torture_context *torture, struct smb2_tree
 	el[0].flags		= SMB2_LOCK_FLAG_EXCLUSIVE|SMB2_LOCK_FLAG_FAIL_IMMEDIATELY;
 	status = smb2_lock(tree, &lck);
 	if (TARGET_IS_WIN7(torture)) {
-		CHECK_STATUS(status, NT_STATUS_WIN7_INVALID_RANGE);
+		CHECK_STATUS(status, NT_STATUS_INVALID_LOCK_RANGE);
 	} else {
 		CHECK_STATUS(status, NT_STATUS_OK);
 	}
@@ -110,7 +110,7 @@ static bool test_valid_request(struct torture_context *torture, struct smb2_tree
 	lck.in.reserved		= 0x123ab2;
 	status = smb2_lock(tree, &lck);
 	if (TARGET_IS_WIN7(torture)) {
-		CHECK_STATUS(status, NT_STATUS_WIN7_INVALID_RANGE);
+		CHECK_STATUS(status, NT_STATUS_INVALID_LOCK_RANGE);
 	} else {
 		CHECK_STATUS(status, NT_STATUS_OK);
 	}
@@ -118,7 +118,7 @@ static bool test_valid_request(struct torture_context *torture, struct smb2_tree
 	lck.in.reserved		= 0x123ab3;
 	status = smb2_lock(tree, &lck);
 	if (TARGET_IS_WIN7(torture)) {
-		CHECK_STATUS(status, NT_STATUS_WIN7_INVALID_RANGE);
+		CHECK_STATUS(status, NT_STATUS_INVALID_LOCK_RANGE);
 	} else if (TARGET_IS_WINDOWS(torture)) {
 		CHECK_STATUS(status, NT_STATUS_OK);
 	} else {
@@ -129,7 +129,7 @@ static bool test_valid_request(struct torture_context *torture, struct smb2_tree
 	lck.in.reserved		= 0x123ab4;
 	status = smb2_lock(tree, &lck);
 	if (TARGET_IS_WIN7(torture)) {
-		CHECK_STATUS(status, NT_STATUS_WIN7_INVALID_RANGE);
+		CHECK_STATUS(status, NT_STATUS_INVALID_LOCK_RANGE);
 	} else {
 		CHECK_STATUS(status, NT_STATUS_LOCK_NOT_GRANTED);
 	}
@@ -137,7 +137,7 @@ static bool test_valid_request(struct torture_context *torture, struct smb2_tree
 	lck.in.reserved		= 0x123ab5;
 	status = smb2_lock(tree, &lck);
 	if (TARGET_IS_WIN7(torture)) {
-		CHECK_STATUS(status, NT_STATUS_WIN7_INVALID_RANGE);
+		CHECK_STATUS(status, NT_STATUS_INVALID_LOCK_RANGE);
 	} else if (TARGET_IS_WINDOWS(torture)) {
 		CHECK_STATUS(status, NT_STATUS_OK);
 	} else {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list