]> err.no Git - linux-2.6/blobdiff - fs/lockd/svc.c
svc: Make close transport independent
[linux-2.6] / fs / lockd / svc.c
index 82e2192a0d5c873a72b867702c511b0c8872f6a7..a8e79a9072021abbaee60326f0c40162788169b0 100644 (file)
@@ -219,13 +219,12 @@ lockd(struct svc_rqst *rqstp)
        module_put_and_exit(0);
 }
 
-
-static int find_socket(struct svc_serv *serv, int proto)
+static int find_xprt(struct svc_serv *serv, char *proto)
 {
-       struct svc_sock *svsk;
+       struct svc_xprt *xprt;
        int found = 0;
-       list_for_each_entry(svsk, &serv->sv_permsocks, sk_list)
-               if (svsk->sk_sk->sk_protocol == proto) {
+       list_for_each_entry(xprt, &serv->sv_permsocks, xpt_list)
+               if (strcmp(xprt->xpt_class->xcl_name, proto) == 0) {
                        found = 1;
                        break;
                }
@@ -243,13 +242,13 @@ static int make_socks(struct svc_serv *serv, int proto)
        int err = 0;
 
        if (proto == IPPROTO_UDP || nlm_udpport)
-               if (!find_socket(serv, IPPROTO_UDP))
-                       err = svc_makesock(serv, IPPROTO_UDP, nlm_udpport,
-                                               SVC_SOCK_DEFAULTS);
+               if (!find_xprt(serv, "udp"))
+                       err = svc_create_xprt(serv, "udp", nlm_udpport,
+                                             SVC_SOCK_DEFAULTS);
        if (err >= 0 && (proto == IPPROTO_TCP || nlm_tcpport))
-               if (!find_socket(serv, IPPROTO_TCP))
-                       err = svc_makesock(serv, IPPROTO_TCP, nlm_tcpport,
-                                               SVC_SOCK_DEFAULTS);
+               if (!find_xprt(serv, "tcp"))
+                       err = svc_create_xprt(serv, "tcp", nlm_tcpport,
+                                             SVC_SOCK_DEFAULTS);
 
        if (err >= 0) {
                warned = 0;