kern/161438: [zfs] [panic] recursed on non-recursive spa_namespace_lock when creating zpool from zvol

Garrett Cooper yanegomi at gmail.com
Sun Oct 9 19:50:14 UTC 2011


>Number:         161438
>Category:       kern
>Synopsis:       [zfs] [panic] recursed on non-recursive spa_namespace_lock when creating zpool from zvol
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Oct 09 19:50:14 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator:     Garrett Cooper
>Release:        10-CURRENT
>Organization:
n/a
>Environment:
FreeBSD fallout.local 10.0-CURRENT FreeBSD 10.0-CURRENT #1 r226046M: Wed Oct  5 22:06:21 PDT 2011     gcooper at fallout.local:/usr/obj/usr/src/sys/FALLOUT  amd64
>Description:
Creating a zpool from a zvol on another zpool causes a deterministic panic due to a non-recursive lock being recursed in ZFS.

The full backtrace from kgdb is:

(kgdb) bt
#0  doadump (textdump=0) at /usr/src/sys/kern/kern_shutdown.c:260
#1  0xffffffff802afc60 in db_dump (dummy=Variable "dummy" is not available.
) at /usr/src/sys/ddb/db_command.c:537
#2  0xffffffff802af251 in db_command (last_cmdp=0xffffffff809662c0, cmd_table=Variable "cmd_table" is not available.
)
    at /usr/src/sys/ddb/db_command.c:448
#3  0xffffffff802af4a0 in db_command_loop ()
    at /usr/src/sys/ddb/db_command.c:501
#4  0xffffffff802b1604 in db_trap (type=Variable "type" is not available.
) at /usr/src/sys/ddb/db_main.c:229
#5  0xffffffff804234d1 in kdb_trap (type=3, code=0, tf=0xffffff834e061270)
    at /usr/src/sys/kern/subr_kdb.c:620
#6  0xffffffff8060ae76 in trap (frame=0xffffff834e061270)
    at /usr/src/sys/amd64/amd64/trap.c:590
#7  0xffffffff805f52cf in calltrap ()
    at /usr/src/sys/amd64/amd64/exception.S:228
#8  0xffffffff8042327b in kdb_enter (why=0xffffffff80693deb "panic", 
    msg=0x80 <Address 0x80 out of bounds>) at cpufunc.h:63
#9  0xffffffff803ee0ac in panic (fmt=Variable "fmt" is not available.
) at /usr/src/sys/kern/kern_shutdown.c:599
#10 0xffffffff803f5b75 in _sx_xlock_hard (sx=Variable "sx" is not available.
)
    at /usr/src/sys/kern/kern_sx.c:486
#11 0xffffffff803f5fab in _sx_xlock (sx=0xffffffff81232240, opts=0, 
    file=0xffffffff81216708 "/usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c", line=877) at sx.h:152
#12 0xffffffff811b2ae6 in zvol_open (pp=0xfffffe01cd900200, flag=1, count=2)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c:877
#13 0xffffffff811b3b69 in zvol_geom_access (pp=0xfffffe01cd900200, acr=1, 
    acw=0, ace=1)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c:2045
#14 0xffffffff8038e7a8 in g_access (cp=0xfffffe01caad1680, dcr=1, dcw=0, dce=1)
    at /usr/src/sys/geom/geom_subr.c:824
#15 0xffffffff811b4a27 in vdev_geom_attach (pp=0xfffffe01cd900200)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c:131
#16 0xffffffff811b58e7 in vdev_geom_open_by_path (vd=0xfffffe01cde67800, 
    check_guid=0)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c:385
#17 0xffffffff811b5c47 in vdev_geom_open (vd=0xfffffe01cde67800, 
    psize=0xffffff834e061748, ashift=0xffffff834e061730)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c:435
#18 0xffffffff8114dfd7 in vdev_open (vd=0xfffffe01cde67800)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c:1148
#19 0xffffffff8114debf in vdev_open_children (vd=0xfffffe01ca09f800)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c:1094
#20 0xffffffff8115c226 in vdev_root_open (vd=0xfffffe01ca09f800, 
    asize=0xffffff834e061838, ashift=0xffffff834e061820)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_root.c:63
#21 0xffffffff8114dfd7 in vdev_open (vd=0xfffffe01ca09f800)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c:1148
#22 0xffffffff8114e9dc in vdev_create (vd=0xfffffe01ca09f800, txg=4, 
    isreplacing=0)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c:1520
#23 0xffffffff8113ab43 in spa_create (pool=0xffffff8003c3e000 "tank2", 
    nvroot=0xfffffe0008ea4140, props=0x0, 
---Type <return> to continue, or q <return> to quit---
    history_str=0xfffffe01cdfb2000 "zpool create tank2 /dev/zvol/tank/zvol", 
    zplprops=0x0)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c:2935
#24 0xffffffff81190bbb in zfs_ioc_pool_create (zc=0xffffff8003c3e000)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c:1223
#25 0xffffffff811974a8 in zfsdev_ioctl (dev=0xfffffe01b116d600, 
    cmd=3583531520, addr=0xffffff8003c3e000 "tank2", flag=3, 
    td=0xfffffe01cddae8c0)
    at /usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c:4992
#26 0xffffffff8036f96a in devfs_ioctl_f (fp=0xfffffe0013012410, 
    com=3583531520, data=Variable "data" is not available.
) at /usr/src/sys/fs/devfs/devfs_vnops.c:744
#27 0xffffffff8043cb6d in kern_ioctl (td=Variable "td" is not available.
) at file.h:278
#28 0xffffffff8043ce00 in sys_ioctl (td=0xfffffe01cddae8c0, 
    uap=0xffffff834e061bc0) at /usr/src/sys/kern/sys_generic.c:681
#29 0xffffffff8060a1ec in amd64_syscall (td=0xfffffe01cddae8c0, traced=0)
    at subr_syscall.c:131
#30 0xffffffff805f55b7 in Xfast_syscall ()
    at /usr/src/sys/amd64/amd64/exception.S:387
#31 0x0000000801e01d4c in ?? ()

I have a coredump saved if someone wants more information on the crash.
>How-To-Repeat:
Execute the following script:

#!/bin/sh

for i in 0 1 2; do
        rm -f md.$i
        touch md.$i
        md=/dev/$(mdconfig -a -f md.$i -s 1g)
        fdisk -Iq $md
        mds="$mds $md"
done
t=tank
v=zvol
zpool create $t $mds
zfs create -V 1g $t/$v
zpool create tank2 /dev/zvol/$t/$v
>Fix:


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list