Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 Nov 2021 13:19:18 +1100
From:      Peter Jeremy <peter@rulingia.com>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org
Subject:   Re: git: 8ef0c11e7ce7 - main - nfsclient: upgrade vnode lock in VOP_OPEN()/VOP_CLOSE() if we need to flush buffers
Message-ID:  <YZ2hJkPwiAKvhWQ7@server.rulingia.com>
In-Reply-To: <YZyyGdErowNF1pWv@kib.kiev.ua>
References:  <202111161714.1AGHEtBA084291@gitrepo.freebsd.org> <YZyhpJ9TrbTpjths@server.rulingia.com> <YZyyGdErowNF1pWv@kib.kiev.ua>

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

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

On 2021-Nov-23 11:19:21 +0200, Konstantin Belousov <kostikbel@gmail.com> wr=
ote:
>On Tue, Nov 23, 2021 at 07:09:08PM +1100, Peter Jeremy wrote:
>> On 2021-Nov-16 17:14:55 +0000, Konstantin Belousov <kib@FreeBSD.org> wro=
te:
>> >    nfsclient: upgrade vnode lock in VOP_OPEN()/VOP_CLOSE() if we need =
to flush buffers
>> >   =20
>> >    VOP_FSYNC() asserts that the vnode is exclusively locked for NFS.
>> >    If we try to execute file with recently modified content, the asser=
t is
>> >    triggered.
>>=20
>> I have a diskless arm64 system configured with swap over NFS and I'm
>> now consistently getting a panic during shutdown.  I haven't
>> specificially confirmed that it's this commit but the content is
>> suggestive.
>>=20
>> panic: upgrade of unlocked lock (lockmgr) nfs @ /usr/src/sys/fs/nfsclien=
t/nfs_clvnops.c:855
>> cpuid =3D 3
>> time =3D 1637166551
>> KDB: stack backtrace:
>> db_trace_self() at db_trace_self
>> db_trace_self_wrapper() at db_trace_self_wrapper+0x30
>> vpanic() at vpanic+0x178
>> panic() at panic+0x44
>> witness_upgrade() at witness_upgrade+0x104
>> lockmgr_upgrade() at lockmgr_upgrade+0x164
>> nfs_lock() at nfs_lock+0x2c
>> vop_sigdefer() at vop_sigdefer+0x30
>> _vn_lock() at _vn_lock+0x54
>> nfs_close() at nfs_close+0xc8
>> vop_sigdefer() at vop_sigdefer+0x30
>> VOP_CLOSE_APV() at VOP_CLOSE_APV+0x2c
>> swapdev_close() at swapdev_close+0x3c
>> swapoff_one() at swapoff_one+0x598
>> sys_swapoff() at sys_swapoff+0x12c
>> do_el0_sync() at do_el0_sync+0x498
>> handle_el0_sync() at handle_el0_sync+0x90
>> --- exception, esr 0x56000000
>>=20
>> I presume this isn't intended.  Can you suggest where I should start
>> looking for the problem?
>
>Try this please.  It might be also useful to enable DEBUG_VFS_LOCKS in your
>kernel config, to catch all related issues once.

Thanks for the rapid response.  I've found that DEBUG_VFS_LOCKS also
requires INVARIANTS.  That now catches swapon as well:
KDB: stack backtrace:
db_trace_self() at db_trace_self
db_trace_self_wrapper() at db_trace_self_wrapper+0x30
assert_vop_locked() at assert_vop_locked+0x58
VOP_GETATTR_APV() at VOP_GETATTR_APV+0x4c
sys_swapon() at sys_swapon+0x2c0
do_el0_sync() at do_el0_sync+0x4a4
handle_el0_sync() at handle_el0_sync+0x90
--- exception, esr 0x56000000
vnode 0xffffa000065511c0: type VREG
    usecount 1, writecount 0, refcount 1 seqc users 0
    hold count flags ()
    flags (VV_VMSIZEVNLOCK)
    lock type nfs: UNLOCKED
        fileid 30984 fsid 0x3a3a00ff01
VOP_GETATTR: 0xffffa000065511c0 is not locked but should be
KDB: enter: lock violation
[ thread pid 1027 tid 100159 ]
Stopped at      kdb_enter+0x48: undefined       f900c11f

I will dig into that further this evening.

--=20
Peter Jeremy

--lpqbkyaBU6BTja4R
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQKTBAEBCgB9FiEE7rKYbDBnHnTmXCJ+FqWXoOSiCzQFAmGdoSBfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEVF
QjI5ODZDMzA2NzFFNzRFNjVDMjI3RTE2QTU5N0EwRTRBMjBCMzQACgkQFqWXoOSi
CzRXyg//YhsbNWvS+kiv4L4qtesNi2ZBzqUEx2Hykq9Ww8U3zgauF7rkCurE5WXO
68k8ALwOyDkGPo8oev867rayvHouY6bvErJotlWLdlxHa/aUAHjEBB9ulZ8CBT9C
BMZ2TrzKSby5lCmcXpVsGd6diXYjwvkJAXvN/EV8wm9TuRlllWpi5FAzckn+UXzw
5oFktWKPDKB4lMrwZMpTwSU+Cj8/GTSioRmqsnqa7zkT1FjwaNyJ8qJKBBlIpkhK
dOe5sjXLRKJaynJqfy12qQPsjeauPPIzFdri7nkH+jINi5e+bBbfhD1UFaBgmlM7
cp9O24nQLi4Sdo0WHfMXyztDiO9+1R3De/Ys3w9whZDySrbqwwIrtzWOdHu0PnpC
k8PhHsgPZE0WNqtkUa6BlhjJ9FicfujxztdzywuP+vx2tBFgyIGKQC7uWgoVZ1qR
LL5sNOEfEu2XPYeGKBjjaEiJXrgNTCc3KGOjyXfTZEaFgO+llTo865q/30oayhsK
IMZRE+A4zyXcw0c/TshxVGYikwWS4CgW7BIrMNwfxLOPasFD0HRaD+taR+Fj1KyA
Bn7pvaPAWcUFgoEH2aOGG59j2islQSgYTHa6StxZBBcLPFQNfVEd9+oTLi0yTYV9
sjwuJvfBfjH/TtJ2Z2v46xNHKlDEY+KJrlg+fwK299SZkXS1plI=
=Kf6x
-----END PGP SIGNATURE-----

--lpqbkyaBU6BTja4R--



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