From: "Theodore Ts'o" <tytso@mit.edu>
To: Andres Freund <andres@anarazel.de>
Cc: "Thorsten Leemhuis" <regressions@leemhuis.info>,
"Shreeya Patel" <shreeya.patel@collabora.com>,
linux-ext4@vger.kernel.org,
"Ricardo Cañuelo" <ricardo.canuelo@collabora.com>,
gustavo.padovan@collabora.com, zsm@google.com,
garrick@google.com,
"Linux regressions mailing list" <regressions@lists.linux.dev>
Subject: Re: task hung in ext4_fallocate #2
Date: Tue, 17 Oct 2023 20:43:35 -0400 [thread overview]
Message-ID: <20231018004335.GA593012@mit.edu> (raw)
In-Reply-To: <20231017033725.r6pfo5a4ayqisct7@awork3.anarazel.de>
On Mon, Oct 16, 2023 at 08:37:25PM -0700, Andres Freund wrote:
> I just was able to reproduce the issue, after upgrading to 6.6-rc6 - this time
> it took ~55min of high load (io_uring using branch of postgres, running a
> write heavy transactional workload concurrently with concurrent bulk data
> load) to trigger the issue.
>
> For now I have left the system running, in case there's something you would
> like me to check while the system is hung.
>
> The first hanging task that I observed:
>
> cat /proc/57606/stack
> [<0>] inode_dio_wait+0xd5/0x100
> [<0>] ext4_fallocate+0x12f/0x1040
> [<0>] vfs_fallocate+0x135/0x360
> [<0>] __x64_sys_fallocate+0x42/0x70
> [<0>] do_syscall_64+0x38/0x80
> [<0>] entry_SYSCALL_64_after_hwframe+0x46/0xb0
This stack trace is from some process (presumably postgres) trying to
do a fallocate() system call:
/* Wait all existing dio workers, newcomers will block on i_rwsem */
inode_dio_wait(inode);
The reason for this is that we can't manipulate the extent tree until
any data block I/Os comlplete. This will block until
iomap_dio_complete() in fs/iomap/direct-io.c calls inode_dio_end().
> [ 3194.579297] INFO: task iou-wrk-58004:58874 blocked for more than 122 seconds.
> [ 3194.579304] Not tainted 6.6.0-rc6-andres-00001-g01edcfe38260 #77
> [ 3194.579310] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
> [ 3194.579314] task:iou-wrk-58004 state:D stack:0 pid:58874 ppid:52606 flags:0x00004000
> [ 3194.579325] Call Trace:
> [ 3194.579329] <TASK>
> [ 3194.579334] __schedule+0x388/0x13e0
> [ 3194.579349] schedule+0x5f/0xe0
> [ 3194.579361] schedule_preempt_disabled+0x15/0x20
> [ 3194.579374] rwsem_down_read_slowpath+0x26e/0x4c0
> [ 3194.579385] down_read+0x44/0xa0
> [ 3194.579393] ext4_file_write_iter+0x432/0xa80
> [ 3194.579407] io_write+0x129/0x420
This could potentially be a interesting stack trace; but this is where
we really need to map the stack address to line numbers. Is that
something you could do?
> Once I hear that you don't want me to test something out on the running
> system, I think a sensible next step could be to compile with lockdep and see
> if that finds a problem?
That's certainly a possibiity. But also please make sure that you can
compile with with debugging information enabled so that we can get
reliable line numbers. I use:
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
CONFIG_DEBUG_INFO_REDUCED=y
Cheers,
- Ted
next prev parent reply other threads:[~2023-10-18 0:44 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-17 3:37 task hung in ext4_fallocate #2 Andres Freund
2023-10-18 0:43 ` Theodore Ts'o [this message]
2023-10-18 2:50 ` Andres Freund
2023-10-18 9:41 ` Andres Freund
2023-10-24 1:12 ` Dave Chinner
2023-10-24 1:36 ` Andres Freund
2023-10-24 14:30 ` Jens Axboe
2023-10-24 18:35 ` Jens Axboe
2023-10-25 0:06 ` Dave Chinner
2023-10-25 0:34 ` Jens Axboe
2023-10-25 15:31 ` Andres Freund
2023-10-25 15:36 ` Jens Axboe
2023-10-25 16:14 ` Andres Freund
2023-10-26 2:48 ` Andres Freund
2023-10-25 19:55 ` Theodore Ts'o
2023-10-27 14:46 ` Jens Axboe
2023-10-25 22:28 ` Dave Chinner
2023-10-27 14:55 ` Jens Axboe
2023-10-20 7:01 ` Linux regression tracking #adding (Thorsten Leemhuis)
2023-10-29 6:28 ` Linux regression tracking #update (Thorsten Leemhuis)
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=20231018004335.GA593012@mit.edu \
--to=tytso@mit.edu \
--cc=andres@anarazel.de \
--cc=garrick@google.com \
--cc=gustavo.padovan@collabora.com \
--cc=linux-ext4@vger.kernel.org \
--cc=regressions@leemhuis.info \
--cc=regressions@lists.linux.dev \
--cc=ricardo.canuelo@collabora.com \
--cc=shreeya.patel@collabora.com \
--cc=zsm@google.com \
/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.