NFSv4: link must update the inode nlink.
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
parent
82eae5a432
commit
1301e421b7
|
@ -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)
|
||||||
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
|
||||||
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);
|
||||||
|
|
Loading…
Reference in New Issue