[SCM] Samba Shared Repository - branch master updated

Volker Lendecke vlendec at samba.org
Thu Jan 5 14:01:02 MST 2012


The branch, master has been updated
       via  f994f0a Fix the local-memcache test for 64-bit
       via  c790b3c s3: Run the CLEANUP2 test
       via  f97216e s3: Add a test for proper brlock cleanup
       via  515dfe6 s3: Clarify what CLEANUP1 does
      from  5a8c881 Add some debug to vfs_aio_pthread so I can see when jobs start and stop.

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


- Log -----------------------------------------------------------------
commit f994f0a3424b235c48f68beef7817f245fc0a47c
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jan 5 13:12:26 2012 +0100

    Fix the local-memcache test for 64-bit
    
    The memcache test walks the purge functionality. The maximum memcache size also
    takes all memcache internal headers into account. Those headers contain
    pointers, so on 64-bit they take more space...
    
    Autobuild-User: Volker Lendecke <vlendec at samba.org>
    Autobuild-Date: Thu Jan  5 22:01:00 CET 2012 on sn-devel-104

commit c790b3c8a76542f06f3ced640500969aaa68a4fe
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jan 5 17:47:16 2012 +0100

    s3: Run the CLEANUP2 test

commit f97216eb4ae1052e435d83ce51a7067fa6697ff4
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jan 5 17:44:44 2012 +0100

    s3: Add a test for proper brlock cleanup
    
    We need to improve the server here.
    
    Maybe we should validate the brlock entry whenever we detect a read/write being
    blocked from locking? This is not our hot code path anyway, and it would gain
    us significant robustness. The code might become quite a bit simpler as well.

commit 515dfe6c7ff9f6aed94a51960bb26aabb6fb449b
Author: Volker Lendecke <vl at samba.org>
Date:   Thu Jan 5 15:46:22 2012 +0100

    s3: Clarify what CLEANUP1 does

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

Summary of changes:
 selftest/knownfail             |    1 -
 source3/selftest/tests.py      |    1 +
 source3/torture/proto.h        |    1 +
 source3/torture/test_cleanup.c |   90 +++++++++++++++++++++++++++++++++++++++-
 source3/torture/torture.c      |    3 +-
 5 files changed, 93 insertions(+), 3 deletions(-)


Changeset truncated at 500 lines:

diff --git a/selftest/knownfail b/selftest/knownfail
index 220df1c..4a9f99e 100644
--- a/selftest/knownfail
+++ b/selftest/knownfail
@@ -6,7 +6,6 @@
 
 ^samba3.blackbox.failure.failure # this is designed to fail, for testing our test infrastructure
 .*driver.add_driver_timestamps # we only can store dates, not timestamps
-^samba3.smbtorture_s3.LOCAL-MEMCACHE #fails
 ^samba3.smbtorture_s3.LOCAL-TALLOC-DICT #fails
 ^samba3.posix_s3.nbt.dgram.*netlogon2
 ^samba3.*rap.sam.*.useradd # Not provided by Samba 3
diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py
index 61bd1bb..ea14cc6 100755
--- a/source3/selftest/tests.py
+++ b/source3/selftest/tests.py
@@ -63,6 +63,7 @@ tests=[ "FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7",
         "LOCAL-BASE64", "LOCAL-GENCACHE", "POSIX-APPEND",
         "CASE-INSENSITIVE-CREATE", "SMB2-BASIC", "NTTRANS-FSCTL", "SMB2-NEGPROT",
         "CLEANUP1",
+        "CLEANUP2",
         "BAD-NBT-SESSION"]
 
 for t in tests:
diff --git a/source3/torture/proto.h b/source3/torture/proto.h
index 19e7a72..8d661aa 100644
--- a/source3/torture/proto.h
+++ b/source3/torture/proto.h
@@ -102,5 +102,6 @@ bool run_smb2_session_reauth(int dummy);
 bool run_local_conv_auth_info(int dummy);
 bool run_local_sprintf_append(int dummy);
 bool run_cleanup1(int dummy);
+bool run_cleanup2(int dummy);
 
 #endif /* __TORTURE_H__ */
diff --git a/source3/torture/test_cleanup.c b/source3/torture/test_cleanup.c
index 7248676..2b4989e 100644
--- a/source3/torture/test_cleanup.c
+++ b/source3/torture/test_cleanup.c
@@ -22,6 +22,7 @@
 #include "system/filesys.h"
 #include "libsmb/libsmb.h"
 #include "libcli/smb/smbXcli_base.h"
+#include "libcli/security/security.h"
 
 bool run_cleanup1(int dummy)
 {
@@ -30,7 +31,8 @@ bool run_cleanup1(int dummy)
 	uint16_t fnum;
 	NTSTATUS status;
 
-	printf("Starting cleanup1 test\n");
+	printf("CLEANUP1: Checking that a conflicting share mode is cleaned "
+	       "up\n");
 
 	if (!torture_open_connection(&cli, 0)) {
 		return false;
@@ -67,3 +69,89 @@ done:
 	torture_close_connection(cli);
 	return NT_STATUS_IS_OK(status);
 }
+
+bool run_cleanup2(int dummy)
+{
+	struct cli_state *cli1, *cli2;
+	const char *fname = "\\cleanup2";
+	uint16_t fnum1, fnum2;
+	NTSTATUS status;
+	char buf;
+
+	printf("CLEANUP2: Checking that a conflicting brlock is cleaned up\n");
+
+	if (!torture_open_connection(&cli1, 0)) {
+		return false;
+	}
+	status = cli_ntcreate(
+		cli1, fname, 0, FILE_GENERIC_READ|FILE_GENERIC_WRITE,
+		FILE_ATTRIBUTE_NORMAL,
+		FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
+		FILE_OVERWRITE_IF, 0, 0, &fnum1);
+	if (!NT_STATUS_IS_OK(status)) {
+		printf("open of %s failed (%s)\n", fname, nt_errstr(status));
+		return false;
+	}
+	status = cli_lock32(cli1, fnum1, 0, 1, 0, WRITE_LOCK);
+	if (!NT_STATUS_IS_OK(status)) {
+		printf("lock failed (%s)\n", nt_errstr(status));
+		return false;
+	}
+
+	/*
+	 * Check the file is indeed locked
+	 */
+	if (!torture_open_connection(&cli2, 0)) {
+		return false;
+	}
+	status = cli_ntcreate(
+		cli2, fname, 0, FILE_GENERIC_READ|FILE_GENERIC_WRITE,
+		FILE_ATTRIBUTE_NORMAL,
+		FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
+		FILE_OPEN, 0, 0, &fnum2);
+	if (!NT_STATUS_IS_OK(status)) {
+		printf("open of %s failed (%s)\n", fname, nt_errstr(status));
+		return false;
+	}
+	buf = 'x';
+	status = cli_smbwrite(cli2, fnum2, &buf, 0, 1, NULL);
+	if (!NT_STATUS_EQUAL(status, NT_STATUS_FILE_LOCK_CONFLICT)) {
+		printf("write succeeded\n");
+		return false;
+	}
+
+	/*
+	 * Kill the lock holder
+	 */
+	status = smbXcli_conn_samba_suicide(cli1->conn, 1);
+	if (!NT_STATUS_IS_OK(status)) {
+		printf("smbXcli_conn_samba_suicide failed: %s\n",
+		       nt_errstr(status));
+		return false;
+	}
+
+	/*
+	 * Right now we don't clean up immediately. Re-open the 2nd connection.
+	 */
+#if 1
+	cli_shutdown(cli2);
+	if (!torture_open_connection(&cli2, 0)) {
+		return false;
+	}
+	status = cli_ntcreate(
+		cli2, fname, 0, FILE_GENERIC_READ|FILE_GENERIC_WRITE,
+		FILE_ATTRIBUTE_NORMAL,
+		FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
+		FILE_OPEN, 0, 0, &fnum2);
+	if (!NT_STATUS_IS_OK(status)) {
+		printf("open of %s failed (%s)\n", fname, nt_errstr(status));
+		return false;
+	}
+#endif
+	status = cli_smbwrite(cli2, fnum2, &buf, 0, 1, NULL);
+	if (!NT_STATUS_IS_OK(status)) {
+		printf("write failed: %s\n", nt_errstr(status));
+		return false;
+	}
+	return true;
+}
diff --git a/source3/torture/torture.c b/source3/torture/torture.c
index 9d18f72..8bc9cef 100644
--- a/source3/torture/torture.c
+++ b/source3/torture/torture.c
@@ -8314,7 +8314,7 @@ static bool run_local_memcache(int dummy)
 	size_t size1, size2;
 	bool ret = false;
 
-	cache = memcache_init(NULL, 100);
+	cache = memcache_init(NULL, sizeof(void *) == 8 ? 200 : 100);
 
 	if (cache == NULL) {
 		printf("memcache_init failed\n");
@@ -8880,6 +8880,7 @@ static struct {
 	{ "SMB2-MULTI-CHANNEL", run_smb2_multi_channel },
 	{ "SMB2-SESSION-REAUTH", run_smb2_session_reauth },
 	{ "CLEANUP1", run_cleanup1 },
+	{ "CLEANUP2", run_cleanup2 },
 	{ "LOCAL-SUBSTITUTE", run_local_substitute, 0},
 	{ "LOCAL-GENCACHE", run_local_gencache, 0},
 	{ "LOCAL-TALLOC-DICT", run_local_talloc_dict, 0},


-- 
Samba Shared Repository


More information about the samba-cvs mailing list