aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ceph
diff options
context:
space:
mode:
authorJeff Layton <jlayton@kernel.org>2021-01-26 11:49:54 -0500
committerIlya Dryomov <idryomov@gmail.com>2021-04-27 23:52:23 +0200
commite9b2250156c381b0973ea6ec3890fe8706426ecc (patch)
tree56bf404e8d2b95ee2a6b59638ffb26fb1c615c72 /fs/ceph
parentceph: send opened files/pinned caps/opened inodes metrics to MDS daemon (diff)
downloadlinux-dev-e9b2250156c381b0973ea6ec3890fe8706426ecc.tar.xz
linux-dev-e9b2250156c381b0973ea6ec3890fe8706426ecc.zip
ceph: only check pool permissions for regular files
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>
Diffstat (limited to 'fs/ceph')
-rw-r--r--fs/ceph/addr.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
index bc9864524fde..aa612bc8a559 100644
--- a/fs/ceph/addr.c
+++ b/fs/ceph/addr.c
@@ -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.