[dm-cache] link to the test suite in dm-cache.txt
[dm-cache] rename 'writeback' policy to 'cleaner'
dm cache: a few dm-cache.txt fixes
dm thin: fix queue limits stacking

thin_io_hints() is blindly copying the queue limits from the thin-pool
which can lead to incorrect limits being set.  The fix here simply
deletes the thin_io_hints() hook which leaves the existing stacking
infrastructure to set the limits correctly.

When a thin-pool uses an MD device for the data device a thin device
from the thin-pool must respect MD's constraints about disallowing a bio
to span multiple chunks.  Otherwise we can see problems.  If the raid0
chunksize is 1152K and thin-pool chunksize is 256K I see the following
md/raid0 error (with extra debug tracing added to thin_endio) when
mkfs.xfs is executed against the thin device:

md/raid0:md99: make_request bug: can't convert block across chunks or bigger than 1152k 6688 127
device-mapper: thin: bio sector=2080 err=-5 bi_size=130560 bi_rw=17 bi_vcnt=32 bi_idx=0

This extra DM debugging shows that the failing bio is spanning across
the first and second logical 1152K chunk (sector 2080 + 255 takes the
bio beyond the first chunk's boundary of sector 2304).  So the bio
splitting that DM is doing clearly isn't respecting the MD limits.

max_hw_sectors_kb is 127 for both the thin-pool and thin device
(queue_max_hw_sectors returns 255 so we'll excuse sysfs's lack of
precision).  So this explains why bi_size is 130560.

But the thin device's max_hw_sectors_kb should be 4 (PAGE_SIZE) given
that it doesn't have a .merge function (for bio_add_page to consult
indirectly via dm_merge_bvec) yet the thin-pool does sit above an MD
device that has a compulsory merge_bvec_fn.  This scenario is exactly
why DM must resort to sending single PAGE_SIZE bios to the underlying
layer. Some additional context for this is available in the header for
commit 8cbeb67a ("dm: avoid unsupported spanning of md stripe boundaries").

Long story short, the reason a thin device doesn't properly get
configured to have a max_hw_sectors_kb of 4 (PAGE_SIZE) is that
thin_io_hints() is blindly copying the queue limits from the thin-pool
device directly to the thin device's queue limits.

Fix this by eliminating thin_io_hints.  Doing so is safe because the
block layer's queue limits stacking already enables the upper level thin
device to inherit the thin-pool device's discard and minimum_io_size and
optimal_io_size limits that get set in pool_io_hints.  But avoiding the
queue limits copy allows the thin and thin-pool limits to be different
where it is important, namely max_hw_sectors_kb.

Reported-by: Daniel Browning <db@kavod.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Cc: stable@vger.kernel.org
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
dm cache policy mq: don't use hardcoded numbers in process_policy_args

use PATTERN_SEQUENTIAL and PATTERN_RANDOM accordingly
bcache: latest code that kent pushed as of 1/31
Revert "bcache: latest code that kent pushed as of 1/31"

This reverts commit 28a875135a972b22a7864ca73bd8e13a07a19d75.

This was -dev code (I didn't understand that the code was off-limits)
bcache: latest -testing code (from 1/31)
bcache: more fixes from kent
[persistent-data, dm-array] add FIXME
Add method to register a low space callback to space maps.

FIXME: should we trigger the data sm low water map this way too?

Conflicts:
	drivers/md/dm-thin-metadata.c
	drivers/md/dm-thin-metadata.h
	drivers/md/persistent-data/dm-space-map-checker.c
	drivers/md/persistent-data/dm-space-map-metadata.c
dm-thin now sends an event when the metadata dev gets low
factor maybe_resize_data_dev out of pool_preresume

Conflicts:
	drivers/md/dm-thin.c
resize metadata stuff

Conflicts:
	drivers/md/dm-thin-metadata.c
manually applying ejt/thin-dev conflicts before pulling
Merge branch 'thin-dev' of git://github.com/jthornber/linux-2.6 into thin-dev

Conflicts:
	Documentation/device-mapper/cache.txt
	drivers/md/Kconfig
	drivers/md/dm-cache-policy-cleaner.c
dm thin: small consistency fixes for metadata resize changes
[dm-cache] remove some redundant includes
[dm-cache] factor struct cache_stats out of struct cache
[dm-cache] comment for prealloc_get/put_cell