Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 30 Mar 2019 17:24:56 +0000 (UTC)
From:      Enji Cooper <ngie@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r345737 - in projects/capsicum-test: sbin/devd sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/dev/usb/wlan sys/dev/xen/blkfront sys/geom sys/kern
Message-ID:  <201903301724.x2UHOuoQ009160@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ngie
Date: Sat Mar 30 17:24:56 2019
New Revision: 345737
URL: https://svnweb.freebsd.org/changeset/base/345737

Log:
  MFhead@r345735

Modified:
  projects/capsicum-test/sbin/devd/devd.conf.5
  projects/capsicum-test/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
  projects/capsicum-test/sys/dev/usb/wlan/if_urtw.c
  projects/capsicum-test/sys/dev/usb/wlan/if_urtwvar.h
  projects/capsicum-test/sys/dev/xen/blkfront/blkfront.c
  projects/capsicum-test/sys/geom/geom_dev.c
  projects/capsicum-test/sys/kern/imgact_elf.c
Directory Properties:
  projects/capsicum-test/   (props changed)
  projects/capsicum-test/sys/cddl/contrib/opensolaris/   (props changed)

Modified: projects/capsicum-test/sbin/devd/devd.conf.5
==============================================================================
--- projects/capsicum-test/sbin/devd/devd.conf.5	Sat Mar 30 17:24:11 2019	(r345736)
+++ projects/capsicum-test/sbin/devd/devd.conf.5	Sat Mar 30 17:24:56 2019	(r345737)
@@ -41,7 +41,7 @@
 .\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 .\" SOFTWARE.
 .\"
-.Dd July 20, 2018
+.Dd March 29, 2019
 .Dt DEVD.CONF 5
 .Os
 .Sh NAME
@@ -432,15 +432,19 @@ only includes disk-like devices.
 .It Li CREATE
 A
 .Xr geom 4
-device node is created.
+provider is created.
 .It Li DESTROY
 A
 .Xr geom 4
-device node is destroyed.
+provider is destroyed.
 .It Li GEOM::physpath
 The physical path of a device has changed.
 .It Li MEDIACHANGE
 Physical media has changed.
+.It Li SIZECHANGE
+A
+.Xr geom 4
+provider size has changed.
 .El
 .El
 .Pp

Modified: projects/capsicum-test/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c
==============================================================================
--- projects/capsicum-test/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c	Sat Mar 30 17:24:11 2019	(r345736)
+++ projects/capsicum-test/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c	Sat Mar 30 17:24:56 2019	(r345737)
@@ -158,6 +158,29 @@ vdev_geom_attrchanged(struct g_consumer *cp, const cha
 }
 
 static void
+vdev_geom_resize(struct g_consumer *cp)
+{
+	struct consumer_priv_t *priv;
+	struct consumer_vdev_elem *elem;
+	spa_t *spa;
+	vdev_t *vd;
+
+	priv = (struct consumer_priv_t *)&cp->private;
+	if (SLIST_EMPTY(priv))
+		return;
+
+	SLIST_FOREACH(elem, priv, elems) {
+		vd = elem->vd;
+		if (vd->vdev_state != VDEV_STATE_HEALTHY)
+			continue;
+		spa = vd->vdev_spa;
+		if (!spa->spa_autoexpand)
+			continue;
+		vdev_online(spa, vd->vdev_guid, ZFS_ONLINE_EXPAND, NULL);
+	}
+}
+
+static void
 vdev_geom_orphan(struct g_consumer *cp)
 {
 	struct consumer_priv_t *priv;
@@ -229,6 +252,7 @@ vdev_geom_attach(struct g_provider *pp, vdev_t *vd, bo
 		gp = g_new_geomf(&zfs_vdev_class, "zfs::vdev");
 		gp->orphan = vdev_geom_orphan;
 		gp->attrchanged = vdev_geom_attrchanged;
+		gp->resize = vdev_geom_resize;
 		cp = g_new_consumer(gp);
 		error = g_attach(cp, pp);
 		if (error != 0) {

Modified: projects/capsicum-test/sys/dev/usb/wlan/if_urtw.c
==============================================================================
--- projects/capsicum-test/sys/dev/usb/wlan/if_urtw.c	Sat Mar 30 17:24:11 2019	(r345736)
+++ projects/capsicum-test/sys/dev/usb/wlan/if_urtw.c	Sat Mar 30 17:24:56 2019	(r345737)
@@ -3932,6 +3932,7 @@ urtw_rxeof(struct usb_xfer *xfer, struct urtw_data *da
 	struct urtw_softc *sc = data->sc;
 	struct ieee80211com *ic = &sc->sc_ic;
 	uint8_t noise = 0, rate;
+	uint64_t mactime;
 
 	usbd_xfer_status(xfer, &actlen, NULL, NULL, NULL);
 
@@ -3951,6 +3952,9 @@ urtw_rxeof(struct usb_xfer *xfer, struct urtw_data *da
 		/* XXX correct? */
 		rssi = rx->rssi & URTW_RX_RSSI_MASK;
 		noise = rx->noise;
+
+		if (ieee80211_radiotap_active(ic))
+			mactime = rx->mactime;
 	} else {
 		struct urtw_8187l_rxhdr *rx;
 
@@ -3967,6 +3971,9 @@ urtw_rxeof(struct usb_xfer *xfer, struct urtw_data *da
 		/* XXX correct? */
 		rssi = rx->rssi & URTW_RX_8187L_RSSI_MASK;
 		noise = rx->noise;
+
+		if (ieee80211_radiotap_active(ic))
+			mactime = rx->mactime;
 	}
 
 	if (flen < IEEE80211_ACK_LEN)
@@ -3986,6 +3993,7 @@ urtw_rxeof(struct usb_xfer *xfer, struct urtw_data *da
 	if (ieee80211_radiotap_active(ic)) {
 		struct urtw_rx_radiotap_header *tap = &sc->sc_rxtap;
 
+		tap->wr_tsf = mactime;
 		tap->wr_flags = 0;
 		tap->wr_dbm_antsignal = (int8_t)rssi;
 	}

Modified: projects/capsicum-test/sys/dev/usb/wlan/if_urtwvar.h
==============================================================================
--- projects/capsicum-test/sys/dev/usb/wlan/if_urtwvar.h	Sat Mar 30 17:24:11 2019	(r345736)
+++ projects/capsicum-test/sys/dev/usb/wlan/if_urtwvar.h	Sat Mar 30 17:24:56 2019	(r345737)
@@ -55,6 +55,7 @@ typedef STAILQ_HEAD(, urtw_data) urtw_datahead;
 
 struct urtw_rx_radiotap_header {
 	struct ieee80211_radiotap_header wr_ihdr;
+	uint64_t	wr_tsf;
 	uint8_t		wr_flags;
 	uint8_t		wr_pad;
 	uint16_t	wr_chan_freq;
@@ -63,7 +64,8 @@ struct urtw_rx_radiotap_header {
 } __packed __aligned(8);
 
 #define URTW_RX_RADIOTAP_PRESENT					\
-	((1 << IEEE80211_RADIOTAP_FLAGS) |				\
+	((1 << IEEE80211_RADIOTAP_TSFT) |				\
+	 (1 << IEEE80211_RADIOTAP_FLAGS) |				\
 	 (1 << IEEE80211_RADIOTAP_CHANNEL) |				\
 	 (1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL))
 

Modified: projects/capsicum-test/sys/dev/xen/blkfront/blkfront.c
==============================================================================
--- projects/capsicum-test/sys/dev/xen/blkfront/blkfront.c	Sat Mar 30 17:24:11 2019	(r345736)
+++ projects/capsicum-test/sys/dev/xen/blkfront/blkfront.c	Sat Mar 30 17:24:56 2019	(r345737)
@@ -1227,11 +1227,40 @@ xbd_connect(struct xbd_softc *sc)
 	int err, feature_barrier, feature_flush;
 	int i, j;
 
-	if (sc->xbd_state == XBD_STATE_CONNECTED || 
-	    sc->xbd_state == XBD_STATE_SUSPENDED)
+	DPRINTK("blkfront.c:connect:%s.\n", xenbus_get_otherend_path(dev));
+
+	if (sc->xbd_state == XBD_STATE_SUSPENDED) {
 		return;
+	}
 
-	DPRINTK("blkfront.c:connect:%s.\n", xenbus_get_otherend_path(dev));
+	if (sc->xbd_state == XBD_STATE_CONNECTED) {
+		struct disk *disk;
+
+		disk = sc->xbd_disk;
+		if (disk == NULL) {
+			return;
+		}
+		err = xs_gather(XST_NIL, xenbus_get_otherend_path(dev),
+		    "sectors", "%lu", &sectors, NULL);
+		if (err != 0) {
+			xenbus_dev_error(dev, err,
+			    "reading sectors at %s",
+			    xenbus_get_otherend_path(dev));
+			return;
+		}
+		disk->d_mediasize = disk->d_sectorsize * sectors;
+		err = disk_resize(disk, M_NOWAIT);
+		if (err) {
+			xenbus_dev_error(dev, err,
+			    "unable to resize disk %s%u",
+			    disk->d_name, disk->d_unit);
+			return;
+		}
+		device_printf(sc->xbd_dev,
+		    "changed capacity to %jd\n",
+		    (intmax_t)disk->d_mediasize);
+		return;
+	}
 
 	err = xs_gather(XST_NIL, xenbus_get_otherend_path(dev),
 	    "sectors", "%lu", &sectors,

Modified: projects/capsicum-test/sys/geom/geom_dev.c
==============================================================================
--- projects/capsicum-test/sys/geom/geom_dev.c	Sat Mar 30 17:24:11 2019	(r345736)
+++ projects/capsicum-test/sys/geom/geom_dev.c	Sat Mar 30 17:24:56 2019	(r345737)
@@ -92,6 +92,7 @@ static g_fini_t g_dev_fini;
 static g_taste_t g_dev_taste;
 static g_orphan_t g_dev_orphan;
 static g_attrchanged_t g_dev_attrchanged;
+static g_resize_t g_dev_resize;
 
 static struct g_class g_dev_class	= {
 	.name = "DEV",
@@ -100,7 +101,8 @@ static struct g_class g_dev_class	= {
 	.fini = g_dev_fini,
 	.taste = g_dev_taste,
 	.orphan = g_dev_orphan,
-	.attrchanged = g_dev_attrchanged
+	.attrchanged = g_dev_attrchanged,
+	.resize = g_dev_resize
 };
 
 /*
@@ -300,6 +302,15 @@ g_dev_attrchanged(struct g_consumer *cp, const char *a
 		g_dev_set_physpath(cp);
 		return;
 	}
+}
+
+static void
+g_dev_resize(struct g_consumer *cp)
+{
+	char buf[SPECNAMELEN + 6];
+
+	snprintf(buf, sizeof(buf), "cdev=%s", cp->provider->name);
+	devctl_notify_f("GEOM", "DEV", "SIZECHANGE", buf, M_WAITOK);
 }
 
 struct g_provider *

Modified: projects/capsicum-test/sys/kern/imgact_elf.c
==============================================================================
--- projects/capsicum-test/sys/kern/imgact_elf.c	Sat Mar 30 17:24:11 2019	(r345736)
+++ projects/capsicum-test/sys/kern/imgact_elf.c	Sat Mar 30 17:24:56 2019	(r345737)
@@ -279,7 +279,7 @@ __elfN(get_brandinfo)(struct image_params *imgp, const
 	boolean_t ret;
 	int i, interp_name_len;
 
-	interp_name_len = interp != NULL ? strlen(interp) : 0;
+	interp_name_len = interp != NULL ? strlen(interp) + 1 : 0;
 
 	/*
 	 * We support four types of branding -- (1) the ELF EI_OSABI field



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