* [PATCH 0/2] btrfs-progs: fixes for the cli test group
@ 2023-02-13 5:26 Qu Wenruo
2023-02-13 5:26 ` [PATCH 1/2] btrfs-progs: make usage() call to properly return an exit value Qu Wenruo
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Qu Wenruo @ 2023-02-13 5:26 UTC (permalink / raw)
To: linux-btrfs
For the current devel branch, there are two failures for the cli test group:
- cli/009
This is caused by a very recent (only in devel branch) refactor for
btrfstune, which removes the ability to customize the return value.
Fix it by adding a new @ret argument for usage() helper.
- cli/017
This exists for a while, and it's caused by a recent kernel change.
Fix the test case to handle it better.
Qu Wenruo (2):
btrfs-progs: make usage() call to properly return an exit value
btrfs-progs: tests: cli: fix 017 test case failure
check/main.c | 4 ++--
cmds/device.c | 4 ++--
cmds/filesystem.c | 2 +-
cmds/qgroup.c | 2 +-
cmds/quota.c | 4 ++--
cmds/receive.c | 4 ++--
cmds/restore.c | 4 ++--
cmds/subvolume-list.c | 2 +-
cmds/subvolume.c | 2 +-
common/help.c | 6 +++---
common/help.h | 2 +-
image/main.c | 3 +--
mkfs/main.c | 3 +--
tests/cli-tests/017-fi-show-missing/test.sh | 2 +-
tune/main.c | 3 +--
15 files changed, 22 insertions(+), 25 deletions(-)
--
2.39.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] btrfs-progs: make usage() call to properly return an exit value
2023-02-13 5:26 [PATCH 0/2] btrfs-progs: fixes for the cli test group Qu Wenruo
@ 2023-02-13 5:26 ` Qu Wenruo
2023-02-13 5:26 ` [PATCH 2/2] btrfs-progs: tests: cli: fix 017 test case failure Qu Wenruo
2023-02-21 23:22 ` [PATCH 0/2] btrfs-progs: fixes for the cli test group David Sterba
2 siblings, 0 replies; 4+ messages in thread
From: Qu Wenruo @ 2023-02-13 5:26 UTC (permalink / raw)
To: linux-btrfs
[BUG]
Currently cli/009 test case failed with different exit number:
====== RUN CHECK /home/adam/btrfs-progs/btrfstune --help
usage: btrfstune [options] device
[...]
failed: /home/adam/btrfs-progs/btrfstune --help
test failed for case 009-btrfstune
[CAUSE]
In tune/main.c, we have the following call on usage():
static void print_usage(int ret)
{
usage(&tune_cmd);
exit(ret);
}
However usage() itself would always call exit(1):
void usage(const struct cmd_struct *cmd)
{
usage_command_usagestr(cmd->usagestr, NULL, 0, true, true);
exit(1);
}
This makes prevents any caller of usage() to modify its exit number.
[FIX]
Add a new argument @ret for print_usage(), so we can properly return 0
for -h/--help usage.
Signed-off-by: Qu Wenruo <wqu@suse.com>
---
check/main.c | 4 ++--
cmds/device.c | 4 ++--
cmds/filesystem.c | 2 +-
cmds/qgroup.c | 2 +-
cmds/quota.c | 4 ++--
cmds/receive.c | 4 ++--
cmds/restore.c | 4 ++--
cmds/subvolume-list.c | 2 +-
cmds/subvolume.c | 2 +-
common/help.c | 6 +++---
common/help.h | 2 +-
image/main.c | 3 +--
mkfs/main.c | 3 +--
tune/main.c | 3 +--
14 files changed, 21 insertions(+), 24 deletions(-)
diff --git a/check/main.c b/check/main.c
index 899d8bd88e2a..38e44eae6ef6 100644
--- a/check/main.c
+++ b/check/main.c
@@ -10075,7 +10075,7 @@ static int cmd_check(const struct cmd_struct *cmd, int argc, char **argv)
break;
case '?':
case 'h':
- usage(cmd);
+ usage(cmd, 0);
case GETOPT_VAL_REPAIR:
printf("enabling repair mode\n");
opt_check_repair = 1;
@@ -10130,7 +10130,7 @@ static int cmd_check(const struct cmd_struct *cmd, int argc, char **argv)
}
if (check_argc_exact(argc - optind, 1))
- usage(cmd);
+ usage(cmd, 1);
if (g_task_ctx.progress_enabled) {
g_task_ctx.tp = TASK_NOTHING;
diff --git a/cmds/device.c b/cmds/device.c
index 69fe3fb3b9a8..555ee13724d5 100644
--- a/cmds/device.c
+++ b/cmds/device.c
@@ -440,10 +440,10 @@ static int cmd_device_scan(const struct cmd_struct *cmd, int argc, char **argv)
devstart = optind;
if (all && forget)
- usage(cmd);
+ usage(cmd, 1);
if (all && check_argc_max(argc - optind, 1))
- usage(cmd);
+ usage(cmd, 1);
if (all || argc - optind == 0) {
if (forget) {
diff --git a/cmds/filesystem.c b/cmds/filesystem.c
index b189d7cb706d..bfcf7d1bcaf0 100644
--- a/cmds/filesystem.c
+++ b/cmds/filesystem.c
@@ -752,7 +752,7 @@ static int cmd_filesystem_show(const struct cmd_struct *cmd,
if (argc > optind) {
search = argv[optind];
if (*search == 0)
- usage(cmd);
+ usage(cmd, 1);
type = check_arg_type(search);
/*
diff --git a/cmds/qgroup.c b/cmds/qgroup.c
index d58d9a91cb25..7389b386fc05 100644
--- a/cmds/qgroup.c
+++ b/cmds/qgroup.c
@@ -2136,7 +2136,7 @@ static int cmd_qgroup_limit(const struct cmd_struct *cmd, int argc, char **argv)
args.qgroupid = parse_qgroupid_or_path(argv[optind + 1]);
path = argv[optind + 2];
} else
- usage(cmd);
+ usage(cmd, 1);
fd = btrfs_open_dir(path, &dirstream, 1);
if (fd < 0)
diff --git a/cmds/quota.c b/cmds/quota.c
index d11b0aaf8cbd..9ae614ea1231 100644
--- a/cmds/quota.c
+++ b/cmds/quota.c
@@ -79,7 +79,7 @@ static int cmd_quota_enable(const struct cmd_struct *cmd, int argc, char **argv)
ret = quota_ctl(BTRFS_QUOTA_CTL_ENABLE, argc, argv);
if (ret < 0)
- usage(cmd);
+ usage(cmd, 1);
return ret;
}
static DEFINE_SIMPLE_COMMAND(quota_enable, "enable");
@@ -100,7 +100,7 @@ static int cmd_quota_disable(const struct cmd_struct *cmd,
ret = quota_ctl(BTRFS_QUOTA_CTL_DISABLE, argc, argv);
if (ret < 0)
- usage(cmd);
+ usage(cmd, 1);
return ret;
}
static DEFINE_SIMPLE_COMMAND(quota_disable, "disable");
diff --git a/cmds/receive.c b/cmds/receive.c
index 1d623ae3ce90..8d5f8721850e 100644
--- a/cmds/receive.c
+++ b/cmds/receive.c
@@ -1762,9 +1762,9 @@ static int cmd_receive(const struct cmd_struct *cmd, int argc, char **argv)
}
if (dump && check_argc_exact(argc - optind, 0))
- usage(cmd);
+ usage(cmd, 1);
if (!dump && check_argc_exact(argc - optind, 1))
- usage(cmd);
+ usage(cmd, 1);
tomnt = argv[optind];
diff --git a/cmds/restore.c b/cmds/restore.c
index 19df6be2f539..85b98d502ac3 100644
--- a/cmds/restore.c
+++ b/cmds/restore.c
@@ -1481,9 +1481,9 @@ static int cmd_restore(const struct cmd_struct *cmd, int argc, char **argv)
}
if (!list_roots && check_argc_min(argc - optind, 2))
- usage(cmd);
+ usage(cmd, 1);
else if (list_roots && check_argc_min(argc - optind, 1))
- usage(cmd);
+ usage(cmd, 1);
if (fs_location && root_objectid) {
error("can't use -f and -r at the same time");
diff --git a/cmds/subvolume-list.c b/cmds/subvolume-list.c
index 3de167f95685..c94245070540 100644
--- a/cmds/subvolume-list.c
+++ b/cmds/subvolume-list.c
@@ -1645,7 +1645,7 @@ out:
if (comparer_set)
free(comparer_set);
if (uerr)
- usage(cmd);
+ usage(cmd, 1);
return !!ret;
}
DEFINE_SIMPLE_COMMAND(subvolume_list, "list");
diff --git a/cmds/subvolume.c b/cmds/subvolume.c
index 50aac4034db4..e194ded54b3b 100644
--- a/cmds/subvolume.c
+++ b/cmds/subvolume.c
@@ -1299,7 +1299,7 @@ static int cmd_subvolume_show(const struct cmd_struct *cmd, int argc, char **arg
if (by_rootid && by_uuid) {
error(
"options --rootid and --uuid cannot be used at the same time");
- usage(cmd);
+ usage(cmd, 1);
}
fullpath = realpath(argv[optind], NULL);
diff --git a/common/help.c b/common/help.c
index 8145df9e5781..0e50ba1dad53 100644
--- a/common/help.c
+++ b/common/help.c
@@ -105,7 +105,7 @@ void clean_args_no_options(const struct cmd_struct *cmd, int argc, char *argv[])
switch (c) {
default:
if (cmd->usagestr)
- usage(cmd);
+ usage(cmd, 1);
}
}
}
@@ -380,10 +380,10 @@ void usage_unknown_option(const struct cmd_struct *cmd, char **argv)
}
__attribute__((noreturn))
-void usage(const struct cmd_struct *cmd)
+void usage(const struct cmd_struct *cmd, int ret)
{
usage_command_usagestr(cmd->usagestr, NULL, 0, true, true);
- exit(1);
+ exit(ret);
}
static void usage_command_group_internal(const struct cmd_group *grp, bool full,
diff --git a/common/help.h b/common/help.h
index 02286847e13a..9375ab6e32b1 100644
--- a/common/help.h
+++ b/common/help.h
@@ -103,7 +103,7 @@ __attribute__((noreturn))
void usage_unknown_option(const struct cmd_struct *cmd, char **argv);
__attribute__((noreturn))
-void usage(const struct cmd_struct *cmd);
+void usage(const struct cmd_struct *cmd, int ret);
void usage_command(const struct cmd_struct *cmd, bool full, bool err);
void usage_command_group(const struct cmd_group *grp, bool all, bool err);
void usage_command_group_short(const struct cmd_group *grp);
diff --git a/image/main.c b/image/main.c
index 65aa3b30b182..3e7a34533716 100644
--- a/image/main.c
+++ b/image/main.c
@@ -3053,8 +3053,7 @@ static const struct cmd_struct image_cmd = {
static void print_usage(int ret)
{
- usage(&image_cmd);
- exit(ret);
+ usage(&image_cmd, ret);
}
int BOX_MAIN(image)(int argc, char *argv[])
diff --git a/mkfs/main.c b/mkfs/main.c
index 341ba4089484..da123ee4455d 100644
--- a/mkfs/main.c
+++ b/mkfs/main.c
@@ -448,8 +448,7 @@ static const struct cmd_struct mkfs_cmd = {
static void print_usage(int ret)
{
- usage(&mkfs_cmd);
- exit(ret);
+ usage(&mkfs_cmd, ret);
}
static int zero_output_file(int out_fd, u64 size)
diff --git a/tune/main.c b/tune/main.c
index acfc126286d0..79b676972b50 100644
--- a/tune/main.c
+++ b/tune/main.c
@@ -95,8 +95,7 @@ static const struct cmd_struct tune_cmd = {
static void print_usage(int ret)
{
- usage(&tune_cmd);
- exit(ret);
+ usage(&tune_cmd, ret);
}
int BOX_MAIN(btrfstune)(int argc, char *argv[])
--
2.39.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] btrfs-progs: tests: cli: fix 017 test case failure
2023-02-13 5:26 [PATCH 0/2] btrfs-progs: fixes for the cli test group Qu Wenruo
2023-02-13 5:26 ` [PATCH 1/2] btrfs-progs: make usage() call to properly return an exit value Qu Wenruo
@ 2023-02-13 5:26 ` Qu Wenruo
2023-02-21 23:22 ` [PATCH 0/2] btrfs-progs: fixes for the cli test group David Sterba
2 siblings, 0 replies; 4+ messages in thread
From: Qu Wenruo @ 2023-02-13 5:26 UTC (permalink / raw)
To: linux-btrfs
[BUG]
Test case cli/017 fails with the following errors:
[TEST] cli-tests.sh
[TEST/cli] 017-fi-show-missing
didn't find exact missing device
test failed for case 017-fi-show-missing
[CAUSE]
After kernel commit cb3e217bdb39 ("btrfs: use btrfs_dev_name() helper to
handle missing devices better"), all dev info ioctl call on missing
device would only return "<missing disk>" for its path.
Thus "btrfs filesystem show" would never report detailed device path for
missing disks.
[FIX]
Instead of relying on the device path, change the check to rely on devid
instead.
Now cli/017 can properly pass.
Signed-off-by: Qu Wenruo <wqu@suse.com>
---
tests/cli-tests/017-fi-show-missing/test.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/cli-tests/017-fi-show-missing/test.sh b/tests/cli-tests/017-fi-show-missing/test.sh
index 25e4c60a70e0..67757e20a898 100755
--- a/tests/cli-tests/017-fi-show-missing/test.sh
+++ b/tests/cli-tests/017-fi-show-missing/test.sh
@@ -23,7 +23,7 @@ run_check $SUDO_HELPER mv "$dev2" /dev/loop-non-existent
run_check $SUDO_HELPER mount -o degraded $dev1 $TEST_MNT
if ! run_check_stdout $SUDO_HELPER "$TOP/btrfs" filesystem show "$TEST_MNT" | \
- grep -q "$dev2 MISSING"; then
+ grep -q -e "devid[[:space:]]\+2.*MISSING"; then
_fail "didn't find exact missing device"
fi
--
2.39.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 0/2] btrfs-progs: fixes for the cli test group
2023-02-13 5:26 [PATCH 0/2] btrfs-progs: fixes for the cli test group Qu Wenruo
2023-02-13 5:26 ` [PATCH 1/2] btrfs-progs: make usage() call to properly return an exit value Qu Wenruo
2023-02-13 5:26 ` [PATCH 2/2] btrfs-progs: tests: cli: fix 017 test case failure Qu Wenruo
@ 2023-02-21 23:22 ` David Sterba
2 siblings, 0 replies; 4+ messages in thread
From: David Sterba @ 2023-02-21 23:22 UTC (permalink / raw)
To: Qu Wenruo; +Cc: linux-btrfs
On Mon, Feb 13, 2023 at 01:26:31PM +0800, Qu Wenruo wrote:
> For the current devel branch, there are two failures for the cli test group:
>
> - cli/009
> This is caused by a very recent (only in devel branch) refactor for
> btrfstune, which removes the ability to customize the return value.
>
> Fix it by adding a new @ret argument for usage() helper.
>
> - cli/017
> This exists for a while, and it's caused by a recent kernel change.
>
> Fix the test case to handle it better.
>
> Qu Wenruo (2):
> btrfs-progs: make usage() call to properly return an exit value
> btrfs-progs: tests: cli: fix 017 test case failure
Added to devel, thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-02-21 23:28 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-13 5:26 [PATCH 0/2] btrfs-progs: fixes for the cli test group Qu Wenruo
2023-02-13 5:26 ` [PATCH 1/2] btrfs-progs: make usage() call to properly return an exit value Qu Wenruo
2023-02-13 5:26 ` [PATCH 2/2] btrfs-progs: tests: cli: fix 017 test case failure Qu Wenruo
2023-02-21 23:22 ` [PATCH 0/2] btrfs-progs: fixes for the cli test group David Sterba
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.