Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 12 Aug 2021 17:02:33 GMT
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 86139cc75a55 - stable/13 - bhyve vtblk: Inform guests of disk resize events.
Message-ID:  <202108121702.17CH2Xmr018565@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/13 has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=86139cc75a5506bde6a4b180c024294e470d5cb6

commit 86139cc75a5506bde6a4b180c024294e470d5cb6
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2021-06-12 00:59:46 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2021-08-12 17:01:34 +0000

    bhyve vtblk: Inform guests of disk resize events.
    
    Register a resize callback with the blockif interface.  When the
    callback fires, update the size of the disk and notify the guest via a
    configuration change interrupt.
    
    Reviewed by:    grehan, markj
    MFC after:      1 month
    Differential Revision:  https://reviews.freebsd.org/D30506
    
    (cherry picked from commit 2349cda44fea17c089b026e743ec8f03199019eb)
---
 usr.sbin/bhyve/pci_virtio_block.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/usr.sbin/bhyve/pci_virtio_block.c b/usr.sbin/bhyve/pci_virtio_block.c
index 8a172c54eda7..3718b2d7eff0 100644
--- a/usr.sbin/bhyve/pci_virtio_block.c
+++ b/usr.sbin/bhyve/pci_virtio_block.c
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2011 NetApp, Inc.
  * All rights reserved.
- * Copyright 2020 Joyent, Inc.
+ * Copyright 2020-2021 Joyent, Inc.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -436,6 +436,18 @@ pci_vtblk_notify(void *vsc, struct vqueue_info *vq)
 		pci_vtblk_proc(sc, vq);
 }
 
+static void
+pci_vtblk_resized(struct blockif_ctxt *bctxt, void *arg, size_t new_size)
+{
+	struct pci_vtblk_softc *sc;
+
+	sc = arg;
+
+	sc->vbsc_cfg.vbc_capacity = new_size / VTBLK_BSIZE; /* 512-byte units */
+	vi_interrupt(&sc->vbsc_vs, VIRTIO_PCI_ISR_CONFIG,
+	    sc->vbsc_vs.vs_msix_cfg_idx);
+}
+
 static int
 pci_vtblk_init(struct vmctx *ctx, struct pci_devinst *pi, nvlist_t *nvl)
 {
@@ -541,6 +553,7 @@ pci_vtblk_init(struct vmctx *ctx, struct pci_devinst *pi, nvlist_t *nvl)
 		return (1);
 	}
 	vi_set_io_bar(&sc->vbsc_vs, 0);
+	blockif_register_resize_callback(sc->bc, pci_vtblk_resized, sc);
 	return (0);
 }
 



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