diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-22 15:53:06 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-22 15:53:06 -0400 |
commit | df36b439c5fedefe013d4449cb6a50d15e2f4d70 (patch) | |
tree | 537c58db778cbf11b74e28091f89d1b8139fb84d /net/sunrpc/svcsock.c | |
parent | a9b011f5ac57cbaedb32a8149f3d39d7b2c1f0e0 (diff) | |
parent | e9f029855865e917821ef6034b31e340a4cfc815 (diff) |
Merge branch 'for-2.6.31' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6
* 'for-2.6.31' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (128 commits)
nfs41: sunrpc: xprt_alloc_bc_request() should not use spin_lock_bh()
nfs41: Move initialization of nfs4_opendata seq_res to nfs4_init_opendata_res
nfs: remove unnecessary NFS_INO_INVALID_ACL checks
NFS: More "sloppy" parsing problems
NFS: Invalid mount option values should always fail, even with "sloppy"
NFS: Remove unused XDR decoder functions
NFS: Update MNT and MNT3 reply decoding functions
NFS: add XDR decoder for mountd version 3 auth-flavor lists
NFS: add new file handle decoders to in-kernel mountd client
NFS: Add separate mountd status code decoders for each mountd version
NFS: remove unused function in fs/nfs/mount_clnt.c
NFS: Use xdr_stream-based XDR encoder for MNT's dirpath argument
NFS: Clean up MNT program definitions
lockd: Don't bother with RPC ping for NSM upcalls
lockd: Update NSM state from SM_MON replies
NFS: Fix false error return from nfs_callback_up() if ipv6.ko is not available
NFS: Return error code from nfs_callback_up() to user space
NFS: Do not display the setting of the "intr" mount option
NFS: add support for splice writes
nfs41: Backchannel: CB_SEQUENCE validation
...
Diffstat (limited to 'net/sunrpc/svcsock.c')
-rw-r--r-- | net/sunrpc/svcsock.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c index 9d504234af4a..a2a03e500533 100644 --- a/net/sunrpc/svcsock.c +++ b/net/sunrpc/svcsock.c | |||
@@ -1327,3 +1327,42 @@ static void svc_sock_free(struct svc_xprt *xprt) | |||
1327 | sock_release(svsk->sk_sock); | 1327 | sock_release(svsk->sk_sock); |
1328 | kfree(svsk); | 1328 | kfree(svsk); |
1329 | } | 1329 | } |
1330 | |||
1331 | /* | ||
1332 | * Create a svc_xprt. | ||
1333 | * | ||
1334 | * For internal use only (e.g. nfsv4.1 backchannel). | ||
1335 | * Callers should typically use the xpo_create() method. | ||
1336 | */ | ||
1337 | struct svc_xprt *svc_sock_create(struct svc_serv *serv, int prot) | ||
1338 | { | ||
1339 | struct svc_sock *svsk; | ||
1340 | struct svc_xprt *xprt = NULL; | ||
1341 | |||
1342 | dprintk("svc: %s\n", __func__); | ||
1343 | svsk = kzalloc(sizeof(*svsk), GFP_KERNEL); | ||
1344 | if (!svsk) | ||
1345 | goto out; | ||
1346 | |||
1347 | xprt = &svsk->sk_xprt; | ||
1348 | if (prot == IPPROTO_TCP) | ||
1349 | svc_xprt_init(&svc_tcp_class, xprt, serv); | ||
1350 | else if (prot == IPPROTO_UDP) | ||
1351 | svc_xprt_init(&svc_udp_class, xprt, serv); | ||
1352 | else | ||
1353 | BUG(); | ||
1354 | out: | ||
1355 | dprintk("svc: %s return %p\n", __func__, xprt); | ||
1356 | return xprt; | ||
1357 | } | ||
1358 | EXPORT_SYMBOL_GPL(svc_sock_create); | ||
1359 | |||
1360 | /* | ||
1361 | * Destroy a svc_sock. | ||
1362 | */ | ||
1363 | void svc_sock_destroy(struct svc_xprt *xprt) | ||
1364 | { | ||
1365 | if (xprt) | ||
1366 | kfree(container_of(xprt, struct svc_sock, sk_xprt)); | ||
1367 | } | ||
1368 | EXPORT_SYMBOL_GPL(svc_sock_destroy); | ||