I use pkg and poudriere-devel in areas that  I've chroot'ed into. (This
may be unusual and so is noted just in case it turns out to be involved.
I've been doing that for years. Also, when I tried the same without being
chroot'd things behaved normally and worked fine.)

The context does use:

USE_TMPFS=all
TMPFS_BLACKLIST=. . .
TMPFS_BLACKLIST_TMPDIR=${BASEFS}/data/cache/tmp


As of my attempt to update to modern pkg and poudrere after having update
the FreeBSD main vintage, all my attempts fail with the likes of:

[00:00:02] [01] [00:00:00] Builder starting
[00:00:02] [01] [00:00:00] Builder started
[00:00:02] [01] [00:00:00] Building   ports-mgmt/pkg | pkg-2.0.6
[00:00:39] [01] [00:00:37] Finished   ports-mgmt/pkg | pkg-2.0.6: Success 
ending TMPFS: 3.70 GiB
[00:00:39] [02] [00:00:00] Builder starting
[00:00:39] [01] [00:00:00] Building   misc/freebsd-release-manifests | 
freebsd-release-manifests-20250207
[00:00:40] [02] [00:00:01] Builder started
[00:00:40] [02] [00:00:00] Building   devel/bsddialog | bsddialog-1.0.1
[00:00:40] [01] [00:00:01] Finished   misc/freebsd-release-manifests | 
freebsd-release-manifests-20250207: Success ending TMPFS: 2.88 GiB
[00:00:42] [02] [00:00:02] Finished   devel/bsddialog | bsddialog-1.0.1: 
Success ending TMPFS: 2.89 GiB
[00:00:42] [01] [00:00:00] Building   ports-mgmt/portconfig | portconfig-0.6.1_1
[00:00:43] [01] [00:00:01] Finished   ports-mgmt/portconfig | 
portconfig-0.6.1_1: Success ending TMPFS: 2.88 GiB
[00:00:43] [01] [00:00:00] Building   ports-mgmt/poudriere-devel | 
poudriere-devel-3.4.99.20250209
[00:00:46] [01] [00:00:03] Finished   ports-mgmt/poudriere-devel | 
poudriere-devel-3.4.99.20250209: Success ending TMPFS: 2.96 GiB
[00:00:47] Stopping 5 builders
[00:00:47] Creating pkg repository
mount_nullfs: /usr/local/poudriere/data/.m/main-ZNV4-default/ref/packages: 
Resource deadlock avoided
[00:00:47] Error: /usr/local/share/poudriere/bulk.sh:mount_packages:7:Failed to 
mount the packages directory  

It later reports:

[00:00:47] Unmounting file systems
Error: (50608) rm:rm:1: /usr/local/poudriere/data/.m/main-ZNV4-default: Device 
busy

After that the df -m output includes the likes of:

tmpfs                                              144265     0 144265     0%   
 
/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/poudriere/data/.m/main-ZNV4-default

which is the /usr/local/poudriere/data/.m/main-ZNV4-default involved.

I reduced the context down to having the chroot based on
just (showing df -m output from in the chroot session
after the failure, showing just what was put in the chroot
area, other than poudriere's run generates the tmpfs shown):

zoptb/DESTDIRs/main-ZNV4-chroot-ports-local        759185  9745 749439     1%   
 /usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local
devfs                                                   0     0      0     0%   
 /usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/dev
/usr/local/etc/poudriere.conf                      752193  2753 749439     0%   
 /usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/etc/poudriere.conf
tmpfs                                              148322     0 148322     0%   
 
/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/poudriere/data/.m/main-mmjnk-default
/usr/obj/DESTDIRs/main-ZNV4-poud                   751882  2442 749439     0%   
 /usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/obj/DESTDIRs/main-ZNV4-poud
/usr/ports                                         759648 10208 749439     1%   
 /usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/ports

Note the name main-mmjnk-default for this simpler context that is
otherwise similar.

So the rest is local to /usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local
instead of being mount points referencing places outside that.

I then added some echos into poudriere's common.sh and include/fs.sh and saw:

[00:00:02] Stopping 4 builders
About to: findmounts /usr/local/poudriere/data/.m/main-mmjnk-default/04 1
About to: findmounts /usr/local/poudriere/data/.m/main-mmjnk-default/02 1
About to: findmounts /usr/local/poudriere/data/.m/main-mmjnk-default/03 1
About to: findmounts /usr/local/poudriere/data/.m/main-mmjnk-default/01 1
findmounts result:
findmounts result:
findmounts result:
findmounts result: 
/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/poudriere/data/.m/main-mmjnk-default/01/var/db/ports
 
/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/poudriere/data/.m/main-mmjnk-default/01/usr/tests
 
/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/poudriere/data/.m/main-mmjnk-default/01/usr/src
 
/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/poudriere/data/.m/main-mmjnk-default/01/usr/share
 
/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/poudriere/data/.m/main-mmjnk-default/01/usr/ports
 
/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/poudriere/data/.m/main-mmjnk-default/01/usr/lib32
 
/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/poudriere/data/.m/main-mmjnk-default/01/rescue
 
/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/poudriere/data/.m/main-mmjnk-default/01/proc
 
/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/poudriere/data/.m/main-mmjnk-default/01/packages
 
/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/poudriere/data/.m/main-mmjnk-default/01/distfiles
 
/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/poudriere/data/.m/main-mmjnk-default/01/dev/fd
 
/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/poudriere/data/.m/main-mmjnk-default/01/dev
 
/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/poudriere/data/.m/main-mmjnk-default/01/compat/linux/proc
 
/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/usr/local/poudriere/data/.m/main-mmjnk-default/01/.p
[00:00:02] Creating pkg repository
About to: umountfs /usr/local/poudriere/data/.m/main-mmjnk-default/ref/packages
About to: findmounts 
/usr/local/poudriere/data/.m/main-mmjnk-default/ref/packages 0
findmounts result:
About to: /sbin/mount -t nullfs -o rw 
/usr/local/poudriere/data/packages/main-mmjnk-default/.building 
/usr/local/poudriere/data/.m/main-mmjnk-default/ref/packages
mount_nullfs: /usr/local/poudriere/data/.m/main-mmjnk-default/ref/packages: 
Resource deadlock avoided

I'll note that /usr/local/poudriere/data/.m/main-mmjnk-default in the
chroot area is reported to be tmpfs, like the mroe complicated
main-ZNV4-default example.

Nothing else in that area is listed as being tmpfs after the problem.


(That looks to me like it is possibly hitting a new system constraint,
appearently associated with at least chroot contexts.)

I'll note that the example happens to be based on a GPT partition with a
ZFS file system, in ase that somehow matters. (ZFS classically used just
for bectl usage, not other typical reasons.)


The jail creation had been via:

# poudriere jail -c -jmain-mmjnk -m null -M /usr/obj/DESTDIRs/main-ZNV4-poud -S 
/usr/main-src -v 15.0-CURRENT
[00:00:00] Recording filesystem state for clean... done
[00:00:00] Jail main-mmjnk 15.0-CURRENT amd64 is ready to be used

I'll note:

# poudriere ports -l
PORTSTREE METHOD TIMESTAMP           PATH
default   null   2021-04-18 02:05:47 /usr/ports

Entering the chroot had been via:

# chroot /usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/
#

The starting environment in the chroot had:

# pkg -v
1.21.3

# poudriere version
poudriere-git-3.4.99.20250115

from prior activity.


The content of:

/usr/obj/DESTDIRs/main-ZNV4-chroot-ports-local/

is a personal world build that was installed there. (The system boots
to an official PkgBase installed world.) So this is not just official
materials involved in the activity, unfortunately.

===
Mark Millard
marklmi at yahoo.com


Reply via email to