[PATCH] DiskIO detection cleanup.

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Tue, 25 Aug 2009 02:38:38 +1200

This patch changes the interactions between --enable-disk-io
--enable-storeio and also the related --with-aio and --with-pthreads
options.

The old behaviour was very complex and incremental:
  - check some DiskIO dependencies
    - enable libraries (even if not needed)
  - scan *-storeio=
  - scan *-disk-io=
    - enable some diskio modules
  - scan *-disk-io=
    - strip any duplicates
  - scan some storeio dependencies
    - enable some more disk-io modules (but not the stores strangely)
  - scan *-storeio looking for required disk-io dependency
    - automatically enable needed diskio (despite explicit settings)
  - scan *-disk-io=
    - enable some more disk-io modules
  - scan some other disk-io dependencies
    - enable libraries (even if not needed)

This patch seeks to replace that with:
  - scan *-disk-io=
    - check for dependencies
    - auto-disable module if any dependencies are missing/unusable
  - scan *-store-io=
    - error if any depended diskio are disabled (saying which)

This both simplifies a complex situation, speeds up configure, and
reduces the amount of useless libraries by two or more in some builds.

--with-async-io was a whole mess on its own with other dependent
options. For now I've left it out of this change and it retains its old
behaviour of being enabled even if not useful.

Users now have the choice:
1) use simply "--enable-disk-io --enable-storeio" without explicit
lists of modules to enable everything.

2) use the above _with_ an explicit set of modules.

3) disable all disk components with "--disable-disk-io
--disnable-storeio" and use memory-only.

Theres a few bits of polish I know still needed:
  * some of the DiskIO dependencies I could not find clearly remain
outside the scan block.
  * according to Robert the Windows Overlapping IO needs to be broken
out into its own module. That is another cleanup sub-project.

And the build defaults needs to be assessed:

Current default is to enable only UFS with Blocking DiskIO

  * should we now make all disk modules default-enable?
    (to improve the experience of those building without these two options)

  * or, given that the default config is memory-only
    should we now make all disk modules default-disable?

Amos

Received on Mon Aug 24 2009 - 14:38:51 MDT

This archive was generated by hypermail 2.2.0 : Tue Aug 25 2009 - 12:00:06 MDT