From c9b6d8cb5534512ade2ee5e731dddcac9832bbe3 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 3 Dec 2013 17:22:19 -0800 Subject: [PATCH] smbd - allow updates on directory write times on open handles. If we set a non-null 'old timestamp' in the share mode database when creating a directory handle, this prevents mtime (write time) updates from being seen by clients, as we will always return the timestamp stored in the database whilst the handle is open. For files this is ok, as we update the stored timestamp ourselves when we write to the handle. For directories we should just rely on the mtime value from the underlying filesystem. Torture test to follow. BUG: https://bugzilla.samba.org/show_bug.cgi?id=9870 Signed-off-by: Jeremy Allison Reviewed-by: Volker Lendecke --- source3/smbd/open.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/source3/smbd/open.c b/source3/smbd/open.c index cd1bb723054..6e4f6904c01 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -3171,7 +3171,14 @@ static NTSTATUS open_directory(connection_struct *conn, return status; } - mtimespec = smb_dname->st.st_ex_mtime; + /* Don't store old timestamps for directory + handles in the internal database. We don't + update them in there if new objects + are creaded in the directory. Currently + we only update timestamps on file writes. + See bug #9870. + */ + ZERO_STRUCT(mtimespec); #ifdef O_DIRECTORY status = fd_open(conn, fsp, O_RDONLY|O_DIRECTORY, 0); -- 2.11.4.GIT