Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Sep 2019 17:44:28 +1000
From:      Peter Jeremy <peter@rulingia.com>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        freebsd-current@FreeBSD.org, freebsd-arm@FreeBSD.org, rmacklem@freebsd.org
Subject:   Re: "Sleeping with non-sleepable lock" in NFS on recent -current
Message-ID:  <20190916074428.GF97181@server.rulingia.com>
In-Reply-To: <20190916063252.GS2559@kib.kiev.ua>
References:  <20190916061205.GE97181@server.rulingia.com> <20190916063252.GS2559@kib.kiev.ua>

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

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

On 2019-Sep-16 09:32:52 +0300, Konstantin Belousov <kostikbel@gmail.com> wr=
ote:
>On Mon, Sep 16, 2019 at 04:12:05PM +1000, Peter Jeremy wrote:
>> I'm consistently seeing panics in the NFS code on recent -current on aar=
m64.
>> The panics are one of the following two:
>> Sleeping on "vmopar" with the following non-sleepable locks held:
>> exclusive sleep mutex NEWNFSnode lock (NEWNFSnode lock) r =3D 0 (0xfffff=
d0078b346f0) locked @ /usr/src/sys/fs/nfsclient/nfs_clport.c:432
>>=20
>> Sleeping thread (tid 100077, pid 35) owns a non-sleepable lock
>>=20
>> Both panics have nearly identical backtraces (see below).  I'm running
>> diskless on a Rock64 with both filesystem and swap over NFS.  The panics
>> can be fairly reliably triggered by any of:
>> * "make -j4 buildworld"
>> * linking the kernel (as part of buildkernel)
>> * "make installworld"
>>=20
>> Has anyone else seen this?
=2E..

>Weird since this should have been fixed long time ago.  Anyway, please
>try the following, it should fix the rest of cases.
>
>diff --git a/sys/fs/nfsclient/nfs_clport.c b/sys/fs/nfsclient/nfs_clport.c
=2E..
>@@ -540,7 +541,7 @@ nfscl_loadattrcache(struct vnode **vpp, struct nfsvatt=
r *nap, void *nvaper,
> 			} else {
> 				np->n_size =3D vap->va_size;
> 				np->n_flag |=3D NSIZECHANGED;
>-				vnode_pager_setsize(vp, np->n_size);
>+				setnsize =3D 1;

Should this else block include a "nsize =3D np->n_size;"?  Without it,
nsize will remain set to 0, which looks wrong.

--=20
Peter Jeremy

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

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

iQKTBAEBCgB9FiEE7rKYbDBnHnTmXCJ+FqWXoOSiCzQFAl1/PVZfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldEVF
QjI5ODZDMzA2NzFFNzRFNjVDMjI3RTE2QTU5N0EwRTRBMjBCMzQACgkQFqWXoOSi
CzQn5A/+KCn/0VbEW0fEq2sWUBEYU7yKurDXKhvlcVYn2QCsBwgzi/PW1TJPUg6X
AGuq/dg4wLRxPVVvtRN42x4x8nxCe2A+hxFtH1bq1JY61sBQZFhCqf+aewA4U2in
oP1cJEbxSuMyZxBHz7RsW/788PNk/Y0gJIvX2GGR3zAc4fnxRCLlRePcQ7MZV1qW
IPyEz1P2jOW5VA6azFQerKe2Qg8K2ZYv+ph589CmdNk66+sSb63DXe2lhA1JPDzV
B3Pgf1oPMjJP4CabpEl+7Q8gQdr5h8kTE1IfRhgXcsdJdukLFCpN/jAzBeBRDf3j
wgsmYoiZ7qLMWnElaC1B9K+wFWwoqmD4E3ljBUi7l0/P8DEbQfht3UY0UBqEZ7XF
HYiSQm5OdPfLzg8SaVVthBNSgh6+fhVE3x7nAXSUlGXQUE5lMjCoYOI7TOPrzSkK
WHbTRStCJSVK7E+uK+kZW5aVNkidnsl/bcre7joJ5FVZqSUHlSuFTA0sEgtUhQ5O
V0xNviITAhlovqFIQD27EiFXjqTqsCHMjZPpEHclSgUrd2fV/ZaNvcSN972sS1j+
e9rxbxCJ+51xKcUyS0C1sHp5qy1xgPuCLb8pSTOeR1+w3D8ZxXpcE0u/msOmycGS
GsuZkpjvGQ9RqEQ5NwPtMffI876TVL4Mos5eKvq0ewTWn5tsbQg=
=cyFK
-----END PGP SIGNATURE-----

--yLVHuoLXiP9kZBkt--



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