]> Git Repo - linux.git/commitdiff
Merge tag 'nfs-for-3.6-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
authorLinus Torvalds <[email protected]>
Wed, 1 Aug 2012 01:45:44 +0000 (18:45 -0700)
committerLinus Torvalds <[email protected]>
Wed, 1 Aug 2012 01:45:44 +0000 (18:45 -0700)
Pull second wave of NFS client updates from Trond Myklebust:

 - Patches from Bryan to allow splitting of the NFSv2/v3/v4 code into
   separate modules.

 - Fix Oopses in the NFSv4 idmapper

 - Fix a deadlock whereby rpciod tries to allocate a new socket and ends
   up recursing into the NFS code due to memory reclaim.

 - Increase the number of permitted callback connections.

* tag 'nfs-for-3.6-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
  nfs: explicitly reject LOCK_MAND flock() requests
  nfs: increase number of permitted callback connections.
  SUNRPC: return negative value in case rpcbind client creation error
  NFS: Convert v4 into a module
  NFS: Convert v3 into a module
  NFS: Convert v2 into a module
  NFS: Keep module parameters in the generic NFS client
  NFS: Split out remaining NFS v4 inode functions
  NFS: Pass super operations and xattr handlers in the nfs_subversion
  NFS: Only initialize the ACL client in the v3 case
  NFS: Create a try_mount rpc op
  NFS: Remove the NFS v4 xdev mount function
  NFS: Add version registering framework
  NFS: Fix a number of bugs in the idmapper
  nfs: skip commit in releasepage if we're freeing memory for fs-related reasons
  sunrpc: clarify comments on rpc_make_runnable
  pnfsblock: bail out partial page IO

1  2 
net/sunrpc/xprtsock.c

diff --combined net/sunrpc/xprtsock.c
index 62d0dac8f7807f9fbfbe3fbc10315e5386197b89,b88c6bf657baaf5483a329e3c5c37b6d6416e46c..926679459e7179758b91eaf6caf6bcfe5b3c0f98
@@@ -1014,6 -1014,9 +1014,6 @@@ static void xs_udp_data_ready(struct so
  
        UDPX_INC_STATS_BH(sk, UDP_MIB_INDATAGRAMS);
  
 -      /* Something worked... */
 -      dst_confirm(skb_dst(skb));
 -
        xprt_adjust_cwnd(task, copied);
        xprt_complete_rqst(task, copied);
  
@@@ -1892,6 -1895,8 +1892,8 @@@ static void xs_local_setup_socket(struc
        if (xprt->shutdown)
                goto out;
  
+       current->flags |= PF_FSTRANS;
        clear_bit(XPRT_CONNECTION_ABORT, &xprt->state);
        status = __sock_create(xprt->xprt_net, AF_LOCAL,
                                        SOCK_STREAM, 0, &sock, 1);
  out:
        xprt_clear_connecting(xprt);
        xprt_wake_pending_tasks(xprt, status);
+       current->flags &= ~PF_FSTRANS;
  }
  
  static void xs_udp_finish_connecting(struct rpc_xprt *xprt, struct socket *sock)
@@@ -1967,6 -1973,8 +1970,8 @@@ static void xs_udp_setup_socket(struct 
        if (xprt->shutdown)
                goto out;
  
+       current->flags |= PF_FSTRANS;
        /* Start by resetting any existing state */
        xs_reset_transport(transport);
        sock = xs_create_sock(xprt, transport,
  out:
        xprt_clear_connecting(xprt);
        xprt_wake_pending_tasks(xprt, status);
+       current->flags &= ~PF_FSTRANS;
  }
  
  /*
@@@ -2110,6 -2119,8 +2116,8 @@@ static void xs_tcp_setup_socket(struct 
        if (xprt->shutdown)
                goto out;
  
+       current->flags |= PF_FSTRANS;
        if (!sock) {
                clear_bit(XPRT_CONNECTION_ABORT, &xprt->state);
                sock = xs_create_sock(xprt, transport,
        case -EINPROGRESS:
        case -EALREADY:
                xprt_clear_connecting(xprt);
+               current->flags &= ~PF_FSTRANS;
                return;
        case -EINVAL:
                /* Happens, for instance, if the user specified a link
@@@ -2171,6 -2183,7 +2180,7 @@@ out_eagain
  out:
        xprt_clear_connecting(xprt);
        xprt_wake_pending_tasks(xprt, status);
+       current->flags &= ~PF_FSTRANS;
  }
  
  /**
This page took 0.077358 seconds and 4 git commands to generate.