Thanks. I'm now seeing a MDS crash when I run that test, but my MDS branch isn't quite up to date with yours. I'll rebuild that and re-test. Thanks, Jeff On Thu, 2021-11-04 at 14:00 +0800, Xiubo Li wrote: > The xfstests generic/014 test passed: > > [root@ceph1 xfstests]# pwd > /mnt/kcephfs/xfstests > [root@ceph1 xfstests]# cat ./local.config > export FSTYP=ceph > export TEST_DEV=10.72.49.127:40084:/test > export TEST_DIR=/mnt/kcephfs/test/_brpcfnn > export TEST_FS_MOUNT_OPTS="-o > test_dummy_encryption,name=admin,secret=AQDS3IFhEtxvORAAxn1d4FVN2bRUsc/TZMpQvQ==" > > [root@ceph1 xfstests]# ./check generic/014 > > FSTYP -- ceph > PLATFORM -- Linux/x86_64 ceph1 5.15.0-rc6+ > > generic/014 533s ... 558s > Ran: generic/014 > Passed all 1 tests > > > > > On 11/4/21 1:52 PM, xiubli@xxxxxxxxxx wrote: > > From: Xiubo Li <xiubli@xxxxxxxxxx> > > > > This patch series is based on the "wip-fscrypt-fnames" branch in > > repo https://github.com/ceph/ceph-client.git. > > > > And I have picked up 5 patches from the "ceph-fscrypt-size-experimental" > > branch in repo > > https://git.kernel.org/pub/scm/linux/kernel/git/jlayton/linux.git. > > > > ==== > > > > This approach is based on the discussion from V1 and V2, which will > > pass the encrypted last block contents to MDS along with the truncate > > request. > > > > This will send the encrypted last block contents to MDS along with > > the truncate request when truncating to a smaller size and at the > > same time new size does not align to BLOCK SIZE. > > > > The MDS side patch is raised in PR > > https://github.com/ceph/ceph/pull/43588, which is also based Jeff's > > previous great work in PR https://github.com/ceph/ceph/pull/41284. > > > > The MDS will use the filer.write_trunc(), which could update and > > truncate the file in one shot, instead of filer.truncate(). > > > > This just assume kclient won't support the inline data feature, which > > will be remove soon, more detail please see: > > https://tracker.ceph.com/issues/52916 > > > > > > Changed in V6: > > - Fixed the file hole bug, also have updated the MDS side PR. > > - Add add object version support for sync read in #8. > > > > > > Changed in V5: > > - Rebase to "wip-fscrypt-fnames" branch in ceph-client.git repo. > > - Pick up 5 patches from Jeff's "ceph-fscrypt-size-experimental" branch > > in linux.git repo. > > - Add "i_truncate_pagecache_size" member support in ceph_inode_info > > struct, this will be used to truncate the pagecache only in kclient > > side, because the "i_truncate_size" will always be aligned to BLOCK > > SIZE. In fscrypt case we need to use the real size to truncate the > > pagecache. > > > > > > Changed in V4: > > - Retry the truncate request by 20 times before fail it with -EAGAIN. > > - Remove the "fill_last_block" label and move the code to else branch. > > - Remove the #3 patch, which has already been sent out separately, in > > V3 series. > > - Improve some comments in the code. > > > > > > Changed in V3: > > - Fix possibly corrupting the file just before the MDS acquires the > > xlock for FILE lock, another client has updated it. > > - Flush the pagecache buffer before reading the last block for the > > when filling the truncate request. > > - Some other minore fixes. > > > > > > > > Jeff Layton (5): > > libceph: add CEPH_OSD_OP_ASSERT_VER support > > ceph: size handling for encrypted inodes in cap updates > > ceph: fscrypt_file field handling in MClientRequest messages > > ceph: get file size from fscrypt_file when present in inode traces > > ceph: handle fscrypt fields in cap messages from MDS > > > > Xiubo Li (4): > > ceph: add __ceph_get_caps helper support > > ceph: add __ceph_sync_read helper support > > ceph: add object version support for sync read > > ceph: add truncate size handling support for fscrypt > > > > fs/ceph/caps.c | 136 ++++++++++++++---- > > fs/ceph/crypto.h | 4 + > > fs/ceph/dir.c | 3 + > > fs/ceph/file.c | 76 ++++++++-- > > fs/ceph/inode.c | 243 +++++++++++++++++++++++++++++--- > > fs/ceph/mds_client.c | 9 +- > > fs/ceph/mds_client.h | 2 + > > fs/ceph/super.h | 25 ++++ > > include/linux/ceph/crypto.h | 28 ++++ > > include/linux/ceph/osd_client.h | 6 +- > > include/linux/ceph/rados.h | 4 + > > net/ceph/osd_client.c | 5 + > > 12 files changed, 482 insertions(+), 59 deletions(-) > > create mode 100644 include/linux/ceph/crypto.h > > > -- Jeff Layton <jlayton@xxxxxxxxxx>