All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] sd: do not set changed flag on all unit attention conditions
@ 2012-07-16 16:06 Paolo Bonzini
  2012-07-16 16:18 ` James Bottomley
  0 siblings, 1 reply; 22+ messages in thread
From: Paolo Bonzini @ 2012-07-16 16:06 UTC (permalink / raw)
  To: linux-kernel; +Cc: linux-scsi, JBottomley

Right now, I/O will fail as soon as a unit attention condition is
detected on a unit with removable media.  However, this is not
always necessary.  There are some cases (such as "Capacity data
has changed") where no particular action is needed.  On the
other hand, all problematic cases have to report at least one
of "No medium" and/or a "Medium may have changed", so restrict
our attention to those.

This patch fixes resizing a removable medium with virtio-scsi.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 drivers/scsi/scsi_lib.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index b583277..6d8ca08 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -843,8 +843,11 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes)
 	} else if (sense_valid && !sense_deferred) {
 		switch (sshdr.sense_key) {
 		case UNIT_ATTENTION:
-			if (cmd->device->removable) {
-				/* Detected disc change.  Set a bit
+			if (cmd->device->removable &&
+			    (sshdr.asc == 0x3a ||
+			     (sshdr.asc == 0x28 && sshdr.ascq == 0x00))) {
+				/* "No medium" or "Medium may have changed."
+				 * This means a disc change.  Set a bit
 				 * and quietly refuse further access.
 				 */
 				cmd->device->changed = 1;
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2012-07-27 10:16 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-16 16:06 [PATCH] sd: do not set changed flag on all unit attention conditions Paolo Bonzini
2012-07-16 16:18 ` James Bottomley
2012-07-16 17:20   ` Paolo Bonzini
2012-07-17  7:45     ` James Bottomley
2012-07-17  8:34       ` Paolo Bonzini
2012-07-17  8:40         ` James Bottomley
2012-07-17  8:54           ` Paolo Bonzini
2012-07-17  9:11             ` James Bottomley
2012-07-17  9:28               ` Paolo Bonzini
2012-07-17 12:21                 ` James Bottomley
2012-07-17 12:31                   ` Paolo Bonzini
2012-07-17 13:32                     ` James Bottomley
2012-07-17 16:36               ` Christoph Hellwig
2012-07-17 16:47                 ` Paolo Bonzini
2012-07-17 16:50                   ` Christoph Hellwig
2012-07-17 18:45                   ` Mike Christie
2012-07-17 18:49                     ` Mike Christie
2012-07-17 21:12                       ` Paolo Bonzini
2012-07-17 21:59                 ` James Bottomley
2012-07-27 10:16                   ` Hannes Reinecke
2012-07-27 10:16                     ` Hannes Reinecke
2012-07-25 12:09               ` Hannes Reinecke

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.