diff options
| author | Benjamin Coddington <ben.coddington@hammerspace.com> | 2026-09-04 08:56:05 -0400 |
|---|---|---|
| committer | Anna Schumaker <anna.schumaker@hammerspace.com> | 2026-10-05 09:46:41 -0400 |
| commit | 60bb8276fb3bab693bde411d1aa1af2a10a15db5 (patch) | |
| tree | 9f2cb6016ea7590aa1207357a5d91ad962ef489d /include/linux | |
| parent | 99ce1c14294236f0902df9870850ff1c3ed24381 (diff) | |
NFSv4.1/pnfs: treat an oversized LAYOUTGET reply as -EMSGSIZE
decode_layoutget() already detects a server that sends a layout body
larger than the reply buffer we provided ("server cheating in
layoutget reply") but maps it to -EINVAL, which pnfs_update_layout()
treats as a transient error: the client falls back to the MDS for
this I/O only and re-sends a doomed LAYOUTGET on every subsequent
pageio attempt.
A server that overruns the reply buffer has ignored loga_maxcount, but
the client can recover the same way it recovers from a conformant
server's NFS4ERR_TOOSMALL: return -EMSGSIZE from exactly this check so
that the layoutget path retries once with a session-sized reply buffer
and otherwise marks the layout mode failed and falls back to the MDS.
Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Benjamin Coddington <bcodding@hammerspace.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Anna Schumaker <anna.schumaker@hammerspace.com>
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions
