If the effective link count is zero when an NFS file handle request
comes in for it, the file is really gone, so return ESTALE. The problem arises when the last reference to an FFS file is released because soft-updates may delay the actual freeing of the inode for some time. Since there are no filesystem links or open file descriptors referencing the inode, from the point of view of the system, the file is inaccessible. However, if the filesystem is NFS exported, then the remote client can still access the inode via ufs_fhtovp() until the inode really goes away. To prevent this anomoly, it is necessary to begin returning ESTALE at the same time that the file ceases to be accessible to the local filesystem. Obtained from: Ian Dowse <iedowse@maths.tcd.ie>
This commit is contained in:
parent
b33c45cf02
commit
219378e954
@ -205,7 +205,9 @@ ufs_fhtovp(mp, ufhp, vpp)
|
||||
return (error);
|
||||
}
|
||||
ip = VTOI(nvp);
|
||||
if (ip->i_mode == 0 || ip->i_gen != ufhp->ufid_gen) {
|
||||
if (ip->i_mode == 0 ||
|
||||
ip->i_gen != ufhp->ufid_gen ||
|
||||
ip->i_effnlink <= 0) {
|
||||
vput(nvp);
|
||||
*vpp = NULLVP;
|
||||
return (ESTALE);
|
||||
|
Loading…
Reference in New Issue
Block a user