/* * allow the fileserver to see if the cache manager is still alive */ static void SRXAFSCB_CallBack(struct work_struct *work) { struct afs_call *call = container_of(work, struct afs_call, work); _enter(""); /* be sure to send the reply *before* attempting to spam the AFS server * with FSFetchStatus requests on the vnodes with broken callbacks lest * the AFS server get into a vicious cycle of trying to break further * callbacks because it hadn't received completion of the CBCallBack op * yet */ afs_send_empty_reply(call); afs_break_callbacks(call->server, call->count, call->request); _leave(""); }
/* * clean up a cache manager call */ static void afs_cm_destructor(struct afs_call *call) { _enter(""); /* Break the callbacks here so that we do it after the final ACK is * received. The step number here must match the final number in * afs_deliver_cb_callback(). */ if (call->unmarshall == 5) { ASSERT(call->server && call->count && call->request); afs_break_callbacks(call->server, call->count, call->request); } afs_put_server(call->server); call->server = NULL; kfree(call->buffer); call->buffer = NULL; }