[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Tue Jun 4 13:59:04 MDT 2013


The branch, master has been updated
       via  ad383ac s3:smbd: explain parameters in call to SMB_VFS_DURABLE_RECONNECT()
       via  63ac88d s3:smbd: remove code duplication in smb2_create_send()
       via  e6beae4 s3:smbd: remove old comment about scavenger timer from vfs_default_durable_reconnect()
      from  d1feccb tdb: change version to tdb-1.2.12

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


- Log -----------------------------------------------------------------
commit ad383ac8887eb5d44c2f2396e25a167c66b02ae6
Author: Michael Adam <obnox at samba.org>
Date:   Wed May 22 20:16:50 2013 +0200

    s3:smbd: explain parameters in call to SMB_VFS_DURABLE_RECONNECT()
    
    Signed-off-by: Michael Adam <obnox at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Tue Jun  4 21:58:16 CEST 2013 on sn-devel-104

commit 63ac88d40206e3080494e3a4f99858ce5cd6f393
Author: Michael Adam <obnox at samba.org>
Date:   Wed May 22 19:53:12 2013 +0200

    s3:smbd: remove code duplication in smb2_create_send()
    
    Move the calls to smb2srv_open_recreate() from the parsing of
    the create blobs (DHNC and DH2C) to a central place in the
    open execution phase.
    This is also where it should be called: in the durable reconnect
    part, right before the call to SMB_VFS_DURABLE_RECONNECT()
    
    Signed-off-by: Michael Adam <obnox at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit e6beae4471491c5bfcabeb720c5e92183e78e886
Author: Michael Adam <obnox at samba.org>
Date:   Wed May 22 20:26:49 2013 +0200

    s3:smbd: remove old comment about scavenger timer from vfs_default_durable_reconnect()
    
    scavenger functionality belongs to the smb layer (and is meanwhile
    implemented there).
    
    Signed-off-by: Michael Adam <obnox at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

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

Summary of changes:
 source3/smbd/durable.c     |   14 -------
 source3/smbd/smb2_create.c |   81 +++++++++++++++----------------------------
 2 files changed, 28 insertions(+), 67 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/durable.c b/source3/smbd/durable.c
index 69ba109..9b05d48 100644
--- a/source3/smbd/durable.c
+++ b/source3/smbd/durable.c
@@ -696,20 +696,6 @@ NTSTATUS vfs_default_durable_reconnect(struct connection_struct *conn,
 	}
 
 	/*
-	 * TODO:
-	 * add scavenger timer functionality
-	 *
-	 * For now we always allow the reconnect
-	 */
-#if 0
-	expire_time = op->global->disconnect_time;
-	expire_time += NTTIME_MAGIC(op->global->durable_timeout_msec);
-	if (expire < now) {
-		//TODO reopen and close before telling the client...
-	}
-#endif
-
-	/*
 	 * 2. proceed with opening file
 	 */
 
diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c
index 60ba739..6a43d27 100644
--- a/source3/smbd/smb2_create.c
+++ b/source3/smbd/smb2_create.c
@@ -552,6 +552,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
 		uint32_t durable_timeout_msec = 0;
 		bool do_durable_reconnect = false;
 		struct smb2_create_blob *dh2q = NULL;
+		uint64_t persistent_id = 0;
 
 		exta = smb2_create_blob_find(&in_context_blobs,
 					     SMB2_CREATE_TAG_EXTA);
@@ -683,41 +684,13 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
 		}
 
 		if (dhnc) {
-			NTTIME now = timeval_to_nttime(&smb2req->request_time);
-			uint64_t persistent_id;
-
 			persistent_id = BVAL(dhnc->data.data, 0);
 
-			status = smb2srv_open_recreate(smb2req->sconn->conn,
-						smb1req->conn->session_info,
-						persistent_id, create_guid,
-						now, &op);
-			if (!NT_STATUS_IS_OK(status)) {
-				DEBUG(3, ("smbd_smb2_create_send: "
-					  "smb2srv_open_recreate v1 failed: %s\n",
-					  nt_errstr(status)));
-				tevent_req_nterror(req, status);
-				return tevent_req_post(req, ev);
-			}
-
-			DEBUG(10, ("smb2_create_send: DHNC: %s recreate the "
-				   "smb2srv_open struct for a durable handle.\n",
-				   op->global->durable ? "did" : "could not"));
-
-			if (!op->global->durable) {
-				talloc_free(op);
-				tevent_req_nterror(req,
-					NT_STATUS_OBJECT_NAME_NOT_FOUND);
-				return tevent_req_post(req, ev);
-			}
-
 			do_durable_reconnect = true;
 		}
 
 		if (dh2c) {
 			const uint8_t *p = dh2c->data.data;
-			NTTIME now = timeval_to_nttime(&smb2req->request_time);
-			uint64_t persistent_id;
 			DATA_BLOB create_guid_blob;
 
 			persistent_id = BVAL(p, 0);
@@ -729,29 +702,6 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
 				return tevent_req_post(req, ev);
 			}
 
-			status = smb2srv_open_recreate(smb2req->sconn->conn,
-						       smb1req->conn->session_info,
-						       persistent_id, create_guid,
-						       now, &op);
-			if (!NT_STATUS_IS_OK(status)) {
-				DEBUG(3, ("smbd_smb2_create_send: "
-					  "smb2srv_open_recreate v2 failed: %s\n",
-					  nt_errstr(status)));
-				tevent_req_nterror(req, status);
-				return tevent_req_post(req, ev);
-			}
-
-			DEBUG(10, ("smb2_create_send: DH2C: %s recreate the "
-				   "smb2srv_open struct for a durable handle.\n",
-				   op->global->durable ? "did" : "could not"));
-
-			if (!op->global->durable) {
-				talloc_free(op);
-				tevent_req_nterror(req,
-					NT_STATUS_OBJECT_NAME_NOT_FOUND);
-				return tevent_req_post(req, ev);
-			}
-
 			do_durable_reconnect = true;
 		}
 
@@ -813,12 +763,37 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx,
 		 */
 		if (do_durable_reconnect) {
 			DATA_BLOB new_cookie = data_blob_null;
+			NTTIME now = timeval_to_nttime(&smb2req->request_time);
+
+			status = smb2srv_open_recreate(smb2req->sconn->conn,
+						smb1req->conn->session_info,
+						persistent_id, create_guid,
+						now, &op);
+			if (!NT_STATUS_IS_OK(status)) {
+				DEBUG(3, ("smbd_smb2_create_send: "
+					  "smb2srv_open_recreate failed: %s\n",
+					  nt_errstr(status)));
+				tevent_req_nterror(req, status);
+				return tevent_req_post(req, ev);
+			}
+
+			DEBUG(10, ("smb2_create_send: %s to recreate the "
+				   "smb2srv_open struct for a durable handle.\n",
+				   op->global->durable ? "succeded" : "failed"));
+
+			if (!op->global->durable) {
+				talloc_free(op);
+				tevent_req_nterror(req,
+					NT_STATUS_OBJECT_NAME_NOT_FOUND);
+				return tevent_req_post(req, ev);
+			}
 
 			status = SMB_VFS_DURABLE_RECONNECT(smb1req->conn,
 						smb1req,
-						op,
+						op, /* smbXsrv_open input */
 						op->global->backend_cookie,
-						op, &result, &new_cookie);
+						op, /* TALLOC_CTX */
+						&result, &new_cookie);
 			if (!NT_STATUS_IS_OK(status)) {
 				NTSTATUS return_status;
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list