vfs_ceph2: new VFS-module 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 interfaces are:
- Explicit user-credentials (libcephfs' UserPerms) per call.
- 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).
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
Edited by Anoop C S