OSDN Git Service

ceph: only check pool permissions for regular files
authorJeff Layton <jlayton@kernel.org>
Tue, 26 Jan 2021 16:49:54 +0000 (11:49 -0500)
committerIlya Dryomov <idryomov@gmail.com>
Tue, 27 Apr 2021 21:52:23 +0000 (23:52 +0200)
There is no need to do a ceph_pool_perm_check() on anything that isn't a
regular file, as the MDS is what handles talking to the OSD in those
cases. Just return 0 if it's not a regular file.

Reported-by: Luis Henriques <lhenriques@suse.de>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Xiubo Li <xiubli@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
fs/ceph/addr.c

index bc98645..aa612bc 100644 (file)
@@ -1941,6 +1941,10 @@ int ceph_pool_perm_check(struct inode *inode, int need)
        s64 pool;
        int ret, flags;
 
+       /* Only need to do this for regular files */
+       if (!S_ISREG(inode->i_mode))
+               return 0;
+
        if (ci->i_vino.snap != CEPH_NOSNAP) {
                /*
                 * Pool permission check needs to write to the first object.