From 5a749cd6621d23930a64cce049515be5a87b84e9 Mon Sep 17 00:00:00 2001 From: Liu Bo Date: Sun, 11 Sep 2011 10:52:24 -0400 Subject: [PATCH] --- yaml --- r: 263734 b: refs/heads/master c: 98c9942aca05fff198cd5ca629599cd193444809 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/btrfs/transaction.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index b03ce5d3cfba..a9565c4028ae 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 65450aa645b1ef7ed74e41c34b28d53333744978 +refs/heads/master: 98c9942aca05fff198cd5ca629599cd193444809 diff --git a/trunk/fs/btrfs/transaction.c b/trunk/fs/btrfs/transaction.c index 7dc36fab4afc..e24b7964a155 100644 --- a/trunk/fs/btrfs/transaction.c +++ b/trunk/fs/btrfs/transaction.c @@ -884,6 +884,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans, struct btrfs_root *tree_root = fs_info->tree_root; struct btrfs_root *root = pending->root; struct btrfs_root *parent_root; + struct btrfs_block_rsv *rsv; struct inode *parent_inode; struct dentry *parent; struct dentry *dentry; @@ -895,6 +896,8 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans, u64 objectid; u64 root_flags; + rsv = trans->block_rsv; + new_root_item = kmalloc(sizeof(*new_root_item), GFP_NOFS); if (!new_root_item) { pending->error = -ENOMEM; @@ -1002,6 +1005,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans, btrfs_orphan_post_snapshot(trans, pending); fail: kfree(new_root_item); + trans->block_rsv = rsv; btrfs_block_rsv_release(root, &pending->block_rsv, (u64)-1); return 0; }