mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
NFS client updates for Linux 3.6
Features include: - 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. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIcBAABAgAGBQJQGF+vAAoJEGcL54qWCgDy6ncP/jKVl/Yjz6i1b/8QtC0EmYFb XNwbjZicNupVM98XPLm+sfdWxvoGiHSMbwG8t/hx5Z6CteM18adeGNO1KqP9xQyg scPvFmqj5VJNHsHztcHIFHFYdpsuJqRKcW3TA2l8AkNOm6uBcnXArRosYN6LrXik hI/jWcyv8wZuooSQrLf463JK37t/s6LuUQo6jKP4582sbANHvPdLkHFCYg3yt1Sk 2IIo2CLLs2cJUswGJnsHT76Jxfvh21NdGtvydjVjpr4H0/LY5GykBc23AAL9TWj6 KlegDO902hLzEE93xazF59hQZrPuwBi3quEMJ3X0mjdNQWb4G96s/t2hmwpTjWyc mjpRsuaGlCXDxcrI5dnU52hqKa0Ju1ipbLpghxSVfilRy998xvGp5Yc6ADU+pYnt uP09lamCyjFEa+gDSqGt7lv4dFmdPJjWZdkXLPv0ah5sXVMYAT8NRLUfiE1+hLLu zKaM84PHSEvykFeJ2WvjDTgF3L55y3x6L3LN4UkKmfO5nqQf7csPcquU1NfHh25S jjKGq2SKGoYG1l6FwK3hemup5cnFUEX78E2QeLrmaHg92fJDGrz587i6MPc5jrSe sOSX/CpuCJd4VhodIo8T00me0GZSHEU7RP2KEc518ZvrPmz13avXeLeG9nYhjuxM cV9Ex8zh2Y4aiUXCy3uA =KSix -----END PGP SIGNATURE----- Merge tag 'nfs-for-3.6-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs 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
This commit is contained in:
commit
6dbb35b0a7
40 changed files with 725 additions and 403 deletions
|
|
@ -251,7 +251,7 @@ static int rpcb_create_local_unix(struct net *net)
|
|||
if (IS_ERR(clnt)) {
|
||||
dprintk("RPC: failed to create AF_LOCAL rpcbind "
|
||||
"client (errno %ld).\n", PTR_ERR(clnt));
|
||||
result = -PTR_ERR(clnt);
|
||||
result = PTR_ERR(clnt);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
@ -298,7 +298,7 @@ static int rpcb_create_local_net(struct net *net)
|
|||
if (IS_ERR(clnt)) {
|
||||
dprintk("RPC: failed to create local rpcbind "
|
||||
"client (errno %ld).\n", PTR_ERR(clnt));
|
||||
result = -PTR_ERR(clnt);
|
||||
result = PTR_ERR(clnt);
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -300,8 +300,9 @@ EXPORT_SYMBOL_GPL(__rpc_wait_for_completion_task);
|
|||
/*
|
||||
* Make an RPC task runnable.
|
||||
*
|
||||
* Note: If the task is ASYNC, this must be called with
|
||||
* the spinlock held to protect the wait queue operation.
|
||||
* Note: If the task is ASYNC, and is being made runnable after sitting on an
|
||||
* rpc_wait_queue, this must be called with the queue spinlock held to protect
|
||||
* the wait queue operation.
|
||||
*/
|
||||
static void rpc_make_runnable(struct rpc_task *task)
|
||||
{
|
||||
|
|
@ -790,7 +791,9 @@ void rpc_execute(struct rpc_task *task)
|
|||
|
||||
static void rpc_async_schedule(struct work_struct *work)
|
||||
{
|
||||
current->flags |= PF_FSTRANS;
|
||||
__rpc_execute(container_of(work, struct rpc_task, u.tk_work));
|
||||
current->flags &= ~PF_FSTRANS;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -200,6 +200,7 @@ xprt_rdma_connect_worker(struct work_struct *work)
|
|||
int rc = 0;
|
||||
|
||||
if (!xprt->shutdown) {
|
||||
current->flags |= PF_FSTRANS;
|
||||
xprt_clear_connected(xprt);
|
||||
|
||||
dprintk("RPC: %s: %sconnect\n", __func__,
|
||||
|
|
@ -212,10 +213,10 @@ xprt_rdma_connect_worker(struct work_struct *work)
|
|||
|
||||
out:
|
||||
xprt_wake_pending_tasks(xprt, rc);
|
||||
|
||||
out_clear:
|
||||
dprintk("RPC: %s: exit\n", __func__);
|
||||
xprt_clear_connecting(xprt);
|
||||
current->flags &= ~PF_FSTRANS;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1892,6 +1892,8 @@ static void xs_local_setup_socket(struct work_struct *work)
|
|||
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);
|
||||
|
|
@ -1925,6 +1927,7 @@ static void xs_local_setup_socket(struct work_struct *work)
|
|||
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 +1970,8 @@ static void xs_udp_setup_socket(struct work_struct *work)
|
|||
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,
|
||||
|
|
@ -1985,6 +1990,7 @@ static void xs_udp_setup_socket(struct work_struct *work)
|
|||
out:
|
||||
xprt_clear_connecting(xprt);
|
||||
xprt_wake_pending_tasks(xprt, status);
|
||||
current->flags &= ~PF_FSTRANS;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -2110,6 +2116,8 @@ static void xs_tcp_setup_socket(struct work_struct *work)
|
|||
if (xprt->shutdown)
|
||||
goto out;
|
||||
|
||||
current->flags |= PF_FSTRANS;
|
||||
|
||||
if (!sock) {
|
||||
clear_bit(XPRT_CONNECTION_ABORT, &xprt->state);
|
||||
sock = xs_create_sock(xprt, transport,
|
||||
|
|
@ -2159,6 +2167,7 @@ static void xs_tcp_setup_socket(struct work_struct *work)
|
|||
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 +2180,7 @@ out_eagain:
|
|||
out:
|
||||
xprt_clear_connecting(xprt);
|
||||
xprt_wake_pending_tasks(xprt, status);
|
||||
current->flags &= ~PF_FSTRANS;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue