summaryrefslogtreecommitdiff
path: root/fs/btrfs
diff options
context:
space:
mode:
authorMiao Xie <miaox@cn.fujitsu.com>2011-04-13 13:19:21 +0800
committerLi Zefan <lizf@cn.fujitsu.com>2011-04-13 14:25:32 +0800
commit3153495d8ed6a9bb9f00aea42c18dc488a885dd6 (patch)
treeee1b57cff9be737fee9d4e35290e3c6586785de8 /fs/btrfs
parentb9e03af0bcc11310f6be4a3951c9ee2c26465011 (diff)
downloadlwn-3153495d8ed6a9bb9f00aea42c18dc488a885dd6.tar.gz
lwn-3153495d8ed6a9bb9f00aea42c18dc488a885dd6.zip
Btrfs: Fix incorrect inode nlink in btrfs_link()
Link count of the inode is not decreased if btrfs_set_inode_index() fails. Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> Singed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Diffstat (limited to 'fs/btrfs')
-rw-r--r--fs/btrfs/inode.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index b9f7f5258343..a4157cfdd533 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -4846,9 +4846,6 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir,
if (inode->i_nlink == ~0U)
return -EMLINK;
- btrfs_inc_nlink(inode);
- inode->i_ctime = CURRENT_TIME;
-
err = btrfs_set_inode_index(dir, &index);
if (err)
goto fail;
@@ -4864,6 +4861,9 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir,
goto fail;
}
+ btrfs_inc_nlink(inode);
+ inode->i_ctime = CURRENT_TIME;
+
btrfs_set_trans_block_group(trans, dir);
ihold(inode);