inline ssize_t zpl_write_common(struct inode *ip, const char *buf, size_t len, loff_t *ppos, uio_seg_t segment, int flags, cred_t *cr) { struct iovec iov; iov.iov_base = (void *)buf; iov.iov_len = len; return (zpl_write_common_iovec(ip, &iov, len, 1, ppos, segment, flags, cr, 0)); }
static ssize_t zpl_iter_write_common(struct kiocb *kiocb, const struct iovec *iovp, unsigned long nr_segs, size_t count, uio_seg_t seg, size_t skip) { cred_t *cr = CRED(); struct file *filp = kiocb->ki_filp; ssize_t wrote; crhold(cr); wrote = zpl_write_common_iovec(filp->f_mapping->host, iovp, count, nr_segs, &kiocb->ki_pos, seg, filp->f_flags, cr, skip); crfree(cr); return (wrote); }
static ssize_t zpl_iter_write_common(struct kiocb *kiocb, const struct iovec *iovp, unsigned long nr_segs, size_t count) { cred_t *cr = CRED(); struct file *filp = kiocb->ki_filp; ssize_t wrote; size_t alloc_size = sizeof (struct iovec) * nr_segs; struct iovec *iov_tmp = kmem_alloc(alloc_size, KM_SLEEP); bcopy(iovp, iov_tmp, alloc_size); ASSERT(iovp); crhold(cr); wrote = zpl_write_common_iovec(filp->f_mapping->host, iov_tmp, count, nr_segs, &kiocb->ki_pos, UIO_USERSPACE, filp->f_flags, cr); crfree(cr); kmem_free(iov_tmp, alloc_size); return (wrote); }