ceph: prevent snapshot creation in encrypted locked directories
authorLuís Henriques <lhenriques@suse.de>
Thu, 25 Aug 2022 13:31:31 +0000 (09:31 -0400)
committerIlya Dryomov <idryomov@gmail.com>
Thu, 24 Aug 2023 09:24:36 +0000 (11:24 +0200)
With snapshot names encryption we can not allow snapshots to be created in
locked directories because the names wouldn't be encrypted.  This patch
forces the directory to be unlocked to allow a snapshot to be created.

Signed-off-by: Luís Henriques <lhenriques@suse.de>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Xiubo Li <xiubli@redhat.com>
Reviewed-by: Milind Changire <mchangir@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/dir.c

index 4990886a366cbc8855e23ffddbf261bd8fdbef22..0e4f8e07022dccd9f3d9d1f8bc57e50dd552983a 100644 (file)
@@ -1090,6 +1090,11 @@ static int ceph_mkdir(struct mnt_idmap *idmap, struct inode *dir,
                err = -EDQUOT;
                goto out;
        }
+       if ((op == CEPH_MDS_OP_MKSNAP) && IS_ENCRYPTED(dir) &&
+           !fscrypt_has_encryption_key(dir)) {
+               err = -ENOKEY;
+               goto out;
+       }
 
 
        req = ceph_mdsc_create_request(mdsc, op, USE_AUTH_MDS);