• Stephen Cameron's avatar
    hpsa: clean up aborts · 9b5c48c2
    Stephen Cameron authored
    Do not send aborts to logical devices that do not support aborts
    
    Instead of relying on what the Smart Array claims for supporting logical
    drives, simply try an abort and see how it responds at device discovery
    time.  This way devices that do support aborts (e.g. MSA2000) can work
    and we do not waste time trying to send aborts to logical drives that do
    not support them (important for high IOPS devices.)
    
    While rescanning devices only test whether devices support aborts
    the first time we encounter a device rather than every time.
    
    Some Smart Arrays required aborts to be sent with tags in
    the wrong endian byte order.  To avoid having to know about
    this, we would send two aborts with tags with each endian order.
    On high IOPS devices, this turns out to be not such a hot idea.
    So we now have a list of the devices that got the tag backwards,
    and we only send it one way.
    
    If all available commands are outstanding and the abort handler
    is invoked, the abort handler may not be able to allocate a command
    and may busy-wait excessivly.  Reserve a small number of commands
    for the abort handler and limit the number of concurrent abort
    requests to the number of reserved commands.
    Reviewed-by: default avatarScott Teel <scott.teel@pmcs.com>
    Reviewed-by: default avatarKevin Barnett <kevin.barnett@pmcs.com>
    Reviewed-by: default avatarTomas Henzl <thenzl@redhat.com>
    Reviewed-by: default avatarHannes Reinecke <hare@Suse.de>
    Signed-off-by: default avatarDon Brace <don.brace@pmcs.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarJames Bottomley <JBottomley@Odin.com>
    9b5c48c2
hpsa.c 225 KB