/*
* Do all our cleanup, and remove this vnode.
*/
- vp->v_flag |= VPURGE;
vn_remove(vp);
}
}
return NULL;
vn_trace_exit(vp, "vn_get", (inst_t *)__return_address);
- ASSERT((vp->v_flag & VPURGE) == 0);
return vp;
}
{
vn_trace_entry(vp, "vn_purge", (inst_t *)__return_address);
- ASSERT(vp->v_flag & VPURGE);
-
again:
/*
* Check whether vp has already been reclaimed since our caller
#define VFRLOCKS 0x8000000 /* vnode has FR locks applied */
#define VENF_LOCKING 0x10000000 /* enf. mode FR locking in effect */
#define VOPLOCK 0x20000000 /* oplock set on the vnode */
-#define VPURGE 0x40000000 /* In the linux 'put' thread */
typedef enum vrwlock { VRWLOCK_NONE, VRWLOCK_READ,
VRWLOCK_WRITE, VRWLOCK_WRITE_DIRECT,
* whether we reached the end or not.
*/
VMAP(vp, vmap);
- vp->v_flag |= VPURGE; /* OK for vn_purge */
XFS_MOUNT_IUNLOCK(mp);
vn_purge(vp, &vmap);
VMAP(rvp, vmap);
prdev("Root inode %llu is not a directory",
mp->m_dev, (unsigned long long)rip->i_ino);
- rvp->v_flag |= VPURGE;
xfs_iunlock(rip, XFS_ILOCK_EXCL);
VN_RELE(rvp);
vn_purge(rvp, &vmap);
(!quotaondisk ? "out quota" : ""),
(uquotaondisk ? " usrquota" : ""),
(gquotaondisk ? " grpquota" : ""));
- rvp->v_flag |= VPURGE;
VN_RELE(rvp);
vn_remove(rvp);
error = XFS_ERROR(EPERM);
* Free up the root inode.
*/
cmn_err(CE_WARN, "XFS: failed to read RT inodes");
- rvp->v_flag |= VPURGE;
VMAP(rvp, vmap);
VN_RELE(rvp);
vn_purge(rvp, &vmap);
* Drop the reference count, and then
* run the vnode through vn_remove.
*/
- rvp->v_flag |= VPURGE; /* OK for vn_purge */
VN_RELE(rvp);
vn_remove(rvp);