Jeff Layton <jlayton@xxxxxxxxxx> writes: > ...and just have it return true. It should never change inode numbers > out from under us, as they are baked into the object names. > > Reported-by: Luís Henriques <lhenriques@xxxxxxx> > Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> > --- > fs/ceph/crypto.c | 20 +++++++++++++------- > 1 file changed, 13 insertions(+), 7 deletions(-) Thanks, this looks good. I've also tried it for a bit and seems work fine. Feel free to add my Reviewed-by (and Tested-by). Cheers, -- Luís > > diff --git a/fs/ceph/crypto.c b/fs/ceph/crypto.c > index 2a8f95885e7d..3a9214b1e8b3 100644 > --- a/fs/ceph/crypto.c > +++ b/fs/ceph/crypto.c > @@ -59,6 +59,11 @@ static int ceph_crypt_set_context(struct inode *inode, const void *ctx, size_t l > return ret; > } > > +static const union fscrypt_policy *ceph_get_dummy_policy(struct super_block *sb) > +{ > + return ceph_sb_to_client(sb)->dummy_enc_policy.policy; > +} > + > static bool ceph_crypt_empty_dir(struct inode *inode) > { > struct ceph_inode_info *ci = ceph_inode(inode); > @@ -66,14 +71,9 @@ static bool ceph_crypt_empty_dir(struct inode *inode) > return ci->i_rsubdirs + ci->i_rfiles == 1; > } > > -void ceph_fscrypt_free_dummy_policy(struct ceph_fs_client *fsc) > +static bool ceph_crypt_has_stable_inodes(struct super_block *sb) > { > - fscrypt_free_dummy_policy(&fsc->dummy_enc_policy); > -} > - > -static const union fscrypt_policy *ceph_get_dummy_policy(struct super_block *sb) > -{ > - return ceph_sb_to_client(sb)->dummy_enc_policy.policy; > + return true; > } > > static struct fscrypt_operations ceph_fscrypt_ops = { > @@ -82,6 +82,7 @@ static struct fscrypt_operations ceph_fscrypt_ops = { > .set_context = ceph_crypt_set_context, > .get_dummy_policy = ceph_get_dummy_policy, > .empty_dir = ceph_crypt_empty_dir, > + .has_stable_inodes = ceph_crypt_has_stable_inodes, > }; > > void ceph_fscrypt_set_ops(struct super_block *sb) > @@ -89,6 +90,11 @@ void ceph_fscrypt_set_ops(struct super_block *sb) > fscrypt_set_ops(sb, &ceph_fscrypt_ops); > } > > +void ceph_fscrypt_free_dummy_policy(struct ceph_fs_client *fsc) > +{ > + fscrypt_free_dummy_policy(&fsc->dummy_enc_policy); > +} > + > int ceph_fscrypt_prepare_context(struct inode *dir, struct inode *inode, > struct ceph_acl_sec_ctx *as) > { > -- > > 2.35.1 >