]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
vfs_glusterfs: Retrieve fs capabilities using vfs_get_fs_capabilities
authorAnoop C S <anoopcs@samba.org>
Tue, 17 Sep 2024 18:28:50 +0000 (23:58 +0530)
committerJule Anger <janger@samba.org>
Thu, 20 Mar 2025 09:59:09 +0000 (09:59 +0000)
vfs_glusterfs is supposed to be the last entry when listed with
other vfs modules. This is due to the fact that the connection path
is not local to the server but relative to the virtual remote file
system beneath it. Especially SMB_VFS_FS_CAPABILITIES implementation
from vfs_default is likely to return incorrect results based on the
connection path assumed to be local to the server which might not be
the case with glusterfs module stacked. Therefore it doesn't make sense
to pass through any vfs interface implementations further down the line
to vfs_default.

Instead make use of get_fs_capabilties to start with already known fs
capabilties from connect phase.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15822

Signed-off-by: Anoop C S <anoopcs@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Mon Oct  7 13:36:11 UTC 2024 on atb-devel-224

(cherry picked from commit 3c6ca81aad16e74bc3d9c4784baf97a237f652c6)

source3/modules/vfs_glusterfs.c

index 5729766a8d762519241633432a6562f1b22a405d..433c133a720735d944322bf6095eef998e7604a6 100644 (file)
@@ -594,18 +594,12 @@ static int vfs_gluster_statvfs(struct vfs_handle_struct *handle,
 static uint32_t vfs_gluster_fs_capabilities(struct vfs_handle_struct *handle,
                                            enum timestamp_set_resolution *p_ts_res)
 {
-       uint32_t caps;
-
-       caps = SMB_VFS_NEXT_FS_CAPABILITIES(handle, p_ts_res);
+       uint32_t caps = vfs_get_fs_capabilities(handle->conn, p_ts_res);
 
 #ifdef HAVE_GFAPI_VER_6
        caps |= FILE_SUPPORTS_SPARSE_FILES;
 #endif
 
-#ifdef STAT_HAVE_NSEC
-       *p_ts_res = TIMESTAMP_SET_NT_OR_BETTER;
-#endif
-
        return caps;
 }