* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER6
@ 2006-04-18 11:10 Konstantin Khorenko
0 siblings, 0 replies; 10+ messages in thread
From: Konstantin Khorenko @ 2006-04-18 11:10 UTC (permalink / raw)
To: James Bottomley; +Cc: linux-scsi, Ingo Flaschberger, Vasily Averin
Hello James,
excuse me, but i have a question concerning following changes, made for support
of Compaq Fiber Channel Array RM4000.
This patch changes logic for ALL devices which have scsi_level detected as
SCSI_UNKNOWN,
all such devices now won't store LUN values in scsi commands and ALL of them
would report their luns.
Do you know if there are such devices (with scsi_level detected as
SCSI_UNKNOWN) other then Compaq Fiber Channel Array RM4000?
Wouldn't these changes brake their support?
http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=4d7db04a7a69099accd84984a78c64d2178252f1
http://marc.theaimsgroup.com/?l=linux-scsi&m=114391012120176&w=2
Hunks from the patch i'm talking about:
linux-2.6.16/drivers/scsi/scsi.c:
* If SCSI-2 or lower, store the LUN value in cmnd.
*/
- if (cmd->device->scsi_level <= SCSI_2) {
+ if (cmd->device->scsi_level <= SCSI_2 &&
+ cmd->device->scsi_level != SCSI_UNKNOWN) {
cmd->cmnd[1] = (cmd->cmnd[1] & 0x1f) |
(cmd->device->lun << 5 & 0xe0);
}
linux-2.6.16/drivers/scsi/scsi_scan.c:
* Also allow SCSI-2 and SCSI-UNKNOWN if BLIST_REPORTLUN is set and host
* adapter does support more than 8 LUNs.
*/
- if ((bflags & BLIST_NOREPORTLUN) ||
- starget->scsi_level < SCSI_2 ||
- (starget->scsi_level < SCSI_3 &&
- (!(bflags & BLIST_REPORTLUN) || shost->max_lun <= 8)) )
+ if (bflags & BLIST_NOREPORTLUN)
+ return 1;
+ if (starget->scsi_level < SCSI_2 &&
+ starget->scsi_level != SCSI_UNKNOWN)
+ return 1;
+ if (starget->scsi_level < SCSI_3 &&
+ (!(bflags & BLIST_REPORTLUN) || shost->max_lun <= 8))
return 1;
Thank you.
--
Konstantin Khorenko,
SWsoft, Inc.
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch
@ 2006-03-29 18:22 James Bottomley
2006-03-29 18:35 ` Ingo Flaschberger
0 siblings, 1 reply; 10+ messages in thread
From: James Bottomley @ 2006-03-29 18:22 UTC (permalink / raw)
To: Ingo Flaschberger; +Cc: Linux-SCSI Mailing List
On Wed, 2006-03-29 at 19:53 +0200, Ingo Flaschberger wrote:
> > Really no to this we're trying to get away from changing actual reported
> > device information. I assume the device reports SCSI-3
>
> The device reports "zero" and thats why I need to force SCSI2!
> Its better to force SCSI2 in one position than to deal with "SCSI_UNKNOWN"
> in severall position?
Why? We're actually trying to make SCSI_UNKNOWN work for some sbp2 and
USB storage as well. What specific problems does it cause?
James
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch 2006-03-29 18:22 Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch James Bottomley @ 2006-03-29 18:35 ` Ingo Flaschberger 2006-03-29 18:43 ` James Bottomley 0 siblings, 1 reply; 10+ messages in thread From: Ingo Flaschberger @ 2006-03-29 18:35 UTC (permalink / raw) To: James Bottomley; +Cc: Linux-SCSI Mailing List Hello James, > On Wed, 2006-03-29 at 19:53 +0200, Ingo Flaschberger wrote: >>> Really no to this we're trying to get away from changing actual reported >>> device information. I assume the device reports SCSI-3 >> >> The device reports "zero" and thats why I need to force SCSI2! >> Its better to force SCSI2 in one position than to deal with "SCSI_UNKNOWN" >> in severall position? > > Why? We're actually trying to make SCSI_UNKNOWN work for some sbp2 and > USB storage as well. What specific problems does it cause? Ok... Then I need to force something in this: scsi_report_lun_scan: if ((bflags & BLIST_NOREPORTLUN) || starget->scsi_level < SCSI_2 || (starget->scsi_level < SCSI_3 && (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) ) return 1; Version 1: if ((bflags & BLIST_NOREPORTLUN) || (starget->scsi_level < SCSI_3 && (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) ) return 1; Version 2: if ((bflags & BLIST_NOREPORTLUN) || (starget->scsi_level < SCSI_2 && !(bflags & BLIST_REPORTLUN3))|| (starget->scsi_level < SCSI_3 && (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) ) return 1; Which one? Kind regards, Ingo ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch 2006-03-29 18:35 ` Ingo Flaschberger @ 2006-03-29 18:43 ` James Bottomley 2006-03-29 18:54 ` Ingo Flaschberger 0 siblings, 1 reply; 10+ messages in thread From: James Bottomley @ 2006-03-29 18:43 UTC (permalink / raw) To: Ingo Flaschberger; +Cc: Linux-SCSI Mailing List On Wed, 2006-03-29 at 20:35 +0200, Ingo Flaschberger wrote: > scsi_report_lun_scan: > if ((bflags & BLIST_NOREPORTLUN) || > starget->scsi_level < SCSI_2 || > (starget->scsi_level < SCSI_3 && > (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) ) > return 1; Doesn't SCSI_UNKNOWN satisfy the starget->scsi_level < SCSI_2, so the additional NOREPORTLUN should be unnecessary? James ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch 2006-03-29 18:43 ` James Bottomley @ 2006-03-29 18:54 ` Ingo Flaschberger 2006-03-29 19:03 ` James Bottomley 0 siblings, 1 reply; 10+ messages in thread From: Ingo Flaschberger @ 2006-03-29 18:54 UTC (permalink / raw) To: James Bottomley; +Cc: Linux-SCSI Mailing List Hello James, > On Wed, 2006-03-29 at 20:35 +0200, Ingo Flaschberger wrote: >> scsi_report_lun_scan: >> if ((bflags & BLIST_NOREPORTLUN) || >> starget->scsi_level < SCSI_2 || >> (starget->scsi_level < SCSI_3 && >> (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) ) >> return 1; > > Doesn't SCSI_UNKNOWN satisfy the starget->scsi_level < SCSI_2, so the > additional NOREPORTLUN should be unnecessary? Aeh.... I need to avoid the return 1; and go on in the function..... Kind regards, Ingo ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch 2006-03-29 18:54 ` Ingo Flaschberger @ 2006-03-29 19:03 ` James Bottomley 2006-03-29 20:23 ` Ingo Flaschberger 0 siblings, 1 reply; 10+ messages in thread From: James Bottomley @ 2006-03-29 19:03 UTC (permalink / raw) To: Ingo Flaschberger; +Cc: Linux-SCSI Mailing List On Wed, 2006-03-29 at 20:54 +0200, Ingo Flaschberger wrote: > I need to avoid the return 1; and go on in the function..... Oh, OK, then the third line should be (starget->scsi_level < SCSI_3 || starget->scsi_level == SCSI_UNKNOWN) which should do it. There are several other places for that ... a patch was posted for some of them quite a while ago. James ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch 2006-03-29 19:03 ` James Bottomley @ 2006-03-29 20:23 ` Ingo Flaschberger 2006-03-29 21:11 ` James Bottomley 0 siblings, 1 reply; 10+ messages in thread From: Ingo Flaschberger @ 2006-03-29 20:23 UTC (permalink / raw) To: James Bottomley; +Cc: Linux-SCSI Mailing List [-- Attachment #1: Type: TEXT/PLAIN, Size: 1157 bytes --] Hello James, > On Wed, 2006-03-29 at 20:54 +0200, Ingo Flaschberger wrote: >> I need to avoid the return 1; and go on in the function..... > > Oh, OK, then the third line should be (starget->scsi_level < SCSI_3 || > starget->scsi_level == SCSI_UNKNOWN) > > which should do it. There are several other places for that ... a patch > was posted for some of them quite a while ago. When you mean: if ((bflags & BLIST_NOREPORTLUN) || starget->scsi_level < SCSI_2 || ((starget->scsi_level < SCSI_3 || starget->scsi_level == SCSI_UNKNOWN) && (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) ) return 1; That also hits return. I'm also afraid the trigger other problems whith SCSI_UNKNOWN so I suggest this: if ((bflags & BLIST_NOREPORTLUN) || ((starget->scsi_level < SCSI_2) && !(bflags & BLIST_REPORTLUN0)) || ((starget->scsi_level < SCSI_3) && (!((bflags & BLIST_REPORTLUN2) || (bflags & BLIST_REPORTLUN0)) || shost->max_lun <= 8)) ) return 1; Attached the whole patch. bye & hopeful, Ingo [-- Attachment #2: Type: TEXT/PLAIN, Size: 7619 bytes --] diff -r -u linux-2.6.16_org/Documentation/scsi/RA4x00.txt linux-2.6.16/Documentation/scsi/RA4x00.txt --- linux-2.6.16_org/Documentation/scsi/RA4x00.txt 2006-03-30 00:19:32.000000000 +0200 +++ linux-2.6.16/Documentation/scsi/RA4x00.txt 2006-03-29 20:35:17.000000000 +0200 @@ -0,0 +1,20 @@ +Compaq RA4x00 Fiber Channel Array support if@xip.at 29.03.2006 + crossip communications gmbh + +In 2.4.x linux kernels the cpqfc driver supported the Compaq RA4x00 Fiber +Channel Array. Limitation in 2.4.x kernels was that the RA4x00 only worked with +a cpqfc supported fiber channel adapter (Tachyon chipset). + +In 2.6.x linux kernels the support for the cpqfc has been dropped because of +very awful code and resulting porting problems from 2.4.x to 2.6.x. + +Support for the RA4x00 is now directly in the linux kernel but need some +special configuration: +*) Use a already supported fiber channel cards +*) Update the RA4x00 to firmware version 2.60 +*) Load the scsi_mod modules with option: max_luns=4294967295 + + +More information about the RA4x00 could be found: +http://hp.com +http://ra4x00.xip.at diff -r -u linux-2.6.16_org/drivers/scsi/scsi.c linux-2.6.16/drivers/scsi/scsi.c --- linux-2.6.16_org/drivers/scsi/scsi.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/scsi.c 2006-03-29 20:02:53.000000000 +0200 @@ -35,6 +35,10 @@ * Jiffies wrap fixes (host->resetting), 3 Dec 1998 Andrea Arcangeli * * out_of_space hacks, D. Gilbert (dpg) 990608 + * + * Added Compaq RA4x00 Fiber Channel Array support, 29.03.2006 + * crossip communications gmbh - Ingo Flaschberger <if@xip.at> + * */ #include <linux/module.h> @@ -567,7 +571,7 @@ /* * If SCSI-2 or lower, store the LUN value in cmnd. */ - if (cmd->device->scsi_level <= SCSI_2) { + if ((cmd->device->scsi_level <= SCSI_2) && (!cmd->device->nolun_in_cdb)) { cmd->cmnd[1] = (cmd->cmnd[1] & 0x1f) | (cmd->device->lun << 5 & 0xe0); } diff -r -u linux-2.6.16_org/drivers/scsi/scsi_devinfo.c linux-2.6.16/drivers/scsi/scsi_devinfo.c --- linux-2.6.16_org/drivers/scsi/scsi_devinfo.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/scsi_devinfo.c 2006-03-29 23:58:27.000000000 +0200 @@ -132,6 +132,10 @@ {"CMD", "CRA-7280", NULL, BLIST_SPARSELUN}, /* CMD RAID Controller */ {"CNSI", "G7324", NULL, BLIST_SPARSELUN}, /* Chaparral G7324 RAID */ {"CNSi", "G8324", NULL, BLIST_SPARSELUN}, /* Chaparral G8324 RAID */ + {"COMPAQ", "ARRAY CONTROLLER", "2.60", BLIST_SPARSELUN | BLIST_REPORTLUN0 | + BLIST_LARGELUN | BLIST_MAX_512K}, /* Compaq RA4x00 */ + {"COMPAQ", "LOGICAL VOLUME", "2.60", BLIST_REPORTLUN0 | BLIST_NOLUN_IN_CDB | + BLIST_MAX_512K}, /* Compaq RA4x00 */ {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN}, {"COMPAQ", "CR3500", NULL, BLIST_FORCELUN}, {"COMPAQ", "MSA1000", NULL, BLIST_SPARSELUN | BLIST_NOSTARTONADD}, diff -r -u linux-2.6.16_org/drivers/scsi/scsi_scan.c linux-2.6.16/drivers/scsi/scsi_scan.c --- linux-2.6.16_org/drivers/scsi/scsi_scan.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/scsi_scan.c 2006-03-30 00:15:53.000000000 +0200 @@ -23,6 +23,11 @@ * all of the LUNs returned by the REPORT LUN; else, * sequentially scan LUNs up until some maximum is reached, * or a LUN is seen that cannot have a device attached to it. + * + * Modification history: + * - Added Compaq RA4x00 Fiber Channel Array support, 29.03.2006 + * crossip communications gmbh - Ingo Flaschberger <if@xip.at> + * */ #include <linux/config.h> @@ -647,6 +652,7 @@ case TYPE_MEDIUM_CHANGER: case TYPE_ENCLOSURE: case TYPE_COMM: + case TYPE_RAID: case TYPE_RBC: sdev->writeable = 1; break; @@ -715,6 +721,22 @@ if (*bflags & BLIST_SELECT_NO_ATN) sdev->select_no_atn = 1; + /* + * Maximum 512K cdb transfer length + * broken RA4x00 Compaq Disk Array + */ + if (*bflags & BLIST_MAX_512K) { + sdev->max_512k = 1; + } + + /* + * Do not send LUN in SCSI2 cdb + * broken RA4x00 Compaq Disk Array + */ + if (*bflags & BLIST_NOLUN_IN_CDB) { + sdev->nolun_in_cdb = 1; + } + /* * Some devices may not want to have a start command automatically * issued when a device is added. @@ -1089,9 +1111,11 @@ * support more than 8 LUNs. */ if ((bflags & BLIST_NOREPORTLUN) || - starget->scsi_level < SCSI_2 || - (starget->scsi_level < SCSI_3 && - (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) ) + ((starget->scsi_level < SCSI_2) && + !(bflags & BLIST_REPORTLUN0)) || + ((starget->scsi_level < SCSI_3) && + (!((bflags & BLIST_REPORTLUN2) || (bflags & BLIST_REPORTLUN0)) + || shost->max_lun <= 8)) ) return 1; if (bflags & BLIST_NOLUN) return 0; diff -r -u linux-2.6.16_org/drivers/scsi/sd.c linux-2.6.16/drivers/scsi/sd.c --- linux-2.6.16_org/drivers/scsi/sd.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/sd.c 2006-03-29 20:03:17.000000000 +0200 @@ -22,6 +22,8 @@ * - Badari Pulavarty <pbadari@us.ibm.com>, Matthew Wilcox * <willy@debian.org>, Kurt Garloff <garloff@suse.de>: * Support 32k/1M disks. + * - Added Compaq RA4x00 Fiber Channel Array support, 29.03.2006 + * crossip communications gmbh - Ingo Flaschberger <if@xip.at> * * Logging policy (needs CONFIG_SCSI_LOGGING defined): * - setting up transfer: SCSI_LOG_HLQUEUE levels 1 and 2 @@ -344,8 +346,14 @@ SCpnt->cmnd[14] = SCpnt->cmnd[15] = 0; } else if ((this_count > 0xff) || (block > 0x1fffff) || SCpnt->device->use_10_for_rw) { - if (this_count > 0xffff) - this_count = 0xffff; + if (SCpnt->device->max_512k) { + if (this_count > 0x200) { + this_count = 0x200; + } + } else { + if (this_count > 0xffff) + this_count = 0xffff; + } SCpnt->cmnd[0] += READ_10 - READ_6; SCpnt->cmnd[1] |= blk_fua_rq(rq) ? 0x8 : 0; diff -r -u linux-2.6.16_org/include/scsi/scsi_device.h linux-2.6.16/include/scsi/scsi_device.h --- linux-2.6.16_org/include/scsi/scsi_device.h 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/include/scsi/scsi_device.h 2006-03-29 19:30:26.000000000 +0200 @@ -112,6 +112,8 @@ * this device */ unsigned expecting_cc_ua:1; /* Expecting a CHECK_CONDITION/UNIT_ATTN * because we did a bus reset. */ + unsigned max_512k:1; /* maximum 512K cdb transfer length */ + unsigned nolun_in_cdb:1; /* do not send LUN number in cdb */ unsigned use_10_for_rw:1; /* first try 10-byte read / write */ unsigned use_10_for_ms:1; /* first try 10-byte mode sense/select */ unsigned skip_ms_page_8:1; /* do not use MODE SENSE page 0x08 */ diff -r -u linux-2.6.16_org/include/scsi/scsi_devinfo.h linux-2.6.16/include/scsi/scsi_devinfo.h --- linux-2.6.16_org/include/scsi/scsi_devinfo.h 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/include/scsi/scsi_devinfo.h 2006-03-29 23:00:29.000000000 +0200 @@ -28,4 +28,8 @@ #define BLIST_NO_ULD_ATTACH 0x100000 /* device is actually for RAID config */ #define BLIST_SELECT_NO_ATN 0x200000 /* select without ATN */ #define BLIST_RETRY_HWERROR 0x400000 /* retry HARDWARE_ERROR */ +#define BLIST_REPORTLUN0 0x800000 /* try REPORT_LUNS even for SCSI-UNKNOWN devs + (if HBA supports more than 8 LUNs) */ +#define BLIST_MAX_512K 0x1000000 /* maximum 512K cdb transfer length */ +#define BLIST_NOLUN_IN_CDB 0x2000000 /* do not send LUN number in cdb */ #endif ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch 2006-03-29 20:23 ` Ingo Flaschberger @ 2006-03-29 21:11 ` James Bottomley 2006-03-30 10:53 ` Ingo Flaschberger 0 siblings, 1 reply; 10+ messages in thread From: James Bottomley @ 2006-03-29 21:11 UTC (permalink / raw) To: Ingo Flaschberger; +Cc: Linux-SCSI Mailing List On Wed, 2006-03-29 at 22:23 +0200, Ingo Flaschberger wrote: > When you mean: > if ((bflags & BLIST_NOREPORTLUN) || > starget->scsi_level < SCSI_2 || > ((starget->scsi_level < SCSI_3 || > starget->scsi_level == SCSI_UNKNOWN) && > (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) ) > return 1; > That also hits return. Then invert the SCSI2 test (starget->scsi_level < SCSI_2 && starget->scsi_level != SCSI_UNKNOWN). > I'm also afraid the trigger other problems whith SCSI_UNKNOWN so I suggest > this: > > if ((bflags & BLIST_NOREPORTLUN) || > ((starget->scsi_level < SCSI_2) && > !(bflags & BLIST_REPORTLUN0)) || > ((starget->scsi_level < SCSI_3) && > (!((bflags & BLIST_REPORTLUN2) || (bflags & BLIST_REPORTLUN0)) > || shost->max_lun <= 8)) ) > return 1; The issue is that I think we can do this without any extra blacklist flags at all ... that's the goal as I see it. The test for Unknown should also be in the cdb modifier case, since that only needs to be done for SCSI-2 and SCSI-1 James ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch 2006-03-29 21:11 ` James Bottomley @ 2006-03-30 10:53 ` Ingo Flaschberger 2006-03-30 12:58 ` Matthew Wilcox 0 siblings, 1 reply; 10+ messages in thread From: Ingo Flaschberger @ 2006-03-30 10:53 UTC (permalink / raw) To: James Bottomley; +Cc: Linux-SCSI Mailing List [-- Attachment #1: Type: TEXT/PLAIN, Size: 526 bytes --] Hello James, > On Wed, 2006-03-29 at 22:23 +0200, Ingo Flaschberger wrote: >> When you mean: >> if ((bflags & BLIST_NOREPORTLUN) || >> starget->scsi_level < SCSI_2 || >> ((starget->scsi_level < SCSI_3 || >> starget->scsi_level == SCSI_UNKNOWN) && >> (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) ) >> return 1; >> That also hits return. > > Then invert the SCSI2 test And need to do some checks in SCSI-3 also. See the attached patch version 2. Bye, Ingo [-- Attachment #2: Type: TEXT/PLAIN, Size: 7145 bytes --] diff -r -u linux-2.6.16_org/Documentation/scsi/RA4x00.txt linux-2.6.16/Documentation/scsi/RA4x00.txt --- linux-2.6.16_org/Documentation/scsi/RA4x00.txt 2006-03-30 00:19:32.000000000 +0200 +++ linux-2.6.16/Documentation/scsi/RA4x00.txt 2006-03-29 20:35:17.000000000 +0200 @@ -0,0 +1,20 @@ +Compaq RA4x00 Fiber Channel Array support if@xip.at 29.03.2006 + crossip communications gmbh + +In 2.4.x linux kernels the cpqfc driver supported the Compaq RA4x00 Fiber +Channel Array. Limitation in 2.4.x kernels was that the RA4x00 only worked with +a cpqfc supported fiber channel adapter (Tachyon chipset). + +In 2.6.x linux kernels the support for the cpqfc has been dropped because of +very awful code and resulting porting problems from 2.4.x to 2.6.x. + +Support for the RA4x00 is now directly in the linux kernel but need some +special configuration: +*) Use a already supported fiber channel cards +*) Update the RA4x00 to firmware version 2.60 +*) Load the scsi_mod modules with option: max_luns=4294967295 + + +More information about the RA4x00 could be found: +http://hp.com +http://ra4x00.xip.at diff -r -u linux-2.6.16_org/drivers/scsi/scsi.c linux-2.6.16/drivers/scsi/scsi.c --- linux-2.6.16_org/drivers/scsi/scsi.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/scsi.c 2006-03-30 14:46:52.000000000 +0200 @@ -35,6 +35,10 @@ * Jiffies wrap fixes (host->resetting), 3 Dec 1998 Andrea Arcangeli * * out_of_space hacks, D. Gilbert (dpg) 990608 + * + * Added Compaq RA4x00 Fiber Channel Array support, 29.03.2006 + * crossip communications gmbh - Ingo Flaschberger <if@xip.at> + * */ #include <linux/module.h> @@ -567,7 +571,7 @@ /* * If SCSI-2 or lower, store the LUN value in cmnd. */ - if (cmd->device->scsi_level <= SCSI_2) { + if ((cmd->device->scsi_level <= SCSI_2) && (cmd->device->scsi_level != SCSI_UNKNOWN)) { cmd->cmnd[1] = (cmd->cmnd[1] & 0x1f) | (cmd->device->lun << 5 & 0xe0); } diff -r -u linux-2.6.16_org/drivers/scsi/scsi_devinfo.c linux-2.6.16/drivers/scsi/scsi_devinfo.c --- linux-2.6.16_org/drivers/scsi/scsi_devinfo.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/scsi_devinfo.c 2006-03-30 14:33:54.000000000 +0200 @@ -132,6 +132,9 @@ {"CMD", "CRA-7280", NULL, BLIST_SPARSELUN}, /* CMD RAID Controller */ {"CNSI", "G7324", NULL, BLIST_SPARSELUN}, /* Chaparral G7324 RAID */ {"CNSi", "G8324", NULL, BLIST_SPARSELUN}, /* Chaparral G8324 RAID */ + {"COMPAQ", "ARRAY CONTROLLER", "2.60", BLIST_SPARSELUN | BLIST_LARGELUN | + BLIST_MAX_512K}, /* Compaq RA4x00 */ + {"COMPAQ", "LOGICAL VOLUME", "2.60", BLIST_MAX_512K}, /* Compaq RA4x00 */ {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN}, {"COMPAQ", "CR3500", NULL, BLIST_FORCELUN}, {"COMPAQ", "MSA1000", NULL, BLIST_SPARSELUN | BLIST_NOSTARTONADD}, diff -r -u linux-2.6.16_org/drivers/scsi/scsi_scan.c linux-2.6.16/drivers/scsi/scsi_scan.c --- linux-2.6.16_org/drivers/scsi/scsi_scan.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/scsi_scan.c 2006-03-30 14:42:28.000000000 +0200 @@ -23,6 +23,11 @@ * all of the LUNs returned by the REPORT LUN; else, * sequentially scan LUNs up until some maximum is reached, * or a LUN is seen that cannot have a device attached to it. + * + * Modification history: + * - Added Compaq RA4x00 Fiber Channel Array support, 29.03.2006 + * crossip communications gmbh - Ingo Flaschberger <if@xip.at> + * */ #include <linux/config.h> @@ -647,6 +652,7 @@ case TYPE_MEDIUM_CHANGER: case TYPE_ENCLOSURE: case TYPE_COMM: + case TYPE_RAID: case TYPE_RBC: sdev->writeable = 1; break; @@ -715,6 +721,14 @@ if (*bflags & BLIST_SELECT_NO_ATN) sdev->select_no_atn = 1; + /* + * Maximum 512K cdb transfer length + * broken RA4x00 Compaq Disk Array + */ + if (*bflags & BLIST_MAX_512K) { + sdev->max_512k = 1; + } + /* * Some devices may not want to have a start command automatically * issued when a device is added. @@ -1089,9 +1103,12 @@ * support more than 8 LUNs. */ if ((bflags & BLIST_NOREPORTLUN) || - starget->scsi_level < SCSI_2 || - (starget->scsi_level < SCSI_3 && - (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) ) + ((starget->scsi_level < SCSI_2) && + (starget->scsi_level != SCSI_UNKNOWN)) || + (starget->scsi_level < SCSI_3 && + ((!(bflags & BLIST_REPORTLUN2) && + (starget->scsi_level != SCSI_UNKNOWN)) || + shost->max_lun <= 8)) ) return 1; if (bflags & BLIST_NOLUN) return 0; diff -r -u linux-2.6.16_org/drivers/scsi/sd.c linux-2.6.16/drivers/scsi/sd.c --- linux-2.6.16_org/drivers/scsi/sd.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/sd.c 2006-03-29 20:03:17.000000000 +0200 @@ -22,6 +22,8 @@ * - Badari Pulavarty <pbadari@us.ibm.com>, Matthew Wilcox * <willy@debian.org>, Kurt Garloff <garloff@suse.de>: * Support 32k/1M disks. + * - Added Compaq RA4x00 Fiber Channel Array support, 29.03.2006 + * crossip communications gmbh - Ingo Flaschberger <if@xip.at> * * Logging policy (needs CONFIG_SCSI_LOGGING defined): * - setting up transfer: SCSI_LOG_HLQUEUE levels 1 and 2 @@ -344,8 +346,14 @@ SCpnt->cmnd[14] = SCpnt->cmnd[15] = 0; } else if ((this_count > 0xff) || (block > 0x1fffff) || SCpnt->device->use_10_for_rw) { - if (this_count > 0xffff) - this_count = 0xffff; + if (SCpnt->device->max_512k) { + if (this_count > 0x200) { + this_count = 0x200; + } + } else { + if (this_count > 0xffff) + this_count = 0xffff; + } SCpnt->cmnd[0] += READ_10 - READ_6; SCpnt->cmnd[1] |= blk_fua_rq(rq) ? 0x8 : 0; diff -r -u linux-2.6.16_org/include/scsi/scsi_device.h linux-2.6.16/include/scsi/scsi_device.h --- linux-2.6.16_org/include/scsi/scsi_device.h 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/include/scsi/scsi_device.h 2006-03-30 14:29:45.000000000 +0200 @@ -112,6 +112,7 @@ * this device */ unsigned expecting_cc_ua:1; /* Expecting a CHECK_CONDITION/UNIT_ATTN * because we did a bus reset. */ + unsigned max_512k:1; /* maximum 512K cdb transfer length */ unsigned use_10_for_rw:1; /* first try 10-byte read / write */ unsigned use_10_for_ms:1; /* first try 10-byte mode sense/select */ unsigned skip_ms_page_8:1; /* do not use MODE SENSE page 0x08 */ diff -r -u linux-2.6.16_org/include/scsi/scsi_devinfo.h linux-2.6.16/include/scsi/scsi_devinfo.h --- linux-2.6.16_org/include/scsi/scsi_devinfo.h 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/include/scsi/scsi_devinfo.h 2006-03-30 14:29:19.000000000 +0200 @@ -28,4 +28,5 @@ #define BLIST_NO_ULD_ATTACH 0x100000 /* device is actually for RAID config */ #define BLIST_SELECT_NO_ATN 0x200000 /* select without ATN */ #define BLIST_RETRY_HWERROR 0x400000 /* retry HARDWARE_ERROR */ +#define BLIST_MAX_512K 0x1000000 /* maximum 512K cdb transfer length */ #endif ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch 2006-03-30 10:53 ` Ingo Flaschberger @ 2006-03-30 12:58 ` Matthew Wilcox 2006-03-30 14:20 ` Ingo Flaschberger 0 siblings, 1 reply; 10+ messages in thread From: Matthew Wilcox @ 2006-03-30 12:58 UTC (permalink / raw) To: Ingo Flaschberger; +Cc: James Bottomley, Linux-SCSI Mailing List On Thu, Mar 30, 2006 at 12:53:10PM +0200, Ingo Flaschberger wrote: > * out_of_space hacks, D. Gilbert (dpg) 990608 > + * > + * Added Compaq RA4x00 Fiber Channel Array support, 29.03.2006 > + * crossip communications gmbh - Ingo Flaschberger <if@xip.at> > + * > */ I think you can drop the changelog entry here -- it's not been updated in many years. Plus, it's not really accurate. > {"CNSi", "G8324", NULL, BLIST_SPARSELUN}, /* Chaparral G8324 RAID */ > + {"COMPAQ", "ARRAY CONTROLLER", "2.60", BLIST_SPARSELUN | BLIST_LARGELUN | > + BLIST_MAX_512K}, /* Compaq RA4x00 */ > + {"COMPAQ", "LOGICAL VOLUME", "2.60", BLIST_MAX_512K}, /* Compaq RA4x00 */ > {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN}, I wonder if you should just be adding BLIST_MAX_512K to the current entry for LOGICAL VOLUME instead? > * or a LUN is seen that cannot have a device attached to it. > + * > + * Modification history: > + * - Added Compaq RA4x00 Fiber Channel Array support, 29.03.2006 > + * crossip communications gmbh - Ingo Flaschberger <if@xip.at> > + * > */ Definitely don't start a changelog. That's what SCMs are for. > @@ -715,6 +721,14 @@ > if (*bflags & BLIST_SELECT_NO_ATN) > sdev->select_no_atn = 1; > > + /* > + * Maximum 512K cdb transfer length > + * broken RA4x00 Compaq Disk Array > + */ > + if (*bflags & BLIST_MAX_512K) { > + sdev->max_512k = 1; > + } > + Indent with tabs, not spaces. Also, sdev->max_512k is a bit ... specific. How about adding an unsigned short to struct scsi_device (right above queue_depth, so it fits in the padding) called something like max_xfer_len? Then you can do something like: sdev->max_xfer_len = 0xffff; if (*bflags & BLIST_MAX_512K) sdev->max_xfer_len = 0x200; and later: > @@ -344,8 +346,14 @@ > SCpnt->cmnd[14] = SCpnt->cmnd[15] = 0; > } else if ((this_count > 0xff) || (block > 0x1fffff) || > SCpnt->device->use_10_for_rw) { > - if (this_count > 0xffff) > - this_count = 0xffff; > + if (SCpnt->device->max_512k) { > + if (this_count > 0x200) { > + this_count = 0x200; > + } > + } else { > + if (this_count > 0xffff) > + this_count = 0xffff; > + } > > SCpnt->cmnd[0] += READ_10 - READ_6; > SCpnt->cmnd[1] |= blk_fua_rq(rq) ? 0x8 : 0; simplifies to: if (this_count > SCpnt->device->max_xfer_len) this_count = SCpnt->device->max_xfer_len; > @@ -1089,9 +1103,12 @@ > * support more than 8 LUNs. > */ > if ((bflags & BLIST_NOREPORTLUN) || > - starget->scsi_level < SCSI_2 || > - (starget->scsi_level < SCSI_3 && > - (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) ) > + ((starget->scsi_level < SCSI_2) && > + (starget->scsi_level != SCSI_UNKNOWN)) || > + (starget->scsi_level < SCSI_3 && > + ((!(bflags & BLIST_REPORTLUN2) && > + (starget->scsi_level != SCSI_UNKNOWN)) || > + shost->max_lun <= 8)) ) > return 1; That conditional makes my brain hurt. Can we split it up? if ((bflags & BLIST_NOREPORTLUN) return 1; if ((starget->scsi_level < SCSI_2) && (starget->scsi_level != SCSI_UNKNOWN)) return 1; if ((starget->scsi_level < SCSI_3) && ((!(bflags & BLIST_REPORTLUN2) && (starget->scsi_level != SCSI_UNKNOWN) || shost->max_lun <= 8))) return 1; I'm not sure that's what you meant to do, even. How about more simply: /* * Only support SCSI-3 and up devices if BLIST_NOREPORTLUN is not set. * Also allow SCSI-2 and unknown devices if BLIST_REPORTLUN2 is set * and host adapter supports more than 8 LUNs. */ if ((bflags & BLIST_NOREPORTLUN) return 1; if ((starget->scsi_level < SCSI_2) && (starget->scsi_level != SCSI_UNKNOWN)) return 1; if ((starget->scsi_level < SCSI_3) && (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) return 1; ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch 2006-03-30 12:58 ` Matthew Wilcox @ 2006-03-30 14:20 ` Ingo Flaschberger 2006-03-30 16:24 ` Matthew Wilcox 0 siblings, 1 reply; 10+ messages in thread From: Ingo Flaschberger @ 2006-03-30 14:20 UTC (permalink / raw) To: Matthew Wilcox; +Cc: James Bottomley, Linux-SCSI Mailing List [-- Attachment #1: Type: TEXT/PLAIN, Size: 4256 bytes --] Hello Matthew, > On Thu, Mar 30, 2006 at 12:53:10PM +0200, Ingo Flaschberger wrote: >> * out_of_space hacks, D. Gilbert (dpg) 990608 >> + * >> + * Added Compaq RA4x00 Fiber Channel Array support, 29.03.2006 >> + * crossip communications gmbh - Ingo Flaschberger <if@xip.at> >> + * >> */ > > I think you can drop the changelog entry here -- it's not been updated > in many years. Plus, it's not really accurate. OK. >> {"CNSi", "G8324", NULL, BLIST_SPARSELUN}, /* Chaparral G8324 RAID */ >> + {"COMPAQ", "ARRAY CONTROLLER", "2.60", BLIST_SPARSELUN | BLIST_LARGELUN | >> + BLIST_MAX_512K}, /* Compaq RA4x00 */ >> + {"COMPAQ", "LOGICAL VOLUME", "2.60", BLIST_MAX_512K}, /* Compaq RA4x00 */ >> {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN}, > > I wonder if you should just be adding BLIST_MAX_512K to the current > entry for LOGICAL VOLUME instead? The "LOGICAL VOLUME" was there before and I think I will break the SCSI Version. >> * or a LUN is seen that cannot have a device attached to it. >> + * >> + * Modification history: >> + * - Added Compaq RA4x00 Fiber Channel Array support, 29.03.2006 >> + * crossip communications gmbh - Ingo Flaschberger <if@xip.at> >> + * >> */ > > Definitely don't start a changelog. That's what SCMs are for. OK. >> @@ -715,6 +721,14 @@ >> if (*bflags & BLIST_SELECT_NO_ATN) >> sdev->select_no_atn = 1; >> >> + /* >> + * Maximum 512K cdb transfer length >> + * broken RA4x00 Compaq Disk Array >> + */ >> + if (*bflags & BLIST_MAX_512K) { >> + sdev->max_512k = 1; >> + } >> + > > Indent with tabs, not spaces. Also, sdev->max_512k is a bit ... > specific. How about adding an unsigned short to struct scsi_device > (right above queue_depth, so it fits in the padding) called something > like max_xfer_len? Then you can do something like: > > sdev->max_xfer_len = 0xffff; > if (*bflags & BLIST_MAX_512K) > sdev->max_xfer_len = 0x200; Ups.. standard problem..( sdev->max_xfer_len is a good idea. > and later: > >> @@ -344,8 +346,14 @@ >> SCpnt->cmnd[14] = SCpnt->cmnd[15] = 0; >> } else if ((this_count > 0xff) || (block > 0x1fffff) || >> SCpnt->device->use_10_for_rw) { >> - if (this_count > 0xffff) >> - this_count = 0xffff; >> + if (SCpnt->device->max_512k) { >> + if (this_count > 0x200) { >> + this_count = 0x200; >> + } >> + } else { >> + if (this_count > 0xffff) >> + this_count = 0xffff; >> + } >> >> SCpnt->cmnd[0] += READ_10 - READ_6; >> SCpnt->cmnd[1] |= blk_fua_rq(rq) ? 0x8 : 0; > > simplifies to: > > if (this_count > SCpnt->device->max_xfer_len) > this_count = SCpnt->device->max_xfer_len; > >> @@ -1089,9 +1103,12 @@ >> * support more than 8 LUNs. >> */ >> if ((bflags & BLIST_NOREPORTLUN) || >> - starget->scsi_level < SCSI_2 || >> - (starget->scsi_level < SCSI_3 && >> - (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) ) >> + ((starget->scsi_level < SCSI_2) && >> + (starget->scsi_level != SCSI_UNKNOWN)) || >> + (starget->scsi_level < SCSI_3 && >> + ((!(bflags & BLIST_REPORTLUN2) && >> + (starget->scsi_level != SCSI_UNKNOWN)) || >> + shost->max_lun <= 8)) ) >> return 1; > > That conditional makes my brain hurt. Can we split it up? > > if ((bflags & BLIST_NOREPORTLUN) > return 1; > if ((starget->scsi_level < SCSI_2) && > (starget->scsi_level != SCSI_UNKNOWN)) > return 1; > if ((starget->scsi_level < SCSI_3) && > ((!(bflags & BLIST_REPORTLUN2) && > (starget->scsi_level != SCSI_UNKNOWN) || > shost->max_lun <= 8))) > return 1; Shure. > I'm not sure that's what you meant to do, even. How about more simply: > > /* > * Only support SCSI-3 and up devices if BLIST_NOREPORTLUN is not set. > * Also allow SCSI-2 and unknown devices if BLIST_REPORTLUN2 is set > * and host adapter supports more than 8 LUNs. > */ > if ((bflags & BLIST_NOREPORTLUN) > return 1; > if ((starget->scsi_level < SCSI_2) && > (starget->scsi_level != SCSI_UNKNOWN)) > return 1; > if ((starget->scsi_level < SCSI_3) && > (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) > return 1; > > Attached,, new patch version 3.... bye, Ingo [-- Attachment #2: Type: TEXT/PLAIN, Size: 6238 bytes --] diff -r -u linux-2.6.16_org/Documentation/scsi/RA4x00.txt linux-2.6.16/Documentation/scsi/RA4x00.txt --- linux-2.6.16_org/Documentation/scsi/RA4x00.txt 2006-03-30 00:19:32.000000000 +0200 +++ linux-2.6.16/Documentation/scsi/RA4x00.txt 2006-03-29 20:35:17.000000000 +0200 @@ -0,0 +1,20 @@ +Compaq RA4x00 Fiber Channel Array support if@xip.at 29.03.2006 + crossip communications gmbh + +In 2.4.x linux kernels the cpqfc driver supported the Compaq RA4x00 Fiber +Channel Array. Limitation in 2.4.x kernels was that the RA4x00 only worked with +a cpqfc supported fiber channel adapter (Tachyon chipset). + +In 2.6.x linux kernels the support for the cpqfc has been dropped because of +very awful code and resulting porting problems from 2.4.x to 2.6.x. + +Support for the RA4x00 is now directly in the linux kernel but need some +special configuration: +*) Use a already supported fiber channel cards +*) Update the RA4x00 to firmware version 2.60 +*) Load the scsi_mod modules with option: max_luns=4294967295 + + +More information about the RA4x00 could be found: +http://hp.com +http://ra4x00.xip.at diff -r -u linux-2.6.16_org/drivers/scsi/scsi.c linux-2.6.16/drivers/scsi/scsi.c --- linux-2.6.16_org/drivers/scsi/scsi.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/scsi.c 2006-03-30 17:29:26.000000000 +0200 @@ -567,7 +567,7 @@ /* * If SCSI-2 or lower, store the LUN value in cmnd. */ - if (cmd->device->scsi_level <= SCSI_2) { + if ((cmd->device->scsi_level <= SCSI_2) && (cmd->device->scsi_level != SCSI_UNKNOWN)) { cmd->cmnd[1] = (cmd->cmnd[1] & 0x1f) | (cmd->device->lun << 5 & 0xe0); } diff -r -u linux-2.6.16_org/drivers/scsi/scsi_devinfo.c linux-2.6.16/drivers/scsi/scsi_devinfo.c --- linux-2.6.16_org/drivers/scsi/scsi_devinfo.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/scsi_devinfo.c 2006-03-30 14:33:54.000000000 +0200 @@ -132,6 +132,9 @@ {"CMD", "CRA-7280", NULL, BLIST_SPARSELUN}, /* CMD RAID Controller */ {"CNSI", "G7324", NULL, BLIST_SPARSELUN}, /* Chaparral G7324 RAID */ {"CNSi", "G8324", NULL, BLIST_SPARSELUN}, /* Chaparral G8324 RAID */ + {"COMPAQ", "ARRAY CONTROLLER", "2.60", BLIST_SPARSELUN | BLIST_LARGELUN | + BLIST_MAX_512K}, /* Compaq RA4x00 */ + {"COMPAQ", "LOGICAL VOLUME", "2.60", BLIST_MAX_512K}, /* Compaq RA4x00 */ {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN}, {"COMPAQ", "CR3500", NULL, BLIST_FORCELUN}, {"COMPAQ", "MSA1000", NULL, BLIST_SPARSELUN | BLIST_NOSTARTONADD}, diff -r -u linux-2.6.16_org/drivers/scsi/scsi_scan.c linux-2.6.16/drivers/scsi/scsi_scan.c --- linux-2.6.16_org/drivers/scsi/scsi_scan.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/scsi_scan.c 2006-03-30 18:08:59.000000000 +0200 @@ -647,6 +647,7 @@ case TYPE_MEDIUM_CHANGER: case TYPE_ENCLOSURE: case TYPE_COMM: + case TYPE_RAID: case TYPE_RBC: sdev->writeable = 1; break; @@ -716,6 +717,15 @@ sdev->select_no_atn = 1; /* + * Maximum 512K cdb transfer length + * broken RA4x00 Compaq Disk Array + */ + sdev->max_xfer_len = 0xffff; + if (*bflags & BLIST_MAX_512K) { + sdev->max_xfer_len = 0x200; + } + + /* * Some devices may not want to have a start command automatically * issued when a device is added. */ @@ -1088,10 +1098,15 @@ * Also allow SCSI-2 if BLIST_REPORTLUN2 is set and host adapter does * support more than 8 LUNs. */ - if ((bflags & BLIST_NOREPORTLUN) || - starget->scsi_level < SCSI_2 || - (starget->scsi_level < SCSI_3 && - (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) ) + if (bflags & BLIST_NOREPORTLUN) + return 1; + if ((starget->scsi_level < SCSI_2) && + (starget->scsi_level != SCSI_UNKNOWN)) + return 1; + if (starget->scsi_level < SCSI_3 && + ((!(bflags & BLIST_REPORTLUN2) && + (starget->scsi_level != SCSI_UNKNOWN)) || + shost->max_lun <= 8)) return 1; if (bflags & BLIST_NOLUN) return 0; diff -r -u linux-2.6.16_org/drivers/scsi/sd.c linux-2.6.16/drivers/scsi/sd.c --- linux-2.6.16_org/drivers/scsi/sd.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/sd.c 2006-03-30 18:10:12.000000000 +0200 @@ -22,6 +22,8 @@ * - Badari Pulavarty <pbadari@us.ibm.com>, Matthew Wilcox * <willy@debian.org>, Kurt Garloff <garloff@suse.de>: * Support 32k/1M disks. + * - Added Compaq RA4x00 Fiber Channel Array support, 29.03.2006 + * crossip communications gmbh - Ingo Flaschberger <if@xip.at> * * Logging policy (needs CONFIG_SCSI_LOGGING defined): * - setting up transfer: SCSI_LOG_HLQUEUE levels 1 and 2 @@ -344,8 +346,8 @@ SCpnt->cmnd[14] = SCpnt->cmnd[15] = 0; } else if ((this_count > 0xff) || (block > 0x1fffff) || SCpnt->device->use_10_for_rw) { - if (this_count > 0xffff) - this_count = 0xffff; + if (this_count > SCpnt->device->max_xfer_len) + this_count = SCpnt->device->max_xfer_len; SCpnt->cmnd[0] += READ_10 - READ_6; SCpnt->cmnd[1] |= blk_fua_rq(rq) ? 0x8 : 0; diff -r -u linux-2.6.16_org/include/scsi/scsi_device.h linux-2.6.16/include/scsi/scsi_device.h --- linux-2.6.16_org/include/scsi/scsi_device.h 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/include/scsi/scsi_device.h 2006-03-30 17:52:44.000000000 +0200 @@ -89,6 +89,7 @@ * scsi_devinfo.[hc]. For now used only to * pass settings from slave_alloc to scsi * core. */ + unsigned short max_xfer_len; /* Maximum xfer length in one cdb */ unsigned writeable:1; unsigned removable:1; unsigned changed:1; /* Data invalid due to media change */ diff -r -u linux-2.6.16_org/include/scsi/scsi_devinfo.h linux-2.6.16/include/scsi/scsi_devinfo.h --- linux-2.6.16_org/include/scsi/scsi_devinfo.h 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/include/scsi/scsi_devinfo.h 2006-03-30 18:11:20.000000000 +0200 @@ -28,4 +28,5 @@ #define BLIST_NO_ULD_ATTACH 0x100000 /* device is actually for RAID config */ #define BLIST_SELECT_NO_ATN 0x200000 /* select without ATN */ #define BLIST_RETRY_HWERROR 0x400000 /* retry HARDWARE_ERROR */ +#define BLIST_MAX_512K 0x1000000 /* maximum 512K cdb transfer length */ #endif ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch 2006-03-30 14:20 ` Ingo Flaschberger @ 2006-03-30 16:24 ` Matthew Wilcox 2006-03-30 16:35 ` Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER6 Ingo Flaschberger 0 siblings, 1 reply; 10+ messages in thread From: Matthew Wilcox @ 2006-03-30 16:24 UTC (permalink / raw) To: Ingo Flaschberger; +Cc: James Bottomley, Linux-SCSI Mailing List On Thu, Mar 30, 2006 at 04:20:25PM +0200, Ingo Flaschberger wrote: > >> {"CNSi", "G8324", NULL, BLIST_SPARSELUN}, /* Chaparral G8324 > >> RAID */ > >>+ {"COMPAQ", "ARRAY CONTROLLER", "2.60", BLIST_SPARSELUN | > >>BLIST_LARGELUN | > >>+ BLIST_MAX_512K}, /* Compaq RA4x00 */ > >>+ {"COMPAQ", "LOGICAL VOLUME", "2.60", BLIST_MAX_512K}, /* Compaq > >>RA4x00 */ > >> {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN}, > > > >I wonder if you should just be adding BLIST_MAX_512K to the current > >entry for LOGICAL VOLUME instead? > > The "LOGICAL VOLUME" was there before and I think I will break the SCSI > Version. I meant to do something like: - {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN}, + {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN | BLIST_MAX_512K}, > >I'm not sure that's what you meant to do, even. How about more simply: > > > > /* > > * Only support SCSI-3 and up devices if BLIST_NOREPORTLUN is not > > set. > > * Also allow SCSI-2 and unknown devices if BLIST_REPORTLUN2 is set > > * and host adapter supports more than 8 LUNs. > > */ > > if ((bflags & BLIST_NOREPORTLUN) > > return 1; > > if ((starget->scsi_level < SCSI_2) && > > (starget->scsi_level != SCSI_UNKNOWN)) > > return 1; > > if ((starget->scsi_level < SCSI_3) && > > (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= > > 8)) > > return 1; > > > > > > Attached,, new patch version 3.... > --- linux-2.6.16_org/drivers/scsi/scsi.c 2006-03-20 06:53:29.000000000 +0100 > +++ linux-2.6.16/drivers/scsi/scsi.c 2006-03-30 17:29:26.000000000 +0200 > @@ -567,7 +567,7 @@ > /* > * If SCSI-2 or lower, store the LUN value in cmnd. > */ > - if (cmd->device->scsi_level <= SCSI_2) { > + if ((cmd->device->scsi_level <= SCSI_2) && (cmd->device->scsi_level != SCSI_UNKNOWN)) { Oh, could you break the line so it doesn't go over 80 columns? > sdev->select_no_atn = 1; > > /* > + * Maximum 512K cdb transfer length > + * broken RA4x00 Compaq Disk Array > + */ > + sdev->max_xfer_len = 0xffff; > + if (*bflags & BLIST_MAX_512K) { > + sdev->max_xfer_len = 0x200; > + } Do we need the comment? We don't need the braces. > + if (starget->scsi_level < SCSI_3 && > + ((!(bflags & BLIST_REPORTLUN2) && > + (starget->scsi_level != SCSI_UNKNOWN)) || > + shost->max_lun <= 8)) Why do we need the SCSI_UNKNOWN check here? > * Support 32k/1M disks. > + * - Added Compaq RA4x00 Fiber Channel Array support, 29.03.2006 > + * crossip communications gmbh - Ingo Flaschberger <if@xip.at> > * This doesn't really describe what you've done to this file. It's more - Limit maximum transfers to new field in scsi_device ... or something > @@ -89,6 +89,7 @@ > * scsi_devinfo.[hc]. For now used only to > * pass settings from slave_alloc to scsi > * core. */ > + unsigned short max_xfer_len; /* Maximum xfer length in one cdb */ > unsigned writeable:1; > unsigned removable:1; > unsigned changed:1; /* Data invalid due to media change */ I think you missed my point about where to place it -- due to padding rules, you've grown the structure by 4 bytes. If you put it between current_cmnd and queue_depth, you won't grow the struct at all. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER6 2006-03-30 16:24 ` Matthew Wilcox @ 2006-03-30 16:35 ` Ingo Flaschberger 2006-03-31 17:36 ` Ingo Flaschberger 2006-03-31 19:45 ` James Bottomley 0 siblings, 2 replies; 10+ messages in thread From: Ingo Flaschberger @ 2006-03-30 16:35 UTC (permalink / raw) To: Matthew Wilcox; +Cc: James Bottomley, Linux-SCSI Mailing List [-- Attachment #1: Type: TEXT/PLAIN, Size: 2001 bytes --] Hello Matthew, > I meant to do something like: > > - {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN}, > + {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN | BLIST_MAX_512K}, already changed in version 5 >> * If SCSI-2 or lower, store the LUN value in cmnd. >> */ >> - if (cmd->device->scsi_level <= SCSI_2) { >> + if ((cmd->device->scsi_level <= SCSI_2) && (cmd->device->scsi_level != SCSI_UNKNOWN)) { > > Oh, could you break the line so it doesn't go over 80 columns? fixed. > >> sdev->select_no_atn = 1; >> >> /* >> + * Maximum 512K cdb transfer length >> + * broken RA4x00 Compaq Disk Array >> + */ >> + sdev->max_xfer_len = 0xffff; >> + if (*bflags & BLIST_MAX_512K) { >> + sdev->max_xfer_len = 0x200; >> + } > > Do we need the comment? We don't need the braces. also already fixed in version 5 >> + if (starget->scsi_level < SCSI_3 && >> + ((!(bflags & BLIST_REPORTLUN2) && >> + (starget->scsi_level != SCSI_UNKNOWN)) || >> + shost->max_lun <= 8)) > > Why do we need the SCSI_UNKNOWN check here? You had an very old version.... >> * Support 32k/1M disks. >> + * - Added Compaq RA4x00 Fiber Channel Array support, 29.03.2006 >> + * crossip communications gmbh - Ingo Flaschberger <if@xip.at> >> * > > This doesn't really describe what you've done to this file. It's more > - Limit maximum transfers to new field in scsi_device > ... or something ok. >> @@ -89,6 +89,7 @@ >> * scsi_devinfo.[hc]. For now used only to >> * pass settings from slave_alloc to scsi >> * core. */ >> + unsigned short max_xfer_len; /* Maximum xfer length in one cdb */ >> unsigned writeable:1; >> unsigned removable:1; >> unsigned changed:1; /* Data invalid due to media change */ > > I think you missed my point about where to place it -- due to padding > rules, you've grown the structure by 4 bytes. If you put it between > current_cmnd and queue_depth, you won't grow the struct at all. Never stop learning :) fixed. Version 6 now. bye, Ingo [-- Attachment #2: Type: TEXT/PLAIN, Size: 5325 bytes --] diff -r -u linux-2.6.16_org/drivers/scsi/scsi.c linux-2.6.16/drivers/scsi/scsi.c --- linux-2.6.16_org/drivers/scsi/scsi.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/scsi.c 2006-03-30 20:28:02.000000000 +0200 @@ -567,7 +567,8 @@ /* * If SCSI-2 or lower, store the LUN value in cmnd. */ - if (cmd->device->scsi_level <= SCSI_2) { + if ((cmd->device->scsi_level <= SCSI_2) && + (cmd->device->scsi_level != SCSI_UNKNOWN)) { cmd->cmnd[1] = (cmd->cmnd[1] & 0x1f) | (cmd->device->lun << 5 & 0xe0); } diff -r -u linux-2.6.16_org/drivers/scsi/scsi_devinfo.c linux-2.6.16/drivers/scsi/scsi_devinfo.c --- linux-2.6.16_org/drivers/scsi/scsi_devinfo.c 2006-03-30 19:15:30.000000000 +0200 +++ linux-2.6.16/drivers/scsi/scsi_devinfo.c 2006-03-30 20:16:47.000000000 +0200 @@ -132,7 +132,9 @@ {"CMD", "CRA-7280", NULL, BLIST_SPARSELUN}, /* CMD RAID Controller */ {"CNSI", "G7324", NULL, BLIST_SPARSELUN}, /* Chaparral G7324 RAID */ {"CNSi", "G8324", NULL, BLIST_SPARSELUN}, /* Chaparral G8324 RAID */ - {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN}, + {"COMPAQ", "ARRAY CONTROLLER", NULL, BLIST_SPARSELUN | BLIST_LARGELUN | + BLIST_MAX_512K | BLIST_REPORTLUN}, /* Compaq RA4x00 */ + {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN | BLIST_MAX_512K}, /* Compaq RA4x00 */ {"COMPAQ", "CR3500", NULL, BLIST_FORCELUN}, {"COMPAQ", "MSA1000", NULL, BLIST_SPARSELUN | BLIST_NOSTARTONADD}, {"COMPAQ", "MSA1000 VOLUME", NULL, BLIST_SPARSELUN | BLIST_NOSTARTONADD}, diff -r -u linux-2.6.16_org/drivers/scsi/scsi_scan.c linux-2.6.16/drivers/scsi/scsi_scan.c --- linux-2.6.16_org/drivers/scsi/scsi_scan.c 2006-03-30 19:29:12.000000000 +0200 +++ linux-2.6.16/drivers/scsi/scsi_scan.c 2006-03-30 20:17:09.000000000 +0200 @@ -647,6 +647,7 @@ case TYPE_MEDIUM_CHANGER: case TYPE_ENCLOSURE: case TYPE_COMM: + case TYPE_RAID: case TYPE_RBC: sdev->writeable = 1; break; @@ -716,6 +717,14 @@ sdev->select_no_atn = 1; /* + * Maximum 512K cdb transfer length + * broken RA4x00 Compaq Disk Array + */ + sdev->max_xfer_len = 0xffff; + if (*bflags & BLIST_MAX_512K) + sdev->max_xfer_len = 0x200; + + /* * Some devices may not want to have a start command automatically * issued when a device is added. */ @@ -1088,10 +1097,13 @@ * Also allow SCSI-2 and SCSI-UNKNOWN if BLIST_REPORTLUN is set and host * adapter does support more than 8 LUNs. */ - if ((bflags & BLIST_NOREPORTLUN) || - starget->scsi_level < SCSI_2 || - (starget->scsi_level < SCSI_3 && - (!(bflags & BLIST_REPORTLUN) || shost->max_lun <= 8)) ) + if (bflags & BLIST_NOREPORTLUN) + return 1; + if ((starget->scsi_level < SCSI_2) && + (starget->scsi_level != SCSI_UNKNOWN)) + return 1; + if (starget->scsi_level < SCSI_3 && + (!(bflags & BLIST_REPORTLUN) || shost->max_lun <= 8)) return 1; if (bflags & BLIST_NOLUN) return 0; diff -r -u linux-2.6.16_org/drivers/scsi/sd.c linux-2.6.16/drivers/scsi/sd.c --- linux-2.6.16_org/drivers/scsi/sd.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/sd.c 2006-03-30 20:29:44.000000000 +0200 @@ -22,6 +22,8 @@ * - Badari Pulavarty <pbadari@us.ibm.com>, Matthew Wilcox * <willy@debian.org>, Kurt Garloff <garloff@suse.de>: * Support 32k/1M disks. + * - Limit maximum transfers via new field in scsi_device + * crossip communications gmbh - Ingo Flaschberger <if@xip.at> * * Logging policy (needs CONFIG_SCSI_LOGGING defined): * - setting up transfer: SCSI_LOG_HLQUEUE levels 1 and 2 @@ -344,8 +346,8 @@ SCpnt->cmnd[14] = SCpnt->cmnd[15] = 0; } else if ((this_count > 0xff) || (block > 0x1fffff) || SCpnt->device->use_10_for_rw) { - if (this_count > 0xffff) - this_count = 0xffff; + if (this_count > SCpnt->device->max_xfer_len) + this_count = SCpnt->device->max_xfer_len; SCpnt->cmnd[0] += READ_10 - READ_6; SCpnt->cmnd[1] |= blk_fua_rq(rq) ? 0x8 : 0; diff -r -u linux-2.6.16_org/include/scsi/scsi_device.h linux-2.6.16/include/scsi/scsi_device.h --- linux-2.6.16_org/include/scsi/scsi_device.h 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/include/scsi/scsi_device.h 2006-03-30 20:31:26.000000000 +0200 @@ -59,6 +59,7 @@ struct list_head cmd_list; /* queue of in use SCSI Command structures */ struct list_head starved_entry; struct scsi_cmnd *current_cmnd; /* currently active command */ + unsigned short max_xfer_len; /* Maximum xfer length in one cdb */ unsigned short queue_depth; /* How deep of a queue we want */ unsigned short last_queue_full_depth; /* These two are used by */ unsigned short last_queue_full_count; /* scsi_track_queue_full() */ diff -r -u linux-2.6.16_org/include/scsi/scsi_devinfo.h linux-2.6.16/include/scsi/scsi_devinfo.h --- linux-2.6.16_org/include/scsi/scsi_devinfo.h 2006-03-30 19:37:56.000000000 +0200 +++ linux-2.6.16/include/scsi/scsi_devinfo.h 2006-03-30 19:47:20.000000000 +0200 @@ -29,4 +29,5 @@ #define BLIST_NO_ULD_ATTACH 0x100000 /* device is actually for RAID config */ #define BLIST_SELECT_NO_ATN 0x200000 /* select without ATN */ #define BLIST_RETRY_HWERROR 0x400000 /* retry HARDWARE_ERROR */ +#define BLIST_MAX_512K 0x1000000 /* maximum 512K cdb transfer length */ #endif [-- Attachment #3: Type: TEXT/PLAIN, Size: 4672 bytes --] diff -r -u linux-2.6.16_org/drivers/scsi/scsi_devinfo.c linux-2.6.16/drivers/scsi/scsi_devinfo.c --- linux-2.6.16_org/drivers/scsi/scsi_devinfo.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/scsi_devinfo.c 2006-03-30 19:15:30.000000000 +0200 @@ -121,7 +121,7 @@ * Other types of devices that have special flags. * Note that all USB devices should have the BLIST_INQUIRY_36 flag. */ - {"3PARdata", "VV", NULL, BLIST_REPORTLUN2}, + {"3PARdata", "VV", NULL, BLIST_REPORTLUN}, {"ADAPTEC", "AACRAID", NULL, BLIST_FORCELUN}, {"ADAPTEC", "Adaptec 5400S", NULL, BLIST_FORCELUN}, {"AFT PRO", "-IX CF", "0.0>", BLIST_FORCELUN}, @@ -136,9 +136,9 @@ {"COMPAQ", "CR3500", NULL, BLIST_FORCELUN}, {"COMPAQ", "MSA1000", NULL, BLIST_SPARSELUN | BLIST_NOSTARTONADD}, {"COMPAQ", "MSA1000 VOLUME", NULL, BLIST_SPARSELUN | BLIST_NOSTARTONADD}, - {"COMPAQ", "HSV110", NULL, BLIST_REPORTLUN2 | BLIST_NOSTARTONADD}, + {"COMPAQ", "HSV110", NULL, BLIST_REPORTLUN | BLIST_NOSTARTONADD}, {"DDN", "SAN DataDirector", "*", BLIST_SPARSELUN}, - {"DEC", "HSG80", NULL, BLIST_REPORTLUN2 | BLIST_NOSTARTONADD}, + {"DEC", "HSG80", NULL, BLIST_REPORTLUN | BLIST_NOSTARTONADD}, {"DELL", "PV660F", NULL, BLIST_SPARSELUN}, {"DELL", "PV660F PSEUDO", NULL, BLIST_SPARSELUN}, {"DELL", "PSEUDO DEVICE .", NULL, BLIST_SPARSELUN}, /* Dell PV 530F */ @@ -158,7 +158,7 @@ {"HP", "A6189A", NULL, BLIST_SPARSELUN | BLIST_LARGELUN}, /* HP VA7400 */ {"HP", "OPEN-", "*", BLIST_SPARSELUN | BLIST_LARGELUN}, /* HP XP Arrays */ {"HP", "NetRAID-4M", NULL, BLIST_FORCELUN}, - {"HP", "HSV100", NULL, BLIST_REPORTLUN2 | BLIST_NOSTARTONADD}, + {"HP", "HSV100", NULL, BLIST_REPORTLUN | BLIST_NOSTARTONADD}, {"HP", "C1557A", NULL, BLIST_FORCELUN}, {"HP", "C3323-300", "4269", BLIST_NOTQ}, {"IBM", "AuSaV1S2", NULL, BLIST_FORCELUN}, @@ -176,7 +176,7 @@ {"Medion", "Flash XL MMC/SD", "2.6D", BLIST_FORCELUN}, {"MegaRAID", "LD", NULL, BLIST_FORCELUN}, {"MICROP", "4110", NULL, BLIST_NOTQ}, - {"MYLEX", "DACARMRB", "*", BLIST_REPORTLUN2}, + {"MYLEX", "DACARMRB", "*", BLIST_REPORTLUN}, {"nCipher", "Fastness Crypto", NULL, BLIST_FORCELUN}, {"NAKAMICH", "MJ-4.8S", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, {"NAKAMICH", "MJ-5.16S", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, @@ -193,7 +193,7 @@ {"SEAGATE", "ST3390N", "9546", BLIST_NOTQ}, {"SGI", "RAID3", "*", BLIST_SPARSELUN}, {"SGI", "RAID5", "*", BLIST_SPARSELUN}, - {"SGI", "TP9100", "*", BLIST_REPORTLUN2}, + {"SGI", "TP9100", "*", BLIST_REPORTLUN}, {"SGI", "Universal Xport", "*", BLIST_NO_ULD_ATTACH}, {"IBM", "Universal Xport", "*", BLIST_NO_ULD_ATTACH}, {"SMSC", "USB 2 HS-CF", NULL, BLIST_SPARSELUN | BLIST_INQUIRY_36}, diff -r -u linux-2.6.16_org/drivers/scsi/scsi_scan.c linux-2.6.16/drivers/scsi/scsi_scan.c --- linux-2.6.16_org/drivers/scsi/scsi_scan.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/scsi_scan.c 2006-03-30 19:29:12.000000000 +0200 @@ -1085,13 +1085,13 @@ /* * Only support SCSI-3 and up devices if BLIST_NOREPORTLUN is not set. - * Also allow SCSI-2 if BLIST_REPORTLUN2 is set and host adapter does - * support more than 8 LUNs. + * Also allow SCSI-2 and SCSI-UNKNOWN if BLIST_REPORTLUN is set and host + * adapter does support more than 8 LUNs. */ if ((bflags & BLIST_NOREPORTLUN) || starget->scsi_level < SCSI_2 || (starget->scsi_level < SCSI_3 && - (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) ) + (!(bflags & BLIST_REPORTLUN) || shost->max_lun <= 8)) ) return 1; if (bflags & BLIST_NOLUN) return 0; diff -r -u linux-2.6.16_org/include/scsi/scsi_devinfo.h linux-2.6.16/include/scsi/scsi_devinfo.h --- linux-2.6.16_org/include/scsi/scsi_devinfo.h 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/include/scsi/scsi_devinfo.h 2006-03-30 19:37:56.000000000 +0200 @@ -21,8 +21,9 @@ #define BLIST_MS_SKIP_PAGE_3F 0x4000 /* do not send ms page 0x3f */ #define BLIST_USE_10_BYTE_MS 0x8000 /* use 10 byte ms before 6 byte ms */ #define BLIST_MS_192_BYTES_FOR_3F 0x10000 /* 192 byte ms page 0x3f request */ -#define BLIST_REPORTLUN2 0x20000 /* try REPORT_LUNS even for SCSI-2 devs - (if HBA supports more than 8 LUNs) */ +#define BLIST_REPORTLUN 0x20000 /* try REPORT_LUNS even for SCSI-2 and + SCSI-UNKNOWN devs + (if HBA supports more than 8 LUNs) */ #define BLIST_NOREPORTLUN 0x40000 /* don't try REPORT_LUNS scan (SCSI-3 devs) */ #define BLIST_NOT_LOCKABLE 0x80000 /* don't use PREVENT-ALLOW commands */ #define BLIST_NO_ULD_ATTACH 0x100000 /* device is actually for RAID config */ ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER6 2006-03-30 16:35 ` Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER6 Ingo Flaschberger @ 2006-03-31 17:36 ` Ingo Flaschberger 2006-03-31 19:45 ` James Bottomley 1 sibling, 0 replies; 10+ messages in thread From: Ingo Flaschberger @ 2006-03-31 17:36 UTC (permalink / raw) To: Matthew Wilcox; +Cc: James Bottomley, Linux-SCSI Mailing List Hello, Is it ok now? bye, ingo flaschberger geschaeftsleitung crossip communications gmbH ------------------------------------------------------------------_------------ sebastian kneipp gasse 1 _____ _____ ____ _____ _____ (_)____ a-1020 wien / ___// ___// __ \ / ___// ___// // __ \ fix: +43-1-726 15 22-217 / /__ / / / /_/ /(__ )(__ )/ // /_/ / fax: +43-1-726 15 22-111 \___//_/ \____//____//____//_// .___/ mob: +43-699-105 86 719 _______ / / www.xip.at communications gmbh /______//_/ ------------------------------------------------------------------------------- ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER6 2006-03-30 16:35 ` Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER6 Ingo Flaschberger 2006-03-31 17:36 ` Ingo Flaschberger @ 2006-03-31 19:45 ` James Bottomley 2006-03-31 21:13 ` Ingo Flaschberger 1 sibling, 1 reply; 10+ messages in thread From: James Bottomley @ 2006-03-31 19:45 UTC (permalink / raw) To: Ingo Flaschberger; +Cc: Matthew Wilcox, Linux-SCSI Mailing List On Thu, 2006-03-30 at 18:35 +0200, Ingo Flaschberger wrote: > + sdev->max_xfer_len = 0xffff; > + if (*bflags & BLIST_MAX_512K) > + sdev->max_xfer_len = 0x200; Where do you make the block layer see the effects of this? Currently it seems all you do is truncate a READ10 or WRITE10 to a maximum transfer size of 0x200. That means that we simply lie to the block layer for transfers above 0x200 and say that it all completed when we only transferred 0x200 blocks ... this is bound to cause data corruption. James ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER6 2006-03-31 19:45 ` James Bottomley @ 2006-03-31 21:13 ` Ingo Flaschberger 2006-03-31 21:21 ` James Bottomley 0 siblings, 1 reply; 10+ messages in thread From: Ingo Flaschberger @ 2006-03-31 21:13 UTC (permalink / raw) To: James Bottomley; +Cc: Matthew Wilcox, Linux-SCSI Mailing List Hello James, > On Thu, 2006-03-30 at 18:35 +0200, Ingo Flaschberger wrote: >> + sdev->max_xfer_len = 0xffff; >> + if (*bflags & BLIST_MAX_512K) >> + sdev->max_xfer_len = 0x200; > > Where do you make the block layer see the effects of this? > > Currently it seems all you do is truncate a READ10 or WRITE10 to a > maximum transfer size of 0x200. That means that we simply lie to the > block layer for transfers above 0x200 and say that it all completed when > we only transferred 0x200 blocks ... this is bound to cause data > corruption. linux-2.6.16/drivers/scsi/sd.c SCpnt->cmnd[14] = SCpnt->cmnd[15] = 0; } else if ((this_count > 0xff) || (block > 0x1fffff) || SCpnt->device->use_10_for_rw) { - if (this_count > 0xffff) - this_count = 0xffff; + if (this_count > SCpnt->device->max_xfer_len) + this_count = SCpnt->device->max_xfer_len; SCpnt->cmnd[0] += READ_10 - READ_6; SCpnt->cmnd[1] |= blk_fua_rq(rq) ? 0x8 : 0; Here, but only for the RA4x00. bye, Ingo ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER6 2006-03-31 21:13 ` Ingo Flaschberger @ 2006-03-31 21:21 ` James Bottomley 2006-03-31 21:24 ` Ingo Flaschberger 0 siblings, 1 reply; 10+ messages in thread From: James Bottomley @ 2006-03-31 21:21 UTC (permalink / raw) To: Ingo Flaschberger; +Cc: Matthew Wilcox, Linux-SCSI Mailing List On Fri, 2006-03-31 at 23:13 +0200, Ingo Flaschberger wrote: > Here, but only for the RA4x00. That's the read/write command conversion. There doesn't seem to be anywhere the limit is communicated to the block layer. James ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER6 2006-03-31 21:21 ` James Bottomley @ 2006-03-31 21:24 ` Ingo Flaschberger 2006-04-01 1:16 ` Ingo Flaschberger 0 siblings, 1 reply; 10+ messages in thread From: Ingo Flaschberger @ 2006-03-31 21:24 UTC (permalink / raw) To: James Bottomley; +Cc: Linux-SCSI Mailing List Hello James, >> Here, but only for the RA4x00. > > That's the read/write command conversion. There doesn't seem to be > anywhere the limit is communicated to the block layer. So, what do you suggest? bye, Ingo ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER6 2006-03-31 21:24 ` Ingo Flaschberger @ 2006-04-01 1:16 ` Ingo Flaschberger 2006-04-01 2:07 ` James Bottomley 0 siblings, 1 reply; 10+ messages in thread From: Ingo Flaschberger @ 2006-04-01 1:16 UTC (permalink / raw) To: James Bottomley; +Cc: Linux-SCSI Mailing List Hello James, >>> Here, but only for the RA4x00. >> >> That's the read/write command conversion. There doesn't seem to be >> anywhere the limit is communicated to the block layer. > > So, what do you suggest? I have looked around in the kernel but I get no idea how to inform the block layer about the limit. Please advise. bye, Ingo ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER6 2006-04-01 1:16 ` Ingo Flaschberger @ 2006-04-01 2:07 ` James Bottomley 2006-04-01 16:46 ` Ingo Flaschberger 0 siblings, 1 reply; 10+ messages in thread From: James Bottomley @ 2006-04-01 2:07 UTC (permalink / raw) To: Ingo Flaschberger; +Cc: Linux-SCSI Mailing List On Sat, 2006-04-01 at 03:16 +0200, Ingo Flaschberger wrote: > I have looked around in the kernel but I get no idea how to inform the > block layer about the limit. > Please advise. OK, try this out. It places the sector limit in the block queue. I also removed all the superfluous condition braces and tried to change the comments to match what you're doing (the block size is actually in multiples of 512 bytes, so the limit you impose is actually 512 *blocks* or 256kB). James Index: BUILD-2.6/drivers/scsi/scsi.c =================================================================== --- BUILD-2.6.orig/drivers/scsi/scsi.c 2006-03-30 23:19:20.000000000 -0600 +++ BUILD-2.6/drivers/scsi/scsi.c 2006-03-31 19:48:54.000000000 -0600 @@ -565,7 +565,8 @@ /* * If SCSI-2 or lower, store the LUN value in cmnd. */ - if (cmd->device->scsi_level <= SCSI_2) { + if (cmd->device->scsi_level <= SCSI_2 && + cmd->device->scsi_level != SCSI_UNKNOWN) { cmd->cmnd[1] = (cmd->cmnd[1] & 0x1f) | (cmd->device->lun << 5 & 0xe0); } Index: BUILD-2.6/drivers/scsi/scsi_devinfo.c =================================================================== --- BUILD-2.6.orig/drivers/scsi/scsi_devinfo.c 2006-03-30 17:31:53.000000000 -0600 +++ BUILD-2.6/drivers/scsi/scsi_devinfo.c 2006-03-31 19:47:06.000000000 -0600 @@ -132,7 +132,9 @@ {"CMD", "CRA-7280", NULL, BLIST_SPARSELUN}, /* CMD RAID Controller */ {"CNSI", "G7324", NULL, BLIST_SPARSELUN}, /* Chaparral G7324 RAID */ {"CNSi", "G8324", NULL, BLIST_SPARSELUN}, /* Chaparral G8324 RAID */ - {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN}, + {"COMPAQ", "ARRAY CONTROLLER", NULL, BLIST_SPARSELUN | BLIST_LARGELUN | + BLIST_MAX_512 | BLIST_REPORTLUN2}, /* Compaq RA4x00 */ + {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN | BLIST_MAX_512K}, /* Compaq RA4x00 */ {"COMPAQ", "CR3500", NULL, BLIST_FORCELUN}, {"COMPAQ", "MSA1000", NULL, BLIST_SPARSELUN | BLIST_NOSTARTONADD}, {"COMPAQ", "MSA1000 VOLUME", NULL, BLIST_SPARSELUN | BLIST_NOSTARTONADD}, Index: BUILD-2.6/drivers/scsi/scsi_scan.c =================================================================== --- BUILD-2.6.orig/drivers/scsi/scsi_scan.c 2006-03-30 17:31:53.000000000 -0600 +++ BUILD-2.6/drivers/scsi/scsi_scan.c 2006-03-31 19:50:29.000000000 -0600 @@ -673,6 +673,7 @@ case TYPE_MEDIUM_CHANGER: case TYPE_ENCLOSURE: case TYPE_COMM: + case TYPE_RAID: case TYPE_RBC: sdev->writeable = 1; break; @@ -738,6 +739,13 @@ sdev->select_no_atn = 1; /* + * Maximum 512 sector transfer length + * broken RA4x00 Compaq Disk Array + */ + if (*bflags & BLIST_MAX_512) + blk_queue_max_sectors(sdev->request_queue, 512); + + /* * Some devices may not want to have a start command automatically * issued when a device is added. */ @@ -1123,10 +1131,13 @@ * Also allow SCSI-2 if BLIST_REPORTLUN2 is set and host adapter does * support more than 8 LUNs. */ - if ((bflags & BLIST_NOREPORTLUN) || - starget->scsi_level < SCSI_2 || - (starget->scsi_level < SCSI_3 && - (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) ) + if (bflags & BLIST_NOREPORTLUN) + return 1; + if (starget->scsi_level < SCSI_2 && + starget->scsi_level != SCSI_UNKNOWN) + return 1; + if (starget->scsi_level < SCSI_3 && + (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) return 1; if (bflags & BLIST_NOLUN) return 0; Index: BUILD-2.6/include/scsi/scsi_devinfo.h =================================================================== --- BUILD-2.6.orig/include/scsi/scsi_devinfo.h 2006-03-30 17:32:02.000000000 -0600 +++ BUILD-2.6/include/scsi/scsi_devinfo.h 2006-03-31 19:46:46.000000000 -0600 @@ -28,4 +28,5 @@ #define BLIST_NO_ULD_ATTACH 0x100000 /* device is actually for RAID config */ #define BLIST_SELECT_NO_ATN 0x200000 /* select without ATN */ #define BLIST_RETRY_HWERROR 0x400000 /* retry HARDWARE_ERROR */ +#define BLIST_MAX_512 0x800000 /* maximum 512 sector cdb length */ #endif ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER6 2006-04-01 2:07 ` James Bottomley @ 2006-04-01 16:46 ` Ingo Flaschberger 0 siblings, 0 replies; 10+ messages in thread From: Ingo Flaschberger @ 2006-04-01 16:46 UTC (permalink / raw) To: James Bottomley; +Cc: Linux-SCSI Mailing List [-- Attachment #1: Type: TEXT/PLAIN, Size: 582 bytes --] Hello James, > On Sat, 2006-04-01 at 03:16 +0200, Ingo Flaschberger wrote: >> I have looked around in the kernel but I get no idea how to inform the >> block layer about the limit. >> Please advise. > > OK, try this out. It places the sector limit in the block queue. I > also removed all the superfluous condition braces and tried to change > the comments to match what you're doing (the block size is actually in > multiples of 512 bytes, so the limit you impose is actually 512 *blocks* > or 256kB). Works, Thanks! Attached version 7. Please for info if ok now. bye, Ingo [-- Attachment #2: Type: TEXT/PLAIN, Size: 3511 bytes --] diff -r -u linux-2.6.16_org/drivers/scsi/scsi.c linux-2.6.16/drivers/scsi/scsi.c --- linux-2.6.16_org/drivers/scsi/scsi.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/scsi.c 2006-04-01 14:50:54.000000000 +0200 @@ -567,7 +567,8 @@ /* * If SCSI-2 or lower, store the LUN value in cmnd. */ - if (cmd->device->scsi_level <= SCSI_2) { + if (cmd->device->scsi_level <= SCSI_2 && + cmd->device->scsi_level != SCSI_UNKNOWN) { cmd->cmnd[1] = (cmd->cmnd[1] & 0x1f) | (cmd->device->lun << 5 & 0xe0); } diff -r -u linux-2.6.16_org/drivers/scsi/scsi_devinfo.c linux-2.6.16/drivers/scsi/scsi_devinfo.c --- linux-2.6.16_org/drivers/scsi/scsi_devinfo.c 2006-03-30 19:15:30.000000000 +0200 +++ linux-2.6.16/drivers/scsi/scsi_devinfo.c 2006-04-01 14:35:49.000000000 +0200 @@ -132,7 +132,9 @@ {"CMD", "CRA-7280", NULL, BLIST_SPARSELUN}, /* CMD RAID Controller */ {"CNSI", "G7324", NULL, BLIST_SPARSELUN}, /* Chaparral G7324 RAID */ {"CNSi", "G8324", NULL, BLIST_SPARSELUN}, /* Chaparral G8324 RAID */ - {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN}, + {"COMPAQ", "ARRAY CONTROLLER", NULL, BLIST_SPARSELUN | BLIST_LARGELUN | + BLIST_MAX_512 | BLIST_REPORTLUN}, /* Compaq RA4x00 */ + {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN | BLIST_MAX_512}, /* Compaq RA4x00 */ {"COMPAQ", "CR3500", NULL, BLIST_FORCELUN}, {"COMPAQ", "MSA1000", NULL, BLIST_SPARSELUN | BLIST_NOSTARTONADD}, {"COMPAQ", "MSA1000 VOLUME", NULL, BLIST_SPARSELUN | BLIST_NOSTARTONADD}, diff -r -u linux-2.6.16_org/drivers/scsi/scsi_scan.c linux-2.6.16/drivers/scsi/scsi_scan.c --- linux-2.6.16_org/drivers/scsi/scsi_scan.c 2006-03-30 19:29:12.000000000 +0200 +++ linux-2.6.16/drivers/scsi/scsi_scan.c 2006-04-01 14:54:09.000000000 +0200 @@ -647,6 +647,7 @@ case TYPE_MEDIUM_CHANGER: case TYPE_ENCLOSURE: case TYPE_COMM: + case TYPE_RAID: case TYPE_RBC: sdev->writeable = 1; break; @@ -716,6 +717,13 @@ sdev->select_no_atn = 1; /* + * Maximum 512 sector transfer length + * broken RA4x00 Compaq Disk Array + */ + if (*bflags & BLIST_MAX_512) + blk_queue_max_sectors(sdev->request_queue, 512); + + /* * Some devices may not want to have a start command automatically * issued when a device is added. */ @@ -1088,10 +1096,13 @@ * Also allow SCSI-2 and SCSI-UNKNOWN if BLIST_REPORTLUN is set and host * adapter does support more than 8 LUNs. */ - if ((bflags & BLIST_NOREPORTLUN) || - starget->scsi_level < SCSI_2 || - (starget->scsi_level < SCSI_3 && - (!(bflags & BLIST_REPORTLUN) || shost->max_lun <= 8)) ) + if (bflags & BLIST_NOREPORTLUN) + return 1; + if (starget->scsi_level < SCSI_2 && + starget->scsi_level != SCSI_UNKNOWN) + return 1; + if (starget->scsi_level < SCSI_3 && + (!(bflags & BLIST_REPORTLUN) || shost->max_lun <= 8)) return 1; if (bflags & BLIST_NOLUN) return 0; diff -r -u linux-2.6.16_org/include/scsi/scsi_devinfo.h linux-2.6.16/include/scsi/scsi_devinfo.h --- linux-2.6.16_org/include/scsi/scsi_devinfo.h 2006-03-30 19:37:56.000000000 +0200 +++ linux-2.6.16/include/scsi/scsi_devinfo.h 2006-04-01 14:47:17.000000000 +0200 @@ -29,4 +29,5 @@ #define BLIST_NO_ULD_ATTACH 0x100000 /* device is actually for RAID config */ #define BLIST_SELECT_NO_ATN 0x200000 /* select without ATN */ #define BLIST_RETRY_HWERROR 0x400000 /* retry HARDWARE_ERROR */ +#define BLIST_MAX_512 0x800000 /* maximum 512 sector cdb length */ #endif [-- Attachment #3: Type: TEXT/PLAIN, Size: 4672 bytes --] diff -r -u linux-2.6.16_org/drivers/scsi/scsi_devinfo.c linux-2.6.16/drivers/scsi/scsi_devinfo.c --- linux-2.6.16_org/drivers/scsi/scsi_devinfo.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/scsi_devinfo.c 2006-03-30 19:15:30.000000000 +0200 @@ -121,7 +121,7 @@ * Other types of devices that have special flags. * Note that all USB devices should have the BLIST_INQUIRY_36 flag. */ - {"3PARdata", "VV", NULL, BLIST_REPORTLUN2}, + {"3PARdata", "VV", NULL, BLIST_REPORTLUN}, {"ADAPTEC", "AACRAID", NULL, BLIST_FORCELUN}, {"ADAPTEC", "Adaptec 5400S", NULL, BLIST_FORCELUN}, {"AFT PRO", "-IX CF", "0.0>", BLIST_FORCELUN}, @@ -136,9 +136,9 @@ {"COMPAQ", "CR3500", NULL, BLIST_FORCELUN}, {"COMPAQ", "MSA1000", NULL, BLIST_SPARSELUN | BLIST_NOSTARTONADD}, {"COMPAQ", "MSA1000 VOLUME", NULL, BLIST_SPARSELUN | BLIST_NOSTARTONADD}, - {"COMPAQ", "HSV110", NULL, BLIST_REPORTLUN2 | BLIST_NOSTARTONADD}, + {"COMPAQ", "HSV110", NULL, BLIST_REPORTLUN | BLIST_NOSTARTONADD}, {"DDN", "SAN DataDirector", "*", BLIST_SPARSELUN}, - {"DEC", "HSG80", NULL, BLIST_REPORTLUN2 | BLIST_NOSTARTONADD}, + {"DEC", "HSG80", NULL, BLIST_REPORTLUN | BLIST_NOSTARTONADD}, {"DELL", "PV660F", NULL, BLIST_SPARSELUN}, {"DELL", "PV660F PSEUDO", NULL, BLIST_SPARSELUN}, {"DELL", "PSEUDO DEVICE .", NULL, BLIST_SPARSELUN}, /* Dell PV 530F */ @@ -158,7 +158,7 @@ {"HP", "A6189A", NULL, BLIST_SPARSELUN | BLIST_LARGELUN}, /* HP VA7400 */ {"HP", "OPEN-", "*", BLIST_SPARSELUN | BLIST_LARGELUN}, /* HP XP Arrays */ {"HP", "NetRAID-4M", NULL, BLIST_FORCELUN}, - {"HP", "HSV100", NULL, BLIST_REPORTLUN2 | BLIST_NOSTARTONADD}, + {"HP", "HSV100", NULL, BLIST_REPORTLUN | BLIST_NOSTARTONADD}, {"HP", "C1557A", NULL, BLIST_FORCELUN}, {"HP", "C3323-300", "4269", BLIST_NOTQ}, {"IBM", "AuSaV1S2", NULL, BLIST_FORCELUN}, @@ -176,7 +176,7 @@ {"Medion", "Flash XL MMC/SD", "2.6D", BLIST_FORCELUN}, {"MegaRAID", "LD", NULL, BLIST_FORCELUN}, {"MICROP", "4110", NULL, BLIST_NOTQ}, - {"MYLEX", "DACARMRB", "*", BLIST_REPORTLUN2}, + {"MYLEX", "DACARMRB", "*", BLIST_REPORTLUN}, {"nCipher", "Fastness Crypto", NULL, BLIST_FORCELUN}, {"NAKAMICH", "MJ-4.8S", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, {"NAKAMICH", "MJ-5.16S", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, @@ -193,7 +193,7 @@ {"SEAGATE", "ST3390N", "9546", BLIST_NOTQ}, {"SGI", "RAID3", "*", BLIST_SPARSELUN}, {"SGI", "RAID5", "*", BLIST_SPARSELUN}, - {"SGI", "TP9100", "*", BLIST_REPORTLUN2}, + {"SGI", "TP9100", "*", BLIST_REPORTLUN}, {"SGI", "Universal Xport", "*", BLIST_NO_ULD_ATTACH}, {"IBM", "Universal Xport", "*", BLIST_NO_ULD_ATTACH}, {"SMSC", "USB 2 HS-CF", NULL, BLIST_SPARSELUN | BLIST_INQUIRY_36}, diff -r -u linux-2.6.16_org/drivers/scsi/scsi_scan.c linux-2.6.16/drivers/scsi/scsi_scan.c --- linux-2.6.16_org/drivers/scsi/scsi_scan.c 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/drivers/scsi/scsi_scan.c 2006-03-30 19:29:12.000000000 +0200 @@ -1085,13 +1085,13 @@ /* * Only support SCSI-3 and up devices if BLIST_NOREPORTLUN is not set. - * Also allow SCSI-2 if BLIST_REPORTLUN2 is set and host adapter does - * support more than 8 LUNs. + * Also allow SCSI-2 and SCSI-UNKNOWN if BLIST_REPORTLUN is set and host + * adapter does support more than 8 LUNs. */ if ((bflags & BLIST_NOREPORTLUN) || starget->scsi_level < SCSI_2 || (starget->scsi_level < SCSI_3 && - (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) ) + (!(bflags & BLIST_REPORTLUN) || shost->max_lun <= 8)) ) return 1; if (bflags & BLIST_NOLUN) return 0; diff -r -u linux-2.6.16_org/include/scsi/scsi_devinfo.h linux-2.6.16/include/scsi/scsi_devinfo.h --- linux-2.6.16_org/include/scsi/scsi_devinfo.h 2006-03-20 06:53:29.000000000 +0100 +++ linux-2.6.16/include/scsi/scsi_devinfo.h 2006-03-30 19:37:56.000000000 +0200 @@ -21,8 +21,9 @@ #define BLIST_MS_SKIP_PAGE_3F 0x4000 /* do not send ms page 0x3f */ #define BLIST_USE_10_BYTE_MS 0x8000 /* use 10 byte ms before 6 byte ms */ #define BLIST_MS_192_BYTES_FOR_3F 0x10000 /* 192 byte ms page 0x3f request */ -#define BLIST_REPORTLUN2 0x20000 /* try REPORT_LUNS even for SCSI-2 devs - (if HBA supports more than 8 LUNs) */ +#define BLIST_REPORTLUN 0x20000 /* try REPORT_LUNS even for SCSI-2 and + SCSI-UNKNOWN devs + (if HBA supports more than 8 LUNs) */ #define BLIST_NOREPORTLUN 0x40000 /* don't try REPORT_LUNS scan (SCSI-3 devs) */ #define BLIST_NOT_LOCKABLE 0x80000 /* don't use PREVENT-ALLOW commands */ #define BLIST_NO_ULD_ATTACH 0x100000 /* device is actually for RAID config */ ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2006-04-18 11:10 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-04-18 11:10 Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER6 Konstantin Khorenko -- strict thread matches above, loose matches on Subject: below -- 2006-03-29 18:22 Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch James Bottomley 2006-03-29 18:35 ` Ingo Flaschberger 2006-03-29 18:43 ` James Bottomley 2006-03-29 18:54 ` Ingo Flaschberger 2006-03-29 19:03 ` James Bottomley 2006-03-29 20:23 ` Ingo Flaschberger 2006-03-29 21:11 ` James Bottomley 2006-03-30 10:53 ` Ingo Flaschberger 2006-03-30 12:58 ` Matthew Wilcox 2006-03-30 14:20 ` Ingo Flaschberger 2006-03-30 16:24 ` Matthew Wilcox 2006-03-30 16:35 ` Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER6 Ingo Flaschberger 2006-03-31 17:36 ` Ingo Flaschberger 2006-03-31 19:45 ` James Bottomley 2006-03-31 21:13 ` Ingo Flaschberger 2006-03-31 21:21 ` James Bottomley 2006-03-31 21:24 ` Ingo Flaschberger 2006-04-01 1:16 ` Ingo Flaschberger 2006-04-01 2:07 ` James Bottomley 2006-04-01 16:46 ` Ingo Flaschberger
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).