[LSF/MM Topic] SCSI Unit Attention Handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I would like to propose a topic around SCSI Unit Attention Handling.

The current scsi_error.c:scsi_check_sense handling of UNIT ATTENTION
consists of explicitly printing warnings for for ASC=0x3f events and
then returning SOFT_ERROR which scsi_error.c:scsi_decide_disposition
ignores because it returns SUCCESS to SOFT_ERROR being returned from
scst_check_sense on a CHECK_CONDITION.

There are a number of cases where we might want to perform further
processing on a UNIT ATTENTION. For example, ASC/ASCQ 0x3f/0x0e
REPORTED LUNS DATA HAS CHANGED or 0x2a/0x09 CAPACITY DATA HAS CHANGED,
0x28/0x03 IMPORT/EXPORT ELEMENT ACCESSED, MEDIUM CHANGED, etc. When
the LUNS have changed it would be useful to have a recan performed
automatically. If capacity data has changed, it would be useful if
someone could react to that and perhaps resize the file system on that
LUN if possible, and so forth.

It is not clear that any of these items should be handled in the
kernel anyway, and perhaps they should be exported to user-space for
correct handling, but rather than just the raw SENSE data being
exported, perhaps some sort of relevant event should be exported.

To avoid having to code all of the relevant combinations in the above
routine, Hannes and I have been discussing a framework for handling
this. Hannes suggested a notifier chain of some sort to deal with
this, and points out that because the above routine is called in a
softirq context we don't want to be performing lots of processing in
that context.

It seems that we need to defer processing of these items as well as
provide some mechanism for drivers (sd.c, st.c, etc, to register the
UNIT ATTENTIONs they are interested in). The registration seems quite
straight forward ... each driver can provide a list of the ASC/ASCQ
pairs they are interested in and a mapping to an event of some sort,
but the issue then is how to defer this processing. One approach I
have thought of is to extend the error handler thread to handle these
sorts of events and on a UNIT ATTENTION give the command to the error
handling thread. However, others might suggest that the processing
done in the error handler thread should be moved to work queues
anyway, and overloading the error handling thread like this is the
wrong way to do this and that they would rather see the error handling
thread go away.

So, I would like to have a discussion around the issues involved in
providing some sort of a framework for letting drivers indicate what
UNIT ATTENTIONS they are interested in and how to handle those, either
by exporting them to userspace or providing a callback or other
mechanism for handling them. We also need some discussion around
communicating with user space. Whether to use uevent/udev, use netlink
(Hannes suggests this has issues in heavy memory use cases), relayfs,
etc.

-- 
Regards,
Richard Sharpe
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux