[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha6-1173-g4e024b3

Steven Danneman sdanneman at samba.org
Tue Feb 24 23:58:15 GMT 2009


The branch, master has been updated
       via  4e024b3f87ee1ccb0d7c83dfc6a4b5a6b2c47c13 (commit)
       via  95bf60b39d003bea6f9f5ad2bc63d5f2a8b8b2af (commit)
      from  503d15e8df9075ea9cf8b2d260487e68fc68f559 (commit)

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


- Log -----------------------------------------------------------------
commit 4e024b3f87ee1ccb0d7c83dfc6a4b5a6b2c47c13
Author: Dan Sledz <dsledz at isilon.com>
Date:   Tue Feb 24 14:12:48 2009 -0800

    s3: onefs_acl.c cleanup
    
    Remove some duplicate code.
    Add a \n to a debugging statement

commit 95bf60b39d003bea6f9f5ad2bc63d5f2a8b8b2af
Author: todd stecher <todd.stecher at gmail.com>
Date:   Mon Feb 23 10:24:33 2009 -0800

    S3: Add in profile counters for new vfs and syscall entries.

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

Summary of changes:
 source3/include/smbprofile.h    |   28 ++++++++++++++++++++++++++++
 source3/modules/onefs_acl.c     |   16 +++++++++++-----
 source3/modules/onefs_cbrl.c    |   26 ++++++++++++++++++++++++--
 source3/modules/onefs_streams.c |   16 +++++++++++++---
 source3/modules/onefs_system.c  |   18 ++++++++++++++++++
 source3/profile/profile.c       |    7 +++++++
 6 files changed, 101 insertions(+), 10 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/smbprofile.h b/source3/include/smbprofile.h
index 131416b..f9a0436 100644
--- a/source3/include/smbprofile.h
+++ b/source3/include/smbprofile.h
@@ -75,6 +75,10 @@ enum profile_stats_values
 #define syscall_open_count __profile_stats_value(PR_VALUE_SYSCALL_OPEN, count)
 #define syscall_open_time __profile_stats_value(PR_VALUE_SYSCALL_OPEN, time)
 
+	PR_VALUE_SYSCALL_CREATEFILE,
+#define syscall_createfile_count __profile_stats_value(PR_VALUE_SYSCALL_CREATEFILE, count)
+#define syscall_createfile_time __profile_stats_value(PR_VALUE_SYSCALL_CREATEFILE, time)
+
 	PR_VALUE_SYSCALL_CLOSE,
 #define syscall_close_count __profile_stats_value(PR_VALUE_SYSCALL_CLOSE, count)
 #define syscall_close_time __profile_stats_value(PR_VALUE_SYSCALL_CLOSE, time)
@@ -111,6 +115,10 @@ enum profile_stats_values
 #define syscall_rename_count __profile_stats_value(PR_VALUE_SYSCALL_RENAME, count)
 #define syscall_rename_time __profile_stats_value(PR_VALUE_SYSCALL_RENAME, time)
 
+	PR_VALUE_SYSCALL_RENAME_AT,
+#define syscall_rename_at_count __profile_stats_value(PR_VALUE_SYSCALL_RENAME_AT, count)
+#define syscall_rename_at_time __profile_stats_value(PR_VALUE_SYSCALL_RENAME_AT, time)
+
 	PR_VALUE_SYSCALL_FSYNC,
 #define syscall_fsync_count __profile_stats_value(PR_VALUE_SYSCALL_FSYNC, count)
 #define syscall_fsync_time __profile_stats_value(PR_VALUE_SYSCALL_FSYNC, time)
@@ -215,6 +223,26 @@ enum profile_stats_values
 #define syscall_set_quota_count __profile_stats_value(PR_VALUE_SYSCALL_SET_QUOTA, count)
 #define syscall_set_quota_time __profile_stats_value(PR_VALUE_SYSCALL_SET_QUOTA, time)
 
+	PR_VALUE_SYSCALL_GET_SD,
+#define syscall_get_sd_count __profile_stats_value(PR_VALUE_SYSCALL_GET_SD, count)
+#define syscall_get_sd_time __profile_stats_value(PR_VALUE_SYSCALL_GET_SD, time)
+
+	PR_VALUE_SYSCALL_SET_SD,
+#define syscall_set_sd_count __profile_stats_value(PR_VALUE_SYSCALL_SET_SD, count)
+#define syscall_set_sd_time __profile_stats_value(PR_VALUE_SYSCALL_SET_SD, time)
+
+	PR_VALUE_SYSCALL_BRL_LOCK,
+#define syscall_brl_lock_count __profile_stats_value(PR_VALUE_SYSCALL_BRL_LOCK, count)
+#define syscall_brl_lock_time __profile_stats_value(PR_VALUE_SYSCALL_BRL_LOCK, time)
+
+	PR_VALUE_SYSCALL_BRL_UNLOCK,
+#define syscall_brl_unlock_count __profile_stats_value(PR_VALUE_SYSCALL_BRL_UNLOCK, count)
+#define syscall_brl_unlock_time __profile_stats_value(PR_VALUE_SYSCALL_BRL_UNLOCK, time)
+
+	PR_VALUE_SYSCALL_BRL_CANCEL,
+#define syscall_brl_cancel_count __profile_stats_value(PR_VALUE_SYSCALL_BRL_CANCEL, count)
+#define syscall_brl_cancel_time __profile_stats_value(PR_VALUE_SYSCALL_BRL_CANCEL, time)
+
 /* counters for individual SMB types */
 	PR_VALUE_SMBMKDIR,
 #define SMBmkdir_count __profile_stats_value(PR_VALUE_SMBMKDIR, count)
diff --git a/source3/modules/onefs_acl.c b/source3/modules/onefs_acl.c
index 7bc4a17..b8097b6 100644
--- a/source3/modules/onefs_acl.c
+++ b/source3/modules/onefs_acl.c
@@ -273,9 +273,6 @@ onefs_samba_acl_to_acl(SEC_ACL *samba_acl, struct ifs_security_acl **acl,
 		if (aclu_initialize_acl(acl, aces, num_aces))
 			goto err_free;
 
-	if (aclu_initialize_acl(acl, aces, num_aces))
-		goto err_free;
-
 	/* Currently aclu_initialize_acl should copy the aces over, allowing
 	 * us to immediately free */
 	free(aces);
@@ -614,6 +611,8 @@ onefs_fget_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
 	bool fopened = false;
 	NTSTATUS status = NT_STATUS_OK;
 
+	START_PROFILE(syscall_get_sd);
+
 	*ppdesc = NULL;
 
 	DEBUG(5, ("Getting sd for file %s. security_info=%u\n",
@@ -753,6 +752,9 @@ onefs_fget_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
 	DEBUG(5, ("Finished retrieving/canonicalizing SD!\n"));
 	/* FALLTHROUGH */
 out:
+
+	END_PROFILE(syscall_get_sd);
+
 	if (alloced && sd) {
 		if (new_aces_alloced && sd->dacl->aces)
 			SAFE_FREE(sd->dacl->aces);
@@ -892,14 +894,16 @@ onefs_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
 	bool fopened = false;
 	NTSTATUS status;
 
+	START_PROFILE(syscall_set_sd);
+
 	DEBUG(5,("Setting SD on file %s.\n", fsp->fsp_name ));
 
 	status = onefs_samba_sd_to_sd(security_info_sent, psd, &sd,
 				      SNUM(handle->conn));
 
 	if (!NT_STATUS_IS_OK(status)) {
-		DEBUG(3, ("SD initialization failure: %s", nt_errstr(status)));
-		return status;
+		DEBUG(3, ("SD initialization failure: %s\n", nt_errstr(status)));
+		goto out;
 	}
 
 	fd = fsp->fh->fd;
@@ -938,6 +942,8 @@ onefs_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
 
 	/* FALLTHROUGH */
 out:
+	END_PROFILE(syscall_set_sd);
+
 	if (fopened)
 		close(fd);
 
diff --git a/source3/modules/onefs_cbrl.c b/source3/modules/onefs_cbrl.c
index a860023..2c5e39c 100644
--- a/source3/modules/onefs_cbrl.c
+++ b/source3/modules/onefs_cbrl.c
@@ -255,6 +255,8 @@ NTSTATUS onefs_brl_lock_windows(vfs_handle_struct *handle,
 	struct onefs_cbrl_blr_state *bs;
 	NTSTATUS status;
 
+	START_PROFILE(syscall_brl_lock);
+
 	SMB_ASSERT(plock->lock_flav == WINDOWS_LOCK);
 	SMB_ASSERT(plock->lock_type != UNLOCK_LOCK);
 
@@ -301,10 +303,13 @@ NTSTATUS onefs_brl_lock_windows(vfs_handle_struct *handle,
 		/* ASYNC still in progress: The process_* calls will keep
 		 * calling even if we haven't gotten the lock. Keep erroring
 		 * without calling ifs_cbrl, or getting/setting an id. */
-		if (bs->state == ONEFS_CBRL_ASYNC)
+		if (bs->state == ONEFS_CBRL_ASYNC) {
 			goto failure;
-		else if (bs->state == ONEFS_CBRL_ERROR)
+		}
+		else if (bs->state == ONEFS_CBRL_ERROR) {
+			END_PROFILE(syscall_brl_lock);
 			return NT_STATUS_NO_MEMORY;
+		}
 
 		SMB_ASSERT(bs->state == ONEFS_CBRL_NONE);
 		async = true;
@@ -343,6 +348,9 @@ NTSTATUS onefs_brl_lock_windows(vfs_handle_struct *handle,
 	}
 
 failure:
+
+	END_PROFILE(syscall_brl_lock);
+
 	/* Failure - error or async. */
 	plock->context.smbpid = (uint32) ONEFS_BLOCKING_PID;
 
@@ -355,6 +363,9 @@ failure:
 	return status;
 
 success:
+
+	END_PROFILE(syscall_brl_lock);
+
 	/* Success. */
 	onefs_cbrl_enumerate_blq("onefs_brl_unlock_windows");
 	DEBUG(10, ("returning NT_STATUS_OK.\n"));
@@ -371,6 +382,8 @@ bool onefs_brl_unlock_windows(vfs_handle_struct *handle,
 	int error;
 	int fd = br_lck->fsp->fh->fd;
 
+	START_PROFILE(syscall_brl_unlock);
+
 	SMB_ASSERT(plock->lock_flav == WINDOWS_LOCK);
 	SMB_ASSERT(plock->lock_type == UNLOCK_LOCK);
 
@@ -378,6 +391,9 @@ bool onefs_brl_unlock_windows(vfs_handle_struct *handle,
 	error = ifs_cbrl(fd, CBRL_OP_UNLOCK, CBRL_NOTYPE,
 	    plock->start, plock->size, CBRL_NOTYPE, 0, plock->context.smbpid,
 	    plock->context.tid, plock->fnum);
+
+	END_PROFILE(syscall_brl_unlock);
+
 	if (error) {
 		DEBUG(10, ("returning false.\n"));
 		return false;
@@ -404,6 +420,8 @@ bool onefs_brl_cancel_windows(vfs_handle_struct *handle,
 	int fd = br_lck->fsp->fh->fd;
 	struct onefs_cbrl_blr_state *bs;
 
+	START_PROFILE(syscall_brl_cancel);
+
 	SMB_ASSERT(plock);
 	SMB_ASSERT(plock->lock_flav == WINDOWS_LOCK);
 	SMB_ASSERT(blr);
@@ -416,6 +434,7 @@ bool onefs_brl_cancel_windows(vfs_handle_struct *handle,
 	if (bs->state == ONEFS_CBRL_DONE) {
 		/* No-op. */
 		DEBUG(10, ("State=DONE, returning true\n"));
+		END_PROFILE(syscall_brl_cancel);
 		return true;
 	}
 
@@ -427,6 +446,9 @@ bool onefs_brl_cancel_windows(vfs_handle_struct *handle,
 	error = ifs_cbrl(fd, CBRL_OP_CANCEL, CBRL_NOTYPE, plock->start,
 	    plock->size, CBRL_NOTYPE, bs->id, plock->context.smbpid,
 	    plock->context.tid, plock->fnum);
+
+	END_PROFILE(syscall_brl_cancel);
+
 	if (error) {
 		DEBUG(10, ("returning false\n"));
 		bs->state = ONEFS_CBRL_ERROR;
diff --git a/source3/modules/onefs_streams.c b/source3/modules/onefs_streams.c
index 9616ca4..2dcd889 100644
--- a/source3/modules/onefs_streams.c
+++ b/source3/modules/onefs_streams.c
@@ -160,18 +160,26 @@ int onefs_rename(vfs_handle_struct *handle, const char *oldname,
 	char *nbase = NULL;
 	char *nsname = NULL;
 
+	START_PROFILE(syscall_rename_at);
+
 	frame = talloc_stackframe();
 
 	ret = onefs_is_stream(oldname, &obase, &osname, &old_is_stream);
-	if (ret)
+	if (ret) {
+		END_PROFILE(syscall_rename_at);
 		return ret;
+	}
 
 	ret = onefs_is_stream(newname, &nbase, &nsname, &new_is_stream);
-	if (ret)
+	if (ret) {
+		END_PROFILE(syscall_rename_at);
 		return ret;
+	}
 
 	if (!old_is_stream && !new_is_stream) {
-		return SMB_VFS_NEXT_RENAME(handle, oldname, newname);
+		ret = SMB_VFS_NEXT_RENAME(handle, oldname, newname);
+		END_PROFILE(syscall_rename_at);
+		return ret;
 	}
 
 	dir_fd = get_stream_dir_fd(handle->conn, obase, NULL);
@@ -192,6 +200,8 @@ int onefs_rename(vfs_handle_struct *handle, const char *oldname,
 	}
 
  done:
+	END_PROFILE(syscall_rename_at);
+
 	saved_errno = errno;
 	if (dir_fd >= 0) {
 		close(dir_fd);
diff --git a/source3/modules/onefs_system.c b/source3/modules/onefs_system.c
index 76df006..518a398 100644
--- a/source3/modules/onefs_system.c
+++ b/source3/modules/onefs_system.c
@@ -95,6 +95,8 @@ int onefs_sys_create_file(connection_struct *conn,
 	uint32_t onefs_dos_attributes;
 	struct ifs_createfile_flags cf_flags = CF_FLAGS_NONE;
 
+	START_PROFILE(syscall_createfile);
+
 	/* Setup security descriptor and get secinfo. */
 	if (sd != NULL) {
 		NTSTATUS status;
@@ -196,6 +198,7 @@ int onefs_sys_create_file(connection_struct *conn,
 	}
 
  out:
+	END_PROFILE(syscall_createfile);
 	aclu_free_sd(pifs_sd, false);
 
 	return ret_fd;
@@ -307,6 +310,8 @@ ssize_t onefs_sys_sendfile(connection_struct *conn, int tofd, int fromfd,
 	bool atomic = false;
 	ssize_t ret = 0;
 
+	START_PROFILE_BYTES(syscall_sendfile, count);
+
 	if (lp_parm_bool(SNUM(conn), PARM_ONEFS_TYPE,
 			 PARM_ATOMIC_SENDFILE,
 			 PARM_ATOMIC_SENDFILE_DEFAULT)) {
@@ -320,6 +325,7 @@ ssize_t onefs_sys_sendfile(connection_struct *conn, int tofd, int fromfd,
 	/* If the sendfile wasn't atomic, we're done. */
 	if (!atomic) {
 		DEBUG(10, ("non-atomic sendfile read %ul bytes", ret));
+		END_PROFILE(syscall_sendfile);
 		return ret;
 	}
 
@@ -391,6 +397,7 @@ ssize_t onefs_sys_sendfile(connection_struct *conn, int tofd, int fromfd,
 
 	/* Handle case 1: short read -> truncated file. */
 	if (ret == 0) {
+		END_PROFILE(syscall_sendfile);
 		return ret;
 	}
 
@@ -402,6 +409,7 @@ ssize_t onefs_sys_sendfile(connection_struct *conn, int tofd, int fromfd,
 				 PARM_SENDFILE_LARGE_READS_DEFAULT)) {
 			DEBUG(3, ("Not attempting non-atomic large sendfile: "
 				  "%lu bytes\n", count));
+			END_PROFILE(syscall_sendfile);
 			return 0;
 		}
 
@@ -421,6 +429,7 @@ ssize_t onefs_sys_sendfile(connection_struct *conn, int tofd, int fromfd,
 			DEBUG(1, ("error on non-atomic large sendfile "
 				  "(%lu bytes): %s\n", count,
 				  strerror(errno)));
+			END_PROFILE(syscall_sendfile);
 			return ret;
 		}
 
@@ -439,9 +448,11 @@ ssize_t onefs_sys_sendfile(connection_struct *conn, int tofd, int fromfd,
 			if (lp_parm_bool(SNUM(conn), PARM_ONEFS_TYPE,
 				PARM_SENDFILE_SAFE,
 				PARM_SENDFILE_SAFE_DEFAULT)) {
+				END_PROFILE(syscall_sendfile);
 				return -1;
 			}
 
+			END_PROFILE(syscall_sendfile);
 			return ret;
 		}
 
@@ -455,6 +466,7 @@ ssize_t onefs_sys_sendfile(connection_struct *conn, int tofd, int fromfd,
 			  count, strerror(errno)));
 	}
 
+	END_PROFILE(syscall_sendfile);
 	return ret;
 }
 
@@ -509,10 +521,13 @@ ssize_t onefs_sys_recvfile(int fromfd, int tofd, SMB_OFF_T offset,
 	off_t rbytes;
 	off_t wbytes;
 
+	START_PROFILE_BYTES(syscall_recvfile, count);
+
 	DEBUG(10,("onefs_recvfile: from = %d, to = %d, offset=%llu, count = "
 		  "%lu\n", fromfd, tofd, offset, count));
 
 	if (count == 0) {
+		END_PROFILE(syscall_recvfile);
 		return 0;
 	}
 
@@ -624,6 +639,9 @@ ssize_t onefs_sys_recvfile(int fromfd, int tofd, SMB_OFF_T offset,
 	ret = total_wbytes;
 
 out:
+
+	END_PROFILE(syscall_recvfile);
+
 	/* Make sure we always try to drain the socket. */
 	if (!socket_drained && count - total_rbytes) {
 		int saved_errno = errno;
diff --git a/source3/profile/profile.c b/source3/profile/profile.c
index bdbd805..6d2d5ae 100644
--- a/source3/profile/profile.c
+++ b/source3/profile/profile.c
@@ -290,6 +290,7 @@ bool profile_setup(struct messaging_context *msg_ctx, bool rdonly)
 	    "syscall_rmdir",		/* PR_VALUE_SYSCALL_RMDIR */
 	    "syscall_closedir",		/* PR_VALUE_SYSCALL_CLOSEDIR */
 	    "syscall_open",		/* PR_VALUE_SYSCALL_OPEN */
+	    "syscall_createfile",	/* PR_VALUE_SYSCALL_CREATEFILE */
 	    "syscall_close",		/* PR_VALUE_SYSCALL_CLOSE */
 	    "syscall_read",		/* PR_VALUE_SYSCALL_READ */
 	    "syscall_pread",		/* PR_VALUE_SYSCALL_PREAD */
@@ -299,6 +300,7 @@ bool profile_setup(struct messaging_context *msg_ctx, bool rdonly)
 	    "syscall_sendfile",		/* PR_VALUE_SYSCALL_SENDFILE */
 	    "syscall_recvfile",		/* PR_VALUE_SYSCALL_RECVFILE */
 	    "syscall_rename",		/* PR_VALUE_SYSCALL_RENAME */
+	    "syscall_rename_at",	/* PR_VALUE_SYSCALL_RENAME_AT */
 	    "syscall_fsync",		/* PR_VALUE_SYSCALL_FSYNC */
 	    "syscall_stat",		/* PR_VALUE_SYSCALL_STAT */
 	    "syscall_fstat",		/* PR_VALUE_SYSCALL_FSTAT */
@@ -323,6 +325,11 @@ bool profile_setup(struct messaging_context *msg_ctx, bool rdonly)
 	    "syscall_realpath",		/* PR_VALUE_SYSCALL_REALPATH */
 	    "syscall_get_quota",	/* PR_VALUE_SYSCALL_GET_QUOTA */
 	    "syscall_set_quota",	/* PR_VALUE_SYSCALL_SET_QUOTA */
+	    "syscall_get_sd",		/* PR_VALUE_SYSCALL_GET_SD */
+	    "syscall_set_sd",		/* PR_VALUE_SYSCALL_SET_SD */
+	    "syscall_brl_lock",		/* PR_VALUE_SYSCALL_BRL_LOCK */
+	    "syscall_brl_unlock",	/* PR_VALUE_SYSCALL_BRL_UNLOCK */
+	    "syscall_brl_cancel",	/* PR_VALUE_SYSCALL_BRL_CANCEL */
 	    "SMBmkdir",		/* PR_VALUE_SMBMKDIR */
 	    "SMBrmdir",		/* PR_VALUE_SMBRMDIR */
 	    "SMBopen",		/* PR_VALUE_SMBOPEN */


-- 
Samba Shared Repository


More information about the samba-cvs mailing list