Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 27 Jul 2024 10:14:53 -0700
From:      Mark Millard <marklmi@yahoo.com>
To:        FreeBSD ARM List <freebsd-arm@freebsd.org>, Current FreeBSD <freebsd-current@freebsd.org>
Subject:   Re: armv7 chroot [and lib32] on aarch64 is getting "nfssvc() ERR#78 'Function not implemented'" for "umount /mnt" of a nfs mounted UFS file system
Message-ID:  <A1A94A5E-FF89-4811-9083-35EF628F2892@yahoo.com>
In-Reply-To: <AC219EDA-9F80-4F75-87C9-2520B516B855@yahoo.com>
References:  <87D92513-97C9-4CFC-8A11-9819375FACAF@yahoo.com> <AC219EDA-9F80-4F75-87C9-2520B516B855@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Jul 26, 2024, at 21:58, Mark Millard <marklmi@yahoo.com> wrote:

> On Jul 26, 2024, at 21:20, Mark Millard <marklmi@yahoo.com> wrote:
>=20
>> The original mount was:
>>=20
>> mount -onoatime 192.168.1.140:/ /mnt
>>=20
>> For reference:
>> 192.168.1.140:/ on =
/usr/obj/DESTDIRs/main-armv7-chroot-ports-official/mnt (nfs, noatime)
>>=20
>> gdb reports:
>>=20
>> Reading symbols from /sbin/umount...
>> Reading symbols from /usr/lib/debug//sbin/umount.debug...
>> [New LWP 100137]
>> Core was generated by `umount /mnt'.
>> Program terminated with signal SIGSYS, Bad system call.
>> Sent by kernel.
>> #0  nfssvc () at nfssvc.S:4
>>=20
>> warning: 4 nfssvc.S: No such file or directory
>> (gdb) bt
>> #0  nfssvc () at nfssvc.S:4
>> #1  0x00021be8 in umountfs (sfs=3Dsfs@entry=3D0xffffce90) at =
/home/pkgbuild/worktrees/main/sbin/umount/umount.c:396
>> #2  0x00022400 in checkname (mntname=3D0xffffddfb "/mnt", =
typelist=3Dtypelist@entry=3D0x0) at =
/home/pkgbuild/worktrees/main/sbin/umount/umount.c:327
>> #3  0x000218a4 in main (argc=3D<optimized out>, argv=3D<optimized =
out>) at /home/pkgbuild/worktrees/main/sbin/umount/umount.c:195
>>=20
>>=20
>> truss's output ends with:
>>=20
>> . . .
>> =
mmap(0x0,20480,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON|MAP_ALIGNED(12),-=
1,0x0) =3D 537321472 (0x2006e000)
>> statfs("/mnt",{ =
fstypename=3Dnfs,mntonname=3D/usr/obj/DESTDIRs/main-armv7-chroot-ports-off=
icial/mnt,mntfromname=3D192.168.1.140:/,fsid=3D18ff003a3a000000 }) =3D 0 =
(0x0)
>> fstatat(AT_FDCWD,"/mnt",{ mode=3Ddrwxr-xr-x =
,inode=3D2,size=3D1536,blksize=3D4096 },0x0) =3D 0 (0x0)
>> fstatat(AT_FDCWD,"/mnt/..",{ mode=3Ddrwxr-xr-x =
,inode=3D73557804,size=3D512,blksize=3D32768 },0x0) =3D 0 (0x0)
>> =
mmap(0x0,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON|MAP_ALIGNED(12),-1=
,0x0) =3D 537219072 (0x20055000)
>> =
mmap(0x0,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON|MAP_ALIGNED(12),-=
1,0x0) =3D 537341952 (0x20073000)
>> nfssvc() ERR#78 'Function not implemented'
>> SIGNAL 12 (SIGSYS) code=3DSI_KERNEL
>> process killed, signal =3D 12 (core dumped)
>>=20
>>=20
>> For reference:
>>=20
>>   if (nfssvc(NFSSVC_DUMPMNTOPTS, &dumpmntopts) >=3D 0) {
>>=20
>>=20
>> armv7 chroot:
>>=20
>> # uname -apKU
>> FreeBSD aarch64-main-pbase 15.0-CURRENT FreeBSD 15.0-CURRENT =
main-n271408-4fab5f005482 GENERIC-NODEBUG arm armv7 1500021 1500021
>>=20
>> # ls -lodTt /var/cache/pkg/*.snap*.pkg | grep -v "^l" | sed -E =
's@^[^/]*(/.*/pkg/([^-]*-)(.*)(\.snap[^~]*)~[^.]*\.pkg)$@\2\4@' | sort =
-ru
>> FreeBSD-.snap20240726110821
>>=20
>>=20
>> aarch64 host:
>>=20
>> # uname -apKU
>> FreeBSD aarch64-main-pbase 15.0-CURRENT FreeBSD 15.0-CURRENT =
main-n271408-4fab5f005482 GENERIC-NODEBUG arm64 aarch64 1500021 1500021
>>=20
>> # ls -lodTt /var/cache/pkg/*.snap*.pkg | grep -v "^l" | sed -E =
's@^[^/]*(/.*/pkg/([^-]*-)(.*)(\.snap[^~]*)~[^.]*\.pkg)$@\2\4@' | sort =
-ru
>> FreeBSD-.snap20240726112037
>>=20
>>=20
>> After exiting the chroot, the aarch64 environment did the unmount =
/mnt just fine.
>=20
>=20
> I set up a context where aarch64 ends up seeing (after chroot
> exit):
>=20
> # df -m
> Filesystem        1M-blocks   Used  Avail Capacity  Mounted on
> /dev/gpt/PBaseUFS   1114846 184896 840761    18%    /
> devfs                     0      0      0     0%    /dev
> /dev/gpt/PBaseEFI       244     26    218    11%    /boot/efi
> 192.168.1.140:/      823229  74755 682616    10%    =
/usr/obj/DESTDIRs/main-armv7-chroot-ports-official/mnt
>=20
> I then used the armv7 umount:
>=20
> # /usr/obj/DESTDIRs/main-armv7-chroot-ports-official/sbin/umount =
/usr/obj/DESTDIRs/main-armv7-chroot-ports-official/mnt
> Bad system call (core dumped)
>=20
> The truss output for such shows:
>=20
> . . .
> freebsd32_getfsstat(0x2004e000,11720,MNT_NOWAIT) =3D 4 (0x4)
> =
freebsd32_mmap(0x0,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON|MAP_ALI=
GNED(12),-1,0x0) =3D 537411584 (0x20084000)
> =
freebsd32_mmap(0x0,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON|MAP_ALIG=
NED(12),-1,0x0) =3D 537423872 (0x20087000)
> =
freebsd32_mmap(0x0,12288,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON|MAP_ALI=
GNED(12),-1,0x0) =3D 537427968 (0x20088000)
> #155() ERR#78 'Function not implemented'
> SIGNAL 12 (SIGSYS) code=3DSI_KERNEL
> process killed, signal =3D 12 (core dumped)
>=20
>=20
> Side note:
>=20
> # more ~/pkgbase-snapshot-list.sh=20
> #! /bin/sh
> ls -lodTt /var/cache/pkg/*.snap*.pkg | grep -v "^l" | sed -E =
's@^[^/]*(/.*/pkg/([^-]*-)(.*)(-[0-9][0-9]\.snap[^~]*)~[^.]*\.pkg)$@\2*\4@=
' | sort -ru
>=20
> results in the likes of:
>=20
> # ~/pkgbase-snapshot-list.sh
> FreeBSD-*-15.snap20240726112037
>=20
> that reads a little better.

I looked around and this lack of support is deliberate and
has been long term.

That tells me that, despite the amount of nfs mount/umount
activity of UFS file systems I've done over the years, I
just happened to have not done such from a chroot context
before, at least for the umount side of the pair.


=3D=3D=3D
Mark Millard
marklmi at yahoo.com




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?A1A94A5E-FF89-4811-9083-35EF628F2892>