Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Oct 2013 18:54:58 +0000 (UTC)
From:      Peter Grehan <grehan@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r257005 - head/usr.sbin/bhyve
Message-ID:  <201310231854.r9NIswRM000674@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: grehan
Date: Wed Oct 23 18:54:58 2013
New Revision: 257005
URL: http://svnweb.freebsd.org/changeset/base/257005

Log:
  Export the block size capability to guests.
  - Use #defines for capability bits
  - Export the VTBLK_F_BLK_SIZE capability
  - Fix bug in calculating capacity: it is in
    512-byte units, not the underlying sector size
  
  This allows virtio-blk to have backing devices
  with non 512-byte sector sizes e.g. /dev/cd0, and
  4K-block harddrives.
  
  Reviewed by:	neel
  MFC after:	3 days

Modified:
  head/usr.sbin/bhyve/pci_virtio_block.c

Modified: head/usr.sbin/bhyve/pci_virtio_block.c
==============================================================================
--- head/usr.sbin/bhyve/pci_virtio_block.c	Wed Oct 23 18:36:05 2013	(r257004)
+++ head/usr.sbin/bhyve/pci_virtio_block.c	Wed Oct 23 18:54:58 2013	(r257005)
@@ -66,11 +66,16 @@ __FBSDID("$FreeBSD$");
 
 #define	VTBLK_BLK_ID_BYTES	20
 
+/* Capability bits */
+#define	VTBLK_F_SEG_MAX		(1 << 2)	/* Maximum request segments */
+#define	VTBLK_F_BLK_SIZE       	(1 << 6)	/* cfg block size valid */
+
 /*
  * Host capabilities
  */
 #define VTBLK_S_HOSTCAPS      \
-  ( 0x00000004 |	/* host maximum request segments */ \
+  ( VTBLK_F_SEG_MAX  |						    \
+    VTBLK_F_BLK_SIZE |						    \
     VIRTIO_RING_F_INDIRECT_DESC )	/* indirect descriptors */
 
 /*
@@ -315,7 +320,7 @@ pci_vtblk_init(struct vmctx *ctx, struct
 	    digest[0], digest[1], digest[2], digest[3], digest[4], digest[5]);
 
 	/* setup virtio block config space */
-	sc->vbsc_cfg.vbc_capacity = size / sectsz;
+	sc->vbsc_cfg.vbc_capacity = size / DEV_BSIZE; /* 512-byte units */
 	sc->vbsc_cfg.vbc_seg_max = VTBLK_MAXSEGS;
 	sc->vbsc_cfg.vbc_blk_size = sectsz;
 	sc->vbsc_cfg.vbc_size_max = 0;	/* not negotiated */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201310231854.r9NIswRM000674>