add file position info to proc
[powerpc.git] / fs / nfs / callback.c
index 7933e2e..75f309c 100644 (file)
@@ -71,6 +71,8 @@ static void nfs_callback_svc(struct svc_rqst *rqstp)
        complete(&nfs_callback_info.started);
 
        for(;;) {
+               char buf[RPC_MAX_ADDRBUFLEN];
+
                if (signalled()) {
                        if (nfs_callback_info.users == 0)
                                break;
@@ -88,8 +90,8 @@ static void nfs_callback_svc(struct svc_rqst *rqstp)
                                        __FUNCTION__, -err);
                        break;
                }
-               dprintk("%s: request from %u.%u.%u.%u\n", __FUNCTION__,
-                               NIPQUAD(rqstp->rq_addr.sin_addr.s_addr));
+               dprintk("%s: request from %s\n", __FUNCTION__,
+                               svc_print_addr(rqstp, buf, sizeof(buf)));
                svc_process(rqstp);
        }
 
@@ -106,7 +108,6 @@ static void nfs_callback_svc(struct svc_rqst *rqstp)
 int nfs_callback_up(void)
 {
        struct svc_serv *serv;
-       struct svc_sock *svsk;
        int ret = 0;
 
        lock_kernel();
@@ -119,17 +120,14 @@ int nfs_callback_up(void)
        ret = -ENOMEM;
        if (!serv)
                goto out_err;
-       /* FIXME: We don't want to register this socket with the portmapper */
-       ret = svc_makesock(serv, IPPROTO_TCP, nfs_callback_set_tcpport);
-       if (ret < 0)
+
+       ret = svc_makesock(serv, IPPROTO_TCP, nfs_callback_set_tcpport,
+                                                       SVC_SOCK_ANONYMOUS);
+       if (ret <= 0)
                goto out_destroy;
-       if (!list_empty(&serv->sv_permsocks)) {
-               svsk = list_entry(serv->sv_permsocks.next,
-                               struct svc_sock, sk_list);
-               nfs_callback_tcpport = ntohs(inet_sk(svsk->sk_sk)->sport);
-               dprintk ("Callback port = 0x%x\n", nfs_callback_tcpport);
-       } else
-               BUG();
+       nfs_callback_tcpport = ret;
+       dprintk("Callback port = 0x%x\n", nfs_callback_tcpport);
+
        ret = svc_create_thread(nfs_callback_svc, serv);
        if (ret < 0)
                goto out_destroy;
@@ -140,6 +138,8 @@ out:
        unlock_kernel();
        return ret;
 out_destroy:
+       dprintk("Couldn't create callback socket or server thread; err = %d\n",
+               ret);
        svc_destroy(serv);
 out_err:
        nfs_callback_info.users--;
@@ -166,15 +166,19 @@ void nfs_callback_down(void)
 
 static int nfs_callback_authenticate(struct svc_rqst *rqstp)
 {
-       struct sockaddr_in *addr = &rqstp->rq_addr;
+       struct sockaddr_in *addr = svc_addr_in(rqstp);
        struct nfs_client *clp;
+       char buf[RPC_MAX_ADDRBUFLEN];
 
        /* Don't talk to strangers */
        clp = nfs_find_client(addr, 4);
        if (clp == NULL)
                return SVC_DROP;
-       dprintk("%s: %u.%u.%u.%u NFSv4 callback!\n", __FUNCTION__, NIPQUAD(addr->sin_addr));
+
+       dprintk("%s: %s NFSv4 callback!\n", __FUNCTION__,
+                       svc_print_addr(rqstp, buf, sizeof(buf)));
        nfs_put_client(clp);
+
        switch (rqstp->rq_authop->flavour) {
                case RPC_AUTH_NULL:
                        if (rqstp->rq_proc != CB_NULL)