Alexander Zagrebin
2010-Nov-12 11:58 UTC
8.1-STABLE: problem with unmounting ZFS snapshots
I have found that there is an issue with unmounting ZFS snapshots: the /sbin/umount "hangs" after unmounting. The test system is i386, but I can reproduce this issue on amd64 too. # uname -a FreeBSD alpha.vosz.local 8.1-STABLE FreeBSD 8.1-STABLE #0: Tue Oct 19 18:47:05 MSD 2010 root@alpha.vosz.local:/usr/obj/usr/src/sys/GENERIC i386 How to try to repeat: # zfs snapshot pool/var@test # zfs list -t all -r pool/var NAME USED AVAIL REFER MOUNTPOINT pool/var 4,86M 2,99G 4,86M /var pool/var@test 0 - 4,86M - # mount -t zfs pool/var@test /mnt # mount ... pool/var@test on /mnt (zfs, local, noatime, read-only) # umount /mnt At this point umount hangs and it's impossible to kill it even with the `kill -9`.>From the working console I can see that:1. snapshot is unmounted successfully # mount pool/root on / (zfs, local) devfs on /dev (devfs, local, multilabel) pool/home on /home (zfs, local) pool/tmp on /tmp (zfs, local) pool/usr on /usr (zfs, local) pool/usr/src on /usr/src (zfs, local) pool/var on /var (zfs, local) 2. the umount is waiting for disk #ps | egrep 'PID|umount' PID TT STAT TIME COMMAND 958 0 D+ 0:00,04 umount /mnt # procstat -t 958 PID TID COMM TDNAME CPU PRI STATE WCHAN 958 100731 umount - 3 133 sleep mntref Can anybody confirm this issue? Any suggestions? -- Alexander Zagrebin
on 12/11/2010 13:57 Alexander Zagrebin said the following:> 2. the umount is waiting for disk > #ps | egrep 'PID|umount' > PID TT STAT TIME COMMAND > 958 0 D+ 0:00,04 umount /mnt > # procstat -t 958 > PID TID COMM TDNAME CPU PRI STATE WCHAN > 958 100731 umount - 3 133 sleep mntrefprocstat -kk <pid>> Can anybody confirm this issue? > Any suggestions? >ktrace-ing umount could also be useful. -- Andriy Gapon