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