svn commit: r275055 - in user/marcel/libvdsk: bhyve bhyveload libvdsk
Marcel Moolenaar
marcel at FreeBSD.org
Tue Nov 25 17:07:58 UTC 2014
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);
More information about the svn-src-user
mailing list