Use raid1c-specific meta-data while looking for a key disk that
belongs to a RAID 1C volume.

By dumb luck this is only a cosmetic issue, because struct layout
happens to put the field in the same place.

ok?
 
diff a87e94ce1617958c99b63ed0a056e46650a27375 
ba39970f6365aeeb1b486101f6573c60b7f88573
commit - a87e94ce1617958c99b63ed0a056e46650a27375
commit + ba39970f6365aeeb1b486101f6573c60b7f88573
blob - 762f6ee57d5e7902c097d71830fea6e63080e7b5
blob + 737fafbaad517c55293c69f0a6ddcb8fbb720c83
--- sys/dev/softraid.c
+++ sys/dev/softraid.c
@@ -2593,10 +2593,13 @@ sr_ioctl_vol(struct sr_softc *sc, struct bioc_vol *bv)
                bv->bv_nodisk = sd->sd_meta->ssdi.ssd_chunk_no;
 
 #ifdef CRYPTO
-               if ((sd->sd_meta->ssdi.ssd_level == 'C' ||
-                   sd->sd_meta->ssdi.ssd_level == 0x1C) &&
+               if (sd->sd_meta->ssdi.ssd_level == 'C' &&
                    sd->mds.mdd_crypto.key_disk != NULL)
                        bv->bv_nodisk++;
+
+               if (sd->sd_meta->ssdi.ssd_level == 0x1C &&
+                   sd->mds.mdd_raid1c.sr1c_crypto.key_disk != NULL)
+                       bv->bv_nodisk++;
 #endif
                if (bv->bv_status == BIOC_SVREBUILD)
                        bv->bv_percent = sr_rebuild_percent(sd);
@@ -2650,10 +2653,13 @@ sr_ioctl_disk(struct sr_softc *sc, struct bioc_disk *b
                        src = sd->sd_vol.sv_chunks[bd->bd_diskid];
 #ifdef CRYPTO
                else if (bd->bd_diskid == sd->sd_meta->ssdi.ssd_chunk_no &&
-                   (sd->sd_meta->ssdi.ssd_level == 'C' ||
-                   sd->sd_meta->ssdi.ssd_level == 0x1C) &&
+                   sd->sd_meta->ssdi.ssd_level == 'C' &&
                    sd->mds.mdd_crypto.key_disk != NULL)
                        src = sd->mds.mdd_crypto.key_disk;
+               else if (bd->bd_diskid == sd->sd_meta->ssdi.ssd_chunk_no &&
+                   sd->sd_meta->ssdi.ssd_level == 0x1C &&
+                   sd->mds.mdd_raid1c.sr1c_crypto.key_disk != NULL)
+                       src = sd->mds.mdd_crypto.key_disk;
 #endif
                else
                        break;

Reply via email to