From: Paulo Alcantara <pc@manguebit.com>
To: David Howells <dhowells@redhat.com>, nicolas.baranger@3xo.fr
Cc: dhowells@redhat.com, Steve French <smfrench@gmail.com>,
Christoph Hellwig <hch@infradead.org>,
Jeff Layton <jlayton@kernel.org>,
Christian Brauner <brauner@kernel.org>,
netfs@lists.linux.dev, linux-cifs@vger.kernel.org,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] netfs: Fix kernel async DIO
Date: Tue, 07 Jan 2025 09:03:11 -0300 [thread overview]
Message-ID: <14271ed82a5be7fcc5ceea5f68a10bbd@manguebit.com> (raw)
In-Reply-To: <286638.1736163444@warthog.procyon.org.uk>
David Howells <dhowells@redhat.com> writes:
> netfs: Fix kernel async DIO
>
> Netfslib needs to be able to handle kernel-initiated asynchronous DIO that
> is supplied with a bio_vec[] array. Currently, because of the async flag,
> this gets passed to netfs_extract_user_iter() which throws a warning and
> fails because it only handles IOVEC and UBUF iterators. This can be
> triggered through a combination of cifs and a loopback blockdev with
> something like:
>
> mount //my/cifs/share /foo
> dd if=/dev/zero of=/foo/m0 bs=4K count=1K
> losetup --sector-size 4096 --direct-io=on /dev/loop2046 /foo/m0
> echo hello >/dev/loop2046
>
> This causes the following to appear in syslog:
>
> WARNING: CPU: 2 PID: 109 at fs/netfs/iterator.c:50 netfs_extract_user_iter+0x170/0x250 [netfs]
>
> and the write to fail.
>
> Fix this by removing the check in netfs_unbuffered_write_iter_locked() that
> causes async kernel DIO writes to be handled as userspace writes. Note
> that this change relies on the kernel caller maintaining the existence of
> the bio_vec array (or kvec[] or folio_queue) until the op is complete.
>
> Fixes: 153a9961b551 ("netfs: Implement unbuffered/DIO write support")
> Reported by: Nicolas Baranger <nicolas.baranger@3xo.fr>
> Closes: https://lore.kernel.org/r/fedd8a40d54b2969097ffa4507979858@3xo.fr/
> Signed-off-by: David Howells <dhowells@redhat.com>
> cc: Steve French <smfrench@gmail.com>
> cc: Jeff Layton <jlayton@kernel.org>
> cc: netfs@lists.linux.dev
> cc: linux-cifs@vger.kernel.org
> cc: linux-fsdevel@vger.kernel.org
> ---
> fs/netfs/direct_write.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
LGTM. Feel free to add:
Acked-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
Thanks Christoph and Dave!
next prev parent reply other threads:[~2025-01-07 12:03 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <669f22fc89e45dd4e56d75876dc8f2bf@3xo.fr>
2025-01-01 18:00 ` Losetup Direct I/O breaks BACK-FILE filesystem on CIFS share (Appears in Linux 6.10 and reproduced on mainline) nicolas.baranger
2025-01-06 7:20 ` Christoph Hellwig
2025-01-06 9:13 ` David Howells
2025-01-06 9:16 ` Christoph Hellwig
2025-01-06 11:37 ` [PATCH] netfs: Fix kernel async DIO David Howells
2025-01-06 12:07 ` nicolas.baranger
2025-01-07 8:26 ` nicolas.baranger
2025-01-07 14:49 ` David Howells
2025-01-07 18:08 ` Nicolas Baranger
2025-01-06 15:34 ` Christoph Hellwig
2025-03-20 8:46 ` [Linux 6.14 - netfs/cifs] loop on file cat + file copy Nicolas Baranger
2025-01-07 12:03 ` Paulo Alcantara [this message]
2025-01-07 18:39 [PATCH] netfs: Fix kernel async DIO David Howells
2025-01-09 16:19 ` Christian Brauner
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=14271ed82a5be7fcc5ceea5f68a10bbd@manguebit.com \
--to=pc@manguebit.com \
--cc=brauner@kernel.org \
--cc=dhowells@redhat.com \
--cc=hch@infradead.org \
--cc=jlayton@kernel.org \
--cc=linux-cifs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netfs@lists.linux.dev \
--cc=nicolas.baranger@3xo.fr \
--cc=smfrench@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 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.