diff mbox series

ceph: only check pool permissions for regular files

Message ID 20210325165606.41943-1-jlayton@kernel.org (mailing list archive)
State New, archived
Headers show
Series ceph: only check pool permissions for regular files | expand

Commit Message

Jeff Layton March 25, 2021, 4:56 p.m. UTC
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>
---
 fs/ceph/addr.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Luis Henriques March 26, 2021, 3:10 p.m. UTC | #1
On Thu, Mar 25, 2021 at 12:56:06PM -0400, Jeff Layton wrote:
> 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>

Looks good to me, thanks!

[ Took me a while to find when/where I reported that -- it was completely
  swapped out from my memory!  But I finally found it on my IRC logs. ]

Cheers,
--
Luís

> Signed-off-by: Jeff Layton <jlayton@kernel.org>
> ---
>  fs/ceph/addr.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
> index d26a88aca014..07cbf21099b8 100644
> --- a/fs/ceph/addr.c
> +++ b/fs/ceph/addr.c
> @@ -1940,6 +1940,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.
> -- 
> 2.30.2
>
Xiubo Li March 29, 2021, 3:59 a.m. UTC | #2
On 2021/3/26 0:56, Jeff Layton wrote:
> 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>
> ---
>   fs/ceph/addr.c | 4 ++++
>   1 file changed, 4 insertions(+)
>
> diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
> index d26a88aca014..07cbf21099b8 100644
> --- a/fs/ceph/addr.c
> +++ b/fs/ceph/addr.c
> @@ -1940,6 +1940,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.

Reviewed-by: Xiubo Li <xiubli@redhat.com>
diff mbox series

Patch

diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
index d26a88aca014..07cbf21099b8 100644
--- a/fs/ceph/addr.c
+++ b/fs/ceph/addr.c
@@ -1940,6 +1940,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.