mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
afs: Log remote unmarshalling errors
Log unmarshalling errors reported by the peer (ie. it can't parse what we sent it). Limit the maximum number of messages to 3. Signed-off-by: David Howells <dhowells@redhat.com> Tested-By: Marc Dionne <marc.dionne@auristor.com> cc: linux-afs@lists.infradead.org cc: linux-cachefs@redhat.com cc: linux-fsdevel@vger.kernel.org Link: https://lore.kernel.org/r/159465826250.1377938.16372395422217583913.stgit@warthog.procyon.org.uk/ Link: https://lore.kernel.org/r/160588532584.3465195.15618385466614028590.stgit@warthog.procyon.org.uk/ # rfc Link: https://lore.kernel.org/r/161118149739.1232039.208060911149801695.stgit@warthog.procyon.org.uk/ # rfc Link: https://lore.kernel.org/r/161161046033.2537118.7779717661044373273.stgit@warthog.procyon.org.uk/ # v2 Link: https://lore.kernel.org/r/161340409118.1303470.17812607349396199116.stgit@warthog.procyon.org.uk/ # v3 Link: https://lore.kernel.org/r/161539552964.286939.16503232687974398308.stgit@warthog.procyon.org.uk/ # v4 Link: https://lore.kernel.org/r/161653808989.2770958.11530765353025697860.stgit@warthog.procyon.org.uk/ # v5 Link: https://lore.kernel.org/r/161789092349.6155.8581594259882708631.stgit@warthog.procyon.org.uk/ # v6
This commit is contained in:
parent
f105da1a79
commit
05092755aa
@ -500,6 +500,39 @@ error_kill_call:
|
||||
_leave(" = %d", ret);
|
||||
}
|
||||
|
||||
/*
|
||||
* Log remote abort codes that indicate that we have a protocol disagreement
|
||||
* with the server.
|
||||
*/
|
||||
static void afs_log_error(struct afs_call *call, s32 remote_abort)
|
||||
{
|
||||
static int max = 0;
|
||||
const char *msg;
|
||||
int m;
|
||||
|
||||
switch (remote_abort) {
|
||||
case RX_EOF: msg = "unexpected EOF"; break;
|
||||
case RXGEN_CC_MARSHAL: msg = "client marshalling"; break;
|
||||
case RXGEN_CC_UNMARSHAL: msg = "client unmarshalling"; break;
|
||||
case RXGEN_SS_MARSHAL: msg = "server marshalling"; break;
|
||||
case RXGEN_SS_UNMARSHAL: msg = "server unmarshalling"; break;
|
||||
case RXGEN_DECODE: msg = "opcode decode"; break;
|
||||
case RXGEN_SS_XDRFREE: msg = "server XDR cleanup"; break;
|
||||
case RXGEN_CC_XDRFREE: msg = "client XDR cleanup"; break;
|
||||
case -32: msg = "insufficient data"; break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
m = max;
|
||||
if (m < 3) {
|
||||
max = m + 1;
|
||||
pr_notice("kAFS: Peer reported %s failure on %s [%pISp]\n",
|
||||
msg, call->type->name,
|
||||
&call->alist->addrs[call->addr_ix].transport);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* deliver messages to a call
|
||||
*/
|
||||
@ -563,6 +596,7 @@ static void afs_deliver_to_call(struct afs_call *call)
|
||||
goto out;
|
||||
case -ECONNABORTED:
|
||||
ASSERTCMP(state, ==, AFS_CALL_COMPLETE);
|
||||
afs_log_error(call, call->abort_code);
|
||||
goto done;
|
||||
case -ENOTSUPP:
|
||||
abort_code = RXGEN_OPCODE;
|
||||
|
Loading…
Reference in New Issue
Block a user