Re: [PATCH v2 04/18] xprtrdma: Prevent inline overflow

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> On Apr 26, 2016, at 4:42 PM, Sagi Grimberg <sagi@xxxxxxxxxxx> wrote:
> 
> 
>>>> When deciding whether to send a Call inline, rpcrdma_marshal_req
>>>> doesn't take into account header bytes consumed by chunk lists.
>>>> This results in Call messages on the wire that are sometimes larger
>>>> than the inline threshold.
>>> 
>>> I'm not sure I understand why you need to account the chunk list size
>>> when deciding on the inline data size., aren't chunk lists for remote
>>> access only?
>> 
>> The chunk lists and RPC message payload effectively
>> share the same 1024-byte buffer (it's two buffers
>> gathered, but the sum of the two buffer sizes has to
>> be less than 1025).
>> 
>> If the chunk lists are large, the RPC message size is
>> reduced.
>> 
> 
> I'm effectively asking when will a chunk list and inline data
> would appear in the same message?
> 
> Is it when we want to send the first X bytes inline and have the
> remote read the rest Y-X bytes?
> 
> Sorry if this is completely basic, just trying to understand if you
> really need that upper limit...

It's kind of subtle, actually.

Consider the case when the ULP operation expects a
large reply.

When there is a Reply chunk or Write list, the client
provides those via chunk lists in the header of the
Call message. Thus those chunk lists share the 1024
bytes with the RPC Call message.

If the chunk lists plus the Call message don't fit
inline, then the client will have to send the Call
message in a Read chunk (RDMA_NOMSG).


--
Chuck Lever



--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux