Module Name:    src
Committed By:   elric
Date:           Fri May 25 15:03:38 UTC 2012

Modified Files:
        src/sys/arch/xen/xen: xbd_xenbus.c

Log Message:
Update xdb_xenbus.c to new usage of routines in dksubr.c.


To generate a diff of this commit:
cvs rdiff -u -r1.56 -r1.57 src/sys/arch/xen/xen/xbd_xenbus.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/xen/xen/xbd_xenbus.c
diff -u src/sys/arch/xen/xen/xbd_xenbus.c:1.56 src/sys/arch/xen/xen/xbd_xenbus.c:1.57
--- src/sys/arch/xen/xen/xbd_xenbus.c:1.56	Wed Feb 22 16:53:46 2012
+++ src/sys/arch/xen/xen/xbd_xenbus.c	Fri May 25 15:03:38 2012
@@ -1,4 +1,4 @@
-/*      $NetBSD: xbd_xenbus.c,v 1.56 2012/02/22 16:53:46 jakllsch Exp $      */
+/*      $NetBSD: xbd_xenbus.c,v 1.57 2012/05/25 15:03:38 elric Exp $      */
 
 /*
  * Copyright (c) 2006 Manuel Bouyer.
@@ -50,7 +50,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xbd_xenbus.c,v 1.56 2012/02/22 16:53:46 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xbd_xenbus.c,v 1.57 2012/05/25 15:03:38 elric Exp $");
 
 #include "opt_xen.h"
 
@@ -122,9 +122,7 @@ struct xbd_req {
 #define req_sync	u.req_sync
 
 struct xbd_xenbus_softc {
-	device_t sc_dev;
-	struct dk_softc sc_dksc;
-	struct dk_intf *sc_di;
+	struct dk_softc sc_dksc;	/* Must be first in this struct */
 	struct xenbus_device *sc_xbusd;
 
 	blkif_front_ring_t sc_ring;
@@ -212,7 +210,7 @@ static struct dk_intf dkintf_esdi = {
 	xbdclose,
 	xbdstrategy,
 	xbdstart,
-};
+}, *di = &dkintf_esdi;
 
 static struct dkdriver xbddkdriver = {
         .d_strategy = xbdstrategy,
@@ -251,7 +249,8 @@ xbd_xenbus_attach(device_t parent, devic
 	config_pending_incr();
 	aprint_normal(": Xen Virtual Block Device Interface\n");
 
-	sc->sc_dev = self;
+	dk_sc_init(&sc->sc_dksc, device_xname(self));
+	sc->sc_dksc.sc_dev = self;
 
 #ifdef XBD_DEBUG
 	printf("path: %s\n", xa->xa_xbusd->xbusd_path);
@@ -278,9 +277,7 @@ xbd_xenbus_attach(device_t parent, devic
 	sc->sc_xbusd = xa->xa_xbusd;
 	sc->sc_xbusd->xbusd_otherend_changed = xbd_backend_changed;
 
-	dk_sc_init(&sc->sc_dksc, sc, device_xname(self));
 	disk_init(&sc->sc_dksc.sc_dkdev, device_xname(self), &xbddkdriver);
-	sc->sc_di = &dkintf_esdi;
 	/* initialize free requests list */
 	SLIST_INIT(&sc->sc_xbdreq_head);
 	for (i = 0; i < XBD_RING_SIZE; i++) {
@@ -521,7 +518,7 @@ static void xbd_backend_changed(void *ar
 	char buf[9];
 	int s;
 	DPRINTF(("%s: new backend state %d\n",
-	    device_xname(sc->sc_dev), new_state));
+	    device_xname(sc->sc_dksc.sc_dev), new_state));
 
 	switch (new_state) {
 	case XenbusStateUnknown:
@@ -571,9 +568,9 @@ static void xbd_backend_changed(void *ar
 		sc->sc_backend_status = BLKIF_STATE_CONNECTED;
 
 		/* try to read the disklabel */
-		dk_getdisklabel(sc->sc_di, &sc->sc_dksc, 0 /* XXX ? */);
+		dk_getdisklabel(di, &sc->sc_dksc, 0 /* XXX ? */);
 		format_bytes(buf, sizeof(buf), sc->sc_sectors * sc->sc_secsize);
-		aprint_verbose_dev(sc->sc_dev,
+		aprint_verbose_dev(sc->sc_dksc.sc_dev,
 				"%s, %d bytes/sect x %" PRIu64 " sectors\n",
 				buf, (int)pdg->pdg_secsize, sc->sc_xbdsize);
 		/* Discover wedges on this disk. */
@@ -593,7 +590,7 @@ static void xbd_backend_changed(void *ar
 		    pdg->pdg_ncylinders);
 		prop_dictionary_set(disk_info, "geometry", geom);
 		prop_object_release(geom);
-		prop_dictionary_set(device_properties(sc->sc_dev),
+		prop_dictionary_set(device_properties(sc->sc_dksc.sc_dev),
 		    "disk-info", disk_info);
 		/*
 		 * Don't release disk_info here; we keep a reference to it.
@@ -623,24 +620,28 @@ xbd_connect(struct xbd_xenbus_softc *sc)
 	    sc->sc_xbusd->xbusd_path, "virtual-device", &sc->sc_handle, 10);
 	if (err)
 		panic("%s: can't read number from %s/virtual-device\n", 
-		    device_xname(sc->sc_dev), sc->sc_xbusd->xbusd_otherend);
+		    device_xname(sc->sc_dksc.sc_dev),
+		    sc->sc_xbusd->xbusd_otherend);
 	err = xenbus_read_ull(NULL,
 	    sc->sc_xbusd->xbusd_otherend, "sectors", &sectors, 10);
 	if (err)
 		panic("%s: can't read number from %s/sectors\n", 
-		    device_xname(sc->sc_dev), sc->sc_xbusd->xbusd_otherend);
+		    device_xname(sc->sc_dksc.sc_dev),
+		    sc->sc_xbusd->xbusd_otherend);
 	sc->sc_sectors = sectors;
 
 	err = xenbus_read_ul(NULL,
 	    sc->sc_xbusd->xbusd_otherend, "info", &sc->sc_info, 10);
 	if (err)
 		panic("%s: can't read number from %s/info\n", 
-		    device_xname(sc->sc_dev), sc->sc_xbusd->xbusd_otherend);
+		    device_xname(sc->sc_dksc.sc_dev),
+		    sc->sc_xbusd->xbusd_otherend);
 	err = xenbus_read_ul(NULL,
 	    sc->sc_xbusd->xbusd_otherend, "sector-size", &sc->sc_secsize, 10);
 	if (err)
 		panic("%s: can't read number from %s/sector-size\n", 
-		    device_xname(sc->sc_dev), sc->sc_xbusd->xbusd_otherend);
+		    device_xname(sc->sc_dksc.sc_dev),
+		    sc->sc_xbusd->xbusd_otherend);
 
 	err = xenbus_read_ul(NULL, sc->sc_xbusd->xbusd_otherend,
 	    "feature-flush-cache", &cache_flush, 10);
@@ -663,7 +664,7 @@ xbd_handler(void *arg)
 	int more_to_do;
 	int seg;
 
-	DPRINTF(("xbd_handler(%s)\n", device_xname(sc->sc_dev)));
+	DPRINTF(("xbd_handler(%s)\n", device_xname(sc->sc_dksc.sc_dev)));
 
 	if (__predict_false(sc->sc_backend_status != BLKIF_STATE_CONNECTED))
 		return 0;
@@ -686,7 +687,7 @@ again:
 		for (seg = xbdreq->req_nr_segments - 1; seg >= 0; seg--) {
 			if (__predict_false(
 			    xengnt_status(xbdreq->req_gntref[seg]))) {
-				aprint_verbose_dev(sc->sc_dev,
+				aprint_verbose_dev(sc->sc_dksc.sc_dev,
 					"grant still used by backend\n");
 				sc->sc_ring.rsp_cons = i;
 				xbdreq->req_nr_segments = seg + 1;
@@ -697,7 +698,7 @@ again:
 		}
 		if (rep->operation != BLKIF_OP_READ &&
 		    rep->operation != BLKIF_OP_WRITE) {
-			aprint_error_dev(sc->sc_dev,
+			aprint_error_dev(sc->sc_dksc.sc_dev,
 			    "bad operation %d from backend\n", rep->operation);
 			bp->b_error = EIO;
 			bp->b_resid = bp->b_bcount;
@@ -728,7 +729,7 @@ done:
 	if (more_to_do)
 		goto again;
 
-	dk_iodone(sc->sc_di, &sc->sc_dksc);
+	dk_iodone(di, &sc->sc_dksc);
 	if (sc->sc_xbdreq_wait)
 		wakeup(&sc->sc_xbdreq_wait);
 	return 1;
@@ -755,7 +756,7 @@ xbdopen(dev_t dev, int flags, int fmt, s
 		return EROFS;
 
 	DPRINTF(("xbdopen(0x%04x, %d)\n", dev, flags));
-	return dk_open(sc->sc_di, &sc->sc_dksc, dev, flags, fmt, l);
+	return dk_open(di, &sc->sc_dksc, dev, flags, fmt, l);
 }
 
 int
@@ -766,7 +767,7 @@ xbdclose(dev_t dev, int flags, int fmt, 
 	sc = device_lookup_private(&xbd_cd, DISKUNIT(dev));
 
 	DPRINTF(("xbdclose(%d, %d)\n", dev, flags));
-	return dk_close(sc->sc_di, &sc->sc_dksc, dev, flags, fmt, l);
+	return dk_close(di, &sc->sc_dksc, dev, flags, fmt, l);
 }
 
 void
@@ -791,7 +792,7 @@ xbdstrategy(struct buf *bp)
 		return;
 	}
 
-	dk_strategy(sc->sc_di, &sc->sc_dksc, bp);
+	dk_strategy(di, &sc->sc_dksc, bp);
 	return;
 }
 
@@ -805,7 +806,7 @@ xbdsize(dev_t dev)
 	sc = device_lookup_private(&xbd_cd, DISKUNIT(dev));
 	if (sc == NULL || sc->sc_shutdown != BLKIF_SHUTDOWN_RUN)
 		return -1;
-	return dk_size(sc->sc_di, &sc->sc_dksc, dev);
+	return dk_size(di, &sc->sc_dksc, dev);
 }
 
 int
@@ -863,7 +864,7 @@ xbdioctl(dev_t dev, u_long cmd, void *da
 	case DIOCCACHESYNC:
 		if (sc->sc_cache_flush <= 0) {
 			if (sc->sc_cache_flush == 0) {
-				aprint_error_dev(sc->sc_dev,
+				aprint_error_dev(sc->sc_dksc.sc_dev,
 				    "WARNING: cache flush not supported "
 				    "by backend\n");
 				sc->sc_cache_flush = -1;
@@ -913,7 +914,7 @@ xbdioctl(dev_t dev, u_long cmd, void *da
 		break;
 
 	default:
-		error = dk_ioctl(sc->sc_di, dksc, dev, cmd, data, flag, l);
+		error = dk_ioctl(di, dksc, dev, cmd, data, flag, l);
 		break;
 	}
 
@@ -931,13 +932,13 @@ xbddump(dev_t dev, daddr_t blkno, void *
 
 	DPRINTF(("xbddump(%d, %" PRId64 ", %p, %lu)\n", dev, blkno, va,
 	    (unsigned long)size));
-	return dk_dump(sc->sc_di, &sc->sc_dksc, dev, blkno, va, size);
+	return dk_dump(di, &sc->sc_dksc, dev, blkno, va, size);
 }
 
 static int
 xbdstart(struct dk_softc *dksc, struct buf *bp)
 {
-	struct xbd_xenbus_softc *sc;
+	struct xbd_xenbus_softc *sc = (struct xbd_xenbus_softc *)dksc;
 	struct xbd_req *xbdreq;
 	blkif_request_t *req;
 	int ret = 0, runqueue = 1;
@@ -949,8 +950,7 @@ xbdstart(struct dk_softc *dksc, struct b
 
 	DPRINTF(("xbdstart(%p): b_bcount = %ld\n", bp, (long)bp->b_bcount));
 
-	sc = device_lookup_private(&xbd_cd, DISKUNIT(bp->b_dev));
-	if (sc == NULL || sc->sc_shutdown != BLKIF_SHUTDOWN_RUN) {
+	if (sc->sc_shutdown != BLKIF_SHUTDOWN_RUN) {
 		bp->b_error = EIO;
 		goto err;
 	}
@@ -971,7 +971,7 @@ xbdstart(struct dk_softc *dksc, struct b
 	if (__predict_false(sc->sc_backend_status == BLKIF_STATE_SUSPENDED)) {
 		/* device is suspended, do not consume buffer */
 		DPRINTF(("%s: (xbdstart) device suspended\n",
-		    device_xname(sc->sc_dev)));
+		    device_xname(sc->sc_dksc.sc_dev)));
 		ret = -1;
 		goto out;
 	}
@@ -982,8 +982,6 @@ xbdstart(struct dk_softc *dksc, struct b
 		goto out;
 	}
 
-	dksc = &sc->sc_dksc;
-
 	xbdreq = SLIST_FIRST(&sc->sc_xbdreq_head);
 	if (__predict_false(xbdreq == NULL)) {
 		DPRINTF(("xbdstart: no req\n"));

Reply via email to