[GIT PULL] Ceph updates for 6.6-rc1

From: Ilya Dryomov
Date: Wed Sep 06 2023 - 12:26:03 EST


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