block: allow 'chunk_sectors' to be non-power-of-2
authorMike Snitzer <snitzer@redhat.com>
Tue, 22 Sep 2020 02:32:49 +0000 (22:32 -0400)
committerJens Axboe <axboe@kernel.dk>
Wed, 23 Sep 2020 16:38:14 +0000 (10:38 -0600)
commit07d098e6bbad04030dab5b3e64149601fcb063ce
tree43d4d82eda0a5ea4e466a5ac0fd2125865e65b11
parent22ada802ede89829dd010a317d9b812b7df7111a
block: allow 'chunk_sectors' to be non-power-of-2

It is possible, albeit more unlikely, for a block device to have a non
power-of-2 for chunk_sectors (e.g. 10+2 RAID6 with 128K chunk_sectors,
which results in a full-stripe size of 1280K. This causes the RAID6's
io_opt to be advertised as 1280K, and a stacked device _could_ then be
made to use a blocksize, aka chunk_sectors, that matches non power-of-2
io_opt of underlying RAID6 -- resulting in stacked device's
chunk_sectors being a non power-of-2).

Update blk_queue_chunk_sectors() and blk_max_size_offset() to
accommodate drivers that need a non power-of-2 chunk_sectors.

Reviewed-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-settings.c
include/linux/blkdev.h