[sheepdog] [PATCH 0/3] introduce a thread safe mechanism for register/unregister event

Hitoshi Mitake mitake.hitoshi at gmail.com
Mon Jan 13 11:15:47 CET 2014


At Mon, 13 Jan 2014 17:15:24 +0800,
Liu Yuan wrote:
> 
> On Mon, Jan 13, 2014 at 05:13:09PM +0800, Liu Yuan wrote:
> > On Mon, Jan 13, 2014 at 05:40:36PM +0900, Hitoshi Mitake wrote:
> > > The commit 6601e90cf2c5 (sheep: allow {register,unregister}_event to be  called
> > > in worker thread) introduced dangerous change of
> > > {register,unregister}_event(). The changed functions are halfway thread safe. It
> > > will be bug prone stuff and shoud be fixed in a correct manner. This patch adds
> > > real thread safe version functions for registering and unregistering events.
> > 
> > No, as we previously discussed, we need a high performance register/unregister
> > mechanism for worker threads. Currently, exec_local_req_async is only user of it
> > and current code serve it well.
> > 
> > Queuing reg/unreg in the main thread is too slow.
> 
> "2. make sure registeration is done before some other events"
> 
> can main thread reg/unreg satisfy above requirements? I don't think so.

The main thread reg/unreg satisfy the above requirement. The
requirement is satisfied by the event priority mechanism.

I think you are talking about that the main thread reg/unreg can lose
notifications to req->local_req_efd. But it cannot be
lost. Registering is always done before local_req_handler() because
the register/unregister is set as an event with highest priority.

Thanks,
Hitoshi



More information about the sheepdog mailing list