06 Oct, 2016

4 commits

  • We need to generate a DELAY ACK from the service end of an operation if we
    start doing the actual operation work and it takes longer than expected.
    This will hard-ACK the request data and allow the client to release its
    resources.

    To make this work:

    (1) We have to set the ack timer and propose an ACK when the call moves to
    the RXRPC_CALL_SERVER_ACK_REQUEST and clear the pending ACK and cancel
    the timer when we start transmitting the reply (the first DATA packet
    of the reply implicitly ACKs the request phase).

    (2) It must be possible to set the timer when the caller is holding
    call->state_lock, so split the lock-getting part of the timer function
    out.

    (3) Add trace notes for the ACK we're requesting and the timer we clear.

    Signed-off-by: David Howells

    David Howells
     
  • In rxrpc_kernel_recv_data(), when we return the error number incurred by a
    failed call, we must negate it before returning it as it's stored as
    positive (that's what we have to pass back to userspace).

    Signed-off-by: David Howells

    David Howells
     
  • Separate the output of PING ACKs from the output of other sorts of ACK so
    that if we receive a PING ACK and schedule transmission of a PING RESPONSE
    ACK, the response doesn't get cancelled by a PING ACK we happen to be
    scheduling transmission of at the same time.

    If a PING RESPONSE gets lost, the other side might just sit there waiting
    for it and refuse to proceed otherwise.

    Signed-off-by: David Howells

    David Howells
     
  • Split rxrpc_send_data_packet() to separate ACK generation (which is more
    complicated) from ABORT generation. This simplifies the code a bit and
    fixes the following warning:

    In file included from ../net/rxrpc/output.c:20:0:
    net/rxrpc/output.c: In function 'rxrpc_send_call_packet':
    net/rxrpc/ar-internal.h:1187:27: error: 'top' may be used uninitialized in this function [-Werror=maybe-uninitialized]
    net/rxrpc/output.c:103:24: note: 'top' was declared here
    net/rxrpc/output.c:225:25: error: 'hard_ack' may be used uninitialized in this function [-Werror=maybe-uninitialized]

    Reported-by: Arnd Bergmann
    Signed-off-by: David Howells

    David Howells
     

30 Sep, 2016

1 commit


25 Sep, 2016

2 commits


23 Sep, 2016

2 commits

  • Add a tracepoint to log proposed ACKs, including whether the proposal is
    used to update a pending ACK or is discarded in favour of an easlier,
    higher priority ACK.

    Whilst we're at it, get rid of the rxrpc_acks() function and access the
    name array directly. We do, however, need to validate the ACK reason
    number given to trace_rxrpc_rx_ack() to make sure we don't overrun the
    array.

    Signed-off-by: David Howells

    David Howells
     
  • Don't send an IDLE ACK at the end of the transmission of the response to a
    service call. The service end resends DATA packets until the client sends an
    ACK that hard-acks all the send data. At that point, the call is complete.

    Signed-off-by: David Howells

    David Howells
     

17 Sep, 2016

7 commits

  • Improve sk_buff tracing within AF_RXRPC by the following means:

    (1) Use an enum to note the event type rather than plain integers and use
    an array of event names rather than a big multi ?: list.

    (2) Distinguish Rx from Tx packets and account them separately. This
    requires the call phase to be tracked so that we know what we might
    find in rxtx_buffer[].

    (3) Add a parameter to rxrpc_{new,see,get,free}_skb() to indicate the
    event type.

    (4) A pair of 'rotate' events are added to indicate packets that are about
    to be rotated out of the Rx and Tx windows.

    (5) A pair of 'lost' events are added, along with rxrpc_lose_skb() for
    packet loss injection recording.

    Signed-off-by: David Howells

    David Howells
     
  • Remove _enter/_debug/_leave calls from rxrpc_recvmsg_data() of which one
    uses an uninitialised variable.

    Signed-off-by: David Howells

    David Howells
     
  • Add a tracepoint to follow what recvmsg does within AF_RXRPC.

    Signed-off-by: David Howells

    David Howells
     
  • Add a tracepoint to follow the life of packets that get added to a call's
    receive buffer.

    Signed-off-by: David Howells

    David Howells
     
  • The code for determining the last packet in rxrpc_recvmsg_data() has been
    using the RXRPC_CALL_RX_LAST flag to determine if the rx_top pointer points
    to the last packet or not. This isn't a good idea, however, as the input
    code may be running simultaneously on another CPU and that sets the flag
    *before* updating the top pointer.

    Fix this by the following means:

    (1) Restrict the use of RXRPC_CALL_RX_LAST to the input routines only.
    There's otherwise a synchronisation problem between detecting the flag
    and checking tx_top. This could probably be dealt with by appropriate
    application of memory barriers, but there's a simpler way.

    (2) Set RXRPC_CALL_RX_LAST after setting rx_top.

    (3) Make rxrpc_rotate_rx_window() consult the flags header field of the
    DATA packet it's about to discard to see if that was the last packet.
    Use this as the basis for ending the Rx phase. This shouldn't be a
    problem because the recvmsg side of things is guaranteed to see the
    packets in order.

    (4) Make rxrpc_recvmsg_data() return 1 to indicate the end of the data if:

    (a) the packet it has just processed is marked as RXRPC_LAST_PACKET

    (b) the call's Rx phase has been ended.

    Signed-off-by: David Howells

    David Howells
     
  • Check the return value of rxrpc_locate_data() in rxrpc_recvmsg_data().

    Signed-off-by: David Howells

    David Howells
     
  • Move the check of rx_pkt_offset from rxrpc_locate_data() to the caller,
    rxrpc_recvmsg_data(), so that it's more clear what's going on there.

    Signed-off-by: David Howells

    David Howells
     

14 Sep, 2016

2 commits

  • The preallocated call buffer holds a ref on the calls within that buffer.
    The ref was being released in the wrong place - it worked okay for incoming
    calls to the AFS cache manager service, but doesn't work right for incoming
    calls to a userspace service.

    Instead of releasing an extra ref service calls in rxrpc_release_call(),
    the ref needs to be released during the acceptance/rejectance process. To
    this end:

    (1) The prealloc ref is now normally released during
    rxrpc_new_incoming_call().

    (2) For preallocated kernel API calls, the kernel API's ref needs to be
    released when the call is discarded on socket close.

    (3) We shouldn't take a second ref in rxrpc_accept_call().

    (4) rxrpc_recvmsg_new_call() needs to get a ref of its own when it adds
    the call to the to_be_accepted socket queue.

    In doing (4) above, we would prefer not to put the call's refcount down to
    0 as that entails doing cleanup in softirq context, but it's unlikely as
    there are several refs held elsewhere, at least one of which must be put by
    someone in process context calling rxrpc_release_call(). However, it's not
    a problem if we do have to do that.

    Signed-off-by: David Howells

    David Howells
     
  • rxrpc_recvmsg() needs to make sure that the call it has just been
    processing gets requeued for further attention if the buffer has been
    filled and there's more data to be consumed. The softirq producer only
    queues the call and wakes the socket if it fills the first slot in the
    window, so userspace might end up sleeping forever otherwise, despite there
    being data available.

    This is not a problem provided the userspace buffer is big enough or it
    empties the buffer completely before more data comes in.

    Signed-off-by: David Howells

    David Howells
     

08 Sep, 2016

1 commit

  • Rewrite the data and ack handling code such that:

    (1) Parsing of received ACK and ABORT packets and the distribution and the
    filing of DATA packets happens entirely within the data_ready context
    called from the UDP socket. This allows us to process and discard ACK
    and ABORT packets much more quickly (they're no longer stashed on a
    queue for a background thread to process).

    (2) We avoid calling skb_clone(), pskb_pull() and pskb_trim(). We instead
    keep track of the offset and length of the content of each packet in
    the sk_buff metadata. This means we don't do any allocation in the
    receive path.

    (3) Jumbo DATA packet parsing is now done in data_ready context. Rather
    than cloning the packet once for each subpacket and pulling/trimming
    it, we file the packet multiple times with an annotation for each
    indicating which subpacket is there. From that we can directly
    calculate the offset and length.

    (4) A call's receive queue can be accessed without taking locks (memory
    barriers do have to be used, though).

    (5) Incoming calls are set up from preallocated resources and immediately
    made live. They can than have packets queued upon them and ACKs
    generated. If insufficient resources exist, DATA packet #1 is given a
    BUSY reply and other DATA packets are discarded).

    (6) sk_buffs no longer take a ref on their parent call.

    To make this work, the following changes are made:

    (1) Each call's receive buffer is now a circular buffer of sk_buff
    pointers (rxtx_buffer) rather than a number of sk_buff_heads spread
    between the call and the socket. This permits each sk_buff to be in
    the buffer multiple times. The receive buffer is reused for the
    transmit buffer.

    (2) A circular buffer of annotations (rxtx_annotations) is kept parallel
    to the data buffer. Transmission phase annotations indicate whether a
    buffered packet has been ACK'd or not and whether it needs
    retransmission.

    Receive phase annotations indicate whether a slot holds a whole packet
    or a jumbo subpacket and, if the latter, which subpacket. They also
    note whether the packet has been decrypted in place.

    (3) DATA packet window tracking is much simplified. Each phase has just
    two numbers representing the window (rx_hard_ack/rx_top and
    tx_hard_ack/tx_top).

    The hard_ack number is the sequence number before base of the window,
    representing the last packet the other side says it has consumed.
    hard_ack starts from 0 and the first packet is sequence number 1.

    The top number is the sequence number of the highest-numbered packet
    residing in the buffer. Packets between hard_ack+1 and top are
    soft-ACK'd to indicate they've been received, but not yet consumed.

    Four macros, before(), before_eq(), after() and after_eq() are added
    to compare sequence numbers within the window. This allows for the
    top of the window to wrap when the hard-ack sequence number gets close
    to the limit.

    Two flags, RXRPC_CALL_RX_LAST and RXRPC_CALL_TX_LAST, are added also
    to indicate when rx_top and tx_top point at the packets with the
    LAST_PACKET bit set, indicating the end of the phase.

    (4) Calls are queued on the socket 'receive queue' rather than packets.
    This means that we don't need have to invent dummy packets to queue to
    indicate abnormal/terminal states and we don't have to keep metadata
    packets (such as ABORTs) around

    (5) The offset and length of a (sub)packet's content are now passed to
    the verify_packet security op. This is currently expected to decrypt
    the packet in place and validate it.

    However, there's now nowhere to store the revised offset and length of
    the actual data within the decrypted blob (there may be a header and
    padding to skip) because an sk_buff may represent multiple packets, so
    a locate_data security op is added to retrieve these details from the
    sk_buff content when needed.

    (6) recvmsg() now has to handle jumbo subpackets, where each subpacket is
    individually secured and needs to be individually decrypted. The code
    to do this is broken out into rxrpc_recvmsg_data() and shared with the
    kernel API. It now iterates over the call's receive buffer rather
    than walking the socket receive queue.

    Additional changes:

    (1) The timers are condensed to a single timer that is set for the soonest
    of three timeouts (delayed ACK generation, DATA retransmission and
    call lifespan).

    (2) Transmission of ACK and ABORT packets is effected immediately from
    process-context socket ops/kernel API calls that cause them instead of
    them being punted off to a background work item. The data_ready
    handler still has to defer to the background, though.

    (3) A shutdown op is added to the AF_RXRPC socket so that the AFS
    filesystem can shut down the socket and flush its own work items
    before closing the socket to deal with any in-progress service calls.

    Future additional changes that will need to be considered:

    (1) Make sure that a call doesn't hog the front of the queue by receiving
    data from the network as fast as userspace is consuming it to the
    exclusion of other calls.

    (2) Transmit delayed ACKs from within recvmsg() when we've consumed
    sufficiently more packets to avoid the background work item needing to
    run.

    Signed-off-by: David Howells

    David Howells
     

07 Sep, 2016

2 commits

  • rxrpc calls shouldn't hold refs on the sock struct. This was done so that
    the socket wouldn't go away whilst the call was in progress, such that the
    call could reach the socket's queues.

    However, we can mark the socket as requiring an RCU release and rely on the
    RCU read lock.

    To make this work, we do:

    (1) rxrpc_release_call() removes the call's call user ID. This is now
    only called from socket operations and not from the call processor:

    rxrpc_accept_call() / rxrpc_kernel_accept_call()
    rxrpc_reject_call() / rxrpc_kernel_reject_call()
    rxrpc_kernel_end_call()
    rxrpc_release_calls_on_socket()
    rxrpc_recvmsg()

    Though it is also called in the cleanup path of
    rxrpc_accept_incoming_call() before we assign a user ID.

    (2) Pass the socket pointer into rxrpc_release_call() rather than getting
    it from the call so that we can get rid of uninitialised calls.

    (3) Fix call processor queueing to pass a ref to the work queue and to
    release that ref at the end of the processor function (or to pass it
    back to the work queue if we have to requeue).

    (4) Skip out of the call processor function asap if the call is complete
    and don't requeue it if the call is complete.

    (5) Clean up the call immediately that the refcount reaches 0 rather than
    trying to defer it. Actual deallocation is deferred to RCU, however.

    (6) Don't hold socket refs for allocated calls.

    (7) Use the RCU read lock when queueing a message on a socket and treat
    the call's socket pointer according to RCU rules and check it for
    NULL.

    We also need to use the RCU read lock when viewing a call through
    procfs.

    (8) Transmit the final ACK/ABORT to a client call in rxrpc_release_call()
    if this hasn't been done yet so that we can then disconnect the call.
    Once the call is disconnected, it won't have any access to the
    connection struct and the UDP socket for the call work processor to be
    able to send the ACK. Terminal retransmission will be handled by the
    connection processor.

    (9) Release all calls immediately on the closing of a socket rather than
    trying to defer this. Incomplete calls will be aborted.

    The call refcount model is much simplified. Refs are held on the call by:

    (1) A socket's user ID tree.

    (2) A socket's incoming call secureq and acceptq.

    (3) A kernel service that has a call in progress.

    (4) A queued call work processor. We have to take care to put any call
    that we failed to queue.

    (5) sk_buffs on a socket's receive queue. A future patch will get rid of
    this.

    Whilst we're at it, we can do:

    (1) Get rid of the RXRPC_CALL_EV_RELEASE event. Release is now done
    entirely from the socket routines and never from the call's processor.

    (2) Get rid of the RXRPC_CALL_DEAD state. Calls now end in the
    RXRPC_CALL_COMPLETE state.

    (3) Get rid of the rxrpc_call::destroyer work item. Calls are now torn
    down when their refcount reaches 0 and then handed over to RCU for
    final cleanup.

    (4) Get rid of the rxrpc_call::deadspan timer. Calls are cleaned up
    immediately they're finished with and don't hang around.
    Post-completion retransmission is handled by the connection processor
    once the call is disconnected.

    (5) Get rid of the dead call expiry setting as there's no longer a timer
    to set.

    (6) rxrpc_destroy_all_calls() can just check that the call list is empty.

    Signed-off-by: David Howells

    David Howells
     
  • Improve the call tracking tracepoint by showing more differentiation
    between some of the put and get events, including:

    (1) Getting and putting refs for the socket call user ID tree.

    (2) Getting and putting refs for queueing and failing to queue the call
    processor work item.

    Note that these aren't necessarily used in this patch, but will be taken
    advantage of in future patches.

    An enum is added for the event subtype numbers rather than coding them
    directly as decimal numbers and a table of 3-letter strings is provided
    rather than a sequence of ?: operators.

    Signed-off-by: David Howells

    David Howells
     

02 Sep, 2016

1 commit

  • Don't expose skbs to in-kernel users, such as the AFS filesystem, but
    instead provide a notification hook the indicates that a call needs
    attention and another that indicates that there's a new call to be
    collected.

    This makes the following possibilities more achievable:

    (1) Call refcounting can be made simpler if skbs don't hold refs to calls.

    (2) skbs referring to non-data events will be able to be freed much sooner
    rather than being queued for AFS to pick up as rxrpc_kernel_recv_data
    will be able to consult the call state.

    (3) We can shortcut the receive phase when a call is remotely aborted
    because we don't have to go through all the packets to get to the one
    cancelling the operation.

    (4) It makes it easier to do encryption/decryption directly between AFS's
    buffers and sk_buffs.

    (5) Encryption/decryption can more easily be done in the AFS's thread
    contexts - usually that of the userspace process that issued a syscall
    - rather than in one of rxrpc's background threads on a workqueue.

    (6) AFS will be able to wait synchronously on a call inside AF_RXRPC.

    To make this work, the following interface function has been added:

    int rxrpc_kernel_recv_data(
    struct socket *sock, struct rxrpc_call *call,
    void *buffer, size_t bufsize, size_t *_offset,
    bool want_more, u32 *_abort_code);

    This is the recvmsg equivalent. It allows the caller to find out about the
    state of a specific call and to transfer received data into a buffer
    piecemeal.

    afs_extract_data() and rxrpc_kernel_recv_data() now do all the extraction
    logic between them. They don't wait synchronously yet because the socket
    lock needs to be dealt with.

    Five interface functions have been removed:

    rxrpc_kernel_is_data_last()
    rxrpc_kernel_get_abort_code()
    rxrpc_kernel_get_error_number()
    rxrpc_kernel_free_skb()
    rxrpc_kernel_data_consumed()

    As a temporary hack, sk_buffs going to an in-kernel call are queued on the
    rxrpc_call struct (->knlrecv_queue) rather than being handed over to the
    in-kernel user. To process the queue internally, a temporary function,
    temp_deliver_data() has been added. This will be replaced with common code
    between the rxrpc_recvmsg() path and the kernel_rxrpc_recv_data() path in a
    future patch.

    Signed-off-by: David Howells
    Signed-off-by: David S. Miller

    David Howells
     

30 Aug, 2016

2 commits


23 Aug, 2016

1 commit


06 Aug, 2016

1 commit

  • Inside the kafs filesystem it is possible to occasionally have a call
    processed and terminated before we've had a chance to check whether we need
    to clean up the rx queue for that call because afs_send_simple_reply() ends
    the call when it is done, but this is done in a workqueue item that might
    happen to run to completion before afs_deliver_to_call() completes.

    Further, it is possible for rxrpc_kernel_send_data() to be called to send a
    reply before the last request-phase data skb is released. The rxrpc skb
    destructor is where the ACK processing is done and the call state is
    advanced upon release of the last skb. ACK generation is also deferred to
    a work item because it's possible that the skb destructor is not called in
    a context where kernel_sendmsg() can be invoked.

    To this end, the following changes are made:

    (1) kernel_rxrpc_data_consumed() is added. This should be called whenever
    an skb is emptied so as to crank the ACK and call states. This does
    not release the skb, however. kernel_rxrpc_free_skb() must now be
    called to achieve that. These together replace
    rxrpc_kernel_data_delivered().

    (2) kernel_rxrpc_data_consumed() is wrapped by afs_data_consumed().

    This makes afs_deliver_to_call() easier to work as the skb can simply
    be discarded unconditionally here without trying to work out what the
    return value of the ->deliver() function means.

    The ->deliver() functions can, via afs_data_complete(),
    afs_transfer_reply() and afs_extract_data() mark that an skb has been
    consumed (thereby cranking the state) without the need to
    conditionally free the skb to make sure the state is correct on an
    incoming call for when the call processor tries to send the reply.

    (3) rxrpc_recvmsg() now has to call kernel_rxrpc_data_consumed() when it
    has finished with a packet and MSG_PEEK isn't set.

    (4) rxrpc_packet_destructor() no longer calls rxrpc_hard_ACK_data().

    Because of this, we no longer need to clear the destructor and put the
    call before we free the skb in cases where we don't want the ACK/call
    state to be cranked.

    (5) The ->deliver() call-type callbacks are made to return -EAGAIN rather
    than 0 if they expect more data (afs_extract_data() returns -EAGAIN to
    the delivery function already), and the caller is now responsible for
    producing an abort if that was the last packet.

    (6) There are many bits of unmarshalling code where:

    ret = afs_extract_data(call, skb, last, ...);
    switch (ret) {
    case 0: break;
    case -EAGAIN: return 0;
    default: return ret;
    }

    is to be found. As -EAGAIN can now be passed back to the caller, we
    now just return if ret < 0:

    ret = afs_extract_data(call, skb, last, ...);
    if (ret < 0)
    return ret;

    (7) Checks for trailing data and empty final data packets has been
    consolidated as afs_data_complete(). So:

    if (skb->len > 0)
    return -EBADMSG;
    if (!last)
    return 0;

    becomes:

    ret = afs_data_complete(call, skb, last);
    if (ret < 0)
    return ret;

    (8) afs_transfer_reply() now checks the amount of data it has against the
    amount of data desired and the amount of data in the skb and returns
    an error to induce an abort if we don't get exactly what we want.

    Without these changes, the following oops can occasionally be observed,
    particularly if some printks are inserted into the delivery path:

    general protection fault: 0000 [#1] SMP
    Modules linked in: kafs(E) af_rxrpc(E) [last unloaded: af_rxrpc]
    CPU: 0 PID: 1305 Comm: kworker/u8:3 Tainted: G E 4.7.0-fsdevel+ #1303
    Hardware name: ASUS All Series/H97-PLUS, BIOS 2306 10/09/2014
    Workqueue: kafsd afs_async_workfn [kafs]
    task: ffff88040be041c0 ti: ffff88040c070000 task.ti: ffff88040c070000
    RIP: 0010:[] [] __lock_acquire+0xcf/0x15a1
    RSP: 0018:ffff88040c073bc0 EFLAGS: 00010002
    RAX: 6b6b6b6b6b6b6b6b RBX: 0000000000000000 RCX: ffff88040d29a710
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88040d29a710
    RBP: ffff88040c073c70 R08: 0000000000000001 R09: 0000000000000001
    R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000000
    R13: 0000000000000000 R14: ffff88040be041c0 R15: ffffffff814c928f
    FS: 0000000000000000(0000) GS:ffff88041fa00000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fa4595f4750 CR3: 0000000001c14000 CR4: 00000000001406f0
    Stack:
    0000000000000006 000000000be04930 0000000000000000 ffff880400000000
    ffff880400000000 ffffffff8108f847 ffff88040be041c0 ffffffff81050446
    ffff8803fc08a920 ffff8803fc08a958 ffff88040be041c0 ffff88040c073c38
    Call Trace:
    [] ? mark_held_locks+0x5e/0x74
    [] ? __local_bh_enable_ip+0x9b/0xa1
    [] ? trace_hardirqs_on_caller+0x16d/0x189
    [] lock_acquire+0x122/0x1b6
    [] ? lock_acquire+0x122/0x1b6
    [] ? skb_dequeue+0x18/0x61
    [] _raw_spin_lock_irqsave+0x35/0x49
    [] ? skb_dequeue+0x18/0x61
    [] skb_dequeue+0x18/0x61
    [] afs_deliver_to_call+0x344/0x39d [kafs]
    [] afs_process_async_call+0x4c/0xd5 [kafs]
    [] afs_async_workfn+0xe/0x10 [kafs]
    [] process_one_work+0x29d/0x57c
    [] worker_thread+0x24a/0x385
    [] ? rescuer_thread+0x2d0/0x2d0
    [] kthread+0xf3/0xfb
    [] ret_from_fork+0x1f/0x40
    [] ? kthread_create_on_node+0x1cf/0x1cf

    Signed-off-by: David Howells
    Signed-off-by: David S. Miller

    David Howells
     

22 Jun, 2016

2 commits


13 Jun, 2016

1 commit

  • Rename files matching net/rxrpc/ar-*.c to get rid of the "ar-" prefix.
    This will aid splitting those files by making easier to come up with new
    names.

    Note that the not all files are simply renamed from ar-X.c to X.c. The
    following exceptions are made:

    (*) ar-call.c -> call_object.c
    ar-ack.c -> call_event.c

    call_object.c is going to contain the core of the call object
    handling. Call event handling is all going to be in call_event.c.

    (*) ar-accept.c -> call_accept.c

    Incoming call handling is going to be here.

    (*) ar-connection.c -> conn_object.c
    ar-connevent.c -> conn_event.c

    The former file is going to have the basic connection object handling,
    but there will likely be some differentiation between client
    connections and service connections in additional files later. The
    latter file will have all the connection-level event handling.

    (*) ar-local.c -> local_object.c

    This will have the local endpoint object handling code. The local
    endpoint event handling code will later be split out into
    local_event.c.

    (*) ar-peer.c -> peer_object.c

    This will have the peer endpoint object handling code. Peer event
    handling code will be placed in peer_event.c (for the moment, there is
    none).

    (*) ar-error.c -> peer_event.c

    This will become the peer event handling code, though for the moment
    it's actually driven from the local endpoint's perspective.

    Note that I haven't renamed ar-transport.c to transport_object.c as the
    intention is to delete it when the rxrpc_transport struct is excised.

    The only file that actually has its contents changed is net/rxrpc/Makefile.

    net/rxrpc/ar-internal.h will need its section marker comments updating, but
    I'll do that in a separate patch to make it easier for git to follow the
    history across the rename. I may also want to rename ar-internal.h at some
    point - but that would mean updating all the #includes and I'd rather do
    that in a separate step.

    Signed-off-by: David Howells <dhowells@redhat.com.

    David Howells