]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
pnfs/flexfiles: connect to NFSv3 DS using TLS if MDS connection uses TLS
authorMike Snitzer <snitzer@kernel.org>
Fri, 9 May 2025 20:39:49 +0000 (16:39 -0400)
committerAnna Schumaker <anna.schumaker@oracle.com>
Wed, 28 May 2025 21:17:13 +0000 (17:17 -0400)
Implementation follows bones of the pattern that was established in
commit a35518cae4b325 ("NFSv4.1/pnfs: fix NFS with TLS in pnfs").

Signed-off-by: Mike Snitzer <snitzer@kernel.org>
Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
fs/nfs/pnfs_nfs.c

index 91ef486f40b943a1dc55164e610378ef73781e55..b4ccdf78d4dde7480a8e4b608d9dce6b32d397da 100644 (file)
@@ -830,10 +830,16 @@ static int _nfs4_pnfs_v3_ds_connect(struct nfs_server *mds_srv,
                                .servername = clp->cl_hostname,
                                .connect_timeout = connect_timeout,
                                .reconnect_timeout = connect_timeout,
+                               .xprtsec = clp->cl_xprtsec,
                        };
 
-                       if (da->da_transport != clp->cl_proto)
+                       if (da->da_transport != clp->cl_proto &&
+                           clp->cl_proto != XPRT_TRANSPORT_TCP_TLS)
                                continue;
+                       if (da->da_transport == XPRT_TRANSPORT_TCP &&
+                           mds_srv->nfs_client->cl_proto == XPRT_TRANSPORT_TCP_TLS)
+                               xprt_args.ident = XPRT_TRANSPORT_TCP_TLS;
+
                        if (da->da_addr.ss_family != clp->cl_addr.ss_family)
                                continue;
                        /* Add this address as an alias */
@@ -841,6 +847,9 @@ static int _nfs4_pnfs_v3_ds_connect(struct nfs_server *mds_srv,
                                        rpc_clnt_test_and_add_xprt, NULL);
                        continue;
                }
+               if (da->da_transport == XPRT_TRANSPORT_TCP &&
+                   mds_srv->nfs_client->cl_proto == XPRT_TRANSPORT_TCP_TLS)
+                       da->da_transport = XPRT_TRANSPORT_TCP_TLS;
                clp = get_v3_ds_connect(mds_srv,
                                &da->da_addr,
                                da->da_addrlen, da->da_transport,