summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2000-10-18 18:49:42 +0000
committersos <sos@FreeBSD.org>2000-10-18 18:49:42 +0000
commit0a266a7e9b7051cf4fe900221b0dfa2334b1e067 (patch)
treea829acf0cfd267cb8dc5ac8095a48b6ea58dd2fb
parent784dd58645fccd8c95861d36439d4cad280f7b72 (diff)
downloadFreeBSD-src-0a266a7e9b7051cf4fe900221b0dfa2334b1e067.zip
FreeBSD-src-0a266a7e9b7051cf4fe900221b0dfa2334b1e067.tar.gz
Minor changes to the ATA RAID support code, remove some verbosity
and put some under bootverbose..
-rw-r--r--sys/dev/ata/ata-all.c7
-rw-r--r--sys/dev/ata/ata-all.h1
-rw-r--r--sys/dev/ata/ata-disk.c4
-rw-r--r--sys/dev/ata/ata-raid.c47
4 files changed, 15 insertions, 44 deletions
diff --git a/sys/dev/ata/ata-all.c b/sys/dev/ata/ata-all.c
index 150a47d..b5e9ce0 100644
--- a/sys/dev/ata/ata-all.c
+++ b/sys/dev/ata/ata-all.c
@@ -736,13 +736,6 @@ ata_pcisub_probe(device_t dev)
scp->chiptype = pci_get_devid(device_get_parent(dev));
- /* is this an ATA RAID setup ? */
- if (((pci_get_subclass(device_get_parent(dev)) == PCIS_STORAGE_RAID) &&
- (scp->chiptype == 0x4d33105a || scp->chiptype == 0x4d38105a ||
- scp->chiptype == 0x4d30105a || scp->chiptype == 0x0d30105a)) ||
- scp->chiptype == 0x00041103) {
- scp->flags |= ATA_RAID;
- }
return ata_probe(dev);
}
diff --git a/sys/dev/ata/ata-all.h b/sys/dev/ata/ata-all.h
index f3f1ae3..d709a81 100644
--- a/sys/dev/ata/ata-all.h
+++ b/sys/dev/ata/ata-all.h
@@ -308,7 +308,6 @@ struct ata_softc {
#define ATA_USE_16BIT 0x04
#define ATA_ATTACHED 0x08
#define ATA_QUEUED 0x10
-#define ATA_RAID 0x20
int devices; /* what is present */
#define ATA_ATA_MASTER 0x01
diff --git a/sys/dev/ata/ata-disk.c b/sys/dev/ata/ata-disk.c
index 85421c2..29acf3b 100644
--- a/sys/dev/ata/ata-disk.c
+++ b/sys/dev/ata/ata-disk.c
@@ -192,9 +192,7 @@ ad_attach(struct ata_softc *scp, int device)
}
/* if this disk belongs to an ATA RAID dont print the probe */
- if (adp->controller->flags & ATA_RAID && !ar_probe(adp))
- return;
- else
+ if (ar_probe(adp))
printf("ad%d: %luMB <%.40s> [%d/%d/%d] at ata%d-%s %s%s\n",
adp->lun, adp->total_secs / ((1024L * 1024L) / DEV_BSIZE),
AD_PARAM->model, adp->total_secs / (adp->heads * adp->sectors),
diff --git a/sys/dev/ata/ata-raid.c b/sys/dev/ata/ata-raid.c
index 5c46bf1..e353b31 100644
--- a/sys/dev/ata/ata-raid.c
+++ b/sys/dev/ata/ata-raid.c
@@ -103,17 +103,13 @@ ar_probe(struct ad_softc *adp)
case 0x4d38105a:
case 0x4d30105a:
case 0x0d30105a:
- if (ar_promise_conf(adp, &ar_table)) {
- printf("ata-raid: failed to read array configuration\n");
+ if (ar_promise_conf(adp, &ar_table))
break;
- }
return 0;
case 0x00041103:
- if (ar_highpoint_conf(adp, &ar_table)) {
- printf("ata-raid: failed to read array configuration\n");
+ if (ar_highpoint_conf(adp, &ar_table))
break;
- }
return 0;
}
return 1;
@@ -202,12 +198,6 @@ arstrategy(struct bio *bp)
buf1->bp.bio_pblkno = plba;
chunk = min(rdp->subdisk[buf1->drive]->total_secs -
rdp->reserved - plba, count);
-/* SOS */
- if (plba + chunk >
- rdp->subdisk[buf1->drive]->total_secs - rdp->reserved)
- printf("Oops! SPAN trying lba=%d > %d\n", plba + chunk,
- rdp->subdisk[buf1->drive]->total_secs-rdp->reserved);
-/* SOS */
}
else if (rdp->flags & AR_F_RAID_0) {
plba = lba / rdp->interleave;
@@ -216,23 +206,11 @@ arstrategy(struct bio *bp)
buf1->bp.bio_pblkno =
((plba / rdp->num_subdisks) * rdp->interleave) + chunk;
chunk = min(rdp->interleave - chunk, count);
-/* SOS */
- if (plba + chunk >
- rdp->subdisk[buf1->drive]->total_secs - rdp->reserved)
- printf("Oops! RAID0 trying lba=%d > %d\n", plba + chunk,
- rdp->subdisk[buf1->drive]->total_secs-rdp->reserved);
-/* SOS */
}
else {
buf1->bp.bio_pblkno = lba;
buf1->drive = 0;
chunk = count;
-/* SOS */
- if (lba + chunk >
- rdp->subdisk[buf1->drive]->total_secs - rdp->reserved)
- printf("Oops! RAID1 trying lba=%d > %d\n", lba + chunk,
- rdp->subdisk[buf1->drive]->total_secs - rdp->reserved);
-/* SOS */
}
buf1->bp.bio_pblkno += rdp->offset;
@@ -288,7 +266,7 @@ ar_done(struct bio *bp)
buf->org->bio_flags |= BIO_ERROR;
buf->org->bio_error = bp->bio_error;
}
- printf("ar%d: error\n", rdp->lun);
+ printf("ar%d: subdisk error\n", rdp->lun);
}
if (rdp->flags & AR_F_RAID_1) {
@@ -324,13 +302,15 @@ ar_highpoint_conf(struct ad_softc *adp, struct ar_config *raidp)
int array_done = 0, r;
if (ar_read(adp, 0x09, DEV_BSIZE, (char *)&info)) {
- printf("HighPoint read conf failed\n");
+ if (bootverbose)
+ printf("HighPoint read conf failed\n");
return 1;
}
/* check if this is a HighPoint RAID struct */
if (info.magic != HPT_MAGIC_OK) {
- printf("HighPoint check1 failed\n");
+ if (bootverbose)
+ printf("HighPoint check1 failed\n");
return 1;
}
@@ -445,13 +425,15 @@ ar_promise_conf(struct ad_softc *adp, struct ar_config *raidp)
lba = adp->total_secs - adp->sectors;
if (ar_read(adp, lba, 4 * DEV_BSIZE, (char *)&info)) {
- printf("Promise read conf failed\n");
+ if (bootverbose)
+ printf("Promise read conf failed\n");
return 1;
}
/* check if this is a Promise RAID struct */
if (strncmp(info.promise_id, PR_MAGIC, sizeof(PR_MAGIC))) {
- printf("Promise check1 failed\n");
+ if (bootverbose)
+ printf("Promise check1 failed\n");
return 1;
}
@@ -459,7 +441,8 @@ ar_promise_conf(struct ad_softc *adp, struct ar_config *raidp)
for (cksum = 0, ckptr = (int32_t *)&info, count = 0; count < 511; count++)
cksum += *ckptr++;
if (cksum != *ckptr) {
- printf("Promise check2 failed\n");
+ if (bootverbose)
+ printf("Promise check2 failed\n");
return 1;
}
@@ -512,7 +495,6 @@ ar_promise_conf(struct ad_softc *adp, struct ar_config *raidp)
for (j = 0; j < info.raid[i].raid0_disks; j++) {
if (info.channel == info.raid[i].disk[j].channel &&
info.device == info.raid[i].disk[j].device) {
- /*printf("ar%d: RAID subdisk %d->ad%d\n", r, j, adp->lun);*/
raidp->raid[r]->subdisk[raidp->raid[r]->num_subdisks] = adp;
raidp->raid[r]->num_subdisks++;
if (raidp->raid[r]->num_subdisks > 1 &&
@@ -527,7 +509,6 @@ ar_promise_conf(struct ad_softc *adp, struct ar_config *raidp)
for (; j < info.raid[i].total_disks; j++) {
if (info.channel == info.raid[i].disk[j].channel &&
info.device == info.raid[i].disk[j].device) {
- /*printf("ar%d: RAID mirrordisk %d->ad%d\n", r, j, adp->lun);*/
raidp->raid[r]->
mirrordisk[raidp->raid[r]->num_mirrordisks] = adp;
raidp->raid[r]->num_mirrordisks++;
@@ -557,7 +538,7 @@ ar_read(struct ad_softc *adp, u_int32_t lba, int count, char *data)
if (ata_command(adp->controller, adp->unit | ATA_D_LBA,
(count > DEV_BSIZE) ? ATA_C_READ_MUL : ATA_C_READ,
(lba >> 8) & 0xffff, (lba >> 24) & 0xff, lba & 0xff,
- 4, 0, ATA_WAIT_INTR)) {
+ count / DEV_BSIZE, 0, ATA_WAIT_INTR)) {
ata_printf(adp->controller, adp->unit, "RAID read config failed\n");
return 1;
}
OpenPOWER on IntegriCloud