)]}'
{"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ebccee6287afddd0e8b9cfc0ced00ece88df41a1","unresolved":false,"context_lines":[{"line_number":14789,"context_line":"        save.assert_called_once_with()"},{"line_number":14790,"context_line":""},{"line_number":14791,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.guest.BlockDevice.is_job_complete\u0027)"},{"line_number":14792,"context_line":"    def test_swap_volume(self, mock_is_job_complete):"},{"line_number":14793,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI())"},{"line_number":14794,"context_line":""},{"line_number":14795,"context_line":"        mock_dom \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_6b2029ad","line":14792,"range":{"start_line":14792,"start_character":8,"end_line":14792,"end_character":24},"updated":"2017-06-02 15:09:13.000000000","message":"could you rename this with a \u0027_file\u0027 suffix?","commit_id":"ecc212aacf27203451a9c889452c219808ab2078"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"746cb44fb59ce91d39e1110e8d9ae94013add8e5","unresolved":false,"context_lines":[{"line_number":14789,"context_line":"        save.assert_called_once_with()"},{"line_number":14790,"context_line":""},{"line_number":14791,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.guest.BlockDevice.is_job_complete\u0027)"},{"line_number":14792,"context_line":"    def test_swap_volume(self, mock_is_job_complete):"},{"line_number":14793,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI())"},{"line_number":14794,"context_line":""},{"line_number":14795,"context_line":"        mock_dom \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_548066bf","line":14792,"range":{"start_line":14792,"start_character":8,"end_line":14792,"end_character":24},"in_reply_to":"df140735_6b2029ad","updated":"2017-06-02 16:22:13.000000000","message":"Done","commit_id":"ecc212aacf27203451a9c889452c219808ab2078"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ebccee6287afddd0e8b9cfc0ced00ece88df41a1","unresolved":false,"context_lines":[{"line_number":14822,"context_line":"            mock_define.assert_called_once_with(xmldoc)"},{"line_number":14823,"context_line":""},{"line_number":14824,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.guest.BlockDevice.is_job_complete\u0027)"},{"line_number":14825,"context_line":"    def test_swap_volume_block(self, mock_is_job_complete):"},{"line_number":14826,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI())"},{"line_number":14827,"context_line":""},{"line_number":14828,"context_line":"        mock_dom \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_2b3d91dc","line":14825,"updated":"2017-06-02 15:09:13.000000000","message":"nit: In the new fashion, I\u0027d like a docstring here explaining what this test aims to validate","commit_id":"ecc212aacf27203451a9c889452c219808ab2078"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"746cb44fb59ce91d39e1110e8d9ae94013add8e5","unresolved":false,"context_lines":[{"line_number":14822,"context_line":"            mock_define.assert_called_once_with(xmldoc)"},{"line_number":14823,"context_line":""},{"line_number":14824,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.guest.BlockDevice.is_job_complete\u0027)"},{"line_number":14825,"context_line":"    def test_swap_volume_block(self, mock_is_job_complete):"},{"line_number":14826,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI())"},{"line_number":14827,"context_line":""},{"line_number":14828,"context_line":"        mock_dom \u003d mock.MagicMock()"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_74680a1c","line":14825,"in_reply_to":"df140735_2b3d91dc","updated":"2017-06-02 16:22:13.000000000","message":"Done","commit_id":"ecc212aacf27203451a9c889452c219808ab2078"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"2b11a4d8edbd0209eacc0d0d4b8c08aefdfadcb7","unresolved":false,"context_lines":[{"line_number":1271,"context_line":""},{"line_number":1272,"context_line":"            try:"},{"line_number":1273,"context_line":"                # Start copy with VIR_DOMAIN_REBASE_REUSE_EXT flag to"},{"line_number":1274,"context_line":"                # allow writing to existing external volume file"},{"line_number":1275,"context_line":"                copy_dev \u003d conf.source_type \u003d\u003d \u0027block\u0027"},{"line_number":1276,"context_line":"                dev.rebase(conf.source_path, copy\u003dTrue, reuse_ext\u003dTrue,"},{"line_number":1277,"context_line":"                           copy_dev\u003dcopy_dev)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_2579bcfb","line":1274,"updated":"2017-05-18 09:42:53.000000000","message":"Should the comment here be updated, given that there are two more flags that are in use?  But probably not as it\u0027ll be needlessly verbose.  To understand the arguments to the rebase() function, one ought to look at guest.py anyway.  So your choice.","commit_id":"ecc212aacf27203451a9c889452c219808ab2078"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"746cb44fb59ce91d39e1110e8d9ae94013add8e5","unresolved":false,"context_lines":[{"line_number":1271,"context_line":""},{"line_number":1272,"context_line":"            try:"},{"line_number":1273,"context_line":"                # Start copy with VIR_DOMAIN_REBASE_REUSE_EXT flag to"},{"line_number":1274,"context_line":"                # allow writing to existing external volume file"},{"line_number":1275,"context_line":"                copy_dev \u003d conf.source_type \u003d\u003d \u0027block\u0027"},{"line_number":1276,"context_line":"                dev.rebase(conf.source_path, copy\u003dTrue, reuse_ext\u003dTrue,"},{"line_number":1277,"context_line":"                           copy_dev\u003dcopy_dev)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_548186fa","line":1274,"in_reply_to":"ff0f0b1f_2579bcfb","updated":"2017-06-02 16:22:13.000000000","message":"Done","commit_id":"ecc212aacf27203451a9c889452c219808ab2078"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bdadc52947327f60bd429d0dd9d1dd35f2b99802","unresolved":false,"context_lines":[{"line_number":1287,"context_line":"                # allow writing to existing external volume file. Use"},{"line_number":1288,"context_line":"                # VIR_DOMAIN_BLOCK_REBASE_COPY_DEV if it\u0027s a block device to"},{"line_number":1289,"context_line":"                # make sure XML is generated correctly (bug 1691195)"},{"line_number":1290,"context_line":"                copy_dev \u003d conf.source_type \u003d\u003d \u0027block\u0027"},{"line_number":1291,"context_line":"                dev.rebase(conf.source_path, copy\u003dTrue, reuse_ext\u003dTrue,"},{"line_number":1292,"context_line":"                           copy_dev\u003dcopy_dev)"},{"line_number":1293,"context_line":"                while not dev.is_job_complete():"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_768452d3","line":1290,"range":{"start_line":1290,"start_character":16,"end_line":1290,"end_character":54},"updated":"2017-06-05 23:55:02.000000000","message":"Cool I was looking for a conditional on setting the flag because of things like NFS...","commit_id":"a8a4a8ea7b8e6c85273ddb02d34d6af1740b183f"}],"nova/virt/libvirt/guest.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ebccee6287afddd0e8b9cfc0ced00ece88df41a1","unresolved":false,"context_lines":[{"line_number":741,"context_line":"            end\u003dstatus[\u0027end\u0027])"},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"    def rebase(self, base, shallow\u003dFalse, reuse_ext\u003dFalse,"},{"line_number":744,"context_line":"               copy\u003dFalse, relative\u003dFalse, copy_dev\u003dFalse):"},{"line_number":745,"context_line":"        \"\"\"Copy data from backing chain into a new disk"},{"line_number":746,"context_line":""},{"line_number":747,"context_line":"        This copies data from backing file(s) into overlay(s), giving"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_6e7cb782","line":744,"range":{"start_line":744,"start_character":43,"end_line":744,"end_character":51},"updated":"2017-06-02 15:09:13.000000000","message":"would \u0027is_block\u0027 make more sense here?","commit_id":"ecc212aacf27203451a9c889452c219808ab2078"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"746cb44fb59ce91d39e1110e8d9ae94013add8e5","unresolved":false,"context_lines":[{"line_number":741,"context_line":"            end\u003dstatus[\u0027end\u0027])"},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"    def rebase(self, base, shallow\u003dFalse, reuse_ext\u003dFalse,"},{"line_number":744,"context_line":"               copy\u003dFalse, relative\u003dFalse, copy_dev\u003dFalse):"},{"line_number":745,"context_line":"        \"\"\"Copy data from backing chain into a new disk"},{"line_number":746,"context_line":""},{"line_number":747,"context_line":"        This copies data from backing file(s) into overlay(s), giving"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_f4ce5a58","line":744,"range":{"start_line":744,"start_character":43,"end_line":744,"end_character":51},"in_reply_to":"df140735_6e7cb782","updated":"2017-06-02 16:22:13.000000000","message":"Looks like we\u0027re sticking with the libvirt flag names, which are VIR_DOMAIN_BLOCK_REBASE_\u003cthing\u003e, where \u003cthing\u003e is COPY, SHALLOW, RELATIVE, REUSE_EXT, COPY_DEV, etc.","commit_id":"ecc212aacf27203451a9c889452c219808ab2078"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7c87d6d6dd6b66baee0d589f1e27ef9d7fe1bf6c","unresolved":false,"context_lines":[{"line_number":741,"context_line":"            end\u003dstatus[\u0027end\u0027])"},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"    def rebase(self, base, shallow\u003dFalse, reuse_ext\u003dFalse,"},{"line_number":744,"context_line":"               copy\u003dFalse, relative\u003dFalse, copy_dev\u003dFalse):"},{"line_number":745,"context_line":"        \"\"\"Copy data from backing chain into a new disk"},{"line_number":746,"context_line":""},{"line_number":747,"context_line":"        This copies data from backing file(s) into overlay(s), giving"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_3f0b8b24","line":744,"range":{"start_line":744,"start_character":43,"end_line":744,"end_character":51},"in_reply_to":"df140735_f4ce5a58","updated":"2017-06-02 16:30:57.000000000","message":"Sounds fair","commit_id":"ecc212aacf27203451a9c889452c219808ab2078"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ebccee6287afddd0e8b9cfc0ced00ece88df41a1","unresolved":false,"context_lines":[{"line_number":753,"context_line":"        :param reuse_ext: Reuse an existing external file that was"},{"line_number":754,"context_line":"                          pre-created"},{"line_number":755,"context_line":"        :param copy: Start a copy job"},{"line_number":756,"context_line":"        :param relative: Keep backing chain referenced using relative names"},{"line_number":757,"context_line":"        \"\"\""},{"line_number":758,"context_line":"        flags \u003d shallow and libvirt.VIR_DOMAIN_BLOCK_REBASE_SHALLOW or 0"},{"line_number":759,"context_line":"        flags |\u003d reuse_ext and libvirt.VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT or 0"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_4e6d73ca","line":756,"updated":"2017-06-02 15:09:13.000000000","message":"missing docstring","commit_id":"ecc212aacf27203451a9c889452c219808ab2078"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"746cb44fb59ce91d39e1110e8d9ae94013add8e5","unresolved":false,"context_lines":[{"line_number":753,"context_line":"        :param reuse_ext: Reuse an existing external file that was"},{"line_number":754,"context_line":"                          pre-created"},{"line_number":755,"context_line":"        :param copy: Start a copy job"},{"line_number":756,"context_line":"        :param relative: Keep backing chain referenced using relative names"},{"line_number":757,"context_line":"        \"\"\""},{"line_number":758,"context_line":"        flags \u003d shallow and libvirt.VIR_DOMAIN_BLOCK_REBASE_SHALLOW or 0"},{"line_number":759,"context_line":"        flags |\u003d reuse_ext and libvirt.VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT or 0"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_b4ed82b8","line":756,"in_reply_to":"df140735_4e6d73ca","updated":"2017-06-02 16:22:13.000000000","message":"Done","commit_id":"ecc212aacf27203451a9c889452c219808ab2078"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"2b11a4d8edbd0209eacc0d0d4b8c08aefdfadcb7","unresolved":false,"context_lines":[{"line_number":759,"context_line":"        flags |\u003d reuse_ext and libvirt.VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT or 0"},{"line_number":760,"context_line":"        flags |\u003d copy and libvirt.VIR_DOMAIN_BLOCK_REBASE_COPY or 0"},{"line_number":761,"context_line":"        flags |\u003d relative and libvirt.VIR_DOMAIN_BLOCK_REBASE_RELATIVE or 0"},{"line_number":762,"context_line":"        flags |\u003d copy_dev and libvirt.VIR_DOMAIN_BLOCK_REBASE_COPY_DEV or 0"},{"line_number":763,"context_line":"        return self._guest._domain.blockRebase("},{"line_number":764,"context_line":"            self._disk, base, self.REBASE_DEFAULT_BANDWIDTH, flags\u003dflags)"},{"line_number":765,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ff0f0b1f_6adae317","line":762,"updated":"2017-05-18 09:42:53.000000000","message":"If you have a reason to re-spin, might want to put this right below the line where the related \"VIR_DOMAIN_BLOCK_REBASE_COPY\" flag is -- just makes it a tad easy on the eye when reading. :-)\n\n\n/me first thought maybe the same flag, \u0027copy\u0027, could be used  to indicate the device vs file distinction, depending on the flag that was supplied to it:\n\n    flags |\u003d copy and (libvirt.VIR_DOMAIN_BLOCK_REBASE_COPY \n             | libvirt.VIR_DOMAIN_BLOCK_REBASE_COPY_DEV) or 0\n\nAs discussed on IRC, probably it\u0027s better to do in two lines to remain consistent with the rest.","commit_id":"ecc212aacf27203451a9c889452c219808ab2078"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"746cb44fb59ce91d39e1110e8d9ae94013add8e5","unresolved":false,"context_lines":[{"line_number":759,"context_line":"        flags |\u003d reuse_ext and libvirt.VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT or 0"},{"line_number":760,"context_line":"        flags |\u003d copy and libvirt.VIR_DOMAIN_BLOCK_REBASE_COPY or 0"},{"line_number":761,"context_line":"        flags |\u003d relative and libvirt.VIR_DOMAIN_BLOCK_REBASE_RELATIVE or 0"},{"line_number":762,"context_line":"        flags |\u003d copy_dev and libvirt.VIR_DOMAIN_BLOCK_REBASE_COPY_DEV or 0"},{"line_number":763,"context_line":"        return self._guest._domain.blockRebase("},{"line_number":764,"context_line":"            self._disk, base, self.REBASE_DEFAULT_BANDWIDTH, flags\u003dflags)"},{"line_number":765,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_9415de9e","line":762,"in_reply_to":"ff0f0b1f_6adae317","updated":"2017-06-02 16:22:13.000000000","message":"Done","commit_id":"ecc212aacf27203451a9c889452c219808ab2078"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bdadc52947327f60bd429d0dd9d1dd35f2b99802","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        except Exception:"},{"line_number":329,"context_line":"            return None"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # FIXME(lyarwood): Workaround for the device being either a target dev"},{"line_number":332,"context_line":"        # when called via swap_volume or source file when called via"},{"line_number":333,"context_line":"        # live_snapshot. This should be removed once both are refactored to use"},{"line_number":334,"context_line":"        # only the target dev of the device."},{"line_number":335,"context_line":"        node \u003d doc.find(\"./devices/disk/target[@dev\u003d\u0027%s\u0027]..\" % device)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_d6655e1f","line":332,"range":{"start_line":331,"start_character":8,"end_line":332,"end_character":37},"updated":"2017-06-05 23:55:02.000000000","message":"Is this related to what\u0027s changing at all? Like to http://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetBlockInfo (which I know we\u0027re not using right now, but should we be?).","commit_id":"a8a4a8ea7b8e6c85273ddb02d34d6af1740b183f"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"75e6e8d3a3b999dbf84aa9c2d5b826905d0def9a","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        except Exception:"},{"line_number":329,"context_line":"            return None"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # FIXME(lyarwood): Workaround for the device being either a target dev"},{"line_number":332,"context_line":"        # when called via swap_volume or source file when called via"},{"line_number":333,"context_line":"        # live_snapshot. This should be removed once both are refactored to use"},{"line_number":334,"context_line":"        # only the target dev of the device."},{"line_number":335,"context_line":"        node \u003d doc.find(\"./devices/disk/target[@dev\u003d\u0027%s\u0027]..\" % device)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_4a587686","line":332,"range":{"start_line":331,"start_character":8,"end_line":332,"end_character":37},"in_reply_to":"df140735_c16596b6","updated":"2017-06-06 08:08:33.000000000","message":"Correct Artom, this isn\u0027t related. The very WIP changes I had for this are on the following bug topic at the moment :\n\nhttps://review.openstack.org/#/q/status:open+project:openstack/nova+branch:master+topic:bug/1643017","commit_id":"a8a4a8ea7b8e6c85273ddb02d34d6af1740b183f"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"6579d3a18f546523ae415a072fc2f40f530c4269","unresolved":false,"context_lines":[{"line_number":328,"context_line":"        except Exception:"},{"line_number":329,"context_line":"            return None"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # FIXME(lyarwood): Workaround for the device being either a target dev"},{"line_number":332,"context_line":"        # when called via swap_volume or source file when called via"},{"line_number":333,"context_line":"        # live_snapshot. This should be removed once both are refactored to use"},{"line_number":334,"context_line":"        # only the target dev of the device."},{"line_number":335,"context_line":"        node \u003d doc.find(\"./devices/disk/target[@dev\u003d\u0027%s\u0027]..\" % device)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_c16596b6","line":332,"range":{"start_line":331,"start_character":8,"end_line":332,"end_character":37},"in_reply_to":"df140735_d6655e1f","updated":"2017-06-06 00:46:04.000000000","message":"I don\u0027t think so. I understand it as handling the different way get_disk is called:\n\n1. With the target dev from swap_volume [1]\n\n2. With the source file from live_snapshot - I think this is [2] but I\u0027m not sure. [2] was added in the same commit as the FIXME, and it\u0027s the only other instance of calling get_disk that I can find besides [1]\n\n[1] https://review.openstack.org/#/c/465205/3/nova/virt/libvirt/driver.py@1315\n[2] https://review.openstack.org/#/c/465205/3/nova/virt/libvirt/guest.py@827","commit_id":"a8a4a8ea7b8e6c85273ddb02d34d6af1740b183f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bdadc52947327f60bd429d0dd9d1dd35f2b99802","unresolved":false,"context_lines":[{"line_number":766,"context_line":"        flags \u003d shallow and libvirt.VIR_DOMAIN_BLOCK_REBASE_SHALLOW or 0"},{"line_number":767,"context_line":"        flags |\u003d reuse_ext and libvirt.VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT or 0"},{"line_number":768,"context_line":"        flags |\u003d copy and libvirt.VIR_DOMAIN_BLOCK_REBASE_COPY or 0"},{"line_number":769,"context_line":"        flags |\u003d copy_dev and libvirt.VIR_DOMAIN_BLOCK_REBASE_COPY_DEV or 0"},{"line_number":770,"context_line":"        flags |\u003d relative and libvirt.VIR_DOMAIN_BLOCK_REBASE_RELATIVE or 0"},{"line_number":771,"context_line":"        return self._guest._domain.blockRebase("},{"line_number":772,"context_line":"            self._disk, base, self.REBASE_DEFAULT_BANDWIDTH, flags\u003dflags)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_b69aea10","line":769,"range":{"start_line":769,"start_character":38,"end_line":769,"end_character":70},"updated":"2017-06-05 23:55:02.000000000","message":"http://libvirt.org/html/libvirt-libvirt-domain.html#virDomainBlockRebase says:\n\n\"using VIR_DOMAIN_BLOCK_REBASE_COPY_DEV treats the destination as type\u003d\u0027block\u0027 (affecting how virDomainGetBlockInfo() will report allocation after pivoting).\"\n\nBut I guess we don\u0027t use virDomainGetBlockInfo so nothing to worry about...\n\n--\n\nAre there any version constraints on using VIR_DOMAIN_BLOCK_REBASE_COPY_DEV in QEMU, i.e. when was that flag added?","commit_id":"a8a4a8ea7b8e6c85273ddb02d34d6af1740b183f"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"6579d3a18f546523ae415a072fc2f40f530c4269","unresolved":false,"context_lines":[{"line_number":766,"context_line":"        flags \u003d shallow and libvirt.VIR_DOMAIN_BLOCK_REBASE_SHALLOW or 0"},{"line_number":767,"context_line":"        flags |\u003d reuse_ext and libvirt.VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT or 0"},{"line_number":768,"context_line":"        flags |\u003d copy and libvirt.VIR_DOMAIN_BLOCK_REBASE_COPY or 0"},{"line_number":769,"context_line":"        flags |\u003d copy_dev and libvirt.VIR_DOMAIN_BLOCK_REBASE_COPY_DEV or 0"},{"line_number":770,"context_line":"        flags |\u003d relative and libvirt.VIR_DOMAIN_BLOCK_REBASE_RELATIVE or 0"},{"line_number":771,"context_line":"        return self._guest._domain.blockRebase("},{"line_number":772,"context_line":"            self._disk, base, self.REBASE_DEFAULT_BANDWIDTH, flags\u003dflags)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df140735_c1cc7636","line":769,"range":{"start_line":769,"start_character":38,"end_line":769,"end_character":70},"in_reply_to":"df140735_b69aea10","updated":"2017-06-06 00:46:04.000000000","message":"I can\u0027t find the actual commit since things moved around in libvirt, but looks like it was being discussed in 2014 [1].\n\nAlso, by using this flag we actually *preserve* the pre-swap-volume XML, instead of transforming it into type\u003d\"file\", so if we had any (hidden, apparently) issues with how allocation is reported, this should fix them.\n\n[1] https://www.redhat.com/archives/libvir-list/2014-August/msg00593.html","commit_id":"a8a4a8ea7b8e6c85273ddb02d34d6af1740b183f"}]}
