Hi Linus, The following changes since commit 706a741595047797872e669b3101429ab8d378ef: Linux 6.5-rc7 (2023-08-20 15:02:52 +0200) are available in the Git repository at: https://github.com/ceph/ceph-client.git tags/ceph-for-6.6-rc1 for you to fetch changes up to ce0d5bd3a6c176f9a3bf867624a07119dd4d0878: ceph: make num_fwd and num_retry to __u32 (2023-08-31 14:56:27 +0200) ---------------------------------------------------------------- Mixed with some fixes and cleanups, this brings in reasonably complete fscrypt support to CephFS! The list of things which don't work with encryption should be fairly short, mostly around the edges: fallocate (not supported well in CephFS to begin with), copy_file_range (requires re-encryption), non-default striping patterns. This was a multi-year effort principally by Jeff Layton with assistance from Xiubo Li, Luís Henriques and others, including several dependant changes in the MDS, netfs helper library and fscrypt framework itself. ---------------------------------------------------------------- Herbert Xu (1): libceph: do not include crypto/algapi.h Jeff Layton (33): libceph: add spinlock around osd->o_requests libceph: define struct ceph_sparse_extent and add some helpers libceph: new sparse_read op, support sparse reads on msgr2 crc codepath libceph: support sparse reads on msgr2 secure codepath libceph: add sparse read support to msgr1 libceph: add sparse read support to OSD client ceph: add new mount option to enable sparse reads ceph: preallocate inode for ops that may create one ceph: make ceph_msdc_build_path use ref-walk libceph: add new iov_iter-based ceph_msg_data_type and ceph_osd_data_type ceph: use osd_req_op_extent_osd_iter for netfs reads ceph: fscrypt_auth handling for ceph ceph: implement -o test_dummy_encryption mount option ceph: add fscrypt ioctls and ceph.fscrypt.auth vxattr ceph: encode encrypted name in ceph_mdsc_build_path and dentry release ceph: send alternate_name in MClientRequest ceph: decode alternate_name in lease info ceph: set DCACHE_NOKEY_NAME flag in ceph_lookup/atomic_open() ceph: make d_revalidate call fscrypt revalidator for encrypted dentries ceph: add helpers for converting names for userland presentation ceph: make ceph_fill_trace and ceph_get_name decrypt names ceph: create symlinks with encrypted and base64-encoded targets ceph: add some fscrypt guardrails ceph: size handling in MClientRequest, cap updates and inode traces ceph: handle fscrypt fields in cap messages from MDS ceph: add infrastructure for file encryption and decryption libceph: add CEPH_OSD_OP_ASSERT_VER support libceph: allow ceph_osdc_new_request to accept a multi-op read ceph: don't use special DIO path for encrypted inodes ceph: align data in pages in ceph_sync_write ceph: add read/modify/write to ceph_sync_write ceph: add encryption support to writepage and writepages ceph: plumb in decryption during reads Jinjie Ruan (1): rbd: use list_for_each_entry() helper Luís Henriques (8): ceph: add base64 endcoding routines for encrypted names ceph: allow encrypting a directory while not having Ax caps ceph: mark directory as non-complete after loading key ceph: invalidate pages when doing direct/sync writes ceph: add support for encrypted snapshot names ceph: prevent snapshot creation in encrypted locked directories ceph: update documentation regarding snapshot naming limitations ceph: switch ceph_lookup/atomic_open() to use new fscrypt helper Xiubo Li (10): ceph: make ioctl cmds more readable in debug log ceph: pass the request to parse_reply_info_readdir() ceph: add support to readdir for encrypted names ceph: add object version support for sync read ceph: add truncate size handling support for fscrypt ceph: drop messages from MDS when unmounting ceph: wait for OSD requests' callbacks to finish when unmounting ceph: fix updating i_truncate_pagecache_size for fscrypt ceph: make members in struct ceph_mds_request_args_ext a union ceph: make num_fwd and num_retry to __u32 Documentation/filesystems/ceph.rst | 10 + drivers/block/rbd.c | 4 +- fs/ceph/Makefile | 1 + fs/ceph/acl.c | 4 +- fs/ceph/addr.c | 196 ++++++++--- fs/ceph/caps.c | 235 +++++++++++-- fs/ceph/crypto.c | 673 ++++++++++++++++++++++++++++++++++++ fs/ceph/crypto.h | 288 ++++++++++++++++ fs/ceph/dir.c | 194 ++++++++--- fs/ceph/export.c | 44 ++- fs/ceph/file.c | 602 +++++++++++++++++++++++++++------ fs/ceph/inode.c | 625 +++++++++++++++++++++++++++++++--- fs/ceph/ioctl.c | 127 ++++++- fs/ceph/mds_client.c | 676 ++++++++++++++++++++++++++++--------- fs/ceph/mds_client.h | 35 +- fs/ceph/quota.c | 14 +- fs/ceph/snap.c | 10 +- fs/ceph/super.c | 191 ++++++++++- fs/ceph/super.h | 49 ++- fs/ceph/xattr.c | 30 ++ include/linux/ceph/ceph_fs.h | 68 ++-- include/linux/ceph/messenger.h | 40 +++ include/linux/ceph/osd_client.h | 93 ++++- include/linux/ceph/rados.h | 4 + net/ceph/messenger.c | 78 +++++ net/ceph/messenger_v1.c | 98 +++++- net/ceph/messenger_v2.c | 289 ++++++++++++++-- net/ceph/osd_client.c | 334 +++++++++++++++++- 28 files changed, 4484 insertions(+), 528 deletions(-) create mode 100644 fs/ceph/crypto.c create mode 100644 fs/ceph/crypto.h