Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Apr 2006 17:48:40 +0300
From:      Kostik Belousov <kostikbel@gmail.com>
To:        Pawel Jakub Dawidek <pjd@freebsd.org>
Cc:        freebsd-fs@freebsd.org
Subject:   Re: vn_start_write(9) recursion ?
Message-ID:  <20060428144840.GA4436@deviant.kiev.zoral.com.ua>
In-Reply-To: <20060428142349.GE864@garage.freebsd.pl>
References:  <20060428120855.GB1270@deviant.kiev.zoral.com.ua> <20060428140205.GD864@garage.freebsd.pl> <20060428141617.GD1270@deviant.kiev.zoral.com.ua> <20060428142349.GE864@garage.freebsd.pl>

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

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

On Fri, Apr 28, 2006 at 04:23:49PM +0200, Pawel Jakub Dawidek wrote:
> On Fri, Apr 28, 2006 at 05:16:17PM +0300, Kostik Belousov wrote:
> +> On Fri, Apr 28, 2006 at 04:02:05PM +0200, Pawel Jakub Dawidek wrote:
> +> > On Fri, Apr 28, 2006 at 03:08:55PM +0300, Kostik Belousov wrote:
> +> > +> vn_start_write(9) shall not be called recursively (at least, not =
without
> +> > +> V_NOWAIT flag). Otherwise, system may deadlock if vn_write_suspen=
d(9)
> +> > +> is called between.
> +> >=20
> +> > Yes, you are right. Nice catch, actually.
> +> >=20
> +> > I hacked this patch to detect it:
> +> >=20
> +> > 	http://people.freebsd.org/~pjd/patches/vn_start_write_recursion.pat=
ch
> +> >=20
> +> > And it panics on boot.
> +>=20
> +> Incredible ! Please, commit it !
>=20
> Not sure if this is good idea to abuse td_pflags for debugging
> purpose... But we have plenty of room in there, so maybe its worth it.
> I'll ask few other guys what they think about it.
>=20
> +> This would save me at least a day starring at struct mount with
> +> mnt_writeopcount and (still) no writers.
> +>=20
> +> For instance, such situation occurs in quotactl/quotaoff case.
>=20
> This could be the hang I'm chasing, btw:)

This deadlock manifests itself as bunch of processes in "suspfs" state
and (usually) mksnap_ffs in "suspwt" state, without any other blocks.
One of the "suspfs"-blocked processes called vn_start_write recursively.
It seems that for the main tree there is no other way to produce the
deadlock situation except running mksnap.

--azLHFNyN32YCQGCU
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (FreeBSD)

iD8DBQFEUitHC3+MBN1Mb4gRAq13AJ0fSvOCvucqemobYmyAsJNzKc2MPwCg2Ca5
UxBuqTSuOK0FF/GGk4WNqLs=
=XkZF
-----END PGP SIGNATURE-----

--azLHFNyN32YCQGCU--



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