PLEX
return PLEX[Plexno(dev)].sdnos[(minor(dev) >> VINUM_SD_SHIFT) & (MASK(VINUM_SD_WIDTH))];
if (PLEX != NULL) {
Free(PLEX);
PLEX = (struct plex *) Malloc(sizeof(struct plex) * INITIAL_PLEXES);
CHECKALLOC(PLEX, "vinum: no memory\n");
bzero(PLEX, sizeof(struct plex) * INITIAL_PLEXES);
plex = &PLEX[index];
PLEX[index].flags &= ~VF_OPEN; /* reset our flags */
plex = &PLEX[sd->plexno]; /* now take a look at our plex */
strcpy(sd->name, PLEX[sd->plexno].name); /* take it from there */
plex = &PLEX[plexno]; /* and point to it */
if (PLEX[namedplexno].state == plex_referenced) { /* we've been told about this one */
*plex = PLEX[namedplexno]; /* get the info */
PLEX[namedplexno].state = plex_unallocated; /* and deallocate the other one */
made_plex(&PLEX[namedplexno]);
PLEX[plexno].state = plex_referenced; /* we know something about it */
PLEX[plexno].volno = volno; /* and this volume references it */
vol->size = u64max(vol->size, PLEX[vol->plex[i]].length);
plex = &PLEX[plexno];
struct plex *plex = &PLEX[sd->plexno]; /* point to our plex */
struct plex *plex = &PLEX[plexno];
struct plex *plex = &PLEX[plexno];
invalidate_subdisks(&PLEX[plexno], sd_stale); /* make the subdisks invalid */
plex = &PLEX[vol->plex[plexno]];
PLEX[plexno].volno = volno; /* note the number of our volume */
vol->size = u64max(vol->size, PLEX[vol->plex[i]].length);
plex = &PLEX[plexno]; /* point to the plex */
PLEX[sd->plexno].subdisks--; /* one less subdisk */
if (sd->plexno >= 0 && PLEX[sd->plexno].volno >= 0) {
VOL[PLEX[sd->plexno].volno].name,
if (PLEX[plexno].state == plex_unallocated) /* bingo */
EXPAND(PLEX, struct plex, vinum_conf.plexes_allocated, INITIAL_PLEXES);
plex = &PLEX[plexno]; /* this one is ours */
if (strcmp(PLEX[plexno].name, name) == 0) /* found it */
plex = &PLEX[plexno]; /* point to it */
plex = &PLEX[plexno];
PLEX[rqe->rqg->plexno].reads++;
PLEX[rqe->rqg->plexno].bytes_read += bp->b_bcount;
if (PLEX[rqe->rqg->plexno].volno >= 0) { /* volume I/O, not plex */
VOL[PLEX[rqe->rqg->plexno].volno].reads++;
VOL[PLEX[rqe->rqg->plexno].volno].bytes_read += bp->b_bcount;
PLEX[rqe->rqg->plexno].writes++;
PLEX[rqe->rqg->plexno].bytes_written += bp->b_bcount;
if (PLEX[rqe->rqg->plexno].volno >= 0) { /* volume I/O, not plex */
VOL[PLEX[rqe->rqg->plexno].volno].writes++;
VOL[PLEX[rqe->rqg->plexno].volno].bytes_written += bp->b_bcount;
bcopy(&PLEX[index], data, sizeof(struct plex));
||(sdno >= PLEX[index].subdisks)) {
bcopy(&SD[PLEX[index].sdnos[sdno]], data, sizeof(struct sd));
&& (PLEX[plexno].state > plex_referenced))
return &PLEX[plexno];
struct plex *plex = &PLEX[msg->index];
plex = &PLEX[sd->plexno];
plex = &PLEX[plexno];
plex = &PLEX[plexno]; /* point to the plex */
rqg->lock = lockrange(rqg->lockbase, rqg->rq->bio->bio_buf, &PLEX[rqg->plexno]);
plex = &PLEX[plexno]; /* point to the plex */
dev = PLEX[sd->plexno].plex_dev;
plex = &PLEX[plexno];
plex = &PLEX[sd->plexno]; /* point to plex */
plex = &PLEX[sd->plexno]; /* point to plex */
plex = &PLEX[msg->index];
PLEX[msg->index].state = msg->state;
sdstatemap(&PLEX[sd->plexno]); /* count up subdisks */
&& (((PLEX[sd->plexno].state < plex_firstup)
|| (PLEX[sd->plexno].subdisks > 1))))
|| ((vpstate(&PLEX[sd->plexno]) & volplex_otherup) == 0)
|| (isparity((&PLEX[sd->plexno]))
plex = &PLEX[sd->plexno];
plex = &PLEX[plexno]; /* point to our plex */
plex = &PLEX[plexno]; /* point to the plex */
plex = &PLEX[plexno]; /* point to our plex */
struct plex *plex = &PLEX[vol->plex[plexno]]; /* point to the plex */
struct plex *plex = &PLEX[sd->plexno];
if (&PLEX[vol->plex[plexno]] == plex) { /* us */
if (PLEX[vol->plex[plexno]].state >= plex_degraded) /* are we up? */
if (PLEX[vol->plex[plexno]].state >= plex_degraded) /* not us */
if (PLEX[objindex].state != plex_up) /* set status on whether we really did it */
return PLEX[Plexno(dev)].sdnos[(minor(dev) >> VINUM_SD_SHIFT) & (MASK(VINUM_SD_WIDTH))];