[Lustre-devel] client-side reply handling

Isaac Huang He.Huang at Sun.COM
Thu Dec 3 19:14:20 PST 2009


On Thu, Dec 03, 2009 at 02:23:25PM -0800, Robert Read wrote:
> 
> On Dec 3, 2009, at 13:17 , Andreas Dilger wrote:
> 
> > On 2009-12-03, at 08:00, Eric Barton wrote:
> >> Edited from IRC...
> >>> 
> >>> <Liang> eeb_: do you mean, we can be 100% sure it's safe to unpack
> >>>       in-place only when the buffer is unlinked? so it is better
> >>>       to unregister reply buffer before calling into
> >>>       after_reply()->unpack_reply()?
> >> 
> >> Yes, I think so.  While the reply buffer remains attached, it's
> >> possible to overwrite it at any time.  This could happen if...
> >> 
> >> a) The server is buggy or malign
> > 
> > Let's hope we never have to worry about malicious server nodes...
> > 
> >> b) The request is re-sent and the same reply matchbits are used,
> >>  which is what I think happens currently for non-bulk reqs.
> > 
> > In theory, the reply to the re-sent request should be identical due
> > to reply reconstruction, so it shouldn't matter if it happens to
> > overwrite the same buffer.
> 
> That's fine as long as the buffer is unlinked from the net before it gets swabbed, but hopefully that's the case already. 

I think in-place unpack without unlinking the MD is OK if
LNET_MD_MANAGE_REMOTE is not set for the MD - e.g. request buffers -
because MD offset is maintained locally. However, all reply buffers
seem to have LNET_MD_MANAGE_REMOTE enabled.

Isaac



More information about the lustre-devel mailing list