* [PATCH 9/9][RESEND] mvsas: ATAPI lun issue
@ 2008-03-27 6:55 Ke Wei
2008-03-27 13:38 ` Jeff Garzik
0 siblings, 1 reply; 2+ messages in thread
From: Ke Wei @ 2008-03-27 6:55 UTC (permalink / raw)
To: linux-scsi; +Cc: james.bottomley, jeff
I found that sending REPORT_LUNS command to some DVD device will cause fis error and controller error record. As a result, scsi mid layer get some wrong LUNs. Also I can get some queer messages.
scsi: host 12 channel 0 id 2 lun 0x30302e302f686f73 has a LUN larger
than currently supported.
scsi: host 12 channel 0 id 2 lun 0x7431322f706f7274 has a LUN larger
than currently supported.
scsi: host 12 channel 0 id 2 lun 0x2d31323a322f656e has a LUN larger
than currently supported.
...
The patch forced to clear the sg buffer of SATA response if FIS is error. But I suggest these codes should merge to the libsas module.
Signed-off-by: Ke Wei <kewei@marvell.com>
---
drivers/scsi/mvsas.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/drivers/scsi/mvsas.c b/drivers/scsi/mvsas.c
index e55b903..42f3e90 100644
--- a/drivers/scsi/mvsas.c
+++ b/drivers/scsi/mvsas.c
@@ -1263,8 +1263,14 @@ static int mvs_sata_done(struct mvs_info *mvi, struct sas_task *task,
SATA_RECEIVED_D2H_FIS(port->taskfileset),
sizeof(struct dev_to_host_fis));
tstat->buf_valid_size = sizeof(*resp);
- if (unlikely(err))
+ if (unlikely(err)) {
+ struct scatterlist *sg = task->scatter;
+ u8 *buf;
stat = SAS_PROTO_RESPONSE;
+ buf = kmap_atomic(sg_page(sg), KM_IRQ0) + sg->offset;
+ memset(buf, 0, sg->length);
+ kunmap_atomic(buf - sg->offset, KM_IRQ0);
+ }
return stat;
}
--
1.5.4
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH 9/9][RESEND] mvsas: ATAPI lun issue
2008-03-27 6:55 [PATCH 9/9][RESEND] mvsas: ATAPI lun issue Ke Wei
@ 2008-03-27 13:38 ` Jeff Garzik
0 siblings, 0 replies; 2+ messages in thread
From: Jeff Garzik @ 2008-03-27 13:38 UTC (permalink / raw)
To: kewei; +Cc: linux-scsi, james.bottomley
Ke Wei wrote:
> I found that sending REPORT_LUNS command to some DVD device will cause fis error and controller error record. As a result, scsi mid layer get some wrong LUNs. Also I can get some queer messages.
>
> scsi: host 12 channel 0 id 2 lun 0x30302e302f686f73 has a LUN larger
> than currently supported.
> scsi: host 12 channel 0 id 2 lun 0x7431322f706f7274 has a LUN larger
> than currently supported.
> scsi: host 12 channel 0 id 2 lun 0x2d31323a322f656e has a LUN larger
> than currently supported.
> ...
>
> The patch forced to clear the sg buffer of SATA response if FIS is error. But I suggest these codes should merge to the libsas module.
>
>
> Signed-off-by: Ke Wei <kewei@marvell.com>
> ---
> drivers/scsi/mvsas.c | 8 +++++++-
> 1 files changed, 7 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/scsi/mvsas.c b/drivers/scsi/mvsas.c
> index e55b903..42f3e90 100644
> --- a/drivers/scsi/mvsas.c
> +++ b/drivers/scsi/mvsas.c
> @@ -1263,8 +1263,14 @@ static int mvs_sata_done(struct mvs_info *mvi, struct sas_task *task,
> SATA_RECEIVED_D2H_FIS(port->taskfileset),
> sizeof(struct dev_to_host_fis));
> tstat->buf_valid_size = sizeof(*resp);
> - if (unlikely(err))
> + if (unlikely(err)) {
> + struct scatterlist *sg = task->scatter;
> + u8 *buf;
> stat = SAS_PROTO_RESPONSE;
> + buf = kmap_atomic(sg_page(sg), KM_IRQ0) + sg->offset;
> + memset(buf, 0, sg->length);
> + kunmap_atomic(buf - sg->offset, KM_IRQ0);
> + }
double-check that this is inside spin_lock_irqsave()
if not, kmap_atomic()..kunmap_atomic() needs to be surrounded by
local_irq_save() and local_irq_restore()
Jeff
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2008-03-27 13:38 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-03-27 6:55 [PATCH 9/9][RESEND] mvsas: ATAPI lun issue Ke Wei
2008-03-27 13:38 ` Jeff Garzik
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox