From: Cong Wang<amwang@xxxxxxxxxx>
Date: Mon, 07 Jun 2010 17:57:49 +0800
Hmm, I still feel like this way is ugly, although it may work.
I guess David doesn't like it either.
Of course I don't like it. :-)
I suspect the locking scheme will need to be changed.
Besides, if we're going to hack this up and do write lock attempts in
the read locking paths, there is no point in using a rwlock any more.
And I'm personally in disfavor of all rwlock usage anyways (it dirties
the cacheline for readers just as equally for writers, and if the
critically protected code path is short enough, that shared cache
line atomic operation will be the predominant cost).
So I'd say, 1) make this a spinlock and 2) try to use RCU for the
read path.
That would fix everything.