|
Description
|
While doing a zfs rollback on my desktop, I got a panic in zil_rollback_destroy():
assertion failed: list_is_empty(&zilog->zl_lwb_list), file: ../../common/fs/zfs/
zil.c, line: 488
ffffff001fe01990 genunix:assfail+7e ()
ffffff001fe019d0 zfs:zil_rollback_destroy+c1 ()
ffffff001fe01a70 zfs:dsl_dataset_rollback_sync+5a ()
ffffff001fe01ac0 zfs:dsl_sync_task_group_sync+f2 ()
ffffff001fe01b30 zfs:dsl_pool_sync+fc ()
ffffff001fe01bd0 zfs:spa_sync+1d5 ()
ffffff001fe01c60 zfs:txg_sync_thread+221 ()
ffffff001fe01c70 unix:thread_start+8 ()
Perhaps another flavor of 6603147?
It's quite easy to reproduce it while rollback a live zfs root filesystem.
# df -k
Filesystem kbytes used avail capacity Mounted on
rootpool/rootfs 35094528 6368348 27354751 19% /
/devices 0 0 0 0% /devices
/dev 0 0 0 0% /dev
ctfs 0 0 0 0% /system/contract
proc 0 0 0 0% /proc
mnttab 0 0 0 0% /etc/mnttab
swap 2313628 980 2312648 1% /etc/svc/volatile
objfs 0 0 0 0% /system/object
sharefs 0 0 0 0% /etc/dfs/sharetab
/usr/lib/libc/libc_hwcap1.so.1
33723099 6368348 27354751 19% /lib/libc.so.1
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
rootpool 7.38G 26.1G 23.5K /rootpool
rootpool/clone-markm 89.5K 26.1G 6.07G legacy
rootpool/clone-swapdump 430M 26.1G 4.42G legacy
rootpool/rootfs 6.96G 26.1G 6.07G legacy
rootpool/rootfs@onnv20071114 466M - 4.42G -
rootpool/rootfs@onnv20071203 425M - 6.07G -
# zfs rollback rootpool/rootfs@onnv20071203
panic[cpu1]/thread=ca0a6de0: assertion failed: list_is_empty(&zilog->zl_lwb_list), file: ../../common/fs/zfs/zil.c, line: 488
ca0a6be0 genunix:assfail+5a (f9106658, f910679c,)
ca0a6c10 zfs:zil_rollback_destroy+b6 (ca34fc80, e398d690)
ca0a6c78 zfs:dsl_dataset_rollback_sync+37 (c84a2400, e7dd0cc0,)
ca0a6cb0 zfs:dsl_sync_task_group_sync+ec (db4ffa00, e398d690)
ca0a6cfc zfs:dsl_pool_sync+f9 (c84a3200, ba692cf, )
ca0a6d6c zfs:spa_sync+24a (c8f14a00, ba692cf, )
ca0a6dc8 zfs:txg_sync_thread+25a (c84a3200, 0)
ca0a6dd8 unix:thread_start+8 ()
steps to reproduce:
bfu 2007-12-17
zfs create foo/test
zfs set sharenfs=on foo/test
chmod a+rwx /foo/test
client$ /home/ahrens/toucher /net/server/foo/test
zfs snapshot foo/test@snap
client$ ^c to kill toucher
... wait long enough for server to finish writing everything (10 seconds)
zfs rollback foo/test@snap
panic
dump in /net/zion.eng/export/dumps/ahrens/6627433/
Very easy to reproduce. Any synchronous activity between the snapshot
and the rollback will panic:
: mull ; zfs snapshot whirl@snap
: monopoly ; touch /net/mull/whirl/a
: mull ; zfs rollback whirl@snap
<panic>
|