From: Kevin Wolf <kwolf@redhat.com>
To: "Daniel P. Berrange" <berrange@redhat.com>
Cc: Hu Tao <hutao@cn.fujitsu.com>,
qemu-devel@nongnu.org, "Richard W.M. Jones" <rjones@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Yasunori Goto <y-goto@jp.fujitsu.com>,
Max Reitz <mreitz@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v12 0/6] qcow2, raw: add preallocation=full and preallocation=falloc
Date: Fri, 22 Aug 2014 17:22:33 +0200 [thread overview]
Message-ID: <20140822152233.GP32377@noname.redhat.com> (raw)
In-Reply-To: <20140822142016.GN8447@redhat.com>
Am 22.08.2014 um 16:20 hat Daniel P. Berrange geschrieben:
> On Fri, Aug 22, 2014 at 03:13:31PM +0200, Kevin Wolf wrote:
> > Am 22.08.2014 um 14:25 hat Richard W.M. Jones geschrieben:
> > >
> > > On Mon, Jul 28, 2014 at 04:48:46PM +0800, Hu Tao wrote:
> > > > ping...
> > > >
> > > > All the 6 patches have reviewed-by now.
> > > >
> > > > On Fri, Jul 11, 2014 at 02:09:57PM +0800, Hu Tao wrote:
> > > > > This series adds two preallocation mode to qcow2 and raw:
> > > > >
> > > > > Option preallocation=full preallocates disk space for image by writing
> > > > > zeros to disk, this ensures disk space in any cases.
> > > > >
> > > > > Option preallocation=falloc preallocates disk space by calling
> > > > > posix_fallocate(). This is faster than preallocation=full.
> > >
> > > Sorry if this was discussed before, but why would anyone use
> > > preallocation=full if preallocation=falloc was possible?
> > >
> > > Shouldn't preallocation=full simply use posix_fallocate if it's
> > > available, and fall back to writing zeroes if not?
> >
> > posix_fallocate() is basically metadata preallocation on the file
> > system level. If any lower levels involve allocations as well, does
> > posix_fallocate() allocate them there?
>
> Well the man page says
>
> "After a successful call to posix_fallocate(), subsequent writes to
> bytes in the specified range are guaranteed not to fail because of
> lack of disk space."
>
> Which seems like it is what users would want when they ask for
> preallocate=full. So I'm not seeing the benefit of instead being
> able to ask to write zeros would bring.
This is what the spec says. There are two problems with it:
1. The actual implementation doesn't do what the spec says. As Rich's
test shows (and I expected), the preallocation stays on the
filesystem level and isn't propagated to lower levels.
2. It's also not what most users want. They don't use preallocation
because they are afraid of running out of disk space, but because
they want performance. What they are looking for is "subsequent
writes to bytes in the specified range are guaranteed to require no
metadata updates". But this is neither what the spec promises you nor
(afaik) what actual implementations do.
It's still useful because it happens to reduce the overhead in most
implementations and it's a relatively quick operation, but the best way
I know of to actually _fully_ preallocate is still writing zeros. Which
of the two the user wants, is a decision that qemu can't make for them.
Kevin
next prev parent reply other threads:[~2014-08-22 15:22 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-11 6:09 [Qemu-devel] [PATCH v12 0/6] qcow2, raw: add preallocation=full and preallocation=falloc Hu Tao
2014-07-11 6:09 ` [Qemu-devel] [PATCH v12 1/6] block: round up file size to nearest sector Hu Tao
2014-08-22 10:55 ` Kevin Wolf
2014-08-25 1:11 ` Hu Tao
2014-07-11 6:09 ` [Qemu-devel] [PATCH v12 2/6] raw, qcow2: don't convert file size to sector size Hu Tao
2014-07-11 6:10 ` [Qemu-devel] [PATCH v12 3/6] rename parse_enum_option to qapi_enum_parse and make it public Hu Tao
2014-07-11 6:10 ` [Qemu-devel] [PATCH v12 4/6] qapi: introduce PreallocMode and a new PreallocMode full Hu Tao
2014-08-22 10:57 ` Kevin Wolf
2014-08-25 1:12 ` Hu Tao
2014-07-11 6:10 ` [Qemu-devel] [PATCH v12 5/6] raw-posix: Add falloc and full preallocation option Hu Tao
2014-08-22 10:58 ` Kevin Wolf
2014-08-25 1:18 ` Hu Tao
2014-07-11 6:10 ` [Qemu-devel] [PATCH v12 6/6] qcow2: " Hu Tao
2014-07-11 21:07 ` Max Reitz
2014-08-22 11:00 ` Kevin Wolf
2014-08-25 1:36 ` Hu Tao
2014-07-28 8:48 ` [Qemu-devel] [PATCH v12 0/6] qcow2, raw: add preallocation=full and preallocation=falloc Hu Tao
2014-08-22 10:54 ` Kevin Wolf
2014-08-25 1:35 ` Hu Tao
2014-08-26 10:44 ` Stefan Hajnoczi
2014-08-28 5:04 ` Hu Tao
2014-08-22 12:25 ` Richard W.M. Jones
2014-08-22 12:36 ` Daniel P. Berrange
2014-08-22 13:13 ` Kevin Wolf
2014-08-22 13:26 ` Richard W.M. Jones
2014-08-22 14:20 ` Daniel P. Berrange
2014-08-22 15:22 ` Kevin Wolf [this message]
2014-08-22 15:34 ` Richard W.M. Jones
2014-08-22 15:39 ` Richard W.M. Jones
2014-08-22 15:53 ` Kevin Wolf
2014-08-22 16:00 ` Richard W.M. Jones
2014-08-25 5:18 ` Hu Tao
2014-08-25 10:31 ` Richard W.M. Jones
2014-08-25 13:44 ` Richard W.M. Jones
2014-08-26 5:27 ` Hu Tao
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=20140822152233.GP32377@noname.redhat.com \
--to=kwolf@redhat.com \
--cc=berrange@redhat.com \
--cc=hutao@cn.fujitsu.com \
--cc=mreitz@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rjones@redhat.com \
--cc=stefanha@redhat.com \
--cc=y-goto@jp.fujitsu.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).