An error occurred fetching the project authors.
- 26 Jan, 2010 2 commits
-
-
Chuck Lever authored
write_ports() converts svc_create_xprt()'s ENOENT error return to EPROTONOSUPPORT so that rpc.nfsd (in user space) can report an error message that makes sense. It turns out that several of the other kernel APIs rpc.nfsd use can also return ENOENT from svc_create_xprt(), by way of lockd_up(). On the client side, an NFSv2 or NFSv3 mount request can also return the result of lockd_up(). This error may also be returned during an NFSv4 mount request, since the NFSv4 callback service uses svc_create_xprt() to create the callback listener. An ENOENT error return results in a confusing error message from the mount command. Let's have svc_create_xprt() return EPROTONOSUPPORT instead of ENOENT. Signed-off-by:
Chuck Lever <chuck.lever@oracle.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Chuck Lever authored
Clean up: Bruce observed we have more or less common logic in each of svc_create_xprt()'s callers: the check to create an IPv6 RPC listener socket only if CONFIG_IPV6 is set. I'm about to add another case that does just the same. If we move the ifdefs into __svc_xpo_create(), then svc_create_xprt() call sites can get rid of the "#ifdef" ugliness, and can use the same logic with or without IPv6 support available in the kernel. Signed-off-by:
Chuck Lever <chuck.lever@oracle.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
- 06 Jan, 2010 1 commit
-
-
Xiaotian Feng authored
There're some warnings of "nfsd: peername failed (err 107)!" socket error -107 means Transport endpoint is not connected. This warning message was outputed by svc_tcp_accept() [net/sunrpc/svcsock.c], when kernel_getpeername returns -107. This means socket might be CLOSED. And svc_tcp_accept was called by svc_recv() [net/sunrpc/svc_xprt.c] if (test_bit(XPT_LISTENER, &xprt->xpt_flags)) { <snip> newxpt = xprt->xpt_ops->xpo_accept(xprt); <snip> So this might happen when xprt->xpt_flags has both XPT_LISTENER and XPT_CLOSE. Let's take a look at commit b0401d72, this commit has moved the close processing after do recvfrom method, but this commit also introduces this warnings, if the xpt_flags has both XPT_LISTENER and XPT_CLOSED, we should close it, not accpet then close. Signed-off-by:
Xiaotian Feng <dfeng@redhat.com> Cc: J. Bruce Fields <bfields@fieldses.org> Cc: Neil Brown <neilb@suse.de> Cc: Trond Myklebust <Trond.Myklebust@netapp.com> Cc: David S. Miller <davem@davemloft.net> Cc: stable@kernel.org Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
- 30 Nov, 2009 1 commit
-
-
Joe Perches authored
Not including net/atm/ Compiled tested x86 allyesconfig only Added a > 80 column line or two, which I ignored. Existing checkpatch plaints willfully, cheerfully ignored. Signed-off-by:
Joe Perches <joe@perches.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- 23 Nov, 2009 1 commit
-
-
J. Bruce Fields authored
This reverts commit 59a252ff. This helps in an entirely cached workload but not necessarily in workloads that require waiting on disk. Conflicts: include/linux/sunrpc/svc.h net/sunrpc/svc_xprt.c Reported-by:
Simon Kirby <sim@hostway.ca> Tested-by:
Jesper Krogh <jesper@krogh.cc> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
- 11 Sep, 2009 1 commit
-
-
Rahul Iyer authored
When the call direction is a reply, copy the xid and call direction into the req->rq_private_buf.head[0].iov_base otherwise rpc_verify_header returns rpc_garbage. Signed-off-by:
Rahul Iyer <iyer@netapp.com> Signed-off-by:
Mike Sager <sager@netapp.com> Signed-off-by:
Marc Eshel <eshel@almaden.ibm.com> Signed-off-by:
Benny Halevy <bhalevy@panasas.com> Signed-off-by:
Ricardo Labiaga <Ricardo.Labiaga@netapp.com> Signed-off-by:
Andy Adamson <andros@netapp.com> Signed-off-by:
Benny Halevy <bhalevy@panasas.com> [get rid of CONFIG_NFSD_V4_1] [sunrpc: refactoring of svc_tcp_recvfrom] [nfsd41: sunrpc: create common send routine for the fore and the back channels] [nfsd41: sunrpc: Use free_page() to free server backchannel pages] [nfsd41: sunrpc: Document server backchannel locking] [nfsd41: sunrpc: remove bc_connect_worker()] [nfsd41: sunrpc: Define xprt_server_backchannel()[ [nfsd41: sunrpc: remove bc_close and bc_init_auto_disconnect dummy functions] [nfsd41: sunrpc: eliminate unneeded switch statement in xs_setup_tcp()] [nfsd41: sunrpc: Don't auto close the server backchannel connection] [nfsd41: sunrpc: Remove unused functions] Signed-off-by:
Alexandros Batsakis <batsakis@netapp.com> Signed-off-by:
Ricardo Labiaga <Ricardo.Labiaga@netapp.com> Signed-off-by:
Benny Halevy <bhalevy@panasas.com> [nfsd41: change bc_sock to bc_xprt] [nfsd41: sunrpc: move struct rpc_buffer def into a common header file] [nfsd41: sunrpc: use rpc_sleep in bc_send_request so not to block on mutex] [removed cosmetic changes] Signed-off-by:
Benny Halevy <bhalevy@panasas.com> [sunrpc: add new xprt class for nfsv4.1 backchannel] [sunrpc: v2.1 change handling of auto_close and init_auto_disconnect operations for the nfsv4.1 backchannel] Signed-off-by:
Alexandros Batsakis <batsakis@netapp.com> [reverted more cosmetic leftovers] [got rid of xprt_server_backchannel] [separated "nfsd41: sunrpc: add new xprt class for nfsv4.1 backchannel"] Signed-off-by:
Benny Halevy <bhalevy@panasas.com> Cc: Trond Myklebust <trond.myklebust@netapp.com> [sunrpc: change idle timeout value for the backchannel] Signed-off-by:
Alexandros Batsakis <batsakis@netapp.com> Signed-off-by:
Benny Halevy <bhalevy@panasas.com> Acked-by:
Trond Myklebust <trond.myklebust@netapp.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
- 27 Aug, 2009 1 commit
-
-
Wei Yongjun authored
sunrpc: "Move close processing to a single place" (d7979ae4) moved the close processing before the recvfrom method. This may cause the close processing never to execute. So this patch moves it to the right place. Signed-off-by:
Wei Yongjun <yjwei@cn.fujitsu.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
- 25 Aug, 2009 1 commit
-
-
Ryusei Yamaguchi authored
lock_kernel() in knfsd was replaced with a mutex. The later commit 03cf6c9f ("knfsd: add file to export stats about nfsd pools") did not follow that change. This patch fixes the issue. Also move the get and put of nfsd_serv to the open and close methods (instead of start and stop methods) to allow atomic check and increment of reference count in the open method (where we can still return an error). Signed-off-by:
Ryusei Yamaguchi <mandel59@gmail.com> Signed-off-by:
Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by:
YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> Cc: Greg Banks <gnb@fmeh.org> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
- 12 Jul, 2009 1 commit
-
-
Alexey Dobriyan authored
* Remove smp_lock.h from files which don't need it (including some headers!) * Add smp_lock.h to files which do need it * Make smp_lock.h include conditional in hardirq.h It's needed only for one kernel_locked() usage which is under CONFIG_PREEMPT This will make hardirq.h inclusion cheaper for every PREEMPT=n config (which includes allmodconfig/allyesconfig, BTW) Signed-off-by:
Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
-
- 28 Apr, 2009 2 commits
-
-
Chuck Lever authored
The svc_xprt_names() function can overflow its buffer if it's so near the end of the passed in buffer that the "name too long" string still doesn't fit. Of course, it could never tell if it was near the end of the passed in buffer, since its only caller passes in zero as the buffer length. Let's make this API a little safer. Change svc_xprt_names() so it *always* checks for a buffer overflow, and change its only caller to pass in the correct buffer length. If svc_xprt_names() does overflow its buffer, it now fails with an ENAMETOOLONG errno, instead of trying to write a message at the end of the buffer. I don't like this much, but I can't figure out a clean way that's always safe to return some of the names, *and* an indication that the buffer was not long enough. The displayed error when doing a 'cat /proc/fs/nfsd/portlist' is "File name too long". Signed-off-by:
Chuck Lever <chuck.lever@oracle.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
H Hartley Sweeten authored
Fix the following sparse warnings in net/sunrpc/svc_xprt.c. warning: symbol 'svc_recv' was not declared. Should it be static? warning: symbol 'svc_drop' was not declared. Should it be static? warning: symbol 'svc_send' was not declared. Should it be static? warning: symbol 'svc_close_all' was not declared. Should it be static? Signed-off-by:
H Hartley Sweeten <hsweeten@visionengravers.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
- 04 Apr, 2009 1 commit
-
-
Andy Adamson authored
On an NFSv4.1 server cache miss that causes an upcall, NFS4ERR_DELAY will be returned. It is up to the NFSv4.1 client to resend only the operations that have not been processed. Initialize rq_usedeferral to 1 in svc_process(). It sill be turned off in nfsd4_proc_compound() only when NFSv4.1 Sessions are used. Note: this isn't an adequate solution on its own. It's acceptable as a way to get some minimal 4.1 up and working, but we're going to have to find a way to avoid returning DELAY in all common cases before 4.1 can really be considered ready. Signed-off-by:
Andy Adamson <andros@netapp.com> Signed-off-by:
Benny Halevy <bhalevy@panasas.com> [nfsd41: reverse rq_nodeferral negative logic] Signed-off-by:
Benny Halevy <bhalevy@panasas.com> [sunrpc: initialize rq_usedeferral] Signed-off-by:
Andy Adamson <andros@netapp.com> Signed-off-by:
Benny Halevy <bhalevy@panasas.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
- 28 Mar, 2009 2 commits
-
-
Chuck Lever authored
The sv_family field is going away. Pass a protocol family argument to svc_create_xprt() instead of extracting the family from the passed-in svc_serv struct. Again, as this is a listener socket and not an address, we make this new argument an "int" protocol family, instead of an "sa_family_t." Signed-off-by:
Chuck Lever <chuck.lever@oracle.com> Signed-off-by:
Trond Myklebust <Trond.Myklebust@netapp.com>
-
Chuck Lever authored
Clean up: add documentating comment and use appropriate data types for svc_find_xprt()'s arguments. This also eliminates a mixed sign comparison: @port was an int, while the return value of svc_xprt_local_port() is an unsigned short. Signed-off-by:
Chuck Lever <chuck.lever@oracle.com> Signed-off-by:
Trond Myklebust <Trond.Myklebust@netapp.com>
-
- 18 Mar, 2009 2 commits
-
-
Greg Banks authored
Add /proc/fs/nfsd/pool_stats to export to userspace various statistics about the operation of rpc server thread pools. This patch is based on a forward-ported version of knfsd-add-pool-thread-stats which has been shipping in the SGI "Enhanced NFS" product since 2006 and which was previously posted: http://article.gmane.org/gmane.linux.nfs/10375 It has also been updated thus: * moved EXPORT_SYMBOL() to near the function it exports * made the new struct struct seq_operations const * used SEQ_START_TOKEN instead of ((void *)1) * merged fix from SGI PV 990526 "sunrpc: use dprintk instead of printk in svc_pool_stats_*()" by Harshula Jayasuriya. * merged fix from SGI PV 964001 "Crash reading pool_stats before nfsds are started". Signed-off-by:
Greg Banks <gnb@sgi.com> Signed-off-by:
Harshula Jayasuriya <harshula@sgi.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Greg Banks authored
Avoid overloading the CPU scheduler with enormous load averages when handling high call-rate NFS loads. When the knfsd bottom half is made aware of an incoming call by the socket layer, it tries to choose an nfsd thread and wake it up. As long as there are idle threads, one will be woken up. If there are lot of nfsd threads (a sensible configuration when the server is disk-bound or is running an HSM), there will be many more nfsd threads than CPUs to run them. Under a high call-rate low service-time workload, the result is that almost every nfsd is runnable, but only a handful are actually able to run. This situation causes two significant problems: 1. The CPU scheduler takes over 10% of each CPU, which is robbing the nfsd threads of valuable CPU time. 2. At a high enough load, the nfsd threads starve userspace threads of CPU time, to the point where daemons like portmap and rpc.mountd do not schedule for tens of seconds at a time. Clients attempting to mount an NFS filesystem timeout at the very first step (opening a TCP connection to portmap) because portmap cannot wake up from select() and call accept() in time. Disclaimer: these effects were observed on a SLES9 kernel, modern kernels' schedulers may behave more gracefully. The solution is simple: keep in each svc_pool a counter of the number of threads which have been woken but have not yet run, and do not wake any more if that count reaches an arbitrary small threshold. Testing was on a 4 CPU 4 NIC Altix using 4 IRIX clients, each with 16 synthetic client threads simulating an rsync (i.e. recursive directory listing) workload reading from an i386 RH9 install image (161480 regular files in 10841 directories) on the server. That tree is small enough to fill in the server's RAM so no disk traffic was involved. This setup gives a sustained call rate in excess of 60000 calls/sec before being CPU-bound on the server. The server was running 128 nfsds. Profiling showed schedule() taking 6.7% of every CPU, and __wake_up() taking 5.2%. This patch drops those contributions to 3.0% and 2.2%. Load average was over 120 before the patch, and 20.9 after. This patch is a forward-ported version of knfsd-avoid-nfsd-overload which has been shipping in the SGI "Enhanced NFS" product since 2006. It has been posted before: http://article.gmane.org/gmane.linux.nfs/10374Signed-off-by:
Greg Banks <gnb@sgi.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
- 07 Jan, 2009 3 commits
-
-
Trond Myklebust authored
Signed-off-by:
Trond Myklebust <Trond.Myklebust@netapp.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Tom Tucker authored
A race between svc_revisit and svc_delete_xprt can result in deferred requests holding references on a transport that can never be recovered because dead transports are not enqueued for subsequent processing. Check for XPT_DEAD in revisit to clean up completing deferrals on a dead transport and sweep a transport's deferred queue to do the same for queued but unprocessed deferrals. Signed-off-by:
Tom Tucker <tom@opengridcomputing.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Tom Tucker authored
The rqstp structure has a pointer to a svc_deferred_req record that is allocated when requests are deferred. This record is common to all transports and can be freed in common code. Move the kfree of the rq_deferred to the common svc_xprt_release function. This also fixes a memory leak in the RDMA transport which does not kfree the dr structure in it's version of the xpo_release_rqst callback. Signed-off-by:
Tom Tucker <tom@opengridcomputing.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
- 06 Jan, 2009 1 commit
-
-
Jeff Layton authored
svc_check_conn_limits() attempts to prevent denial of service attacks by having the service close old connections once it reaches a threshold. This threshold is based on the number of threads in the service: (serv->sv_nrthreads + 3) * 20 Once we reach this, we drop the oldest connections and a printk pops to warn the admin that they should increase the number of threads. Increasing the number of threads isn't an option however for services like lockd. We don't want to eliminate this check entirely for such services but we need some way to increase this limit. This patch adds a sv_maxconn field to the svc_serv struct. When it's set to 0, we use the current method to calculate the max number of connections. RPC services can then set this on an as-needed basis. Signed-off-by:
Jeff Layton <jlayton@redhat.com> Acked-by:
Neil Brown <neilb@suse.de> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
- 29 Sep, 2008 1 commit
-
-
Chuck Lever authored
Teach svc_create_xprt() to use the correct ANY address for AF_INET6 based RPC services. No caller uses AF_INET6 yet. Signed-off-by:
Chuck Lever <chuck.lever@oracle.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
- 19 May, 2008 2 commits
-
-
Tom Tucker authored
This cosmetic patch removes unused header files that svc_xprt.c inherited from svcsock.c Signed-off-by:
Tom Tucker <tom@opengridcomputing.com>
-
Tom Tucker authored
Remove a redundant check for the XPT_DEAD bit in the svc_xprt_enqueue function. This same bit is checked below while holding the pool lock and prints a debug message if found to be dead. Signed-off-by:
Tom Tucker <tom@opengridcomputing.com>
-
- 23 Apr, 2008 2 commits
-
-
Jeff Layton authored
svc_recv() calls alloc_page(), and if it fails it does a 500ms uninterruptible sleep and then reattempts. There doesn't seem to be any real reason for this to be uninterruptible, so change it to an interruptible sleep. Also check for kthread_stop() and signalled() after setting the task state to avoid races that might lead to sleeping after kthread_stop() wakes up the task. I've done some very basic smoke testing with this, but obviously it's hard to test the actual changes since this all depends on an alloc_page() call failing. Signed-off-by:
Jeff Layton <jlayton@redhat.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Jeff Layton authored
When using kthreads that call into svc_recv, we want to make sure that they do not block there for a long time when we're trying to take down the kthread. This patch changes svc_recv() to check kthread_should_stop() at the same places that it checks to see if it's signalled(). Also check just before svc_recv() tries to schedule(). By making sure that we check it just after setting the task state we can avoid having to use any locking or signalling to ensure it doesn't block for a long time. There's still a chance of a 500ms sleep if alloc_page() fails, but that should be a rare occurrence and isn't a terribly long time in the context of a kthread being taken down. Signed-off-by:
Jeff Layton <jlayton@redhat.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
- 18 Mar, 2008 1 commit
-
-
Al Viro authored
Signed-off-by:
Al Viro <viro@zeniv.linux.org.uk> Signed-off-by:
David S. Miller <davem@davemloft.net>
-
- 01 Feb, 2008 14 commits
-
-
Trond Myklebust authored
Do it for the server code... Signed-off-by:
Trond Myklebust <Trond.Myklebust@netapp.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Tom Tucker authored
Create a transport independent version of the svc_sock_names function. The toclose capability of the svc_sock_names service can be implemented using the svc_xprt_find and svc_xprt_close services. Signed-off-by:
Tom Tucker <tom@opengridcomputing.com> Acked-by:
Neil Brown <neilb@suse.de> Reviewed-by:
Chuck Lever <chuck.lever@oracle.com> Reviewed-by:
Greg Banks <gnb@sgi.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Tom Tucker authored
Update the write handler for the portlist file to allow creating new listening endpoints on a transport. The general form of the string is: <transport_name><space><port number> For example: echo "tcp 2049" > /proc/fs/nfsd/portlist This is intended to support the creation of a listening endpoint for RDMA transports without adding #ifdef code to the nfssvc.c file. Transports can also be removed as follows: '-'<transport_name><space><port number> For example: echo "-tcp 2049" > /proc/fs/nfsd/portlist Attempting to add a listener with an invalid transport string results in EPROTONOSUPPORT and a perror string of "Protocol not supported". Attempting to remove an non-existent listener (.e.g. bad proto or port) results in ENOTCONN and a perror string of "Transport endpoint is not connected" Signed-off-by:
Tom Tucker <tom@opengridcomputing.com> Acked-by:
Neil Brown <neilb@suse.de> Reviewed-by:
Chuck Lever <chuck.lever@oracle.com> Reviewed-by:
Greg Banks <gnb@sgi.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Tom Tucker authored
Add a new svc function that allows a service to query whether a transport instance has already been created. This is used in lockd to determine whether or not a transport needs to be created when a lockd instance is brought up. Specifying 0 for the address family or port is effectively a wild-card, and will result in matching the first transport in the service's list that has a matching class name. Signed-off-by:
Tom Tucker <tom@opengridcomputing.com> Acked-by:
Neil Brown <neilb@suse.de> Reviewed-by:
Chuck Lever <chuck.lever@oracle.com> Reviewed-by:
Greg Banks <gnb@sgi.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Tom Tucker authored
Add a file that when read lists the set of registered svc transports. Signed-off-by:
Tom Tucker <tom@opengridcomputing.com> Acked-by:
Neil Brown <neilb@suse.de> Reviewed-by:
Chuck Lever <chuck.lever@oracle.com> Reviewed-by:
Greg Banks <gnb@sgi.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Tom Tucker authored
Some transports have a header in front of the RPC header. The current defer/revisit processing considers only the iov_len and arg_len to determine how much to back up when saving the original request to revisit. Add a field to the rqstp structure to save the size of the transport header so svc_defer can correctly compute the start of a request. Signed-off-by:
Tom Tucker <tom@opengridcomputing.com> Acked-by:
Neil Brown <neilb@suse.de> Reviewed-by:
Chuck Lever <chuck.lever@oracle.com> Reviewed-by:
Greg Banks <gnb@sgi.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Tom Tucker authored
This functionally trivial patch moves all of the transport independent functions from the svcsock.c file to the transport independent svc_xprt.c file. In addition the following formatting changes were made: - White space cleanup - Function signatures on single line - The inline directive was removed - Lines over 80 columns were reformatted - The term 'socket' was changed to 'transport' in comments - The SMP comment was moved and updated. Signed-off-by:
Tom Tucker <tom@opengridcomputing.com> Acked-by:
Neil Brown <neilb@suse.de> Reviewed-by:
Chuck Lever <chuck.lever@oracle.com> Reviewed-by:
Greg Banks <gnb@sgi.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Tom Tucker authored
Move the svc transport list logic into common transport creation code. Refactor this code path to make the flow of control easier to read. Move the setting and clearing of the BUSY_BIT during transport creation to common code. Signed-off-by:
Tom Tucker <tom@opengridcomputing.com> Acked-by:
Neil Brown <neilb@suse.de> Reviewed-by:
Chuck Lever <chuck.lever@oracle.com> Reviewed-by:
Greg Banks <gnb@sgi.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Tom Tucker authored
This patch moves the transport sockaddr to the svc_xprt structure. Convenience functions are added to set and get the local and remote addresses of a transport from the transport provider as well as determine the length of a sockaddr. A transport is responsible for setting the xpt_local and xpt_remote addresses in the svc_xprt structure as part of transport creation and xpo_accept processing. This cannot be done in a generic way and in fact varies between TCP, UDP and RDMA. A set of xpo_ functions (e.g. getlocalname, getremotename) could have been added but this would have resulted in additional caching and copying of the addresses around. Note that the xpt_local address should also be set on listening endpoints; for TCP/RDMA this is done as part of endpoint creation. For connected transports like TCP and RDMA, the addresses never change and can be set once and copied into the rqstp structure for each request. For UDP, however, the local and remote addresses may change for each request. In this case, the address information is obtained from the UDP recvmsg info and copied into the rqstp structure from there. A svc_xprt_local_port function was also added that returns the local port given a transport. This is used by svc_create_xprt when returning the port associated with a newly created transport, and later when creating a generic find transport service to check if a service is already listening on a given port. Signed-off-by:
Tom Tucker <tom@opengridcomputing.com> Acked-by:
Neil Brown <neilb@suse.de> Reviewed-by:
Chuck Lever <chuck.lever@oracle.com> Reviewed-by:
Greg Banks <gnb@sgi.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Tom Tucker authored
This patch moves the transport independent sk_deferred list to the svc_xprt structure and updates the svc_deferred_req structure to keep pointers to svc_xprt's directly. The deferral processing code is also moved out of the transport dependent recvfrom functions and into the generic svc_recv path. Signed-off-by:
Tom Tucker <tom@opengridcomputing.com> Acked-by:
Neil Brown <neilb@suse.de> Reviewed-by:
Chuck Lever <chuck.lever@oracle.com> Reviewed-by:
Greg Banks <gnb@sgi.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Tom Tucker authored
Move the authinfo cache to svc_xprt. This allows both the TCP and RDMA transports to share this logic. A flag bit is used to determine if auth information is to be cached or not. Previously, this code looked at the transport protocol. I've also changed the spin_lock/unlock logic so that a lock is not taken for transports that are not caching auth info. Signed-off-by:
Tom Tucker <tom@opengridcomputing.com> Acked-by:
Neil Brown <neilb@suse.de> Reviewed-by:
Chuck Lever <chuck.lever@oracle.com> Reviewed-by:
Greg Banks <gnb@sgi.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Tom Tucker authored
Move the sk_mutex field to the transport independent svc_xprt structure. Now all the fields that svc_send touches are transport neutral. Change the svc_send function to use the transport independent svc_xprt directly instead of the transport dependent svc_sock structure. Signed-off-by:
Tom Tucker <tom@opengridcomputing.com> Acked-by:
Neil Brown <neilb@suse.de> Reviewed-by:
Chuck Lever <chuck.lever@oracle.com> Reviewed-by:
Greg Banks <gnb@sgi.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-
Tom Tucker authored
Move sk_list and sk_ready to svc_xprt. This involves close because these lists are walked by svcs when closing all their transports. So I combined the moving of these lists to svc_xprt with making close transport independent. The svc_force_sock_close has been changed to svc_close_all and takes a list as an argument. This removes some svc internals knowledge from the svcs. This code races with module removal and transport addition. Thanks to Simon Holm Thøgersen for a compile fix. Signed-off-by:
Tom Tucker <tom@opengridcomputing.com> Acked-by:
Neil Brown <neilb@suse.de> Reviewed-by:
Chuck Lever <chuck.lever@oracle.com> Reviewed-by:
Greg Banks <gnb@sgi.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu> Cc: Simon Holm Thøgersen <odie@cs.aau.dk>
-
Tom Tucker authored
This is another incremental change that moves transport independent fields from svc_sock to the svc_xprt structure. The changes should be functionally null. Signed-off-by:
Tom Tucker <tom@opengridcomputing.com> Acked-by:
Neil Brown <neilb@suse.de> Reviewed-by:
Chuck Lever <chuck.lever@oracle.com> Reviewed-by:
Greg Banks <gnb@sgi.com> Signed-off-by:
J. Bruce Fields <bfields@citi.umich.edu>
-