linux-api.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Austin S. Hemmelgarn" <ahferroin7@gmail.com>
To: Andreas Dilger <adilger@dilger.ca>,
	Christoph Hellwig <hch@infradead.org>
Cc: Liu Bo <bo.li.liu@oracle.com>,
	"Darrick J. Wong" <darrick.wong@oracle.com>,
	xfs@oss.sgi.com, linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	linux-btrfs <linux-btrfs@vger.kernel.org>,
	linux-api@vger.kernel.org
Subject: Re: fallocate mode flag for "unshare blocks"?
Date: Thu, 31 Mar 2016 11:43:09 -0400	[thread overview]
Message-ID: <56FD458D.3020007@gmail.com> (raw)
In-Reply-To: <3E147309-67EA-4B29-B4E0-883BA03B7BFC@dilger.ca>

On 2016-03-31 11:31, Andreas Dilger wrote:
> On Mar 31, 2016, at 1:55 AM, Christoph Hellwig <hch@infradead.org> wrote:
>>
>> On Wed, Mar 30, 2016 at 05:32:42PM -0700, Liu Bo wrote:
>>> Well, btrfs fallocate doesn't allocate space if it's a shared one
>>> because it thinks the space is already allocated.  So a later overwrite
>>> over this shared extent may hit enospc errors.
>>
>> And this makes it an incorrect implementation of posix_fallocate,
>> which glibcs implements using fallocate if available.
>
> It isn't really useful for a COW filesystem to implement fallocate()
> to reserve blocks.  Even if it did allocate all of the blocks on the
> initial fallocate() call, when it comes time to overwrite these blocks
> new blocks need to be allocated as the old ones will not be overwritten.
>
> Because of snapshots that could hold references to the old blocks,
> there isn't even the guarantee that the previous fallocated blocks will
> be released in a reasonable time to free up an equal amount of space.

That really depends on how it's done.  AFAIK, unwritten extents on BTRFS 
are block reservations which make sure that you can write there (IOW, 
the unwritten extent gets converted to a regular extent in-place, not 
via COW).  This means that it is possible to guarantee that the first 
write to that area will work, which is technically all that POSIX 
requires.  This in turn means that stuff like SystemD and RDBMS software 
don't exactly see things working as they expect them too, but that's 
because they make assumptions based on existing technology.


  reply	other threads:[~2016-03-31 15:43 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20160302155007.GB7125@infradead.org>
     [not found] ` <20160302155007.GB7125-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-03-30 18:27   ` fallocate mode flag for "unshare blocks"? Darrick J. Wong
2016-03-30 18:58     ` Austin S. Hemmelgarn
2016-03-31  7:58       ` Christoph Hellwig
2016-03-31 11:13         ` Austin S. Hemmelgarn
     [not found]     ` <20160330182755.GC2236-PTl6brltDGh4DFYR7WNSRA@public.gmane.org>
2016-03-31  0:32       ` Liu Bo
2016-03-31  7:55         ` Christoph Hellwig
     [not found]           ` <20160331075529.GB4209-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-03-31 15:31             ` Andreas Dilger
2016-03-31 15:43               ` Austin S. Hemmelgarn [this message]
     [not found]               ` <3E147309-67EA-4B29-B4E0-883BA03B7BFC-m1MBpc4rdrD3fQ9qLvQP4Q@public.gmane.org>
2016-03-31 16:47                 ` Henk Slager
2016-03-31 11:18         ` Austin S. Hemmelgarn
2016-03-31 11:38           ` Austin S. Hemmelgarn
     [not found]           ` <56FD079F.3060606-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-03-31 19:52             ` Liu Bo
2016-03-31  1:18     ` Dave Chinner
2016-03-31  7:54       ` Christoph Hellwig
2016-03-31 11:18         ` Dave Chinner
2016-03-31 18:08           ` J. Bruce Fields
2016-03-31 18:19             ` Darrick J. Wong
     [not found]             ` <20160331180821.GD22462-uC3wQj2KruNg9hUCZPvPmw@public.gmane.org>
2016-03-31 19:47               ` Andreas Dilger
     [not found]                 ` <779E9BCF-8224-44FE-8AAE-E0341A7B475C-m1MBpc4rdrD3fQ9qLvQP4Q@public.gmane.org>
2016-03-31 22:20                   ` Dave Chinner
2016-03-31 22:34                     ` J. Bruce Fields
2016-04-01  0:33                       ` Dave Chinner
2016-04-01  2:00                         ` J. Bruce Fields

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=56FD458D.3020007@gmail.com \
    --to=ahferroin7@gmail.com \
    --cc=adilger@dilger.ca \
    --cc=bo.li.liu@oracle.com \
    --cc=darrick.wong@oracle.com \
    --cc=hch@infradead.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=xfs@oss.sgi.com \
    /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 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).