mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
dm: provide helper to set stacked limits
There are multiple device mappers that set up their stacking limits exactly the same for the logical, physical and minimum IO queue limits. Provide a helper for it. Signed-off-by: Keith Busch <kbusch@kernel.org> Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
This commit is contained in:
parent
cbc1532d2b
commit
33eded2931
|
|
@ -3684,11 +3684,7 @@ static void crypt_io_hints(struct dm_target *ti, struct queue_limits *limits)
|
|||
{
|
||||
struct crypt_config *cc = ti->private;
|
||||
|
||||
limits->logical_block_size =
|
||||
max_t(unsigned int, limits->logical_block_size, cc->sector_size);
|
||||
limits->physical_block_size =
|
||||
max_t(unsigned int, limits->physical_block_size, cc->sector_size);
|
||||
limits->io_min = max_t(unsigned int, limits->io_min, cc->sector_size);
|
||||
dm_stack_bs_limits(limits, cc->sector_size);
|
||||
limits->dma_alignment = limits->logical_block_size - 1;
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -4046,12 +4046,7 @@ static void dm_integrity_io_hints(struct dm_target *ti, struct queue_limits *lim
|
|||
{
|
||||
struct dm_integrity_c *ic = ti->private;
|
||||
|
||||
limits->logical_block_size = max(limits->logical_block_size,
|
||||
ic->sectors_per_block << SECTOR_SHIFT);
|
||||
limits->physical_block_size = max(limits->physical_block_size,
|
||||
ic->sectors_per_block << SECTOR_SHIFT);
|
||||
limits->io_min = max(limits->io_min,
|
||||
ic->sectors_per_block << SECTOR_SHIFT);
|
||||
dm_stack_bs_limits(limits, ic->sectors_per_block << SECTOR_SHIFT);
|
||||
limits->dma_alignment = limits->logical_block_size - 1;
|
||||
limits->discard_granularity = ic->sectors_per_block << SECTOR_SHIFT;
|
||||
|
||||
|
|
|
|||
|
|
@ -1011,13 +1011,7 @@ static void verity_io_hints(struct dm_target *ti, struct queue_limits *limits)
|
|||
{
|
||||
struct dm_verity *v = ti->private;
|
||||
|
||||
if (limits->logical_block_size < 1 << v->data_dev_block_bits)
|
||||
limits->logical_block_size = 1 << v->data_dev_block_bits;
|
||||
|
||||
if (limits->physical_block_size < 1 << v->data_dev_block_bits)
|
||||
limits->physical_block_size = 1 << v->data_dev_block_bits;
|
||||
|
||||
limits->io_min = limits->logical_block_size;
|
||||
dm_stack_bs_limits(limits, 1 << v->data_dev_block_bits);
|
||||
|
||||
/*
|
||||
* Similar to what dm-crypt does, opt dm-verity out of support for
|
||||
|
|
|
|||
|
|
@ -1640,17 +1640,9 @@ static void writecache_io_hints(struct dm_target *ti, struct queue_limits *limit
|
|||
{
|
||||
struct dm_writecache *wc = ti->private;
|
||||
|
||||
if (limits->logical_block_size < wc->block_size)
|
||||
limits->logical_block_size = wc->block_size;
|
||||
|
||||
if (limits->physical_block_size < wc->block_size)
|
||||
limits->physical_block_size = wc->block_size;
|
||||
|
||||
if (limits->io_min < wc->block_size)
|
||||
limits->io_min = wc->block_size;
|
||||
dm_stack_bs_limits(limits, wc->block_size);
|
||||
}
|
||||
|
||||
|
||||
static void writecache_writeback_endio(struct bio *bio)
|
||||
{
|
||||
struct writeback_struct *wb = container_of(bio, struct writeback_struct, bio);
|
||||
|
|
|
|||
|
|
@ -755,4 +755,11 @@ static inline unsigned long to_bytes(sector_t n)
|
|||
return (n << SECTOR_SHIFT);
|
||||
}
|
||||
|
||||
static inline void dm_stack_bs_limits(struct queue_limits *limits, unsigned int bs)
|
||||
{
|
||||
limits->logical_block_size = max(limits->logical_block_size, bs);
|
||||
limits->physical_block_size = max(limits->physical_block_size, bs);
|
||||
limits->io_min = max(limits->io_min, bs);
|
||||
}
|
||||
|
||||
#endif /* _LINUX_DEVICE_MAPPER_H */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user