|
@@ -362,52 +362,6 @@ int gfs2_inode_refresh(struct gfs2_inode *ip)
|
|
|
return error;
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * gfs2_change_nlink - Change nlink count on inode
|
|
|
- * @ip: The GFS2 inode
|
|
|
- * @diff: The change in the nlink count required
|
|
|
- *
|
|
|
- * Returns: errno
|
|
|
- */
|
|
|
-int gfs2_change_nlink(struct gfs2_inode *ip, int diff)
|
|
|
-{
|
|
|
- struct buffer_head *dibh;
|
|
|
- u32 nlink;
|
|
|
- int error;
|
|
|
-
|
|
|
- BUG_ON(diff != 1 && diff != -1);
|
|
|
- nlink = ip->i_inode.i_nlink + diff;
|
|
|
-
|
|
|
- /* If we are reducing the nlink count, but the new value ends up being
|
|
|
- bigger than the old one, we must have underflowed. */
|
|
|
- if (diff < 0 && nlink > ip->i_inode.i_nlink) {
|
|
|
- if (gfs2_consist_inode(ip))
|
|
|
- gfs2_dinode_print(ip);
|
|
|
- return -EIO;
|
|
|
- }
|
|
|
-
|
|
|
- error = gfs2_meta_inode_buffer(ip, &dibh);
|
|
|
- if (error)
|
|
|
- return error;
|
|
|
-
|
|
|
- if (diff > 0)
|
|
|
- inc_nlink(&ip->i_inode);
|
|
|
- else
|
|
|
- drop_nlink(&ip->i_inode);
|
|
|
-
|
|
|
- ip->i_inode.i_ctime = CURRENT_TIME;
|
|
|
-
|
|
|
- gfs2_trans_add_bh(ip->i_gl, dibh, 1);
|
|
|
- gfs2_dinode_out(ip, dibh->b_data);
|
|
|
- brelse(dibh);
|
|
|
- mark_inode_dirty(&ip->i_inode);
|
|
|
-
|
|
|
- if (ip->i_inode.i_nlink == 0)
|
|
|
- gfs2_unlink_di(&ip->i_inode); /* mark inode unlinked */
|
|
|
-
|
|
|
- return error;
|
|
|
-}
|
|
|
-
|
|
|
struct inode *gfs2_lookup_simple(struct inode *dip, const char *name)
|
|
|
{
|
|
|
struct qstr qstr;
|
|
@@ -723,7 +677,7 @@ static int link_dinode(struct gfs2_inode *dip, const struct qstr *name,
|
|
|
goto fail_quota_locks;
|
|
|
}
|
|
|
|
|
|
- error = gfs2_dir_add(&dip->i_inode, name, ip, IF2DT(ip->i_inode.i_mode));
|
|
|
+ error = gfs2_dir_add(&dip->i_inode, name, ip);
|
|
|
if (error)
|
|
|
goto fail_end_trans;
|
|
|
|