xuio
fop_reqzcbuf(vnode_t *vp, enum uio_rw ioflag, xuio_t *xuio, cred_t *cr,
uio_t *uio = &xuio->xu_uio;
if (xuio->xu_type != UIOTYPE_ZEROCOPY)
XUIO_XUZC_PRIV(xuio) = priv;
XUIO_XUZC_RW(xuio) = ioflag;
fop_retzcbuf(vnode_t *vp, xuio_t *xuio, cred_t *cr, caller_context_t *ct)
fake_xuio_t *priv = XUIO_XUZC_PRIV(xuio);
int ioflag = XUIO_XUZC_RW(xuio);
ASSERT(xuio->xu_type == UIOTYPE_ZEROCOPY);
XUIO_XUZC_PRIV(xuio) = NULL;
xuio_t *xuio = (xuio_t *)uio;
fake_xuio_t *priv = XUIO_XUZC_PRIV(xuio);
smb_fsop_reqzcbuf(smb_node_t *node, xuio_t *xuio, int ioflag, cred_t *cr)
return (smb_vop_reqzcbuf(node->vp, ioflag, xuio, cr));
smb_fsop_retzcbuf(smb_node_t *node, xuio_t *xuio, cred_t *cr)
return (smb_vop_retzcbuf(node->vp, xuio, cr));
smb_vop_reqzcbuf(vnode_t *vp, int ioflag, xuio_t *xuio, cred_t *cr)
error = VOP_REQZCBUF(vp, ioflag, xuio, cr, &smb_ct);
smb_vop_retzcbuf(vnode_t *vp, xuio_t *xuio, cred_t *cr)
error = VOP_RETZCBUF(vp, xuio, cr, &smb_ct);
dmu_xuio_init(xuio_t *xuio, int nblk)
uio_t *uio = &xuio->xu_uio;
XUIO_XUZC_PRIV(xuio) = priv;
if (XUIO_XUZC_RW(xuio) == UIO_READ)
dmu_xuio_fini(xuio_t *xuio)
dmu_xuio_t *priv = XUIO_XUZC_PRIV(xuio);
if (XUIO_XUZC_RW(xuio) == UIO_READ)
dmu_xuio_add(xuio_t *xuio, arc_buf_t *abuf, offset_t off, size_t n)
uio_t *uio = &xuio->xu_uio;
dmu_xuio_t *priv = XUIO_XUZC_PRIV(xuio);
dmu_xuio_cnt(xuio_t *xuio)
dmu_xuio_t *priv = XUIO_XUZC_PRIV(xuio);
dmu_xuio_arcbuf(xuio_t *xuio, int i)
dmu_xuio_t *priv = XUIO_XUZC_PRIV(xuio);
dmu_xuio_clear(xuio_t *xuio, int i)
dmu_xuio_t *priv = XUIO_XUZC_PRIV(xuio);
xuio_t *xuio = NULL;
xuio = (xuio_t *)uio;
if (xuio) {
err = dmu_xuio_add(xuio, abuf, bufoff, tocpy);
struct xuio;
int dmu_xuio_init(struct xuio *uio, int niov);
void dmu_xuio_fini(struct xuio *uio);
int dmu_xuio_add(struct xuio *uio, struct arc_buf *abuf, offset_t off,
int dmu_xuio_cnt(struct xuio *uio);
struct arc_buf *dmu_xuio_arcbuf(struct xuio *uio, int i);
void dmu_xuio_clear(struct xuio *uio, int i);
if (xuio) {
abuf = dmu_xuio_arcbuf(xuio, i_iov);
dmu_xuio_clear(xuio, i_iov);
ASSERT(xuio == NULL || tx_bytes == aiov->iov_len);
ASSERT(xuio);
ASSERT(xuio || tx_bytes == max_blksz);
if (!xuio && n > 0)
zfs_reqzcbuf(vnode_t *vp, enum uio_rw ioflag, xuio_t *xuio, cred_t *cr,
uio_t *uio = &xuio->xu_uio;
if (xuio->xu_type != UIOTYPE_ZEROCOPY)
(void) dmu_xuio_init(xuio,
(void) dmu_xuio_add(xuio, abuf,
(void) dmu_xuio_add(xuio, abuf, 0, blksz);
(void) dmu_xuio_add(xuio, abuf, 0, postamble);
XUIO_XUZC_RW(xuio) = ioflag;
zfs_retzcbuf(vnode_t *vp, xuio_t *xuio, cred_t *cr, caller_context_t *ct)
int ioflag = XUIO_XUZC_RW(xuio);
ASSERT(xuio->xu_type == UIOTYPE_ZEROCOPY);
if (XUIO_XUZC_PRIV(xuio) == NULL)
i = dmu_xuio_cnt(xuio);
abuf = dmu_xuio_arcbuf(xuio, i);
dmu_xuio_fini(xuio);
xuio_t *xuio = NULL;
xuio = (xuio_t *)uio;
(void) dmu_xuio_init(xuio, nblk);
(void) dmu_xuio_add(xuio,
xuio_t *xuio = NULL;
xuio = (xuio_t *)uio;
xuio_t *xuio, cred_t *cr, \
int (*femop_retzcbuf)(femarg_t *vf, xuio_t *xuio, cred_t *cr, \
#define XUIO_XUZC_PRIV(xuio) xuio->xu_ext.xu_zc.xu_zc_priv
#define XUIO_XUZC_RW(xuio) xuio->xu_ext.xu_zc.xu_zc_rw