From owner-freebsd-stable@FreeBSD.ORG Sun Jul 27 18:24:28 2014 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9FC22504 for ; Sun, 27 Jul 2014 18:24:28 +0000 (UTC) Received: from mx0.gentlemail.de (mx0.gentlemail.de [IPv6:2a00:e10:2800::a130]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 0E5C92559 for ; Sun, 27 Jul 2014 18:24:27 +0000 (UTC) Received: from mh0.gentlemail.de (mh0.gentlemail.de [IPv6:2a00:e10:2800::a135]) by mx0.gentlemail.de (8.14.5/8.14.5) with ESMTP id s6RIOOfJ099172; Sun, 27 Jul 2014 20:24:24 +0200 (CEST) (envelope-from h.schmalzbauer@omnilan.de) Received: from titan.inop.mo1.omnilan.net (titan.inop.mo1.omnilan.net [IPv6:2001:a60:f0bb:1::3:1]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mh0.gentlemail.de (Postfix) with ESMTPSA id EB0513CC4; Sun, 27 Jul 2014 20:24:23 +0200 (CEST) Message-ID: <53D543CD.5070607@omnilan.de> Date: Sun, 27 Jul 2014 20:24:13 +0200 From: Harald Schmalzbauer Organization: OmniLAN User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; de-DE; rv:1.9.2.8) Gecko/20100906 Lightning/1.0b2 Thunderbird/3.1.2 MIME-Version: 1.0 To: Konstantin Belousov Subject: Re: panic/lock on 9.3-RELEASE with nullfs/nfs/zfs combination References: <53D12973.3010805@omnilan.de> <20140724165917.GT93733@kib.kiev.ua> <53D1503B.2030200@omnilan.de> <20140724193048.GU93733@kib.kiev.ua> <53D2006C.7090207@omnilan.de> <20140725151448.GY93733@kib.kiev.ua> <53D380B2.2080700@omnilan.de> <20140726114839.GF93733@kib.kiev.ua> <53D5105A.6040204@omnilan.de> <20140727174757.GN93733@kib.kiev.ua> In-Reply-To: <20140727174757.GN93733@kib.kiev.ua> X-Enigmail-Version: 1.1.2 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enig4664F2A2DE975AEBDB8A8BA1" X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (mx0.gentlemail.de [IPv6:2a00:e10:2800::a130]); Sun, 27 Jul 2014 20:24:24 +0200 (CEST) X-Milter: Spamilter (Reciever: mx0.gentlemail.de; Sender-ip: ; Sender-helo: mh0.gentlemail.de; ) Cc: FreeBSD Stable X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 Jul 2014 18:24:28 -0000 This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig4664F2A2DE975AEBDB8A8BA1 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Bez=FCglich Konstantin Belousov's Nachricht vom 27.07.2014 19:47 (localtime): > On Sun, Jul 27, 2014 at 04:44:42PM +0200, Harald Schmalzbauer wrote: >> Bez??glich Konstantin Belousov's Nachricht vom 26.07.2014 13:48 >> (localtime): >> I can't emphasize how much I hate my lousy C skills... Got "format '%#= x' >> expects type 'unsigned int', but argument 3 has type 'u_long' >> [-Wformat]" from the compiler and found out that I can't read/understa= nd >> any part of your patch; not even the syntax :-( >> >> After reading printf(3) I change the 3rd additional line into >> '("ldvp %p fl %#lx dvp %p fl %#lx flags %#x", ldvp, ldvp->v_vflag,' >> ??? A blind man may sometimes hit the mark. > This is because the patch was against HEAD, where I changed type of fla= gs > to not waste space. It was not merged to stable/9 to keep KBI. > >> Here's the panic: >> panic: ldvp 0xfffffe001bafb000 fl 0x1 dvp 0xfffffe01b4e5a9d8 fl 0 flag= s >> 0x120e144 >> vnode vnode 0xfffffe014bc03dc8: 0xfffffe014bc03dc8: tag null, type VDI= R >> tag null, type VDIR >> usecount 1, writecount 0, refcount 1 mountedhere 0 >> usecount 1, writecount 0, refcount 1 mountedhere 0 >> flags (VV_ROOT|VI_ACTIVE) >> flags (VV_ROOT|VI_ACTIVE) >> v_object 0xfffffe014bbf4828 ref 0 pages 0 cleanbuf 0 dirtybuf 0 >> v_object 0xfffffe014bbf4828 ref 0 pages 0 cleanbuf 0 dirtybuf 0 >> lock type zfs: SHARED (count 1) >> lock type zfs: SHARED (count 1) >> vp=3D0xfffffe014bc03dc8, lowervp=3D0xfffffe001bafb000 >> vp=3D0xfffffe014bc03dc8, lowervp=3D0xfffffe001bafb000 > So the root vnode for underlying ZFS filesystem somehow managed to get > two different upper vnodes for nullfs mount. My guess is that the real= > problem is due to inconsistent initialization of v_hash for zfs vnodes.= > It only get set in zfs_vget(), which causes root vnode to have zero > hash initially. > > Please, keep the KASSERT() patch applied, revert the VV_ROOT patch for > nullfs, and apply the following change. Then retest. > > diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.= c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c > index 04160c6..33748fe 100644 > --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c > +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c > @@ -2075,8 +2075,6 @@ zfs_vget(vfs_t *vfsp, ino_t ino, int flags, vnode= _t **vpp) > err =3D vn_lock(*vpp, flags); > if (err !=3D 0) > *vpp =3D NULL; > - else > - (*vpp)->v_hash =3D ino; > return (err); > } > =20 > diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c= b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c > index ac55996..c8f86b8 100644 > --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c > +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c > @@ -1228,9 +1228,10 @@ again: > vnode_t *vp =3D ZTOV(zp); > =20 > err =3D insmntque(vp, zfsvfs->z_vfs); > - if (err =3D=3D 0) > + if (err =3D=3D 0) { > + vp->v_hash =3D obj_num; > VOP_UNLOCK(vp, 0); > - else { > + } else { > zp->z_vnode =3D NULL; > zfs_znode_dmu_fini(zp); > zfs_znode_free(zp); Applyed these two patches along with the KASSERT patch (reverted ROOT_VV) and did the same simple test: No panic, no debug message. So this also fixes my limited and simple test case. Tell me if I can provide anything else, I'll keep that latest patched version running, tomorrow will be regular usage and I'll report again. Thanks, -Harry --------------enig4664F2A2DE975AEBDB8A8BA1 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (FreeBSD) iEYEARECAAYFAlPVQ9cACgkQLDqVQ9VXb8i7pwCgwLh6wpYiMbtrSnfafr49oriK GCcAn2YHfWAAIj53g0Zr2VIUiNJ+Link =KGgb -----END PGP SIGNATURE----- --------------enig4664F2A2DE975AEBDB8A8BA1--