Author: markj
Date: Wed Jan  9 17:38:47 2019
New Revision: 342890
URL: https://svnweb.freebsd.org/changeset/base/342890

Log:
  MFC r342687:
  Use g_handleattr() to reply to GEOM::candelete queries.

Modified:
  stable/12/sys/geom/concat/g_concat.c
  stable/12/sys/geom/mirror/g_mirror.c
  stable/12/sys/geom/raid/g_raid.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/geom/concat/g_concat.c
==============================================================================
--- stable/12/sys/geom/concat/g_concat.c        Wed Jan  9 17:23:59 2019        
(r342889)
+++ stable/12/sys/geom/concat/g_concat.c        Wed Jan  9 17:38:47 2019        
(r342890)
@@ -210,20 +210,16 @@ g_concat_candelete(struct bio *bp)
 {
        struct g_concat_softc *sc;
        struct g_concat_disk *disk;
-       int i, *val;
+       int i, val;
 
-       val = (int *)bp->bio_data;
-       *val = 0;
-
        sc = bp->bio_to->geom->softc;
        for (i = 0; i < sc->sc_ndisks; i++) {
                disk = &sc->sc_disks[i];
-               if (!disk->d_removed && disk->d_candelete) {
-                       *val = 1;
+               if (!disk->d_removed && disk->d_candelete)
                        break;
-               }
        }
-       g_io_deliver(bp, 0);
+       val = i < sc->sc_ndisks;
+       g_handleattr(bp, "GEOM::candelete", &val, sizeof(val));
 }
 
 static void

Modified: stable/12/sys/geom/mirror/g_mirror.c
==============================================================================
--- stable/12/sys/geom/mirror/g_mirror.c        Wed Jan  9 17:23:59 2019        
(r342889)
+++ stable/12/sys/geom/mirror/g_mirror.c        Wed Jan  9 17:38:47 2019        
(r342890)
@@ -1075,16 +1075,15 @@ g_mirror_candelete(struct bio *bp)
 {
        struct g_mirror_softc *sc;
        struct g_mirror_disk *disk;
-       int *val;
+       int val;
 
        sc = bp->bio_to->private;
        LIST_FOREACH(disk, &sc->sc_disks, d_next) {
                if (disk->d_flags & G_MIRROR_DISK_FLAG_CANDELETE)
                        break;
        }
-       val = (int *)bp->bio_data;
-       *val = (disk != NULL);
-       g_io_deliver(bp, 0);
+       val = disk != NULL;
+       g_handleattr(bp, "GEOM::candelete", &val, sizeof(val));
 }
 
 static void

Modified: stable/12/sys/geom/raid/g_raid.c
==============================================================================
--- stable/12/sys/geom/raid/g_raid.c    Wed Jan  9 17:23:59 2019        
(r342889)
+++ stable/12/sys/geom/raid/g_raid.c    Wed Jan  9 17:38:47 2019        
(r342890)
@@ -1075,23 +1075,19 @@ g_raid_candelete(struct g_raid_softc *sc, struct bio *
        struct g_provider *pp;
        struct g_raid_volume *vol;
        struct g_raid_subdisk *sd;
-       int *val;
-       int i;
+       int i, val;
 
-       val = (int *)bp->bio_data;
        pp = bp->bio_to;
        vol = pp->private;
-       *val = 0;
        for (i = 0; i < vol->v_disks_count; i++) {
                sd = &vol->v_subdisks[i];
                if (sd->sd_state == G_RAID_SUBDISK_S_NONE)
                        continue;
-               if (sd->sd_disk->d_candelete) {
-                       *val = 1;
+               if (sd->sd_disk->d_candelete)
                        break;
-               }
        }
-       g_io_deliver(bp, 0);
+       val = i < vol->v_disks_count;
+       g_handleattr(bp, "GEOM::candelete", &val, sizeof(val));
 }
 
 static void
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to