Tester died once with these stacks;
zpool create
1001 zpool_do_create + 2111 (zpool + 22062) [0x10c28d62e]
1001 zpool_create + 536 (libzfs.2.dylib + 79574) [0x10c5de6d6]
1001 zfs_ioctl + 55 (libzfs.2.dylib + 142290) [0x10c5edbd2]
1001 __ioctl + 10 (libsystem_kernel.dylib + 103918) [0x7fff9d1345ee
]
*1001 hndl_unix_scall64 + 22 (kernel + 638358) [0xffffff800029bd96
]
*1001 unix_syscall64 + 597 (kernel + 6442325) [0xffffff8000824d5
5]
*1001 ioctl + 1411 (kernel + 5886867) [0xffffff800079d393]
*1001 fo_ioctl + 123 (kernel + 5580955) [0xffffff800075289b]
*1001 ??? (kernel + 3389156) [0xffffff800053b6e4]
*1001 VNOP_IOCTL + 366 (kernel + 3448670) [0xffffff80005
49f5e]
*1001 spec_ioctl + 163 (kernel + 3492531) [0xffffff800
0554ab3]
*1001 zfsdev_ioctl + 1586 (zfs_ioctl.c:6111,11 in zf
s + 970626) [0xffffff7f83567f82]
*1001 zfs_ioc_pool_create + 547 (zfs_ioctl.c:1413,
10 in zfs + 944659) [0xffffff7f83561a13]
*1001 spa_create + 111 (spa.c:3803,2 in zfs + 57
5807) [0xffffff7f8350793f]
*1001 spl_mutex_enter + 46 (spl-mutex.c:298,5
in spl + 47814) [0xffffff7f82290ac6]
*1001 lck_mtx_lock + 653 (kernel + 622269) [
0xffffff8000297ebd]
zpool destroy
1001 zpool_do_destroy + 310 (zpool + 22694) [0x10c41e8a6]
1001 zpool_destroy + 160 (libzfs.2.dylib + 80067) [0x10c7698c3]
1001 zfs_ioctl + 55 (libzfs.2.dylib + 142290) [0x10c778bd2]
1001 __ioctl + 10 (libsystem_kernel.dylib + 103918) [0x7fff9d1345ee]
*1001 hndl_unix_scall64 + 22 (kernel + 638358) [0xffffff800029bd96]
*1001 unix_syscall64 + 597 (kernel + 6442325) [0xffffff8000824d55]
*1001 ioctl + 1411 (kernel + 5886867) [0xffffff800079d393]
*1001 fo_ioctl + 123 (kernel + 5580955) [0xffffff800075289b]
*1001 ??? (kernel + 3389156) [0xffffff800053b6e4]
*1001 VNOP_IOCTL + 366 (kernel + 3448670) [0xffffff8000549f5e]
*1001 spec_ioctl + 163 (kernel + 3492531) [0xffffff8000554ab3]
*1001 zfsdev_ioctl + 1586 (zfs_ioctl.c:6111,11 in zfs + 970626) [0xffffff7f83567f82]
*1001 zfs_ioc_pool_destroy + 30 (zfs_ioctl.c:1436,10 in zfs + 948238) [0xffffff7f8356280e]
*1001 spa_destroy + 37 (spa.c:4711,10 in zfs + 589269) [0xffffff7f8350add5]
*1001 spa_export_common + 335 (spa.c:4633,3 in zfs + 589615) [0xffffff7f8350af2f]
*1001 txg_wait_synced + 307 (txg.c:693,3 in zfs + 676003) [0xffffff7f835200a3]
*1001 spl_cv_wait + 51 (spl-condvar.c:74,12 in spl + 6767) [0xffffff7f82286a6f]
It would seem zpool destroy waits for the final txg_sync while holding spa_namespace_lock.
and zpool create wants spa_namespace_lock pretty much right away, so what is syncing waiting for?
该提问来源于开源项目:openzfsonosx/zfs