Re: Notifier chains are unsafe

From: Joe Seigh
Date: Wed Oct 26 2005 - 20:20:37 EST


Chandra Seetharaman wrote:
Andy, comment above rcu_read_lock says, "It is illegal to block while in
an RCU read-side critical section."

As i mentioned in the other email we are discussing about "task
notifier" in lse-tech. We thought of using RCU, but one of the
requirements was that the registered function should be able to block,
so we are looking for alternatives.


What are the requirements that preclude a conventional rwlock? If you
don't have any, then you should go with that.

The other solutions I've mentioned before.

Copy on read.

Various lock-free schemes:
SMR hazard pointers
RCU+SMR (probably overkill since you don't need the read side performance)
reference counting
proxy reference counting

The last would probably be the easiest to implement expecially if you used
a spinlock to safely increment the reference count without the more complicated
atomic thread-safety. It's also more self contained.

User land implementations of most of the above can be found at
http://sourceforge.net/projects/atomic-ptr-plus/

The proxy refcounting stuff is in the atomic-ptr-plus package. It's
in c++ but you should be able to figure it out.

RCU+SMR is in the fastsmr package.



--
Joe Seigh

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/