[SCM] Samba Shared Repository - branch master updated

Stefan Metzmacher metze at samba.org
Thu Jan 30 10:50:04 MST 2014


The branch, master has been updated
       via  0b23345 s3:smbd: skip empty records in smbXsrv_open_cleanup()
       via  6b2d67a smbd:smb2: fix durable reconnect: set fsp->fnum from the smbXsrv_open->local_id
       via  e93f052 docs: remove extra spaces in synopsis of dbwrap_tool
       via  1e3b352 docs: document new --non-persistent option to dbwrap_tool
       via  c3f9327 dbwrap_tool: add option "--non-persistent" and force excatly one of "--[non-]persistent"
       via  6f748fe docs: remove short form "-p" of --persistent from dbwrap_tool manpage
       via  6dd1008 dbwrap_tool: remove the short form "-p" of "--persistent"
      from  f42d380 s3:brlock: fix a comment typo

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


- Log -----------------------------------------------------------------
commit 0b23345676c6f02d5bb1a327174d8456705ec0c7
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Dec 24 09:00:01 2013 +0100

    s3:smbd: skip empty records in smbXsrv_open_cleanup()
    
    This should avoid scary ndr_pull errors, if there's
    a cleanup race.
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>
    Reviewed-by: Michael Adam <obnox at samba.org>
    
    Autobuild-User(master): Stefan Metzmacher <metze at samba.org>
    Autobuild-Date(master): Thu Jan 30 18:49:37 CET 2014 on sn-devel-104

commit 6b2d67a345e90306f0d35402d0f4e3067a014057
Author: Michael Adam <obnox at samba.org>
Date:   Fri Jan 24 00:09:50 2014 +0100

    smbd:smb2: fix durable reconnect: set fsp->fnum from the smbXsrv_open->local_id
    
    Originally, fsp->fnum was left at the INVALID fnum value.
    
    Signed-off-by: Michael Adam <obnox at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit e93f052e37e736e5776fe7f7c7d246f9ecc4b4c8
Author: Michael Adam <obnox at samba.org>
Date:   Thu Jan 30 10:47:15 2014 +0100

    docs: remove extra spaces in synopsis of dbwrap_tool
    
    Signed-off-by: Michael Adam <obnox at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 1e3b352f799038ec25437db53e051dadb9d97c95
Author: Michael Adam <obnox at samba.org>
Date:   Thu Jan 30 10:36:46 2014 +0100

    docs: document new --non-persistent option to dbwrap_tool
    
    Signed-off-by: Michael Adam <obnox at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit c3f93271ef447f9f16cd3002307c630c5f149f5a
Author: Michael Adam <obnox at samba.org>
Date:   Thu Jan 30 10:29:49 2014 +0100

    dbwrap_tool: add option "--non-persistent" and force excatly one of "--[non-]persistent"
    
    We want to force users of dbwrap_tool to explicitly specify
    persistent or non-persistent. Otherwise, one could easily
    by accident wipe a whole database that is actually persistent
    but not currently opened by a samba process, just by openeing
    the DB with the default non-persistent mode...
    
    Signed-off-by: Michael Adam <obnox at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 6f748fef652bbea3c8dbbbfb96b95270e6f1dcfc
Author: Michael Adam <obnox at samba.org>
Date:   Thu Jan 30 10:33:00 2014 +0100

    docs: remove short form "-p" of --persistent from dbwrap_tool manpage
    
    Signed-off-by: Michael Adam <obnox at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 6dd1008c4e8b0b798d589959021c9b578db74ff4
Author: Michael Adam <obnox at samba.org>
Date:   Wed Jan 29 16:58:37 2014 +0100

    dbwrap_tool: remove the short form "-p" of "--persistent"
    
    Signed-off-by: Michael Adam <obnox at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

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

Summary of changes:
 docs-xml/manpages/dbwrap_tool.1.xml |   28 +++++++++++++++++++++-------
 source3/smbd/durable.c              |    1 +
 source3/smbd/smbXsrv_open.c         |    9 +++++++++
 source3/utils/dbwrap_tool.c         |   23 ++++++++++++++++++-----
 4 files changed, 49 insertions(+), 12 deletions(-)


Changeset truncated at 500 lines:

diff --git a/docs-xml/manpages/dbwrap_tool.1.xml b/docs-xml/manpages/dbwrap_tool.1.xml
index 8e979f6..0c27fad 100644
--- a/docs-xml/manpages/dbwrap_tool.1.xml
+++ b/docs-xml/manpages/dbwrap_tool.1.xml
@@ -19,7 +19,8 @@
 <refsynopsisdiv>
 	<cmdsynopsis>
 		<command>dbwrap_tool</command>
-		<arg choice="opt">-p|--persistent</arg>
+		<arg choice="opt">--persistent</arg>
+		<arg choice="opt">--non-persistent</arg>
 		<arg choice="opt">-d <debug level></arg>
 		<arg choice="opt">-s <config file></arg>
 		<arg choice="opt">-l <log file base></arg>
@@ -29,9 +30,7 @@
 		<arg choice="req"><operation></arg>
 		<arg choice="opt"><key>
 			<arg choice="opt"><type>
-				<arg choice="opt"><value></arg>
-			</arg>
-		</arg>
+				<arg choice="opt"><value></arg></arg></arg>
 	</cmdsynopsis>
 </refsynopsisdiv>
 
@@ -70,10 +69,25 @@
 
 	<variablelist>
 		<varlistentry>
-			<term>-p|--persistent</term>
+			<term>--persistent</term>
 			<listitem><para>Open the database as a persistent database.
-			If this option is not specified, the database is opened as
-			non-persistent.
+			</para>
+			<para>
+			Exactly one of --persistent and --non-persistent must be
+			specified.
+			</para></listitem>
+		</varlistentry>
+		<varlistentry>
+			<term>--non-persistent</term>
+			<listitem><para>Open the database as a non-persistent database.
+			</para>
+			<para>
+			Caveat: opening a database as non-persistent when there
+			is currently no other opener will wipe the database.
+			</para>
+			<para>
+			Exactly one of --persistent and --non-persistent must be
+			specified.
 			</para></listitem>
 		</varlistentry>
 		&popt.common.samba.client;
diff --git a/source3/smbd/durable.c b/source3/smbd/durable.c
index c5281a8..0da734e 100644
--- a/source3/smbd/durable.c
+++ b/source3/smbd/durable.c
@@ -717,6 +717,7 @@ NTSTATUS vfs_default_durable_reconnect(struct connection_struct *conn,
 	fsp->share_access = e->share_access;
 	fsp->can_read = ((fsp->access_mask & (FILE_READ_DATA)) != 0);
 	fsp->can_write = ((fsp->access_mask & (FILE_WRITE_DATA|FILE_APPEND_DATA)) != 0);
+	fsp->fnum = op->local_id;
 
 	/*
 	 * TODO:
diff --git a/source3/smbd/smbXsrv_open.c b/source3/smbd/smbXsrv_open.c
index 3566dc2..3e2fed3 100644
--- a/source3/smbd/smbXsrv_open.c
+++ b/source3/smbd/smbXsrv_open.c
@@ -1388,6 +1388,7 @@ NTSTATUS smbXsrv_open_cleanup(uint64_t persistent_id)
 	struct smbXsrv_open_global0 *op = NULL;
 	uint8_t key_buf[SMBXSRV_OPEN_GLOBAL_TDB_KEY_SIZE];
 	TDB_DATA key;
+	TDB_DATA val;
 	struct db_record *rec;
 	bool delete_open = false;
 	uint32_t global_id = persistent_id & UINT32_MAX;
@@ -1403,6 +1404,14 @@ NTSTATUS smbXsrv_open_cleanup(uint64_t persistent_id)
 		goto done;
 	}
 
+	val = dbwrap_record_get_value(rec);
+	if (val.dsize == 0) {
+		DEBUG(10, ("smbXsrv_open_cleanup[global: 0x%08x] "
+			  "empty record in %s, skipping...\n",
+			   global_id, dbwrap_name(smbXsrv_open_global_db_ctx)));
+		goto done;
+	}
+
 	status = smbXsrv_open_global_parse_record(talloc_tos(), rec, &op);
 	if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(1, ("smbXsrv_open_cleanup[global: 0x%08x] "
diff --git a/source3/utils/dbwrap_tool.c b/source3/utils/dbwrap_tool.c
index 79b40d2..ffca6b6 100644
--- a/source3/utils/dbwrap_tool.c
+++ b/source3/utils/dbwrap_tool.c
@@ -411,6 +411,7 @@ int main(int argc, const char **argv)
 	enum dbwrap_type type;
 	const char *valuestr = "0";
 	int persistent = 0;
+	int non_persistent = 0;
 	int tdb_flags = TDB_DEFAULT;
 
 	TALLOC_CTX *mem_ctx = talloc_stackframe();
@@ -420,7 +421,13 @@ int main(int argc, const char **argv)
 	struct poptOption popt_options[] = {
 		POPT_AUTOHELP
 		POPT_COMMON_SAMBA
-		{ "persistent", 'p', POPT_ARG_NONE, &persistent, 0, "treat the database as persistent", NULL },
+		{ "non-persistent", 0, POPT_ARG_NONE, &non_persistent, 0,
+		  "treat the database as non-persistent "
+		  "(CAVEAT: This mode might wipe your database!)",
+		  NULL },
+		{ "persistent", 0, POPT_ARG_NONE, &persistent, 0,
+		  "treat the database as persistent",
+		  NULL },
 		POPT_TABLEEND
 	};
 	int opt;
@@ -463,6 +470,16 @@ int main(int argc, const char **argv)
 		goto done;
 	}
 
+	if ((persistent == 0 && non_persistent == 0) ||
+	    (persistent == 1 && non_persistent == 1))
+	{
+		d_fprintf(stderr, "ERROR: you must specify exactly one "
+			  "of --persistent and --non-persistent\n");
+		goto done;
+	} else if (non_persistent == 1) {
+		tdb_flags |= TDB_CLEAR_IF_FIRST;
+	}
+
 	dbname = extra_argv[0];
 	opname = extra_argv[1];
 
@@ -563,10 +580,6 @@ int main(int argc, const char **argv)
 		goto done;
 	}
 
-	if (persistent == 0) {
-		tdb_flags |= TDB_CLEAR_IF_FIRST;
-	}
-
 	switch (op) {
 	case OP_FETCH:
 	case OP_STORE:


-- 
Samba Shared Repository


More information about the samba-cvs mailing list