scsi: Add 'access_state' and 'preferred_path' attribute

Add an 'access_state' field to struct scsi_device and display them in
sysfs as 'access_state' and 'preferred_path' attribute.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Bart van Assche <bart.vanassche@sandisk.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Hannes Reinecke
2016-03-03 07:54:07 +01:00
committed by Martin K. Petersen
parent 7e47976bcf
commit 77c9df9644
3 changed files with 87 additions and 0 deletions

View File

@@ -201,6 +201,7 @@ struct scsi_device {
struct scsi_device_handler *handler;
void *handler_data;
unsigned char access_state;
enum scsi_device_state sdev_state;
unsigned long sdev_data[0];
} __attribute__((aligned(sizeof(unsigned long))));

View File

@@ -277,5 +277,17 @@ struct scsi_lun {
__u8 scsi_lun[8];
};
/* SPC asymmetric access states */
#define SCSI_ACCESS_STATE_OPTIMAL 0x00
#define SCSI_ACCESS_STATE_ACTIVE 0x01
#define SCSI_ACCESS_STATE_STANDBY 0x02
#define SCSI_ACCESS_STATE_UNAVAILABLE 0x03
#define SCSI_ACCESS_STATE_LBA 0x04
#define SCSI_ACCESS_STATE_OFFLINE 0x0e
#define SCSI_ACCESS_STATE_TRANSITIONING 0x0f
/* Values for REPORT TARGET GROUP STATES */
#define SCSI_ACCESS_STATE_MASK 0x0f
#define SCSI_ACCESS_STATE_PREFERRED 0x80
#endif /* _SCSI_PROTO_H_ */