dm thin: support for non power of 2 pool blocksize
authorMike Snitzer <snitzer@redhat.com>
Fri, 27 Jul 2012 14:08:02 +0000 (15:08 +0100)
committerAlasdair G Kergon <agk@redhat.com>
Fri, 27 Jul 2012 14:08:02 +0000 (15:08 +0100)
commit55f2b8bdb0c7387eb2dc645b9ecbe5d0faa6b54e
tree4428d66325bdc8d4f25a374e10b5a78cb0ab3e54
parent33d07c0dfab902a7c5420587984497dc05ab5c9c
dm thin: support for non power of 2 pool blocksize

Non power of 2 blocksize support is needed to properly align thinp IO
on storage that has non power of 2 optimal IO sizes (e.g. RAID6 10+2).

Use sector_div to support non power of 2 blocksize for the pool's
data device.  This provides comparable performance to the power of 2
math that was performed until now (as tested on modern x86_64 hardware).

The kernel currently assumes that limits->discard_granularity is a power
of two so the thin target only enables discard support if the block
size is a power of two.

Eliminate pool structure's 'block_shift', 'offset_mask' and
remaining 4 byte holes.

Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
drivers/md/dm-thin.c