|
|
Subscribe / Log in / New account

Introduce provisioning primitives for thinly provisioned storage

From:  Sarthak Kukreti <sarthakkukreti-AT-chromium.org>
To:  dm-devel-AT-redhat.com, linux-block-AT-vger.kernel.org, linux-ext4-AT-vger.kernel.org, linux-kernel-AT-vger.kernel.org, linux-fsdevel-AT-vger.kernel.org
Subject:  [PATCH v4 0/4] Introduce provisioning primitives for thinly provisioned storage
Date:  Tue, 18 Apr 2023 15:12:03 -0700
Message-ID:  <20230418221207.244685-1-sarthakkukreti@chromium.org>
Cc:  Jens Axboe <axboe-AT-kernel.dk>, "Michael S. Tsirkin" <mst-AT-redhat.com>, Jason Wang <jasowang-AT-redhat.com>, Stefan Hajnoczi <stefanha-AT-redhat.com>, Alasdair Kergon <agk-AT-redhat.com>, Mike Snitzer <snitzer-AT-kernel.org>, Christoph Hellwig <hch-AT-infradead.org>, Brian Foster <bfoster-AT-redhat.com>, Theodore Ts'o <tytso-AT-mit.edu>, Andreas Dilger <adilger.kernel-AT-dilger.ca>, Bart Van Assche <bvanassche-AT-google.com>, Daniil Lunev <dlunev-AT-google.com>, "Darrick J. Wong" <djwong-AT-kernel.org>
Archive-link:  Article

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/...

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



Copyright © 2023, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds