btrfs-progs: check: initialize qgroup_item_count in earlier stage
"btrfsck -Q" segfaults because it does not call qgroup_set_item_count_ptr() properly: # btrfsck -Q /dev/sdk Opening filesystem to check... Checking filesystem on /dev/sdk UUID: 34a35bbc-43f8-40f0-8043-65ed33f2e6c3 Print quota groups for /dev/sdk UUID: 34a35bbc-43f8-40f0-8043-65ed33f2e6c3 Segmentation fault (core dumped) Since "struct task_ctx ctx" is global, we can just move qgroup_set_item_count_ptr() much earlier stage in the check process to avoid to forget initializing it. Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com> Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
27049a1e77
commit
8ca6c0c3c7
|
@ -9978,6 +9978,7 @@ static int cmd_check(const struct cmd_struct *cmd, int argc, char **argv)
|
|||
|
||||
radix_tree_init();
|
||||
cache_tree_init(&root_cache);
|
||||
qgroup_set_item_count_ptr(&ctx.item_count);
|
||||
|
||||
ret = check_mounted(argv[optind]);
|
||||
if (!force) {
|
||||
|
@ -10304,7 +10305,6 @@ static int cmd_check(const struct cmd_struct *cmd, int argc, char **argv)
|
|||
}
|
||||
|
||||
if (info->quota_enabled) {
|
||||
qgroup_set_item_count_ptr(&ctx.item_count);
|
||||
if (!ctx.progress_enabled) {
|
||||
fprintf(stderr, "[7/7] checking quota groups\n");
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue