Re: [PATCH V2] writeback: fix hung_task alarm when sync block

From: Jeff Moyer
Date: Wed Jun 13 2012 - 10:27:54 EST


Wanpeng Li <liwp.linux@xxxxxxxxx> writes:

> diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
> index f2d0109..df879ee 100644
> --- a/fs/fs-writeback.c
> +++ b/fs/fs-writeback.c
> @@ -1311,7 +1311,11 @@ void writeback_inodes_sb_nr(struct super_block *sb,
>
> WARN_ON(!rwsem_is_locked(&sb->s_umount));
> bdi_queue_work(sb->s_bdi, &work);
> - wait_for_completion(&done);
> + if (sysctl_hung_task_timeout_secs)
> + while (!wait_for_completion_timeout(&done, HZ/2))
> + ;
> + else
> + wait_for_completion(&done);
> }
> EXPORT_SYMBOL(writeback_inodes_sb_nr);

Is it really expected that writeback_inodes_sb_nr will routinely queue
up more than 2 seconds worth of I/O (Yes, I understand that it isn't the
only entity issuing I/O)? For devices that are really slow, it may make
more sense to tune the system so that you don't have too much writeback
I/O submitted at once. Dropping nr_requests for the given queue should
fix this situation, I would think.

This really feels like we're papering over the problem.

Cheers,
Jeff
--
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/