diff mbox series

[RFC] btrfs-progs: filesystem: du: skip file that permission denied

Message ID 20211121074705.8615-1-realwakka@gmail.com (mailing list archive)
State New, archived
Headers show
Series [RFC] btrfs-progs: filesystem: du: skip file that permission denied | expand

Commit Message

Sidong Yang Nov. 21, 2021, 7:47 a.m. UTC
This patch handles issue #421. Filesystem du command fails and exit
when it access file that has permission denied. But it can continue the
command except the files. This patch recovers ret value when permission
denied.

Signed-off-by: Sidong Yang <realwakka@gmail.com>
---
 cmds/filesystem-du.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Nikolay Borisov Nov. 21, 2021, 9:01 a.m. UTC | #1
On 21.11.21 г. 9:47, Sidong Yang wrote:
> This patch handles issue #421. Filesystem du command fails and exit
> when it access file that has permission denied. But it can continue the
> command except the files. This patch recovers ret value when permission
> denied.
> 
> Signed-off-by: Sidong Yang <realwakka@gmail.com>
> ---
>  cmds/filesystem-du.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/cmds/filesystem-du.c b/cmds/filesystem-du.c
> index 5865335d..64a1f7f5 100644
> --- a/cmds/filesystem-du.c
> +++ b/cmds/filesystem-du.c
> @@ -406,6 +406,9 @@ static int du_walk_dir(struct du_dir_ctxt *ctxt, struct rb_root *shared_extents)
>  				if (ret == -ENOTTY) {
>  					ret = 0;
>  					continue;
> +				} else if (ret == -EACCES) {

This can be added to the above condition with || ret == -EACCESS. Avoids
code duplication.

> +					ret = 0;
> +					continue;
>  				} else if (ret) {
>  					errno = -ret;
>  					fprintf(stderr,
>
Sidong Yang Nov. 21, 2021, 2:53 p.m. UTC | #2
On Sun, Nov 21, 2021 at 11:01:02AM +0200, Nikolay Borisov wrote:
> 
> 
> On 21.11.21 г. 9:47, Sidong Yang wrote:
> > This patch handles issue #421. Filesystem du command fails and exit
> > when it access file that has permission denied. But it can continue the
> > command except the files. This patch recovers ret value when permission
> > denied.
> > 
> > Signed-off-by: Sidong Yang <realwakka@gmail.com>
> > ---
> >  cmds/filesystem-du.c | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/cmds/filesystem-du.c b/cmds/filesystem-du.c
> > index 5865335d..64a1f7f5 100644
> > --- a/cmds/filesystem-du.c
> > +++ b/cmds/filesystem-du.c
> > @@ -406,6 +406,9 @@ static int du_walk_dir(struct du_dir_ctxt *ctxt, struct rb_root *shared_extents)
> >  				if (ret == -ENOTTY) {
> >  					ret = 0;
> >  					continue;
> > +				} else if (ret == -EACCES) {
> 
> This can be added to the above condition with || ret == -EACCESS. Avoids
> code duplication.

Thanks! It would be better. 
> 
> > +					ret = 0;
> > +					continue;
> >  				} else if (ret) {
> >  					errno = -ret;
> >  					fprintf(stderr,
> >
diff mbox series

Patch

diff --git a/cmds/filesystem-du.c b/cmds/filesystem-du.c
index 5865335d..64a1f7f5 100644
--- a/cmds/filesystem-du.c
+++ b/cmds/filesystem-du.c
@@ -406,6 +406,9 @@  static int du_walk_dir(struct du_dir_ctxt *ctxt, struct rb_root *shared_extents)
 				if (ret == -ENOTTY) {
 					ret = 0;
 					continue;
+				} else if (ret == -EACCES) {
+					ret = 0;
+					continue;
 				} else if (ret) {
 					errno = -ret;
 					fprintf(stderr,