DF-2585 / run.log
DF-2585 on-guest session — stock kernel (6.5-DEVELOPMENT #0 Jul 2 2026), fresh boot
[1] multi-volume ':' syntax cannot build the precondition
$ vnconfig -c -S -T vn0 /root/c2a.img; vnconfig -c -S -T vn1 /root/c2b.img
$ mount_hammer2 /dev/vn0:/dev/vn1@CLUS /mnt/c2
hammer2_mount: device="/dev/vn0:/dev/vn1" label="CLUS"
hammer2_ondisk: "/dev/vn0" ...
hammer2_ondisk: volume id 0 already initialized <- EINVAL (dd-copies share vol id)
mount: Invalid argument (rc=1)
[2] join-mount constructs a 2-chain pmp (clid matching)
$ mount -t hammer2 /dev/vn0@CLUS /mnt/c2 -> FIRST-OK
$ mount_hammer2 /dev/vn1@CLUS /mnt/c2
hammer2_mount: devstr="/dev/vn1@CLUS"
hammer2_mount: "/dev/vn1": no recovery needed
hammer2_mount: hmp=0xfffff801194bc000 pmp=0xfffff80118e20000 <- SAME pmp as vn0's mount
hammer2_mount: PFS already mounted! <- vfsops.c:1455 EBUSY path
mount: Device busy (rc=1)
=> iroot->cluster.nchains == 2 (vn0+vn1 chains), clindex-1 xop threads live:
$ ps ax | grep -c h2xop-CLUS -> 109 threads (clindex 0..5 groups incl. .06-.11 = clindex 1)
=> the dedup loop's execution context (flush.c:1377-1384 at clindex>=1) exists.
[3] light operation probes on the 2-chain mount: OK
$ echo hi > /mnt/c2/probe ; ls /mnt/c2
write rc=0 / probe / ls rc=0
[4] stress: 60s parallel churn (creates/deletes/renames/chmod on files and on
the mount root = iroot metadata churn, stress.sh) + tight sync loop
-> NO crash, NO panic, NO kernel messages, guest alive (load 0.00), only the
(independent, known) local-multi-master quorum wedge: a `sync` parked in
D-state on wchan h2inode; light ops before/after fine.
$ ps: I3 wait sh /root/stress2585.sh 60
D2 h2inode sync
Guest stayed up (vm.sh status: up). The unlocked read at flush.c:1378-1379
executed on every VOLHDR flush of the 60s sync loop (clindex-1 xop) with
maximal concurrent iroot activity — no manifestation of any kind.