From: Breno Leitao <leitao@debian.org>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>,
Christian Brauner <brauner@kernel.org>, Jan Kara <jack@suse.cz>,
mjguzik@gmail.com, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org, kernel-team@meta.com
Subject: Re: [PATCH] splice: pass a poll key when waking pipe readers and writers
Date: Wed, 16 Sep 2026 04:31:29 -0700 [thread overview]
Message-ID: <aqp9tGsFAFGJb8Pl@gmail.com> (raw)
In-Reply-To: <aqp2CcOnuVEeRV8L@redhat.com>
On Wed, Sep 16, 2026 at 12:57:13PM +0200, Oleg Nesterov wrote:
> While at it... I think they both should use wq_has_sleeper().
Good point, thanks!
> If you agree, feel free to send V2 with this additional change.
Sure, let's wait a bit more before I send v2, but I've got this fix updated
already to the following change:
diff --git a/fs/splice.c b/fs/splice.c
index 9d8f63e2fd1ab..65f9090c3438c 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -177,9 +177,9 @@ static const struct pipe_buf_operations user_page_pipe_buf_ops = {
static void wakeup_pipe_readers(struct pipe_inode_info *pipe)
{
- smp_mb();
- if (waitqueue_active(&pipe->rd_wait))
- wake_up_interruptible(&pipe->rd_wait);
+ if (wq_has_sleeper(&pipe->rd_wait))
+ wake_up_interruptible_poll(&pipe->rd_wait,
+ EPOLLIN | EPOLLRDNORM);
kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
}
@@ -413,9 +413,9 @@ EXPORT_SYMBOL(nosteal_pipe_buf_ops);
static void wakeup_pipe_writers(struct pipe_inode_info *pipe)
{
- smp_mb();
- if (waitqueue_active(&pipe->wr_wait))
- wake_up_interruptible(&pipe->wr_wait);
+ if (wq_has_sleeper(&pipe->wr_wait))
+ wake_up_interruptible_poll(&pipe->wr_wait,
+ EPOLLOUT | EPOLLWRNORM);
kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT);
}
Thanks for the quick review,
--breno
prev parent reply other threads:[~2026-09-16 11:31 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-16 8:37 [PATCH] splice: pass a poll key when waking pipe readers and writers Breno Leitao
2026-09-16 10:57 ` Oleg Nesterov
2026-09-16 11:31 ` Breno Leitao [this message]
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=aqp9tGsFAFGJb8Pl@gmail.com \
--to=leitao@debian.org \
--cc=brauner@kernel.org \
--cc=jack@suse.cz \
--cc=kernel-team@meta.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mjguzik@gmail.com \
--cc=oleg@redhat.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.