mickael-kerjean/filestash · error
RPC error: %s
Error message
RPC error: %s
What it means
Produced in readNfsMessage when an NFS RPC reply is not an accepted REPLY with status SUCCESS, as checked by isRpcSuccess. The %s carries the RPC-level rejection reason (e.g. auth_error, prog_unavail, proc_unavail, garbage). It surfaces transport/protocol-level NFS failures to callers like Ping and runNfsTransaction, distinct from NFS operation-level errors.
Source
Thrown at server/plugin/plg_backend_nfs4/repo/nfs4/client.go:241
defer func() {
if i := recover(); i != nil {
if e, ok := i.(XdrError); ok {
err = e
} else {
panic(i)
}
}
}()
reply := Rpc_msg{}
in := XdrIn{In: bytes.NewReader(msgBuf)}
in.Marshal("", &reply)
if _, ok := result.(XdrType_void); !ok {
in.Marshal("", result)
}
if !c.isRpcSuccess(&reply) {
err = fmt.Errorf("RPC error: %s", c.getRpcError(&reply))
return
}
xid = reply.Xid
return
}
// Returns true iff msg is an accepted REPLY with status SUCCESS.
func (c *NfsClient) isRpcSuccess(msg *Rpc_msg) bool {
return msg != nil &&
msg.Body.Mtype == REPLY &&
msg.Body.Rbody().Stat == MSG_ACCEPTED &&
msg.Body.Rbody().Areply().Reply_data.Stat == SUCCESS
}
// An *Rpc_msg can represent an error. Call IsSuccess to see if there
// was actually an error.
func (c *NfsClient) getRpcError(m *Rpc_msg) string {View on GitHub (pinned to 78f756eb94)
Solutions
- Inspect the wrapped RPC status (getRpcError) to identify auth vs program-level rejection
- Verify NFS server availability, export ACLs, and that the client host is allowed (showmount/exportfs checks)
- Check for auth mismatch: sec=sys/krb5 settings, UID mapping, or stale rpcbind/portmapper entries
- Retry against a healthy server; transient RPC garbage replies can indicate network corruption
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at server/plugin/plg_backend_nfs4/repo/nfs4/client.go:241 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of mickael-kerjean/filestash@78f756eb94 (2026-09-06).
Data as JSON: /api/errors/474075695b0676d4.
Report an issue: GitHub.