From: "Jörg Sommer" <joerg@jo-so.de>
To: Chuck Lever <cel@kernel.org>
Cc: NeilBrown <neil@brown.name>, Jeff Layton <jlayton@kernel.org>,
Olga Kornievskaia <okorniev@redhat.com>,
Dai Ngo <dai.ngo@oracle.com>, Tom Talpey <tom@talpey.com>,
linux-nfs@vger.kernel.org, Chuck Lever <chuck.lever@oracle.com>
Subject: Re: [PATCH 2/2] NFS: NFSERR_INVAL is not defined by NFSv2
Date: Fri, 28 Aug 2026 10:48:51 +0200 [thread overview]
Message-ID: <apE90ZRZB8IW_AiS@jo-so.de> (raw)
In-Reply-To: <20251210002850.318350-3-cel@kernel.org>
[-- Attachment #1: Type: text/plain, Size: 4070 bytes --]
Chuck Lever schrieb am Di 09. Dez, 19:28 (-0500):
> From: Chuck Lever <chuck.lever@oracle.com>
>
> A documenting comment in include/uapi/linux/nfs.h claims incorrectly
> that NFSv2 defines NFSERR_INVAL. There is no such definition in either
> RFC 1094 or https://pubs.opengroup.org/onlinepubs/9629799/chap7.htm
>
> NFS3ERR_INVAL is introduced in RFC 1813.
Hello,
since this commit 0ac903d1bfdce8ff40657c2b7d996947b72b6645 was added, U-Boot
2022.04 (I don't know about newer versions) can no longer access symlinks in
NFS shares. When I revert this commit, U-Boot can load the file behind the
symlink. Real files are no problem.
The file I want to load is a symlink at the server:
```
% ls -l /srv/nfs/boot/Image.gz*
lrwxrwxrwx 1 root root 41 7. Jul 16:29 /srv/nfs-con/boot/Image.gz -> Image.gz-5.15.213-imx8mm+gfffa4b6d4aea+p1
-rw-r--r-- 1 root root 5279373 7. Jul 16:29 /srv/nfs-con/boot/Image.gz-5.15.213-imx8mm+gfffa4b6d4aea+p1
```
Without this commit:
```
u-boot=> nfs 0x42000000 /srv/nfs/boot/Image.gz
Filename '/srv/nfs-con/boot/Image.gz'.
Load address: 0x42000000
Loading: #################################################################
done
Bytes transferred = 5279373 (508e8d hex)
```
But with this commit:
```
u-boot=> nfs 0x42000000 /srv/nfs/boot/Image.gz
Filename '/srv/nfs-con/boot/Image.gz'.
Load address: 0x42000000
Loading:
done
```
This is the network traffic:
```
No. Time Protocol Length Info
3 0.000370 Portmap 98 V2 GETPORT Call (Reply In 4) MOUNT(100005) V:1 UDP
4 0.000607 Portmap 70 V2 GETPORT Reply (Call In 3) Port:60340
5 0.000949 Portmap 98 V2 GETPORT Call (Reply In 6) NFS(100003) V:2 UDP
6 0.001046 Portmap 70 V2 GETPORT Reply (Call In 5) Port:2049
7 0.001368 MOUNT 126 V2 MNT Call (Reply In 8) /srv/nfs-con/boot
8 0.008026 MOUNT 102 V2 MNT Reply (Call In 7)
9 0.008389 NFS 146 V2 LOOKUP Call (Reply In 10), DH: 0x8c279135/Image.gz
10 0.008754 NFS 170 V2 LOOKUP Reply (Call In 9), FH: 0xcdddf154
11 0.009095 NFS 146 V2 READ Call (Reply In 12), FH: 0xcdddf154 Offset: 0 Count: 1024 TotalCount: 0
12 0.009189 NFS 70 V2 READ Reply (Call In 11) Error: NFS2ERR_IO
13 0.009511 MOUNT 102 V2 UMNTALL Call (Reply In 14)
14 0.010301 MOUNT 66 V2 UMNTALL Reply (Call In 13)
```
From packet 11 V2 READ Call
```
Remote Procedure Call, Type:Call XID:0x000050e1
XID: 0x000050e1 (20705)
Message Type: Call (0)
RPC Version: 2
Program: NFS (100003)
Program Version: 2
Procedure: READ (6)
[The reply to this request is in frame 12]
Credentials
Flavor: AUTH_UNIX (1)
Length: 20
Stamp: 0x00000000
Machine Name: <EMPTY>
UID: 0
GID: 0
Auxiliary GIDs (0)
Verifier
Flavor: AUTH_NULL (0)
Length: 0
Network File System, READ Call FH: 0xcdddf154 Offset: 0 Count: 1024 TotalCount: 0
[Program Version: 2]
[V2 Procedure: READ (6)]
file
[hash (CRC-32): 0xcdddf154]
FileHandle: 010004010100540020bb3809040054002f2edde4000000000000000000000000
Offset: 0
Count: 1024
Total Count: 0
```
From packet 12 V2 READ Reply
```
Remote Procedure Call, Type:Reply XID:0x000050e1
XID: 0x000050e1 (20705)
Message Type: Reply (1)
[Program: NFS (100003)]
[Program Version: 2]
[Procedure: READ (6)]
Reply State: accepted (0)
[This is a reply to a request in frame 11]
[Time from request: 94.000 microseconds]
Verifier
Flavor: AUTH_NULL (0)
Length: 0
Accept State: RPC executed successfully (0)
Network File System, READ Reply Error: NFS2ERR_IO
[Program Version: 2]
[V2 Procedure: READ (6)]
Status: NFS2ERR_IO (5)
```
I can locally revert this commit in our kernel, but is there any other way
to get it working again?
Thanks in advance.
Best regards Jörg
--
Optimisten haben gar keine Ahnung von den freudigen Überraschungen, die
Pessimisten erleben.
(Peter Bramm)
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
next prev parent reply other threads:[~2026-08-28 9:07 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-10 0:28 [PATCH 0/2] Address minor issues with status codes Chuck Lever
2025-12-10 0:28 ` [PATCH 1/2] NFSD: Remove NFSERR_EAGAIN Chuck Lever
2025-12-10 0:28 ` [PATCH 2/2] NFS: NFSERR_INVAL is not defined by NFSv2 Chuck Lever
2026-08-28 8:48 ` Jörg Sommer [this message]
2026-08-28 11:33 ` NeilBrown
2026-08-28 11:59 ` Jörg Sommer
2026-08-28 13:27 ` Chuck Lever
2026-08-28 20:51 ` Tom Rini
2026-08-28 21:06 ` Chuck Lever
2026-08-28 21:18 ` Tom Rini
2026-08-28 22:04 ` Chuck Lever
2026-08-28 22:12 ` Tom Rini
2026-08-28 22:36 ` NeilBrown
2026-08-28 23:14 ` Chuck Lever
2025-12-10 0:49 ` [PATCH 0/2] Address minor issues with status codes Jeff Layton
2025-12-10 1:01 ` NeilBrown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=apE90ZRZB8IW_AiS@jo-so.de \
--to=joerg@jo-so.de \
--cc=cel@kernel.org \
--cc=chuck.lever@oracle.com \
--cc=dai.ngo@oracle.com \
--cc=jlayton@kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=neil@brown.name \
--cc=okorniev@redhat.com \
--cc=tom@talpey.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.