vfs_ceph doesn't currently implement an fs_capabilities() hook, which sees it fallback to the vfs_default code-path, and subsequently call statvfs() against the share path on the *local* filesystem.
Created attachment 13908 [details] patchset for 4.6.next
Created attachment 13909 [details] patchset for 4.7.next
@Jeremy: I've included the vfs_default fs_capabilities() statvfs->VFS_STATVFS change, which could be considered a (minor) API change. I could drop this if you have any concerns.
No, I think this is OK. The obvious intent was for all calls to go through the VFS by default so I don't think this is going to cause a problem.
Comment on attachment 13908 [details] patchset for 4.6.next This needs fixing for 4.6 David I'm afraid. statvfs takes a const char * in 4.6, not a struct smb_filename pointer. ../source3/modules/vfs_default.c: In function ‘vfswrap_fs_capabilities’: ../source3/modules/vfs_default.c:131:2: error: passing argument 2 of ‘smb_vfs_call_statvfs’ from incompatible pointer type [-Werror] ret = SMB_VFS_STATVFS(conn, smb_fname_cpath, &statbuf); ^ In file included from ../source3/include/smb.h:155:0, from ../source3/include/includes.h:325, from ../source3/modules/vfs_default.c:21: ../source3/include/vfs.h:1012:5: note: expected ‘const char *’ but argument is of type ‘struct smb_filename *’ int smb_vfs_call_statvfs(struct vfs_handle_struct *handle, const char *path,
Created attachment 13915 [details] v2 patchset for 4.6.next (In reply to Jeremy Allison from comment #5) > Comment on attachment 13908 [details] > patchset for 4.6.next > > This needs fixing for 4.6 David I'm afraid. statvfs takes a const char * in > 4.6, not a struct smb_filename pointer. > > ../source3/modules/vfs_default.c: In function ‘vfswrap_fs_capabilities’: > ../source3/modules/vfs_default.c:131:2: error: passing argument 2 of > ‘smb_vfs_call_statvfs’ from incompatible pointer type [-Werror] > ret = SMB_VFS_STATVFS(conn, smb_fname_cpath, &statbuf); > ^ > In file included from ../source3/include/smb.h:155:0, > from ../source3/include/includes.h:325, > from ../source3/modules/vfs_default.c:21: > ../source3/include/vfs.h:1012:5: note: expected ‘const char *’ but argument > is of type ‘struct smb_filename *’ > int smb_vfs_call_statvfs(struct vfs_handle_struct *handle, const char *path, Blah, I overlooked this warning in my test build, sorry. See new version attached.
Re-assigning to Karolin for inclusion in 4.7.next, 4.6.next.
Pushed to autobuild-v4-{7,6}-test.
(In reply to Karolin Seeger from comment #8) Pushed to both branches. Closing out bug report. Thanks!