Skip to content

Commit

Permalink
scsi: core: Add new flag BLIST_IGN_MEDIA_CHANGE
Browse files Browse the repository at this point in the history
Add a new flag for devices that erroneously establish MEDIUM MAY HAVE
CHANGED unit attentions. Drivers can set this flag to make the SCSI
layer ignore media change events during resume.

[mkp: add "ignore" and add corresponding flag to struct scsi_device]

Link: https://lore.kernel.org/r/[email protected]
Reviewed-by: Bart Van Assche <[email protected]>
Signed-off-by: Martin Kepplinger <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
  • Loading branch information
merge authored and martinkpetersen committed Jul 22, 2021
1 parent e15f669 commit f591a2e
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 3 deletions.
3 changes: 3 additions & 0 deletions drivers/scsi/scsi_scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -973,6 +973,9 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,
if (*bflags & BLIST_UNMAP_LIMIT_WS)
sdev->unmap_limit_for_ws = 1;

if (*bflags & BLIST_IGN_MEDIA_CHANGE)
sdev->ignore_media_change = 1;

sdev->eh_timeout = SCSI_DEFAULT_EH_TIMEOUT;

if (*bflags & BLIST_TRY_VPD_PAGES)
Expand Down
1 change: 1 addition & 0 deletions include/scsi/scsi_device.h
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ struct scsi_device {
unsigned unmap_limit_for_ws:1; /* Use the UNMAP limit for WRITE SAME */
unsigned rpm_autosuspend:1; /* Enable runtime autosuspend at device
* creation time */
unsigned ignore_media_change:1; /* Ignore MEDIA CHANGE on resume */

bool offline_already; /* Device offline message logged */

Expand Down
6 changes: 3 additions & 3 deletions include/scsi/scsi_devinfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@
#define BLIST_LARGELUN ((__force blist_flags_t)(1ULL << 9))
/* override additional length field */
#define BLIST_INQUIRY_36 ((__force blist_flags_t)(1ULL << 10))
#define __BLIST_UNUSED_11 ((__force blist_flags_t)(1ULL << 11))
/* ignore MEDIA CHANGE unit attention after resuming from runtime suspend */
#define BLIST_IGN_MEDIA_CHANGE ((__force blist_flags_t)(1ULL << 11))
/* do not do automatic start on add */
#define BLIST_NOSTARTONADD ((__force blist_flags_t)(1ULL << 12))
#define __BLIST_UNUSED_13 ((__force blist_flags_t)(1ULL << 13))
Expand Down Expand Up @@ -73,8 +74,7 @@
#define __BLIST_HIGH_UNUSED (~(__BLIST_LAST_USED | \
(__force blist_flags_t) \
((__force __u64)__BLIST_LAST_USED - 1ULL)))
#define __BLIST_UNUSED_MASK (__BLIST_UNUSED_11 | \
__BLIST_UNUSED_13 | \
#define __BLIST_UNUSED_MASK (__BLIST_UNUSED_13 | \
__BLIST_UNUSED_14 | \
__BLIST_UNUSED_15 | \
__BLIST_UNUSED_16 | \
Expand Down

0 comments on commit f591a2e

Please sign in to comment.