Has anyone heard of or experienced any panics ("vput: negative ref cnt" or "vrele: negative ref cnt") when shutting down a box with more than one zpool? I see this on an amd64 RELENG_7_0 (from yesterday) box: syslogd: exiting on signal 15 panic: vrele: negative ref cnt cpuid = 0 Uptime: 35m13s Physical memory: 4087 MB Dumping 235 MB: And then it just hangs there. Breaking into DDB does not work. Both pools are constructed from GELI-encrypted disks, so I have a script that runs "geli attach" on all the devices and then it does a "zpool import" on the two pools. On shutdown the script does a "zpool export" on the pools and then it detaches the GELI devices. With only one pool it works just fine. The box in question uses GMIRROR for the system disk (two disks, whole disk mirroring). I will try to recreate this on another machine today. It would be nice to have an easy way to repeat this. /Daniel Eriksson
I wrote:> Has anyone heard of or experienced any panics ("vput: > negative ref cnt" or "vrele: negative ref cnt") when > shutting down a box with more than one zpool?After doing some testing I've come up with the following simple steps to recreate the panic: 1. Create the pools and then export them 2. Reboot the computer 3. Import the pools, touch some files on them and then export them again 4. Reboot again -> BOOM! Create the pools ---------------- dd if=/dev/zero of=/usr/_disk1 bs=1m count=128 dd if=/dev/zero of=/usr/_disk2 bs=1m count=128 dd if=/dev/zero of=/usr/_disk3 bs=1m count=128 dd if=/dev/zero of=/usr/_disk4 bs=1m count=128 mdconfig -f /usr/_disk1 -u 1 mdconfig -f /usr/_disk2 -u 2 mdconfig -f /usr/_disk3 -u 3 mdconfig -f /usr/_disk4 -u 4 /etc/rc.d/zfs forcestart zpool create tank1 mirror md1 md2 zpool create tank2 mirror md3 md4 touch /tank1/testfile touch /tank2/testfile zpool export tank1 zpool export tank2 /etc/rc.d/zfs forcestop mdconfig -d -u 1 mdconfig -d -u 2 mdconfig -d -u 3 mdconfig -d -u 4 Import the pools ---------------- mdconfig -f /usr/_disk1 -u 1 mdconfig -f /usr/_disk2 -u 2 mdconfig -f /usr/_disk3 -u 3 mdconfig -f /usr/_disk4 -u 4 /etc/rc.d/zfs forcestart zpool import tank1 zpool import tank2 touch /tank1/testfile touch /tank2/testfile zpool export tank1 zpool export tank2 /etc/rc.d/zfs forcestop mdconfig -d -u 1 mdconfig -d -u 2 mdconfig -d -u 3 mdconfig -d -u 4 /Daniel Eriksson