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

Merge request reports

Loading