On Mon, 2007-10-29 at 12:24 -0400, Jeff Garzik wrote:James Bottomley wrote:Ah, OK; I haven't communicated what we need very clearly. We need a way
to see if the event is supported by the device, as well as a way to turn
it off. For some of the events (possibly not the SATA AN one, since I
know all SATA devices will be well behaved) there's going to be a need
to deal with berserk or broken devices that become trigger happy, so
turning off the event will be a useful (and possibly essential) way of
coping.
That's possible with the presented interface[1]:
# see if event is supported
cat $path/evt_media_change
# turn off event to deal with broken/beserk devices
echo 0 > $path/evt_media_change
Some sillyhead can always do
echo 1 > $path/evt_some_event_my_device_does_not_support
but that will be obviously be a no-op because their device simply will not send such events.
Granted ls(1) is no longer a method for viewing supported-at-boot-time list of events -- ls(1) in the presented interface lists what events the _kernel_ supports, and cat(1) is used to discover which events are actually enabled.
I think that is the only difference between our two positions: [if I understand you correctly] you want ls(1) to be able to list the device's supported events. However, I feel that is inconsistent: for your proposal, userspace must perform two checks in order to determine a feature's availability: 1) does the file exist? 2) is the file context non-zero?
Yes, I agree ... however, open file is one op for the user -ENXIO means
device doesn't support the event; value indicates whether the event is
currently triggering.
I just would rather we use the file exists if device supports event,
because it's consistent with all the rest of our SCSI interfaces.