- seg = bp->b_blkno / DMMAX;
- dev = swdevt[seg % nswdev].sw_dev;
- seg /= nswdev;
- bp->b_blkno = seg*DMMAX + off;
+ if (nswdev > 1) {
+ off = bp->b_blkno % dmmax;
+ if (off+sz > dmmax) {
+ bp->b_flags |= B_ERROR;
+ iodone(bp);
+ return;
+ }
+ seg = bp->b_blkno / dmmax;
+ dev = swdevt[seg % nswdev].sw_dev;
+ seg /= nswdev;
+ bp->b_blkno = seg*dmmax + off;
+ } else
+ dev = swdevt[0].sw_dev;