diff mbox series

ceph: only check pool permissions for regular files

Message ID 20210325165606.41943-1-jlayton@kernel.org
State New
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.