[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-165-g82b5fad

Jeremy Allison jra at samba.org
Thu Jul 2 00:40:28 GMT 2009


The branch, master has been updated
       via  82b5fad8be2cf05c17d115fa86c1049a41fae75b (commit)
      from  b971860e01a3e616b0dd21990c054c8f8356f513 (commit)

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


- Log -----------------------------------------------------------------
commit 82b5fad8be2cf05c17d115fa86c1049a41fae75b
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Jul 1 17:39:10 2009 -0700

    Ensure we don't use delayed writes on POSIX opened files.
    Don't remove pending writetime changes if no time changes
    are sent in UNIX_BASIC infolevel.
    Jeremy

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

Summary of changes:
 source3/smbd/fileio.c |   10 ++++++++++
 source3/smbd/trans2.c |    5 +++++
 2 files changed, 15 insertions(+), 0 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/fileio.c b/source3/smbd/fileio.c
index 843b3f9..5cc3d4b 100644
--- a/source3/smbd/fileio.c
+++ b/source3/smbd/fileio.c
@@ -193,6 +193,11 @@ void trigger_write_time_update(struct files_struct *fsp)
 {
 	int delay;
 
+	if (fsp->posix_open) {
+		/* Don't use delayed writes on POSIX files. */
+		return;
+	}
+
 	if (fsp->write_time_forced) {
 		/* No point - "sticky" write times
 		 * in effect.
@@ -224,6 +229,11 @@ void trigger_write_time_update(struct files_struct *fsp)
 
 void trigger_write_time_update_immediate(struct files_struct *fsp)
 {
+	if (fsp->posix_open) {
+		/* Don't use delayed writes on POSIX files. */
+		return;
+	}
+
         if (fsp->write_time_forced) {
 		/*
 		 * No point - "sticky" write times
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index 41081ca..28b0752 100644
--- a/source3/smbd/trans2.c
+++ b/source3/smbd/trans2.c
@@ -6249,6 +6249,11 @@ size = %.0f, uid = %u, gid = %u, raw perms = 0%o\n",
 	}
 
 	/* Deal with any time changes. */
+	if (null_timespec(ft.mtime) && null_timespec(ft.atime)) {
+		/* No change, don't cancel anything. */
+		return status;
+	}
+
 	id = vfs_file_id_from_sbuf(conn, psbuf);
 	for(all_fsps = file_find_di_first(id); all_fsps;
 			all_fsps = file_find_di_next(all_fsps)) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list