From: Mike Snitzer <snitzer@redhat.com>
To: Sarthak Kukreti <sarthakkukreti@chromium.org>
Cc: Jens Axboe <axboe@kernel.dk>,
linux-block@vger.kernel.org, Theodore Ts'o <tytso@mit.edu>,
"Michael S . Tsirkin" <mst@redhat.com>,
Jason Wang <jasowang@redhat.com>,
Bart Van Assche <bvanassche@google.com>,
Mike Snitzer <snitzer@kernel.org>,
linux-kernel@vger.kernel.org,
Gwendal Grignou <gwendal@google.com>,
virtualization@lists.linux-foundation.org,
Christoph Hellwig <hch@infradead.org>,
dm-devel@redhat.com, Andreas Dilger <adilger.kernel@dilger.ca>,
Daniil Lunev <dlunev@google.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
linux-ext4@vger.kernel.org, Evan Green <evgreen@google.com>,
Alasdair Kergon <agk@redhat.com>
Subject: Re: [dm-devel] [PATCH RFC 4/8] fs: Introduce FALLOC_FL_PROVISION
Date: Wed, 21 Sep 2022 11:21:37 -0400 [thread overview]
Message-ID: <YyssAb/zTcIG2bev@redhat.com> (raw)
In-Reply-To: <CAG9=OMNoG01UUStNs_Zhsv6mXZw0M0q2v54ZriJvHZ4aspvjEQ@mail.gmail.com>
On Wed, Sep 21 2022 at 1:54P -0400,
Sarthak Kukreti <sarthakkukreti@chromium.org> wrote:
> On Tue, Sep 20, 2022 at 12:49 AM Christoph Hellwig <hch@infradead.org> wrote:
> >
> > On Thu, Sep 15, 2022 at 09:48:22AM -0700, Sarthak Kukreti wrote:
> > > From: Sarthak Kukreti <sarthakkukreti@chromium.org>
> > >
> > > FALLOC_FL_PROVISION is a new fallocate() allocation mode that
> > > sends a hint to (supported) thinly provisioned block devices to
> > > allocate space for the given range of sectors via REQ_OP_PROVISION.
> >
> > So, how does that "provisioning" actually work in todays world where
> > storage is usually doing out of place writes in one or more layers,
> > including the flash storage everyone is using. Does it give you one
> > write? And unlimited number? Some undecided number inbetween?
>
> Apologies, the patchset was a bit short on describing the semantics so
> I'll expand more in the next revision; I'd say that it's the minimum
> of regular mode fallocate() guarantees at each allocation layer. For
> example, the guarantees from a contrived storage stack like (left to
> right is bottom to top):
>
> [ mmc0blkp1 | ext4(1) | sparse file | loop | dm-thinp | dm-thin | ext4(2) ]
>
> would be predicated on the guarantees of fallocate() per allocation
> layer; if ext4(1) was replaced by a filesystem that did not support
> fallocate(), then there would be no guarantee that a write to a file
> on ext4(2) succeeds.
>
> For dm-thinp, in the current implementation, the provision request
> allocates blocks for the range specified and adds the mapping to the
> thinpool metadata. All subsequent writes are to the same block, so
> you'll be able to write to the same block inifinitely. Brian mentioned
> this above, one case it doesn't cover is if provision is called on a
> shared block, but the natural extension would be to allocate and
> assign a new block and copy the contents of the shared block (kind of
> like copy-on-provision).
It follows that ChromiumOS isn't using dm-thinp's snapshot support?
But please do fold in incremental dm-thinp support to properly handle
shared blocks (dm-thinp already handles breaking sharing, etc.. so
I'll need to see where you're hooking into that you don't get this
"for free").
Mike
--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel
WARNING: multiple messages have this Message-ID (diff)
From: Mike Snitzer <snitzer@redhat.com>
To: Sarthak Kukreti <sarthakkukreti@chromium.org>
Cc: Christoph Hellwig <hch@infradead.org>,
dm-devel@redhat.com, linux-block@vger.kernel.org,
linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org,
Jens Axboe <axboe@kernel.dk>,
"Michael S . Tsirkin" <mst@redhat.com>,
Jason Wang <jasowang@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Alasdair Kergon <agk@redhat.com>,
Mike Snitzer <snitzer@kernel.org>, Theodore Ts'o <tytso@mit.edu>,
Andreas Dilger <adilger.kernel@dilger.ca>,
Bart Van Assche <bvanassche@google.com>,
Daniil Lunev <dlunev@google.com>, Evan Green <evgreen@google.com>,
Gwendal Grignou <gwendal@google.com>
Subject: Re: [PATCH RFC 4/8] fs: Introduce FALLOC_FL_PROVISION
Date: Wed, 21 Sep 2022 11:21:37 -0400 [thread overview]
Message-ID: <YyssAb/zTcIG2bev@redhat.com> (raw)
In-Reply-To: <CAG9=OMNoG01UUStNs_Zhsv6mXZw0M0q2v54ZriJvHZ4aspvjEQ@mail.gmail.com>
On Wed, Sep 21 2022 at 1:54P -0400,
Sarthak Kukreti <sarthakkukreti@chromium.org> wrote:
> On Tue, Sep 20, 2022 at 12:49 AM Christoph Hellwig <hch@infradead.org> wrote:
> >
> > On Thu, Sep 15, 2022 at 09:48:22AM -0700, Sarthak Kukreti wrote:
> > > From: Sarthak Kukreti <sarthakkukreti@chromium.org>
> > >
> > > FALLOC_FL_PROVISION is a new fallocate() allocation mode that
> > > sends a hint to (supported) thinly provisioned block devices to
> > > allocate space for the given range of sectors via REQ_OP_PROVISION.
> >
> > So, how does that "provisioning" actually work in todays world where
> > storage is usually doing out of place writes in one or more layers,
> > including the flash storage everyone is using. Does it give you one
> > write? And unlimited number? Some undecided number inbetween?
>
> Apologies, the patchset was a bit short on describing the semantics so
> I'll expand more in the next revision; I'd say that it's the minimum
> of regular mode fallocate() guarantees at each allocation layer. For
> example, the guarantees from a contrived storage stack like (left to
> right is bottom to top):
>
> [ mmc0blkp1 | ext4(1) | sparse file | loop | dm-thinp | dm-thin | ext4(2) ]
>
> would be predicated on the guarantees of fallocate() per allocation
> layer; if ext4(1) was replaced by a filesystem that did not support
> fallocate(), then there would be no guarantee that a write to a file
> on ext4(2) succeeds.
>
> For dm-thinp, in the current implementation, the provision request
> allocates blocks for the range specified and adds the mapping to the
> thinpool metadata. All subsequent writes are to the same block, so
> you'll be able to write to the same block inifinitely. Brian mentioned
> this above, one case it doesn't cover is if provision is called on a
> shared block, but the natural extension would be to allocate and
> assign a new block and copy the contents of the shared block (kind of
> like copy-on-provision).
It follows that ChromiumOS isn't using dm-thinp's snapshot support?
But please do fold in incremental dm-thinp support to properly handle
shared blocks (dm-thinp already handles breaking sharing, etc.. so
I'll need to see where you're hooking into that you don't get this
"for free").
Mike
WARNING: multiple messages have this Message-ID (diff)
From: Mike Snitzer <snitzer@redhat.com>
To: Sarthak Kukreti <sarthakkukreti@chromium.org>
Cc: Jens Axboe <axboe@kernel.dk>,
linux-block@vger.kernel.org, Theodore Ts'o <tytso@mit.edu>,
"Michael S . Tsirkin" <mst@redhat.com>,
Bart Van Assche <bvanassche@google.com>,
Mike Snitzer <snitzer@kernel.org>,
linux-kernel@vger.kernel.org,
Gwendal Grignou <gwendal@google.com>,
virtualization@lists.linux-foundation.org,
Christoph Hellwig <hch@infradead.org>,
dm-devel@redhat.com, Andreas Dilger <adilger.kernel@dilger.ca>,
Daniil Lunev <dlunev@google.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
linux-ext4@vger.kernel.org, Evan Green <evgreen@google.com>,
Alasdair Kergon <agk@redhat.com>
Subject: Re: [PATCH RFC 4/8] fs: Introduce FALLOC_FL_PROVISION
Date: Wed, 21 Sep 2022 11:21:37 -0400 [thread overview]
Message-ID: <YyssAb/zTcIG2bev@redhat.com> (raw)
In-Reply-To: <CAG9=OMNoG01UUStNs_Zhsv6mXZw0M0q2v54ZriJvHZ4aspvjEQ@mail.gmail.com>
On Wed, Sep 21 2022 at 1:54P -0400,
Sarthak Kukreti <sarthakkukreti@chromium.org> wrote:
> On Tue, Sep 20, 2022 at 12:49 AM Christoph Hellwig <hch@infradead.org> wrote:
> >
> > On Thu, Sep 15, 2022 at 09:48:22AM -0700, Sarthak Kukreti wrote:
> > > From: Sarthak Kukreti <sarthakkukreti@chromium.org>
> > >
> > > FALLOC_FL_PROVISION is a new fallocate() allocation mode that
> > > sends a hint to (supported) thinly provisioned block devices to
> > > allocate space for the given range of sectors via REQ_OP_PROVISION.
> >
> > So, how does that "provisioning" actually work in todays world where
> > storage is usually doing out of place writes in one or more layers,
> > including the flash storage everyone is using. Does it give you one
> > write? And unlimited number? Some undecided number inbetween?
>
> Apologies, the patchset was a bit short on describing the semantics so
> I'll expand more in the next revision; I'd say that it's the minimum
> of regular mode fallocate() guarantees at each allocation layer. For
> example, the guarantees from a contrived storage stack like (left to
> right is bottom to top):
>
> [ mmc0blkp1 | ext4(1) | sparse file | loop | dm-thinp | dm-thin | ext4(2) ]
>
> would be predicated on the guarantees of fallocate() per allocation
> layer; if ext4(1) was replaced by a filesystem that did not support
> fallocate(), then there would be no guarantee that a write to a file
> on ext4(2) succeeds.
>
> For dm-thinp, in the current implementation, the provision request
> allocates blocks for the range specified and adds the mapping to the
> thinpool metadata. All subsequent writes are to the same block, so
> you'll be able to write to the same block inifinitely. Brian mentioned
> this above, one case it doesn't cover is if provision is called on a
> shared block, but the natural extension would be to allocate and
> assign a new block and copy the contents of the shared block (kind of
> like copy-on-provision).
It follows that ChromiumOS isn't using dm-thinp's snapshot support?
But please do fold in incremental dm-thinp support to properly handle
shared blocks (dm-thinp already handles breaking sharing, etc.. so
I'll need to see where you're hooking into that you don't get this
"for free").
Mike
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2022-09-21 15:28 UTC|newest]
Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-15 16:48 [dm-devel] [PATCH RFC 0/8] Introduce provisioning primitives for thinly provisioned storage Sarthak Kukreti
2022-09-15 16:48 ` Sarthak Kukreti
2022-09-15 16:48 ` [dm-devel] [PATCH RFC 1/8] block: Introduce provisioning primitives Sarthak Kukreti
2022-09-15 16:48 ` Sarthak Kukreti
2022-09-23 15:15 ` [dm-devel] " Mike Snitzer
2022-09-23 15:15 ` Mike Snitzer
2022-09-23 15:15 ` Mike Snitzer
2022-12-29 8:17 ` [dm-devel] " Sarthak Kukreti
2022-12-29 8:17 ` Sarthak Kukreti
2022-09-15 16:48 ` [dm-devel] [PATCH RFC 2/8] dm: Add support for block provisioning Sarthak Kukreti
2022-09-15 16:48 ` Sarthak Kukreti
2022-09-23 14:23 ` [dm-devel] " Mike Snitzer
2022-09-23 14:23 ` Mike Snitzer
2022-09-23 14:23 ` Mike Snitzer
2022-12-29 8:22 ` [dm-devel] " Sarthak Kukreti
2022-12-29 8:22 ` Sarthak Kukreti
2022-09-15 16:48 ` [dm-devel] [PATCH RFC 3/8] virtio_blk: Add support for provision requests Sarthak Kukreti
2022-09-15 16:48 ` Sarthak Kukreti
2022-09-16 5:48 ` [dm-devel] " Stefan Hajnoczi
2022-09-16 5:48 ` Stefan Hajnoczi
2022-09-16 5:48 ` Stefan Hajnoczi
2022-09-20 2:33 ` [dm-devel] " Sarthak Kukreti
2022-09-20 2:33 ` Sarthak Kukreti
2022-09-27 21:37 ` [dm-devel] " Michael S. Tsirkin
2022-09-27 21:37 ` Michael S. Tsirkin
2022-09-27 21:37 ` Michael S. Tsirkin
2022-09-15 16:48 ` [dm-devel] [PATCH RFC 4/8] fs: Introduce FALLOC_FL_PROVISION Sarthak Kukreti
2022-09-15 16:48 ` Sarthak Kukreti
2022-09-16 11:56 ` [dm-devel] " Brian Foster
2022-09-16 11:56 ` Brian Foster
2022-09-16 11:56 ` Brian Foster
2022-09-16 21:02 ` [dm-devel] " Sarthak Kukreti
2022-09-16 21:02 ` Sarthak Kukreti
2022-09-21 15:39 ` [dm-devel] " Brian Foster
2022-09-21 15:39 ` Brian Foster
2022-09-21 15:39 ` Brian Foster
2022-09-22 8:04 ` [dm-devel] " Sarthak Kukreti
2022-09-22 8:04 ` Sarthak Kukreti
2022-09-22 18:29 ` [dm-devel] " Brian Foster
2022-09-22 18:29 ` Brian Foster
2022-09-22 18:29 ` Brian Foster
2022-12-29 8:13 ` [dm-devel] " Sarthak Kukreti
2022-12-29 8:13 ` Sarthak Kukreti
2022-09-20 7:49 ` [dm-devel] " Christoph Hellwig
2022-09-20 7:49 ` Christoph Hellwig
2022-09-20 7:49 ` Christoph Hellwig
2022-09-21 5:54 ` [dm-devel] " Sarthak Kukreti
2022-09-21 5:54 ` Sarthak Kukreti
2022-09-21 15:21 ` Mike Snitzer [this message]
2022-09-21 15:21 ` Mike Snitzer
2022-09-21 15:21 ` Mike Snitzer
2022-09-22 8:08 ` [dm-devel] " Sarthak Kukreti
2022-09-22 8:08 ` Sarthak Kukreti
2022-09-23 8:45 ` [dm-devel] " Christoph Hellwig
2022-09-23 8:45 ` Christoph Hellwig
2022-09-23 8:45 ` Christoph Hellwig
2022-12-29 8:14 ` [dm-devel] " Sarthak Kukreti
2022-12-29 8:14 ` Sarthak Kukreti
2022-09-15 16:48 ` [dm-devel] [PATCH RFC 5/8] loop: Add support for provision requests Sarthak Kukreti
2022-09-15 16:48 ` Sarthak Kukreti
2022-09-15 16:48 ` [dm-devel] [PATCH RFC 6/8] ext4: Add support for FALLOC_FL_PROVISION Sarthak Kukreti
2022-09-15 16:48 ` Sarthak Kukreti
2022-09-15 16:48 ` [dm-devel] [PATCH RFC 7/8] ext4: Add mount option for provisioning blocks during allocations Sarthak Kukreti
2022-09-15 16:48 ` Sarthak Kukreti
2022-09-15 16:48 ` [dm-devel] [PATCH RFC 8/8] ext4: Add a per-file provision override xattr Sarthak Kukreti
2022-09-15 16:48 ` Sarthak Kukreti
2022-09-16 6:09 ` [dm-devel] [PATCH RFC 0/8] Introduce provisioning primitives for thinly provisioned storage Stefan Hajnoczi
2022-09-16 6:09 ` Stefan Hajnoczi
2022-09-16 6:09 ` Stefan Hajnoczi
2022-09-16 18:48 ` [dm-devel] " Sarthak Kukreti
2022-09-16 18:48 ` Sarthak Kukreti
2022-09-16 20:01 ` [dm-devel] " Bart Van Assche
2022-09-16 20:01 ` Bart Van Assche
2022-09-16 20:01 ` Bart Van Assche
2022-09-16 21:59 ` [dm-devel] " Sarthak Kukreti
2022-09-16 21:59 ` Sarthak Kukreti
2022-09-20 7:46 ` [dm-devel] " Christoph Hellwig
2022-09-20 7:46 ` Christoph Hellwig
2022-09-20 7:46 ` Christoph Hellwig
2022-09-20 10:17 ` [dm-devel] " Daniil Lunev
2022-09-20 11:30 ` Christoph Hellwig
2022-09-20 11:30 ` Christoph Hellwig
2022-09-20 11:30 ` Christoph Hellwig
2022-09-20 21:48 ` [dm-devel] " Daniil Lunev
2022-09-21 15:08 ` Mike Snitzer
2022-09-21 15:08 ` Mike Snitzer
2022-09-21 15:08 ` Mike Snitzer
2022-09-23 8:51 ` [dm-devel] " Christoph Hellwig
2022-09-23 8:51 ` Christoph Hellwig
2022-09-23 8:51 ` Christoph Hellwig
2022-09-23 14:08 ` [dm-devel] " Mike Snitzer
2022-09-23 14:08 ` Mike Snitzer
2022-09-23 14:08 ` Mike Snitzer
2022-12-29 8:17 ` [dm-devel] " Sarthak Kukreti
2022-12-29 8:17 ` Sarthak Kukreti
2022-09-17 3:03 ` [dm-devel] " Darrick J. Wong
2022-09-17 3:03 ` Darrick J. Wong
2022-09-17 19:46 ` Sarthak Kukreti
2022-09-17 19:46 ` Sarthak Kukreti
2022-09-19 16:36 ` Stefan Hajnoczi
2022-09-19 16:36 ` Stefan Hajnoczi
2022-09-19 16:36 ` Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YyssAb/zTcIG2bev@redhat.com \
--to=snitzer@redhat.com \
--cc=adilger.kernel@dilger.ca \
--cc=agk@redhat.com \
--cc=axboe@kernel.dk \
--cc=bvanassche@google.com \
--cc=dlunev@google.com \
--cc=dm-devel@redhat.com \
--cc=evgreen@google.com \
--cc=gwendal@google.com \
--cc=hch@infradead.org \
--cc=jasowang@redhat.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=sarthakkukreti@chromium.org \
--cc=snitzer@kernel.org \
--cc=stefanha@redhat.com \
--cc=tytso@mit.edu \
--cc=virtualization@lists.linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.