From 0fdff8100c229e4c287deaf18a22776769f69fbb Mon Sep 17 00:00:00 2001 From: Josef Bacik Date: Fri, 14 Oct 2011 14:46:51 -0400 Subject: [PATCH] --- yaml --- r: 274652 b: refs/heads/master c: 3880a1b46d87a6b030c31889875befc745d95dff h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/btrfs/inode.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index f3ab09bff844..de3fa7ebb490 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b24e03db0df3e9164c9649db12fecc8c2d81b0d1 +refs/heads/master: 3880a1b46d87a6b030c31889875befc745d95dff diff --git a/trunk/fs/btrfs/inode.c b/trunk/fs/btrfs/inode.c index 1f013c5c36aa..b6b70bdd0992 100644 --- a/trunk/fs/btrfs/inode.c +++ b/trunk/fs/btrfs/inode.c @@ -2790,7 +2790,8 @@ static struct btrfs_trans_handle *__unlink_start_trans(struct inode *dir, return ERR_PTR(-ENOMEM); } - trans = btrfs_start_transaction(root, 0); + /* 1 for the orphan item */ + trans = btrfs_start_transaction(root, 1); if (IS_ERR(trans)) { btrfs_free_path(path); root->fs_info->enospc_unlink = 0; @@ -2895,6 +2896,12 @@ static struct btrfs_trans_handle *__unlink_start_trans(struct inode *dir, err = 0; out: btrfs_free_path(path); + /* Migrate the orphan reservation over */ + if (!err) + err = btrfs_block_rsv_migrate(trans->block_rsv, + &root->fs_info->global_block_rsv, + btrfs_calc_trans_metadata_size(root, 1)); + if (err) { btrfs_end_transaction(trans, root); root->fs_info->enospc_unlink = 0;