[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130730125306.GC2599@htj.dyndns.org>
Date: Tue, 30 Jul 2013 08:53:06 -0400
From: Tejun Heo <tj@...nel.org>
To: shli@...nel.org
Cc: linux-raid@...r.kernel.org, linux-kernel@...r.kernel.org,
neilb@...e.de, djbw@...com
Subject: Re: [patch 1/3] raid5: offload stripe handle to workqueue
Hello,
On Tue, Jul 30, 2013 at 01:52:08PM +0800, shli@...nel.org wrote:
> +static void raid5_wakeup_stripe_thread(struct stripe_head *sh)
> +{
> + struct r5conf *conf = sh->raid_conf;
> + struct r5worker_group *group;
> + int i;
> +
> + if (conf->worker_cnt_per_group == 0) {
> + md_wakeup_thread(conf->mddev->thread);
> + return;
> + }
> +
> + group = conf->worker_groups + cpu_to_group(sh->cpu);
> +
> + for (i = 0; i < conf->worker_cnt_per_group; i++)
> + queue_work_on(sh->cpu, raid5_wq, &group->workers[i].work);
> +}
Another general suggestion. Using workqueue mechanism simply as
thread dispatching mechanism like above and then buliding your own
work dispatching code on top is usually a poor form. It usually is
much better to assign a single unit of work to a single work item as
it allows things like per work unit flushing and much easier
implementation of freezing. It's possible that you have some
overriding constraints here but if so it'd be nice if you can explain
it.
Thanks.
--
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists