From: Simon Horman <horms@kernel.org>
To: Allison Henderson <achender@kernel.org>
Cc: netdev@vger.kernel.org, linux-rdma@vger.kernel.org,
pabeni@redhat.com, edumazet@google.com, kuba@kernel.org,
jhubbard@nvidia.com, woni9911@gmail.com, michal.kubiak@intel.com,
leon@kernel.org
Subject: Re: [PATCH net] net/rds: use wq_has_sleeper() in rds_cong_map_updated()
Date: Mon, 24 Aug 2026 17:55:50 +0100 [thread overview]
Message-ID: <20260824165550.GZ265046@horms.kernel.org> (raw)
In-Reply-To: <20260822052647.88318-1-achender@kernel.org>
On Fri, Aug 21, 2026 at 10:26:47PM -0700, Allison Henderson wrote:
> rds_cong_map_updated() runs after a peer's congestion map has been
> rewritten (by rds_tcp_cong_recv() and rds_ib_cong_recv(), or the
> clear-all in the loopback and IB send-completion paths). It bumps
> rds_cong_generation and then checks waitqueue_active() on
> map->m_waitq and on rds_poll_waitq to decide whether anyone needs
> waking. atomic_inc() carries no ordering and waitqueue_active() is a
> plain load, so nothing orders the map and generation stores before
> the wait queue reads. The waiters do the mirror image: rds_cong_wait()
> adds itself to m_waitq and then tests the port bit, and rds_poll()
> registers on rds_poll_waitq and then reads the generation. That is
> the store-buffering pattern described above waitqueue_active() in
> include/linux/wait.h - the updater can observe an empty wait queue
> while the waiter still observes the port as congested, and no wake-up
> is issued.
>
> rds_cong_wait() is an interruptible sleep with no timeout, so a
> sender blocked on a congested port stays blocked until the next
> congestion update from that peer arrives or a signal is delivered.
> A poll() waiter misses the map-updated notification the same way.
>
> Use wq_has_sleeper(), which is waitqueue_active() preceded by the
> required full barrier, as rds_tcp_state_change() already does for
> the same pattern.
>
> Fixes: 922cb17a5c81 ("RDS: Congestion-handling code")
> Assisted-by: Claude-Code:claude-fable-5
> Signed-off-by: Allison Henderson <achender@kernel.org>
> ---
> Raised during review of "net/rds: own the fastpath locks across
> connection teardown", whose first patch fixes the same pattern in
> release_in_xmit():
> https://lore.kernel.org/netdev/20260820133832.5384be37@kernel.org/
> This patch is independent of that set and applies on its own.
Reviewed-by: Simon Horman <horms@kernel.org>
next prev parent reply other threads:[~2026-08-24 16:55 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-22 5:26 [PATCH net] net/rds: use wq_has_sleeper() in rds_cong_map_updated() Allison Henderson
2026-08-24 16:55 ` Simon Horman [this message]
2026-08-24 19:10 ` patchwork-bot+netdevbpf
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=20260824165550.GZ265046@horms.kernel.org \
--to=horms@kernel.org \
--cc=achender@kernel.org \
--cc=edumazet@google.com \
--cc=jhubbard@nvidia.com \
--cc=kuba@kernel.org \
--cc=leon@kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=michal.kubiak@intel.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=woni9911@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