All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Blake <eblake@redhat.com>
To: Max Reitz <mreitz@redhat.com>, qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
	Markus Armbruster <armbru@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Subject: Re: [Qemu-devel] [PATCH v3 07/14] qemu-img: Use BlockBackend as far as possible
Date: Mon, 26 Jan 2015 20:38:05 -0700	[thread overview]
Message-ID: <54C7081D.9030706@redhat.com> (raw)
In-Reply-To: <1422284444-12529-8-git-send-email-mreitz@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 4851 bytes --]

On 01/26/2015 08:00 AM, Max Reitz wrote:
> Although qemu-img already creates BlockBackends, it does not do accesses
> to the images through them. This patch converts all of the bdrv_* calls
> for which this is currently possible to blk_* calls. Most of the
> remaining calls will probably stay bdrv_* calls because they really do
> operate on the BDS level instead of the BB level.
> 
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
>  qemu-img.c | 98 ++++++++++++++++++++++++++++++++++----------------------------
>  1 file changed, 54 insertions(+), 44 deletions(-)
> 
> diff --git a/qemu-img.c b/qemu-img.c
> index 0b23c87..8b4139e 100644
> --- a/qemu-img.c

> @@ -1130,22 +1130,26 @@ static int img_compare(int argc, char **argv)
>      }
>      bs2 = blk_bs(blk2);
>  
> -    buf1 = qemu_blockalign(bs1, IO_BUF_SIZE);
> -    buf2 = qemu_blockalign(bs2, IO_BUF_SIZE);
> -    total_sectors1 = bdrv_nb_sectors(bs1);
> +    buf1 = blk_blockalign(blk1, IO_BUF_SIZE);
> +    buf2 = blk_blockalign(blk2, IO_BUF_SIZE);
> +    total_sectors1 = blk_getlength(blk1);
>      if (total_sectors1 < 0) {
>          error_report("Can't get size of %s: %s",
>                       filename1, strerror(-total_sectors1));
>          ret = 4;
>          goto out;
>      }
> -    total_sectors2 = bdrv_nb_sectors(bs2);
> +    total_sectors2 = blk_getlength(blk2);

The naming feels awkward; your conversion is now using bytes while the
old code was using sectors, so 'total_sectors2' feels weird...

>      if (total_sectors2 < 0) {
>          error_report("Can't get size of %s: %s",
>                       filename2, strerror(-total_sectors2));
>          ret = 4;
>          goto out;
>      }
> +
> +    total_sectors1 /= BDRV_SECTOR_SIZE;
> +    total_sectors2 /= BDRV_SECTOR_SIZE;

...at least you end up converting to sectors after all.  But it makes me
wonder if you should have blk_nb_sectors(), and/or temporary
intermediate variables to avoid cross-unit confusion.

> @@ -1476,13 +1480,14 @@ static int img_convert(int argc, char **argv)
>              goto out;
>          }
>          bs[bs_i] = blk_bs(blk[bs_i]);
> -        bs_sectors[bs_i] = bdrv_nb_sectors(bs[bs_i]);
> +        bs_sectors[bs_i] = blk_getlength(blk[bs_i]);
>          if (bs_sectors[bs_i] < 0) {
>              error_report("Could not get size of %s: %s",
>                           argv[optind + bs_i], strerror(-bs_sectors[bs_i]));
>              ret = -1;
>              goto out;
>          }
> +        bs_sectors[bs_i] /= BDRV_SECTOR_SIZE;

Another instance of the confusion.

>          total_sectors += bs_sectors[bs_i];
>      }
>  
> @@ -1625,16 +1630,19 @@ static int img_convert(int argc, char **argv)
>                                           out_bs->bl.discard_alignment))
>                      );
>  
> -    buf = qemu_blockalign(out_bs, bufsectors * BDRV_SECTOR_SIZE);
> +    buf = blk_blockalign(out_blk, bufsectors * BDRV_SECTOR_SIZE);
>  
>      if (skip_create) {
> -        int64_t output_sectors = bdrv_nb_sectors(out_bs);
> +        int64_t output_sectors = blk_getlength(out_blk);
>          if (output_sectors < 0) {
>              error_report("unable to get output image length: %s\n",
>                           strerror(-output_sectors));
>              ret = -1;
>              goto out;
> -        } else if (output_sectors < total_sectors) {
> +        }
> +
> +        output_sectors /= BDRV_SECTOR_SIZE;
> +        if (output_sectors < total_sectors) {

And another.

> @@ -2585,17 +2591,17 @@ static int img_rebase(int argc, char **argv)
>          uint8_t * buf_new;
>          float local_progress = 0;
>  
> -        buf_old = qemu_blockalign(bs, IO_BUF_SIZE);
> -        buf_new = qemu_blockalign(bs, IO_BUF_SIZE);
> +        buf_old = blk_blockalign(blk, IO_BUF_SIZE);
> +        buf_new = blk_blockalign(blk, IO_BUF_SIZE);
>  
> -        num_sectors = bdrv_nb_sectors(bs);
> +        num_sectors = blk_getlength(blk);
>          if (num_sectors < 0) {
...

> -        if (bs_new_backing) {
> -            new_backing_num_sectors = bdrv_nb_sectors(bs_new_backing);
> +
> +        num_sectors /= BDRV_SECTOR_SIZE;
> +        old_backing_num_sectors /= BDRV_SECTOR_SIZE;

and another.

I did not closely audit if there were any other conversions that should
have been made.  Also, I suspect that a blk_nb_sectors() as a pre-req
patch would make this one feel cleaner if you respin and rebase.  But if
we don't add blk_nb_sectors(), at least this version of the patch
appears to be clean with what it does, so you can consider this to be a
rather weak:

Reviewed-by: Eric Blake <eblake@redhat.com>

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]

  reply	other threads:[~2015-01-27  3:56 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-26 15:00 [Qemu-devel] [PATCH v3 00/14] block: Remove "growable", add blk_new_open() Max Reitz
2015-01-26 15:00 ` [Qemu-devel] [PATCH v3 01/14] block: Lift some BDS functions to the BlockBackend Max Reitz
2015-01-26 21:48   ` Eric Blake
2015-01-26 15:00 ` [Qemu-devel] [PATCH v3 02/14] block: Add blk_new_open() Max Reitz
2015-01-26 21:56   ` Eric Blake
2015-01-26 15:00 ` [Qemu-devel] [PATCH v3 03/14] blockdev: Use blk_new_open() in blockdev_init() Max Reitz
2015-01-26 22:37   ` Eric Blake
2015-01-27  2:08     ` Max Reitz
2015-01-26 15:00 ` [Qemu-devel] [PATCH v3 04/14] block/xen: Use blk_new_open() in blk_connect() Max Reitz
2015-01-26 22:46   ` Eric Blake
2015-02-02 18:27   ` Kevin Wolf
2015-02-02 19:41     ` Max Reitz
2015-01-26 15:00 ` [Qemu-devel] [PATCH v3 05/14] qemu-img: Use blk_new_open() in img_open() Max Reitz
2015-01-26 22:47   ` Eric Blake
2015-02-02 18:35   ` Kevin Wolf
2015-02-02 19:42     ` Max Reitz
2015-01-26 15:00 ` [Qemu-devel] [PATCH v3 06/14] qemu-img: Use blk_new_open() in img_rebase() Max Reitz
2015-01-27  3:05   ` Eric Blake
2015-01-27 15:01     ` Max Reitz
2015-02-02 19:00   ` Kevin Wolf
2015-02-02 19:47     ` Max Reitz
2015-01-26 15:00 ` [Qemu-devel] [PATCH v3 07/14] qemu-img: Use BlockBackend as far as possible Max Reitz
2015-01-27  3:38   ` Eric Blake [this message]
2015-01-27 15:07     ` Max Reitz
2015-01-26 15:00 ` [Qemu-devel] [PATCH v3 08/14] qemu-nbd: Use blk_new_open() in main() Max Reitz
2015-01-27  4:59   ` Eric Blake
2015-01-26 15:00 ` [Qemu-devel] [PATCH v3 09/14] qemu-io: Use blk_new_open() in openfile() Max Reitz
2015-01-27 16:23   ` Eric Blake
2015-02-02 19:34   ` Kevin Wolf
2015-02-02 19:51     ` Max Reitz
2015-01-26 15:00 ` [Qemu-devel] [PATCH v3 10/14] qemu-io: Remove "growable" option Max Reitz
2015-01-27 16:59   ` Eric Blake
2015-01-27 17:04     ` Max Reitz
2015-01-27 17:10       ` Eric Blake
2015-01-27 17:11         ` Max Reitz
2015-02-02 19:36           ` Kevin Wolf
2015-02-02 19:52             ` Max Reitz
2015-01-26 15:00 ` [Qemu-devel] [PATCH v3 11/14] qemu-io: Use BlockBackend Max Reitz
2015-01-27 17:08   ` Eric Blake
2015-01-26 15:00 ` [Qemu-devel] [PATCH v3 12/14] block: Clamp BlockBackend requests Max Reitz
2015-01-27 17:15   ` Eric Blake
2015-01-26 15:00 ` [Qemu-devel] [PATCH v3 13/14] block: Remove "growable" from BDS Max Reitz
2015-01-27 17:29   ` Eric Blake
2015-02-02 19:46   ` Kevin Wolf
2015-02-02 19:54     ` Max Reitz
2015-01-26 15:00 ` [Qemu-devel] [PATCH v3 14/14] block: Keep bdrv_check*_request()'s return value Max Reitz
2015-01-27 17:36   ` Eric Blake
2015-01-26 15:49 ` [Qemu-devel] [PATCH v3 00/14] block: Remove "growable", add blk_new_open() Stefano Stabellini
2015-02-02 19:50 ` Kevin Wolf

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=54C7081D.9030706@redhat.com \
    --to=eblake@redhat.com \
    --cc=armbru@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=stefano.stabellini@eu.citrix.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.