diff options
author | Miao Xie <miaox@cn.fujitsu.com> | 2013-02-28 05:04:33 -0500 |
---|---|---|
committer | Josef Bacik <jbacik@fusionio.com> | 2013-02-28 13:33:54 -0500 |
commit | d5c1207017cd8387b4d3224dd7ab6cf5cd7f1c9a (patch) | |
tree | 7208d1c89aa625fa6eb349fdafa2e49a00bbe078 /fs/btrfs/transaction.c | |
parent | e9662f701c85ebc99f532bf8bb53208c0648846a (diff) |
Btrfs: fix wrong reserved space in qgroup during snap/subv creation
There are two problems in the space reservation of the snapshot/
subvolume creation.
- don't reserve the space for the root item insertion
- the space which is reserved in the qgroup is different with
the free space reservation. we need reserve free space for
7 items, but in qgroup reservation, we need reserve space only
for 3 items.
So we implement new metadata reservation functions for the
snapshot/subvolume creation.
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Diffstat (limited to 'fs/btrfs/transaction.c')
-rw-r--r-- | fs/btrfs/transaction.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index 71de435a291e..f11c2e0a3746 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c | |||
@@ -1082,7 +1082,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans, | |||
1082 | path = btrfs_alloc_path(); | 1082 | path = btrfs_alloc_path(); |
1083 | if (!path) { | 1083 | if (!path) { |
1084 | ret = pending->error = -ENOMEM; | 1084 | ret = pending->error = -ENOMEM; |
1085 | goto path_alloc_fail; | 1085 | return ret; |
1086 | } | 1086 | } |
1087 | 1087 | ||
1088 | new_root_item = kmalloc(sizeof(*new_root_item), GFP_NOFS); | 1088 | new_root_item = kmalloc(sizeof(*new_root_item), GFP_NOFS); |
@@ -1279,8 +1279,6 @@ no_free_objectid: | |||
1279 | kfree(new_root_item); | 1279 | kfree(new_root_item); |
1280 | root_item_alloc_fail: | 1280 | root_item_alloc_fail: |
1281 | btrfs_free_path(path); | 1281 | btrfs_free_path(path); |
1282 | path_alloc_fail: | ||
1283 | btrfs_block_rsv_release(root, &pending->block_rsv, (u64)-1); | ||
1284 | return ret; | 1282 | return ret; |
1285 | } | 1283 | } |
1286 | 1284 | ||