svn commit: r280749 - stable/10/usr.sbin/bhyve

Alexander Motin mav at FreeBSD.org
Fri Mar 27 08:58:31 UTC 2015


Author: mav
Date: Fri Mar 27 08:58:30 2015
New Revision: 280749
URL: https://svnweb.freebsd.org/changeset/base/280749

Log:
  MFC r280133: Increase S/G list size of 32 to 33 entries.
  
  32 entries are not enough for the worst case of misaligned 128KB request,
  that made FreeBSD to chunk large quests in odd pieces.

Modified:
  stable/10/usr.sbin/bhyve/block_if.h
  stable/10/usr.sbin/bhyve/pci_virtio_block.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/usr.sbin/bhyve/block_if.h
==============================================================================
--- stable/10/usr.sbin/bhyve/block_if.h	Fri Mar 27 08:57:38 2015	(r280748)
+++ stable/10/usr.sbin/bhyve/block_if.h	Fri Mar 27 08:58:30 2015	(r280749)
@@ -39,7 +39,7 @@
 #include <sys/uio.h>
 #include <sys/unistd.h>
 
-#define BLOCKIF_IOV_MAX		32	/* not practical to be IOV_MAX */
+#define BLOCKIF_IOV_MAX		33	/* not practical to be IOV_MAX */
 
 struct blockif_req {
 	struct iovec	br_iov[BLOCKIF_IOV_MAX];

Modified: stable/10/usr.sbin/bhyve/pci_virtio_block.c
==============================================================================
--- stable/10/usr.sbin/bhyve/pci_virtio_block.c	Fri Mar 27 08:57:38 2015	(r280748)
+++ stable/10/usr.sbin/bhyve/pci_virtio_block.c	Fri Mar 27 08:58:30 2015	(r280749)
@@ -55,8 +55,6 @@ __FBSDID("$FreeBSD$");
 
 #define VTBLK_RINGSZ	64
 
-#define VTBLK_MAXSEGS	32
-
 #define VTBLK_S_OK	0
 #define VTBLK_S_IOERR	1
 #define	VTBLK_S_UNSUPP	2
@@ -201,10 +199,10 @@ pci_vtblk_proc(struct pci_vtblk_softc *s
 	int iolen;
 	int writeop, type;
 	off_t offset;
-	struct iovec iov[VTBLK_MAXSEGS + 2];
-	uint16_t idx, flags[VTBLK_MAXSEGS + 2];
+	struct iovec iov[BLOCKIF_IOV_MAX + 2];
+	uint16_t idx, flags[BLOCKIF_IOV_MAX + 2];
 
-	n = vq_getchain(vq, &idx, iov, VTBLK_MAXSEGS + 2, flags);
+	n = vq_getchain(vq, &idx, iov, BLOCKIF_IOV_MAX + 2, flags);
 
 	/*
 	 * The first descriptor will be the read-only fixed header,
@@ -214,7 +212,7 @@ pci_vtblk_proc(struct pci_vtblk_softc *s
 	 * XXX - note - this fails on crash dump, which does a
 	 * VIRTIO_BLK_T_FLUSH with a zero transfer length
 	 */
-	assert(n >= 2 && n <= VTBLK_MAXSEGS + 2);
+	assert(n >= 2 && n <= BLOCKIF_IOV_MAX + 2);
 
 	io = &sc->vbsc_ios[idx];
 	assert((flags[0] & VRING_DESC_F_WRITE) == 0);
@@ -347,7 +345,7 @@ pci_vtblk_init(struct vmctx *ctx, struct
 	/* setup virtio block config space */
 	sc->vbsc_cfg.vbc_capacity = size / DEV_BSIZE; /* 512-byte units */
 	sc->vbsc_cfg.vbc_size_max = 0;	/* not negotiated */
-	sc->vbsc_cfg.vbc_seg_max = VTBLK_MAXSEGS;
+	sc->vbsc_cfg.vbc_seg_max = BLOCKIF_IOV_MAX;
 	sc->vbsc_cfg.vbc_geometry.cylinders = 0;	/* no geometry */
 	sc->vbsc_cfg.vbc_geometry.heads = 0;
 	sc->vbsc_cfg.vbc_geometry.sectors = 0;


More information about the svn-src-stable-10 mailing list