All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Jens Axboe <jens.axboe@oracle.com>
Cc: linux-kernel@vger.kernel.org, ming.m.lin@intel.com,
	torvalds@linux-foundation.org, stable@kernel.org
Subject: Re: [PATCH] Properly notify block layer of sync writes
Date: Tue, 1 Jul 2008 16:39:49 -0700	[thread overview]
Message-ID: <20080701163949.d0cdf740.akpm@linux-foundation.org> (raw)
In-Reply-To: <20080627131830.GC20826@kernel.dk>

On Fri, 27 Jun 2008 15:18:31 +0200
Jens Axboe <jens.axboe@oracle.com> wrote:

> Hi,
> 
> fsync_buffers_list() and sync_dirty_buffer() both issue async writes and
> then immediately wait on them. Conceptually, that makes them sync writes
> and we should treat them as such so that the IO schedulers can handle
> them appropriately.
> 
> This patch fixes a write starvation issue that Lin Ming reported, where
> xx is stuck for more than 2 minutes because of a large number of
> synchronous IO in the system:
> 
> INFO: task kjournald:20558 blocked for more than 120 seconds.
> "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this
> message.
> kjournald     D ffff810010820978  6712 20558      2
> ffff81022ddb1d10 0000000000000046 ffff81022e7baa10 ffffffff803ba6f2
> ffff81022ecd0000 ffff8101e6dc9160 ffff81022ecd0348 000000008048b6cb
> 0000000000000086 ffff81022c4e8d30 0000000000000000 ffffffff80247537
> Call Trace:
> [<ffffffff803ba6f2>] kobject_get+0x12/0x17
> [<ffffffff80247537>] getnstimeofday+0x2f/0x83
> [<ffffffff8029c1ac>] sync_buffer+0x0/0x3f
> [<ffffffff8066d195>] io_schedule+0x5d/0x9f
> [<ffffffff8029c1e7>] sync_buffer+0x3b/0x3f
> [<ffffffff8066d3f0>] __wait_on_bit+0x40/0x6f
> [<ffffffff8029c1ac>] sync_buffer+0x0/0x3f
> [<ffffffff8066d48b>] out_of_line_wait_on_bit+0x6c/0x78
> [<ffffffff80243909>] wake_bit_function+0x0/0x23
> [<ffffffff8029e3ad>] sync_dirty_buffer+0x98/0xcb
> [<ffffffff8030056b>] journal_commit_transaction+0x97d/0xcb6
> [<ffffffff8023a676>] lock_timer_base+0x26/0x4b
> [<ffffffff8030300a>] kjournald+0xc1/0x1fb
> [<ffffffff802438db>] autoremove_wake_function+0x0/0x2e
> [<ffffffff80302f49>] kjournald+0x0/0x1fb
> [<ffffffff802437bb>] kthread+0x47/0x74
> [<ffffffff8022de51>] schedule_tail+0x28/0x5d
> [<ffffffff8020cac8>] child_rip+0xa/0x12
> [<ffffffff80243774>] kthread+0x0/0x74
> [<ffffffff8020cabe>] child_rip+0x0/0x12
> 
> Lin Ming confirms that this patch fixes the issue. I've run tests with
> it for the past week and no ill effects have been observed, so I'm
> proposing it for inclusion into 2.6.26.

I expect we'll be wanting this in 2.6.25.x also?

> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
> ---
>  fs/buffer.c        |   13 ++++++++-----
>  include/linux/fs.h |    1 +
>  2 files changed, 9 insertions(+), 5 deletions(-)
> 
> ...
>

  reply	other threads:[~2008-07-01 23:40 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-27 13:18 [PATCH] Properly notify block layer of sync writes Jens Axboe
2008-07-01 23:39 ` Andrew Morton [this message]
2008-07-02  8:37   ` Jens Axboe

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=20080701163949.d0cdf740.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=jens.axboe@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ming.m.lin@intel.com \
    --cc=stable@kernel.org \
    --cc=torvalds@linux-foundation.org \
    /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.