Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 6 Apr 2011 04:00:43 -0400
From:      Nathaniel W Filardo <nwf@cs.jhu.edu>
To:        freebsd-current@freebsd.org, freebsd-fs@freebsd.org
Subject:   ZFS panic with concurrent recv and read-heavy workload
Message-ID:  <20110406080043.GQ609@gradx.cs.jhu.edu>

next in thread | raw e-mail | index | archive | help

--NEvmWj2iiHf6S+l1
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

When racing two workloads, one doing
>  zfs recv -v -d testpool
and the other
>  find /testpool -type f -print0 | xargs -0 sha1
I can (seemingly reliably) trigger this panic:

panic: Lock buf_hash_table.ht_locks[i].ht_lock not exclusively locked @ /us=
r/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/arc.=
c:1869                                                 =20
                                                                           =
                           =20
cpuid =3D 1                                                                =
                             =20
KDB: stack backtrace:                                                      =
                           =20
panic() at panic+0x1c8                                                     =
                           =20
_sx_assert() at _sx_assert+0xc4                                            =
                           =20
_sx_xunlock() at _sx_xunlock+0x98                                          =
                           =20
arc_evict() at arc_evict+0x614                                             =
                           =20
arc_get_data_buf() at arc_get_data_buf+0x360                               =
                           =20
arc_buf_alloc() at arc_buf_alloc+0x94                                      =
                           =20
dmu_buf_will_fill() at dmu_buf_will_fill+0xfc
dmu_write() at dmu_write+0xec
dmu_recv_stream() at dmu_recv_stream+0x8a8                                 =
                           =20
zfs_ioc_recv() at zfs_ioc_recv+0x354                                       =
                           =20
zfsdev_ioctl() at zfsdev_ioctl+0xe0                                        =
                           =20
devfs_ioctl_f() at devfs_ioctl_f+0xe8                                      =
                           =20
kern_ioctl() at kern_ioctl+0x294                                           =
                           =20
ioctl() at ioctl+0x198
syscallenter() at syscallenter+0x270
syscall() at syscall+0x74                                                  =
                           =20
-- syscall (54, FreeBSD ELF64, ioctl) %o7=3D0x40c13e24 --                  =
                             =20
userland() at 0x40e72cc8                                                   =
                           =20
user trace: trap %o7=3D0x40c13e24                                          =
                             =20
pc 0x40e72cc8, sp 0x7fdffff4641
pc 0x40c158f4, sp 0x7fdffff4721                                            =
                           =20
pc 0x40c1e878, sp 0x7fdffff47f1                                            =
                           =20
pc 0x40c1ce54, sp 0x7fdffff8b01                                            =
                           =20
pc 0x40c1dbe0, sp 0x7fdffff9431                                            =
                           =20
pc 0x40c1f718, sp 0x7fdffffd741                                            =
                           =20
pc 0x10731c, sp 0x7fdffffd831                                              =
                           =20
pc 0x10c90c, sp 0x7fdffffd8f1                                              =
                           =20
pc 0x103ef0, sp 0x7fdffffe1d1                                              =
                           =20
pc 0x4021aff4, sp 0x7fdffffe291                                            =
                           =20
done

The machine is a freshly installed and built sparc64 2-way SMP, running
today's -CURRENT with
http://people.freebsd.org/~mm/patches/zfs/zfs_ioctl_compat_bugfix.patch
applied.  Of note, it has only 1G of RAM in it, so kmem_max <=3D 512M.

Thoughts?  More information?  Thanks in advance.
--nwf;

--NEvmWj2iiHf6S+l1
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)

iEYEARECAAYFAk2cHasACgkQTeQabvr9Tc+K4QCeOE6VM+JEoPVsvgDXPpIhSuG/
Nq4Ani1uL00nzKfhxpAQRxWCc51hWxw2
=ep5z
-----END PGP SIGNATURE-----

--NEvmWj2iiHf6S+l1--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110406080043.GQ609>