diff options
author | David Sterba <dsterba@suse.com> | 2016-11-03 00:37:51 +0100 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2016-11-09 13:47:32 +0100 |
commit | b059f926b80f9c5c085b069603a91aa7e3326ee0 (patch) | |
tree | 927ada6eba4faf18dd2789fe0090e5666368fb74 /qgroup-verify.c | |
parent | c6a0cb7d6d613795fe1ea4f8d01c27f2972f60d5 (diff) |
btrfs-progs: qgroup: use on-stack path buffer in repair_qgroup_info
We don't need to conserve stack space too much unlike kernel, also
remove one error condition.
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'qgroup-verify.c')
-rw-r--r-- | qgroup-verify.c | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/qgroup-verify.c b/qgroup-verify.c index 9a56f597..f5760dec 100644 --- a/qgroup-verify.c +++ b/qgroup-verify.c @@ -1479,27 +1479,22 @@ static int repair_qgroup_info(struct btrfs_fs_info *info, int ret; struct btrfs_root *root = info->quota_root; struct btrfs_trans_handle *trans; - struct btrfs_path *path; + struct btrfs_path path; 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)); - path = btrfs_alloc_path(); - if (!path) - return -ENOMEM; - trans = btrfs_start_transaction(root, 1); - if (IS_ERR(trans)) { - btrfs_free_path(path); + if (IS_ERR(trans)) return PTR_ERR(trans); - } + btrfs_init_path(&path); key.objectid = 0; key.type = BTRFS_QGROUP_INFO_KEY; key.offset = count->qgroupid; - ret = btrfs_search_slot(trans, root, &key, path, 0, 1); + ret = btrfs_search_slot(trans, root, &key, &path, 0, 1); if (ret) { error("Could not find disk item for qgroup %llu/%llu.\n", btrfs_qgroup_level(count->qgroupid), @@ -1509,27 +1504,27 @@ static int repair_qgroup_info(struct btrfs_fs_info *info, goto out; } - info_item = btrfs_item_ptr(path->nodes[0], path->slots[0], + info_item = btrfs_item_ptr(path.nodes[0], path.slots[0], struct btrfs_qgroup_info_item); - btrfs_set_qgroup_info_generation(path->nodes[0], info_item, + btrfs_set_qgroup_info_generation(path.nodes[0], info_item, trans->transid); - btrfs_set_qgroup_info_referenced(path->nodes[0], info_item, + btrfs_set_qgroup_info_referenced(path.nodes[0], info_item, count->info.referenced); - btrfs_set_qgroup_info_referenced_compressed(path->nodes[0], info_item, + btrfs_set_qgroup_info_referenced_compressed(path.nodes[0], info_item, count->info.referenced_compressed); - btrfs_set_qgroup_info_exclusive(path->nodes[0], info_item, + btrfs_set_qgroup_info_exclusive(path.nodes[0], info_item, count->info.exclusive); - btrfs_set_qgroup_info_exclusive_compressed(path->nodes[0], info_item, + btrfs_set_qgroup_info_exclusive_compressed(path.nodes[0], info_item, count->info.exclusive_compressed); - btrfs_mark_buffer_dirty(path->nodes[0]); + btrfs_mark_buffer_dirty(path.nodes[0]); out: btrfs_commit_transaction(trans, root); - btrfs_free_path(path); + btrfs_release_path(&path); return ret; } |