OpenSolaris

Printable Version Enter a New Search
Bug ID 6627433
Synopsis ASSERT: list_is_empty(&zilog->zl_lwb_list), zil.c, line 488
State 10-Fix Delivered (Fix available in build)
Category:Subcategory kernel:zfs
Keywords
Responsible Engineer Neil Perrin
Reported Against snv_77 , snv_80
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_82
Fixed In snv_82
Release Fixed solaris_nevada(snv_82) , solaris_10u6(s10u6_01) (Bug ID:2160913)
Related Bugs 6580645
Submit Date 8-November-2007
Last Update Date 29-April-2008
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>
Work Around
N/A
Comments
N/A