From: David Disseldorp Date: Wed, 10 Jan 2018 00:37:14 +0000 (+0100) Subject: vfs_ceph: add fs_capabilities hook to avoid local statvfs X-Git-Tag: samba-4.6.13~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a6b780c52b251505e50607d6f77f57330b830b00;p=thirdparty%2Fsamba.git vfs_ceph: add fs_capabilities hook to avoid local statvfs Adding the fs_capabilities() hook to the CephFS VFS module avoids fallback to the vfs_default code-path, which calls statvfs() against the share path on the *local* filesystem. Bug: https://bugzilla.samba.org/show_bug.cgi?id=13208 Signed-off-by: David Disseldorp Reviewed-by: Jeremy Allison (cherry picked from commit 2724e0cac29cd1632ea28075a740fcc888affb36) --- diff --git a/source3/modules/vfs_ceph.c b/source3/modules/vfs_ceph.c index e3d22bfce29..28426472dee 100644 --- a/source3/modules/vfs_ceph.c +++ b/source3/modules/vfs_ceph.c @@ -251,6 +251,20 @@ static int cephwrap_statvfs(struct vfs_handle_struct *handle, const char *path, return ret; } +static uint32_t cephwrap_fs_capabilities(struct vfs_handle_struct *handle, + enum timestamp_set_resolution *p_ts_res) +{ + uint32_t caps = FILE_CASE_SENSITIVE_SEARCH | FILE_CASE_PRESERVED_NAMES; + +#ifdef HAVE_CEPH_STATX + *p_ts_res = TIMESTAMP_SET_NT_OR_BETTER; +#else + *p_ts_res = TIMESTAMP_SET_MSEC; +#endif + + return caps; +} + /* Directory operations */ static DIR *cephwrap_opendir(struct vfs_handle_struct *handle, @@ -1339,6 +1353,7 @@ static struct vfs_fn_pointers ceph_fns = { .get_quota_fn = cephwrap_get_quota, .set_quota_fn = cephwrap_set_quota, .statvfs_fn = cephwrap_statvfs, + .fs_capabilities_fn = cephwrap_fs_capabilities, /* Directory operations */