summaryrefslogtreecommitdiff
path: root/sys/dev/ata/ata-raid.c
diff options
context:
space:
mode:
authorSøren Schmidt <sos@FreeBSD.org>2002-03-05 09:24:19 +0000
committerSøren Schmidt <sos@FreeBSD.org>2002-03-05 09:24:19 +0000
commit11de413756de9160be6ff6bec1d8148e3f57a905 (patch)
treec9f73969b3cb1de8b9bddf4aa0aa76b7276fdaa0 /sys/dev/ata/ata-raid.c
parentb5a8f767a62e0253ce02878cd6d69ea7f9574d1a (diff)
Notes
Diffstat (limited to 'sys/dev/ata/ata-raid.c')
-rw-r--r--sys/dev/ata/ata-raid.c18
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;