public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
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

  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