diff options
| author | Søren Schmidt <sos@FreeBSD.org> | 2002-03-05 09:24:19 +0000 |
|---|---|---|
| committer | Søren Schmidt <sos@FreeBSD.org> | 2002-03-05 09:24:19 +0000 |
| commit | 11de413756de9160be6ff6bec1d8148e3f57a905 (patch) | |
| tree | c9f73969b3cb1de8b9bddf4aa0aa76b7276fdaa0 /sys/dev/ata/ata-raid.c | |
| parent | b5a8f767a62e0253ce02878cd6d69ea7f9574d1a (diff) | |
Notes
Diffstat (limited to 'sys/dev/ata/ata-raid.c')
| -rw-r--r-- | sys/dev/ata/ata-raid.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/sys/dev/ata/ata-raid.c b/sys/dev/ata/ata-raid.c index 2a3f89f2d3fd..11789bbd4952 100644 --- a/sys/dev/ata/ata-raid.c +++ b/sys/dev/ata/ata-raid.c @@ -388,6 +388,15 @@ arstrategy(struct bio *bp) biodone(bp); return; } + if (bp->bio_cmd == BIO_READ) { + if ((buf1->bp.bio_pblkno < + (rdp->disks[buf1->drive].last_lba - AR_PROXIMITY) || + buf1->bp.bio_pblkno > + (rdp->disks[buf1->drive].last_lba + AR_PROXIMITY) || + !(rdp->disks[buf1->drive].flags & AR_DF_ONLINE)) && + (rdp->disks[buf1->drive+rdp->width].flags & AR_DF_ONLINE)) + buf1->drive = buf1->drive + rdp->width; + } if (bp->bio_cmd == BIO_WRITE) { if (rdp->disks[buf1->drive + rdp->width].flags & AR_DF_ONLINE) { if (rdp->disks[buf1->drive].flags & AR_DF_ONLINE) { @@ -406,15 +415,6 @@ arstrategy(struct bio *bp) buf1->drive = buf1->drive + rdp->width; } } - if (bp->bio_cmd == BIO_READ) { - if ((buf1->bp.bio_pblkno < - (rdp->disks[buf1->drive].last_lba - AR_PROXIMITY) || - buf1->bp.bio_pblkno > - (rdp->disks[buf1->drive].last_lba + AR_PROXIMITY) || - !(rdp->disks[buf1->drive].flags & AR_DF_ONLINE)) && - (rdp->disks[buf1->drive+rdp->width].flags & AR_DF_ONLINE)) - buf1->drive = buf1->drive + rdp->width; - } buf1->bp.bio_dev = AD_SOFTC(rdp->disks[buf1->drive])->dev; buf1->bp.bio_dev->AD_STRATEGY((struct bio *)buf1); rdp->disks[buf1->drive].last_lba = buf1->bp.bio_pblkno + chunk; |
