diff options
Diffstat (limited to 'fs/btrfs/tree-log.c')
| -rw-r--r-- | fs/btrfs/tree-log.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index dcf75a8daa20..9205c4a5ca81 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -1146,7 +1146,9 @@ again:  	extref = btrfs_lookup_inode_extref(NULL, root, path, name, namelen,  					   inode_objectid, parent_objectid, 0,  					   0); -	if (!IS_ERR_OR_NULL(extref)) { +	if (IS_ERR(extref)) { +		return PTR_ERR(extref); +	} else if (extref) {  		u32 item_size;  		u32 cur_offset = 0;  		unsigned long base; @@ -1457,7 +1459,7 @@ static int add_link(struct btrfs_trans_handle *trans,  	 * on the inode will not free it. We will fixup the link count later.  	 */  	if (other_inode->i_nlink == 0) -		inc_nlink(other_inode); +		set_nlink(other_inode, 1);  add_link:  	ret = btrfs_add_link(trans, BTRFS_I(dir), BTRFS_I(inode),  			     name, namelen, 0, ref_index); @@ -1600,7 +1602,7 @@ static noinline int add_inode_ref(struct btrfs_trans_handle *trans,  				 * free it. We will fixup the link count later.  				 */  				if (!ret && inode->i_nlink == 0) -					inc_nlink(inode); +					set_nlink(inode, 1);  			}  			if (ret < 0)  				goto out;  | 
