[dm-cache] add a couple of utility functions for hooking a bios endio fn.
[dm-cache] fix typo
[dm-cache] add a FIXME
[dm-cache] Promotion optimisation

If a write block triggers promotion and covers a whole block we can avoid a copy.
[dm-cache] merge with previous patch
[dm-cache] rename a function
[dm-cache] Fix up harmless bug in mq policies pop() function.

Currently pop() always succeeds, with up coming changes this wont be
the case.
[dm-cache] typo in comment
[dm-cache] implemented writeback_work() and set/clear_dirty() for mq policy.

There are now two multiqueues for in cache blocks.  A clean one and a
dirty one.

writeback_work comes from the dirty one.  Demotion come from the clean
one.

There are two benefits:

- Performance improvement, since demoting a clean block is a noop.
- The cache cleans itself when io load is light.
[dm-cache] comment out the bio overwrites complete block optimisation for promotion.

It's not quite right.
[dm-cache] remove some debug
[dm-cache] Change the default migration_threshold to something more suitable.
[dm-cache] core config options were not being set on the ctr line

There's only one of these atm: migration_threshold.

It was being set correctly in response to a set_config message, but
not in the ctr.

This patch factors out the common code.
[dm-cache] Fix NULL pointer deref in block overwrite optimisation.
[dm-cache, mq policy] Don't promote if it would incur an immediate writeback.

Merge with mq clean/dirty changes
Merge tag 'v3.9-rc3'

Linux 3.9-rc3
Merge branch 'master' into thin-dev
[dm test targets] Kconfig no longer depends on EXPERIMENTAL
[dm-cache] replace some memcpys with struct assignment.

Reported by Fengguang Wu
Merge remote branch 'ejt/thin-dev' into thin-dev

Conflicts:
	drivers/md/dm-cache-target.c