When zfs.ko is compiled with debug, make sure that znode and vnode point at
each other. MFC after: 3 days
This commit is contained in:
parent
2dcef8ae2b
commit
e5e33d251a
@ -231,8 +231,27 @@ typedef struct znode {
|
||||
/*
|
||||
* Convert between znode pointers and vnode pointers
|
||||
*/
|
||||
#ifdef DEBUG
|
||||
static __inline vnode_t *
|
||||
ZTOV(znode_t *zp)
|
||||
{
|
||||
vnode_t *vp = zp->z_vnode;
|
||||
|
||||
ASSERT(vp == NULL || vp->v_data == NULL || vp->v_data == zp);
|
||||
return (vp);
|
||||
}
|
||||
static __inline znode_t *
|
||||
VTOZ(vnode_t *vp)
|
||||
{
|
||||
znode_t *zp = (znode_t *)vp->v_data;
|
||||
|
||||
ASSERT(zp == NULL || zp->z_vnode == NULL || zp->z_vnode == vp);
|
||||
return (zp);
|
||||
}
|
||||
#else
|
||||
#define ZTOV(ZP) ((ZP)->z_vnode)
|
||||
#define VTOZ(VP) ((znode_t *)(VP)->v_data)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* ZFS_ENTER() is called on entry to each ZFS vnode and vfs operation.
|
||||
|
@ -4382,7 +4382,7 @@ zfs_freebsd_reclaim(ap)
|
||||
|
||||
mutex_enter(&zp->z_lock);
|
||||
ASSERT(zp->z_phys != NULL);
|
||||
ZTOV(zp) = NULL;
|
||||
zp->z_vnode = NULL;
|
||||
mutex_exit(&zp->z_lock);
|
||||
|
||||
if (zp->z_unlinked)
|
||||
|
@ -110,7 +110,7 @@ znode_evict_error(dmu_buf_t *dbuf, void *user_ptr)
|
||||
mutex_exit(&zp->z_lock);
|
||||
zfs_znode_free(zp);
|
||||
} else if (vp->v_count == 0) {
|
||||
ZTOV(zp) = NULL;
|
||||
zp->z_vnode = NULL;
|
||||
vhold(vp);
|
||||
mutex_exit(&zp->z_lock);
|
||||
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, curthread);
|
||||
@ -1533,7 +1533,7 @@ zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx)
|
||||
ZTOV(rootzp)->v_data = NULL;
|
||||
ZTOV(rootzp)->v_count = 0;
|
||||
ZTOV(rootzp)->v_holdcnt = 0;
|
||||
ZTOV(rootzp) = NULL;
|
||||
rootzp->z_vnode = NULL;
|
||||
VOP_UNLOCK(vp, 0);
|
||||
vdestroy(vp);
|
||||
dmu_buf_rele(rootzp->z_dbuf, NULL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user