[Pvfs2-developers] Re: pointer aliasing and interface->set_info
semantics
Scott Atchley
atchley at myri.com
Wed Mar 5 14:42:45 EST 2008
On Mar 5, 2008, at 10:59 AM, Phil Carns wrote:
> I don't know if IB or MX need to use the
> bmi_method_addr_forget_callback() function. That function makes a
> little more sense in the context of a particular tcp problem:
>
> - each time a client opens a new tcp socket to a server, the server
> creates a bmi_addr corresponding to that socket (so it can send
> responses, etc.).
> - if that client exits, then reconnects, the server just thinks of
> that as an entirely new bmi_addr; it doesn't have any way to
> realize that it is the same client connecting again using a
> different socket.
>
> bmi_tcp therefore has to garbage collect old bmi_addr's when
> sockets close, otherwise the number of addresses can grow
> indefinitely for a long running tcp pvfs2-server (a problem Sam
> found a while back).
>
> Ideally, when bmi_tcp figures out that a socket is closed, it would
> garbage collect immediately and get rid of the addr. However, the
> server could still have pending operations for that bmi_addr.
> So... we we mark that addr as in an error state and try to hang
> onto it until the reference count hits zero before garbage
> collecting. That let's us report a more meaningful error on the
> server side for pending operations than "addr doesn't exist".
>
> The bmi_method_addr_foget_callback() in this case is a way to poke
> the upper level bmi code to say "keep an eye on this addr, and when
> the refcount hits zero clean it up for me".
>
> I don't know if that description helps any, but that's my
> interpretation of what it does :) The address management (in
> general) in bmi has ended up being pretty wacky.
>
> The DROP_ADDR function is how the bmi.c layer explicitly tells a
> bmi method to get rid of an address (if that action makes any sense
> for the method in question). So that part needs to really get rid
> of the address if necessary rather than handing it back to bmi.c
> with the bmi_method_addr_forget_callback().
>
> -Phil
Thanks Phil,
I will remove the callback from bmi_mx.
I think that I also need to look at sending a BYE message when a
client goes away to let the server know when to clean up.
Scott
More information about the Pvfs2-developers
mailing list