Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/xen/xen Update xdb_xenbus.c to new usage of routine...



details:   https://anonhg.NetBSD.org/src/rev/9354c7e24818
branches:  trunk
changeset: 779391:9354c7e24818
user:      elric <elric%NetBSD.org@localhost>
date:      Fri May 25 15:03:38 2012 +0000

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

diffstat:

 sys/arch/xen/xen/xbd_xenbus.c |  66 ++++++++++++++++++++----------------------
 1 files changed, 32 insertions(+), 34 deletions(-)

diffs (255 lines):

diff -r 23429be5da4f -r 9354c7e24818 sys/arch/xen/xen/xbd_xenbus.c
--- a/sys/arch/xen/xen/xbd_xenbus.c     Fri May 25 14:59:16 2012 +0000
+++ b/sys/arch/xen/xen/xbd_xenbus.c     Fri May 25 15:03:38 2012 +0000
@@ -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 @@
 #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 @@
        xbdclose,
        xbdstrategy,
        xbdstart,
-};
+}, *di = &dkintf_esdi;
 
 static struct dkdriver xbddkdriver = {
         .d_strategy = xbdstrategy,
@@ -251,7 +249,8 @@
        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 @@
        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 @@
        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 @@
                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 @@
                    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 @@
            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 @@
        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 @@
                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 @@
                }
                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 @@
        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 @@
                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 @@
        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 @@
                return;
        }
 
-       dk_strategy(sc->sc_di, &sc->sc_dksc, bp);
+       dk_strategy(di, &sc->sc_dksc, bp);
        return;
 }
 
@@ -805,7 +806,7 @@
        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 @@
        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 @@
                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 @@
 
        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 @@
 
        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 @@
        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 @@
                goto out;
        }
 
-       dksc = &sc->sc_dksc;
-
        xbdreq = SLIST_FIRST(&sc->sc_xbdreq_head);
        if (__predict_false(xbdreq == NULL)) {
                DPRINTF(("xbdstart: no req\n"));



Home | Main Index | Thread Index | Old Index