From: Xiubo Li <xiubli@xxxxxxxxxx> This is a new approach to improve the readdir and based the previous discussion in another thread: https://patchwork.kernel.org/project/ceph-devel/list/?series=621901 Just start a new thread for this. As Jeff suggested, this patch series will dentrypt the dentry name during parsing the readdir data in handle_reply(). And then in both ceph_readdir_prepopulate() and ceph_readdir() we will use the dencrypted name directly. NOTE: we will base64_dencode and dencrypt the names in-place instead of allocating tmp buffers. For base64_dencode it's safe because the dencoded string buffer will always be shorter. V2: - Fix the WARN issue reported by Luis, thanks. Xiubo Li (4): ceph: pass the request to parse_reply_info_readdir() ceph: add ceph_encode_encrypted_dname() helper ceph: dencrypt the dentry names early and once for readdir ceph: clean up the ceph_readdir() code fs/ceph/crypto.c | 25 ++++++++--- fs/ceph/crypto.h | 2 + fs/ceph/dir.c | 64 +++++++++------------------ fs/ceph/inode.c | 37 ++-------------- fs/ceph/mds_client.c | 101 ++++++++++++++++++++++++++++++++++++------- fs/ceph/mds_client.h | 4 +- 6 files changed, 133 insertions(+), 100 deletions(-) -- 2.27.0