[dm-devel] [PATCH 6/6] dm-snap-persistent: make metadata_wq multithreaded

Mikulas Patocka mpatocka at redhat.com
Sat Jan 8 03:31:06 UTC 2011


On Sun, 12 Dec 2010, Tejun Heo wrote:

> metadata_wq serves on-stack work items from chunk_io().  Even if
> multiple chunk_io() are simultaneously in progress, each is
> independent and queued only once, so multithreaded workqueue can be
> safely used.
> 
> Switch metadata_wq to multithread and flush the work item instead of
> the workqueue in chunk_io().
> 
> Signed-off-by: Tejun Heo <tj at kernel.org>
> Cc: Mike Snitzer <snitzer at redhat.com>
> Cc: dm-devel at redhat.com

Reviewed-by: Mikulas Patocka <mpatocka at redhat.com>
Acked-by: Mikulas Patocka <mpatocka at redhat.com>

> ---
>  drivers/md/dm-snap-persistent.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/md/dm-snap-persistent.c b/drivers/md/dm-snap-persistent.c
> index d3021a6..95891df 100644
> --- a/drivers/md/dm-snap-persistent.c
> +++ b/drivers/md/dm-snap-persistent.c
> @@ -256,7 +256,7 @@ static int chunk_io(struct pstore *ps, void *area, chunk_t chunk, int rw,
>  	 */
>  	INIT_WORK_ONSTACK(&req.work, do_metadata);
>  	queue_work(ps->metadata_wq, &req.work);
> -	flush_workqueue(ps->metadata_wq);
> +	flush_work(&req.work);
>  
>  	return req.result;
>  }
> @@ -818,7 +818,7 @@ static int persistent_ctr(struct dm_exception_store *store,
>  	atomic_set(&ps->pending_count, 0);
>  	ps->callbacks = NULL;
>  
> -	ps->metadata_wq = alloc_ordered_workqueue("ksnaphd", WQ_MEM_RECLAIM);
> +	ps->metadata_wq = alloc_workqueue("ksnaphd", WQ_MEM_RECLAIM, 0);
>  	if (!ps->metadata_wq) {
>  		kfree(ps);
>  		DMERR("couldn't start header metadata update thread");
> -- 
> 1.7.1
> 
> --
> dm-devel mailing list
> dm-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel
> 




More information about the dm-devel mailing list