rangelock
struct rangelock *lock; /* lock for this transfer */
struct rangelock *lockinfo;
struct rangelock lockinfo;
void unlockrange(int plexno, struct rangelock *);
plex->lock = (struct rangelock *)
Malloc(PLEX_LOCKS * sizeof(struct rangelock));
bzero((char *) plex->lock, PLEX_LOCKS * sizeof(struct rangelock));
struct buf *parityrebuild(struct plex *, vinum_off_t, int, enum parityop, struct rangelock **, off_t *);
struct rangelock *lockrange(vinum_off_t stripe, struct buf *bp, struct plex *plex);
struct rangelock *
struct rangelock *lock;
struct rangelock *pos; /* position of first free lock */
struct rangelock info;
unlockrange(int plexno, struct rangelock *lock)
bcopy(info.lockinfo, &rqip->info.lockinfo, sizeof(struct rangelock));
struct rangelock *lock; /* lock on stripe */
struct rangelock **lockp,
struct rangelock *lock; /* for locking */
struct rangelock *lock; /* ranges of locked addresses */