[SCM] SAMBA-CTDB repository - branch v3-2-ctdb updated - build_3.2.11_ctdb.60-7-g5239011

Michael Adam obnox at samba.org
Mon May 18 11:52:57 GMT 2009


The branch, v3-2-ctdb has been updated
       via  5239011c4938fe99c62169a740323c97f1424f59 (commit)
      from  2f66b4d266b76125c25a5e5ff27db6c74cb76a6a (commit)

http://gitweb.samba.org/?p=obnox/samba-ctdb.git;a=shortlog;h=v3-2-ctdb


- Log -----------------------------------------------------------------
commit 5239011c4938fe99c62169a740323c97f1424f59
Author: Volker Lendecke <vl at samba.org>
Date:   Mon May 18 13:30:16 2009 +0200

    Move down the become_root()/unbecome_root() calls into the VFS modules
    
    The aio_fork module does not need this, as it does not communicate via signals
    but with pipes. Watching a strace log with those become_root() calls in aio.c
    is absolutely awful, and it does affect performance.

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

Summary of changes:
 source/modules/vfs_default.c |   12 ++++++++++--
 source/smbd/aio.c            |    6 ------
 2 files changed, 10 insertions(+), 8 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/modules/vfs_default.c b/source/modules/vfs_default.c
index d46f48a..6505c79 100644
--- a/source/modules/vfs_default.c
+++ b/source/modules/vfs_default.c
@@ -1286,12 +1286,20 @@ static int vfswrap_fsetxattr(struct vfs_handle_struct *handle, struct files_stru
 
 static int vfswrap_aio_read(struct vfs_handle_struct *handle, struct files_struct *fsp, SMB_STRUCT_AIOCB *aiocb)
 {
-	return sys_aio_read(aiocb);
+	int ret;
+	become_root();
+	ret = sys_aio_read(aiocb);
+	unbecome_root();
+	return ret;
 }
 
 static int vfswrap_aio_write(struct vfs_handle_struct *handle, struct files_struct *fsp, SMB_STRUCT_AIOCB *aiocb)
 {
-	return sys_aio_write(aiocb);
+	int ret;
+	become_root();
+	ret = sys_aio_write(aiocb);
+	unbecome_root();
+	return ret;
 }
 
 static ssize_t vfswrap_aio_return(struct vfs_handle_struct *handle, struct files_struct *fsp, SMB_STRUCT_AIOCB *aiocb)
diff --git a/source/smbd/aio.c b/source/smbd/aio.c
index c3fd0a2..5c54d27 100644
--- a/source/smbd/aio.c
+++ b/source/smbd/aio.c
@@ -278,15 +278,12 @@ bool schedule_aio_read_and_X(connection_struct *conn,
 	a->aio_sigevent.sigev_signo  = RT_SIGNAL_AIO;
 	a->aio_sigevent.sigev_value.sival_int = aio_ex->mid;
 
-	become_root();
 	if (SMB_VFS_AIO_READ(fsp,a) == -1) {
 		DEBUG(0,("schedule_aio_read_and_X: aio_read failed. "
 			 "Error %s\n", strerror(errno) ));
 		delete_aio_ex(aio_ex);
-		unbecome_root();
 		return False;
 	}
-	unbecome_root();
 
 	DEBUG(10,("schedule_aio_read_and_X: scheduled aio_read for file %s, "
 		  "offset %.0f, len = %u (mid = %u)\n",
@@ -379,15 +376,12 @@ bool schedule_aio_write_and_X(connection_struct *conn,
 	a->aio_sigevent.sigev_signo  = RT_SIGNAL_AIO;
 	a->aio_sigevent.sigev_value.sival_int = aio_ex->mid;
 
-	become_root();
 	if (SMB_VFS_AIO_WRITE(fsp,a) == -1) {
 		DEBUG(3,("schedule_aio_wrote_and_X: aio_write failed. "
 			 "Error %s\n", strerror(errno) ));
 		delete_aio_ex(aio_ex);
-		unbecome_root();
 		return False;
 	}
-	unbecome_root();
 	
 	release_level_2_oplocks_on_change(fsp);
 


-- 
SAMBA-CTDB repository


More information about the samba-cvs mailing list