virtualization.lists.linux-foundation.org archive mirror
 help / color / mirror / Atom feed
  • * Re: [PATCH RFC 0/8] Introduce provisioning primitives for thinly provisioned storage
           [not found] <20220915164826.1396245-1-sarthakkukreti@google.com>
           [not found] ` <20220915164826.1396245-4-sarthakkukreti@google.com>
    @ 2022-09-16  6:09 ` Stefan Hajnoczi
           [not found]   ` <CAG9=OMPHZqdDhX=M+ovdg5fa3x4-Q_1r5SWPa8pMTQw0mr5fPg@mail.gmail.com>
           [not found] ` <YyU5CyQfS+64xmnm@magnolia>
                       ` (3 subsequent siblings)
      5 siblings, 1 reply; 18+ messages in thread
    From: Stefan Hajnoczi @ 2022-09-16  6:09 UTC (permalink / raw)
      To: Sarthak Kukreti
      Cc: Jens Axboe, Gwendal Grignou, Theodore Ts'o,
    	Michael S . Tsirkin, Bart Van Assche, Mike Snitzer, linux-kernel,
    	virtualization, linux-block, dm-devel, Andreas Dilger,
    	Daniil Lunev, Paolo Bonzini, linux-ext4, Evan Green,
    	Alasdair Kergon
    
    
    [-- Attachment #1.1: Type: text/plain, Size: 2593 bytes --]
    
    On Thu, Sep 15, 2022 at 09:48:18AM -0700, Sarthak Kukreti wrote:
    > From: Sarthak Kukreti <sarthakkukreti@chromium.org>
    > 
    > Hi,
    > 
    > This patch series is an RFC of a mechanism to pass through provision requests on stacked thinly provisioned storage devices/filesystems.
    > 
    > The linux kernel provides several mechanisms to set up thinly provisioned block storage abstractions (eg. dm-thin, loop devices over sparse files), either directly as block devices or backing storage for filesystems. Currently, short of writing data to either the device or filesystem, there is no way for users to pre-allocate space for use in such storage setups. Consider the following use-cases:
    > 
    > 1) Suspend-to-disk and resume from a dm-thin device: In order to ensure that the underlying thinpool metadata is not modified during the suspend mechanism, the dm-thin device needs to be fully provisioned.
    > 2) If a filesystem uses a loop device over a sparse file, fallocate() on the filesystem will allocate blocks for files but the underlying sparse file will remain intact.
    > 3) Another example is virtual machine using a sparse file/dm-thin as a storage device; by default, allocations within the VM boundaries will not affect the host.
    > 4) Several storage standards support mechanisms for thin provisioning on real hardware devices. For example:
    >   a. The NVMe spec 1.0b section 2.1.1 loosely talks about thin provisioning: "When the THINP bit in the NSFEAT field of the Identify Namespace data structure is set to ‘1’, the controller ... shall track the number of allocated blocks in the Namespace Utilization field"
    >   b. The SCSi Block Commands reference - 4 section references "Thin provisioned logical units",
    >   c. UFS 3.0 spec section 13.3.3 references "Thin provisioning".
    
    When REQ_OP_PROVISION is sent on an already-allocated range of blocks,
    are those blocks zeroed? NVMe Write Zeroes with Deallocate=0 works this
    way, for example. That behavior is counterintuitive since the operation
    name suggests it just affects the logical block's provisioning state,
    not the contents of the blocks.
    
    > In all of the above situations, currently the only way for pre-allocating space is to issue writes (or use WRITE_ZEROES/WRITE_SAME). However, that does not scale well with larger pre-allocation sizes. 
    
    What exactly is the issue with WRITE_ZEROES scalability? Are you
    referring to cases where the device doesn't support an efficient
    WRITE_ZEROES command and actually writes blocks filled with zeroes
    instead of updating internal allocation metadata cheaply?
    
    Stefan
    
    [-- Attachment #1.2: signature.asc --]
    [-- Type: application/pgp-signature, Size: 488 bytes --]
    
    [-- Attachment #2: Type: text/plain, Size: 183 bytes --]
    
    _______________________________________________
    Virtualization mailing list
    Virtualization@lists.linux-foundation.org
    https://lists.linuxfoundation.org/mailman/listinfo/virtualization
    
    ^ permalink raw reply	[flat|nested] 18+ messages in thread
  • [parent not found: <YyU5CyQfS+64xmnm@magnolia>]
  • [parent not found: <20220915164826.1396245-5-sarthakkukreti@google.com>]
  • [parent not found: <20220915164826.1396245-3-sarthakkukreti@google.com>]
  • [parent not found: <20220915164826.1396245-2-sarthakkukreti@google.com>]

  • end of thread, other threads:[~2022-09-27 21:38 UTC | newest]
    
    Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <20220915164826.1396245-1-sarthakkukreti@google.com>
         [not found] ` <20220915164826.1396245-4-sarthakkukreti@google.com>
    2022-09-16  5:48   ` [PATCH RFC 3/8] virtio_blk: Add support for provision requests Stefan Hajnoczi
    2022-09-27 21:37   ` Michael S. Tsirkin
    2022-09-16  6:09 ` [PATCH RFC 0/8] Introduce provisioning primitives for thinly provisioned storage Stefan Hajnoczi
         [not found]   ` <CAG9=OMPHZqdDhX=M+ovdg5fa3x4-Q_1r5SWPa8pMTQw0mr5fPg@mail.gmail.com>
    2022-09-16 20:01     ` Bart Van Assche
    2022-09-20  7:46     ` Christoph Hellwig
         [not found]       ` <CAAKderPF5Z5QLxyEb80Y+90+eR0sfRmL-WfgXLp=eL=HxWSZ9g@mail.gmail.com>
    2022-09-20 11:30         ` Christoph Hellwig
         [not found]           ` <CAAKderNcHpbBqWqqd5-WuKLRCQQUt7a_4D4ti4gy15+fKGK0vQ@mail.gmail.com>
    2022-09-21 15:08             ` Mike Snitzer
    2022-09-23  8:51             ` Christoph Hellwig
    2022-09-23 14:08               ` Mike Snitzer
         [not found] ` <YyU5CyQfS+64xmnm@magnolia>
         [not found]   ` <CAG9=OMNPnsjaUw2EUG0XFjV94-V1eD63V+1anoGM=EWKyzXEfg@mail.gmail.com>
    2022-09-19 16:36     ` [dm-devel] " Stefan Hajnoczi
         [not found] ` <20220915164826.1396245-5-sarthakkukreti@google.com>
    2022-09-16 11:56   ` [PATCH RFC 4/8] fs: Introduce FALLOC_FL_PROVISION Brian Foster
         [not found]     ` <CAG9=OMNL1Z3DiO-usdH0k90NDsDkDQ7A7CHc4Nu6MCXKNKjWdw@mail.gmail.com>
    2022-09-21 15:39       ` Brian Foster
         [not found]         ` <CAG9=OMPEoShYMx6A+p97-tw4MuLpgOEpy7aFs5CH6wTedptALQ@mail.gmail.com>
    2022-09-22 18:29           ` Brian Foster
    2022-09-20  7:49   ` Christoph Hellwig
         [not found]     ` <CAG9=OMNoG01UUStNs_Zhsv6mXZw0M0q2v54ZriJvHZ4aspvjEQ@mail.gmail.com>
    2022-09-21 15:21       ` Mike Snitzer
    2022-09-23  8:45       ` Christoph Hellwig
         [not found] ` <20220915164826.1396245-3-sarthakkukreti@google.com>
    2022-09-23 14:23   ` [PATCH RFC 2/8] dm: Add support for block provisioning Mike Snitzer
         [not found] ` <20220915164826.1396245-2-sarthakkukreti@google.com>
    2022-09-23 15:15   ` [PATCH RFC 1/8] block: Introduce provisioning primitives Mike Snitzer
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox;
    as well as URLs for NNTP newsgroup(s).