• Alan Stern's avatar
    [PATCH] Let LLD specify INQUIRY length · 6928192f
    Alan Stern authored
    That sounds like a good suggestion.  Even better, instead of adding a new
    field we can simply use the existing inquiry_length.
    
    This patch changes scsi_probe_lun() to use the value in
    sdev->inquiry_length for the first INQUIRY attempt, if that value is
    nonzero.  Subsequent attempts are based, as before, on the blacklist flags
    and the Additional Length field in the INQUIRY data.
    
    The patch also contains a fairly extensive reorganization of the
    subroutine.  All the code that was duplicated for sending the INQUIRY
    command twice has been consolidated.  The routine now makes up to three
    passes:
    
    	In the first pass, the transfer length is the value initially
    	found in sdev->inquiry_length if that has been set, otherwise
    	it is the current conservative 36 bytes.
    
    	If the first pass succeeds, the routine retrieves the blist flags
    	for the device and checks the Additional Length field.  The blist
    	flags take precedence over sdev->inquiry_length, which in turn
    	takes precedence over the Additional Length.  If it turns out
    	there is more data available than we transferred the first time,
    	a second pass tries to get it.
    
    	If the second pass succeeds the INQUIRY data may have changed,
    	so the blist flags are looked up again and the Additional Length
    	is checked again.  If not, a third pass tries to get the data
    	back, using the same transfer length as the first pass.
    
    Finally, the value stored in sdev->inquiry_length is set to the amount
    actually transferred or the size computed from the Additional Length,
    whichever is smaller.
    
    Although the net change in the source file size is small, the new routine
    has more comments and less code.  Overall I think it's an improvement.
    Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
    6928192f
scsi_scan.c 39.6 KB