From 64e9dbf550026ca1c2a001c67beb490016113e84 Mon Sep 17 00:00:00 2001 From: David Sterba Date: Thu, 3 Nov 2016 00:37:51 +0100 Subject: [PATCH] btrfs-progs: qgroup: use on-stack path buffer in repair_qgroup_status We don't need to conserve stack space too much unlike kernel, also remove one error condition. Signed-off-by: David Sterba --- qgroup-verify.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/qgroup-verify.c b/qgroup-verify.c index f5760dec..aa575fb6 100644 --- a/qgroup-verify.c +++ b/qgroup-verify.c @@ -1534,26 +1534,21 @@ static int repair_qgroup_status(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_key key; struct btrfs_qgroup_status_item *status_item; printf("Repair qgroup status item\n"); - 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_STATUS_KEY; key.offset = 0; - 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 qgroup status item\n"); if (ret > 0) @@ -1561,19 +1556,19 @@ static int repair_qgroup_status(struct btrfs_fs_info *info) goto out; } - status_item = btrfs_item_ptr(path->nodes[0], path->slots[0], + status_item = btrfs_item_ptr(path.nodes[0], path.slots[0], struct btrfs_qgroup_status_item); - btrfs_set_qgroup_status_flags(path->nodes[0], status_item, + btrfs_set_qgroup_status_flags(path.nodes[0], status_item, BTRFS_QGROUP_STATUS_FLAG_ON); - btrfs_set_qgroup_status_rescan(path->nodes[0], status_item, 0); - btrfs_set_qgroup_status_generation(path->nodes[0], status_item, + btrfs_set_qgroup_status_rescan(path.nodes[0], status_item, 0); + btrfs_set_qgroup_status_generation(path.nodes[0], status_item, trans->transid); - 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; }