/* struct vnop_strategy_args { struct vnodeop_desc *a_desc; struct buf *a_bp; }; */ FUSE_VNOP_EXPORT int fuse_biglock_vnop_strategy(struct vnop_strategy_args *ap) { #if 1 /* Now trying out a locked version of strategy. We need to hold a lock * as the underlying layers expect it. */ locked_vnop(buf_vnode(ap->a_bp), fuse_vnop_strategy, ap); #else /* VNOP_STRATEGY in kpi_vfs.c is completely unprotected. This seems very * dangerous, but I don't want to do anything that kpi_vfs.c doesn't do * without being able to motivate why. */ return fuse_vnop_strategy(ap); #endif }
/* struct vnop_strategy_args { struct vnodeop_desc *a_desc; struct buf *a_bp; }; */ FUSE_VNOP_EXPORT int fuse_biglock_vnop_strategy(struct vnop_strategy_args *ap) { #if 1 /* Now trying out a locked version of strategy. We need to hold a lock * as the underlying layers expect it. */ locked_vnop(buf_vnode(ap->a_bp), fuse_vnop_strategy, ap); #else /* WARNING: nodelock and biglock are released and reacquired in * fuse_internal_strategy. Calling fuse_vnop_strategy directly * will result in a kernel panic! */ /* VNOP_STRATEGY in kpi_vfs.c is completely unprotected. This seems very * dangerous, but I don't want to do anything that kpi_vfs.c doesn't do * without being able to motivate why. */ return fuse_vnop_strategy(ap); #endif }
/* struct vnop_blockmap_args { struct vnodeop_desc *a_desc; vnode_t a_vp; off_t a_foffset; size_t a_size; daddr64_t *a_bpn; size_t *a_run; void *a_poff; int a_flags; vfs_context_t a_context; }; */ FUSE_VNOP_EXPORT int fuse_biglock_vnop_blockmap(struct vnop_blockmap_args *ap) { locked_vnop(ap->a_vp, fuse_vnop_blockmap, ap); }
/* struct vnop_blktooff_args { struct vnodeop_desc *a_desc; vnode_t a_vp; daddr64_t a_lblkno; off_t *a_offset; }; */ FUSE_VNOP_EXPORT int fuse_biglock_vnop_blktooff(struct vnop_blktooff_args *ap) { locked_vnop(ap->a_vp, fuse_vnop_blktooff, ap); }
/* * struct vnop_revoke_args { * struct vnodeop_desc *a_desc; * vnode_t a_vp; * int a_flags; * vfs_context_t a_context; * }; */ FUSE_VNOP_EXPORT int fuse_biglock_vnop_revoke(struct vnop_revoke_args *ap) { locked_vnop(ap->a_vp, fuse_vnop_revoke, ap); }
/* struct vnop_reclaim_args { struct vnodeop_desc *a_desc; vnode_t a_vp; vfs_context_t a_context; }; */ FUSE_VNOP_EXPORT int fuse_biglock_vnop_reclaim(struct vnop_reclaim_args *ap) { locked_vnop(ap->a_vp, fuse_vnop_reclaim, ap); }
/* struct vnop_pageout_args { struct vnodeop_desc *a_desc; vnode_t a_vp; upl_t a_pl; vm_offset_t a_pl_offset; off_t a_f_offset; size_t a_size; int a_flags; vfs_context_t a_context; }; */ FUSE_VNOP_EXPORT int fuse_biglock_vnop_pageout(struct vnop_pageout_args *ap) { locked_vnop(ap->a_vp, fuse_vnop_pageout, ap); }
/* struct vnop_offtoblk_args { struct vnodeop_desc *a_desc; vnode_t a_vp; off_t a_offset; daddr64_t *a_lblkno; }; */ FUSE_VNOP_EXPORT int fuse_biglock_vnop_offtoblk(struct vnop_offtoblk_args *ap) { locked_vnop(ap->a_vp, fuse_vnop_offtoblk, ap); }