[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <74e68adc-2f52-42bb-a459-4e8791fcb7f0@windriver.com>
Date: Sat, 24 May 2025 01:18:57 +0800
From: "Yan, Haixiao (CN)" <haixiao.yan.cn@...driver.com>
To: NeilBrown <neil@...wn.name>
Cc: chuck.lever@...cle.com, stable@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: nfs mount failed with ipv6 addr
On 5/23/2025 8:13 PM, NeilBrown wrote:
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>
> On Fri, 23 May 2025, Yan, Haixiao (CN) wrote:
>> On 5/23/2025 3:42 PM, NeilBrown wrote:
>>> CAUTION: This email comes from a non Wind River email account!
>>> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>>>
>>> On Fri, 23 May 2025, Yan, Haixiao (CN) wrote:
>>>> On 5/23/2025 7:21 AM, NeilBrown wrote:
>>>>> CAUTION: This email comes from a non Wind River email account!
>>>>> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>>>>>
>>>>> On Thu, 22 May 2025, Haixiao Yan wrote:
>>>>>> On 2025/5/22 07:32, NeilBrown wrote:
>>>>>>> CAUTION: This email comes from a non Wind River email account!
>>>>>>> Do not click links or open attachments unless you recognize the sender and know the content is safe.
>>>>>>>
>>>>>>> On Thu, 22 May 2025, Yan, Haixiao (CN) wrote:
>>>>>>>> On linux-5.10.y, my testcase run failed:
>>>>>>>>
>>>>>>>> root@...el-x86-64:/opt/wr-test/testcases/userspace/nfs-utils_v6# mount -t nfs [::1]:/mnt/nfs_root /mnt/v6 -o nfsvers=3
>>>>>>>> mount.nfs: requested NFS version or transport protocol is not supported
>>>>>>>>
>>>>>>>> The first bad commit is:
>>>>>>>>
>>>>>>>> commit 7229200f68662660bb4d55f19247eaf3c79a4217
>>>>>>>> Author: Chuck Lever <chuck.lever@...cle.com>
>>>>>>>> Date: Mon Jun 3 10:35:02 2024 -0400
>>>>>>>>
>>>>>>>> nfsd: don't allow nfsd threads to be signalled.
>>>>>>>>
>>>>>>>> [ Upstream commit 3903902401451b1cd9d797a8c79769eb26ac7fe5 ]
>>>>>>>>
>>>>>>>>
>>>>>>>> Here is the test log:
>>>>>>>>
>>>>>>>> root@...el-x86-64:/opt/wr-test/testcases/userspace/nfs-utils_v6# dd if=/dev/zero of=/tmp/nfs.img bs=1M count=100
>>>>>>>> 100+0 records in
>>>>>>>> 100+0 records out
>>>>>>>> 104857600 bytes (105 MB, 100 MiB) copied, 0.0386658 s, 2.7 GB/s
>>>>>>>> root@...el-x86-64:/opt/wr-test/testcases/userspace/nfs-utils_v6# mkfs /tmp/nfs.img
>>>>>>>> mke2fs 1.46.1 (9-Feb-2021)
>>>>>>>> Discarding device blocks: 1024/102400............. .............done
>>>>>>>> Creating filesystem with 102400 1k blocks and 25688 inodes
>>>>>>>> Filesystem UUID: 77e3bc56-46bb-4e5c-9619-d9a0c0999958
>>>>>>>> Superblock backups stored on blocks:
>>>>>>>> 8193, 24577, 40961, 57345, 73729
>>>>>>>>
>>>>>>>> Allocating group tables: 0/13..... .....done
>>>>>>>> Writing inode tables: 0/13..... .....done
>>>>>>>> Writing superblocks and filesystem accounting information: 0/13..... .....done
>>>>>>>> root@...el-x86-64:/opt/wr-test/testcases/userspace/nfs-utils_v6# mount /tmp/nfs.img /mnt
>>>>>>>>
>>>>>>>> root@...el-x86-64:/opt/wr-test/testcases/userspace/nfs-utils_v6# mkdir /mnt/nfs_root
>>>>>>>>
>>>>>>>> root@...el-x86-64:/opt/wr-test/testcases/userspace/nfs-utils_v6# touch /etc/exports
>>>>>>>>
>>>>>>>> root@...el-x86-64:/opt/wr-test/testcases/userspace/nfs-utils_v6# echo '/mnt/nfs_root *(insecure,rw,async,no_root_squash)' >> /etc/exports
>>>>>>>>
>>>>>>>> root@...el-x86-64:/opt/wr-test/testcases/userspace/nfs-utils_v6# /opt/wr-test/bin/svcwp.sh nfsserver restart
>>>>>>>> stopping mountd: done
>>>>>>>> stopping nfsd: ..........failed
>>>>>>>> using signal 9:
>>>>>>>> ..........failed
>>>>>>> What does your "nfsserver" script do to try to stop/restart the nfsd?
>>>>>>> For a very long time the approved way to stop nfsd has been to run
>>>>>>> "rpc.nfsd 0". My guess is that whatever script you are using still
>>>>>>> trying to send a signal to nfsd. That no longer works.
>>>>>>>
>>>>>>> Unfortunately the various sysv-init scripts for starting/stopping nfsd
>>>>>>> have never been part of nfs-utils so we were not able to update them.
>>>>>>> nfs-utils *does* contain systemd unit files for sites which use systemd.
>>>>>>>
>>>>>>> If you have a non-systemd way of starting/stopping nfsd, we would be
>>>>>>> happy to make the relevant scripts part of nfs-utils so that we can
>>>>>>> ensure they stay up to date.
>>>>>> Actually, we use service nfsserver restart =>
>>>>>> /etc/init.d/nfsserver =>
>>>>>>
>>>>>> stop_nfsd(){
>>>>>> # WARNING: this kills any process with the executable
>>>>>> # name 'nfsd'.
>>>>>> echo -n 'stopping nfsd: '
>>>>>> start-stop-daemon --stop --quiet --signal 1 --name nfsd
>>>>>> if delay_nfsd || {
>>>>>> echo failed
>>>>>> echo ' using signal 9: '
>>>>>> start-stop-daemon --stop --quiet --signal 9 --name nfsd
>>>>>> delay_nfsd
>>>>>> }
>>>>>> then
>>>>>> echo done
>>>>>> else
>>>>>> echo failed
>>>>>> fi
>>>>> The above should all be changed to
>>>>> echo -n 'stopping nfsd: '
>>>>> rpc.nfsd 0
>>>>> echo done
>>>>>
>>>>> or similar. What distro are you using?
>>>>>
>>>>> I can't see how this would affect your problem with IPv6 but it would be
>>>>> nice if you could confirm that IPv6 still doesn't work even after
>>>>> changing the above.
>>>>> What version of nfs-utils are you using?
>>>>> Are you should that the kernel has IPv6 enabled? Does "ping6 ::1" work?
>>>>>
>>>>> NeilBrown
>>>>>
>>>> It works as expected.
>>>>
>>>> My distro is Yocto and nfs-utils 2.5.3.
>>> Thanks. I've sent a patch to openembedded to change the nfsserver
>>> script.
>>>
>>> Can you make the change to nfsserver and let me know if it fixes your
>>> problem?
>> What's the version of your nfs-utils?
> The patch isn't against nfs-utils. It is against openembedded-core
> https://git.openembedded.org/openembedded-core
> which is what yocto is based on.
>
> I was expecting you to manually edit /etc/init.d/nfsserver to make the
> changes.
> Or you could possibly:
>
> patch /etc/init.d/nfssever < THE-PATCH
>
> NeilBrown
>
I have verified the patch, it works as expected.
$ cat 0001-nfs-utils-don-t-use-signals-to-shut-down-nfs-server.patch
From d99df205d0aca0703a49834df39435442044433b Mon Sep 17 00:00:00 2001
From: NeilBrown <neil@...wn.name>
Date: Fri, 23 May 2025 23:58:09 +0800
Subject: [PATCH] nfs-utils: don't use signals to shut down nfs server
Since Linux v2.4 it has been possible to stop all NFS server by running
rpc.nfsd 0
i.e. by requesting that zero threads be running. This is preferred as
it doesn't risk killing some other process which happens to be called
"nfsd".
Since Linux v6.6 - and other stable kernels to which
Commit: 390390240145 ("nfsd: don't allow nfsd threads to be
signalled.")
has been backported - sending a signal no longer works to stop nfs server
threads.
This patch changes the nfsserver script to use "rpc.nfsd 0" to stop
server threads.
Signed-off-by: NeilBrown <neil@...wn.name>
Signed-off-by: Haixiao Yan <haixiao.yan.cn@...driver.com>
---
.../nfs-utils/nfs-utils/nfsserver | 28 +++----------------
1 file changed, 4 insertions(+), 24 deletions(-)
diff --git a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver
b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver
index 0f5747cc6db9..053980271c05 100644
--- a/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver
+++ b/meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver
@@ -66,34 +66,14 @@ start_nfsd(){
start-stop-daemon --start --exec "$NFS_NFSD" -- "$@"
echo done
}
-delay_nfsd(){
- for delay in 0 1 2 3 4 5 6 7 8 9
- do
- if pidof nfsd >/dev/null
- then
- echo -n .
- sleep 1
- else
- return 0
- fi
- done
- return 1
-}
stop_nfsd(){
- # WARNING: this kills any process with the executable
- # name 'nfsd'.
echo -n 'stopping nfsd: '
- start-stop-daemon --stop --quiet --signal 1 --name nfsd
- if delay_nfsd || {
- echo failed
- echo ' using signal 9: '
- start-stop-daemon --stop --quiet --signal 9 --name nfsd
- delay_nfsd
- }
+ $NFS_NFSD 0
+ if pidof nfsd
then
- echo done
- else
echo failed
+ else
+ echo done
fi
}
--
2.34.1
Thanks,
Haixiao
>> The patch failed to apply.
>>
>> $ git am '[PATCH OE-core] nfs-utils don'\''t use signals to shut down
>> nfs server. - '\''NeilBrown '\'' (neil@...wn.name) - 2025-05-23
>> 1541.eml' Applying: nfs-utils: don't use signals to shut down nfs
>> server. error: patch failed:
>> meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver:89 error:
>> meta/recipes-connectivity/nfs-utils/nfs-utils/nfsserver: patch does not
>> apply Patch failed at 0001 nfs-utils: don't use signals to shut down nfs
>> server. hint: Use 'git am --show-current-patch=diff' to see the failed
>> patch When you have resolved this problem, run "git am --continue". If
>> you prefer to skip this patch, run "git am --skip" instead. To restore
>> the original branch and stop patching, run "git am --abort".
>>
>> Thanks,
>>
>> Haixiao
>>
>>> Thanks,
>>> NeilBrown
Powered by blists - more mailing lists