[SLOF] [PATCH] scsi: implement READ (16) command

Nikunj A Dadhania nikunj at linux.vnet.ibm.com
Wed Oct 12 14:41:22 AEDT 2016


Alexey Kardashevskiy <aik at ozlabs.ru> writes:

> On 28/09/16 17:03, Nikunj A Dadhania wrote:
>> Thomas Huth <thuth at redhat.com> writes:
>> 
>>> On 28.09.2016 08:37, Nikunj A Dadhania wrote:
>>>> For disks bigger than 2TB(512B sector size), read-10 would fail as it is
>>>> limited by the block address(4bytes). Add and use SCSI command READ(16)
>>>> which has 8bytes block address.
>>>>
>>>> Signed-off-by: Nikunj A Dadhania <nikunj at linux.vnet.ibm.com>
>>>> ---
>>>>  slof/fs/scsi-disk.fs    |  2 +-
>>>>  slof/fs/scsi-support.fs | 29 +++++++++++++++++++++++++++++
>>>>  2 files changed, 30 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/slof/fs/scsi-disk.fs b/slof/fs/scsi-disk.fs
>>>> index 2f7d740..83aab89 100644
>>>> --- a/slof/fs/scsi-disk.fs
>>>> +++ b/slof/fs/scsi-disk.fs
>>>> @@ -82,7 +82,7 @@ CREATE cdb 10 allot
>>>>      >r rot r> 			                ( block# #blocks addr len )
>>>>      2swap                                       ( addr len block# #blocks )
>>>>      dup >r
>>>> -    cdb scsi-build-read-10                      ( addr len )
>>>> +    cdb scsi-build-read-16                      ( addr len )
>>>>      r> -rot                                     ( #blocks addr len )
>>>>      scsi-dir-read cdb scsi-param-size 10
>>>>      retry-scsi-command
>>>
>>> I'm feeling a little bit uneasy about using READ-16 here
>>> unconditionally... IIRC, the scsi stack is also used for USB devices,
>>> and these often used to only implement the bare minimum of SCSI
>>> commands, i.e. things like READ-16 are likely not supported there.
>>> Could you maybe add a check if the block address can not be stored in 4
>>> bytes anymore, and only use the READ-16 in that case?
>> 
>> Yeah sure, that can be done. How about this:
>> 
>>     cdb                                         ( addr len block# #blocks cdb )
>>     max-block-num FFFFFFFF > IF
>>         scsi-build-read-16                      ( addr len )
>>     ELSE
>>         scsi-build-read-10                      ( addr len )
>>     THEN
>>     r> -rot                                     ( #blocks addr len )
>
>
> You'll repost the patch, right?

Oops, I thought I did :(

Regards,
Nikunj



More information about the SLOF mailing list