Swen, I've been looking at your patch, and it has some good ideas.
For some odd reason, I awoke at 1:30 am thinking about it, and
got up and wrote some code.

I've taken another patch of mine, and added the SVCXPRT into the
rpc_dplx_rec, eliminating the refcnt entirely (using the SVCXPRT).

After all, there's no reason to zalloc them separately.  They
always are created at the same time.

So I'm wondering about your thoughts on the locking.  They seem
redundant.  I'm thinking about changing REC_LOCK to use the
SVCXPRT xp_lock, instead.

There's a spot in the existing rpc_dplx_rec creation code where
there's a timing hole in the code after an existing one is
found so the extra refcount is decremented.  Another process
could also decrement and free, and there could be a pointer into
freed memory.  Unifying the lock would be one solution (better
and faster than the usual solution with two locks).

The SVCXPRT lock code has a lot more debugging and testing, too.

Any other related ideas?

BTW, I got rid of the &oflags, too.  Changed it to a callback
function.... ;)

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Nfs-ganesha-devel mailing list
Nfs-ganesha-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs-ganesha-devel

Reply via email to