From: Christopher Hoffman Date: Mon, 27 Jan 2025 17:33:25 +0000 (+0000) Subject: client: Use enc_name when linking a fscrypt enabled inode X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2e601a1d782bc236d77f8d8d941c1f98b89a31df;p=ceph.git client: Use enc_name when linking a fscrypt enabled inode Fixes: https://tracker.ceph.com/issues/64163 Signed-off-by: Christopher Hoffman --- diff --git a/src/client/Client.cc b/src/client/Client.cc index 6537ae9bf60..08d09ec5e50 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -1302,8 +1302,19 @@ Dentry *Client::insert_dentry_inode(Dir *dir, const string& dname, LeaseStat *dl } Inode *diri = dir->parent_inode; clear_dir_complete_and_ordered(diri, false); -#warning revisit nullopt here - dn = link(dir, dname, std::nullopt, in, dn); + + auto fscrypt_denc = fscrypt->get_fname_denc(diri->fscrypt_ctx, &diri->fscrypt_key_validator, true); + if (fscrypt_denc) { + string _enc_name; + string _alt_name; + int r = fscrypt_denc->get_encrypted_fname(dname, &_enc_name, &_alt_name); + if (r < 0) { + ldout(cct, 0) << __FILE__ << ":" << __LINE__ << ": failed to encrypt filename" << dendl; + } + dn = link(dir, dname, _enc_name, in, dn); + } else { + dn = link(dir, dname, std::nullopt, in, dn); + } if (old_dentry) { dn->is_renaming = false;