* Compaq Fiber Channel Array RM4000 / Scsi middle ware driver
@ 2006-02-24 23:55 Ingo Flaschberger
2006-02-28 0:23 ` Ingo Flaschberger
0 siblings, 1 reply; 46+ messages in thread
From: Ingo Flaschberger @ 2006-02-24 23:55 UTC (permalink / raw)
To: Linux-SCSI Mailing List
Hello,
I would like to implement the "black magic" from the cpqfc driver for the
RM4x00 arrays into a seperate module for the 2.6 series kernel.
As far as I know, there should be written a middleware because of the raid
disk type and the lun numbers.
Because thats my first kernel project and I'm not shure how and where into
the scsi framework this should be implemented, I as for some
guide/hints/whatever; and yes, I'm able to code and understand C.
Kind regards,
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] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / Scsi middle ware driver
2006-02-24 23:55 Compaq Fiber Channel Array RM4000 / Scsi middle ware driver Ingo Flaschberger
@ 2006-02-28 0:23 ` Ingo Flaschberger
2006-02-28 0:32 ` Ingo Flaschberger
0 siblings, 1 reply; 46+ messages in thread
From: Ingo Flaschberger @ 2006-02-28 0:23 UTC (permalink / raw)
To: Linux-SCSI Mailing List
Hello,
Where should the "middleware", Compaq Fiber Channel Array RM4000,
TYPE_RAID driver reside in the kernel?
scsi? char? block?
Kind regards,
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 /______//_/
-------------------------------------------------------------------------------
On Sat, 25 Feb 2006, Ingo Flaschberger wrote:
> Hello,
>
> I would like to implement the "black magic" from the cpqfc driver for the
> RM4x00 arrays into a seperate module for the 2.6 series kernel.
>
> As far as I know, there should be written a middleware because of the raid
> disk type and the lun numbers.
>
> Because thats my first kernel project and I'm not shure how and where into
> the scsi framework this should be implemented, I as for some
> guide/hints/whatever; and yes, I'm able to code and understand C.
>
> Kind regards,
> 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 /______//_/
> -------------------------------------------------------------------------------
> -
> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / Scsi middle ware driver
2006-02-28 0:23 ` Ingo Flaschberger
@ 2006-02-28 0:32 ` Ingo Flaschberger
2006-02-28 0:40 ` Matthew Wilcox
0 siblings, 1 reply; 46+ messages in thread
From: Ingo Flaschberger @ 2006-02-28 0:32 UTC (permalink / raw)
To: Linux-SCSI Mailing List
Hello again,
> Where should the "middleware", Compaq Fiber Channel Array RM4000, TYPE_RAID
> driver reside in the kernel?
>
> scsi? char? block?
at which kernel version in detail the patch should apply?
(sorry, I'm new).
Kind regards,
Ingo
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / Scsi middle ware driver
2006-02-28 0:32 ` Ingo Flaschberger
@ 2006-02-28 0:40 ` Matthew Wilcox
2006-03-22 18:17 ` Ingo Flaschberger
0 siblings, 1 reply; 46+ messages in thread
From: Matthew Wilcox @ 2006-02-28 0:40 UTC (permalink / raw)
To: Ingo Flaschberger; +Cc: Linux-SCSI Mailing List
On Tue, Feb 28, 2006 at 01:32:03AM +0100, Ingo Flaschberger wrote:
> Hello again,
>
> >Where should the "middleware", Compaq Fiber Channel Array RM4000,
> >TYPE_RAID driver reside in the kernel?
> >
> >scsi? char? block?
It should be a SCSI upper-level driver like sd.c, sr.c, st.c and osst.c.
It may make most sense for it to be implemented as a part of sd.c,
or it might be better to do it by implementing a new raid_sd.c.
> at which kernel version in detail the patch should apply?
> (sorry, I'm new).
Start with 2.6.16-rc5 (the most recent release by Linus). It shouldn't
be much effort to forward-port it whern it comes to merge it.
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / Scsi middle ware driver
2006-02-28 0:40 ` Matthew Wilcox
@ 2006-03-22 18:17 ` Ingo Flaschberger
2006-03-22 18:41 ` Martin K. Petersen
0 siblings, 1 reply; 46+ messages in thread
From: Ingo Flaschberger @ 2006-03-22 18:17 UTC (permalink / raw)
To: Matthew Wilcox; +Cc: Linux-SCSI Mailing List, mark
Hi!
IT WORKS *GGG*
(but only with already supported fc cards, cpqfc card is still missing).
---snip---
qla2200 0000:00:0d.0: Found an ISP2200, irq 10, iobase 0xe0810000
qla2200 0000:00:0d.0: Configuring PCI space...
qla2200 0000:00:0d.0: Configure NVRAM parameters...
qla2200 0000:00:0d.0: Verifying loaded RISC code...
Error handler scsi_eh_0 sleeping
qla2200 0000:00:0d.0: LIP reset occured (f7f7).
qla2200 0000:00:0d.0: Waiting for LIP to complete...
qla2200 0000:00:0d.0: LIP occured (f7f7).
qla2200 0000:00:0d.0: LOOP UP detected (1 Gbps).
qla2200 0000:00:0d.0: Topology - (Loop), Host Loop address 0x7d
scsi0 : qla2xxx
qla2200 0000:00:0d.0:
QLogic Fibre Channel HBA Driver: 8.01.04-k-fw
QLogic QLA22xx -
ISP2200: PCI (33 MHz) @ 0000:00:0d.0 hdma-, host#=0, fw=2.02.08 TP
Vendor: COMPAQ Model: ARRAY CONTROLLER Rev: 2.60
Type: RAID ANSI SCSI revision: 02
Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.60
Type: Direct-Access ANSI SCSI revision: 02
SCSI device sda: 83844000 512-byte hdwr sectors (42928 MB)
sda: Write Protect is off
sda: Mode Sense: 17 00 00 08
SCSI device sda: drive cache: write back
SCSI device sda: 83844000 512-byte hdwr sectors (42928 MB)
sda: Write Protect is off
sda: Mode Sense: 17 00 00 08
SCSI device sda: drive cache: write back
sda: sda1
sd 0:0:0:16384: Attached scsi disk sda
kjournald starting. Commit interval 5 seconds
EXT3 FS on sda1, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
---snap---
uname -a
Linux test 2.6.16 #23 SMP Wed Mar 22 19:13:00 CET 2006 i686 GNU/Linux
The only modifications are in:
drivers/scsi/scsi_scan.c modification of the lun search code
I have now to program a clean patch, the currenty patch is a quick hack
which only supports this array and may break other devices.
I think, I need to invent a new BLIST_??? value to provide a clean
implementation.
Patch for 2.6.16 will follow soon.
Kind regards,
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] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / Scsi middle ware driver
2006-03-22 18:17 ` Ingo Flaschberger
@ 2006-03-22 18:41 ` Martin K. Petersen
2006-03-22 19:58 ` Ingo Flaschberger
0 siblings, 1 reply; 46+ messages in thread
From: Martin K. Petersen @ 2006-03-22 18:41 UTC (permalink / raw)
To: Ingo Flaschberger; +Cc: Matthew Wilcox, Linux-SCSI Mailing List, mark
>>>>> "Ingo" == Ingo Flaschberger <if@xip.at> writes:
Ingo> The only modifications are in: drivers/scsi/scsi_scan.c
Ingo> modification of the lun search code
Very cool!
Do you support both PDA and VSA?
--
Martin K. Petersen http://mkp.net/
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / Scsi middle ware driver
2006-03-22 18:41 ` Martin K. Petersen
@ 2006-03-22 19:58 ` Ingo Flaschberger
2006-03-22 20:02 ` Matthew Wilcox
0 siblings, 1 reply; 46+ messages in thread
From: Ingo Flaschberger @ 2006-03-22 19:58 UTC (permalink / raw)
To: Martin K. Petersen; +Cc: Matthew Wilcox, Linux-SCSI Mailing List, mark
[-- Attachment #1: Type: TEXT/PLAIN, Size: 433 bytes --]
Hi Martin,
> Ingo> The only modifications are in: drivers/scsi/scsi_scan.c
> Ingo> modification of the lun search code
>
> Very cool!
>
> Do you support both PDA and VSA?
What is PDA and VSA?
And.. have some more probs (was a little bit too fast), perhaps you have
an idea:
When I dd more than 556k bytes to the drive, I get errors.
I have attached a log, some ideas would be great.
bye,
Ingo (going on to hunt strange errors)
[-- Attachment #2: Type: TEXT/PLAIN, Size: 8748 bytes --]
:28 sd_init_command: disk=sda, block=1032255, count=96
:28 sda : block=1032255
:28 sda : writing 96/96 512 byte blocks.
:28 scsi_add_timer: scmd: df288060, time: 30000, (e08a16e0)
:28 sd 0:0:0:16384: send 0xdf288060 sd 0:0:0:16384:
:28 command: Write (6): 0a 0f c0 3f 60 00
:28 buffer = 0xdfbca1a0, bufflen = 49152, done = 0xe0819b80, queuecommand 0xe0878460
:28 leaving scsi_dispatch_cmnd()
:28 sd_init_command: disk=sda, block=1032359, count=1016
:28 sda : block=1032359
:28 sda : writing 1016/1016 512 byte blocks.
:28 scsi_add_timer: scmd: df288a00, time: 30000, (e08a16e0)
:28 sd 0:0:0:16384: send 0xdf288a00 sd 0:0:0:16384:
:28 command: Write (10): 2a 00 00 0f c0 a7 00 03 f8 00
:28 buffer = 0xd8107800, bufflen = 520192, done = 0xe0819b80, queuecommand 0xe0878460
:28 leaving scsi_dispatch_cmnd()
:28 scsi_delete_timer: scmd: df288060, rtn: 1
:28 sd 0:0:0:16384: done 0xdf288060 SUCCESS 0 sd 0:0:0:16384:
:28 command: Write (6): 0a 0f c0 3f 60 00
:28 scsi host busy 2 failed 0
:28 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:28 sd_rw_intr: sda: res=0x0
:28 96 sectors total, 49152 bytes done.
:28 use_sg is 12
:29 scsi_delete_timer: scmd: df288a00, rtn: 1
:29 sd 0:0:0:16384: done 0xdf288a00 SUCCESS 0 sd 0:0:0:16384:
:29 command: Write (10): 2a 00 00 0f c0 a7 00 03 f8 00
:29 scsi host busy 1 failed 0
:29 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:29 sd_rw_intr: sda: res=0x0
:29 1016 sectors total, 520192 bytes done.
:29 use_sg is 126
:29 sd_init_command: disk=sda, block=4343, count=8
:29 sda : block=4343
:29 sda : reading 8/8 512 byte blocks.
:29 scsi_add_timer: scmd: df288a00, time: 30000, (e08a16e0)
:29 sd 0:0:0:16384: send 0xdf288a00 sd 0:0:0:16384:
:29 command: Read (6): 08 00 10 f7 08 00
:29 buffer = 0xdf7ecd40, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:29 leaving scsi_dispatch_cmnd()
:29 scsi_delete_timer: scmd: df288a00, rtn: 1
:29 sd 0:0:0:16384: done 0xdf288a00 SUCCESS 0 sd 0:0:0:16384:
:29 command: Read (6): 08 00 10 f7 08 00
:29 scsi host busy 1 failed 0
:29 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:29 sd_rw_intr: sda: res=0x0
:29 8 sectors total, 4096 bytes done.
:29 use_sg is 1
:29 sd_init_command: disk=sda, block=4319, count=8
:29 sda : block=4319
:29 sda : writing 8/8 512 byte blocks.
:29 scsi_add_timer: scmd: df288a00, time: 30000, (e08a16e0)
:29 sd 0:0:0:16384: send 0xdf288a00 sd 0:0:0:16384:
:29 command: Write (6): 0a 00 10 df 08 00
:29 buffer = 0xdf7ecd40, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:29 leaving scsi_dispatch_cmnd()
:29 sd_init_command: disk=sda, block=4327, count=16
:29 sda : block=4327
:29 sda : writing 16/16 512 byte blocks.
:29 scsi_add_timer: scmd: df288060, time: 30000, (e08a16e0)
:29 sd 0:0:0:16384: send 0xdf288060 sd 0:0:0:16384:
:29 command: Write (6): 0a 00 10 e7 10 00
:29 buffer = 0xdf7ec840, bufflen = 8192, done = 0xe0819b80, queuecommand 0xe0878460
:29 scsi_delete_timer: scmd: df288a00, rtn: 1
:29 leaving scsi_dispatch_cmnd()
:29 sd_init_command: disk=sda, block=4351, count=32
:29 sda : block=4351
:29 sda : writing 32/32 512 byte blocks.
:29 scsi_add_timer: scmd: df288320, time: 30000, (e08a16e0)
:29 sd 0:0:0:16384: send 0xdf288320 sd 0:0:0:16384:
:29 command: Write (6):<6>sd 0:0:0:16384: done 0xdf288a00 SUCCESS 0 sd 0:0:0:16384:
:29 command: Write (6): 0a 00 10 df 08 00
:29 scsi host busy 3 failed 0
:29 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:29 sd_rw_intr: sda: res=0x0
:29 8 sectors total, 4096 bytes done.
:29 use_sg is 1
:29 0a 00 10 ff 20 00
:29 buffer = 0xdf7ecdc0, bufflen = 16384, done = 0xe0819b80, queuecommand 0xe0878460
:29 scsi_delete_timer: scmd: df288060, rtn: 1
:29 leaving scsi_dispatch_cmnd()
:29 sd 0:0:0:16384: done 0xdf288060 SUCCESS 0 sd 0:0:0:16384:
:29 command: Write (6): 0a 00 10 e7 10 00
:29 scsi host busy 2 failed 0
:29 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:29 sd_rw_intr: sda: res=0x0
:29 16 sectors total, 8192 bytes done.
:29 use_sg is 2
:29 scsi_delete_timer: scmd: df288320, rtn: 1
:29 sd 0:0:0:16384: done 0xdf288320 SUCCESS 0 sd 0:0:0:16384:
:29 command: Write (6): 0a 00 10 ff 20 00
:29 scsi host busy 1 failed 0
:29 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:29 sd_rw_intr: sda: res=0x0
:29 32 sectors total, 16384 bytes done.
:29 use_sg is 4
:29 sd_init_command: disk=sda, block=4383, count=8
:29 sda : block=4383
:29 sda : writing 8/8 512 byte blocks.
:29 scsi_add_timer: scmd: df288320, time: 30000, (e08a16e0)
:29 sd 0:0:0:16384: send 0xdf288320 sd 0:0:0:16384:
:29 command: Write (6): 0a 00 11 1f 08 00
:29 buffer = 0xdf7ecdc0, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:29 leaving scsi_dispatch_cmnd()
:29 scsi_delete_timer: scmd: df288320, rtn: 1
:29 sd 0:0:0:16384: done 0xdf288320 SUCCESS 0 sd 0:0:0:16384:
:29 command: Write (6): 0a 00 11 1f 08 00
:29 scsi host busy 1 failed 0
:29 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:29 sd_rw_intr: sda: res=0x0
:29 8 sectors total, 4096 bytes done.
:29 use_sg is 1
:29 sd_init_command: disk=sda, block=63, count=16
:29 sda : block=63
:29 sda : writing 16/16 512 byte blocks.
:29 scsi_add_timer: scmd: df288320, time: 30000, (e08a16e0)
:29 sd 0:0:0:16384: send 0xdf288320 sd 0:0:0:16384:
:29 command: Write (6): 0a 00 00 3f 10 00
:29 buffer = 0xdf7ecdc0, bufflen = 8192, done = 0xe0819b80, queuecommand 0xe0878460
:29 leaving scsi_dispatch_cmnd()
:29 sd_init_command: disk=sda, block=786527, count=8
:29 sda : block=786527
:29 sda : writing 8/8 512 byte blocks.
:29 scsi_add_timer: scmd: df288060, time: 30000, (e08a16e0)
:29 sd 0:0:0:16384: send 0xdf288060 sd 0:0:0:16384:
:29 command: Write (6): 0a 0c 00 5f 08 00
:29 buffer = 0xdf7ec840, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:29 scsi_delete_timer: scmd: df288320, rtn: 1
:29 leaving scsi_dispatch_cmnd()
:29 sd_init_command: disk=sda, block=786543, count=8
:29 sda : block=786543
:29 sda : writing 8/8 512 byte blocks.
:29 scsi_add_timer: scmd: df288a00, time: 30000, (e08a16e0)
:29 sd 0:0:0:16384: send 0xdf288a00 sd 0:0:0:16384:
:29 command: Write (6):<6>sd 0:0:0:16384: done 0xdf288320 SUCCESS 0 sd 0:0:0:16384:
:29 command: Write (6): 0a 00 00 3f 10 00
:29 scsi host busy 3 failed 0
:29 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:29 sd_rw_intr: sda: res=0x0
:29 16 sectors total, 8192 bytes done.
:29 use_sg is 2
:29 sd_init_command: disk=sda, block=1032351, count=8
:29 sda : block=1032351
:29 sda : writing 8/8 512 byte blocks.
:29 scsi_add_timer: scmd: df288320, time: 30000, (e08a16e0)
:29 sd 0:0:0:16384: send 0xdf288320 sd 0:0:0:16384:
:29 command: Write (6): 0a 0f c0 9f 08 00
:29 buffer = 0xdf7ecdc0, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:29 leaving scsi_dispatch_cmnd()
:29 0a 0c 00 6f 08 00
:29 buffer = 0xdf7ecd40, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:29 scsi_delete_timer: scmd: df288060, rtn: 1
:29 leaving scsi_dispatch_cmnd()
:29 sd 0:0:0:16384: done 0xdf288060 SUCCESS 0 sd 0:0:0:16384:
:29 command: Write (6):scsi_delete_timer: scmd: df288320, rtn: 1
:29 scsi_delete_timer: scmd: df288a00, rtn: 1
:29 0a 0c 00 5f 08 00
:29 scsi host busy 3 failed 0
:29 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:29 sd_rw_intr: sda: res=0x0
:29 8 sectors total, 4096 bytes done.
:29 use_sg is 1
:29 sd 0:0:0:16384: done 0xdf288320 SUCCESS 0 sd 0:0:0:16384:
:29 command: Write (6): 0a 0f c0 9f 08 00
:29 scsi host busy 2 failed 0
:29 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:29 sd_rw_intr: sda: res=0x0
:29 8 sectors total, 4096 bytes done.
:29 use_sg is 1
:29 sd 0:0:0:16384: done 0xdf288a00 SUCCESS 0 sd 0:0:0:16384:
:29 command: Write (6): 0a 0c 00 6f 08 00
:29 scsi host busy 1 failed 0
:29 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:29 sd_rw_intr: sda: res=0x0
:29 8 sectors total, 4096 bytes done.
:29 use_sg is 1
[-- Attachment #3: Type: TEXT/PLAIN, Size: 11648 bytes --]
:19 sd_init_command: disk=sda, block=4207, count=8
:19 sda : block=4207
:19 sda : reading 8/8 512 byte blocks.
:19 scsi_add_timer: scmd: df288740, time: 30000, (e08a16e0)
:19 sd 0:0:0:16384: send 0xdf288740 sd 0:0:0:16384:
:19 command: Read (6): 08 00 10 6f 08 00
:19 buffer = 0xdf7ec0c0, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:19 leaving scsi_dispatch_cmnd()
:19 scsi_delete_timer: scmd: df288740, rtn: 1
:19 sd 0:0:0:16384: done 0xdf288740 SUCCESS 0 sd 0:0:0:16384:
:19 command: Read (6): 08 00 10 6f 08 00
:19 scsi host busy 1 failed 0
:19 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:19 sd_rw_intr: sda: res=0x0
:19 8 sectors total, 4096 bytes done.
:19 use_sg is 1
:19 sd_init_command: disk=sda, block=786543, count=8
:19 sda : block=786543
:19 sda : reading 8/8 512 byte blocks.
:19 scsi_add_timer: scmd: df288740, time: 30000, (e08a16e0)
:19 sd 0:0:0:16384: send 0xdf288740 sd 0:0:0:16384:
:19 command: Read (6): 08 0c 00 6f 08 00
:19 buffer = 0xdf7ec0c0, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:19 leaving scsi_dispatch_cmnd()
:19 scsi_delete_timer: scmd: df288740, rtn: 1
:19 sd 0:0:0:16384: done 0xdf288740 SUCCESS 0 sd 0:0:0:16384:
:19 command: Read (6): 08 0c 00 6f 08 00
:19 scsi host busy 1 failed 0
:19 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:19 sd_rw_intr: sda: res=0x0
:19 8 sectors total, 4096 bytes done.
:19 use_sg is 1
:19 sd_init_command: disk=sda, block=786527, count=8
:19 sda : block=786527
:19 sda : reading 8/8 512 byte blocks.
:19 scsi_add_timer: scmd: df288740, time: 30000, (e08a16e0)
:19 sd 0:0:0:16384: send 0xdf288740 sd 0:0:0:16384:
:19 command: Read (6): 08 0c 00 5f 08 00
:19 buffer = 0xdf7ec0c0, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:19 leaving scsi_dispatch_cmnd()
:19 scsi_delete_timer: scmd: df288740, rtn: 1
:19 sd 0:0:0:16384: done 0xdf288740 SUCCESS 0 sd 0:0:0:16384:
:19 command: Read (6): 08 0c 00 5f 08 00
:19 scsi host busy 1 failed 0
:19 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:19 sd_rw_intr: sda: res=0x0
:19 8 sectors total, 4096 bytes done.
:19 use_sg is 1
:19 sd_init_command: disk=sda, block=917663, count=8
:19 sda : block=917663
:19 sda : reading 8/8 512 byte blocks.
:19 scsi_add_timer: scmd: df288740, time: 30000, (e08a16e0)
:19 sd 0:0:0:16384: send 0xdf288740 sd 0:0:0:16384:
:19 command: Read (6): 08 0e 00 9f 08 00
:19 buffer = 0xdf7ec0c0, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:19 leaving scsi_dispatch_cmnd()
:19 scsi_delete_timer: scmd: df288740, rtn: 1
:19 sd 0:0:0:16384: done 0xdf288740 SUCCESS 0 sd 0:0:0:16384:
:19 command: Read (6): 08 0e 00 9f 08 00
:19 scsi host busy 1 failed 0
:19 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:19 sd_rw_intr: sda: res=0x0
:19 8 sectors total, 4096 bytes done.
:19 use_sg is 1
:19 sd_init_command: disk=sda, block=966719, count=96
:19 sda : block=966719
:19 sda : writing 96/96 512 byte blocks.
:19 scsi_add_timer: scmd: df288740, time: 30000, (e08a16e0)
:19 sd 0:0:0:16384: send 0xdf288740 sd 0:0:0:16384:
:19 command: Write (6): 0a 0e c0 3f 60 00
:19 buffer = 0xdfbcaca0, bufflen = 49152, done = 0xe0819b80, queuecommand 0xe0878460
:19 leaving scsi_dispatch_cmnd()
:19 sd_init_command: disk=sda, block=966823, count=1024
:19 sda : block=966823
:19 sda : writing 1024/1024 512 byte blocks.
:19 scsi_add_timer: scmd: df288480, time: 30000, (e08a16e0)
:19 sd 0:0:0:16384: send 0xdf288480 sd 0:0:0:16384:
:19 command: Write (10): 2a 00 00 0e c0 a7 00 04 00 00
:19 buffer = 0xd7c9d800, bufflen = 524288, done = 0xe0819b80, queuecommand 0xe0878460
:19 leaving scsi_dispatch_cmnd()
:19 scsi_delete_timer: scmd: df288740, rtn: 1
:19 scsi_delete_timer: scmd: df288480, rtn: 1
:19 sd 0:0:0:16384: done 0xdf288740 SUCCESS 0 sd 0:0:0:16384:
:19 command: Write (6): 0a 0e c0 3f 60 00
:19 scsi host busy 2 failed 0
:19 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:19 sd_rw_intr: sda: res=0x0
:19 96 sectors total, 49152 bytes done.
:19 use_sg is 12
:19 sd 0:0:0:16384: done 0xdf288480 SUCCESS 2 sd 0:0:0:16384:
:19 command: Write (10): 2a 00 00 0e c0 a7 00 04 00 00
:19 sda: Current: sense key: Illegal Request
:19 Additional sense: Invalid field in cdb
:19 Info fld=0x0
:19 scsi host busy 1 failed 0
:19 sd 0:0:0:16384: Notifying upper driver of completion (result 8000002)
:19 sd_rw_intr: sda: res=0x8000002
:19 sd_rw_intr: sb[respc,sk,asc,ascq]=70,5,24,0
:19 1024 sectors total, 0 bytes done.
:19 use_sg is 127
:19 end_request: I/O error, dev sda, sector 966823
:19 printk: 118 messages suppressed.
:19 Buffer I/O error on device sda1, logical block 120845
:19 lost page write due to I/O error on sda1
:19 Buffer I/O error on device sda1, logical block 120846
:19 lost page write due to I/O error on sda1
:19 Buffer I/O error on device sda1, logical block 120847
:19 lost page write due to I/O error on sda1
:19 Buffer I/O error on device sda1, logical block 120848
:19 lost page write due to I/O error on sda1
:19 Buffer I/O error on device sda1, logical block 120849
:19 lost page write due to I/O error on sda1
:19 Buffer I/O error on device sda1, logical block 120850
:19 lost page write due to I/O error on sda1
:19 Buffer I/O error on device sda1, logical block 120851
:19 lost page write due to I/O error on sda1
:19 Buffer I/O error on device sda1, logical block 120852
:19 lost page write due to I/O error on sda1
:19 Buffer I/O error on device sda1, logical block 120853
:19 lost page write due to I/O error on sda1
:19 Buffer I/O error on device sda1, logical block 120854
:19 lost page write due to I/O error on sda1
:19 sd_init_command: disk=sda, block=4247, count=8
:19 sda : block=4247
:19 sda : writing 8/8 512 byte blocks.
:19 scsi_add_timer: scmd: df288480, time: 30000, (e08a16e0)
:19 sd 0:0:0:16384: send 0xdf288480 sd 0:0:0:16384:
:19 command: Write (6): 0a 00 10 97 08 00
:19 buffer = 0xdf7ec0c0, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:19 leaving scsi_dispatch_cmnd()
:19 scsi_delete_timer: scmd: df288480, rtn: 1
:19 sd 0:0:0:16384: done 0xdf288480 SUCCESS 0 sd 0:0:0:16384:
:19 command: Write (6): 0a 00 10 97 08 00
:19 scsi host busy 1 failed 0
:19 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:19 sd_rw_intr: sda: res=0x0
:19 8 sectors total, 4096 bytes done.
:19 use_sg is 1
:19 sd_init_command: disk=sda, block=4255, count=56
:19 sda : block=4255
:19 sda : writing 56/56 512 byte blocks.
:19 scsi_add_timer: scmd: df288480, time: 30000, (e08a16e0)
:19 sd 0:0:0:16384: send 0xdf288480 sd 0:0:0:16384:
:19 command: Write (6): 0a 00 10 9f 38 00
:19 buffer = 0xdf7ec0c0, bufflen = 28672, done = 0xe0819b80, queuecommand 0xe0878460
:19 leaving scsi_dispatch_cmnd()
:19 scsi_delete_timer: scmd: df288480, rtn: 1
:19 sd 0:0:0:16384: done 0xdf288480 SUCCESS 0 sd 0:0:0:16384:
:19 command: Write (6): 0a 00 10 9f 38 00
:19 scsi host busy 1 failed 0
:19 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:19 sd_rw_intr: sda: res=0x0
:19 56 sectors total, 28672 bytes done.
:19 use_sg is 6
:19 sd_init_command: disk=sda, block=4311, count=8
:19 sda : block=4311
:19 sda : writing 8/8 512 byte blocks.
:19 scsi_add_timer: scmd: df288480, time: 30000, (e08a16e0)
:19 sd 0:0:0:16384: send 0xdf288480 sd 0:0:0:16384:
:19 command: Write (6): 0a 00 10 d7 08 00
:19 buffer = 0xdf7ec0c0, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:19 leaving scsi_dispatch_cmnd()
:19 scsi_delete_timer: scmd: df288480, rtn: 1
:19 sd 0:0:0:16384: done 0xdf288480 SUCCESS 0 sd 0:0:0:16384:
:19 command: Write (6): 0a 00 10 d7 08 00
:19 scsi host busy 1 failed 0
:19 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:19 sd_rw_intr: sda: res=0x0
:19 8 sectors total, 4096 bytes done.
:19 use_sg is 1
:19 sd_init_command: disk=sda, block=63, count=16
:19 sda : block=63
:19 sda : writing 16/16 512 byte blocks.
:19 scsi_add_timer: scmd: df288480, time: 30000, (e08a16e0)
:19 sd 0:0:0:16384: send 0xdf288480 sd 0:0:0:16384:
:19 command: Write (6): 0a 00 00 3f 10 00
:19 buffer = 0xdf7ec0c0, bufflen = 8192, done = 0xe0819b80, queuecommand 0xe0878460
:19 leaving scsi_dispatch_cmnd()
:19 sd_init_command: disk=sda, block=786527, count=8
:19 sda : block=786527
:19 sda : writing 8/8 512 byte blocks.
:19 scsi_add_timer: scmd: df288740, time: 30000, (e08a16e0)
:19 sd 0:0:0:16384: send 0xdf288740 sd 0:0:0:16384:
:19 command: Write (6): 0a 0c 00 5f 08 00
:19 buffer = 0xdf7ecc40, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:19 scsi_delete_timer: scmd: df288480, rtn: 1
:19 leaving scsi_dispatch_cmnd()
:19 sd_init_command: disk=sda, block=786543, count=8
:19 sda : block=786543
:19 sda : writing 8/8 512 byte blocks.
:19 scsi_add_timer: scmd: df2881c0, time: 30000, (e08a16e0)
:19 sd 0:0:0:16384: send 0xdf2881c0 sd 0:0:0:16384:
:19 command: Write (6): 0a 0c 00 6f 08 00
:19 buffer = 0xdf7ec540, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:19 scsi_delete_timer: scmd: df288740, rtn: 1
:19 sd 0:0:0:16384: done 0xdf288480 SUCCESS 0 sd 0:0:0:16384:
:19 command: Write (6): 0a 00 00 3f 10 00
:19 scsi host busy 3 failed 0
:19 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:19 sd_rw_intr: sda: res=0x0
:19 16 sectors total, 8192 bytes done.
:19 use_sg is 2
:19 sd_init_command: disk=sda, block=966815, count=8
:19 sda : block=966815
:19 sda : writing 8/8 512 byte blocks.
:19 scsi_add_timer: scmd: df288480, time: 30000, (e08a16e0)
:19 sd 0:0:0:16384: send 0xdf288480 sd 0:0:0:16384:
:19 command: Write (6): 0a 0e c0 9f 08 00
:19 buffer = 0xdf7ec0c0, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:19 scsi_delete_timer: scmd: df2881c0, rtn: 1
:19 leaving scsi_dispatch_cmnd()
:19 sd 0:0:0:16384: done 0xdf288740 SUCCESS 0 sd 0:0:0:16384:
:19 command: Write (6): 0a 0c 00 5f 08 00
:19 scsi host busy 3 failed 0
:19 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:19 sd_rw_intr: sda: res=0x0
:19 8 sectors total, 4096 bytes done.
:19 use_sg is 1
:19 sd 0:0:0:16384: done 0xdf2881c0 SUCCESS 0 sd 0:0:0:16384:
:19 command: Write (6): 0a 0c 00 6f 08 00
:19 scsi host busy 2 failed 0
:19 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:19 sd_rw_intr: sda: res=0x0
:19 8 sectors total, 4096 bytes done.
:19 use_sg is 1
:19 leaving scsi_dispatch_cmnd()
:19 scsi_delete_timer: scmd: df288480, rtn: 1
:19 sd 0:0:0:16384: done 0xdf288480 SUCCESS 0 sd 0:0:0:16384:
:19 command: Write (6): 0a 0e c0 9f 08 00
:19 scsi host busy 1 failed 0
:19 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:19 sd_rw_intr: sda: res=0x0
:19 8 sectors total, 4096 bytes done.
:19 use_sg is 1
[-- Attachment #4: Type: TEXT/PLAIN, Size: 6198 bytes --]
:34 sd_init_command: disk=sda, block=983207, count=1024
:34 sda : block=983207
:34 sda : writing 1024/1024 512 byte blocks.
:34 scsi_add_timer: scmd: df288480, time: 30000, (e08a16e0)
:34 sd 0:0:0:16384: send 0xdf288480 sd 0:0:0:16384:
:34 command: Write (10): 2a 00 00 0f 00 a7 00 04 00 00
:34 buffer = 0xd811b800, bufflen = 524288, done = 0xe0819b80, queuecommand 0xe0878460
:34 leaving scsi_dispatch_cmnd()
:34 sd_init_command: disk=sda, block=983103, count=96
:34 sda : block=983103
:34 sda : writing 96/96 512 byte blocks.
:34 scsi_add_timer: scmd: df2881c0, time: 30000, (e08a16e0)
:34 scsi_delete_timer: scmd: df288480, rtn: 1
:34 sd 0:0:0:16384: done 0xdf288480 SUCCESS 2 sd 0:0:0:16384:
:34 command: Write (10): 2a 00 00 0f 00 a7 00 04 00 00
:34 sda: Current: sense key: Illegal Request
:34 Additional sense: Invalid field in cdb
:34 Info fld=0x0
:34 scsi host busy 2 failed 0
:34 sd 0:0:0:16384: Notifying upper driver of completion (result 8000002)
:34 sd_rw_intr: sda: res=0x8000002
:34 sd_rw_intr: sb[respc,sk,asc,ascq]=70,5,24,0
:34 1024 sectors total, 0 bytes done.
:34 use_sg is 127
:34 end_request: I/O error, dev sda, sector 983207
:34 printk: 118 messages suppressed.
:34 Buffer I/O error on device sda1, logical block 122893
:34 lost page write due to I/O error on sda1
:34 Buffer I/O error on device sda1, logical block 122894
:34 lost page write due to I/O error on sda1
:34 Buffer I/O error on device sda1, logical block 122895
:34 lost page write due to I/O error on sda1
:34 Buffer I/O error on device sda1, logical block 122896
:34 lost page write due to I/O error on sda1
:34 Buffer I/O error on device sda1, logical block 122897
:34 lost page write due to I/O error on sda1
:34 Buffer I/O error on device sda1, logical block 122898
:34 lost page write due to I/O error on sda1
:34 Buffer I/O error on device sda1, logical block 122899
:34 lost page write due to I/O error on sda1
:34 Buffer I/O error on device sda1, logical block 122900
:34 lost page write due to I/O error on sda1
:34 Buffer I/O error on device sda1, logical block 122901
:34 lost page write due to I/O error on sda1
:34 Buffer I/O error on device sda1, logical block 122902
:34 lost page write due to I/O error on sda1
:34 sd 0:0:0:16384: send 0xdf2881c0 sd 0:0:0:16384:
:34 command: Write (6): 0a 0f 00 3f 60 00
:34 buffer = 0xdfbcaca0, bufflen = 49152, done = 0xe0819b80, queuecommand 0xe0878460
:34 leaving scsi_dispatch_cmnd()
:34 scsi_delete_timer: scmd: df2881c0, rtn: 1
:34 sd 0:0:0:16384: done 0xdf2881c0 SUCCESS 0 sd 0:0:0:16384:
:34 command: Write (6): 0a 0f 00 3f 60 00
:34 scsi host busy 1 failed 0
:34 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:34 sd_rw_intr: sda: res=0x0
:34 96 sectors total, 49152 bytes done.
:34 use_sg is 12
:34 Aborting journal on device sda1.
:34 journal commit I/O error
:34 sd_init_command: disk=sda, block=983199, count=8
:34 sda : block=983199
:34 sda : writing 8/8 512 byte blocks.
:34 scsi_add_timer: scmd: df2881c0, time: 30000, (e08a16e0)
:34 sd 0:0:0:16384: send 0xdf2881c0 sd 0:0:0:16384:
:34 command: Write (6): 0a 0f 00 9f 08 00
:34 buffer = 0xdf7ec0c0, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:34 leaving scsi_dispatch_cmnd()
:34 sd_init_command: disk=sda, block=786543, count=8
:34 sda : block=786543
:34 sda : writing 8/8 512 byte blocks.
:34 scsi_add_timer: scmd: df288480, time: 30000, (e08a16e0)
:34 sd 0:0:0:16384: send 0xdf288480 sd 0:0:0:16384:
:34 command: Write (6): 0a 0c 00 6f 08 00
:34 buffer = 0xdf7ec540, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:34 scsi_delete_timer: scmd: df2881c0, rtn: 1
:34 leaving scsi_dispatch_cmnd()
:34 sd_init_command: disk=sda, block=786527, count=8
:34 sda : block=786527
:34 sda : writing 8/8 512 byte blocks.
:34 scsi_add_timer: scmd: df288740, time: 30000, (e08a16e0)
:34 sd 0:0:0:16384: send 0xdf288740 sd 0:0:0:16384:
:34 command: Write (6):<6>sd 0:0:0:16384: done 0xdf2881c0 SUCCESS 0 sd 0:0:0:16384:
:34 command: Write (6): 0a 0f 00 9f 08 00
:34 scsi host busy 3 failed 0
:34 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:34 sd_rw_intr: sda: res=0x0
:34 8 sectors total, 4096 bytes done.
:34 use_sg is 1
:34 sd_init_command: disk=sda, block=63, count=16
:34 sda : block=63
:34 sda : writing 16/16 512 byte blocks.
:34 scsi_add_timer: scmd: df2881c0, time: 30000, (e08a16e0)
:34 sd 0:0:0:16384: send 0xdf2881c0 sd 0:0:0:16384:
:34 command: Write (6): 0a 00 00 3f 10 00
:34 buffer = 0xdf7ec0c0, bufflen = 8192, done = 0xe0819b80, queuecommand 0xe0878460
:34 leaving scsi_dispatch_cmnd()
:34 0a 0c 00 5f 08 00
:34 buffer = 0xdf7ecc40, bufflen = 4096, done = 0xe0819b80, queuecommand 0xe0878460
:34 scsi_delete_timer: scmd: df288480, rtn: 1
:34 scsi_delete_timer: scmd: df2881c0, rtn: 1
:34 leaving scsi_dispatch_cmnd()
:34 sd 0:0:0:16384: done 0xdf288480 SUCCESS 0 sd 0:0:0:16384:
:34 command: Write (6): 0a 0c 00 6f 08 00
:34 scsi host busy 3 failed 0
:34 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:34 sd_rw_intr: sda: res=0x0
:34 8 sectors total, 4096 bytes done.
:34 use_sg is 1
:34 sd 0:0:0:16384: done 0xdf2881c0 SUCCESS 0 sd 0:0:0:16384:
:34 command: Write (6): 0a 00scsi_delete_timer: scmd: df288740, rtn: 1
:34 00 3f 10 00
:34 scsi host busy 2 failed 0
:34 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:34 sd_rw_intr: sda: res=0x0
:34 16 sectors total, 8192 bytes done.
:34 use_sg is 2
:34 sd 0:0:0:16384: done 0xdf288740 SUCCESS 0 sd 0:0:0:16384:
:34 command: Write (6): 0a 0c 00 5f 08 00
:34 scsi host busy 1 failed 0
:34 sd 0:0:0:16384: Notifying upper driver of completion (result 0)
:34 sd_rw_intr: sda: res=0x0
:34 8 sectors total, 4096 bytes done.
:34 use_sg is 1
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / Scsi middle ware driver
2006-03-22 19:58 ` Ingo Flaschberger
@ 2006-03-22 20:02 ` Matthew Wilcox
2006-03-22 20:13 ` Ingo Flaschberger
0 siblings, 1 reply; 46+ messages in thread
From: Matthew Wilcox @ 2006-03-22 20:02 UTC (permalink / raw)
To: Ingo Flaschberger; +Cc: Martin K. Petersen, Linux-SCSI Mailing List, mark
On Wed, Mar 22, 2006 at 08:58:32PM +0100, Ingo Flaschberger wrote:
> Hi Martin,
>
> >Ingo> The only modifications are in: drivers/scsi/scsi_scan.c
> >Ingo> modification of the lun search code
> >
> >Very cool!
> >
> >Do you support both PDA and VSA?
>
> What is PDA and VSA?
>
> And.. have some more probs (was a little bit too fast), perhaps you have
> an idea:
> When I dd more than 556k bytes to the drive, I get errors.
> I have attached a log, some ideas would be great.
If you sent the patch, it might help people have ideas about what might
be wrong with it.
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / Scsi middle ware driver
2006-03-22 20:02 ` Matthew Wilcox
@ 2006-03-22 20:13 ` Ingo Flaschberger
2006-03-28 19:43 ` Compaq Fiber Channel Array RM4000 / SCSI Problems / Need HELP! Ingo Flaschberger
0 siblings, 1 reply; 46+ messages in thread
From: Ingo Flaschberger @ 2006-03-22 20:13 UTC (permalink / raw)
To: Matthew Wilcox; +Cc: Martin K. Petersen, Linux-SCSI Mailing List, mark
[-- Attachment #1: Type: TEXT/PLAIN, Size: 1504 bytes --]
Hello Matthew,
>> And.. have some more probs (was a little bit too fast), perhaps you have
>> an idea:
>> When I dd more than 556k bytes to the drive, I get errors.
>> I have attached a log, some ideas would be great.
>
> If you sent the patch, it might help people have ideas about what might
> be wrong with it.
Attached.
But "special" ugly hack, far away from final code.
I have only changed scsi_scan.c, but nothing else (only printk to track
the extecution, perhaps I should read a howto for kernel debugging...)
The problem, I think must have someting todo with:
cpqfcTSworker.c from linux-2.4.20:
---snip---
if( (Exchanges->fcExchange[ ExchangeID].type == BLS_ABTS)
&&
// Second, does the source of this ACC match the destination
// of who we originally sent it to?
((Exchanges->fcExchange[ ExchangeID].fchs.d_id & 0xFFFFFF) ==
(fchs->s_id & 0xFFFFFF)) )
{
// YES! NOTE: There is a bug in CPQ's RA-4000 box
// where the "reason code" isn't returned in the payload
// For now, simply presume the reject is because the target
// already completed the exchange...
// printk("complete x_ID %Xh on ABTS RJT\n", ExchangeID);
cpqfcTSCompleteExchange( cpqfcHBAdata->PciDev, fcChip, ExchangeID );
}
---snap---
I have tracked down the prob till now to:
scsi_lib.c ->scsi_softirq_done
Will go on tomorrow.
cya,
Ingo
[-- Attachment #2: Type: TEXT/PLAIN, Size: 14284 bytes --]
diff -r -u linux-2.6.16/drivers/scsi/constants.c linux-2.6.16_ra4x00/drivers/scsi/constants.c
--- linux-2.6.16/drivers/scsi/constants.c 2006-03-20 06:53:29.000000000 +0100
+++ linux-2.6.16_ra4x00/drivers/scsi/constants.c 2006-03-22 21:31:13.000000000 +0100
@@ -1140,6 +1140,7 @@
{
const char *extd_sense_fmt = scsi_extd_sense_format(asc, ascq);
+ printk(KERN_INFO "scsi_if: scsi_show_extd_sense\n");
if (extd_sense_fmt) {
if (strstr(extd_sense_fmt, "%x")) {
printk("Additional sense: ");
@@ -1166,6 +1167,7 @@
*/
const char *error = scsi_sense_is_deferred(sshdr) ?
"<<DEFERRED>>" : "Current";
+ printk(KERN_INFO "scsi_if: scsi_print_sense_hdr\n");
printk(KERN_INFO "%s: %s", name, error);
if (sshdr->response_code >= 0x72)
printk(" [descriptor]");
@@ -1205,6 +1207,7 @@
printk("\n");
return;
}
+ printk(KERN_INFO "scsi_if: __scsi_print_sense\n");
scsi_print_sense_hdr(name, &ssh);
if (ssh.response_code < 0x72) {
/* only decode extras for "fixed" format now */
diff -r -u linux-2.6.16/drivers/scsi/scsi.c linux-2.6.16_ra4x00/drivers/scsi/scsi.c
--- linux-2.6.16/drivers/scsi/scsi.c 2006-03-20 06:53:29.000000000 +0100
+++ linux-2.6.16_ra4x00/drivers/scsi/scsi.c 2006-03-22 21:38:26.000000000 +0100
@@ -490,6 +490,7 @@
* XXX The scsi_print_sense formatting/prefix
* doesn't match this function.
*/
+ printk(KERN_INFO "scsi_if: scsi_log_completion\n");
scsi_print_sense("", cmd);
}
if (level > 3) {
diff -r -u linux-2.6.16/drivers/scsi/scsi_devinfo.c linux-2.6.16_ra4x00/drivers/scsi/scsi_devinfo.c
--- linux-2.6.16/drivers/scsi/scsi_devinfo.c 2006-03-20 06:53:29.000000000 +0100
+++ linux-2.6.16_ra4x00/drivers/scsi/scsi_devinfo.c 2006-03-22 14:32:03.000000000 +0100
@@ -132,6 +132,7 @@
{"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", NULL, BLIST_SPARSELUN | BLIST_REPORTLUN2}, /* 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/drivers/scsi/scsi_error.c linux-2.6.16_ra4x00/drivers/scsi/scsi_error.c
--- linux-2.6.16/drivers/scsi/scsi_error.c 2006-03-20 06:53:29.000000000 +0100
+++ linux-2.6.16_ra4x00/drivers/scsi/scsi_error.c 2006-03-22 21:54:47.000000000 +0100
@@ -161,6 +161,7 @@
**/
void scsi_times_out(struct scsi_cmnd *scmd)
{
+ printk(KERN_INFO "scsi_if: scsi_times_out\n");
scsi_log_completion(scmd, TIMEOUT_ERROR);
if (scmd->device->host->hostt->eh_timed_out)
@@ -467,6 +468,7 @@
scmd->request->rq_status = RQ_SCSI_DONE;
shost->eh_action = NULL;
+ printk(KERN_INFO "scsi_if: scsi_send_eh_cmnd\n");
scsi_log_completion(scmd, SUCCESS);
SCSI_LOG_ERROR_RECOVERY(3,
@@ -640,6 +642,7 @@
" result %x\n", scmd,
scmd->result));
SCSI_LOG_ERROR_RECOVERY(3, scsi_print_sense("bh", scmd));
+ printk(KERN_INFO "scsi_if: scsi_eh_get_sense\n");
rtn = scsi_decide_disposition(scmd);
diff -r -u linux-2.6.16/drivers/scsi/scsi_ioctl.c linux-2.6.16_ra4x00/drivers/scsi/scsi_ioctl.c
--- linux-2.6.16/drivers/scsi/scsi_ioctl.c 2006-03-20 06:53:29.000000000 +0100
+++ linux-2.6.16_ra4x00/drivers/scsi/scsi_ioctl.c 2006-03-22 21:19:43.000000000 +0100
@@ -125,6 +125,7 @@
sdev_printk(KERN_INFO, sdev,
"ioctl_internal_command return code = %x\n",
result);
+ printk(KERN_INFO "scsi_if: ioctl_internal_command\n");
scsi_print_sense_hdr(" ", &sshdr);
break;
}
diff -r -u linux-2.6.16/drivers/scsi/scsi_lib.c linux-2.6.16_ra4x00/drivers/scsi/scsi_lib.c
--- linux-2.6.16/drivers/scsi/scsi_lib.c 2006-03-20 06:53:29.000000000 +0100
+++ linux-2.6.16_ra4x00/drivers/scsi/scsi_lib.c 2006-03-22 21:53:58.000000000 +0100
@@ -1086,6 +1086,7 @@
"Volume overflow, CDB: ");
__scsi_print_command(cmd->data_cmnd);
scsi_print_sense("", cmd);
+ printk(KERN_INFO "scsi_if: scsi_io_completion\n");
}
scsi_end_request(cmd, 0, block_bytes, 1);
return;
@@ -1107,8 +1108,10 @@
scmd_printk(KERN_INFO, cmd,
"SCSI error: return code = 0x%x\n", result);
- if (driver_byte(result) & DRIVER_SENSE)
+ if (driver_byte(result) & DRIVER_SENSE) {
+ printk(KERN_INFO "scsi_if: scsi_io_completion\n");
scsi_print_sense("", cmd);
+ }
}
/*
* Mark a single buffer as not uptodate. Queue the remainder.
@@ -1512,6 +1515,7 @@
disposition = SUCCESS;
}
+ printk(KERN_INFO "scsi_if: scsi_softirq_done\n");
scsi_log_completion(cmd, disposition);
switch (disposition) {
diff -r -u linux-2.6.16/drivers/scsi/scsi_scan.c linux-2.6.16_ra4x00/drivers/scsi/scsi_scan.c
--- linux-2.6.16/drivers/scsi/scsi_scan.c 2006-03-20 06:53:29.000000000 +0100
+++ linux-2.6.16_ra4x00/drivers/scsi/scsi_scan.c 2006-03-22 20:07:10.000000000 +0100
@@ -76,7 +76,8 @@
static const char *scsi_null_device_strs = "nullnullnullnull";
-#define MAX_SCSI_LUNS 512
+//#define MAX_SCSI_LUNS 512
+#define MAX_SCSI_LUNS 10000
#ifdef CONFIG_SCSI_MULTI_LUN
static unsigned int max_scsi_luns = MAX_SCSI_LUNS;
@@ -175,6 +176,8 @@
i = inq_result[0] & 0x1f;
+ // fake scsi version 2
+ inq_result[2] = 2;
printk(KERN_NOTICE " Type: %s ",
i <
MAX_SCSI_DEVICE_CODE ? scsi_device_types[i] :
@@ -446,6 +449,8 @@
int response_len = 0;
int pass, count, result;
struct scsi_sense_hdr sshdr;
+
+ //printk(KERN_INFO "scsi_if: scsi_probe_lun\n");
*bflags = 0;
@@ -577,7 +582,9 @@
* device is attached at LUN 0 (SCSI_SCAN_TARGET_PRESENT) so
* non-zero LUNs can be scanned.
*/
+ printk(KERN_INFO "scsi_if: scsi_probe_lun %x\n", inq_result[2]);
sdev->scsi_level = inq_result[2] & 0x07;
+ sdev->scsi_level = 2;
if (sdev->scsi_level >= 2 ||
(sdev->scsi_level == 1 && (inq_result[3] & 0x0f) == 1))
sdev->scsi_level++;
@@ -647,6 +654,7 @@
case TYPE_MEDIUM_CHANGER:
case TYPE_ENCLOSURE:
case TYPE_COMM:
+ case TYPE_RAID:
case TYPE_RBC:
sdev->writeable = 1;
break;
@@ -655,7 +663,7 @@
sdev->writeable = 0;
break;
default:
- printk(KERN_INFO "scsi: unknown device type %d\n", sdev->type);
+ printk(KERN_INFO "scsi_if: unknown device type %d\n", sdev->type);
}
print_inquiry(inq_result);
@@ -934,6 +942,8 @@
} else
sparse_lun = 0;
+ max_dev_lun = max_scsi_luns;
+ sparse_lun = 1;
/*
* If not sparse lun and no device attached at LUN 0 do not scan
* any further.
@@ -976,16 +986,20 @@
if (scsi_level < SCSI_3 && !(bflags & BLIST_LARGELUN))
max_dev_lun = min(8U, max_dev_lun);
+ max_dev_lun = max_scsi_luns;
/*
* We have already scanned LUN 0, so start at LUN 1. Keep scanning
* until we reach the max, or no LUN is found and we are not
* sparse_lun.
*/
- for (lun = 1; lun < max_dev_lun; ++lun)
+ for (lun = 1; lun < max_dev_lun; ++lun) {
if ((scsi_probe_and_add_lun(starget, lun, NULL, NULL, rescan,
NULL) != SCSI_SCAN_LUN_PRESENT) &&
- !sparse_lun)
+ !sparse_lun) {
return;
+ }
+ //printk(KERN_INFO "scsi_if: scsi_sequential_lun_scan round: %d\n", lun);
+ }
}
/**
@@ -1088,20 +1102,36 @@
* Also allow SCSI-2 if BLIST_REPORTLUN2 is set and host adapter does
* support more than 8 LUNs.
*/
+
+ if (bflags & BLIST_REPORTLUN2) {
+ printk(KERN_INFO "scsi_if: scsi_report_lun_scan: BLIST_REPORTLUN2\n");
+ }
+ printk(KERN_INFO "scsi_if: scsi_report_lun_scan: shost->max_lun %d\n", shost->max_lun);
+
+ printk(KERN_INFO "scsi_if: scsi_report_lun_scan: starget->scsi_level: %d SCSI_2: %d\n", starget->scsi_level, SCSI_2);
+
if ((bflags & BLIST_NOREPORTLUN) ||
starget->scsi_level < SCSI_2 ||
(starget->scsi_level < SCSI_3 &&
- (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 8)) )
+ (!(bflags & BLIST_REPORTLUN2) || shost->max_lun <= 20000)) ) {
+ printk(KERN_INFO "scsi_if: 1 scsi_report_lun_scan\n");
return 1;
- if (bflags & BLIST_NOLUN)
+ }
+ if (bflags & BLIST_NOLUN) {
+ printk(KERN_INFO "scsi_if: 2 scsi_report_lun_scan\n");
return 0;
+ }
if (!(sdev = scsi_device_lookup_by_target(starget, 0))) {
sdev = scsi_alloc_sdev(starget, 0, NULL);
- if (!sdev)
+ if (!sdev) {
+ printk(KERN_INFO "scsi_if: 3 scsi_report_lun_scan\n");
return 0;
- if (scsi_device_get(sdev))
+ }
+ if (scsi_device_get(sdev)) {
+ printk(KERN_INFO "scsi_if: 4 scsi_report_lun_scan\n");
return 0;
+ }
}
sprintf(devname, "host %d channel %d id %d",
@@ -1122,6 +1152,7 @@
(sdev->host->unchecked_isa_dma ? __GFP_DMA : 0));
if (!lun_data) {
printk(ALLOC_FAILURE_MSG, __FUNCTION__);
+ printk(KERN_INFO "scsi_if: 5 scsi_report_lun_scan\n");
goto out;
}
@@ -1165,11 +1196,17 @@
SCSI_LOG_SCAN_BUS(3, printk (KERN_INFO "scsi scan: REPORT LUNS"
" %s (try %d) result 0x%x\n", result
? "failed" : "successful", retries, result));
- if (result == 0)
+ printk(KERN_INFO "scsi_if: 10 scsi_report_lun_scan\n");
+ if (result == 0) {
+ printk(KERN_INFO "scsi_if: 11 scsi_report_lun_scan\n");
break;
+ }
else if (scsi_sense_valid(&sshdr)) {
- if (sshdr.sense_key != UNIT_ATTENTION)
+ printk(KERN_INFO "scsi_if: 12 scsi_report_lun_scan\n");
+ if (sshdr.sense_key != UNIT_ATTENTION) {
+ printk(KERN_INFO "scsi_if: 13 scsi_report_lun_scan\n");
break;
+ }
}
}
@@ -1178,6 +1215,7 @@
* The device probably does not support a REPORT LUN command
*/
ret = 1;
+ printk(KERN_INFO "scsi_if: 6 scsi_report_lun_scan\n");
goto out_err;
}
@@ -1195,10 +1233,12 @@
" max_scsi_report_luns.\n", devname,
max_scsi_report_luns, num_luns);
num_luns = max_scsi_report_luns;
+ printk(KERN_INFO "scsi_if: 14 scsi_report_lun_scan\n");
}
SCSI_LOG_SCAN_BUS(3, sdev_printk (KERN_INFO, sdev,
"scsi scan: REPORT LUN scan\n"));
+ printk(KERN_INFO "scsi_if: 15 scsi_report_lun_scan\n");
/*
* Scan the luns in lun_data. The entry at offset 0 is really
@@ -1206,7 +1246,7 @@
*/
for (lunp = &lun_data[1]; lunp <= &lun_data[num_luns]; lunp++) {
lun = scsilun_to_int(lunp);
-
+
/*
* Check if the unused part of lunp is non-zero, and so
* does not fit in lun.
@@ -1247,8 +1287,10 @@
}
out_err:
+ printk(KERN_INFO "scsi_if: 8 scsi_report_lun_scan\n");
kfree(lun_data);
out:
+ printk(KERN_INFO "scsi_if: 9 scsi_report_lun_scan\n");
scsi_device_put(sdev);
if (sdev->sdev_state == SDEV_CREATED)
/*
@@ -1323,16 +1365,20 @@
int res;
struct scsi_target *starget;
+ printk(KERN_INFO "scsi_if: __scsi_scan_target\n");
+
if (shost->this_id == id)
/*
* Don't scan the host adapter
*/
return;
+ printk(KERN_INFO "scsi_if: 1__scsi_scan_target\n");
starget = scsi_alloc_target(parent, channel, id);
if (!starget)
return;
+ printk(KERN_INFO "scsi_if: 2__scsi_scan_target\n");
get_device(&starget->dev);
if (lun != SCAN_WILD_CARD) {
/*
@@ -1342,12 +1388,14 @@
goto out_reap;
}
+ printk(KERN_INFO "scsi_if: 3__scsi_scan_target\n");
/*
* Scan LUN 0, if there is some response, scan further. Ideally, we
* would not configure LUN 0 until all LUNs are scanned.
*/
res = scsi_probe_and_add_lun(starget, 0, &bflags, NULL, rescan, NULL);
if (res == SCSI_SCAN_LUN_PRESENT || res == SCSI_SCAN_TARGET_PRESENT) {
+ printk(KERN_INFO "scsi_if: 4__scsi_scan_target\n");
if (scsi_report_lun_scan(starget, bflags, rescan) != 0)
/*
* The REPORT LUN did not scan the target,
@@ -1355,6 +1403,7 @@
*/
scsi_sequential_lun_scan(starget, bflags,
res, starget->scsi_level, rescan);
+ printk(KERN_INFO "scsi_if: 5__scsi_scan_target\n");
}
out_reap:
@@ -1363,6 +1412,7 @@
scsi_target_reap(starget);
put_device(&starget->dev);
+ printk(KERN_INFO "scsi_if: 6__scsi_scan_target\n");
}
/**
diff -r -u linux-2.6.16/drivers/scsi/sd.c linux-2.6.16_ra4x00/drivers/scsi/sd.c
--- linux-2.6.16/drivers/scsi/sd.c 2006-03-20 06:53:29.000000000 +0100
+++ linux-2.6.16_ra4x00/drivers/scsi/sd.c 2006-03-22 21:41:39.000000000 +0100
@@ -688,8 +688,10 @@
"host = %d, driver = %02x\n ",
status_byte(res), msg_byte(res),
host_byte(res), driver_byte(res));
- if (driver_byte(res) & DRIVER_SENSE)
+ if (driver_byte(res) & DRIVER_SENSE) {
+ printk(KERN_INFO "scsi_if: sd_sync_cache\n");
scsi_print_sense_hdr("sd", &sshdr);
+ }
}
return res;
@@ -869,6 +871,7 @@
* Inform the user, but make sure that it's not treated
* as a hard error.
*/
+ printk(KERN_INFO "scsi_if: sd_rw_intr\n");
scsi_print_sense("sd", SCpnt);
SCpnt->result = 0;
memset(SCpnt->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE);
@@ -1026,6 +1029,7 @@
if(!spintime) {
printk(KERN_NOTICE "%s: Unit Not Ready, "
"sense:\n", diskname);
+ printk(KERN_INFO "scsi_if: sd_spinup_disk\n");
scsi_print_sense_hdr("", &sshdr);
}
break;
@@ -1093,8 +1097,10 @@
host_byte(the_result),
driver_byte(the_result));
- if (driver_byte(the_result) & DRIVER_SENSE)
+ if (driver_byte(the_result) & DRIVER_SENSE) {
+ printk(KERN_INFO "scsi_if: sd_read_capacity\n");
scsi_print_sense_hdr("sd", &sshdr);
+ }
else
printk("%s : sense not available. \n", diskname);
diff -r -u linux-2.6.16/drivers/scsi/sr_ioctl.c linux-2.6.16_ra4x00/drivers/scsi/sr_ioctl.c
--- linux-2.6.16/drivers/scsi/sr_ioctl.c 2006-03-20 06:53:29.000000000 +0100
+++ linux-2.6.16_ra4x00/drivers/scsi/sr_ioctl.c 2006-03-22 21:22:14.000000000 +0100
@@ -242,6 +242,7 @@
if (!cgc->quiet)
printk(KERN_INFO "%s: CDROM not ready. Make sure there is a disc in the drive.\n", cd->cdi.name);
#ifdef DEBUG
+ printk(KERN_INFO "scsi_if: sr_do_ioctl\n");
scsi_print_sense_hdr("sr", &sshdr);
#endif
err = -ENOMEDIUM;
^ permalink raw reply [flat|nested] 46+ messages in thread
* Compaq Fiber Channel Array RM4000 / SCSI Problems / Need HELP!
2006-03-22 20:13 ` Ingo Flaschberger
@ 2006-03-28 19:43 ` Ingo Flaschberger
2006-03-29 6:07 ` Martin K. Petersen
0 siblings, 1 reply; 46+ messages in thread
From: Ingo Flaschberger @ 2006-03-28 19:43 UTC (permalink / raw)
To: Linux-SCSI Mailing List; +Cc: Martin K. Petersen
[-- Attachment #1: Type: TEXT/PLAIN, Size: 2742 bytes --]
Hello,
I'm now diging since one week in the scsi code and get no idea what fails.
I have, when I dd more the 556K to an ext3 at sda1, an "Illegal Request";
"Invalid field in cdb"
---snip---
Mar 28 22:10:07 localhost kernel: sd 0:0:0:16384:
Mar 28 22:10:07 localhost kernel: command: Write (10): 2a 00 00 0d 00 a7 00 04 00 00
Mar 28 22:10:07 localhost kernel: sda: Current: sense key: Illegal Request
Mar 28 22:10:07 localhost kernel: Additional sense: Invalid field in cdb
Mar 28 22:10:07 localhost kernel: Info fld=0x0
Mar 28 22:10:07 localhost kernel: scsi host busy 2 failed 0
Mar 28 22:10:07 localhost kernel: sd 0:0:0:16384: Notifying upper driver
of completion (result 8000002)
Mar 28 22:10:07 localhost kernel: sd_rw_intr: sda: res=0x8000002
Mar 28 22:10:07 localhost kernel: sd_rw_intr:
sb[respc,sk,asc,ascq]=70,5,24,0
Mar 28 22:10:07 localhost kernel: 1024 sectors total, 0 bytes done.
Mar 28 22:10:07 localhost kernel: scsi_delete_timer: scmd: de93e1c0, rtn:
1
Mar 28 22:10:07 localhost kernel: use_sg is 124
Mar 28 22:10:07 localhost kernel: end_request: I/O error, dev sda, sector
852135
Mar 28 22:10:07 localhost kernel: printk: 118 messages suppressed.
Mar 28 22:10:07 localhost kernel: Buffer I/O error on device sda1, logical
block 106509
Mar 28 22:10:07 localhost kernel: lost page write due to I/O error on sda1
Mar 28 22:10:07 localhost kernel: Buffer I/O error on device sda1, logical
block 106510
Mar 28 22:10:07 localhost kernel: lost page write due to I/O error on sda1
Mar 28 22:10:07 localhost kernel: Buffer I/O error on device sda1, logical
block 106511
Mar 28 22:10:07 localhost kernel: lost page write due to I/O error on sda1
Mar 28 22:10:07 localhost kernel: Buffer I/O error on device sda1, logical
block 106512
---snap---
I have no idea whats wrong. Perhaps someone could have a look at that?
Or give me tips how to decode a CDB or point me to the right scsi standard
link?
I have attached logs from a working and a not working transmission.
_Please_ have a look at it, because I have no more ideas where to find my
problem.
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 /______//_/
-------------------------------------------------------------------------------
[-- Attachment #2: Type: TEXT/PLAIN, Size: 28835 bytes --]
Mar 28 22:41:46 localhost kernel: sd_init_command: disk=sda, block=4207, count=8
Mar 28 22:41:46 localhost kernel: sda : block=4207
Mar 28 22:41:46 localhost kernel: sda : reading 8/8 512 byte blocks.
Mar 28 22:41:46 localhost kernel: scsi_add_timer: scmd: de93e320, time: 30000, (e08a2760)
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: send 0xde93e320 <6>**scsi_if: scsi_print_command
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Read (6): 08 00 10 6f 08 00
Mar 28 22:41:46 localhost kernel: buffer = 0xde8c3640, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:41:46 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:41:46 localhost kernel: scsi_delete_timer: scmd: de93e320, rtn: 1
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: done 0xde93e320 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Read (6): 08 00 10 6f 08 00
Mar 28 22:41:46 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:41:46 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:41:46 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:41:46 localhost kernel: use_sg is 1
Mar 28 22:41:46 localhost kernel: sd_init_command: disk=sda, block=786543, count=8
Mar 28 22:41:46 localhost kernel: sda : block=786543
Mar 28 22:41:46 localhost kernel: sda : reading 8/8 512 byte blocks.
Mar 28 22:41:46 localhost kernel: scsi_add_timer: scmd: de93e320, time: 30000, (e08a2760)
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: send 0xde93e320 <6>**scsi_if: scsi_print_command
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Read (6): 08 0c 00 6f 08 00
Mar 28 22:41:46 localhost kernel: buffer = 0xde8c3640, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:41:46 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:41:46 localhost kernel: scsi_delete_timer: scmd: de93e320, rtn: 1
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: done 0xde93e320 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Read (6): 08 0c 00 6f 08 00
Mar 28 22:41:46 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:41:46 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:41:46 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:41:46 localhost kernel: use_sg is 1
Mar 28 22:41:46 localhost kernel: sd_init_command: disk=sda, block=786527, count=8
Mar 28 22:41:46 localhost kernel: sda : block=786527
Mar 28 22:41:46 localhost kernel: sda : reading 8/8 512 byte blocks.
Mar 28 22:41:46 localhost kernel: scsi_add_timer: scmd: de93e320, time: 30000, (e08a2760)
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: send 0xde93e320 <6>**scsi_if: scsi_print_command
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Read (6): 08 0c 00 5f 08 00
Mar 28 22:41:46 localhost kernel: buffer = 0xde8c3640, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:41:46 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:41:46 localhost kernel: scsi_delete_timer: scmd: de93e320, rtn: 1
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: done 0xde93e320 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Read (6): 08 0c 00 5f 08 00
Mar 28 22:41:46 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:41:46 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:41:46 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:41:46 localhost kernel: use_sg is 1
Mar 28 22:41:46 localhost kernel: sd_init_command: disk=sda, block=852127, count=8
Mar 28 22:41:46 localhost kernel: sda : block=852127
Mar 28 22:41:46 localhost kernel: sda : reading 8/8 512 byte blocks.
Mar 28 22:41:46 localhost kernel: scsi_add_timer: scmd: de93e320, time: 30000, (e08a2760)
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: send 0xde93e320 <6>**scsi_if: scsi_print_command
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Read (6): 08 0d 00 9f 08 00
Mar 28 22:41:46 localhost kernel: buffer = 0xde8c3640, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:41:46 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:41:46 localhost kernel: scsi_delete_timer: scmd: de93e320, rtn: 1
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: done 0xde93e320 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Read (6): 08 0d 00 9f 08 00
Mar 28 22:41:46 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:41:46 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:41:46 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:41:46 localhost kernel: use_sg is 1
Mar 28 22:41:46 localhost kernel: sd_init_command: disk=sda, block=1032255, count=96
Mar 28 22:41:46 localhost kernel: sda : block=1032255
Mar 28 22:41:46 localhost kernel: sda : writing 96/96 512 byte blocks.
Mar 28 22:41:46 localhost kernel: scsi_add_timer: scmd: de93e320, time: 30000, (e08a2760)
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: send 0xde93e320 <6>**scsi_if: scsi_print_command
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (6): 0a 0f c0 3f 60 00
Mar 28 22:41:46 localhost kernel: buffer = 0xde8bfca0, bufflen = 49152, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:41:46 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:41:46 localhost kernel: sd_init_command: disk=sda, block=1032359, count=1024
Mar 28 22:41:46 localhost kernel: sda : block=1032359
Mar 28 22:41:46 localhost kernel: sda : writing 1024/1024 512 byte blocks.
Mar 28 22:41:46 localhost kernel: scsi_add_timer: scmd: de93e1c0, time: 30000, (e08a2760)
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: send 0xde93e1c0 <6>**scsi_if: scsi_print_command
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (10): 2a 00 00 0f c0 a7 00 04 00 00
Mar 28 22:41:46 localhost kernel: buffer = 0xdbce5800, bufflen = 524288, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:41:46 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:41:46 localhost kernel: scsi_delete_timer: scmd: de93e1c0, rtn: 1
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: check_condition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: done 0xde93e1c0 SUCCESS 2 <6>**scsi_if: scsi_print_command1
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (10): 2a 00 00 0f c0 a7 00 04 00 00
Mar 28 22:41:46 localhost kernel: scsi_if: __scsi_print_sense
Mar 28 22:41:46 localhost kernel: scsi_if: scsi_print_sense_hdr
Mar 28 22:41:46 localhost kernel: sda: Current: sense key: Illegal Request
Mar 28 22:41:46 localhost kernel: <6>scsi_if: scsi_show_extd_sense
Mar 28 22:41:46 localhost kernel: Additional sense: Invalid field in cdb
Mar 28 22:41:46 localhost kernel: Info fld=0x0
Mar 28 22:41:46 localhost kernel: scsi host busy 2 failed 0
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 8000002)
Mar 28 22:41:46 localhost kernel: sd_rw_intr: sda: res=0x8000002
Mar 28 22:41:46 localhost kernel: sd_rw_intr: sb[respc,sk,asc,ascq]=70,5,24,0
Mar 28 22:41:46 localhost kernel: 1024 sectors total, 0 bytes done.
Mar 28 22:41:46 localhost kernel: use_sg is 126
Mar 28 22:41:46 localhost kernel: end_request: I/O error, dev sda, sector 1032359
Mar 28 22:41:46 localhost kernel: printk: 118 messages suppressed.
Mar 28 22:41:46 localhost kernel: Buffer I/O error on device sda1, logical block 129037
Mar 28 22:41:46 localhost kernel: lost page write due to I/O error on sda1
Mar 28 22:41:46 localhost kernel: Buffer I/O error on device sda1, logical block 129038
Mar 28 22:41:46 localhost kernel: lost page write due to I/O error on sda1
Mar 28 22:41:46 localhost kernel: Buffer I/O error on device sda1, logical block 129039
Mar 28 22:41:46 localhost kernel: lost page write due to I/O error on sda1
Mar 28 22:41:46 localhost kernel: Buffer I/O error on device sda1, logical block 129040
Mar 28 22:41:46 localhost kernel: lost page write due to I/O error on sda1
Mar 28 22:41:46 localhost kernel: Buffer I/O error on device sda1, logical block 129041
Mar 28 22:41:46 localhost kernel: lost page write due to I/O error on sda1
Mar 28 22:41:46 localhost kernel: Buffer I/O error on device sda1, logical block 129042
Mar 28 22:41:46 localhost kernel: lost page write due to I/O error on sda1
Mar 28 22:41:46 localhost kernel: Buffer I/O error on device sda1, logical block 129043
Mar 28 22:41:46 localhost kernel: lost page write due to I/O error on sda1
Mar 28 22:41:46 localhost kernel: Buffer I/O error on device sda1, logical block 129044
Mar 28 22:41:46 localhost kernel: lost page write due to I/O error on sda1
Mar 28 22:41:46 localhost kernel: Buffer I/O error on device sda1, logical block 129045
Mar 28 22:41:46 localhost kernel: lost page write due to I/O error on sda1
Mar 28 22:41:46 localhost kernel: Buffer I/O error on device sda1, logical block 129046
Mar 28 22:41:46 localhost kernel: lost page write due to I/O error on sda1
Mar 28 22:41:46 localhost kernel: scsi_delete_timer: scmd: de93e320, rtn: 1
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: done 0xde93e320 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (6): 0a 0f c0 3f 60 00
Mar 28 22:41:46 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:41:46 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:41:46 localhost kernel: 96 sectors total, 49152 bytes done.
Mar 28 22:41:46 localhost kernel: use_sg is 12
Mar 28 22:41:46 localhost kernel: sd_init_command: disk=sda, block=4247, count=8
Mar 28 22:41:46 localhost kernel: sda : block=4247
Mar 28 22:41:46 localhost kernel: sda : writing 8/8 512 byte blocks.
Mar 28 22:41:46 localhost kernel: scsi_add_timer: scmd: de93e320, time: 30000, (e08a2760)
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: send 0xde93e320 <6>**scsi_if: scsi_print_command
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (6): 0a 00 10 97 08 00
Mar 28 22:41:46 localhost kernel: buffer = 0xde8c3640, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:41:46 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:41:46 localhost kernel: scsi_delete_timer: scmd: de93e320, rtn: 1
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: done 0xde93e320 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (6): 0a 00 10 97 08 00
Mar 28 22:41:46 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:41:46 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:41:46 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:41:46 localhost kernel: use_sg is 1
Mar 28 22:41:46 localhost kernel: sd_init_command: disk=sda, block=4255, count=56
Mar 28 22:41:46 localhost kernel: sda : block=4255
Mar 28 22:41:46 localhost kernel: sda : writing 56/56 512 byte blocks.
Mar 28 22:41:46 localhost kernel: scsi_add_timer: scmd: de93e320, time: 30000, (e08a2760)
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: send 0xde93e320 <6>**scsi_if: scsi_print_command
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (6): 0a 00 10 9f 38 00
Mar 28 22:41:46 localhost kernel: buffer = 0xde8c3640, bufflen = 28672, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:41:46 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:41:46 localhost kernel: scsi_delete_timer: scmd: de93e320, rtn: 1
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: done 0xde93e320 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (6): 0a 00 10 9f 38 00
Mar 28 22:41:46 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:41:46 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:41:46 localhost kernel: 56 sectors total, 28672 bytes done.
Mar 28 22:41:46 localhost kernel: use_sg is 7
Mar 28 22:41:46 localhost kernel: sd_init_command: disk=sda, block=4311, count=8
Mar 28 22:41:46 localhost kernel: sda : block=4311
Mar 28 22:41:46 localhost kernel: sda : writing 8/8 512 byte blocks.
Mar 28 22:41:46 localhost kernel: scsi_add_timer: scmd: de93e320, time: 30000, (e08a2760)
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: send 0xde93e320 <6>**scsi_if: scsi_print_command
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (6): 0a 00 10 d7 08 00
Mar 28 22:41:46 localhost kernel: buffer = 0xde8c3640, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:41:46 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:41:46 localhost kernel: scsi_delete_timer: scmd: de93e320, rtn: 1
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: done 0xde93e320 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (6): 0a 00 10 d7 08 00
Mar 28 22:41:46 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:41:46 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:41:46 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:41:46 localhost kernel: use_sg is 1
Mar 28 22:41:46 localhost kernel: sd_init_command: disk=sda, block=63, count=16
Mar 28 22:41:46 localhost kernel: sda : block=63
Mar 28 22:41:46 localhost kernel: sda : writing 16/16 512 byte blocks.
Mar 28 22:41:46 localhost kernel: scsi_add_timer: scmd: de93e320, time: 30000, (e08a2760)
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: send 0xde93e320 <6>**scsi_if: scsi_print_command
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (6): 0a 00 00 3f 10 00
Mar 28 22:41:46 localhost kernel: buffer = 0xde8c3640, bufflen = 8192, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:41:46 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:41:46 localhost kernel: sd_init_command: disk=sda, block=786527, count=8
Mar 28 22:41:46 localhost kernel: sda : block=786527
Mar 28 22:41:46 localhost kernel: sda : writing 8/8 512 byte blocks.
Mar 28 22:41:46 localhost kernel: scsi_add_timer: scmd: de93e1c0, time: 30000, (e08a2760)
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: send 0xde93e1c0 <6>**scsi_if: scsi_print_command
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (6): 0a 0c 00 5f 08 00
Mar 28 22:41:46 localhost kernel: buffer = 0xde8c37c0, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:41:46 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:41:46 localhost kernel: sd_init_command: disk=sda, block=786543, count=8
Mar 28 22:41:46 localhost kernel: sda : block=786543
Mar 28 22:41:46 localhost kernel: sda : writing 8/8 512 byte blocks.
Mar 28 22:41:46 localhost kernel: scsi_add_timer: scmd: de93e480, time: 30000, (e08a2760)
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: send 0xde93e480 <6>**scsi_if: scsi_print_command
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (6): 0a 0c 00 6f 08 00
Mar 28 22:41:46 localhost kernel: buffer = 0xde8c36c0, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:41:46 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:41:46 localhost kernel: sd_init_command: disk=sda, block=1032351, count=8
Mar 28 22:41:46 localhost kernel: sda : block=1032351
Mar 28 22:41:46 localhost kernel: sda : writing 8/8 512 byte blocks.
Mar 28 22:41:46 localhost kernel: scsi_add_timer: scmd: de93e5e0, time: 30000, (e08a2760)
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: send 0xde93e5e0 <6>**scsi_if: scsi_print_command
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (6): 0a 0f c0 9f 08 00
Mar 28 22:41:46 localhost kernel: buffer = 0xde8c35c0, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:41:46 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:41:46 localhost kernel: scsi_delete_timer: scmd: de93e320, rtn: 1
Mar 28 22:41:46 localhost kernel: scsi_delete_timer: scmd: de93e1c0, rtn: 1
Mar 28 22:41:46 localhost kernel: scsi_delete_timer: scmd: de93e480, rtn: 1
Mar 28 22:41:46 localhost kernel: scsi_delete_timer: scmd: de93e5e0, rtn: 1
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: done 0xde93e320 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (6): 0a 00 00 3f 10 00
Mar 28 22:41:46 localhost kernel: scsi host busy 4 failed 0
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:41:46 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:41:46 localhost kernel: 16 sectors total, 8192 bytes done.
Mar 28 22:41:46 localhost kernel: use_sg is 2
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: done 0xde93e1c0 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (6): 0a 0c 00 5f 08 00
Mar 28 22:41:46 localhost kernel: scsi host busy 3 failed 0
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:41:46 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:41:46 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:41:46 localhost kernel: use_sg is 1
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: done 0xde93e480 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (6): 0a 0c 00 6f 08 00
Mar 28 22:41:46 localhost kernel: scsi host busy 2 failed 0
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:41:46 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:41:46 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:41:46 localhost kernel: use_sg is 1
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:41:46 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: done 0xde93e5e0 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384:
Mar 28 22:41:46 localhost kernel: command: Write (6): 0a 0f c0 9f 08 00
Mar 28 22:41:46 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:41:46 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:41:46 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:41:46 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:41:46 localhost kernel: use_sg is 1
[-- Attachment #3: Type: TEXT/PLAIN, Size: 26713 bytes --]
Mar 28 22:43:17 localhost kernel: sd_init_command: disk=sda, block=4207, count=8
Mar 28 22:43:17 localhost kernel: sda : block=4207
Mar 28 22:43:17 localhost kernel: sda : reading 8/8 512 byte blocks.
Mar 28 22:43:17 localhost kernel: scsi_add_timer: scmd: de93eb60, time: 30000, (e08a2760)
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: send 0xde93eb60 <6>**scsi_if: scsi_print_command
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Read (6): 08 00 10 6f 08 00
Mar 28 22:43:17 localhost kernel: buffer = 0xde8c3140, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:43:17 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:43:17 localhost kernel: scsi_delete_timer: scmd: de93eb60, rtn: 1
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: done 0xde93eb60 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Read (6): 08 00 10 6f 08 00
Mar 28 22:43:17 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:43:17 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:43:17 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:43:17 localhost kernel: use_sg is 1
Mar 28 22:43:17 localhost kernel: sd_init_command: disk=sda, block=786543, count=8
Mar 28 22:43:17 localhost kernel: sda : block=786543
Mar 28 22:43:17 localhost kernel: sda : reading 8/8 512 byte blocks.
Mar 28 22:43:17 localhost kernel: scsi_add_timer: scmd: de93eb60, time: 30000, (e08a2760)
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: send 0xde93eb60 <6>**scsi_if: scsi_print_command
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Read (6): 08 0c 00 6f 08 00
Mar 28 22:43:17 localhost kernel: buffer = 0xde8c3140, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:43:17 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:43:17 localhost kernel: scsi_delete_timer: scmd: de93eb60, rtn: 1
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: done 0xde93eb60 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Read (6): 08 0c 00 6f 08 00
Mar 28 22:43:17 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:43:17 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:43:17 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:43:17 localhost kernel: use_sg is 1
Mar 28 22:43:17 localhost kernel: sd_init_command: disk=sda, block=786527, count=8
Mar 28 22:43:17 localhost kernel: sda : block=786527
Mar 28 22:43:17 localhost kernel: sda : reading 8/8 512 byte blocks.
Mar 28 22:43:17 localhost kernel: scsi_add_timer: scmd: de93eb60, time: 30000, (e08a2760)
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: send 0xde93eb60 <6>**scsi_if: scsi_print_command
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Read (6): 08 0c 00 5f 08 00
Mar 28 22:43:17 localhost kernel: buffer = 0xde8c3140, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:43:17 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:43:17 localhost kernel: scsi_delete_timer: scmd: de93eb60, rtn: 1
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: done 0xde93eb60 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Read (6): 08 0c 00 5f 08 00
Mar 28 22:43:17 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:43:17 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:43:17 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:43:17 localhost kernel: use_sg is 1
Mar 28 22:43:17 localhost kernel: sd_init_command: disk=sda, block=1032351, count=8
Mar 28 22:43:17 localhost kernel: sda : block=1032351
Mar 28 22:43:17 localhost kernel: sda : reading 8/8 512 byte blocks.
Mar 28 22:43:17 localhost kernel: scsi_add_timer: scmd: de93eb60, time: 30000, (e08a2760)
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: send 0xde93eb60 <6>**scsi_if: scsi_print_command
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Read (6): 08 0f c0 9f 08 00
Mar 28 22:43:17 localhost kernel: buffer = 0xde8c3140, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:43:17 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:43:17 localhost kernel: scsi_delete_timer: scmd: de93eb60, rtn: 1
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: done 0xde93eb60 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Read (6): 08 0f c0 9f 08 00
Mar 28 22:43:17 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:43:17 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:43:17 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:43:17 localhost kernel: use_sg is 1
Mar 28 22:43:17 localhost kernel: sd_init_command: disk=sda, block=1015871, count=96
Mar 28 22:43:17 localhost kernel: sda : block=1015871
Mar 28 22:43:17 localhost kernel: sda : writing 96/96 512 byte blocks.
Mar 28 22:43:17 localhost kernel: scsi_add_timer: scmd: de93eb60, time: 30000, (e08a2760)
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: send 0xde93eb60 <6>**scsi_if: scsi_print_command
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (6): 0a 0f 80 3f 60 00
Mar 28 22:43:17 localhost kernel: buffer = 0xde8bf0a0, bufflen = 49152, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:43:17 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:43:17 localhost kernel: sd_init_command: disk=sda, block=1015975, count=1016
Mar 28 22:43:17 localhost kernel: sda : block=1015975
Mar 28 22:43:17 localhost kernel: sda : writing 1016/1016 512 byte blocks.
Mar 28 22:43:17 localhost kernel: scsi_add_timer: scmd: de93e5e0, time: 30000, (e08a2760)
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: send 0xde93e5e0 <6>**scsi_if: scsi_print_command
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (10): 2a 00 00 0f 80 a7 00 03 f8 00
Mar 28 22:43:17 localhost kernel: buffer = 0xdbc7b800, bufflen = 520192, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:43:17 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:43:17 localhost kernel: scsi_delete_timer: scmd: de93eb60, rtn: 1
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: done 0xde93eb60 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (6): 0a 0f 80 3f 60 00
Mar 28 22:43:17 localhost kernel: scsi host busy 2 failed 0
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:43:17 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:43:17 localhost kernel: 96 sectors total, 49152 bytes done.
Mar 28 22:43:17 localhost kernel: use_sg is 12
Mar 28 22:43:17 localhost kernel: sd_init_command: disk=sda, block=4247, count=8
Mar 28 22:43:17 localhost kernel: sda : block=4247
Mar 28 22:43:17 localhost kernel: sda : writing 8/8 512 byte blocks.
Mar 28 22:43:17 localhost kernel: scsi_add_timer: scmd: de93eb60, time: 30000, (e08a2760)
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: send 0xde93eb60 <6>**scsi_if: scsi_print_command
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (6): 0a 00 10 97 08 00
Mar 28 22:43:17 localhost kernel: buffer = 0xde8c3140, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:43:17 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:43:17 localhost kernel: scsi_delete_timer: scmd: de93eb60, rtn: 1
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: done 0xde93eb60 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (6): 0a 00 10 97 08 00
Mar 28 22:43:17 localhost kernel: scsi host busy 2 failed 0
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:43:17 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:43:17 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:43:17 localhost kernel: use_sg is 1
Mar 28 22:43:17 localhost kernel: scsi_delete_timer: scmd: de93e5e0, rtn: 1
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: done 0xde93e5e0 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (10): 2a 00 00 0f 80 a7 00 03 f8 00
Mar 28 22:43:17 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:43:17 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:43:17 localhost kernel: 1016 sectors total, 520192 bytes done.
Mar 28 22:43:17 localhost kernel: use_sg is 126
Mar 28 22:43:17 localhost kernel: sd_init_command: disk=sda, block=4255, count=56
Mar 28 22:43:17 localhost kernel: sda : block=4255
Mar 28 22:43:17 localhost kernel: sda : writing 56/56 512 byte blocks.
Mar 28 22:43:17 localhost kernel: scsi_add_timer: scmd: de93e5e0, time: 30000, (e08a2760)
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: send 0xde93e5e0 <6>**scsi_if: scsi_print_command
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (6): 0a 00 10 9f 38 00
Mar 28 22:43:17 localhost kernel: buffer = 0xde8c3140, bufflen = 28672, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:43:17 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:43:17 localhost kernel: scsi_delete_timer: scmd: de93e5e0, rtn: 1
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: done 0xde93e5e0 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (6): 0a 00 10 9f 38 00
Mar 28 22:43:17 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:43:17 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:43:17 localhost kernel: 56 sectors total, 28672 bytes done.
Mar 28 22:43:17 localhost kernel: use_sg is 7
Mar 28 22:43:17 localhost kernel: sd_init_command: disk=sda, block=4311, count=8
Mar 28 22:43:17 localhost kernel: sda : block=4311
Mar 28 22:43:17 localhost kernel: sda : writing 8/8 512 byte blocks.
Mar 28 22:43:17 localhost kernel: scsi_add_timer: scmd: de93e5e0, time: 30000, (e08a2760)
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: send 0xde93e5e0 <6>**scsi_if: scsi_print_command
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (6): 0a 00 10 d7 08 00
Mar 28 22:43:17 localhost kernel: buffer = 0xde8c3140, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:43:17 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:43:17 localhost kernel: scsi_delete_timer: scmd: de93e5e0, rtn: 1
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: done 0xde93e5e0 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (6): 0a 00 10 d7 08 00
Mar 28 22:43:17 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:43:17 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:43:17 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:43:17 localhost kernel: use_sg is 1
Mar 28 22:43:17 localhost kernel: sd_init_command: disk=sda, block=63, count=16
Mar 28 22:43:17 localhost kernel: sda : block=63
Mar 28 22:43:17 localhost kernel: sda : writing 16/16 512 byte blocks.
Mar 28 22:43:17 localhost kernel: scsi_add_timer: scmd: de93e5e0, time: 30000, (e08a2760)
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: send 0xde93e5e0 <6>**scsi_if: scsi_print_command
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (6): 0a 00 00 3f 10 00
Mar 28 22:43:17 localhost kernel: buffer = 0xde8c3140, bufflen = 8192, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:43:17 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:43:17 localhost kernel: sd_init_command: disk=sda, block=786527, count=8
Mar 28 22:43:17 localhost kernel: sda : block=786527
Mar 28 22:43:17 localhost kernel: sda : writing 8/8 512 byte blocks.
Mar 28 22:43:17 localhost kernel: scsi_add_timer: scmd: de93eb60, time: 30000, (e08a2760)
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: send 0xde93eb60 <6>**scsi_if: scsi_print_command
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (6): 0a 0c 00 5f 08 00
Mar 28 22:43:17 localhost kernel: buffer = 0xde8c3e40, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:43:17 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:43:17 localhost kernel: sd_init_command: disk=sda, block=786543, count=8
Mar 28 22:43:17 localhost kernel: sda : block=786543
Mar 28 22:43:17 localhost kernel: sda : writing 8/8 512 byte blocks.
Mar 28 22:43:17 localhost kernel: scsi_add_timer: scmd: de93e480, time: 30000, (e08a2760)
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: send 0xde93e480 <6>**scsi_if: scsi_print_command
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (6): 0a 0c 00 6f 08 00
Mar 28 22:43:17 localhost kernel: buffer = 0xde8c3d40, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:43:17 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:43:17 localhost kernel: sd_init_command: disk=sda, block=1015967, count=8
Mar 28 22:43:17 localhost kernel: sda : block=1015967
Mar 28 22:43:17 localhost kernel: sda : writing 8/8 512 byte blocks.
Mar 28 22:43:17 localhost kernel: scsi_add_timer: scmd: de93e1c0, time: 30000, (e08a2760)
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: send 0xde93e1c0 <6>**scsi_if: scsi_print_command
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (6): 0a 0f 80 9f 08 00
Mar 28 22:43:17 localhost kernel: buffer = 0xde8c3cc0, bufflen = 4096, done = 0xe0819b90, queuecommand 0xe0878460
Mar 28 22:43:17 localhost kernel: leaving scsi_dispatch_cmnd()
Mar 28 22:43:17 localhost kernel: scsi_delete_timer: scmd: de93e5e0, rtn: 1
Mar 28 22:43:17 localhost kernel: scsi_delete_timer: scmd: de93eb60, rtn: 1
Mar 28 22:43:17 localhost kernel: scsi_delete_timer: scmd: de93e480, rtn: 1
Mar 28 22:43:17 localhost kernel: scsi_delete_timer: scmd: de93e1c0, rtn: 1
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: done 0xde93e5e0 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (6): 0a 00 00 3f 10 00
Mar 28 22:43:17 localhost kernel: scsi host busy 4 failed 0
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:43:17 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:43:17 localhost kernel: 16 sectors total, 8192 bytes done.
Mar 28 22:43:17 localhost kernel: use_sg is 2
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: done 0xde93eb60 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (6): 0a 0c 00 5f 08 00
Mar 28 22:43:17 localhost kernel: scsi host busy 3 failed 0
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:43:17 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:43:17 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:43:17 localhost kernel: use_sg is 1
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: done 0xde93e480 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (6): 0a 0c 00 6f 08 00
Mar 28 22:43:17 localhost kernel: scsi host busy 2 failed 0
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:43:17 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:43:17 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:43:17 localhost kernel: use_sg is 1
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: INIT_LIST_HEAD-patch
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: did_ok
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: good
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: command_terminated
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_decide_disposition: task_aborted
Mar 28 22:43:17 localhost kernel: *scsi_if: scsi_softirq_done: after scsi_decide_disposition
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: done 0xde93e1c0 SUCCESS 0 <6>**scsi_if: scsi_print_command1
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384:
Mar 28 22:43:17 localhost kernel: command: Write (6): 0a 0f 80 9f 08 00
Mar 28 22:43:17 localhost kernel: scsi host busy 1 failed 0
Mar 28 22:43:17 localhost kernel: sd 0:0:0:16384: Notifying upper driver of completion (result 0)
Mar 28 22:43:17 localhost kernel: sd_rw_intr: sda: res=0x0
Mar 28 22:43:17 localhost kernel: 8 sectors total, 4096 bytes done.
Mar 28 22:43:17 localhost kernel: use_sg is 1
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / SCSI Problems / Need HELP!
2006-03-28 19:43 ` Compaq Fiber Channel Array RM4000 / SCSI Problems / Need HELP! Ingo Flaschberger
@ 2006-03-29 6:07 ` Martin K. Petersen
2006-03-29 11:17 ` Ingo Flaschberger
0 siblings, 1 reply; 46+ messages in thread
From: Martin K. Petersen @ 2006-03-29 6:07 UTC (permalink / raw)
To: Ingo Flaschberger; +Cc: Linux-SCSI Mailing List
>>>>> "Ingo" == Ingo Flaschberger <if@xip.at> writes:
Ingo> I'm now diging since one week in the scsi code and get no idea
Ingo> what fails. I have, when I dd more the 556K to an ext3 at sda1,
Ingo> an "Illegal Request"; "Invalid field in cdb"
I'm sorry I'm completely and utterly swamped right now - dealing with
a slipped product release schedule.
If I read your code correctly last week, all you've done so far is
mess with LUN scanning. And my guess is things blow up when you've
queued enough I/O and things start actually hitting the metal.
The real problem with the RA4100 is that you can't just send commands
(cdbs) to it directly. You need to mangle them and this is what we
currently have no good infrastructure to support.
The RA4100 supports two addressing modes VSA and PDA and depending on
which mode is used you need to mangle the cdb in different ways.
Judging from the comments in cpqfc it appears the mode depends on the
firmware of the RA4100 in question.
Below is what I sent to hch about the RA4100 a while ago...
Btw. SCC is the SCSI Controller Commands specification -
i.e. TYPE_RAID. The spec is at
http://www.t10.org/ftp/t10/drafts/scc2/scc2r04.pdf
---8<---
The LUN mangling takes place in cpqfcTSworker.c. Here's what happens:
- IssueReportLunsCommand() gets fired off to send a REPORT_LUNS to
the array SCSI ID.
- ScsiReportLunsDone() is called upon completion. If REPORT_LUNS
failed we need to use peripheral device addressing (PDA) and set
VolumeSetAddressing (VSA) to 0.
If REPORT_LUNS succeeded VSA is set to 1 and so is LunMasking
(which is a kludge becase we didn't do sparse LUNs).
- fcFindLoggedInPort() is a swiss army knife function that gets
called all over the place in cpqfc. It deals with mappings between
WWNs/port ids and SCSI channel/target/lun tuples. In this case we
need to map a Linux LUN to a fibre channel ID (AL_PA or WWN)
Look for /* This is not passthrough */ in that function:
The Scsi_Cmnd in transit has a few things changed. Specifically,
the scratch pad is abused:
- Cmnd->SCp.phase is set to contain either PDA or VSA
- Cmnd->SCp.Message is set to contain the device type snooped from
INQUIRY (check out cpqfcTSCheckandSnoopFCP())
- Cmnd->SCp.have_data_in is set to the real LUN
So far so good. Now we've got some extra fluff in the Cmnd. On
to...
- build_FCP_payload() which picks these pieces out of the supplied
Cmnd and builds an FCP transfer with the SCC addressing gunk
prepended to the cdb.
Now, all the sparse LUN stiff is obsolete. And the only place the
stored inquiry data is being used is to special case timeouts when
dealing with tape devices.
So the only state we need to keep is the real LUN # and the addressing
mode (VSA or PDA are probably the only relevant ones). Given that we
can use the LUN value directly, all we need to do is to get the
addressing blah prepended.
---8<---
--
Martin K. Petersen http://mkp.net/
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / SCSI Problems / Need HELP!
2006-03-29 6:07 ` Martin K. Petersen
@ 2006-03-29 11:17 ` Ingo Flaschberger
2006-03-29 13:10 ` Compaq Fiber Channel Array RM4000 / Kernel implementation Ingo Flaschberger
0 siblings, 1 reply; 46+ messages in thread
From: Ingo Flaschberger @ 2006-03-29 11:17 UTC (permalink / raw)
To: Martin K. Petersen; +Cc: Linux-SCSI Mailing List
Hi Martin,
Uhm, I have now tracked down the problem to over 512K 10byte write
transfers via sd.c.
When I keep at 512K, it works without problems.
But, thanks for the hints.
see inline.
I have also to check if it works with more than one lun.
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 /______//_/
-------------------------------------------------------------------------------
On Wed, 29 Mar 2006, Martin K. Petersen wrote:
>>>>>> "Ingo" == Ingo Flaschberger <if@xip.at> writes:
>
> Ingo> I'm now diging since one week in the scsi code and get no idea
> Ingo> what fails. I have, when I dd more the 556K to an ext3 at sda1,
> Ingo> an "Illegal Request"; "Invalid field in cdb"
>
> I'm sorry I'm completely and utterly swamped right now - dealing with
> a slipped product release schedule.
>
> If I read your code correctly last week, all you've done so far is
> mess with LUN scanning. And my guess is things blow up when you've
> queued enough I/O and things start actually hitting the metal.
yep.
> The real problem with the RA4100 is that you can't just send commands
> (cdbs) to it directly. You need to mangle them and this is what we
> currently have no good infrastructure to support.
but it works now like this.
> The RA4100 supports two addressing modes VSA and PDA and depending on
> which mode is used you need to mangle the cdb in different ways.
> Judging from the comments in cpqfc it appears the mode depends on the
> firmware of the RA4100 in question.
>
> Below is what I sent to hch about the RA4100 a while ago...
>
> Btw. SCC is the SCSI Controller Commands specification -
> i.e. TYPE_RAID. The spec is at
>
> http://www.t10.org/ftp/t10/drafts/scc2/scc2r04.pdf
>
> ---8<---
>
> The LUN mangling takes place in cpqfcTSworker.c. Here's what happens:
>
> - IssueReportLunsCommand() gets fired off to send a REPORT_LUNS to
> the array SCSI ID.
>
> - ScsiReportLunsDone() is called upon completion. If REPORT_LUNS
> failed we need to use peripheral device addressing (PDA) and set
> VolumeSetAddressing (VSA) to 0.
>
> If REPORT_LUNS succeeded VSA is set to 1 and so is LunMasking
> (which is a kludge becase we didn't do sparse LUNs).
>
> - fcFindLoggedInPort() is a swiss army knife function that gets
> called all over the place in cpqfc. It deals with mappings between
> WWNs/port ids and SCSI channel/target/lun tuples. In this case we
> need to map a Linux LUN to a fibre channel ID (AL_PA or WWN)
>
> Look for /* This is not passthrough */ in that function:
>
> The Scsi_Cmnd in transit has a few things changed. Specifically,
> the scratch pad is abused:
>
> - Cmnd->SCp.phase is set to contain either PDA or VSA
>
> - Cmnd->SCp.Message is set to contain the device type snooped from
> INQUIRY (check out cpqfcTSCheckandSnoopFCP())
>
> - Cmnd->SCp.have_data_in is set to the real LUN
>
> So far so good. Now we've got some extra fluff in the Cmnd. On
> to...
>
> - build_FCP_payload() which picks these pieces out of the supplied
> Cmnd and builds an FCP transfer with the SCC addressing gunk
> prepended to the cdb.
>
> Now, all the sparse LUN stiff is obsolete. And the only place the
> stored inquiry data is being used is to special case timeouts when
> dealing with tape devices.
>
> So the only state we need to keep is the real LUN # and the addressing
> mode (VSA or PDA are probably the only relevant ones). Given that we
> can use the LUN value directly, all we need to do is to get the
> addressing blah prepended.
>
> ---8<---
>
> --
> Martin K. Petersen http://mkp.net/
>
^ permalink raw reply [flat|nested] 46+ messages in thread
* Compaq Fiber Channel Array RM4000 / Kernel implementation
2006-03-29 11:17 ` Ingo Flaschberger
@ 2006-03-29 13:10 ` Ingo Flaschberger
2006-03-29 13:19 ` typo in scsi_devinfo.h Ingo Flaschberger
2006-03-29 15:07 ` Compaq Fiber Channel Array RM4000 / Kernel implementation Christoph Hellwig
0 siblings, 2 replies; 46+ messages in thread
From: Ingo Flaschberger @ 2006-03-29 13:10 UTC (permalink / raw)
To: Linux-SCSI Mailing List
Hello,
I have now got the RM4000 finally running.
Following things I changed in the kernel:
*) To find the devive:
Lun scan code in scsi_scan.c
Device special flags in scsi_devinfo.c
The final implementation could be easy done via the flags in the
scsi_devinfo.c file.
*) The RM4000 make troubles when trying to write more than 1023Kbytes in
one cdb.
I have changed sd.c to avoid this and only use 512Kbyte blocks as
maximum.
The final implementation is a little bit difficult because I need
some flags to detect the block size problem in sd.c, sd_init_command.
Should I build the changed into sd.c?
Kind regards,
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] 46+ messages in thread
* typo in scsi_devinfo.h
2006-03-29 13:10 ` Compaq Fiber Channel Array RM4000 / Kernel implementation Ingo Flaschberger
@ 2006-03-29 13:19 ` Ingo Flaschberger
2006-03-29 13:43 ` Matthew Wilcox
2006-03-29 15:07 ` Compaq Fiber Channel Array RM4000 / Kernel implementation Christoph Hellwig
1 sibling, 1 reply; 46+ messages in thread
From: Ingo Flaschberger @ 2006-03-29 13:19 UTC (permalink / raw)
To: Linux-SCSI Mailing List
Hello,
in file include/scsi/scsi_devinfo.h:
#define BLIST_BORKEN 0x004 /* Flag for broken handshaking */
^^^^^^^^^^^^
typo
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] 46+ messages in thread
* Re: typo in scsi_devinfo.h
2006-03-29 13:19 ` typo in scsi_devinfo.h Ingo Flaschberger
@ 2006-03-29 13:43 ` Matthew Wilcox
0 siblings, 0 replies; 46+ messages in thread
From: Matthew Wilcox @ 2006-03-29 13:43 UTC (permalink / raw)
To: Ingo Flaschberger; +Cc: Linux-SCSI Mailing List
On Wed, Mar 29, 2006 at 03:19:06PM +0200, Ingo Flaschberger wrote:
> Hello,
>
> in file include/scsi/scsi_devinfo.h:
> #define BLIST_BORKEN 0x004 /* Flag for broken handshaking */
> ^^^^^^^^^^^^
> typo
it's actually humour, not a tpyo.
http://en.wiktionary.org/wiki/bork
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / Kernel implementation
2006-03-29 13:10 ` Compaq Fiber Channel Array RM4000 / Kernel implementation Ingo Flaschberger
2006-03-29 13:19 ` typo in scsi_devinfo.h Ingo Flaschberger
@ 2006-03-29 15:07 ` Christoph Hellwig
2006-03-29 16:47 ` Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch Ingo Flaschberger
1 sibling, 1 reply; 46+ messages in thread
From: Christoph Hellwig @ 2006-03-29 15:07 UTC (permalink / raw)
To: Ingo Flaschberger; +Cc: Linux-SCSI Mailing List
On Wed, Mar 29, 2006 at 03:10:52PM +0200, Ingo Flaschberger wrote:
> Hello,
>
> I have now got the RM4000 finally running.
> Following things I changed in the kernel:
> *) To find the devive:
> Lun scan code in scsi_scan.c
> Device special flags in scsi_devinfo.c
> The final implementation could be easy done via the flags in the
> scsi_devinfo.c file.
>
> *) The RM4000 make troubles when trying to write more than 1023Kbytes in
> one cdb.
> I have changed sd.c to avoid this and only use 512Kbyte blocks as
> maximum.
> The final implementation is a little bit difficult because I need
> some flags to detect the block size problem in sd.c, sd_init_command.
> Should I build the changed into sd.c?
should probaby be a devinfo blacklist flag + quirk in sd.c
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch
2006-03-29 15:07 ` Compaq Fiber Channel Array RM4000 / Kernel implementation Christoph Hellwig
@ 2006-03-29 16:47 ` Ingo Flaschberger
2006-03-29 17:29 ` James Bottomley
0 siblings, 1 reply; 46+ messages in thread
From: Ingo Flaschberger @ 2006-03-29 16:47 UTC (permalink / raw)
To: Linux-SCSI Mailing List
[-- Attachment #1: Type: TEXT/PLAIN, Size: 749 bytes --]
Hello,
Attached is the patch for the 2.6.16 kernel to get the RA4x00 running.
Kind regards,
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 /______//_/
-------------------------------------------------------------------------------
[-- Attachment #2: Type: TEXT/PLAIN, Size: 7810 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-29 20:40:18.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 19:34:25.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_REPORTLUN2 |
+ BLIST_LARGELUN | BLIST_FORCE_SCSI2 | BLIST_MAX_512K}, /* Compaq RA4x00 */
+ {"COMPAQ", "LOGICAL VOLUME", "2.60", BLIST_FORCE_SCSI2 | 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-29 20:03:01.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>
@@ -577,7 +582,13 @@
* device is attached at LUN 0 (SCSI_SCAN_TARGET_PRESENT) so
* non-zero LUNs can be scanned.
*/
- sdev->scsi_level = inq_result[2] & 0x07;
+
+ if (BLIST_FORCE_SCSI2 & *bflags) { /* force SCSI2 for RA4x00 */
+ sdev->scsi_level = 2;
+ } else {
+ sdev->scsi_level = inq_result[2] & 0x07;
+ }
+
if (sdev->scsi_level >= 2 ||
(sdev->scsi_level == 1 && (inq_result[3] & 0x0f) == 1))
sdev->scsi_level++;
@@ -636,6 +647,10 @@
inq_result[1] |= 0x80; /* removable */
} else if (*bflags & BLIST_NO_ULD_ATTACH)
sdev->no_uld_attach = 1;
+
+ if (*bflags & BLIST_FORCE_SCSI2) { /* force SCSI2 for RA4x00 */
+ inq_result[2] = inq_result[2] | 0x2;
+ }
switch (sdev->type = (inq_result[0] & 0x1f)) {
case TYPE_TAPE:
@@ -647,6 +662,7 @@
case TYPE_MEDIUM_CHANGER:
case TYPE_ENCLOSURE:
case TYPE_COMM:
+ case TYPE_RAID:
case TYPE_RBC:
sdev->writeable = 1;
break;
@@ -715,6 +731,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.
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 19:29:10.000000000 +0200
@@ -28,4 +28,7 @@
#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_FORCE_SCSI2 0x800000 /* force SCSI version 2 */
+#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] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch
2006-03-29 16:47 ` Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch Ingo Flaschberger
@ 2006-03-29 17:29 ` James Bottomley
2006-03-29 17:53 ` Ingo Flaschberger
0 siblings, 1 reply; 46+ messages in thread
From: James Bottomley @ 2006-03-29 17:29 UTC (permalink / raw)
To: Ingo Flaschberger; +Cc: Linux-SCSI Mailing List
On Wed, 2006-03-29 at 18:47 +0200, Ingo Flaschberger wrote:
> - sdev->scsi_level = inq_result[2] & 0x07;
> +
> + if (BLIST_FORCE_SCSI2 & *bflags) { /* force SCSI2 for
> RA4x00 */
> + sdev->scsi_level = 2;
> + } else {
> + sdev->scsi_level = inq_result[2] & 0x07;
> + }
Really no to this we're trying to get away from changing actual reported
device information. I assume the device reports SCSI-3 and then
something goes wrong with the REPORT LUNS scan? In which case
BLIST_NOREPORTLUNS should work.
James
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch
2006-03-29 17:29 ` James Bottomley
@ 2006-03-29 17:53 ` Ingo Flaschberger
2006-03-29 18:22 ` James Bottomley
0 siblings, 1 reply; 46+ messages in thread
From: Ingo Flaschberger @ 2006-03-29 17:53 UTC (permalink / raw)
To: James Bottomley; +Cc: Linux-SCSI Mailing List
Hello James,
> On Wed, 2006-03-29 at 18:47 +0200, Ingo Flaschberger wrote:
>> - sdev->scsi_level = inq_result[2] & 0x07;
>> +
>> + if (BLIST_FORCE_SCSI2 & *bflags) { /* force SCSI2 for
>> RA4x00 */
>> + sdev->scsi_level = 2;
>> + } else {
>> + sdev->scsi_level = inq_result[2] & 0x07;
>> + }
>
>
> 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?
> and then
> something goes wrong with the REPORT LUNS scan? In which case
> BLIST_NOREPORTLUNS should work.
no, does not work.
Sorry, thats the only idea I have to ship around the problem.
bye,
Ingo
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch
2006-03-29 17:53 ` Ingo Flaschberger
@ 2006-03-29 18:22 ` James Bottomley
2006-03-29 18:35 ` Ingo Flaschberger
0 siblings, 1 reply; 46+ 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] 46+ 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
2006-03-29 18:43 ` James Bottomley
0 siblings, 1 reply; 46+ 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] 46+ 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; 46+ 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] 46+ 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; 46+ 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] 46+ 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; 46+ 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] 46+ 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; 46+ 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] 46+ 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; 46+ 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] 46+ 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; 46+ 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] 46+ 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; 46+ 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] 46+ 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 14:46 ` James Bottomley
2006-03-30 16:24 ` Matthew Wilcox
0 siblings, 2 replies; 46+ 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] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch
2006-03-30 14:20 ` Ingo Flaschberger
@ 2006-03-30 14:46 ` James Bottomley
2006-03-30 15:04 ` Ingo Flaschberger
2006-03-30 16:24 ` Matthew Wilcox
1 sibling, 1 reply; 46+ messages in thread
From: James Bottomley @ 2006-03-30 14:46 UTC (permalink / raw)
To: Ingo Flaschberger; +Cc: Matthew Wilcox, Linux-SCSI Mailing List
On Thu, 2006-03-30 at 16:20 +0200, Ingo Flaschberger wrote:
> + 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)) ||
Actually, this one's still not quite right. The default for
SCSI_UNKNOWN needs to be not to do a report lun scan *unless*
BLIST_REPORTLUN2 is set ... that way we won't disrupt the functioning of
current SCSI_UNKNOWN devices (i.e. just drop the last SCSI_UNKNOWN check
and add BLIST_REPORTLUNS2 to the flags of the compaq array type).
James
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch
2006-03-30 14:46 ` James Bottomley
@ 2006-03-30 15:04 ` Ingo Flaschberger
2006-03-30 15:09 ` James Bottomley
0 siblings, 1 reply; 46+ messages in thread
From: Ingo Flaschberger @ 2006-03-30 15:04 UTC (permalink / raw)
To: James Bottomley; +Cc: Matthew Wilcox, Linux-SCSI Mailing List
Hello James,
> Actually, this one's still not quite right. The default for
> SCSI_UNKNOWN needs to be not to do a report lun scan *unless*
> BLIST_REPORTLUN2 is set ... that way we won't disrupt the functioning of
> current SCSI_UNKNOWN devices (i.e. just drop the last SCSI_UNKNOWN check
> and add BLIST_REPORTLUNS2 to the flags of the compaq array type).
Ans thats was why I used the BLIST_REPORTLUN0 before, because using
BLIST_REPORTLUN2 (try REPORT_LUNS even for SCSI-2 devs) is not very
"logic" for SCSI_UNKNOWN devices...
I suggest to rename BLIST_REPORTLUN2 to BLIST_REPORTLUN?
bye,
Ingo
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch
2006-03-30 15:04 ` Ingo Flaschberger
@ 2006-03-30 15:09 ` James Bottomley
2006-03-30 15:54 ` Ingo Flaschberger
0 siblings, 1 reply; 46+ messages in thread
From: James Bottomley @ 2006-03-30 15:09 UTC (permalink / raw)
To: Ingo Flaschberger; +Cc: Matthew Wilcox, Linux-SCSI Mailing List
On Thu, 2006-03-30 at 17:04 +0200, Ingo Flaschberger wrote:
> Ans thats was why I used the BLIST_REPORTLUN0 before, because using
> BLIST_REPORTLUN2 (try REPORT_LUNS even for SCSI-2 devs) is not very
> "logic" for SCSI_UNKNOWN devices...
>
> I suggest to rename BLIST_REPORTLUN2 to BLIST_REPORTLUN?
Possibly, but in a separate patch, please.
James
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch
2006-03-30 15:09 ` James Bottomley
@ 2006-03-30 15:54 ` Ingo Flaschberger
2006-03-30 16:13 ` Patrick Mansfield
0 siblings, 1 reply; 46+ messages in thread
From: Ingo Flaschberger @ 2006-03-30 15:54 UTC (permalink / raw)
To: James Bottomley; +Cc: Matthew Wilcox, Linux-SCSI Mailing List
[-- Attachment #1: Type: TEXT/PLAIN, Size: 511 bytes --]
Hello James,
> On Thu, 2006-03-30 at 17:04 +0200, Ingo Flaschberger wrote:
>> Ans thats was why I used the BLIST_REPORTLUN0 before, because using
>> BLIST_REPORTLUN2 (try REPORT_LUNS even for SCSI-2 devs) is not very
>> "logic" for SCSI_UNKNOWN devices...
>>
>> I suggest to rename BLIST_REPORTLUN2 to BLIST_REPORTLUN?
>
> Possibly, but in a separate patch, please.
1st: BLIST_REPORTLUN2 to BLIST_REPORTLUN: BLIST_REPORTLUN_2.6.16.patch
2nd: ra4x00 patch version 4: RA4x00_linux_2.6.16_ver4.patch
bye,
Ingo
[-- Attachment #2: Type: TEXT/PLAIN, Size: 5088 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 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-30 19:15:30.000000000 +0200
+++ linux-2.6.16/drivers/scsi/scsi_devinfo.c 2006-03-30 19:22:22.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 | BLIST_REPORTLUN}, /* 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-30 19:29:12.000000000 +0200
+++ linux-2.6.16/drivers/scsi/scsi_scan.c 2006-03-30 19:23:28.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,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 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-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] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch
2006-03-30 15:54 ` Ingo Flaschberger
@ 2006-03-30 16:13 ` Patrick Mansfield
2006-03-30 16:25 ` Ingo Flaschberger
0 siblings, 1 reply; 46+ messages in thread
From: Patrick Mansfield @ 2006-03-30 16:13 UTC (permalink / raw)
To: Ingo Flaschberger
Cc: James Bottomley, Matthew Wilcox, Linux-SCSI Mailing List
On Thu, Mar 30, 2006 at 05:54:48PM +0200, Ingo Flaschberger wrote:
> + {"COMPAQ", "ARRAY CONTROLLER", "2.60", BLIST_SPARSELUN | BLIST_LARGELUN |
> + BLIST_MAX_512K | BLIST_REPORTLUN}, /* Compaq RA4x00 */
> + {"COMPAQ", "LOGICAL VOLUME", "2.60", BLIST_MAX_512K}, /* Compaq RA4x00 */
> {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN},
Related to Matthew's question ...
The revision field is not used, so you should combine the above into one
entry, else the first one will always be used.
-- Patrick Mansfield
^ permalink raw reply [flat|nested] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch
2006-03-30 14:20 ` Ingo Flaschberger
2006-03-30 14:46 ` James Bottomley
@ 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
1 sibling, 1 reply; 46+ 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] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch
2006-03-30 16:13 ` Patrick Mansfield
@ 2006-03-30 16:25 ` Ingo Flaschberger
0 siblings, 0 replies; 46+ messages in thread
From: Ingo Flaschberger @ 2006-03-30 16:25 UTC (permalink / raw)
To: Patrick Mansfield
Cc: James Bottomley, Matthew Wilcox, Linux-SCSI Mailing List
[-- Attachment #1: Type: TEXT/PLAIN, Size: 539 bytes --]
Hi
> On Thu, Mar 30, 2006 at 05:54:48PM +0200, Ingo Flaschberger wrote:
>
>> + {"COMPAQ", "ARRAY CONTROLLER", "2.60", BLIST_SPARSELUN | BLIST_LARGELUN |
>> + BLIST_MAX_512K | BLIST_REPORTLUN}, /* Compaq RA4x00 */
>> + {"COMPAQ", "LOGICAL VOLUME", "2.60", BLIST_MAX_512K}, /* Compaq RA4x00 */
>> {"COMPAQ", "LOGICAL VOLUME", NULL, BLIST_FORCELUN},
>
> Related to Matthew's question ...
>
> The revision field is not used, so you should combine the above into one
> entry, else the first one will always be used.
Version 5.
bye,
Ingo
[-- Attachment #2: Type: TEXT/PLAIN, Size: 5171 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 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-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 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-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] 46+ 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; 46+ 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] 46+ 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; 46+ 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] 46+ 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; 46+ 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] 46+ 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; 46+ 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] 46+ 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; 46+ 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] 46+ 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; 46+ 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] 46+ 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; 46+ 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] 46+ 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; 46+ 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] 46+ 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
2006-04-06 11:21 ` Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER7 Ingo Flaschberger
0 siblings, 1 reply; 46+ 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] 46+ messages in thread
* Re: Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER7
2006-04-01 16:46 ` Ingo Flaschberger
@ 2006-04-06 11:21 ` Ingo Flaschberger
0 siblings, 0 replies; 46+ messages in thread
From: Ingo Flaschberger @ 2006-04-06 11:21 UTC (permalink / raw)
To: Linux-SCSI Mailing List
Hello,
Is it ok now? Will the code move into the new kernel?
Kind regards,
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] 46+ messages in thread
end of thread, other threads:[~2006-04-06 11:21 UTC | newest]
Thread overview: 46+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-24 23:55 Compaq Fiber Channel Array RM4000 / Scsi middle ware driver Ingo Flaschberger
2006-02-28 0:23 ` Ingo Flaschberger
2006-02-28 0:32 ` Ingo Flaschberger
2006-02-28 0:40 ` Matthew Wilcox
2006-03-22 18:17 ` Ingo Flaschberger
2006-03-22 18:41 ` Martin K. Petersen
2006-03-22 19:58 ` Ingo Flaschberger
2006-03-22 20:02 ` Matthew Wilcox
2006-03-22 20:13 ` Ingo Flaschberger
2006-03-28 19:43 ` Compaq Fiber Channel Array RM4000 / SCSI Problems / Need HELP! Ingo Flaschberger
2006-03-29 6:07 ` Martin K. Petersen
2006-03-29 11:17 ` Ingo Flaschberger
2006-03-29 13:10 ` Compaq Fiber Channel Array RM4000 / Kernel implementation Ingo Flaschberger
2006-03-29 13:19 ` typo in scsi_devinfo.h Ingo Flaschberger
2006-03-29 13:43 ` Matthew Wilcox
2006-03-29 15:07 ` Compaq Fiber Channel Array RM4000 / Kernel implementation Christoph Hellwig
2006-03-29 16:47 ` Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch Ingo Flaschberger
2006-03-29 17:29 ` James Bottomley
2006-03-29 17:53 ` Ingo Flaschberger
2006-03-29 18:22 ` 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 14:46 ` James Bottomley
2006-03-30 15:04 ` Ingo Flaschberger
2006-03-30 15:09 ` James Bottomley
2006-03-30 15:54 ` Ingo Flaschberger
2006-03-30 16:13 ` Patrick Mansfield
2006-03-30 16:25 ` 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
2006-04-06 11:21 ` Compaq Fiber Channel Array RM4000 / 2.6.16 kernel patch VER7 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).