Re: [RFC][PATCH 14/16] writeback: move bdi threads exiting logicto the forker thread

From: Artem Bityutskiy
Date: Tue Jul 20 2010 - 08:30:35 EST


On Sun, 2010-07-18 at 03:02 -0400, Christoph Hellwig wrote:
> > + if (wakeup_default) {
> > trace_writeback_nothread(bdi, work);
> > wake_up_process(default_backing_dev_info.wb.task);
>
> Why not simply do the defaul thread wakeup under wb_lock, too?
> It keeps the code a lot simpler, and this is not a typical path anyway.

Will address.

> > if (dirty_writeback_interval) {
> > + unsigned long wait_jiffies;
> > +
> > wait_jiffies = msecs_to_jiffies(dirty_writeback_interval * 10);
> > schedule_timeout(wait_jiffies);
>
> No real need for a local variable here.

Will address.

> > @@ -364,7 +395,7 @@ static int bdi_forker_thread(void *ptr)
> > if (!list_empty(&me->bdi->work_list))
> > __set_current_state(TASK_RUNNING);
> >
> > - if (!fork) {
> > + if (!fork && !kill) {
>
> I think the code here would be a lot cleaner if you implement the
> suggestion I have for the forking restructuring.

As I replied earlier, to fork/kill the the thread from inside list walk
we'd need to drop the spinlock, which is not very nice. So I am keeping
this part intact so far.

--
Best Regards,
Artem Bityutskiy (ÐÑÑÑÐ ÐÐÑÑÑÐÐÐ)

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/