From: Miao Xie Date: Wed, 13 Apr 2011 05:19:21 +0000 (+0800) Subject: Btrfs: Fix incorrect inode nlink in btrfs_link() X-Git-Tag: v3.0~816^2~18 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3153495d8ed6a9bb9f00aea42c18dc488a885dd6;p=platform%2Fkernel%2Flinux-amlogic.git 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 Singed-off-by: Li Zefan --- diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index b9f7f52..a4157cf 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);