[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