[SCM] Samba Shared Repository - branch master updated

Anoop C S anoopcs at samba.org
Mon Jun 3 11:11:01 UTC 2024


The branch, master has been updated
       via  4cade04d1f1 vfs_ceph: Implement SMB_VFS_FSET_DOS_ATTRIBUTES for precise btime
       via  c36e79ef810 vfs_ceph: Simplify SMB_VFS_FGET_DOS_ATTRIBUTES
      from  98b443d9033 fuzzing: fix fuzz_stable_sort_r_unstable comparison

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


- Log -----------------------------------------------------------------
commit 4cade04d1f1e7f1bbd99776bcf876a42488d0f78
Author: Anoop C S <anoopcs at samba.org>
Date:   Fri May 17 11:57:26 2024 +0530

    vfs_ceph: Implement SMB_VFS_FSET_DOS_ATTRIBUTES for precise btime
    
    Previously we added an implementation for SMB_VFS_FGET_DOS_ATTRIBUTES
    so that the btime is always preserved unless explicitly changed using
    SMB_VFS_FNTIMES. But there are situations with open file handle where
    btime stored on dos attributes as create_time has to be precise for
    comparison because a one-to-one conversion between timepsec and nttime
    is not always guaranteed.
    
    Accordingly preserve btime via SMB_VFS_FSET_DOS_ATTRIBUTES so that we
    always compare the exact btime from fsp stat information while the file
    handle is still open.
    
    Signed-off-by: Anoop C S <anoopcs at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>
    
    Autobuild-User(master): Anoop C S <anoopcs at samba.org>
    Autobuild-Date(master): Mon Jun  3 11:10:11 UTC 2024 on atb-devel-224

commit c36e79ef8104b84c9df638cbec984ec3491d875b
Author: Anoop C S <anoopcs at samba.org>
Date:   Sat May 18 12:37:44 2024 +0530

    vfs_ceph: Simplify SMB_VFS_FGET_DOS_ATTRIBUTES
    
    Signed-off-by: Anoop C S <anoopcs at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

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

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


Changeset truncated at 500 lines:

diff --git a/source3/modules/vfs_ceph.c b/source3/modules/vfs_ceph.c
index 6dae8a5f9e8..bb1650446c9 100644
--- a/source3/modules/vfs_ceph.c
+++ b/source3/modules/vfs_ceph.c
@@ -1577,9 +1577,6 @@ static NTSTATUS cephwrap_fget_dos_attributes(struct vfs_handle_struct *handle,
 	NTSTATUS status;
 
 	status = fget_ea_dos_attribute(fsp, dosmode);
-	if (!NT_STATUS_IS_OK(status)) {
-		return status;
-	}
 
 	/*
 	 * Restore previously stored btime from statx timestamps as it should be
@@ -1589,7 +1586,27 @@ static NTSTATUS cephwrap_fget_dos_attributes(struct vfs_handle_struct *handle,
 	 */
 	fsp->fsp_name->st.st_ex_btime = saved_btime;
 
-	return NT_STATUS_OK;
+	return status;
+}
+
+static NTSTATUS cephwrap_fset_dos_attributes(struct vfs_handle_struct *handle,
+					     struct files_struct *fsp,
+					     uint32_t dosmode)
+{
+	struct timespec saved_btime = fsp->fsp_name->st.st_ex_btime;
+	NTSTATUS status;
+
+	status = set_ea_dos_attribute(handle->conn, fsp->fsp_name, dosmode);
+
+	/*
+	 * Restore previously stored btime from statx timestamps. This is done
+	 * to ensure that we have the exact btime in fsp stat information while
+	 * the file handle is still open since the create_time stored as part of
+	 * dos attributes can loose its precision when converted back to btime.
+	 */
+	fsp->fsp_name->st.st_ex_btime = saved_btime;
+
+	return status;
 }
 
 /****************************************************************
@@ -1957,6 +1974,7 @@ static struct vfs_fn_pointers ceph_fns = {
 	.get_real_filename_at_fn = cephwrap_get_real_filename_at,
 	.connectpath_fn = cephwrap_connectpath,
 	.fget_dos_attributes_fn = cephwrap_fget_dos_attributes,
+	.fset_dos_attributes_fn = cephwrap_fset_dos_attributes,
 
 	/* EA operations. */
 	.getxattrat_send_fn = vfs_not_implemented_getxattrat_send,


-- 
Samba Shared Repository



More information about the samba-cvs mailing list