ciss(4) malformed vendor/product data

Scott Long scott4long at yahoo.com
Tue Apr 9 19:55:30 UTC 2013


Brilliant!

Thanks a lot of pursuing this.

Scott

On Apr 9, 2013, at 3:42 PM, Sean Bruno <seanwbruno at gmail.com> wrote:

> On Mon, 2013-04-08 at 13:14 -0700, Sean Bruno wrote:
>> I think, at some point in the mists of time, vendor and product inquiry
>> were expand to 16bytes and 48 bytes respectively, at least when I look
>> at camcontrol, that's what I see.
>> 
>> I noted that the camcontrol devlist output was slightly mangled (note
>> the lack of 1+0):
>> 
>> -bash-4.2$ sudo camcontrol devlist
>> <COMPAQ RAID 1(1VOLUME OK>         at scbus0 target 0 lun 0 (pass0,da0)
>> <COMPAQ RAID 1(1VOLUME OK>         at scbus0 target 1 lun 0 (pass1,da1)
>> <TEAC CD-224E 9.9A>                at scbus3 target 0 lun 0 (pass2,cd0)
>> 
>> When I updated this to have the same padded sizes as camcontrol, then
>> things realigned and became clear:
>> 
>> <COMPAQ RAID 1(1+0) OK>            at scbus0 target 0 lun 0 (pass0,da0)
>> <COMPAQ RAID 0 OK>                 at scbus0 target 1 lun 0 (pass1,da1)
>> 
>> 
>> Not sure if there's a global that should be used here, or 
>> 
> 
> 
> Thought better of the patch, and thought, "Hey!  Why don't I just use
> the values that CAM already defines for this purpose!"
> 
> This will have the same result as the previous version, but be slightly
> more future proofish.
> 
> Index: ciss.c
> ===================================================================
> --- ciss.c    (revision 249314)
> +++ ciss.c    (working copy)
> @@ -3346,9 +3346,12 @@
> 
>    cl = &sc->ciss_logical[bus][target];
> 
> -    padstr(inq->vendor, "COMPAQ", 8);
> -    padstr(inq->product,
> ciss_name_ldrive_org(cl->cl_ldrive->fault_tolerance), 8);
> -    padstr(inq->revision, ciss_name_ldrive_status(cl->cl_lstatus->status),
> 16);
> +    padstr(inq->vendor, "COMPAQ",
> +            SID_VENDOR_SIZE);
> +    padstr(inq->product,
> ciss_name_ldrive_org(cl->cl_ldrive->fault_tolerance),
> +            SID_PRODUCT_SIZE);
> +    padstr(inq->revision, ciss_name_ldrive_status(cl->cl_lstatus->status),
> +            SID_REVISION_SIZE);
>     }
> }
> 


More information about the freebsd-scsi mailing list