On 07/08/2011 09:16 AM, Becky Ligon wrote:
Good point, Phil.

Before Sam's bug fix, the free(op-entry) was in the complete-op function.
However, he didn't have the unregister() and I don't know why.  So, maybe,
putting the unregister() and free() outside of complete-op() IS the better
way to handle it.  It seems that there never was an unregister() and I'm
wondering if that could have been causing problems as well, i.e., one
reason why the bug fix was needed in the first place.

Becky

There were two related issues here. The first was switching from fast_register to safe_register, which if I understand correctly was done to prevent a possible segfault if someone tried to access an operation id that had already been completed. (the fast one is "fast" rather than "safe" because it does no error checking and will map whatever ID you give it to a pointer in memory whether it is valid or not; you can only use it when you are confident about how the IDs will be used by callers). There is another difference between those two ID generators, though: the fast_register doesn't technically need matching unregister calls because the fast_unregister is a noop, but safe_register _does_ require matching unregister calls to free some book keeping data structures. That's why those unregisters were added as part of that change. In the original code it would have been better to use the unregister calls just for symmetry, but it wasn't hurting anything to leave them out.

-Phil
_______________________________________________
Pvfs2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to