Ensure we don't use delayed writes on POSIX opened files.
authorJeremy Allison <jra@samba.org>
Thu, 2 Jul 2009 00:39:10 +0000 (17:39 -0700)
committerJeremy Allison <jra@samba.org>
Thu, 2 Jul 2009 00:39:10 +0000 (17:39 -0700)
Don't remove pending writetime changes if no time changes
are sent in UNIX_BASIC infolevel.
Jeremy

source3/smbd/fileio.c
source3/smbd/trans2.c

index 843b3f9586a8df735bf3353955ab8fcd5f1a3437..5cc3d4b88b0ae187d7dddd82c1528e088e869229 100644 (file)
@@ -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
index 41081ca0dde23f2dd1bb5a24ad0cd155e2daa3f5..28b07527cc42ec80286550601321130b7774e99d 100644 (file)
@@ -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)) {