Subject: Re: mp->mnt_vnodelist change
To: Bill Studenmund <wrstuden@netbsd.org>
From: Thor Lancelot Simon <tls@rek.tjls.com>
List: tech-kern
Date: 10/19/2006 20:24:39
On Thu, Oct 19, 2006 at 03:54:06PM -0700, Bill Studenmund wrote:
>
> This is kinda relevant.
>
> You're discussing the fact that certain metadata update sequences
> (updating a vnode) need to be handled in a specific order.
>
> I would LOVE to handle lots of metadata updates in parallel. Obviously
> each individual node would see a sequence of updates, but as many of the
> sequence steps would be outstanding at once. I'm not sure how to do this
> though as each of these updates requires a thread context, and such a
> context can only handle one at a time.
What if, as a basic abstraction, we added an "I/O bundle": a list of
bufs, with a callback to be run when all are done?
Then we could perhaps have a single thread that managed all the I/O
bundles, taking the callback for the actual individual I/Os and giving
the callback for any given bundle when the last I/O in the bundle
completes?
When we know that it doesn't matter which of several I/Os completes
first, we could bundle them. This would be really nice for handling
NFS server write gathering and a few other things, too.
--
Thor Lancelot Simon tls@rek.tjls.com
"We cannot usually in social life pursue a single value or a single moral
aim, untroubled by the need to compromise with others." - H.L.A. Hart