From: TARUISI Hiroaki <taruishi.hiroak@jp.fujitsu.com>
To: linux-scsi@vger.kernel.org
Subject: [PATCH] SCSI: Prevent from retrying with expecting_cc_ua in case of disk change.
Date: Wed, 22 Dec 2010 15:53:43 +0900 [thread overview]
Message-ID: <4D11A077.1030100@jp.fujitsu.com> (raw)
Hi,
I have found a following trouble.
1. Boot with a particular usb DVD-RAM drive with RHEL boot disk
in rescue mode.
2. Change disk to DVD-RAM (whatever disk may ok which is bigger
capacity than previous boot disk)
3. execute ioctl(BLKGETSIZE[64]).
4. We get the size of boot disk. (not one of DVD-RAM)
Actually, I replaced to DVD-RAM disk with ext2 filesystem and check
it with fsck, I get these nice error message.
The filesystem size (according to the superblock) is xxxx blocks
The physical size of the device is yyyy blocks
Either the superblock or the partition table is likely to be corrupt!
Abort?
I found this problem is caused by retry logic of scsi driver.
scsi driver retries i-o in case of unit attention with expecting_cc_ua=1
even if the unit attention means disk change. So, sr driver loses unit
attention, and also loses disk change event.
(As for expecting_cc_ua=1, this was set because of a hardware bug and
this is also another cause. I wonder why this bit is off only when
unit attention or not ready. It should be off at the first i-o after
reset operation, I think...)
I made a simple patch for this problem. Could someone check this patch?
Regards,
taruisi
Signed-off-by: TARUISI Hiroaki <taruishi.hiroak@jp.fujitsu.com>
---
drivers/scsi/scsi_error.c | 12 +++++++-----
1 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 30ac116..fd93145 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -285,13 +285,15 @@ static int scsi_check_sense(struct scsi_cmnd *scmd)
case UNIT_ATTENTION:
/*
* if we are expecting a cc/ua because of a bus reset that we
- * performed, treat this just as a retry. otherwise this is
- * information that we should pass up to the upper-level driver
- * so that we can deal with it there.
+ * performed, treat this just as a retry except a case of disk
+ * change. otherwise this is information that we should pass up
+ * to the upper-level driver so that we can deal with it there.
*/
if (scmd->device->expecting_cc_ua) {
- scmd->device->expecting_cc_ua = 0;
- return NEEDS_RETRY;
+ if (sshdr.asc != 0x28 || sshdr.ascq != 0x00) {
+ scmd->device->expecting_cc_ua = 0;
+ return NEEDS_RETRY;
+ }
}
/*
* if the device is in the process of becoming ready, we
--
1.4.4.4
--
taruisi
next reply other threads:[~2010-12-22 6:55 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-22 6:53 TARUISI Hiroaki [this message]
-- strict thread matches above, loose matches on Subject: below --
2011-08-03 13:39 [RFC PATCH] SCSI: Correct UA being ignored when notifying of media-changed Rob Evers
2011-08-03 22:22 ` James Bottomley
2011-08-03 22:31 ` Mike Christie
2011-08-03 22:36 ` James Bottomley
2011-08-08 22:50 ` TARUISI Hiroaki
2011-08-09 15:22 ` James Bottomley
2011-08-11 11:25 ` [PATCH] SCSI: Prevent from retrying with expecting_cc_ua in case of disk change TARUISI Hiroaki
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=4D11A077.1030100@jp.fujitsu.com \
--to=taruishi.hiroak@jp.fujitsu.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;
as well as URLs for NNTP newsgroup(s).