diff --git a/sys/dev/raid/vinum/vinumrequest.c b/sys/dev/raid/vinum/vinumrequest.c --- a/sys/dev/raid/vinum/vinumrequest.c +++ b/sys/dev/raid/vinum/vinumrequest.c @@ -491,8 +491,10 @@ sd = NULL; /* (keep compiler quiet) */ for (sdno = 0; sdno < plex->subdisks; sdno++) { sd = &SD[plex->sdnos[sdno]]; - if (*diskaddr < sd->plexoffset) /* we must have a hole, */ + if (*diskaddr < sd->plexoffset) { /* we must have a hole, */ status = REQUEST_DEGRADED; /* note the fact */ + continue; /* skip past the hole */ + } if (*diskaddr < (sd->plexoffset + sd->sectors)) { /* the request starts in this subdisk */ rqg = allocrqg(rq, 1); /* space for the request */ if (rqg == NULL) { /* malloc failed */