[RFC PATCH 0/3] RDMA/smbdirect: introduce and use rdma_restrict_node_type()
Stefan Metzmacher
metze at samba.org
Tue Feb 3 15:25:35 UTC 2026
Am 28.01.26 um 15:11 schrieb Leon Romanovsky:
> On Wed, Jan 21, 2026 at 09:07:10PM +0100, Stefan Metzmacher wrote:
>> Hi,
>>
>> for smbdirect it required to use different ports depending
>> on the RDMA protocol. E.g. for iWarp 5445 is needed
>> (as tcp port 445 already used by the raw tcp transport for SMB),
>> while InfiniBand, RoCEv1 and RoCEv2 use port 445, as they
>> use an independent port range (even for RoCEv2, which uses udp
>> port 4791 itself).
>>
>> Currently ksmbd is not able to function correctly at
>> all if the system has iWarp (RDMA_NODE_RNIC) interface(s)
>> and any InfiniBand, RoCEv1 and/or RoCEv2 interface(s)
>> at the same time.
>>
>> And cifs.ko uses 5445 with a fallback to 445, which
>> means depending on the available interfaces, it tries
>> 5445 in the RoCE range or may tries iWarp with 445
>> as a fallback. This leads to strange error messages
>> and strange network captures.
>>
>> To avoid these problems they will be able to
>> use rdma_restrict_node_type(RDMA_NODE_RNIC) before
>> trying port 5445 and rdma_restrict_node_type(RDMA_NODE_IB_CA)
>> before trying port 445. It means we'll get early
>> -ENODEV early from rdma_resolve_addr() without any
>> network traffic and timeouts.
>>
>> This is marked as RFC as I want to get feedback
>> if the rdma_restrict_node_type() function is acceptable
>> for the RDMA layer. And because the current form of
>> the smb patches are not tested, I only tested the
>> rdma part with my branch the prepares IPPROTO_SMBDIRECT
>> sockets.
>>
>> I'm not sure if this would be acceptable for 6.19
>> in order to avoid the smb layer problems, if the
>> RDMA layer change is only acceptable for 7.0 that's
>> also fine.
>>
>> This is based on the following fix applied:
>> smb: server: reset smb_direct_port = SMB_DIRECT_PORT_INFINIBAND on init
>> https://lore.kernel.org/linux-cifs/20251208154919.934760-1-metze@samba.org/
>> It's not yet in Linus' tree, so if this gets ready
>> before it's merged we can squash it.
>>
>> Stefan Metzmacher (3):
>> RDMA/core: introduce rdma_restrict_node_type()
>> smb: client: make use of rdma_restrict_node_type()
>> smb: server: make use of rdma_restrict_node_type()
>
> The approach looks reasonable.
Thanks!
> Do you want me to take it through RDMA
> tree?
As I also have other smb patches on top changing/using
it I guess it would be easier if Steve would take them.
Steve, Leon what do you think?
Thanks!
metze
More information about the samba-technical
mailing list