From: James Bottomley <James.Bottomley@HansenPartnership.com>
To: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Cc: 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 10:20:53 -0500 [thread overview]
Message-ID: <1213111253.3440.5.camel@localhost.localdomain> (raw)
In-Reply-To: <Pine.LNX.4.64.0806091721040.22138@vixen.sonytel.be>
[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) ||
next prev parent reply other threads:[~2008-06-10 15:20 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 [this message]
2008-06-10 15:49 ` Boaz Harrosh
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=1213111253.3440.5.camel@localhost.localdomain \
--to=james.bottomley@hansenpartnership.com \
--cc=Geert.Uytterhoeven@sonycom.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