From: David Howells <dhowells@redhat.com>
To: davem@davemloft.net
Cc: dhowells@redhat.com, netdev@vger.kernel.org,
linux-afs@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: [PATCH net-next 00/14] rxrpc: Get rid of conn bundle and transport structs
Date: Wed, 22 Jun 2016 10:49:42 +0100 [thread overview]
Message-ID: <146658898230.4550.7226255613607733759.stgit@warthog.procyon.org.uk> (raw)
Here's the next part of the AF_RXRPC rewrite. The primary purpose of this
set is to get rid of the rxrpc_conn_bundle and rxrpc_transport structs.
This simplifies things for future development of the connection handling.
To this end, the following significant changes are made:
(1) The rxrpc_connection struct is given pointers to the local and peer
endpoints, inside the rxrpc_conn_parameters struct. Pointers to the
transport's copy of these pointers are then redirected to the
connection struct.
(2) Exclusive connection handling is fixed. Exclusive connections should
do just one call and then be retired. They are used in security
negotiations and, I believe, the idea is to avoid reuse of negotiated
security contexts.
The current code is doing a single connection per socket and doing all
the calls over that. With this change it gets a new connection for
each call made.
(3) A new sendmsg() control message marker is added to make individual
calls operate over exclusive connections. This should be used in
future in preference to the sockopt that marks a socket as "exclusive
connection".
(4) IDs for client connections initiated by a machine are now allocated
from a global pool using the IDR facility and are unique across all
client connections, no matter their destination. The IDR facility is
then used to look up a connection on the connection ID alone. Other
parameters are then verified afterwards.
Note that the IDR facility may use a lot of memory if the IDs it holds
are widely scattered. Given this, in a future commit, client
connections will be retired if they are more than a certain distance
from the last ID allocated.
The client epoch is advanced by 1 each time the client ID counter
wraps. Connections outside the current epoch will also be retired in
a future commit.
(5) The connection bundle concept is removed and the client connection
tree is moved into the local endpoint. The queue for waiting for a
call channel is moved to the rxrpc_connection struct as there can only
be one connection for any particular key going to any particular peer
now.
(6) The rxrpc_transport struct is removed and the service connection tree
is moved into the peer struct.
The patches can be found here also:
http://git.kernel.org/cgit/linux/kernel/git/dhowells/linux-fs.git/log/?h=rxrpc-rewrite
Tagged thusly:
git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git
rxrpc-rewrite-20160622
David
---
Arnd Bergmann (1):
rxrpc: fix uninitialized variable use
Dan Carpenter (1):
rxrpc: checking for IS_ERR() instead of NULL
David Howells (12):
rxrpc: Use structs to hold connection params and protocol info
rxrpc: Replace conn->trans->{local,peer} with conn->params.{local,peer}
rxrpc: Fix exclusive connection handling
rxrpc: Pass sk_buff * rather than rxrpc_host_header * to functions
rxrpc: rxrpc_connection_lock shouldn't be a BH lock, but conn_lock is
rxrpc: Use IDR to allocate client conn IDs on a machine-wide basis
rxrpc: Validate the net address given to rxrpc_kernel_begin_call()
rxrpc: Calls displayed in /proc may in future lack a connection
rxrpc: Make rxrpc_send_packet() take a connection not a transport
rxrpc: Provide more refcount helper functions
rxrpc: Kill the client connection bundle concept
rxrpc: Kill off the rxrpc_transport struct
include/linux/rxrpc.h | 3
net/rxrpc/Makefile | 2
net/rxrpc/af_rxrpc.c | 87 +----
net/rxrpc/ar-internal.h | 173 +++++----
net/rxrpc/call_accept.c | 17 -
net/rxrpc/call_event.c | 20 +
net/rxrpc/call_object.c | 206 ++++++-----
net/rxrpc/conn_client.c | 99 +++++
net/rxrpc/conn_event.c | 16 -
net/rxrpc/conn_object.c | 860 +++++++++++++++++-----------------------------
net/rxrpc/input.c | 23 -
net/rxrpc/key.c | 2
net/rxrpc/local_object.c | 5
net/rxrpc/output.c | 109 +++---
net/rxrpc/peer_object.c | 5
net/rxrpc/proc.c | 39 +-
net/rxrpc/recvmsg.c | 6
net/rxrpc/rxkad.c | 74 ++--
net/rxrpc/security.c | 8
net/rxrpc/sysctl.c | 8
net/rxrpc/transport.c | 269 --------------
21 files changed, 780 insertions(+), 1251 deletions(-)
create mode 100644 net/rxrpc/conn_client.c
delete mode 100644 net/rxrpc/transport.c
next reply other threads:[~2016-06-22 9:59 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-22 9:49 David Howells [this message]
2016-06-22 9:49 ` [PATCH net-next 01/14] rxrpc: checking for IS_ERR() instead of NULL David Howells
2016-06-22 9:49 ` [PATCH net-next 02/14] rxrpc: fix uninitialized variable use David Howells
2016-06-22 9:50 ` [PATCH net-next 03/14] rxrpc: Use structs to hold connection params and protocol info David Howells
2016-06-22 9:50 ` [PATCH net-next 04/14] rxrpc: Replace conn->trans->{local, peer} with conn->params.{local, peer} David Howells
2016-06-22 9:50 ` [PATCH net-next 05/14] rxrpc: Fix exclusive connection handling David Howells
2016-06-22 9:50 ` [PATCH net-next 06/14] rxrpc: Pass sk_buff * rather than rxrpc_host_header * to functions David Howells
2016-06-22 9:50 ` [PATCH net-next 07/14] rxrpc: rxrpc_connection_lock shouldn't be a BH lock, but conn_lock is David Howells
2016-06-22 9:50 ` [PATCH net-next 08/14] rxrpc: Use IDR to allocate client conn IDs on a machine-wide basis David Howells
2016-06-22 9:50 ` [PATCH net-next 09/14] rxrpc: Validate the net address given to rxrpc_kernel_begin_call() David Howells
2016-06-22 9:50 ` [PATCH net-next 10/14] rxrpc: Calls displayed in /proc may in future lack a connection David Howells
2016-06-22 9:51 ` [PATCH net-next 11/14] rxrpc: Make rxrpc_send_packet() take a connection not a transport David Howells
2016-06-22 9:51 ` [PATCH net-next 12/14] rxrpc: Provide more refcount helper functions David Howells
2016-06-22 9:51 ` [PATCH net-next 13/14] rxrpc: Kill the client connection bundle concept David Howells
2016-06-22 9:51 ` [PATCH net-next 14/14] rxrpc: Kill off the rxrpc_transport struct David Howells
2016-06-22 10:03 ` [PATCH net-next 00/14] rxrpc: Get rid of conn bundle and transport structs David Howells
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=146658898230.4550.7226255613607733759.stgit@warthog.procyon.org.uk \
--to=dhowells@redhat.com \
--cc=davem@davemloft.net \
--cc=linux-afs@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).