Exemplo n.º 1
0
/*
 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
}
Exemplo n.º 2
0
/*
 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
}
Exemplo n.º 3
0
/*
 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);
}
Exemplo n.º 4
0
/*
 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);
}
Exemplo n.º 5
0
/*
 *  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);
}
Exemplo n.º 6
0
/*
 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);
}
Exemplo n.º 7
0
/*
 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);
}
Exemplo n.º 8
0
/*
 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);
}