--- /home/grehan/proj/freebsd/12/usr.sbin/bhyve/block_if.h 2016-07-10 14:02:23.431522000 -0700 +++ block_if.h 2017-05-21 13:12:09.557407000 -0700 @@ -39,7 +39,7 @@ #include #include -#define BLOCKIF_IOV_MAX 33 /* not practical to be IOV_MAX */ +#define BLOCKIF_IOV_MAX 128 /* not practical to be IOV_MAX */ struct blockif_req { struct iovec br_iov[BLOCKIF_IOV_MAX]; --- /home/grehan/proj/freebsd/12/usr.sbin/bhyve/block_if.c 2017-02-15 10:18:53.495226000 -0800 +++ block_if.c 2017-05-21 13:07:56.247895000 -0700 @@ -824,7 +824,7 @@ { assert(bc->bc_magic == BLOCKIF_SIG); - return (BLOCKIF_MAXREQ - 1); + return (BLOCKIF_MAXREQ - BLOCKIF_NUMTHR); } int --- /home/grehan/proj/freebsd/12/usr.sbin/bhyve/pci_virtio_block.c 2016-07-10 14:02:23.447636000 -0700 +++ pci_virtio_block.c 2017-05-21 13:33:36.041573000 -0700 @@ -348,7 +348,7 @@ /* 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 = BLOCKIF_IOV_MAX; + sc->vbsc_cfg.vbc_seg_max = MIN(BLOCKIF_IOV_MAX, VTBLK_RINGSZ); sc->vbsc_cfg.vbc_geometry.cylinders = 0; /* no geometry */ sc->vbsc_cfg.vbc_geometry.heads = 0; sc->vbsc_cfg.vbc_geometry.sectors = 0;