On 09/21/2017 08:13 AM, Brian King wrote: > On 09/21/2017 05:02 AM, Hannes Reinecke wrote: >> Hi Brian, >> >> I was looking at the ibmvfc code (trying to hook up libfc), and have >> found this definition: >> >> struct ibmvfc_fcp_rsp_info { >> __be16 reserved; >> u8 rsp_code; >> u8 reserved2[4]; >> }__attribute__((packed, aligned (2))); >> >> in comparison, libfc has this: >> >> struct fcp_resp_rsp_info { >> __u8 _fr_resvd[3]; /* reserved */ >> __u8 rsp_code; /* Response Info Code */ >> __u8 _fr_resvd2[4]; /* reserved */ >> }; >> >> So both look _nearly_ identical, except the missing byte at the start. >> It might be inserted due to some compile alignment magic, but I'd rather >> not rely on this. >> Could you clarify if the two structures really are different, or if this >> is a simple oversight? > > Looks like a bug to me. We should probably just have ibmvfc use the > libfc definition. Yes, after looking at the FC spec we most definitely have it defined wrong, and I'm pretty certain that we aren't getting saved by any compiler magic. > > Tyrel - can you do this conversion and run a bit of regression testing? > Looking at the possible values of rsp_code, the most likely place where > this might cause us some issues is in TMF handling. I'm a little > worried this could result in a potential double completion in error > handling in some rare cases.... Tyrel - are you aware of any issues > like that, which this might explain? I certainly can. I recollect something like a double completion issue, but its been so long I can't remember if we were seeing it in the vfc driver or the vscsi driver. Anyhow, I do feel like from what I recall it seems like rsp_code is always zero in reported error messages. -Tyrel > > Thanks, > > Brian >