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 g/c no longer needed xbdi_io structure memb...



details:   https://anonhg.NetBSD.org/src/rev/bb048000409d
branches:  trunk
changeset: 1009436:bb048000409d
user:      jdolecek <jdolecek%NetBSD.org@localhost>
date:      Thu Apr 23 07:24:40 2020 +0000

description:
g/c no longer needed xbdi_io structure member, just pass it as continuation
parameter

diffstat:

 sys/arch/xen/xen/xbdback_xenbus.c |  30 +++++++++++-------------------
 1 files changed, 11 insertions(+), 19 deletions(-)

diffs (138 lines):

diff -r 04b0151dc8cb -r bb048000409d sys/arch/xen/xen/xbdback_xenbus.c
--- a/sys/arch/xen/xen/xbdback_xenbus.c Thu Apr 23 06:28:34 2020 +0000
+++ b/sys/arch/xen/xen/xbdback_xenbus.c Thu Apr 23 07:24:40 2020 +0000
@@ -1,4 +1,4 @@
-/*      $NetBSD: xbdback_xenbus.c,v 1.86 2020/04/21 13:56:18 jdolecek Exp $      */
+/*      $NetBSD: xbdback_xenbus.c,v 1.87 2020/04/23 07:24:40 jdolecek Exp $      */
 
 /*
  * Copyright (c) 2006 Manuel Bouyer.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xbdback_xenbus.c,v 1.86 2020/04/21 13:56:18 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xbdback_xenbus.c,v 1.87 2020/04/23 07:24:40 jdolecek Exp $");
 
 #include <sys/atomic.h>
 #include <sys/buf.h>
@@ -77,7 +77,6 @@
 
 CTASSERT(XENSHM_MAX_PAGES_PER_REQUEST >= VBD_MAX_INDIRECT_SEGMENTS);
 
-struct xbdback_io;
 struct xbdback_instance;
 
 /*
@@ -186,8 +185,6 @@
        struct blkif_request_segment xbdi_seg[VBD_MAX_INDIRECT_SEGMENTS];
        bus_dmamap_t xbdi_seg_dmamap;
        grant_ref_t xbdi_in_gntref;
-       /* _io state: I/O associated to this instance */
-       struct xbdback_io *xbdi_io;
        /* other state */
        int xbdi_same_page; /* are we merging two segments on the same page? */
        uint xbdi_pendingreqs; /* number of I/O in fly */
@@ -1043,7 +1040,6 @@
                        break;
                }
        } else {
-               KASSERT(xbdi->xbdi_io == NULL);
                xbdi->xbdi_cont = xbdback_co_main_done2;
        }
        return xbdi;
@@ -1090,7 +1086,6 @@
 {
        int work_to_do;
 
-       KASSERT(xbdi->xbdi_io == NULL);
        RING_FINAL_CHECK_FOR_REQUESTS(&xbdi->xbdi_ring.ring_n, work_to_do);
        if (work_to_do)
                xbdi->xbdi_cont = xbdback_co_main;
@@ -1126,12 +1121,12 @@
        struct xbdback_io *xbd_io;
 
        XENPRINTF(("xbdback_co_cache_doflush %p %p\n", xbdi, obj));
-       xbd_io = xbdi->xbdi_io = obj;
+       xbd_io = obj;
        xbd_io->xio_xbdi = xbdi;
        xbd_io->xio_operation = xbdi->xbdi_xen_req.operation;
        xbd_io->xio_id = xbdi->xbdi_xen_req.id;
        xbdi->xbdi_cont = xbdback_co_do_io;
-       return xbdi;
+       return xbd_io;
 }
 
 /*
@@ -1235,7 +1230,6 @@
        if (req->nr_segments < 1)
                goto bad_nr_segments;
 
-       KASSERT(xbdi->xbdi_io == NULL);
        xbdi->xbdi_cont = xbdback_co_io_gotio;
        return xbdback_pool_get(&xbdback_io_pool, xbdi);
 
@@ -1268,7 +1262,7 @@
        atomic_inc_uint(&xbdi->xbdi_pendingreqs);
        
        req = &xbdi->xbdi_xen_req;
-       xbd_io = xbdi->xbdi_io = obj;
+       xbd_io = obj;
        memset(xbd_io, 0, sizeof(*xbd_io));
        buf_init(&xbd_io->xio_buf);
        xbd_io->xio_xbdi = xbdi;
@@ -1339,7 +1333,7 @@
        xbd_io->xio_buf.b_private = xbd_io;
 
        xbdi->xbdi_cont = xbdback_co_do_io;
-       return xbdback_map_shm(xbdi->xbdi_io);
+       return xbdback_map_shm(xbd_io);
 }
 
 static void
@@ -1356,7 +1350,7 @@
 static void *
 xbdback_co_do_io(struct xbdback_instance *xbdi, void *obj)
 {
-       struct xbdback_io *xbd_io = xbdi->xbdi_io;
+       struct xbdback_io *xbd_io = obj;
 
        switch (xbd_io->xio_operation) {
        case BLKIF_OP_FLUSH_DISKCACHE:
@@ -1379,7 +1373,6 @@
                    xbd_io->xio_operation, error);
                xbdback_pool_put(&xbdback_io_pool, xbd_io);
                xbdi_put(xbdi);
-               xbdi->xbdi_io = NULL;
                xbdi->xbdi_cont = xbdback_co_main_incr;
                return xbdi;
        }
@@ -1395,7 +1388,6 @@
                }
                /* will call xbdback_iodone() asynchronously when done */
                bdev_strategy(&xbd_io->xio_buf);
-               xbdi->xbdi_io = NULL;
                xbdi->xbdi_cont = xbdback_co_main_incr;
                return xbdi;
        default:
@@ -1553,16 +1545,16 @@
                }
                printf("\n");
 #endif
-               return xbdi;
+               return xbd_io;
        default:
                if (ratecheck(&xbdi->xbdi_lasterr_time, &xbdback_err_intvl)) {
                        printf("xbdback_map_shm: xen_shm error %d ", error);
                }
-               xbdback_io_error(xbdi->xbdi_io, error);
+               /* this will also free xbd_io via xbdback_iodone() */
+               xbdback_io_error(xbd_io, error);
                SLIST_INSERT_HEAD(&xbdi->xbdi_va_free, xbd_io->xio_xv, xv_next);
                xbd_io->xio_xv = NULL;
-               xbdi->xbdi_io = NULL;
-               // do not retry
+               /* do not retry */
                xbdi->xbdi_cont = xbdback_co_main_incr;
                return xbdi;
        }



Home | Main Index | Thread Index | Old Index