rxrpc: Move call state changes from recvmsg to I/O thread
authorDavid Howells <dhowells@redhat.com>
Wed, 26 Oct 2022 22:43:00 +0000 (23:43 +0100)
committerDavid Howells <dhowells@redhat.com>
Fri, 6 Jan 2023 09:43:33 +0000 (09:43 +0000)
commit93368b6bd58ac49d804fdc9ab041a6dc89ebf1cc
treeb777838609571fd6aeaaf8eb99d1ddb0e90d6ccf
parent2d689424b6184535890c251f937ccf815fde9cd2
rxrpc: Move call state changes from recvmsg to I/O thread

Move the call state changes that are made in rxrpc_recvmsg() to the I/O
thread.  This means that, thenceforth, only the I/O thread does this and
the call state lock can be removed.

This requires the Rx phase to be ended when the last packet is received,
not when it is processed.

Since this now changes the rxrpc call state to SUCCEEDED before we've
consumed all the data from it, rxrpc_kernel_check_life() mustn't say the
call is dead until the recvmsg queue is empty (unless the call has failed).

Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
fs/afs/rxrpc.c
net/rxrpc/af_rxrpc.c
net/rxrpc/ar-internal.h
net/rxrpc/input.c
net/rxrpc/recvmsg.c