示例#1
0
文件: zpl_file.c 项目: Alyseo/zfs
inline ssize_t
zpl_read_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_read_common_iovec(ip, &iov, len, 1, ppos, segment,
	    flags, cr, 0));
}
示例#2
0
文件: zpl_file.c 项目: Alyseo/zfs
static ssize_t
zpl_iter_read_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 read;

	crhold(cr);
	read = zpl_read_common_iovec(filp->f_mapping->host, iovp, count,
	    nr_segs, &kiocb->ki_pos, seg, filp->f_flags, cr, skip);
	crfree(cr);

	return (read);
}
示例#3
0
文件: zpl_file.c 项目: avg-I/zfs
static ssize_t
zpl_iter_read_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 read;
	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);
	read = zpl_read_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 (read);
}