All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Richard W.M. Jones" <rjones@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: Hu Tao <hutao@cn.fujitsu.com>, Max Reitz <mreitz@redhat.com>,
	qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>,
	Yasunori Goto <y-goto@jp.fujitsu.com>
Subject: Re: [Qemu-devel] [PATCH v12 0/6] qcow2, raw: add preallocation=full and preallocation=falloc
Date: Fri, 22 Aug 2014 14:26:53 +0100	[thread overview]
Message-ID: <20140822132653.GI1302@redhat.com> (raw)
In-Reply-To: <20140822131331.GN32377@noname.redhat.com>

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?

It's a good question.

>From observation of ext4 using libguestfs, the answer is
(surprisingly to me) no.

Writing zeroes won't necessarily allocate either -- eg.  if
detect_zeroes is enabled, or lots of other exotic storage schemes that
look into what you're writing.

I think my point still stands however.  There's no point giving
callers an option.  QEmu should do the best possible job.  It is the
only agent in a position to know how best to fully allocate the
backing file.

Rich.

$ guestfish -N fs:ext4:1G -m /dev/sda1

Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.

Type: 'help' for help on commands
      'man' to read the manual
      'quit' to quit the shell

><fs> fallocate64 /test 100M
><fs> ll /
total 102424
drwxr-xr-x  3 root root      4096 Aug 22 13:22 .
drwxr-xr-x 19 root root      4096 Aug 22 13:21 ..
drwx------  2 root root     16384 Aug 22 13:21 lost+found
-rw-r--r--  1 root root 104857600 Aug 22 13:22 test
><fs> exit

$ du -sh test1.img 
33M  test1.img



-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v

  reply	other threads:[~2014-08-22 13:27 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 [this message]
2014-08-22 14:20       ` Daniel P. Berrange
2014-08-22 15:22         ` Kevin Wolf
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=20140822132653.GI1302@redhat.com \
    --to=rjones@redhat.com \
    --cc=hutao@cn.fujitsu.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --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 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.