OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

virtio message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [virtio] virtio_scsi_cmd_req_cmd alignment


Stefan Hajnoczi <stefanha@redhat.com> writes:
> On Mon, Apr 07, 2014 at 12:33:16PM +0300, Michael S. Tsirkin wrote:
>> I just noticed that without a pack directive,
>> the following is likely to cause compiler to add padding:
>> 
>> struct virtio_scsi_req_cmd {
>>         // Device-readable part
>>         u8 lun[8];
>>         le64 id;
>>         u8 task_attr;
>>         u8 prio;
>>         u8 crn;
>>         u8 cdb[cdb_size];
>>         u8 dataout[];
>>         // Device-writable part
>>         le32 sense_len;
>>         le32 residual;
>>         le16 status_qualifier;
>>         u8 status;
>>         u8 response;
>>         u8 sense[sense_size];
>>         u8 datain[];
>> };
>> 
>> 
>> if cdb_size is 32 and sense_size is 96 as spec suggests,
>> and with no dataout and datain, padding will be added
>> at the tail of structure unless suppressed e.g. using
>> the packed directive.
>> 
>> In practice this is pseudo-code, but implementations
>> might copy bits of this.
>> 
>> That's unfortunate, I really assumed balloon is the only
>> instance where structure fields aren't naturally aligned.
>> Should we do something with it for 1.0?
>> Or is an implementation note in the spec enough?
>
> I never worried about this since it's not valid C but an implementation
> note can't hurt.

Yes, let's add a note.

Cheers,
Rusty.



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]