Changeset View
Changeset View
Standalone View
Standalone View
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
Show First 20 Lines • Show All 638 Lines • ▼ Show 20 Lines | zfs_znode_alloc(zfsvfs_t *zfsvfs, dmu_buf_t *db, int blksz, | ||||
uint64_t mode; | uint64_t mode; | ||||
uint64_t parent; | uint64_t parent; | ||||
sa_bulk_attr_t bulk[9]; | sa_bulk_attr_t bulk[9]; | ||||
int count = 0; | int count = 0; | ||||
int error; | int error; | ||||
zp = kmem_cache_alloc(znode_cache, KM_SLEEP); | zp = kmem_cache_alloc(znode_cache, KM_SLEEP); | ||||
KASSERT(curthread->td_vp_reserv > 0, | KASSERT(curthread->td_vp_reserved != NULL, | ||||
("zfs_znode_alloc: getnewvnode without any vnodes reserved")); | ("zfs_znode_alloc: getnewvnode without any vnodes reserved")); | ||||
error = getnewvnode("zfs", zfsvfs->z_parent->z_vfs, &zfs_vnodeops, &vp); | error = getnewvnode("zfs", zfsvfs->z_parent->z_vfs, &zfs_vnodeops, &vp); | ||||
if (error != 0) { | if (error != 0) { | ||||
kmem_cache_free(znode_cache, zp); | kmem_cache_free(znode_cache, zp); | ||||
return (NULL); | return (NULL); | ||||
} | } | ||||
zp->z_vnode = vp; | zp->z_vnode = vp; | ||||
vp->v_data = zp; | vp->v_data = zp; | ||||
▲ Show 20 Lines • Show All 496 Lines • ▼ Show 20 Lines | zfs_zget(zfsvfs_t *zfsvfs, uint64_t obj_num, znode_t **zpp) | ||||
znode_t *zp; | znode_t *zp; | ||||
vnode_t *vp; | vnode_t *vp; | ||||
sa_handle_t *hdl; | sa_handle_t *hdl; | ||||
struct thread *td; | struct thread *td; | ||||
int locked; | int locked; | ||||
int err; | int err; | ||||
td = curthread; | td = curthread; | ||||
getnewvnode_reserve(1); | getnewvnode_reserve(); | ||||
again: | again: | ||||
*zpp = NULL; | *zpp = NULL; | ||||
ZFS_OBJ_HOLD_ENTER(zfsvfs, obj_num); | ZFS_OBJ_HOLD_ENTER(zfsvfs, obj_num); | ||||
err = sa_buf_hold(zfsvfs->z_os, obj_num, NULL, &db); | err = sa_buf_hold(zfsvfs->z_os, obj_num, NULL, &db); | ||||
if (err) { | if (err) { | ||||
ZFS_OBJ_HOLD_EXIT(zfsvfs, obj_num); | ZFS_OBJ_HOLD_EXIT(zfsvfs, obj_num); | ||||
getnewvnode_drop_reserve(); | getnewvnode_drop_reserve(); | ||||
▲ Show 20 Lines • Show All 1,140 Lines • Show Last 20 Lines |