Re: [PATCH v3 2/3] btrfs-progs: fi defrag: do not exit if defrag range ioctl is unsupported
On 2017年11月30日 14:37, Qu Wenruo wrote: > > > On 2017年11月29日 10:12, Su Yue wrote: >> If ioctl of defrag range is unsupported, defrag will exit immediately. >> >> Since caller can handle the error, let cmd_filesystem_defrag() >> close file, break the loop and return error instead of calling exit(1). >> >> Suggested-by: David Sterba>> Signed-off-by: Su Yue > > Reviewed-by: Qu Wenruo > > Thanks, > Qu Please ignore my tag. The best solution is mentioned in the 1st patch. Thanks, Qu >> --- >> Changelog: >> v2: Separate the patch from commit 6e991b9161fa ("btrfs-progs: fi >> defrag: clean up duplicate code if find errors"). >> v3: Call close_file_or_dir() before breaking the loop. >> --- >> cmds-filesystem.c | 6 -- >> 1 file changed, 4 insertions(+), 2 deletions(-) >> >> diff --git a/cmds-filesystem.c b/cmds-filesystem.c >> index 17d399d58adf..232d4e88e0c0 100644 >> --- a/cmds-filesystem.c >> +++ b/cmds-filesystem.c >> @@ -1049,8 +1049,10 @@ static int cmd_filesystem_defrag(int argc, char >> **argv) >> if (recursive && S_ISDIR(st.st_mode)) { >> ret = nftw(argv[i], defrag_callback, 10, >> FTW_MOUNT | FTW_PHYS); >> -if (ret == ENOTTY) >> -exit(1); >> +if (ret == ENOTTY) { >> +close_file_or_dir(fd, dirstream); >> +break; >> +} >> /* errors are handled in the callback */ >> ret = 0; >> } else { >> > signature.asc Description: OpenPGP digital signature
Re: [PATCH v3 2/3] btrfs-progs: fi defrag: do not exit if defrag range ioctl is unsupported
On 2017年11月29日 10:12, Su Yue wrote: > If ioctl of defrag range is unsupported, defrag will exit immediately. > > Since caller can handle the error, let cmd_filesystem_defrag() > close file, break the loop and return error instead of calling exit(1). > > Suggested-by: David Sterba> Signed-off-by: Su Yue Reviewed-by: Qu Wenruo Thanks, Qu > --- > Changelog: > v2: Separate the patch from commit 6e991b9161fa ("btrfs-progs: fi > defrag: clean up duplicate code if find errors"). > v3: Call close_file_or_dir() before breaking the loop. > --- > cmds-filesystem.c | 6 -- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/cmds-filesystem.c b/cmds-filesystem.c > index 17d399d58adf..232d4e88e0c0 100644 > --- a/cmds-filesystem.c > +++ b/cmds-filesystem.c > @@ -1049,8 +1049,10 @@ static int cmd_filesystem_defrag(int argc, char **argv) > if (recursive && S_ISDIR(st.st_mode)) { > ret = nftw(argv[i], defrag_callback, 10, > FTW_MOUNT | FTW_PHYS); > - if (ret == ENOTTY) > - exit(1); > + if (ret == ENOTTY) { > + close_file_or_dir(fd, dirstream); > + break; > + } > /* errors are handled in the callback */ > ret = 0; > } else { > signature.asc Description: OpenPGP digital signature
[PATCH v3 2/3] btrfs-progs: fi defrag: do not exit if defrag range ioctl is unsupported
If ioctl of defrag range is unsupported, defrag will exit immediately. Since caller can handle the error, let cmd_filesystem_defrag() close file, break the loop and return error instead of calling exit(1). Suggested-by: David SterbaSigned-off-by: Su Yue --- Changelog: v2: Separate the patch from commit 6e991b9161fa ("btrfs-progs: fi defrag: clean up duplicate code if find errors"). v3: Call close_file_or_dir() before breaking the loop. --- cmds-filesystem.c | 6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cmds-filesystem.c b/cmds-filesystem.c index 17d399d58adf..232d4e88e0c0 100644 --- a/cmds-filesystem.c +++ b/cmds-filesystem.c @@ -1049,8 +1049,10 @@ static int cmd_filesystem_defrag(int argc, char **argv) if (recursive && S_ISDIR(st.st_mode)) { ret = nftw(argv[i], defrag_callback, 10, FTW_MOUNT | FTW_PHYS); - if (ret == ENOTTY) - exit(1); + if (ret == ENOTTY) { + close_file_or_dir(fd, dirstream); + break; + } /* errors are handled in the callback */ ret = 0; } else { -- 2.15.0 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html