Re: On patch "Let scsi_cmnd->cmnd use request->cmd buffer"

Boaz Harrosh
2008-05-04T13:46:39Z

> Stefan Richter wrote:
>> On 4 May, Stefan Richter wrote:
>>> Boaz Harrosh wrote:
>>>> cmd->cmd_len is now guarantied to be set properly at all cases.
>>>> And some commands you want to support will not be set correctly
>>>> by COMMAND_SIZE().
>> ...
>>> --- linux.orig/drivers/ieee1394/sbp2.c
>>> +++ linux/drivers/ieee1394/sbp2.c
>> ...
>>> memset(orb->cdb, 0, 12);
>
> if you are at it?
> - memset(orb->cdb, 0, 12);
> + memset(orb->cdb, 0, sizeof(orb->cdb));
>
>>> - memcpy(orb->cdb, scsi_cmd, COMMAND_SIZE(*scsi_cmd));
>>> + memcpy(orb->cdb, SCpnt->cmnd, SCpnt->cmd_len);
>> ...
>>
>> Wait a minute...
>>
>> drivers/ieee1394/sbp2.[ch] and drivers/firewire/fw-sbp2.c hardwire the
>> maximum size of the command descriptor block (command_block field in the
>> command block ORB as per SBP-2 clause 5.1.2) to 12 bytes.
>>
>> We need to use BLK_MAX_CDB there, don't we?
>>
>> (Besides, we should keep an eye on unit_characteristics.ORB_size as per
>> SBP-2 clause 7.4.8, but that's another story.)
>
> I'm not sure what you mean. But orb->cdb is 12 bytes, and setting
> max_cmd_len in
> host template insures midlayer will never send a command bigger then
> that. So
> ->cmd_len will never be bigger then host->max_cmd_len. BLK_MAX_CDB
> should not
> be used here.
>
> But I don't see .max_cmd_len set in this file, is it set elsewhere?
>
> Boaz

Oops sorry its fine not to set .max_cmd_len. If not set the midlayer will
assume 12. So the code you sent is fine as is.

Boaz