Re: Fix sleep_on abuse in XFS, Was: Re: 2.6.2-rc2-mm1 (Breakage?)

From: Nathan Scott
Date: Thu Jan 29 2004 - 01:26:05 EST


On Wed, Jan 28, 2004 at 03:02:06PM +0000, Christoph Hellwig wrote:
> ...
> INIT_LIST_HEAD(&tmp);
> do {
> /* swsusp */
> if (current->flags & PF_FREEZE)
> refrigerator(PF_IOTHREAD);
>
> - if (pbd_active == 1) {
> - mod_timer(&pb_daemon_timer,
> - jiffies + pb_params.flush_interval.val);
> - interruptible_sleep_on(&pbd_waitq);
> - }
> -
> - if (pbd_active == 0) {
> - del_timer_sync(&pb_daemon_timer);
> - }
> + schedule_timeout(pb_params.flush_interval.val);

After a bit more testing, looks like we'll also need a

current->state = TASK_INTERRUPTIBLE;

line before the schedule_timeout call, else pagebufd eats
a whole lot of system time on one CPU.

I'll send an XFS update to Linus and Andrew tomorrow after
some further testing.

thanks.

--
Nathan
-
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/