Commit 1301e421 authored by Trond Myklebust's avatar Trond Myklebust

NFSv4: link must update the inode nlink.

Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent 82eae5a4
...@@ -1711,7 +1711,7 @@ static void nfs_drop_nlink(struct inode *inode) ...@@ -1711,7 +1711,7 @@ static void nfs_drop_nlink(struct inode *inode)
NFS_I(inode)->attr_gencount = nfs_inc_attr_generation_counter(); NFS_I(inode)->attr_gencount = nfs_inc_attr_generation_counter();
nfs_set_cache_invalid( nfs_set_cache_invalid(
inode, NFS_INO_INVALID_CHANGE | NFS_INO_INVALID_CTIME | inode, NFS_INO_INVALID_CHANGE | NFS_INO_INVALID_CTIME |
NFS_INO_INVALID_NLINK | NFS_INO_REVAL_FORCED); NFS_INO_INVALID_NLINK);
spin_unlock(&inode->i_lock); spin_unlock(&inode->i_lock);
} }
......
...@@ -1175,6 +1175,14 @@ nfs4_inc_nlink_locked(struct inode *inode) ...@@ -1175,6 +1175,14 @@ nfs4_inc_nlink_locked(struct inode *inode)
inc_nlink(inode); inc_nlink(inode);
} }
static void
nfs4_inc_nlink(struct inode *inode)
{
spin_lock(&inode->i_lock);
nfs4_inc_nlink_locked(inode);
spin_unlock(&inode->i_lock);
}
static void static void
nfs4_dec_nlink_locked(struct inode *inode) nfs4_dec_nlink_locked(struct inode *inode)
{ {
...@@ -4791,6 +4799,7 @@ static int _nfs4_proc_link(struct inode *inode, struct inode *dir, const struct ...@@ -4791,6 +4799,7 @@ static int _nfs4_proc_link(struct inode *inode, struct inode *dir, const struct
if (!status) { if (!status) {
nfs4_update_changeattr(dir, &res.cinfo, res.fattr->time_start, nfs4_update_changeattr(dir, &res.cinfo, res.fattr->time_start,
NFS_INO_INVALID_DATA); NFS_INO_INVALID_DATA);
nfs4_inc_nlink(inode);
status = nfs_post_op_update_inode(inode, res.fattr); status = nfs_post_op_update_inode(inode, res.fattr);
if (!status) if (!status)
nfs_setsecurity(inode, res.fattr, res.label); nfs_setsecurity(inode, res.fattr, res.label);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment