[dm-cache] don't shrink the cache unless all dropped blocks are clean.
[dm-cache] Change the resize method to check that blocks are unmapped
or clean when shrinking.

Is this patch adequate on it's own?  Previous patch didnt check for
unmapped regions.
[dm-cache] use an enum to record the writethrough/writeback state rather than a simple bool.
[dm-cache] introduce passthrough mode; currently behaves like writeback
[dm-cache] introduce a method to invalidate a cache entry.

Drops the mapping without doing a writeback first.
[dm-cache] implement passthrough mode using the invalidate() method.
Merge branch 'passthrough-mode' into cache-coherency-changes
[dm-cache] Change the result parameter to __superblock_all_zeroes() to be a bool.

Also squash a warning where the compiler erroneously thought it could
be used uninitialised.
[dm-cache] map all reads to the origin in passthrough mode.
[dm-cache] add comments about the various io modes.
[dm-cache] fail to load a cache table in passthrough mode if any blocks are dirty.
Merge remote-tracking branch 'github-heinz/heinz-variable-hint-size' into cache-coherency-changes
[dm-cache] remove some cruft from Kconfig and Makefile that Heinz accidentally introduced
[dm-cache] revert some more cruft that appeared during recent merge with heinz
[dm-cache] mq era patch from Morgan
[dm-cache] whitespace
add FIXME
Makefile: add basic and background policies
hint_size: restrict to hint size divisible by 4 and <= 128 bytes; allow to build all policies
Merge branch 'heinz-variable-hint-size' of github.com:lvmguy/linux-2.6 into heinz-variable-hint-size