@@ -884,7 +884,10 @@ static int _nfs4_pnfs_v4_ds_connect(struct nfs_server *mds_srv,
884884 u32 minor_version )
885885{
886886 struct nfs_client * clp = ERR_PTR (- EIO );
887+ struct nfs_client * mds_clp = mds_srv -> nfs_client ;
888+ enum xprtsec_policies xprtsec_policy = mds_clp -> cl_xprtsec .policy ;
887889 struct nfs4_pnfs_ds_addr * da ;
890+ int ds_proto ;
888891 int status = 0 ;
889892
890893 dprintk ("--> %s DS %s\n" , __func__ , ds -> ds_remotestr );
@@ -912,12 +915,8 @@ static int _nfs4_pnfs_v4_ds_connect(struct nfs_server *mds_srv,
912915 .data = & xprtdata ,
913916 };
914917
915- if (da -> da_transport != clp -> cl_proto &&
916- clp -> cl_proto != XPRT_TRANSPORT_TCP_TLS )
917- continue ;
918- if (da -> da_transport == XPRT_TRANSPORT_TCP &&
919- mds_srv -> nfs_client -> cl_proto ==
920- XPRT_TRANSPORT_TCP_TLS ) {
918+ if (xprt_args .ident == XPRT_TRANSPORT_TCP &&
919+ clp -> cl_proto == XPRT_TRANSPORT_TCP_TLS ) {
921920 struct sockaddr * addr =
922921 (struct sockaddr * )& da -> da_addr ;
923922 struct sockaddr_in * sin =
@@ -948,7 +947,10 @@ static int _nfs4_pnfs_v4_ds_connect(struct nfs_server *mds_srv,
948947 xprt_args .ident = XPRT_TRANSPORT_TCP_TLS ;
949948 xprt_args .servername = servername ;
950949 }
951- if (da -> da_addr .ss_family != clp -> cl_addr .ss_family )
950+ if (xprt_args .ident != clp -> cl_proto )
951+ continue ;
952+ if (xprt_args .dstaddr -> sa_family !=
953+ clp -> cl_addr .ss_family )
952954 continue ;
953955
954956 /**
@@ -962,15 +964,14 @@ static int _nfs4_pnfs_v4_ds_connect(struct nfs_server *mds_srv,
962964 if (xprtdata .cred )
963965 put_cred (xprtdata .cred );
964966 } else {
965- if (da -> da_transport == XPRT_TRANSPORT_TCP &&
966- mds_srv -> nfs_client -> cl_proto ==
967- XPRT_TRANSPORT_TCP_TLS )
968- da -> da_transport = XPRT_TRANSPORT_TCP_TLS ;
969- clp = nfs4_set_ds_client (mds_srv ,
970- & da -> da_addr ,
971- da -> da_addrlen ,
972- da -> da_transport , timeo ,
973- retrans , minor_version );
967+ ds_proto = da -> da_transport ;
968+ if (ds_proto == XPRT_TRANSPORT_TCP &&
969+ xprtsec_policy != RPC_XPRTSEC_NONE )
970+ ds_proto = XPRT_TRANSPORT_TCP_TLS ;
971+
972+ clp = nfs4_set_ds_client (mds_srv , & da -> da_addr ,
973+ da -> da_addrlen , ds_proto ,
974+ timeo , retrans , minor_version );
974975 if (IS_ERR (clp ))
975976 continue ;
976977
@@ -981,7 +982,6 @@ static int _nfs4_pnfs_v4_ds_connect(struct nfs_server *mds_srv,
981982 clp = ERR_PTR (- EIO );
982983 continue ;
983984 }
984-
985985 }
986986 }
987987
0 commit comments