Subject: Re: Buffers and vnodes
To: Jason Thorpe <thorpej@shagadelic.org>
From: Daniel Carosone <dan@geek.com.au>
List: tech-kern
Date: 06/27/2007 14:01:17
--L7j14VgZ+PGuoIvj
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Tue, Jun 26, 2007 at 08:42:12PM -0700, Jason Thorpe wrote:
>=20
>  On Jun 26, 2007, at 5:38 PM, Andrew Doran wrote:
>=20
> > It will make it simpler. As I said there's a lot of confusion between
> > what's covered by the long term lock that Unix has had ~forever (B_BUSY=
),
> > and the short term lock (b_interlock) which is fairly recent. I suspect
> > that softdep has contributed to that: it's the only substantial chunk of
> > file system code that's run from an interrupt handler.
>=20
>  ...and that needs to just die.  No part of the file system should ever r=
un=20
>  in an interrupt handler.

Lots of small bits of it do (from biodone).  We've hit this before (eg
via cgd-on-vnd). Softdep is just the substantial example that adds
work there.

Getting the locking straightened out will let it move somewhere else
(kthread(s), continuations/callbacks, tasks in a deeper/smarter io
queue/scheduler like zfs uses, or whatever).

"Cheating" by moving biodone itself to a workqueue+thread(s) might be
worth looking at, if it helps get them out of the big lock and hence
possibly improve concurrency.

--
Dan.

--L7j14VgZ+PGuoIvj
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (NetBSD)

iD8DBQFGgeENEAVxvV4N66cRAq6DAKDocoMejndSwTSoeeX0nrAURxKvoQCfZ3f3
R5ErHmaO0Ryh4d+Rk2UwgWw=
=YY+B
-----END PGP SIGNATURE-----

--L7j14VgZ+PGuoIvj--