From: Oliver Neukum <oliver@neukum.org>
To: James Bottomley <James.Bottomley@hansenpartnership.com>, hare@suse.de
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
Charles Hannum <root@ihack.net>,
linux-kernel@vger.kernel.org, Greg Kroah-Hartman <gregkh@suse.de>,
Alan Stern <stern@rowland.harvard.edu>,
linux-scsi <linux-scsi@vger.kernel.org>,
linux-usb@vger.kernel.org
Subject: Re: [PATCH] scsi/sd: fix suspend with USB-connected Android phone (one line)
Date: Sat, 14 May 2011 21:11:52 +0200 [thread overview]
Message-ID: <201105142111.53266.oliver@neukum.org> (raw)
In-Reply-To: <1305232563.2575.85.camel@mulgrave.site>
Am Donnerstag, 12. Mai 2011, 22:36:03 schrieb James Bottomley:
> Instinct tells me the correct set of fixes is to add a sync cache from
> release (so we automatically sync on last close, which is usually when
> an ordered remove happens), keep the one on shutdown, just in case the
> system goes down with stuff still mounted and print a nasty message on
> suspend for a write back device that's been removed.
>
> I also think we shouldn't abort the suspend if the disk doesn't respond
> correctly to start/stop ... the power is going to be disconnected
> anyway, so it's no issue if the disk spins for a second or so longer.
>
> The problem this is going to cause is double sync on shutdown (once when
> final unmount closes the device and once on shutdown) ... do people
> agree that's a price worth paying?
>
> Something like this?
Hi,
it seems to me that the error codes should really be evaluated a bit better.
How about this?
Regards
Oliver
>From 2ab03ae46d6dc126a51ee9cd38206fbdc8bf6a34 Mon Sep 17 00:00:00 2001
From: Oliver Neukum <oliver@neukum.org>
Date: Mon, 25 Oct 2010 12:25:26 +0200
Subject: [PATCH 2/5] SCSI:sd:error handling in sd_sync_cache()
The SCSI commands sd_sync_cache() uses may fail.
These errors needs to be evaluated to return correct
error codes. This fixes system suspension while a device
removal is being handled.
Signed-off-by: Oliver NEukum <oneukum@suse.de>
---
drivers/scsi/sd.c | 28 ++++++++++++++++++++++++----
1 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index fcba7d2..5ed75bf 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1104,11 +1104,31 @@ static int sd_sync_cache(struct scsi_disk *sdkp)
sd_print_result(sdkp, res);
if (driver_byte(res) & DRIVER_SENSE)
sd_print_sense_hdr(sdkp, &sshdr);
- }
- if (res)
- return -EIO;
- return 0;
+ /* we need to evaluate the error return */
+ if ((scsi_sense_valid(&sshdr) &&
+ /* 0x3a is medium not present */
+ sshdr.asc == 0x3a))
+ /* this is no error here */
+ return 0;
+
+ switch (host_byte(res)) {
+ /* ignore errors due to racing a disconnection */
+ case DID_BAD_TARGET:
+ case DID_NO_CONNECT:
+ return 0;
+ /* signal the upper layer it might try again */
+ case DID_BUS_BUSY:
+ case DID_IMM_RETRY:
+ case DID_REQUEUE:
+ case DID_SOFT_ERROR:
+ return -EBUSY;
+ default:
+ return -EIO;
+ }
+ } else {
+ return 0;
+ }
}
static void sd_rescan(struct device *dev)
--
1.7.1
next prev parent reply other threads:[~2011-05-14 19:11 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-11 22:35 [PATCH] scsi/sd: fix suspend with USB-connected Android phone (one line) Charles Hannum
2011-05-12 20:03 ` Rafael J. Wysocki
2011-05-12 20:36 ` James Bottomley
[not found] ` <1305232563.2575.85.camel-0iu6Cu4xQGLYCGPCin2YbQ@public.gmane.org>
2011-05-12 20:59 ` Charles Hannum
2011-05-12 20:59 ` Charles Hannum
2011-05-12 21:32 ` Alan Stern
2011-05-12 21:32 ` Alan Stern
2011-05-12 21:43 ` James Bottomley
2011-05-12 22:41 ` Charles Hannum
2011-05-14 19:11 ` Oliver Neukum [this message]
2011-05-16 5:56 ` Hannes Reinecke
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=201105142111.53266.oliver@neukum.org \
--to=oliver@neukum.org \
--cc=James.Bottomley@hansenpartnership.com \
--cc=gregkh@suse.de \
--cc=hare@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=rjw@sisk.pl \
--cc=root@ihack.net \
--cc=stern@rowland.harvard.edu \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.