From: Mikulas Patocka <mpatocka@redhat.com>
To: Vjaceslavs Klimovs <vklimovs@gmail.com>
Cc: "Dr. David Alan Gilbert" <linux@treblig.org>,
Thorsten Leemhuis <regressions@leemhuis.info>,
kbusch@kernel.org, trnka@scm.com,
Zdenek Kabelac <zdenek.kabelac@gmail.com>,
linux-block@vger.kernel.org, dm-devel@lists.linux.dev,
Linux kernel regressions list <regressions@lists.linux.dev>
Subject: Re: Repeatable, raid1+O_DIRECT, hang/warn
Date: Tue, 16 Jun 2026 17:55:13 +0200 (CEST) [thread overview]
Message-ID: <27311df3-2c46-08be-825a-157ea906bdb2@redhat.com> (raw)
In-Reply-To: <CAC_j7i0eDccVWzPeRafM50mZEOFHPz2cwd=RZqqx6TK2EVRFvw@mail.gmail.com>
Hi
On Mon, 15 Jun 2026, Vjaceslavs Klimovs wrote:
> Hi Dave, all,
>
> I'm one of the original reporters and very much a user, not a block/dm
> developer, so please sanity-check all of this.
>
> Your trace looks like what the two earlier reports hit: a read reaching
> a leaf device with sectors > 0 but phys_seg 0 (an empty bio). One aside
> that may help read the trace: blk_io_trace.error is a __u16, so the
> bracketed values on your C lines are errnos as u16 (65514 = -EINVAL,
> 65531 = -EIO).
>
> The WARN itself is new, the bad bio isn't. bio_add_page() only started
> rejecting len == 0 in 643893647cac ("block: reject zero length in
> bio_add_page()", v7.1-rc1); on 7.0.8 the same empty bio tripped
> scsi_alloc_sgtables()'s !nr_segs instead, which matches what you saw.
> That fits your "not a recent regression": the condition is older, v7.1
> just made it loud.
>
> For Tomas's and my reports (QEMU O_DIRECT to the LV block device) the
> origin looks like 5ff3f74e145a ("block: simplify direct io validity
> check", v6.18): blkdev_dio_invalid() now checks only aggregate
> ki_pos | count alignment and dropped the per-segment
> bdev_iter_is_aligned() walk, so a degenerate or misaligned O_DIRECT no
> longer gets -EINVAL at the fops boundary. But your reproducer reads a
> file, which goes through the filesystem O_DIRECT path and never calls
> blkdev_dio_invalid(), and still makes the empty bio. So it isn't only
> that one entry point.
I thought that reverting 5ff3f74e145a and re-introducing the alignment
check in block/fops.c:blkdev_dio_invalid would fix it - but it wouldn't.
The same problem existed even before 5ff3f74e145a, with the pvmove
command.
Suppose that the administrator needs to move a logical volume from one
disk to another and uses pvmove. Pvmove inserts a new dm-mirror target
underneath the logical volume and uses it to copy the data. Now, the
dm-mirror target crashes whenever it receives bio with unaligned vectors.
So, I think that the proper way to fix this is to teach dm-mirror/dm-io to
deal with unaligned bio vectors and handle them properly.
Mikulas
next prev parent reply other threads:[~2026-06-16 15:55 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-14 17:57 Repeatable, raid1+O_DIRECT, hang/warn Dr. David Alan Gilbert
2026-06-15 10:34 ` Thorsten Leemhuis
2026-06-15 12:50 ` Dr. David Alan Gilbert
2026-06-15 23:16 ` Vjaceslavs Klimovs
2026-06-16 0:06 ` Keith Busch
2026-06-16 1:25 ` Vjaceslavs Klimovs
2026-06-16 12:57 ` Dr. David Alan Gilbert
2026-06-16 13:08 ` Dr. David Alan Gilbert
2026-06-16 14:04 ` Dr. David Alan Gilbert
2026-06-16 14:19 ` Keith Busch
2026-06-16 15:55 ` Dr. David Alan Gilbert
2026-06-16 15:55 ` Mikulas Patocka [this message]
2026-06-16 16:05 ` Keith Busch
2026-06-15 13:07 ` Zdenek Kabelac
2026-06-15 13:20 ` Dr. David Alan Gilbert
2026-06-15 15:20 ` Keith Busch
2026-06-15 15:35 ` Keith Busch
2026-06-15 16:37 ` Dr. David Alan Gilbert
2026-06-15 17:19 ` Keith Busch
2026-06-15 17:42 ` Dr. David Alan Gilbert
2026-06-15 19:25 ` Keith Busch
2026-06-15 20:09 ` Keith Busch
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=27311df3-2c46-08be-825a-157ea906bdb2@redhat.com \
--to=mpatocka@redhat.com \
--cc=dm-devel@lists.linux.dev \
--cc=kbusch@kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux@treblig.org \
--cc=regressions@leemhuis.info \
--cc=regressions@lists.linux.dev \
--cc=trnka@scm.com \
--cc=vklimovs@gmail.com \
--cc=zdenek.kabelac@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox