vinum(4): Remove some casts to union and solve it in standard C.
authorSascha Wildner <saw@online.de>
Mon, 19 Dec 2011 18:09:03 +0000 (19:09 +0100)
committerSascha Wildner <saw@online.de>
Mon, 19 Dec 2011 18:09:03 +0000 (19:09 +0100)
sys/dev/raid/vinum/vinum.c
sys/dev/raid/vinum/vinumdaemon.c
sys/dev/raid/vinum/vinuminterrupt.c
sys/dev/raid/vinum/vinumio.c
sys/dev/raid/vinum/vinumstate.c

index 317f854..e143748 100644 (file)
@@ -37,7 +37,6 @@
  *
  * $Id: vinum.c,v 1.33 2001/01/09 06:19:15 grog Exp grog $
  * $FreeBSD: src/sys/dev/vinum/vinum.c,v 1.38.2.3 2003/01/07 12:14:16 joerg Exp $
- * $DragonFly: src/sys/dev/raid/vinum/vinum.c,v 1.20 2007/05/15 22:44:12 dillon Exp $
  */
 
 #define STATIC static                                      /* nothing while we're testing XXX */
@@ -200,6 +199,7 @@ vinum_inactive(int confopen)
 void
 free_vinum(int cleardrive)
 {
+    union daemoninfo di = { .nothing = 0 };
     int i;
     int drives_allocated = vinum_conf.drives_allocated;
 
@@ -215,7 +215,7 @@ free_vinum(int cleardrive)
     }
     while ((vinum_conf.flags & (VF_STOPPING | VF_DAEMONOPEN))
        == (VF_STOPPING | VF_DAEMONOPEN)) {                 /* at least one daemon open, we're stopping */
-       queue_daemon_request(daemonrq_return, (union daemoninfo) 0); /* stop the daemon */
+       queue_daemon_request(daemonrq_return, di);          /* stop the daemon */
        tsleep(&vinumclose, 0, "vstop", 1);                 /* and wait for it */
     }
     if (SD != NULL) {
index 6750c26..0880a7a 100644 (file)
@@ -36,7 +36,6 @@
  *
  * $Id: vinumdaemon.c,v 1.8 2000/01/03 05:22:03 grog Exp grog $
  * $FreeBSD: src/sys/dev/vinum/vinumdaemon.c,v 1.16 2000/01/05 06:03:56 grog Exp $
- * $DragonFly: src/sys/dev/raid/vinum/vinumdaemon.c,v 1.12 2008/06/05 18:06:31 swildner Exp $
  */
 
 #include "vinumhdr.h"
@@ -254,10 +253,11 @@ queue_daemon_request(enum daemonrq type, union daemoninfo info)
 int
 vinum_finddaemon(void)
 {
+    union daemoninfo di = { .nothing = 0 };
     int result;
 
     if (daemonpid != 0) {                                  /* we think we have a daemon, */
-       queue_daemon_request(daemonrq_ping, (union daemoninfo) 0); /* queue a ping */
+       queue_daemon_request(daemonrq_ping, di);            /* queue a ping */
        result = tsleep(&vinum_finddaemon, 0, "reap", 2 * hz);
        if (result == 0)                                    /* yup, the daemon's up and running */
            return 0;
index 812e1e1..a44f7eb 100644 (file)
@@ -41,7 +41,6 @@
  *
  * $Id: vinuminterrupt.c,v 1.12 2000/11/24 03:41:42 grog Exp grog $
  * $FreeBSD: src/sys/dev/vinum/vinuminterrupt.c,v 1.25.2.3 2001/05/28 05:56:27 grog Exp $
- * $DragonFly: src/sys/dev/raid/vinum/vinuminterrupt.c,v 1.13 2007/08/01 11:46:46 swildner Exp $
  */
 
 #include "vinumhdr.h"
@@ -63,6 +62,7 @@ void sdio_done(struct bio *bio);
 void
 complete_rqe(struct bio *bio)
 {
+    union daemoninfo di;
     struct buf *bp = bio->bio_buf;
     struct rqelement *rqe;
     struct request *rq;
@@ -220,8 +220,10 @@ complete_rqe(struct bio *bio)
            if (rq->isplex) {                               /* plex operation, */
                ubio->bio_buf->b_flags |= B_ERROR;          /* yes, propagate to user */
                ubio->bio_buf->b_error = rq->error;
-           } else                                          /* try to recover */
-               queue_daemon_request(daemonrq_ioerror, (union daemoninfo) rq); /* let the daemon complete */
+           } else {                                        /* try to recover */
+               di.rq = rq;
+               queue_daemon_request(daemonrq_ioerror, di); /* let the daemon complete */
+           }
        } else {
            ubio->bio_buf->b_resid = 0;                     /* completed our transfer */
            if (rq->isplex == 0)                            /* volume request, */
index a2aabba..5e067e3 100644 (file)
@@ -35,7 +35,6 @@
  *
  * $Id: vinumio.c,v 1.30 2000/05/10 23:23:30 grog Exp grog $
  * $FreeBSD: src/sys/dev/vinum/vinumio.c,v 1.52.2.6 2002/05/02 08:43:44 grog Exp $
- * $DragonFly: src/sys/dev/raid/vinum/vinumio.c,v 1.31 2008/06/05 18:06:31 swildner Exp $
  */
 
 #include "vinumhdr.h"
@@ -557,7 +556,9 @@ format_config(char *config, int len)
 void
 save_config(void)
 {
-    queue_daemon_request(daemonrq_saveconfig, (union daemoninfo) 0);
+    union daemoninfo di = { .nothing = 0 };
+
+    queue_daemon_request(daemonrq_saveconfig, di);
 }
 
 /*
index 59156bb..40b1cd4 100644 (file)
@@ -49,6 +49,7 @@
 int
 set_drive_state(int driveno, enum drivestate newstate, enum setstateflags flags)
 {
+    union daemoninfo di;
     struct drive *drive = &DRIVE[driveno];
     int oldstate = drive->state;
     int sdno;
@@ -78,9 +79,10 @@ set_drive_state(int driveno, enum drivestate newstate, enum setstateflags flags)
     if (newstate == drive_up) {                                    /* want to bring it up */
        if ((drive->flags & VF_OPEN) == 0)                  /* should be open, but we're not */
            init_drive(drive, 1);                           /* which changes the state again */
-    } else                                                 /* taking it down or worse */
-       queue_daemon_request(daemonrq_closedrive,           /* get the daemon to close it */
-           (union daemoninfo) drive);
+    } else {                                               /* taking it down or worse */
+       di.drive = drive;
+       queue_daemon_request(daemonrq_closedrive, di);      /* get the daemon to close it */
+    }
     if ((flags & setstate_configuring) == 0)               /* configuring? */
        save_config();                                      /* no: save the updated configuration now */
     return 1;