From: Jun Li <junmuzi@gmail.com>
To: qemu-devel@nongnu.org, juli@redhat.com
Subject: [Qemu-devel] qcow2: Can create qcow2 image format on rbd server
Date: Fri, 5 Dec 2014 23:32:10 +0800 [thread overview]
Message-ID: <20141205153210.GA4573@localhost.localdomain> (raw)
Currently, qemu-img can not create qcow2 image format on rbd server. Analysis
the code as followings:
when create qcow2 format image:
qcow2_create2
bdrv_create_file(filename, opts, &local_err); --> Here will create a 0 size
file(e.g: file1) on rbd server.
...
ret = bdrv_pwrite(bs, 0, header, cluster_size); --> So here can not write
qcow2 header into file1 due to the file1's length is 0. Seems
qemu_rbd_aio_writev can not write beyond EOF.
...
As above analysis, there are two methods to solve the above bz as followings:
1, When create file1, just create a fixed-size file1 on rbd server(not 0 size).
2, When write the qcow2 header into file1, just let qemu_rbd_aio_writev can
enlarge the file1. So should add qemu_rbd_truncate inside qemu_rbd_aio_writev.
qemu_rbd_truncate will call rbd_resize, but seems rbd_resize is
synchronous function. If so, when do bdrv_pwrite, guest will hang. This is not
our expected.
For method 1, maybe it's not corresponding to the original principle of qcow2.
Yes, it's very easy to solve the above bz. Nevertheless, I just want to use
method 2 to solve above issue.
For method 2, could anyone give some suggestions on howto realize a
asynchronous rbd_resize. Thanks.
Above analysis also based on stefan's hints. Thanks.
Best Regards,
Jun Li
next reply other threads:[~2014-12-05 15:32 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-05 15:32 Jun Li [this message]
2014-12-05 17:01 ` [Qemu-devel] qcow2: Can create qcow2 image format on rbd server Max Reitz
2014-12-06 11:21 ` Jun Li
2014-12-08 13:58 ` Jun Li
2014-12-09 3:52 ` Josh Durgin
2014-12-09 9:49 ` Stefan Hajnoczi
2014-12-10 1:57 ` Josh Durgin
2014-12-10 14:14 ` Jun Li
2014-12-08 10:07 ` Kevin Wolf
2014-12-08 13:50 ` Jun Li
2014-12-08 14:49 ` Kevin Wolf
2014-12-10 14:18 ` Jun Li
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=20141205153210.GA4573@localhost.localdomain \
--to=junmuzi@gmail.com \
--cc=juli@redhat.com \
--cc=qemu-devel@nongnu.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 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).