Skip to content

Commit 33eded2

Browse files
keithbuschMikulas Patocka
authored andcommitted
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>
1 parent cbc1532 commit 33eded2

5 files changed

Lines changed: 11 additions & 27 deletions

File tree

drivers/md/dm-crypt.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3684,11 +3684,7 @@ static void crypt_io_hints(struct dm_target *ti, struct queue_limits *limits)
36843684
{
36853685
struct crypt_config *cc = ti->private;
36863686

3687-
limits->logical_block_size =
3688-
max_t(unsigned int, limits->logical_block_size, cc->sector_size);
3689-
limits->physical_block_size =
3690-
max_t(unsigned int, limits->physical_block_size, cc->sector_size);
3691-
limits->io_min = max_t(unsigned int, limits->io_min, cc->sector_size);
3687+
dm_stack_bs_limits(limits, cc->sector_size);
36923688
limits->dma_alignment = limits->logical_block_size - 1;
36933689

36943690
/*

drivers/md/dm-integrity.c

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4046,12 +4046,7 @@ static void dm_integrity_io_hints(struct dm_target *ti, struct queue_limits *lim
40464046
{
40474047
struct dm_integrity_c *ic = ti->private;
40484048

4049-
limits->logical_block_size = max(limits->logical_block_size,
4050-
ic->sectors_per_block << SECTOR_SHIFT);
4051-
limits->physical_block_size = max(limits->physical_block_size,
4052-
ic->sectors_per_block << SECTOR_SHIFT);
4053-
limits->io_min = max(limits->io_min,
4054-
ic->sectors_per_block << SECTOR_SHIFT);
4049+
dm_stack_bs_limits(limits, ic->sectors_per_block << SECTOR_SHIFT);
40554050
limits->dma_alignment = limits->logical_block_size - 1;
40564051
limits->discard_granularity = ic->sectors_per_block << SECTOR_SHIFT;
40574052

drivers/md/dm-verity-target.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,13 +1011,7 @@ static void verity_io_hints(struct dm_target *ti, struct queue_limits *limits)
10111011
{
10121012
struct dm_verity *v = ti->private;
10131013

1014-
if (limits->logical_block_size < 1 << v->data_dev_block_bits)
1015-
limits->logical_block_size = 1 << v->data_dev_block_bits;
1016-
1017-
if (limits->physical_block_size < 1 << v->data_dev_block_bits)
1018-
limits->physical_block_size = 1 << v->data_dev_block_bits;
1019-
1020-
limits->io_min = limits->logical_block_size;
1014+
dm_stack_bs_limits(limits, 1 << v->data_dev_block_bits);
10211015

10221016
/*
10231017
* Similar to what dm-crypt does, opt dm-verity out of support for

drivers/md/dm-writecache.c

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1640,17 +1640,9 @@ static void writecache_io_hints(struct dm_target *ti, struct queue_limits *limit
16401640
{
16411641
struct dm_writecache *wc = ti->private;
16421642

1643-
if (limits->logical_block_size < wc->block_size)
1644-
limits->logical_block_size = wc->block_size;
1645-
1646-
if (limits->physical_block_size < wc->block_size)
1647-
limits->physical_block_size = wc->block_size;
1648-
1649-
if (limits->io_min < wc->block_size)
1650-
limits->io_min = wc->block_size;
1643+
dm_stack_bs_limits(limits, wc->block_size);
16511644
}
16521645

1653-
16541646
static void writecache_writeback_endio(struct bio *bio)
16551647
{
16561648
struct writeback_struct *wb = container_of(bio, struct writeback_struct, bio);

include/linux/device-mapper.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -755,4 +755,11 @@ static inline unsigned long to_bytes(sector_t n)
755755
return (n << SECTOR_SHIFT);
756756
}
757757

758+
static inline void dm_stack_bs_limits(struct queue_limits *limits, unsigned int bs)
759+
{
760+
limits->logical_block_size = max(limits->logical_block_size, bs);
761+
limits->physical_block_size = max(limits->physical_block_size, bs);
762+
limits->io_min = max(limits->io_min, bs);
763+
}
764+
758765
#endif /* _LINUX_DEVICE_MAPPER_H */

0 commit comments

Comments
 (0)