btrfs-progs: qgroup-verify: allow repair_qgroups to do silent repair
Allow repair_qgroups() to do silent repair, so it can acts as offline qgroup rescan. This provides the basis for later mkfs quota support. Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
f2292a9f17
commit
ca4cbfaba5
|
@ -10481,7 +10481,7 @@ static int cmd_check(const struct cmd_struct *cmd, int argc, char **argv)
|
|||
goto out;
|
||||
}
|
||||
report_qgroups(0);
|
||||
ret = repair_qgroups(info, &qgroups_repaired);
|
||||
ret = repair_qgroups(info, &qgroups_repaired, false);
|
||||
if (ret) {
|
||||
error("failed to repair quota groups");
|
||||
goto out;
|
||||
|
|
|
@ -1537,7 +1537,7 @@ out:
|
|||
}
|
||||
|
||||
static int repair_qgroup_info(struct btrfs_fs_info *info,
|
||||
struct qgroup_count *count)
|
||||
struct qgroup_count *count, bool silent)
|
||||
{
|
||||
int ret;
|
||||
struct btrfs_root *root = info->quota_root;
|
||||
|
@ -1546,8 +1546,10 @@ static int repair_qgroup_info(struct btrfs_fs_info *info,
|
|||
struct btrfs_qgroup_info_item *info_item;
|
||||
struct btrfs_key key;
|
||||
|
||||
printf("Repair qgroup %llu/%llu\n", btrfs_qgroup_level(count->qgroupid),
|
||||
btrfs_qgroup_subvid(count->qgroupid));
|
||||
if (!silent)
|
||||
printf("Repair qgroup %llu/%llu\n",
|
||||
btrfs_qgroup_level(count->qgroupid),
|
||||
btrfs_qgroup_subvid(count->qgroupid));
|
||||
|
||||
trans = btrfs_start_transaction(root, 1);
|
||||
if (IS_ERR(trans))
|
||||
|
@ -1592,7 +1594,7 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int repair_qgroup_status(struct btrfs_fs_info *info)
|
||||
static int repair_qgroup_status(struct btrfs_fs_info *info, bool silent)
|
||||
{
|
||||
int ret;
|
||||
struct btrfs_root *root = info->quota_root;
|
||||
|
@ -1601,7 +1603,8 @@ static int repair_qgroup_status(struct btrfs_fs_info *info)
|
|||
struct btrfs_key key;
|
||||
struct btrfs_qgroup_status_item *status_item;
|
||||
|
||||
printf("Repair qgroup status item\n");
|
||||
if (!silent)
|
||||
printf("Repair qgroup status item\n");
|
||||
|
||||
trans = btrfs_start_transaction(root, 1);
|
||||
if (IS_ERR(trans))
|
||||
|
@ -1638,7 +1641,7 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
int repair_qgroups(struct btrfs_fs_info *info, int *repaired)
|
||||
int repair_qgroups(struct btrfs_fs_info *info, int *repaired, bool silent)
|
||||
{
|
||||
int ret = 0;
|
||||
struct qgroup_count *count, *tmpcount;
|
||||
|
@ -1649,7 +1652,7 @@ int repair_qgroups(struct btrfs_fs_info *info, int *repaired)
|
|||
return 0;
|
||||
|
||||
list_for_each_entry_safe(count, tmpcount, &bad_qgroups, bad_list) {
|
||||
ret = repair_qgroup_info(info, count);
|
||||
ret = repair_qgroup_info(info, count, silent);
|
||||
if (ret) {
|
||||
goto out;
|
||||
}
|
||||
|
@ -1665,7 +1668,7 @@ int repair_qgroups(struct btrfs_fs_info *info, int *repaired)
|
|||
* mount.
|
||||
*/
|
||||
if (*repaired || counts.qgroup_inconsist || counts.rescan_running) {
|
||||
ret = repair_qgroup_status(info);
|
||||
ret = repair_qgroup_status(info, silent);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
int qgroup_verify_all(struct btrfs_fs_info *info);
|
||||
void report_qgroups(int all);
|
||||
int repair_qgroups(struct btrfs_fs_info *info, int *repaired);
|
||||
int repair_qgroups(struct btrfs_fs_info *info, int *repaired, bool silent);
|
||||
|
||||
int print_extent_state(struct btrfs_fs_info *info, u64 subvol);
|
||||
|
||||
|
|
Loading…
Reference in New Issue