* received. The step number here must match the final number in
* afs_deliver_cb_callback().
*/
- if (call->unmarshall == 5) {
- ASSERT(call->cm_server && call->count && call->request);
+ if (call->cm_server && call->unmarshall == 5) {
+ ASSERT(call->count && call->request);
afs_break_callbacks(call->cm_server, call->count, call->request);
}
* yet */
afs_send_empty_reply(call);
- afs_break_callbacks(call->cm_server, call->count, call->request);
+ if (call->cm_server)
+ afs_break_callbacks(call->cm_server, call->count, call->request);
afs_put_call(call);
_leave("");
}
{
struct afs_callback_break *cb;
struct sockaddr_rxrpc srx;
- struct afs_server *server;
__be32 *bp;
int ret, loop;
/* we'll need the file server record as that tells us which set of
* vnodes to operate upon */
rxrpc_kernel_get_peer(call->net->socket, call->rxcall, &srx);
- server = afs_find_server(call->net, &srx);
- if (!server) {
+ call->cm_server = afs_find_server(call->net, &srx);
+ if (!call->cm_server)
trace_afs_cm_no_server(call, &srx);
- return -ENOTCONN;
- }
- call->cm_server = server;
return afs_queue_call_work(call);
}
_enter("{%p}", call->cm_server);
- afs_init_callback_state(call->cm_server);
+ if (call->cm_server)
+ afs_init_callback_state(call->cm_server);
afs_send_empty_reply(call);
afs_put_call(call);
_leave("");
static int afs_deliver_cb_init_call_back_state(struct afs_call *call)
{
struct sockaddr_rxrpc srx;
- struct afs_server *server;
int ret;
_enter("");
/* we'll need the file server record as that tells us which set of
* vnodes to operate upon */
- server = afs_find_server(call->net, &srx);
- if (!server) {
+ call->cm_server = afs_find_server(call->net, &srx);
+ if (!call->cm_server)
trace_afs_cm_no_server(call, &srx);
- return -ENOTCONN;
- }
- call->cm_server = server;
return afs_queue_call_work(call);
}
*/
static int afs_deliver_cb_init_call_back_state3(struct afs_call *call)
{
- struct afs_server *server;
struct afs_uuid *r;
unsigned loop;
__be32 *b;
/* we'll need the file server record as that tells us which set of
* vnodes to operate upon */
rcu_read_lock();
- server = afs_find_server_by_uuid(call->net, call->request);
+ call->cm_server = afs_find_server_by_uuid(call->net, call->request);
rcu_read_unlock();
- if (!server) {
+ if (!call->cm_server)
trace_afs_cm_no_server_u(call, call->request);
- return -ENOTCONN;
- }
- call->cm_server = server;
return afs_queue_call_work(call);
}