[dm core] Fluff.  Simplify an if statement in dm_table_set_restrictions()
[dm-cache] Writethrough mode wasn't resetting bio fields before reusing

The writethrough mode reuses the same bio to write to both the origin
and cache device.  It was recording the bi_sector and restoring this,
but this was inadequate; lower level drivers can change all sorts of
bio fields.

This patch adds a struct dm_bio_details field, and uses
dm_bio_record() and dm_bio_restore() to ensure the bio is restored
before reissuing to the cache device.

Issue discovered by Darrick Wong.
dm cache: ddd variable hint size support

Allow for optional variable hint sizes up to 32 bytes to be used by
policy modules to stash away any internal hints for instance block hit
counts in the persistent cache metadata on device suspension.

These hints will be provided to the policy module on mapping load in
order to allow for cache internal state optimization.

Loosing hints isn't problematic, just suboptimal
dm cache: enhance variable hint size comments, fix hint casts and bless them for disk in the mq policy module
dm cache: typo fixes and message level change

dm-cache-policy.h: typo fixed
dm-cache-policy.c: typo fixed and message changed to DMERR
dm-cache-metadata.c: remove FIXMEs related to hint value auto variable; 32 bytes are generous for the time being
dm cache: introduce dm-cache-policy-background.c

Add a stackable cache replacement policy module allowing writebacks of
a configurable amount of dirty cache blocks. Hence those blocks don't
need to get written back on eviction any more thus gaining performance
dm cache: add optimization to avoid promoting cache blocks which get completely written over anyway.
dm cache: change default migration threshold in cache target to 2 times block size because of performance issues with the previous 204800 sectors
dm cache: dm-cache-target.c: change migration threshold to be percentage of application I/O
dm cache: dm-cache-target.c: account all submitted bios
dm cache: dm-cache-target.c: add avoid_promote feature to target
dm cache: fluff
dm cache: dm-cache-policy-background.c: start fixing threshold processing
dm cache: more threshold fixes
dm cache: add basic policy module
dm cache: dm-cache-target.c: streamline more_work()
dm cache: dm-cache-target.c: move insertion of mapping _after_ write completion of the block overwriting bio and endio it after the insertion got commited. Reduce dm_deferred_entry by 4 bytes thus reducing dm_deffered_set by 512
dm cache: dm-cache-target.c: adjust to Joe's dm_bio_{record,restore} changes; fluff
fluff
fluff