https://bugzilla.opensuse.org/show_bug.cgi?id=1212217 OBS-URL: https://build.opensuse.org/request/show/1092475 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/btrfsprogs?expand=0&rev=147
73 lines
3.3 KiB
Diff
73 lines
3.3 KiB
Diff
From ab32c4445d0d14632e5ae717e56d57455eb98294 Mon Sep 17 00:00:00 2001
|
|
From: David Sterba <dsterba@suse.com>
|
|
Date: Fri, 26 May 2023 17:04:11 +0200
|
|
Subject: [PATCH] btrfs-progs: qgroup show: fix formatting of limit values in
|
|
json output
|
|
|
|
There are reports that json output of 'qgroup show' crashes due to
|
|
internal error when printing the limit values:
|
|
|
|
INTERNAL ERROR: unknown unit base, mode 2304
|
|
btrfs(internal_error+0x10a)[0x5605c37ce48a]
|
|
btrfs(pretty_size_snprintf+0x5c)[0x5605c37d105c]
|
|
btrfs(fmt_print+0x44e)[0x5605c37d178e]
|
|
btrfs(+0x7ed1d)[0x5605c3800d1d]
|
|
btrfs(main+0x8f)[0x5605c379beff]
|
|
/lib64/libc.so.6(+0x27bb0)[0x7f83924ddbb0]
|
|
/lib64/libc.so.6(__libc_start_main+0x8b)[0x7f83924ddc79]
|
|
btrfs(_start+0x25)[0x5605c379d405]
|
|
common/units.c:82: pretty_size_snprintf: Assertion `0` failed, value 0
|
|
btrfs(+0x1d4b1)[0x5605c379f4b1]
|
|
btrfs(pretty_size_snprintf+0x7b)[0x5605c37d107b]
|
|
btrfs(fmt_print+0x44e)[0x5605c37d178e]
|
|
btrfs(+0x7ed1d)[0x5605c3800d1d]
|
|
btrfs(main+0x8f)[0x5605c379beff]
|
|
/lib64/libc.so.6(+0x27bb0)[0x7f83924ddbb0]
|
|
/lib64/libc.so.6(__libc_start_main+0x8b)[0x7f83924ddc79]
|
|
btrfs(_start+0x25)[0x5605c379d405]
|
|
|
|
This is caused by "size" format that requires the unit mode, but it was not
|
|
specified and some stack value used. As json prints the raw values, use
|
|
the plain %llu format.
|
|
|
|
Link: https://bugzilla.opensuse.org/show_bug.cgi?id=1206960
|
|
Link: https://bugzilla.opensuse.org/show_bug.cgi?id=1209136#c15
|
|
Signed-off-by: David Sterba <dsterba@suse.com>
|
|
---
|
|
cmds/qgroup.c | 4 ++--
|
|
tests/cli-tests/005-qgroup-show/test.sh | 1 +
|
|
2 files changed, 3 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/cmds/qgroup.c b/cmds/qgroup.c
|
|
index 654fca4bb7d67e..4c66ee0ad5e41f 100644
|
|
--- a/cmds/qgroup.c
|
|
+++ b/cmds/qgroup.c
|
|
@@ -1439,10 +1439,10 @@ static const struct rowspec qgroup_show_rowspec[] = {
|
|
{ .key = "qgroupid", .fmt = "qgroupid", .out_json = "qgroupid" },
|
|
{ .key = "referenced", .fmt = "%llu", .out_json = "referenced" },
|
|
{ .key = "exclusive", .fmt = "%llu", .out_json = "exclusive" },
|
|
- { .key = "max_referenced", .fmt = "size", .out_json = "max_referenced" },
|
|
+ { .key = "max_referenced", .fmt = "%llu", .out_json = "max_referenced" },
|
|
/* Special value if limits not set. */
|
|
{ .key = "max_referenced-none", .fmt = "%s", .out_json = "max_referenced" },
|
|
- { .key = "max_exclusive", .fmt = "size", .out_json = "max_exclusive" },
|
|
+ { .key = "max_exclusive", .fmt = "%llu", .out_json = "max_exclusive" },
|
|
/* Special value if limits not set. */
|
|
{ .key = "max_exclusive-none", .fmt = "%s", .out_json = "max_exclusive" },
|
|
{ .key = "path", .fmt = "str", .out_json = "path" },
|
|
diff --git a/tests/cli-tests/005-qgroup-show/test.sh b/tests/cli-tests/005-qgroup-show/test.sh
|
|
index 455f2d3c2da101..97e51273aa6929 100755
|
|
--- a/tests/cli-tests/005-qgroup-show/test.sh
|
|
+++ b/tests/cli-tests/005-qgroup-show/test.sh
|
|
@@ -17,6 +17,7 @@ run_mayfail "$TOP/btrfs" --format json qgroup show "$TEST_MNT"
|
|
run_mayfail $SUDO_HELPER "$TOP/btrfs" qgroup show "$TEST_MNT"
|
|
run_mayfail $SUDO_HELPER "$TOP/btrfs" --format json qgroup show "$TEST_MNT"
|
|
run_check $SUDO_HELPER "$TOP/btrfs" quota enable "$TEST_MNT"
|
|
+run_check $SUDO_HELPER "$TOP/btrfs" qgroup limit 128m "$TEST_MNT"
|
|
run_mayfail "$TOP/btrfs" qgroup show "$TEST_MNT"
|
|
run_mayfail "$TOP/btrfs" --format json qgroup show "$TEST_MNT"
|
|
run_check $SUDO_HELPER "$TOP/btrfs" qgroup show "$TEST_MNT"
|
|
--
|
|
2.40.0
|
|
|