[{"id":1760552,"web_url":"http://patchwork.ozlabs.org/comment/1760552/","msgid":"<5fc29501-2c1f-1342-fb2b-cd40cf3e8589@redhat.com>","list_archive_url":null,"date":"2017-08-30T22:43:42","subject":"Re: [Qemu-devel] [PATCH v6 00/18] make dirty-bitmap byte-based","submitter":{"id":64343,"url":"http://patchwork.ozlabs.org/api/people/64343/","name":"John Snow","email":"jsnow@redhat.com"},"content":"On 08/30/2017 05:05 PM, Eric Blake wrote:\n> There are patches floating around to add NBD_CMD_BLOCK_STATUS,\n> but NBD wants to report status on byte granularity (even if the\n> reporting will probably be naturally aligned to sectors or even\n> much higher levels).  I've therefore started the task of\n> converting our block status code to report at a byte granularity\n> rather than sectors.\n> \n> Now that 2.11 is open, I'm rebasing/reposting the remaining patches.\n> \n> The overall conversion currently looks like:\n> part 1: bdrv_is_allocated (merged in 2.10, commit 51b0a488)\n> part 2: dirty-bitmap (this series, v5 was here [1])\n> part 3: bdrv_get_block_status (v3 is posted [2] and is mostly reviewed, but\n> needs a rebase)\n> part 4: .bdrv_co_block_status (v2 is posted [3], but needs a rebase)\n> \n> Available as a tag at:\n> git fetch git://repo.or.cz/qemu/ericb.git nbd-byte-dirty-v6\n> \n> [1] https://lists.gnu.org/archive/html/qemu-devel/2017-07/msg03512.html\n> [2] https://lists.gnu.org/archive/html/qemu-devel/2017-07/msg03853.html\n> [3] https://lists.gnu.org/archive/html/qemu-devel/2017-07/msg04370.html\n> \n> Diff from v5:\n> - add another patch (more for ease of bookkeeping, as it was previously\n> posted independently)\n> - drop bug fixes that were hoisted into 2.10 (v5 1/18, plus 14/18)\n> \n> 001/18:[down] 'block: Make bdrv_img_create() size selection easier to read'\n> 002/18:[----] [--] 'hbitmap: Rename serialization_granularity to serialization_align'\n> 003/18:[----] [--] 'qcow2: Ensure bitmap serialization is aligned'\n> 004/18:[----] [--] 'dirty-bitmap: Drop unused functions'\n> 005/18:[----] [--] 'dirty-bitmap: Change bdrv_dirty_bitmap_size() to report bytes'\n> 006/18:[----] [--] 'dirty-bitmap: Change bdrv_dirty_bitmap_*serialize*() to take bytes'\n> 007/18:[----] [--] 'qcow2: Switch sectors_covered_by_bitmap_cluster() to byte-based'\n> 008/18:[----] [--] 'dirty-bitmap: Set iterator start by offset, not sector'\n> 009/18:[----] [--] 'dirty-bitmap: Change bdrv_dirty_iter_next() to report byte offset'\n> 010/18:[----] [--] 'dirty-bitmap: Change bdrv_get_dirty_count() to report bytes'\n> 011/18:[----] [--] 'dirty-bitmap: Change bdrv_get_dirty_locked() to take bytes'\n> 012/18:[----] [--] 'dirty-bitmap: Change bdrv_[re]set_dirty_bitmap() to use bytes'\n> 013/18:[----] [--] 'mirror: Switch mirror_dirty_init() to byte-based iteration'\n> 014/18:[0004] [FC] 'qcow2: Switch qcow2_measure() to byte-based iteration'\n> 015/18:[----] [--] 'qcow2: Switch load_bitmap_data() to byte-based iteration'\n> 016/18:[----] [--] 'qcow2: Switch store_bitmap_data() to byte-based iteration'\n> 017/18:[----] [--] 'dirty-bitmap: Switch bdrv_set_dirty() to bytes'\n> 018/18:[----] [--] 'dirty-bitmap: Convert internal hbitmap size/granularity'\n> \n> Eric Blake (18):\n>   block: Make bdrv_img_create() size selection easier to read\n>   hbitmap: Rename serialization_granularity to serialization_align\n>   qcow2: Ensure bitmap serialization is aligned\n>   dirty-bitmap: Drop unused functions\n>   dirty-bitmap: Change bdrv_dirty_bitmap_size() to report bytes\n>   dirty-bitmap: Change bdrv_dirty_bitmap_*serialize*() to take bytes\n>   qcow2: Switch sectors_covered_by_bitmap_cluster() to byte-based\n>   dirty-bitmap: Set iterator start by offset, not sector\n>   dirty-bitmap: Change bdrv_dirty_iter_next() to report byte offset\n>   dirty-bitmap: Change bdrv_get_dirty_count() to report bytes\n>   dirty-bitmap: Change bdrv_get_dirty_locked() to take bytes\n>   dirty-bitmap: Change bdrv_[re]set_dirty_bitmap() to use bytes\n>   mirror: Switch mirror_dirty_init() to byte-based iteration\n>   qcow2: Switch qcow2_measure() to byte-based iteration\n>   qcow2: Switch load_bitmap_data() to byte-based iteration\n>   qcow2: Switch store_bitmap_data() to byte-based iteration\n>   dirty-bitmap: Switch bdrv_set_dirty() to bytes\n>   dirty-bitmap: Convert internal hbitmap size/granularity\n> \n>  include/block/block_int.h    |   2 +-\n>  include/block/dirty-bitmap.h |  41 +++++---------\n>  include/qemu/hbitmap.h       |   8 +--\n>  block/io.c                   |   6 +-\n>  block.c                      |   2 +-\n>  block/backup.c               |   7 +--\n>  block/dirty-bitmap.c         | 130 ++++++++++++++-----------------------------\n>  block/mirror.c               |  76 +++++++++++--------------\n>  block/qcow2-bitmap.c         |  57 +++++++++----------\n>  block/qcow2.c                |  22 ++++----\n>  migration/block.c            |  12 ++--\n>  tests/test-hbitmap.c         |  10 ++--\n>  util/hbitmap.c               |   8 +--\n>  13 files changed, 154 insertions(+), 227 deletions(-)\n> \n\nShould this go through the bitmap tree, or since it's touching qcow2,\nI'll let Kevin/Max/Stefan stage it?\n\n--js","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ext-mx10.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com","ext-mx10.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=jsnow@redhat.com"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xjLCd1bx1z9s83\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 31 Aug 2017 08:44:13 +1000 (AEST)","from localhost ([::1]:53071 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dnBiV-0000A7-Cq\n\tfor incoming@patchwork.ozlabs.org; Wed, 30 Aug 2017 18:44:11 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:60554)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <jsnow@redhat.com>) id 1dnBiC-00008V-GB\n\tfor qemu-devel@nongnu.org; Wed, 30 Aug 2017 18:43:53 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <jsnow@redhat.com>) id 1dnBiB-0007Xk-4y\n\tfor qemu-devel@nongnu.org; Wed, 30 Aug 2017 18:43:52 -0400","from mx1.redhat.com ([209.132.183.28]:45796)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <jsnow@redhat.com>)\n\tid 1dnBi5-0007W9-2w; Wed, 30 Aug 2017 18:43:45 -0400","from smtp.corp.redhat.com\n\t(int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 0E5925F7AD;\n\tWed, 30 Aug 2017 22:43:44 +0000 (UTC)","from [10.18.17.130] (dhcp-17-130.bos.redhat.com [10.18.17.130])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id 22E5F5DD64;\n\tWed, 30 Aug 2017 22:43:43 +0000 (UTC)"],"DMARC-Filter":"OpenDMARC Filter v1.3.2 mx1.redhat.com 0E5925F7AD","To":"Eric Blake <eblake@redhat.com>, qemu-devel@nongnu.org","References":"<20170830210542.2153-1-eblake@redhat.com>","From":"John Snow <jsnow@redhat.com>","Message-ID":"<5fc29501-2c1f-1342-fb2b-cd40cf3e8589@redhat.com>","Date":"Wed, 30 Aug 2017 18:43:42 -0400","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.2.1","MIME-Version":"1.0","In-Reply-To":"<20170830210542.2153-1-eblake@redhat.com>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-US","Content-Transfer-Encoding":"7bit","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.14","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.39]);\n\tWed, 30 Aug 2017 22:43:44 +0000 (UTC)","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"209.132.183.28","Subject":"Re: [Qemu-devel] [PATCH v6 00/18] make dirty-bitmap byte-based","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"kwolf@redhat.com, vsementsov@virtuozzo.com, qemu-block@nongnu.org","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}}]