summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/disk-io.c
diff options
context:
space:
mode:
authorMiao Xie <miaox@cn.fujitsu.com>2012-06-14 10:23:22 +0200
committerChris Mason <chris.mason@fusionio.com>2012-06-15 17:42:28 +0200
commit67cde3448d951b55088a6ea3bb1aee0160068fb9 (patch)
tree762aa0d1a09f8ea58f7a861b32b67c71ae5a8df1 /fs/btrfs/disk-io.c
parentBtrfs: make sure that we've made everything in pinned tree clean (diff)
downloadlinux-67cde3448d951b55088a6ea3bb1aee0160068fb9.tar.xz
linux-67cde3448d951b55088a6ea3bb1aee0160068fb9.zip
Btrfs: destroy the items of the delayed inodes in error handling routine
the items of the delayed inodes were forgotten to be freed, this patch fixes it. Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to '')
-rw-r--r--fs/btrfs/disk-io.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index ffdd76bf05d4..e22c5bbf0223 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -3608,6 +3608,9 @@ void btrfs_cleanup_one_transaction(struct btrfs_transaction *cur_trans,
cur_trans->commit_done = 1;
wake_up(&cur_trans->commit_wait);
+ btrfs_destroy_delayed_inodes(root);
+ btrfs_assert_delayed_root_empty(root);
+
btrfs_destroy_pending_snapshots(cur_trans);
btrfs_destroy_marked_extents(root, &cur_trans->dirty_pages,
@@ -3662,6 +3665,9 @@ int btrfs_cleanup_transaction(struct btrfs_root *root)
if (waitqueue_active(&t->commit_wait))
wake_up(&t->commit_wait);
+ btrfs_destroy_delayed_inodes(root);
+ btrfs_assert_delayed_root_empty(root);
+
btrfs_destroy_pending_snapshots(t);
btrfs_destroy_delalloc_inodes(root);