[PATCH v4 0/4] Introduce provisioning primitives for thinly provisioned storage

Sarthak Kukreti
2023-04-18T22:12:31Z

Hi,

This patch series is revision 4 of introducing a new mechanism to pass through provision requests on stacked thinly provisioned storage devices. See [1] for original cover letter.

[1] https://lore.kernel.org/lkml/ZDnMl8A1B1+Tfn5S@redhat.com/T/#md4f20113c2242755747ae069f84be720a6751012

Changelog:

V4:
- Fix UNSHARE and KEEP_SIZE handling in blkdev_fallocate.
- Split dm-thin support into a separate patch.
- Remove ranged provision request handling and adjust io hints to handle provisioning one block at a time.
- Add missing provision_supported for dm targets.

V3:
- Drop FALLOC_FL_PROVISION and use mode == 0 for provision requests.
- Drop fs-specific patches; will be sent out in a follow up series.
- Fix missing shared block handling for thin snapshots.

V2:
- Fix stacked limit handling.
- Enable provision request handling in dm-snapshot
- Don't call truncate_bdev_range if blkdev_fallocate() is called with
FALLOC_FL_PROVISION.
- Clarify semantics of FALLOC_FL_PROVISION and why it needs to be a separate flag
(as opposed to overloading mode == 0).

Sarthak Kukreti (4):
block: Introduce provisioning primitives
dm: Add block provisioning support
dm-thin: Add REQ_OP_PROVISION support
loop: Add support for provision requests

block/blk-core.c | 5 +++
block/blk-lib.c | 53 +++++++++++++++++++++++++
block/blk-merge.c | 18 +++++++++
block/blk-settings.c | 19 +++++++++
block/blk-sysfs.c | 8 ++++
block/bounce.c | 1 +
block/fops.c | 25 +++++++++---
drivers/block/loop.c | 42 ++++++++++++++++++++
drivers/md/dm-crypt.c | 5 ++-
drivers/md/dm-linear.c | 2 +
drivers/md/dm-snap.c | 8 ++++
drivers/md/dm-table.c | 23 +++++++++++
drivers/md/dm-thin.c | 73 ++++++++++++++++++++++++++++++++---
drivers/md/dm.c | 6 +++
include/linux/bio.h | 6 ++-
include/linux/blk_types.h | 5 ++-
include/linux/blkdev.h | 16 ++++++++
include/linux/device-mapper.h | 17 ++++++++
18 files changed, 317 insertions(+), 15 deletions(-)

--
2.40.0.634.g4ca3ef3211-goog