From: Jeremy Allison Date: Thu, 2 Jul 2009 00:39:10 +0000 (-0700) Subject: Ensure we don't use delayed writes on POSIX opened files. X-Git-Tag: tevent-0.9.8~836 X-Git-Url: http://git.samba.org/samba.git/?p=ira%2Fwip.git;a=commitdiff_plain;h=82b5fad8be2cf05c17d115fa86c1049a41fae75b;hp=b971860e01a3e616b0dd21990c054c8f8356f513 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 --- diff --git a/source3/smbd/fileio.c b/source3/smbd/fileio.c index 843b3f9586a..5cc3d4b88b0 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 41081ca0dde..28b07527cc4 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)) {