All of lore.kernel.org
 help / color / mirror / Atom feed
From: Fengguang Wu <fengguang.wu@intel.com>
To: Jeff Moyer <jmoyer@redhat.com>
Cc: Wanpeng Li <liwp.linux@gmail.com>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	Gavin Shan <shangw@linux.vnet.ibm.com>
Subject: Re: [PATCH V2] writeback: fix hung_task alarm when sync block
Date: Wed, 13 Jun 2012 22:55:16 +0800	[thread overview]
Message-ID: <20120613145516.GA3190@localhost> (raw)
In-Reply-To: <20120613144840.GA3055@localhost>

On Wed, Jun 13, 2012 at 10:48:40PM +0800, Fengguang Wu wrote:
> Hi Jeff,
> 
> On Wed, Jun 13, 2012 at 10:27:50AM -0400, Jeff Moyer wrote:
> > Wanpeng Li <liwp.linux@gmail.com> 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)? 
> 
> Yes, in the case of syncing the whole superblock.
> Basically sync() does its job in two steps:
> 
> for all sb:
>         writeback_inodes_sb_nr() # WB_SYNC_NONE
>         sync_inodes_sb()         # WB_SYNC_ALL
> 
> > 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.

Note that this wait_for_completion() waits for the flusher to move
all dirty pages into writeback pages, which in turn will block in
get_request_wait(). So writeback_inodes_sb_nr() could in theory finish
quickly if the nr_requests is a huge value. But then sync_inodes_sb()
will come and sleep (longer) on each of the writeback pages..

Thanks,
Fengguang

  reply	other threads:[~2012-06-13 14:55 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-13  4:42 [PATCH V2] writeback: fix hung_task alarm when sync block Wanpeng Li
2012-06-13 14:27 ` Jeff Moyer
2012-06-13 14:48   ` Fengguang Wu
2012-06-13 14:55     ` Fengguang Wu [this message]
2012-06-13 15:34     ` Jeff Moyer
2012-06-14 13:36       ` Fengguang Wu
2012-06-19 20:14         ` Jeff Moyer
2012-06-19 21:02           ` Dave Chinner
2012-06-19 21:09             ` Jeff Moyer
2012-06-19 21:56               ` Dave Chinner
2012-06-14  1:35     ` Wanpeng Li
2012-06-14 13:26       ` Fengguang Wu
2012-06-15 22:43     ` Dave Chinner
2012-06-14 10:52 ` Wanpeng Li
2012-06-15 22:38 ` Dave Chinner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120613145516.GA3190@localhost \
    --to=fengguang.wu@intel.com \
    --cc=jmoyer@redhat.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=liwp.linux@gmail.com \
    --cc=shangw@linux.vnet.ibm.com \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.