mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
[SCSI] Generate uevents on certain unit attention codes
Generate a uevent when the following Unit Attention ASC/ASCQ
codes are received:
2A/01 MODE PARAMETERS CHANGED
2A/09 CAPACITY DATA HAS CHANGED
38/07 THIN PROVISIONING SOFT THRESHOLD REACHED
3F/03 INQUIRY DATA HAS CHANGED
3F/0E REPORTED LUNS DATA HAS CHANGED
Log kernel messages when the following Unit Attention ASC/ASCQ
codes are received that are not as specific as those above:
2A/xx PARAMETERS CHANGED
3F/xx TARGET OPERATING CONDITIONS HAVE CHANGED
Added logic to set expecting_lun_change for other LUNs on the target
after REPORTED LUNS DATA HAS CHANGED is received, so that duplicate
uevents are not generated, and clear expecting_lun_change when a
REPORT LUNS command completes, in accordance with the SPC-3
specification regarding reporting of the 3F 0E ASC/ASCQ UA.
[jejb: remove SPC3 test in scsi_report_lun_change and some docbook fixes and
unused variable fix, both reported by Fengguang Wu]
Signed-off-by: Ewan D. Milne <[email protected]>
Signed-off-by: James Bottomley <[email protected]>
This commit is contained in:
parent
f8813d260e
commit
279afdfe78
4 changed files with 127 additions and 22 deletions
|
|
@ -52,8 +52,15 @@ enum scsi_device_state {
|
|||
|
||||
enum scsi_device_event {
|
||||
SDEV_EVT_MEDIA_CHANGE = 1, /* media has changed */
|
||||
SDEV_EVT_INQUIRY_CHANGE_REPORTED, /* 3F 03 UA reported */
|
||||
SDEV_EVT_CAPACITY_CHANGE_REPORTED, /* 2A 09 UA reported */
|
||||
SDEV_EVT_SOFT_THRESHOLD_REACHED_REPORTED, /* 38 07 UA reported */
|
||||
SDEV_EVT_MODE_PARAMETER_CHANGE_REPORTED, /* 2A 01 UA reported */
|
||||
SDEV_EVT_LUN_CHANGE_REPORTED, /* 3F 0E UA reported */
|
||||
|
||||
SDEV_EVT_FIRST = SDEV_EVT_MEDIA_CHANGE,
|
||||
SDEV_EVT_LAST = SDEV_EVT_LUN_CHANGE_REPORTED,
|
||||
|
||||
SDEV_EVT_LAST = SDEV_EVT_MEDIA_CHANGE,
|
||||
SDEV_EVT_MAXBITS = SDEV_EVT_LAST + 1
|
||||
};
|
||||
|
||||
|
|
@ -164,6 +171,7 @@ struct scsi_device {
|
|||
atomic_t disk_events_disable_depth; /* disable depth for disk events */
|
||||
|
||||
DECLARE_BITMAP(supported_events, SDEV_EVT_MAXBITS); /* supported events */
|
||||
DECLARE_BITMAP(pending_events, SDEV_EVT_MAXBITS); /* pending events */
|
||||
struct list_head event_list; /* asserted events */
|
||||
struct work_struct event_work;
|
||||
|
||||
|
|
@ -261,6 +269,9 @@ struct scsi_target {
|
|||
* means no lun present. */
|
||||
unsigned int no_report_luns:1; /* Don't use
|
||||
* REPORT LUNS for scanning. */
|
||||
unsigned int expecting_lun_change:1; /* A device has reported
|
||||
* a 3F/0E UA, other devices on
|
||||
* the same target will also. */
|
||||
/* commands actually active on LLD. protected by host lock. */
|
||||
unsigned int target_busy;
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in a new issue