[sheepdog] [PATCH, RFC] sheep: rewrite blocked notifications

Liu Yuan namei.unix at gmail.com
Thu May 17 09:17:23 CEST 2012


On 05/16/2012 03:04 PM, Christoph Hellwig wrote:

> The prime AIM of this patch is to fix the racy access to sys->pending_list
> in do_cluster_op, but it actually cleans up the surrounding code massively
> as well.
> 
> It contains three tightly related changes:
> 
>  - split a new ->block operation from ->notify.  It is used to tell the
>    cluster driver to block new events, but does not contain a message by
>    itself yet.
>  - the block_cb callback previously passed to ->notify is not passed to
>    ->block any more, but a new sd_block_handler callback is provided
>    that can be called from the cluster driver in main thread context.
>    sd_block_handler takes care of grabbing the first request from
>    sys->pending list in the main thread, and then scheduling a workqueue
>    to handle the cluster operation
>  - a new ->unblock cluster operation is added which is called from the
>    ->done handler of the block workqueue to tell the cluster driver
>    to unblock the event processing, as well as sending the message with
>    the results from the main processing (or simplify the cluster wide
>    notification if there is no work routine in the ops table)


Applied after fixing white space and over 80 lines.

Thanks,
Yuan



More information about the sheepdog mailing list