From da6ee0cf34af010d0796abddd06c83887e61c88e Mon Sep 17 00:00:00 2001 From: David Disseldorp Date: Wed, 10 Jan 2018 01:37:14 +0100 Subject: [PATCH] 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) --- source3/modules/vfs_ceph.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/source3/modules/vfs_ceph.c b/source3/modules/vfs_ceph.c index 9abd32196a8..f482a8b07ff 100644 --- a/source3/modules/vfs_ceph.c +++ b/source3/modules/vfs_ceph.c @@ -270,6 +270,20 @@ static int cephwrap_statvfs(struct vfs_handle_struct *handle, 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, @@ -1399,6 +1413,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 */ -- 2.11.4.GIT