[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Wed Jan 15 13:32:04 MST 2014


The branch, master has been updated
       via  276c161 vfs/glusterfs: in case atime is not passed, set it to the current atime
      from  0f9a189 s3:dir - We now pass the previously spinning directory tests on ext4.

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


- Log -----------------------------------------------------------------
commit 276c1616cf06741b69e06519ea61c874a686c716
Author: Niels de Vos <ndevos at redhat.com>
Date:   Fri Jan 10 16:26:18 2014 +0100

    vfs/glusterfs: in case atime is not passed, set it to the current atime
    
    The Linux CIFS client does not pass an updated atime when a write() is
    done. This causes the vfs/glusterfs module to set the atime to -1 on the
    Gluster backend, resulting in an atime far in the future (year 2106).
    
    Signed-off-by: Niels de Vos <ndevos at redhat.com>
    Reviewed-by: Ira Cooper <ira at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Wed Jan 15 21:31:30 CET 2014 on sn-devel-104

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

Summary of changes:
 source3/modules/vfs_glusterfs.c |   26 ++++++++++++++++++++++----
 1 files changed, 22 insertions(+), 4 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c
index 3262f11..9bcd0cb 100644
--- a/source3/modules/vfs_glusterfs.c
+++ b/source3/modules/vfs_glusterfs.c
@@ -734,10 +734,28 @@ static int vfs_gluster_ntimes(struct vfs_handle_struct *handle,
 {
 	struct timespec times[2];
 
-	times[0].tv_sec = ft->atime.tv_sec;
-	times[0].tv_nsec = ft->atime.tv_nsec;
-	times[1].tv_sec = ft->mtime.tv_sec;
-	times[1].tv_nsec = ft->mtime.tv_nsec;
+	if (null_timespec(ft->atime)) {
+		times[0].tv_sec = smb_fname->st.st_ex_atime.tv_sec;
+		times[0].tv_nsec = smb_fname->st.st_ex_atime.tv_nsec;
+	} else {
+		times[0].tv_sec = ft->atime.tv_sec;
+		times[0].tv_nsec = ft->atime.tv_nsec;
+	}
+
+	if (null_timespec(ft->mtime)) {
+		times[1].tv_sec = smb_fname->st.st_ex_mtime.tv_sec;
+		times[1].tv_nsec = smb_fname->st.st_ex_mtime.tv_nsec;
+	} else {
+		times[1].tv_sec = ft->mtime.tv_sec;
+		times[1].tv_nsec = ft->mtime.tv_nsec;
+	}
+
+	if ((timespec_compare(&times[0],
+			      &smb_fname->st.st_ex_atime) == 0) &&
+	    (timespec_compare(&times[1],
+			      &smb_fname->st.st_ex_mtime) == 0)) {
+		return 0;
+	}
 
 	return glfs_utimens(handle->data, smb_fname->base_name, times);
 }


-- 
Samba Shared Repository


More information about the samba-cvs mailing list