Commit f591a2e0 authored by Martin Kepplinger's avatar Martin Kepplinger Committed by Martin K. Petersen
Browse files

scsi: core: Add new flag BLIST_IGN_MEDIA_CHANGE

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/20210704075403.147114-2-martin.kepplinger@puri.sm


Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
Signed-off-by: default avatarMartin Kepplinger <martin.kepplinger@puri.sm>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent e15f669c
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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)
+1 −0
Original line number Diff line number Diff line
@@ -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 */

+3 −3
Original line number Diff line number Diff line
@@ -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))
@@ -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 | \