Date: Tue, 25 Nov 2014 17:07:56 +0000 (UTC) From: Marcel Moolenaar <marcel@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r275055 - in user/marcel/libvdsk: bhyve bhyveload libvdsk Message-ID: <201411251707.sAPH7u2b067854@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: marcel Date: Tue Nov 25 17:07:56 2014 New Revision: 275055 URL: https://svnweb.freebsd.org/changeset/base/275055 Log: Change the prototypes of vdsk_readv() and vdsk_writev() so that they don't return the amount read or written with -1 indicating an error, but rather just return the error. We don't support partial reads or partial writes, so trying to be like the quirky POSIX interface is just quirky. Rename the functions by dropping the v suffix. We're less like preadv and pwritev now than before and we don't have the non-iovec variants to distinguish from. Modified: user/marcel/libvdsk/bhyve/block_if.c user/marcel/libvdsk/bhyve/pci_virtio_block.c user/marcel/libvdsk/bhyveload/bhyveload.c user/marcel/libvdsk/libvdsk/vdsk.c user/marcel/libvdsk/libvdsk/vdsk.h Modified: user/marcel/libvdsk/bhyve/block_if.c ============================================================================== --- user/marcel/libvdsk/bhyve/block_if.c Tue Nov 25 16:57:27 2014 (r275054) +++ user/marcel/libvdsk/bhyve/block_if.c Tue Nov 25 17:07:56 2014 (r275055) @@ -172,14 +172,10 @@ blockif_proc(struct blockif_ctxt *bc, st switch (be->be_op) { case BOP_READ: - if (vdsk_readv(bc, br->br_iov, br->br_iovcnt, - br->br_offset) < 0) - err = errno; + err = vdsk_read(bc, br->br_iov, br->br_iovcnt, br->br_offset); break; case BOP_WRITE: - if (vdsk_writev(bc, br->br_iov, br->br_iovcnt, - br->br_offset) < 0) - err = errno; + err = vdsk_write(bc, br->br_iov, br->br_iovcnt, br->br_offset); break; case BOP_FLUSH: err = vdsk_flush(bc); Modified: user/marcel/libvdsk/bhyve/pci_virtio_block.c ============================================================================== --- user/marcel/libvdsk/bhyve/pci_virtio_block.c Tue Nov 25 16:57:27 2014 (r275054) +++ user/marcel/libvdsk/bhyve/pci_virtio_block.c Tue Nov 25 17:07:56 2014 (r275055) @@ -208,12 +208,10 @@ pci_vtblk_proc(struct pci_vtblk_softc *s switch (type) { case VBH_OP_WRITE: - if (vdsk_writev(sc, iov + 1, i - 1, offset) == -1) - err = errno; + err = vdsk_write(sc, iov + 1, i - 1, offset); break; case VBH_OP_READ: - if (vdsk_readv(sc, iov + 1, i - 1, offset) == -1) - err = errno; + err = vdsk_read(sc, iov + 1, i - 1, offset); break; case VBH_OP_IDENT: /* Assume a single buffer */ Modified: user/marcel/libvdsk/bhyveload/bhyveload.c ============================================================================== --- user/marcel/libvdsk/bhyveload/bhyveload.c Tue Nov 25 16:57:27 2014 (r275054) +++ user/marcel/libvdsk/bhyveload/bhyveload.c Tue Nov 25 17:07:56 2014 (r275055) @@ -289,18 +289,18 @@ cb_diskread(void *arg, int unit, uint64_ size_t *resid) { struct iovec iov; - ssize_t n; + int error; if (unit < 0 || unit >= ndisks) return (EIO); iov.iov_base = to; iov.iov_len = size; - n = vdsk_readv(disk[unit], &iov, 1, from); - if (n < 0) - return (errno); - *resid = size - n; - return (0); + error = vdsk_read(disk[unit], &iov, 1, from); + if (!error) + *resid = 0; + + return (error); } static int Modified: user/marcel/libvdsk/libvdsk/vdsk.c ============================================================================== --- user/marcel/libvdsk/libvdsk/vdsk.c Tue Nov 25 16:57:27 2014 (r275054) +++ user/marcel/libvdsk/libvdsk/vdsk.c Tue Nov 25 17:07:56 2014 (r275055) @@ -142,24 +142,24 @@ vdsk_sectorsize(vdskctx ctx) return (vdsk->sectorsize); } -ssize_t -vdsk_readv(vdskctx ctx, const struct iovec *iov, int iovcnt, off_t offset) +int +vdsk_read(vdskctx ctx, const struct iovec *iov, int iovcnt, off_t offset) { struct vdsk *vdsk = vdsk_deref(ctx); ssize_t res; res = preadv(vdsk->fd, iov, iovcnt, offset); - return (res); + return ((res == -1) ? errno : 0); } -ssize_t -vdsk_writev(vdskctx ctx, const struct iovec *iov, int iovcnt, off_t offset) +int +vdsk_write(vdskctx ctx, const struct iovec *iov, int iovcnt, off_t offset) { struct vdsk *vdsk = vdsk_deref(ctx); ssize_t res; res = pwritev(vdsk->fd, iov, iovcnt, offset); - return (res); + return ((res == -1) ? errno : 0); } int Modified: user/marcel/libvdsk/libvdsk/vdsk.h ============================================================================== --- user/marcel/libvdsk/libvdsk/vdsk.h Tue Nov 25 16:57:27 2014 (r275054) +++ user/marcel/libvdsk/libvdsk/vdsk.h Tue Nov 25 17:07:56 2014 (r275055) @@ -41,8 +41,8 @@ int vdsk_close(vdskctx); off_t vdsk_capacity(vdskctx); int vdsk_sectorsize(vdskctx); -ssize_t vdsk_readv(vdskctx, const struct iovec *, int, off_t); -ssize_t vdsk_writev(vdskctx, const struct iovec *, int, off_t); +int vdsk_read(vdskctx, const struct iovec *, int, off_t); +int vdsk_write(vdskctx, const struct iovec *, int, off_t); int vdsk_flush(vdskctx);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201411251707.sAPH7u2b067854>