Skip site navigation (1)Skip section navigation (2)
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>