From: Leon Romanovsky <leon@kernel.org>
To: Ammar Ratnani <ammrat13@gmail.com>
Cc: linux-rdma@vger.kernel.org, Jason Gunthorpe <jgg@ziepe.ca>,
Namjae Jeon <linkinjeon@kernel.org>,
Paulo Alcantara <pc@manguebit.org>,
Stefan Metzmacher <metze@samba.org>, Tom Talpey <tom@talpey.com>,
linux-cifs@vger.kernel.org, samba-technical@lists.samba.org,
linux-kernel@vger.kernel.org, Ammar Ratnani <aratnani@nvidia.com>,
Kechen Lu <kechenl@nvidia.com>,
Mithun Maragiri <mmaragiri@nvidia.com>
Subject: Re: [PATCH 0/2] smbdirect: don't hang on netdev reconfiguration
Date: Tue, 22 Sep 2026 16:22:09 +0300 [thread overview]
Message-ID: <20260922132209.GI563127@unreal> (raw)
In-Reply-To: <20260908154454.10966-1-ammrat13@gmail.com>
On Tue, Sep 08, 2026 at 08:44:25AM -0700, Ammar Ratnani wrote:
> When I mount a CIFS share using SMB Direct over RoCEv2, I observe a kernel
> thread hang if I "configure" its slave network device by taking its link
> down and bringing it back up. Attempting to just `ls` the mount point in
> this state gives EHOSTDOWN.
>
> I believe the following is the root-cause of the hang: When the link is
> taken down, the corresponding GID Table Entry is marked as pending deletion
> and has its slave ndev set to NULL. All sends on RDMA connections still
> using that GID Table Entry fail at MAD creation. SMB Direct eventually
> detects this and tries to disconnect / reconnect to recover. Unfortunately,
> disconnecting requires successfully sending either a DREQ or a DREP. Since
> neither of them even post, the connection remains in the RDMA_CM_CONNECT
> state, and no callback moves it out. The SMB Direct layer never gets the
> RDMA_CM_EVENT_DISCONNECTED it's waiting for, and hangs.
>
> Fix this in the CMA. If we call `rdma_disconnect` on a connected connection
> and we fail to send both a DREP and a DREQ; disconnect, and thereby send
> the `RDMA_CM_EVENT_DISCONNECTED` event to SMB Direct.
>
> I tested this change in QEMU using RXE. I ran Ubuntu 26.04.1 with a
> mainline kernel. On commit 9f0346dcbea3 ("Merge tag 'driver-core-7.3-rc2'
> of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core"),
> I reproduce the hang. With this patch applied, SMB Direct immediately
> disconnects and reconnects when the slave device is brought down then up.
> Listing and reading files from the mount point also work afterwards.
>
> Artifacts for reproducing the hang and testing my fix are available at
>
> https://github.com/ammrat13/linux-cifs
>
> There, you can find: logs from the "bad" and "good" kernels, the kernel
> configuration, the VMs' configuration, and a playbook to trigger the hang.
>
> Ammar Ratnani (2):
> infiniband: force disconnect if DREP and DREQ fail
> infiniband: trace force disconnections
I squashed the second patch into the first one, fixed the subject, removed
the useless AI-generated comments, placed trace call into right place, and
pushed the result.
Thanks
>
> drivers/infiniband/core/cma.c | 41 ++++++++++++++++++++++++++---
> drivers/infiniband/core/cma_trace.h | 1 +
> 2 files changed, 38 insertions(+), 4 deletions(-)
>
> --
> 2.55.0
prev parent reply other threads:[~2026-09-22 13:22 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-08 15:44 [PATCH 0/2] smbdirect: don't hang on netdev reconfiguration Ammar Ratnani
2026-09-08 15:44 ` [PATCH 1/2] infiniband: force disconnect if DREP and DREQ fail Ammar Ratnani
2026-09-08 15:44 ` [PATCH 2/2] infiniband: trace force disconnections Ammar Ratnani
2026-09-08 16:16 ` [PATCH 0/2] smbdirect: don't hang on netdev reconfiguration Stefan Metzmacher
2026-09-09 8:13 ` Ammar Ratnani
2026-09-14 11:46 ` Leon Romanovsky
2026-09-22 13:20 ` Leon Romanovsky
2026-09-22 13:22 ` Leon Romanovsky [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=20260922132209.GI563127@unreal \
--to=leon@kernel.org \
--cc=ammrat13@gmail.com \
--cc=aratnani@nvidia.com \
--cc=jgg@ziepe.ca \
--cc=kechenl@nvidia.com \
--cc=linkinjeon@kernel.org \
--cc=linux-cifs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=metze@samba.org \
--cc=mmaragiri@nvidia.com \
--cc=pc@manguebit.org \
--cc=samba-technical@lists.samba.org \
--cc=tom@talpey.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