dm cache: improve discard support
authorJoe Thornber <ejt@redhat.com>
Thu, 6 Nov 2014 10:18:04 +0000 (10:18 +0000)
committerMike Snitzer <snitzer@redhat.com>
Mon, 10 Nov 2014 20:25:30 +0000 (15:25 -0500)
commit7ae34e7778966d39f66397491eb114b613202c20
treed743fdd6c548a7452b4cc5c1ef0cf15fdf321068
parent08b184514f65d160ce66381dafca5962e3d8f785
dm cache: improve discard support

Safely allow the discard blocksize to be larger than the cache blocksize
by using the bio prison's range locking support.  This also improves
discard performance considerly because larger discards are issued to the
dm-cache device.  The discard blocksize was always intended to be
greater than the cache blocksize.  But until now it wasn't implemented
safely.

Also, by safely restoring the ability to have discard blocksize larger
than cache blocksize we're able to significantly reduce the memory used
for the cache's discard bitset.  Before, with a small discard blocksize,
the discard bitset could get quite large because its size is a function
of the discard blocksize and the origin device's size.  For example,
previously, using a 32KB cache blocksize with a 40TB origin resulted in
1280MB of incore memory use for the discard bitset!  Now, the discard
blocksize is scaled up accordingly to ensure the discard bitset is
capped at 2**14 bits, or 16KB.

Signed-off-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-cache-target.c