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