Commit 6e137ed3 authored by Josef Bacik's avatar Josef Bacik

Btrfs: fix space accounting for unlink and rename

We are way over-reserving for unlink and rename.  Rename is just some random
huge number and unlink accounts for tree log operations that don't actually
happen during unlink, not to mention the tree log doesn't take from the trans
block rsv anyway so it's completely useless.  Thanks,
Signed-off-by: default avatarJosef Bacik <jbacik@fusionio.com>
parent f4881bc7
...@@ -3693,11 +3693,9 @@ static struct btrfs_trans_handle *__unlink_start_trans(struct inode *dir, ...@@ -3693,11 +3693,9 @@ static struct btrfs_trans_handle *__unlink_start_trans(struct inode *dir,
* 1 for the dir item * 1 for the dir item
* 1 for the dir index * 1 for the dir index
* 1 for the inode ref * 1 for the inode ref
* 1 for the inode ref in the tree log
* 2 for the dir entries in the log
* 1 for the inode * 1 for the inode
*/ */
trans = btrfs_start_transaction(root, 8); trans = btrfs_start_transaction(root, 5);
if (!IS_ERR(trans) || PTR_ERR(trans) != -ENOSPC) if (!IS_ERR(trans) || PTR_ERR(trans) != -ENOSPC)
return trans; return trans;
...@@ -8141,7 +8139,7 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry, ...@@ -8141,7 +8139,7 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry,
* inodes. So 5 * 2 is 10, plus 1 for the new link, so 11 total items * inodes. So 5 * 2 is 10, plus 1 for the new link, so 11 total items
* should cover the worst case number of items we'll modify. * should cover the worst case number of items we'll modify.
*/ */
trans = btrfs_start_transaction(root, 20); trans = btrfs_start_transaction(root, 11);
if (IS_ERR(trans)) { if (IS_ERR(trans)) {
ret = PTR_ERR(trans); ret = PTR_ERR(trans);
goto out_notrans; goto out_notrans;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment