vfs_ceph_new: samba-to-cephfs bridge using libcephfs low-level APIs
Ceph is a free and open-source software-defined storage platform that provides object, block and file storage on top a common distributed cluster foundation. CephFS is a POSIX-compliant file-system built on top of Ceph’s distributed object store, RADOS.
Libcephfs provides two types of programmable APIs: normal and low-level. The existing 'vfs_ceph.c' module uses the normal APIs while this new module uses the low-level one, which operates via inode and file-handle references, thus providing more fine grained granularity as well as potential for better performance.
The main advantages of using libcephfs low-level APIs are:
- Explicit user-credentials (libcephfs' UserPerms) per call / per open file.
- Faster operation via (cached) inode or file-handle.
- Improved resource consumption on libcephfs internal Client.
- Asynchronous I/O (using ceph_ll_nonblocking_readv_writev, not impl yet).
This MR is a follow-up from previous (now closed) MR3547. As discussed in this previous MR, the changes are now split into small commits, to allow better review process: begin with existing vfs_ceph.c as base, change the common prefix from cephwrap_ to vfs_ceph_ and then convert each VFS hooks into using libcephfs low-level APIs.
Checklist
-
Commits have Signed-off-by:with name/author being identical to the commit author -
(optional) This MR is just one part towards a larger feature. -
(optional, if backport required) Bugzilla bug filed and BUG:tag added -
Test suite updated with functionality tests -
Test suite updated with negative tests -
Documentation updated -
CI timeout is 3h or higher (see Settings/CICD/General pipelines/ Timeout)
Reviewer's checklist:
-
There is a test suite reasonably covering new functionality or modifications -
Function naming, parameters, return values, types, etc., are consistent and according to README.Coding.md -
This feature/change has adequate documentation added -
No obvious mistakes in the code