diff options
author | Miao Xie <miaox@cn.fujitsu.com> | 2011-02-18 04:21:17 -0500 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2011-03-10 11:21:49 -0500 |
commit | 7e6b6465e6efbca3985258996be9c189da96c8bf (patch) | |
tree | d4cde91d45865effa20fca9a789813321808c129 /fs/btrfs | |
parent | b4966b7770349deb05e3dd2bd2c65d2d044abbbb (diff) |
btrfs: fix not enough reserved space
btrfs_link() will insert 3 items(inode ref, dir name item and dir index item)
into the b+ tree and update 2 items(its inode, and parent's inode) in the b+
tree. So we should reserve space for these 5 items, not 3 items.
Reported-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs')
-rw-r--r-- | fs/btrfs/inode.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index e7a8303328b2..db67821ccac2 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -4823,10 +4823,11 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir, | |||
4823 | goto fail; | 4823 | goto fail; |
4824 | 4824 | ||
4825 | /* | 4825 | /* |
4826 | * 1 item for inode ref | 4826 | * 2 items for inode and inode ref |
4827 | * 2 items for dir items | 4827 | * 2 items for dir items |
4828 | * 1 item for parent inode | ||
4828 | */ | 4829 | */ |
4829 | trans = btrfs_start_transaction(root, 3); | 4830 | trans = btrfs_start_transaction(root, 5); |
4830 | if (IS_ERR(trans)) { | 4831 | if (IS_ERR(trans)) { |
4831 | err = PTR_ERR(trans); | 4832 | err = PTR_ERR(trans); |
4832 | goto fail; | 4833 | goto fail; |