diff options
author | brosenkr <brosenkr> | 2000-08-04 12:21:53 +0000 |
---|---|---|
committer | brosenkr <brosenkr> | 2000-08-04 12:21:53 +0000 |
commit | 0e7917f3055d20e2487eaffabbefd557f547def9 (patch) | |
tree | 863095380b3fa69903eef861219ed618be284d97 /isys | |
parent | 9755fe7f4f14f9c0d5b3f5cf488c1c180f4679a7 (diff) | |
download | anaconda-0e7917f3055d20e2487eaffabbefd557f547def9.tar.gz anaconda-0e7917f3055d20e2487eaffabbefd557f547def9.tar.xz anaconda-0e7917f3055d20e2487eaffabbefd557f547def9.zip |
Support new SmartArray controller, required by SAP, patch from Karsten
Diffstat (limited to 'isys')
-rw-r--r-- | isys/probe.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/isys/probe.c b/isys/probe.c index 7afe49dfb..c702c2907 100644 --- a/isys/probe.c +++ b/isys/probe.c @@ -11,6 +11,7 @@ static int dac960GetDevices(struct knownDevices * devices); static int CompaqSmartArrayGetDevices(struct knownDevices * devices); +static int CompaqSmartArray5300GetDevices(struct knownDevices * devices); static int readFD (int fd, char **buf) { @@ -224,6 +225,7 @@ int kdFindScsiList(struct knownDevices * devices, int code) { if (access("/proc/scsi/scsi", R_OK)) { dac960GetDevices(devices); CompaqSmartArrayGetDevices(devices); + CompaqSmartArray5300GetDevices(devices); return 0; } @@ -241,6 +243,7 @@ int kdFindScsiList(struct knownDevices * devices, int code) { if (!strncmp(buf, "Attached devices: none", 22)) { dac960GetDevices(devices); CompaqSmartArrayGetDevices(devices); + CompaqSmartArray5300GetDevices(devices); goto bye; } @@ -366,6 +369,7 @@ int kdFindScsiList(struct knownDevices * devices, int code) { dac960GetDevices(devices); CompaqSmartArrayGetDevices(devices); + CompaqSmartArray5300GetDevices(devices); qsort(devices->known, devices->numKnown, sizeof(*devices->known), sortDevices); @@ -460,3 +464,33 @@ static int CompaqSmartArrayGetDevices(struct knownDevices * devices) { return 0; } + +static int CompaqSmartArray5300GetDevices(struct knownDevices * devices) { + struct kddevice newDevice; + FILE *f; + char buf[256]; + char *ptr; + int numMatches = 0, ctlNum = 0; + char ctl[40]; + + sprintf(ctl, "/proc/cciss/cciss%d", ctlNum++); + + while ((f = fopen(ctl, "r"))){ + while (fgets(buf, sizeof(buf) - 1, f)) { + if (!strncmp(buf, "cciss/", 6)) { + ptr = strchr(buf, ':'); + *ptr = '\0'; + + if (!deviceKnown(devices, buf)) { + newDevice.name = strdup(buf); + newDevice.model = strdup("Compaq RAID logical disk"); + newDevice.class = CLASS_HD; + addDevice(devices, newDevice); + } + } + } + sprintf(ctl, "/proc/cciss/cciss%d", ctlNum++); + } + + return 0; +} |