From: Boaz Harrosh <bharrosh@panasas.com>
To: James Bottomley <James.Bottomley@HansenPartnership.com>
Cc: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>,
linux-scsi <linux-scsi@vger.kernel.org>
Subject: Re: [Cbe-oss-dev] [regression/bisected] corrupt CD data after media change and delay
Date: Tue, 10 Jun 2008 18:49:08 +0300 [thread overview]
Message-ID: <484EA274.2060308@panasas.com> (raw)
In-Reply-To: <1213111253.3440.5.camel@localhost.localdomain>
James Bottomley wrote:
> [resend, managed to drop linux-scsi first time around]
>
> On Mon, 2008-06-09 at 17:27 +0200, Geert Uytterhoeven wrote:
>> Hi James,
>>
>> On Mon, 9 Jun 2008, James Bottomley wrote:
>>> On Mon, 2008-06-09 at 15:54 +0200, Geert Uytterhoeven wrote:
>>>> I managed to reproduce it on my laptop (Core 2 Duo, SATA DVD-RAM, running
>>>> Ubuntu 8.04 for amd64), by booting Debian's 2.6.25 kernel into recovery mode.
>>>> So the problem is not PS3-specific.
>>>>
>>>> Worse, I never got an updated /sys/block/sr0/size for the second CD, not even
>>>> when mounting it ASAP (which is ca. 15-20 seconds after inserting it). It
>>>> always stayed at the value for the first CD.
>>> Well, we have the taxonomy. It's something to do with the media change
>>> trigger. Could you try getting the output of this patch and correlate
>>> the prints with your success and failure cases?
>> Sure!
>>
>> Inserting first CD, mounting:
>>
>> | +0+ the_result = 0x8000002 Sense Key : 0x0 [current] [descriptor]
>> | +0+ the_result = 0x0 Sense Key : 0x0 [current] [descriptor]
>> | +1+ CDS_DISC_OK
>> | +0+ the_result = 0x0 Sense Key : 0x0 [current] [descriptor]
>> | +1+ CDS_DISC_OK
>> | +0+ the_result = 0x0 Sense Key : 0x0 [current] [descriptor]
>> | +1+ CDS_DISC_OK
>> | +0+ the_result = 0x0 Sense Key : 0x0 [current] [descriptor]
>> | +1+ CDS_DISC_OK
>> | +0+ the_result = 0x0 Sense Key : 0x0 [current] [descriptor]
>> | +11+ Return forcing update is 1
>> ^
>> OK
>>
>> | ISO 9660 Extensions: RRIP_1991A
>>
>> Unmounting first CD:
>>
>> | +0+ the_result = 0x0 Sense Key : 0x0 [current] [descriptor]
>> | +1+ CDS_DISC_OK
>> | +0+ the_result = 0x0 Sense Key : 0x0 [current] [descriptor]
>> | +1+ CDS_DISC_OK
>> | +0+ the_result = 0x0 Sense Key : 0x0 [current] [descriptor]
>> | +11+ Return forcing update is 0
>>
>> Ejecting first CD:
>>
>> | +0+ the_result = 0x0 Sense Key : 0x0 [current] [descriptor]
>> | +11+ Return forcing update is 0
>>
>> Inserting second CD, mounting after 30 seconds:
>>
>> | +0+ the_result = 0x8000002 Sense Key : 0x0 [current] [descriptor]
>> | +0+ the_result = 0x0 Sense Key : 0x0 [current] [descriptor]
>> | +1+ CDS_DISC_OK
>> | +0+ the_result = 0x0 Sense Key : 0x0 [current] [descriptor]
>> | +1+ CDS_DISC_OK
>> | +0+ the_result = 0x0 Sense Key : 0x0 [current] [descriptor]
>> | +1+ CDS_DISC_OK
>> | +0+ the_result = 0x0 Sense Key : 0x0 [current] [descriptor]
>> | +1+ CDS_DISC_OK
>> | +0+ the_result = 0x0 Sense Key : 0x0 [current] [descriptor]
>> | +11+ Return forcing update is 0
>> ^
>> Not updated!
>> | ISO 9660 Extensions: Microsoft Joliet Level 3
>> | ISO 9660 Extensions: RRIP_1991A
>>
>> => failed!
>
> Great! confirms the theory of the what but doesn't tell us how this is
> happening.
>
> My best guess is that it's something to do with eaten UNIT_ATTENTION
> keys. I theorise that in the successful case, they get processed in
> scsi_io_completion which sets the changed bit. In the delay case, the
> unit attention is eaten by sr_test_unit_ready so the changed bit is
> always kept at zero. If this is the case, then the patch below should
> fix it. If not, we're back to more debugging ...
>
> James
>
> ---
>
> diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
> index 7ee86d4..c82df8b 100644
> --- a/drivers/scsi/sr.c
> +++ b/drivers/scsi/sr.c
> @@ -178,6 +178,9 @@ int sr_test_unit_ready(struct scsi_device *sdev, struct scsi_sense_hdr *sshdr)
> the_result = scsi_execute_req(sdev, cmd, DMA_NONE, NULL,
> 0, sshdr, SR_TIMEOUT,
> retries--);
> + if (scsi_sense_valid(sshdr) &&
> + sshdr->sense_key == UNIT_ATTENTION)
> + sdev->changed = 1;
>
> } while (retries > 0 &&
> (!scsi_status_is_good(the_result) ||
>
>
I think, I recall that, any issued command, not only unit_ready, might be appended
with UNIT_ATTENTION sense. So maybe as a deeper fix (with lots of testing) we want
to add this logic into the scsi_check_sense() processing. But I'm not sure either way.
Boaz
next prev parent reply other threads:[~2008-06-10 15:49 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-06 14:06 [regression/bisected] corrupt CD data after media change and delay Geert Uytterhoeven
2008-06-06 15:13 ` James Bottomley
2008-06-06 17:27 ` Geert Uytterhoeven
2008-06-09 12:54 ` Geert Uytterhoeven
2008-06-09 13:54 ` [Cbe-oss-dev] " Geert Uytterhoeven
2008-06-09 15:05 ` James Bottomley
2008-06-09 15:27 ` Geert Uytterhoeven
[not found] ` <1213028647.3508.33.camel@localhost.localdomain>
2008-06-10 15:11 ` Geert Uytterhoeven
2008-06-10 15:22 ` James Bottomley
2008-06-10 15:20 ` James Bottomley
2008-06-10 15:49 ` Boaz Harrosh [this message]
2008-06-10 15:56 ` James Bottomley
2008-06-10 16:12 ` Boaz Harrosh
2008-06-10 16:17 ` James Bottomley
2008-06-13 17:33 ` Geert Uytterhoeven
2008-06-18 8:47 ` Alessandro Suardi
2008-06-18 11:13 ` Geert Uytterhoeven
2008-06-18 12:15 ` Alessandro Suardi
2008-06-21 14:18 ` Alessandro Suardi
2008-06-22 8:18 ` Geert Uytterhoeven
2008-06-22 13:14 ` Alessandro Suardi
2008-07-11 21:25 ` Alessandro Suardi
2008-07-12 12:08 ` Alessandro Suardi
2008-07-13 13:33 ` James Bottomley
2008-07-23 20:25 ` Alessandro Suardi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=484EA274.2060308@panasas.com \
--to=bharrosh@panasas.com \
--cc=Geert.Uytterhoeven@sonycom.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=linux-scsi@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox