From owner-freebsd-current@FreeBSD.ORG Sun Apr 8 18:53:51 2007 Return-Path: X-Original-To: freebsd-current@freebsd.org Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 060A516A402; Sun, 8 Apr 2007 18:53:51 +0000 (UTC) (envelope-from pjd@garage.freebsd.pl) Received: from mail.garage.freebsd.pl (arm132.internetdsl.tpnet.pl [83.17.198.132]) by mx1.freebsd.org (Postfix) with ESMTP id 186D513C458; Sun, 8 Apr 2007 18:53:49 +0000 (UTC) (envelope-from pjd@garage.freebsd.pl) Received: by mail.garage.freebsd.pl (Postfix, from userid 65534) id 4AA22487FB; Sun, 8 Apr 2007 20:53:48 +0200 (CEST) Received: from localhost (cvl74.internetdsl.tpnet.pl [83.19.93.74]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.garage.freebsd.pl (Postfix) with ESMTP id 2FD9F45B26; Sun, 8 Apr 2007 20:53:32 +0200 (CEST) Date: Sun, 8 Apr 2007 20:53:12 +0200 From: Pawel Jakub Dawidek To: Max Laier Message-ID: <20070408185312.GY63916@garage.freebsd.pl> References: <20070406025700.GB98545@garage.freebsd.pl> <86k5wo55s0.fsf@dwp.des.no> <200704081910.42852.max@love2party.net> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="TXtETX/xrt1zdi6e" Content-Disposition: inline In-Reply-To: <200704081910.42852.max@love2party.net> X-PGP-Key-URL: http://people.freebsd.org/~pjd/pjd.asc X-OS: FreeBSD 7.0-CURRENT i386 User-Agent: mutt-ng/devel-r804 (FreeBSD) X-Spam-Checker-Version: SpamAssassin 3.0.4 (2005-06-05) on mail.garage.freebsd.pl X-Spam-Level: X-Spam-Status: No, score=-2.5 required=3.0 tests=BAYES_00,RCVD_IN_NJABL_DUL autolearn=no version=3.0.4 Cc: freebsd-fs@freebsd.org, Dag-Erling Sm?rgrav , freebsd-current@freebsd.org Subject: Re: ZFS committed to the FreeBSD base. X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Apr 2007 18:53:51 -0000 --TXtETX/xrt1zdi6e Content-Type: text/plain; charset=iso-8859-2 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sun, Apr 08, 2007 at 07:10:36PM +0200, Max Laier wrote: > On Saturday 07 April 2007 21:43, Dag-Erling Sm?rgrav wrote: > > Pawel Jakub Dawidek writes: > > > Limitations. > > > > > > Currently ZFS is only compiled as kernel module and is only > > > available for i386 architecture. Amd64 should be available very soon, > > > the other archs will come later, as we implement needed atomic > > > operations. > > > > ZFS is now also available on pc98 and amd64. >=20 > panic: lock "zfs:&zap->zap_f.zap_num_entries_mtx" 0xffffff006582c260=20 > already initialized >=20 > While dump/restoreing /usr to zfs. kgdb trace attached. Let me know if= =20 > you need further information. [...] > #10 0xffffffff80295755 in panic (fmt=3D0xffffffff80481bc0 "lock \"%s\" %p= already initialized") at /usr/src/sys/kern/kern_shutdown.c:547 > #11 0xffffffff802bd72e in lock_init (lock=3D0x0, class=3D0xffffffff80a110= 00, name=3D0xa
, > type=3D0x1b1196
, flags=3D1048064) at= /usr/src/sys/kern/subr_lock.c:201 > #12 0xffffffff807f092a in fzap_upgrade (zap=3D0xffffff006582c200, tx=3D0x= ffffff006591dd00) > at /usr/src/sys/modules/zfs/../../contrib/opensolaris/uts/common/fs/z= fs/zap.c:87 > #13 0xffffffff807f42d3 in mzap_upgrade (zap=3D0xffffff006582c200, tx=3D0x= ffffff006591dd00) > at /usr/src/sys/modules/zfs/../../contrib/opensolaris/uts/common/fs/z= fs/zap_micro.c:361 > #14 0xffffffff807f4cd4 in zap_add (os=3D0x0, zapobj=3D1844674407157262336= 0, name=3D0xffffff00060ebc19 "org.eclipse.jdt_3.2.1.r321_v20060905-R4CM1Znk= vre9wC-", > integer_size=3D8, num_integers=3D1, val=3D0xffffffffaeeb6860, tx=3D0x= ffffff006591dd00) > at /usr/src/sys/modules/zfs/../../contrib/opensolaris/uts/common/fs/z= fs/zap_micro.c:622 > #15 0xffffffff80802d06 in zfs_link_create (dl=3D0xffffff0065554140, zp=3D= 0xffffff005ccfac08, tx=3D0xffffff006591dd00, flag=3D1) > at /usr/src/sys/modules/zfs/../../contrib/opensolaris/uts/common/fs/z= fs/zfs_dir.c:564 > #16 0xffffffff8080c01c in zfs_mkdir (ap=3D0xffffffffaeeb6960) at /usr/src= /sys/modules/zfs/../../contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c:14= 74 > #17 0xffffffff804490f9 in VOP_MKDIR_APV (vop=3D0x12, a=3D0xffffffffaeeb69= 60) at vnode_if.c:1234 > #18 0xffffffff80316195 in kern_mkdir (td=3D0xffffff000105e000, path=3D0x5= 149d1
, segflg=3D15549312, mode=3D511) at v= node_if.h:653 > #19 0xffffffff8041abd0 in syscall (frame=3D0xffffffffaeeb6c70) at /usr/sr= c/sys/amd64/amd64/trap.c:825 > #20 0xffffffff8040206b in Xfast_syscall () at /usr/src/sys/amd64/amd64/ex= ception.S:272 > #21 0x000000080071969c in ?? () > Previous frame inner to this frame (corrupt stack?) > (kgdb) f 12 > #12 0xffffffff807f092a in fzap_upgrade (zap=3D0xffffff006582c200, tx=3D0x= ffffff006591dd00) > at /usr/src/sys/modules/zfs/../../contrib/opensolaris/uts/common/fs/z= fs/zap.c:87 > 87 mutex_init(&zap->zap_f.zap_num_entries_mtx, NULL, MUTEX_DEFAULT, 0); > (kgdb) p zap > $1 =3D (zap_t *) 0xffffff006582c200 > (kgdb) p *zap > $2 =3D {zap_objset =3D 0xffffff0001406410, zap_object =3D 12660, zap_dbuf= =3D 0xffffff005ce892d0, zap_rwlock =3D {lock_object =3D { > lo_name =3D 0xffffffff8081b416 "zfs:&zap->zap_rwlock", lo_type =3D = 0xffffffff8081b416 "zfs:&zap->zap_rwlock", lo_flags =3D 41615360, lo_witnes= s_data =3D { > lod_list =3D {stqe_next =3D 0x0}, lod_witness =3D 0x0}}, sx_lock =3D 184= 46742974215086080, sx_recurse =3D 0}, zap_ismicro =3D 0, zap_salt =3D 96591= 0969, > zap_u =3D {zap_fat =3D {zap_phys =3D 0xffffffff81670000, zap_num_entrie= s_mtx =3D {lock_object =3D {lo_name =3D 0x70000
, > lo_type =3D 0x0, lo_flags =3D 2155822976, lo_witness_data =3D {lod_lis= t =3D {stqe_next =3D 0x0}, lod_witness =3D 0x0}}, sx_lock =3D 1, sx_recurse= =3D 0}, > zap_block_shift =3D 0}, zap_micro =3D {zap_phys =3D 0xffffffff81670= 000, zap_num_entries =3D 0, zap_num_chunks =3D 7, zap_alloc_next =3D 0, zap= _avl =3D { > avl_root =3D 0x0, avl_compar =3D 0xffffffff807f3f80 , avl_o= ffset =3D 0, avl_numnodes =3D 1, avl_size =3D 0}}}} fzap_upgrade() changes type from 'zap_micro' to 'zap_fat' and union is used for this (see sys/contrib/opensolaris/uts/common/fs/zfs/sys/zap_impl.h), that's why we see this trash: zap_num_entries_mtx =3D {lock_object =3D {lo_name =3D 0x70000
, lo_type =3D 0x0, lo_flags =3D 2155822976, lo_witness_data =3D {lod_list =3D= {stqe_next =3D 0x0}, lod_witness =3D 0x0}}, sx_lock =3D 1, sx_recurse =3D 0}, I already use kmem_zalloc() (note _z_) for zap allocation in zap_micro.c, so Max is right, that we have to clear this structure here. I'm quite tired of tracking such problems, because our mechanism for detecting already initialized locks is too simple (based on one bit), so I'd prefer to improve it, or just add bzero() to mutex_init(). --=20 Pawel Jakub Dawidek http://www.wheel.pl pjd@FreeBSD.org http://www.FreeBSD.org FreeBSD committer Am I Evil? Yes, I Am! --TXtETX/xrt1zdi6e Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (FreeBSD) iD8DBQFGGToYForvXbEpPzQRAgAnAJ40zrRTU/4AcIe9xZDGxsJH69RUDACfYitt rnhzBOwWqBWTJNSftIX7H70= =AD9U -----END PGP SIGNATURE----- --TXtETX/xrt1zdi6e--