)]}'
{"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d96f14c32bbdc497c15121cb9351c675b0381ca3","unresolved":false,"context_lines":[{"line_number":15461,"context_line":"        self._test_get_host_numa_topology_invalid_network_affinity("},{"line_number":15462,"context_line":"            \u0027neutron_tunnel\u0027)"},{"line_number":15463,"context_line":""},{"line_number":15464,"context_line":"    @ddt.unpack"},{"line_number":15465,"context_line":"    @ddt.data((False, False), (False, True), (True, False))"},{"line_number":15466,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.driver.LOG.warning\u0027)"},{"line_number":15467,"context_line":"    def test_get_host_numa_topology_broken_libvirt_meminfo(self,"},{"line_number":15468,"context_line":"            has_min_version, wrong_qty, mock_warning):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfdaf3ff_f4923e9f","line":15465,"range":{"start_line":15464,"start_character":3,"end_line":15465,"end_character":59},"updated":"2019-01-15 18:27:49.000000000","message":"i dont think i have used this before but from context this will invoke test_get_host_numa_topology_broken_libvirt_meminfo\n\n3 times passing each of the data tuples in place of has_min_version and wrong_qty \n\ntesting the 3 possible combinaitons.\n\nthat makes the code below a little more complext but it also makes it more compact so i guess its a trade off of 3 tests with duplicate code vs one.","commit_id":"d253fa3d5554e0064a86c54455f3d7443f5f906d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"006c3b0183fe665db9f9381b709940876942b9be","unresolved":false,"context_lines":[{"line_number":15461,"context_line":"        self._test_get_host_numa_topology_invalid_network_affinity("},{"line_number":15462,"context_line":"            \u0027neutron_tunnel\u0027)"},{"line_number":15463,"context_line":""},{"line_number":15464,"context_line":"    @ddt.unpack"},{"line_number":15465,"context_line":"    @ddt.data((False, False), (False, True), (True, False))"},{"line_number":15466,"context_line":"    @mock.patch(\u0027nova.virt.libvirt.driver.LOG.warning\u0027)"},{"line_number":15467,"context_line":"    def test_get_host_numa_topology_broken_libvirt_meminfo(self,"},{"line_number":15468,"context_line":"            has_min_version, wrong_qty, mock_warning):"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfdaf3ff_0f57af04","line":15465,"range":{"start_line":15464,"start_character":3,"end_line":15465,"end_character":59},"in_reply_to":"bfdaf3ff_f4923e9f","updated":"2019-01-16 14:54:20.000000000","message":"Correct. I should have been able to use a dict but I couldn\u0027t get it to work, sadly","commit_id":"d253fa3d5554e0064a86c54455f3d7443f5f906d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d96f14c32bbdc497c15121cb9351c675b0381ca3","unresolved":false,"context_lines":[{"line_number":15488,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":15489,"context_line":""},{"line_number":15490,"context_line":"        version \u003d versionutils.convert_version_to_int("},{"line_number":15491,"context_line":"            libvirt_driver.MIN_LIBVIRT_SMALL_PAGES)"},{"line_number":15492,"context_line":"        if not has_min_version:"},{"line_number":15493,"context_line":"            version -\u003d 1"},{"line_number":15494,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bfdaf3ff_94e65244","line":15491,"range":{"start_line":15491,"start_character":27,"end_line":15491,"end_character":50},"updated":"2019-01-15 18:27:49.000000000","message":"nit: i might change this to MIN_LIBVIRT_SMALL_PAGE_REPORTING\nbut that is minor","commit_id":"d253fa3d5554e0064a86c54455f3d7443f5f906d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"006c3b0183fe665db9f9381b709940876942b9be","unresolved":false,"context_lines":[{"line_number":15488,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":15489,"context_line":""},{"line_number":15490,"context_line":"        version \u003d versionutils.convert_version_to_int("},{"line_number":15491,"context_line":"            libvirt_driver.MIN_LIBVIRT_SMALL_PAGES)"},{"line_number":15492,"context_line":"        if not has_min_version:"},{"line_number":15493,"context_line":"            version -\u003d 1"},{"line_number":15494,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bfdaf3ff_4f7617a7","line":15491,"range":{"start_line":15491,"start_character":27,"end_line":15491,"end_character":50},"in_reply_to":"bfdaf3ff_94e65244","updated":"2019-01-16 14:54:20.000000000","message":"Done","commit_id":"d253fa3d5554e0064a86c54455f3d7443f5f906d"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"9e5e3584f8a8e882db80c8bdc80aa774c981aab5","unresolved":false,"context_lines":[{"line_number":16984,"context_line":"            # incorrect"},{"line_number":16985,"context_line":""},{"line_number":16986,"context_line":"            if not has_min_version and wrong_qty:"},{"line_number":16987,"context_line":"                self.assertTrue(mock_warning.called)"},{"line_number":16988,"context_line":"            else:"},{"line_number":16989,"context_line":"                self.assertFalse(mock_warning.called)"},{"line_number":16990,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_ff72087c","line":16987,"updated":"2020-03-17 13:22:32.000000000","message":"nit: could we check that we called it with the error message that we expect?","commit_id":"4167a3043d52017b4ad757cc922d3f537f46be08"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d96f14c32bbdc497c15121cb9351c675b0381ca3","unresolved":false,"context_lines":[{"line_number":6387,"context_line":"                # resulting in invalid values for 4k page count (small pages)."},{"line_number":6388,"context_line":"                # This is usually triggered by having more than 4 GB hugepages"},{"line_number":6389,"context_line":"                # allocated."},{"line_number":6390,"context_line":"                if pages.size \u003d\u003d 4 and not self._host.has_min_version("},{"line_number":6391,"context_line":"                        MIN_LIBVIRT_SMALL_PAGES):"},{"line_number":6392,"context_line":"                    pages_total \u003d (cell.memory - sum(["},{"line_number":6393,"context_line":"                        pages_.total * pages_.size for pages_ in cell.mempages"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfdaf3ff_f46ebe94","line":6390,"range":{"start_line":6390,"start_character":33,"end_line":6390,"end_character":34},"updated":"2019-01-15 18:27:49.000000000","message":"you proably should not hard code 4 here and instead get the smallest page size.\n\nits fine to assuem 4 in the tests but if the libvirt dirver is used on non x86 systems like power the kernel small page size may not be 4k","commit_id":"d253fa3d5554e0064a86c54455f3d7443f5f906d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"006c3b0183fe665db9f9381b709940876942b9be","unresolved":false,"context_lines":[{"line_number":6387,"context_line":"                # resulting in invalid values for 4k page count (small pages)."},{"line_number":6388,"context_line":"                # This is usually triggered by having more than 4 GB hugepages"},{"line_number":6389,"context_line":"                # allocated."},{"line_number":6390,"context_line":"                if pages.size \u003d\u003d 4 and not self._host.has_min_version("},{"line_number":6391,"context_line":"                        MIN_LIBVIRT_SMALL_PAGES):"},{"line_number":6392,"context_line":"                    pages_total \u003d (cell.memory - sum(["},{"line_number":6393,"context_line":"                        pages_.total * pages_.size for pages_ in cell.mempages"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfdaf3ff_2f81534b","line":6390,"range":{"start_line":6390,"start_character":33,"end_line":6390,"end_character":34},"in_reply_to":"bfdaf3ff_f46ebe94","updated":"2019-01-16 14:54:20.000000000","message":"Done","commit_id":"d253fa3d5554e0064a86c54455f3d7443f5f906d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d96f14c32bbdc497c15121cb9351c675b0381ca3","unresolved":false,"context_lines":[{"line_number":6391,"context_line":"                        MIN_LIBVIRT_SMALL_PAGES):"},{"line_number":6392,"context_line":"                    pages_total \u003d (cell.memory - sum(["},{"line_number":6393,"context_line":"                        pages_.total * pages_.size for pages_ in cell.mempages"},{"line_number":6394,"context_line":"                        if pages_.size !\u003d 4])) / 4"},{"line_number":6395,"context_line":""},{"line_number":6396,"context_line":"                    if pages.total !\u003d pages_total:"},{"line_number":6397,"context_line":"                        # this might not always be wrong if a vendor is"}],"source_content_type":"text/x-python","patch_set":1,"id":"bfdaf3ff_542eaa43","line":6394,"range":{"start_line":6394,"start_character":42,"end_line":6394,"end_character":50},"updated":"2019-01-15 18:27:49.000000000","message":"same as above technically we shoudl not assume 4 so i would pull out a local variable for small_page_size and replace all hardcoded instances of 4 in this fucntion with it.","commit_id":"d253fa3d5554e0064a86c54455f3d7443f5f906d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a824c179ca928e85b79e6f295b1504d3f91a4efb","unresolved":false,"context_lines":[{"line_number":6381,"context_line":"            # Filter out empty sibling sets that may be left"},{"line_number":6382,"context_line":"            siblings \u003d [sib for sib in siblings if len(sib) \u003e 0]"},{"line_number":6383,"context_line":""},{"line_number":6384,"context_line":"            min_page_size \u003d min([pages.size for pages in cell.mempages])"},{"line_number":6385,"context_line":"            mempages \u003d []"},{"line_number":6386,"context_line":"            for pages in cell.mempages:"},{"line_number":6387,"context_line":"                # Handle rhbz#1569678, where an unsigned int overflow was"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_8f4f1fbc","line":6384,"range":{"start_line":6384,"start_character":12,"end_line":6384,"end_character":72},"updated":"2019-01-15 19:31:20.000000000","message":"yep this should work","commit_id":"30ecd69ac17392f2bad6343e7df9301de884557c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6a0a826987cdde9d86232d04e2cecc4005337966","unresolved":false,"context_lines":[{"line_number":6383,"context_line":""},{"line_number":6384,"context_line":"            min_page_size \u003d min([pages.size for pages in cell.mempages])"},{"line_number":6385,"context_line":"            mempages \u003d []"},{"line_number":6386,"context_line":"            for pages in cell.mempages:"},{"line_number":6387,"context_line":"                # Handle rhbz#1569678, where an unsigned int overflow was"},{"line_number":6388,"context_line":"                # resulting in invalid values for 4k page count (small pages)."},{"line_number":6389,"context_line":"                # This is usually triggered by having more than 4 GB hugepages"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_6fcafb1a","line":6386,"updated":"2019-01-15 19:27:31.000000000","message":"If possible, I\u0027d suggest throwing as much of this into a private method which is then only around while we support libvirt \u003c 4.3.0 which then makes this easier to (1) test and (2) remove. This method is big as hell already, so shoveling as much of this off into a private method would be nice.","commit_id":"30ecd69ac17392f2bad6343e7df9301de884557c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"006c3b0183fe665db9f9381b709940876942b9be","unresolved":false,"context_lines":[{"line_number":6383,"context_line":""},{"line_number":6384,"context_line":"            min_page_size \u003d min([pages.size for pages in cell.mempages])"},{"line_number":6385,"context_line":"            mempages \u003d []"},{"line_number":6386,"context_line":"            for pages in cell.mempages:"},{"line_number":6387,"context_line":"                # Handle rhbz#1569678, where an unsigned int overflow was"},{"line_number":6388,"context_line":"                # resulting in invalid values for 4k page count (small pages)."},{"line_number":6389,"context_line":"                # This is usually triggered by having more than 4 GB hugepages"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_38bd0dd8","line":6386,"in_reply_to":"bfdaf3ff_6f98bb1a","updated":"2019-01-16 14:54:20.000000000","message":"To be honest, I\u0027d imagined we\u0027d just revert the entire commit once we do that (likely U?). You\u0027re right that this function could be split this up though so I\u0027ve done just that.","commit_id":"30ecd69ac17392f2bad6343e7df9301de884557c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a824c179ca928e85b79e6f295b1504d3f91a4efb","unresolved":false,"context_lines":[{"line_number":6383,"context_line":""},{"line_number":6384,"context_line":"            min_page_size \u003d min([pages.size for pages in cell.mempages])"},{"line_number":6385,"context_line":"            mempages \u003d []"},{"line_number":6386,"context_line":"            for pages in cell.mempages:"},{"line_number":6387,"context_line":"                # Handle rhbz#1569678, where an unsigned int overflow was"},{"line_number":6388,"context_line":"                # resulting in invalid values for 4k page count (small pages)."},{"line_number":6389,"context_line":"                # This is usually triggered by having more than 4 GB hugepages"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_6f98bb1a","line":6386,"in_reply_to":"bfdaf3ff_6fcafb1a","updated":"2019-01-15 19:31:20.000000000","message":"ya that would be a nice addtion","commit_id":"30ecd69ac17392f2bad6343e7df9301de884557c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6a0a826987cdde9d86232d04e2cecc4005337966","unresolved":false,"context_lines":[{"line_number":6389,"context_line":"                # This is usually triggered by having more than 4 GB hugepages"},{"line_number":6390,"context_line":"                # allocated."},{"line_number":6391,"context_line":"                if pages.size \u003d\u003d min_page_size and not ("},{"line_number":6392,"context_line":"                        self._host.has_min_version("},{"line_number":6393,"context_line":"                            MIN_LIBVIRT_SMALL_PAGE_REPORTING)):"},{"line_number":6394,"context_line":"                    pages_total \u003d (cell.memory - sum(["},{"line_number":6395,"context_line":"                        pages_.total * pages_.size for pages_ in cell.mempages"},{"line_number":6396,"context_line":"                        if pages_.size !\u003d min_page_size])) / min_page_size"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_6f7c3beb","line":6393,"range":{"start_line":6392,"start_character":24,"end_line":6393,"end_character":61},"updated":"2019-01-15 19:27:31.000000000","message":"Rather than check this for every iteration of the loop if the first part of the condition is true, just save a variable?\n\nOh I see this is a nested for loop, even better.","commit_id":"30ecd69ac17392f2bad6343e7df9301de884557c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"006c3b0183fe665db9f9381b709940876942b9be","unresolved":false,"context_lines":[{"line_number":6389,"context_line":"                # This is usually triggered by having more than 4 GB hugepages"},{"line_number":6390,"context_line":"                # allocated."},{"line_number":6391,"context_line":"                if pages.size \u003d\u003d min_page_size and not ("},{"line_number":6392,"context_line":"                        self._host.has_min_version("},{"line_number":6393,"context_line":"                            MIN_LIBVIRT_SMALL_PAGE_REPORTING)):"},{"line_number":6394,"context_line":"                    pages_total \u003d (cell.memory - sum(["},{"line_number":6395,"context_line":"                        pages_.total * pages_.size for pages_ in cell.mempages"},{"line_number":6396,"context_line":"                        if pages_.size !\u003d min_page_size])) / min_page_size"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_4b227a02","line":6393,"range":{"start_line":6392,"start_character":24,"end_line":6393,"end_character":61},"in_reply_to":"bfdaf3ff_6f667b2c","updated":"2019-01-16 14:54:20.000000000","message":"mempages is a list of objects without an easy way to access a specific mempage size, so either way I need to loop through this twice. It\u0027s not longer nested in the next revision though","commit_id":"30ecd69ac17392f2bad6343e7df9301de884557c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"a824c179ca928e85b79e6f295b1504d3f91a4efb","unresolved":false,"context_lines":[{"line_number":6389,"context_line":"                # This is usually triggered by having more than 4 GB hugepages"},{"line_number":6390,"context_line":"                # allocated."},{"line_number":6391,"context_line":"                if pages.size \u003d\u003d min_page_size and not ("},{"line_number":6392,"context_line":"                        self._host.has_min_version("},{"line_number":6393,"context_line":"                            MIN_LIBVIRT_SMALL_PAGE_REPORTING)):"},{"line_number":6394,"context_line":"                    pages_total \u003d (cell.memory - sum(["},{"line_number":6395,"context_line":"                        pages_.total * pages_.size for pages_ in cell.mempages"},{"line_number":6396,"context_line":"                        if pages_.size !\u003d min_page_size])) / min_page_size"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_6f667b2c","line":6393,"range":{"start_line":6392,"start_character":24,"end_line":6393,"end_character":61},"in_reply_to":"bfdaf3ff_6f7c3beb","updated":"2019-01-15 19:31:20.000000000","message":"ya if you shoudl be ablle to pull this check up.\nif stephen refactors this into a private method this check can just be done once to either call that method or skip it and use the libvirt values","commit_id":"30ecd69ac17392f2bad6343e7df9301de884557c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6a0a826987cdde9d86232d04e2cecc4005337966","unresolved":false,"context_lines":[{"line_number":6399,"context_line":"                        # this might not always be wrong if a vendor is"},{"line_number":6400,"context_line":"                        # backporting important fixes"},{"line_number":6401,"context_line":"                        LOG.warning("},{"line_number":6402,"context_line":"                            \u0027libvirt is reporting incorrect values for small \u0027"},{"line_number":6403,"context_line":"                            \u0027pages (%rk). See bug #1811870 for more \u0027"},{"line_number":6404,"context_line":"                            \u0027information. Expected: %r, got: %r\u0027,"},{"line_number":6405,"context_line":"                            min_page_size, pages_total, pages.total)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_0f832fce","line":6402,"range":{"start_line":6402,"start_character":29,"end_line":6402,"end_character":36},"updated":"2019-01-15 19:27:31.000000000","message":"Include the version in the warning message?","commit_id":"30ecd69ac17392f2bad6343e7df9301de884557c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ef377f61985f632df32030ffab592888e3e37916","unresolved":false,"context_lines":[{"line_number":6399,"context_line":"                        # this might not always be wrong if a vendor is"},{"line_number":6400,"context_line":"                        # backporting important fixes"},{"line_number":6401,"context_line":"                        LOG.warning("},{"line_number":6402,"context_line":"                            \u0027libvirt is reporting incorrect values for small \u0027"},{"line_number":6403,"context_line":"                            \u0027pages (%rk). See bug #1811870 for more \u0027"},{"line_number":6404,"context_line":"                            \u0027information. Expected: %r, got: %r\u0027,"},{"line_number":6405,"context_line":"                            min_page_size, pages_total, pages.total)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_cf03e741","line":6402,"range":{"start_line":6402,"start_character":29,"end_line":6402,"end_character":36},"in_reply_to":"bfdaf3ff_0f832fce","updated":"2019-01-15 19:28:37.000000000","message":"Also, you only need to log this at most once per call to this method, right? Don\u0027t need to warn for every iteration of this loop (which is actually 2 loops).","commit_id":"30ecd69ac17392f2bad6343e7df9301de884557c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"006c3b0183fe665db9f9381b709940876942b9be","unresolved":false,"context_lines":[{"line_number":6399,"context_line":"                        # this might not always be wrong if a vendor is"},{"line_number":6400,"context_line":"                        # backporting important fixes"},{"line_number":6401,"context_line":"                        LOG.warning("},{"line_number":6402,"context_line":"                            \u0027libvirt is reporting incorrect values for small \u0027"},{"line_number":6403,"context_line":"                            \u0027pages (%rk). See bug #1811870 for more \u0027"},{"line_number":6404,"context_line":"                            \u0027information. Expected: %r, got: %r\u0027,"},{"line_number":6405,"context_line":"                            min_page_size, pages_total, pages.total)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bfdaf3ff_6b1dfebb","line":6402,"range":{"start_line":6402,"start_character":29,"end_line":6402,"end_character":36},"in_reply_to":"bfdaf3ff_cf03e741","updated":"2019-01-16 14:54:20.000000000","message":"Done","commit_id":"30ecd69ac17392f2bad6343e7df9301de884557c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d3869deacb90dd4c5daddb69d0dad5148e0ef916","unresolved":false,"context_lines":[{"line_number":6325,"context_line":"        # allocated. This entire thing can go once we raise the minimum libvirt"},{"line_number":6326,"context_line":"        # version, likely during the U development cycle."},{"line_number":6327,"context_line":"        if not self._host.has_min_version(MIN_LIBVIRT_SMALL_PAGE_REPORTING):"},{"line_number":6328,"context_line":"            small_page_size \u003d min([pages.size for pages in cells[0].mempages])"},{"line_number":6329,"context_line":"            warn \u003d True"},{"line_number":6330,"context_line":""},{"line_number":6331,"context_line":"            for cell in cells:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_01e34c35","line":6328,"range":{"start_line":6328,"start_character":59,"end_line":6328,"end_character":67},"updated":"2019-01-21 03:04:39.000000000","message":"this assumes we have same page size set in all the numa nodes. The hugepage can be configured by per node at runtime. https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/performance_tuning_guide/sect-red_hat_enterprise_linux-performance_tuning_guide-memory-configuring-huge-pages","commit_id":"6ff00674be664e1bce031f7602e28079d4011fdd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ee0c3ba394ca367174fd5e1385cc1162f1fc852","unresolved":false,"context_lines":[{"line_number":6325,"context_line":"        # allocated. This entire thing can go once we raise the minimum libvirt"},{"line_number":6326,"context_line":"        # version, likely during the U development cycle."},{"line_number":6327,"context_line":"        if not self._host.has_min_version(MIN_LIBVIRT_SMALL_PAGE_REPORTING):"},{"line_number":6328,"context_line":"            small_page_size \u003d min([pages.size for pages in cells[0].mempages])"},{"line_number":6329,"context_line":"            warn \u003d True"},{"line_number":6330,"context_line":""},{"line_number":6331,"context_line":"            for cell in cells:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_07ff8f34","line":6328,"range":{"start_line":6328,"start_character":59,"end_line":6328,"end_character":67},"in_reply_to":"9fdfeff1_01e34c35","updated":"2019-01-24 15:37:34.000000000","message":"You can\u0027t have no small pages on the system though, right? Is is not a practical assumption that there would be at least some small pages on node0?\n\n\u003cstephenfin\u003e alex_xu: Regarding https://review.openstack.org/#/c/631038/3/nova/virt/libvirt/driver.py@6328\n\u003cstephenfin\u003e alex_xu: Is it not a reasonable assumption that there will be some small pages on each NUMA node?\n\u003cstephenfin\u003e Far as I know, you can\u0027t boot a system with only large/huge pages\n\u003csean-k-mooney\u003e stephenfin: correct you cant\n\u003csean-k-mooney\u003e also even if there are 0 available i think you will still have the mempage listed","commit_id":"6ff00674be664e1bce031f7602e28079d4011fdd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"8ec8a9b2b1793c05cb8a18a0e3d399d69b3fcf08","unresolved":false,"context_lines":[{"line_number":6325,"context_line":"        # allocated. This entire thing can go once we raise the minimum libvirt"},{"line_number":6326,"context_line":"        # version, likely during the U development cycle."},{"line_number":6327,"context_line":"        if not self._host.has_min_version(MIN_LIBVIRT_SMALL_PAGE_REPORTING):"},{"line_number":6328,"context_line":"            small_page_size \u003d min([pages.size for pages in cells[0].mempages])"},{"line_number":6329,"context_line":"            warn \u003d True"},{"line_number":6330,"context_line":""},{"line_number":6331,"context_line":"            for cell in cells:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_8f3cecc8","line":6328,"range":{"start_line":6328,"start_character":59,"end_line":6328,"end_character":67},"in_reply_to":"9fdfeff1_07ff8f34","updated":"2019-01-25 00:34:35.000000000","message":"yea, right. I missed that. sorry about that.","commit_id":"6ff00674be664e1bce031f7602e28079d4011fdd"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"d87f247322f79c14fe6673ad5b4ffebfa756306d","unresolved":false,"context_lines":[{"line_number":6331,"context_line":"            for cell in cells:"},{"line_number":6332,"context_line":"                # sub combined memory usage of all other page sizes from total"},{"line_number":6333,"context_line":"                # memory to figure out how many small pages there really are"},{"line_number":6334,"context_line":"                small_pages_expected \u003d cells_mempages[cell.id][small_page_size]"},{"line_number":6335,"context_line":"                small_pages_actual \u003d (cell.memory - sum(["},{"line_number":6336,"context_line":"                    pages.total * pages.size for pages in cell.mempages"},{"line_number":6337,"context_line":"                    if pages.size !\u003d small_page_size])) / small_page_size"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_4af5e9ca","line":6334,"range":{"start_line":6334,"start_character":28,"end_line":6334,"end_character":37},"updated":"2019-01-21 08:39:54.000000000","message":"nit: reported? ...actual+expected terminology is confusing here since the `small_pages_actual` is the right(\u003dexpected) value.","commit_id":"6ff00674be664e1bce031f7602e28079d4011fdd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ee0c3ba394ca367174fd5e1385cc1162f1fc852","unresolved":false,"context_lines":[{"line_number":6331,"context_line":"            for cell in cells:"},{"line_number":6332,"context_line":"                # sub combined memory usage of all other page sizes from total"},{"line_number":6333,"context_line":"                # memory to figure out how many small pages there really are"},{"line_number":6334,"context_line":"                small_pages_expected \u003d cells_mempages[cell.id][small_page_size]"},{"line_number":6335,"context_line":"                small_pages_actual \u003d (cell.memory - sum(["},{"line_number":6336,"context_line":"                    pages.total * pages.size for pages in cell.mempages"},{"line_number":6337,"context_line":"                    if pages.size !\u003d small_page_size])) / small_page_size"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_c7a66754","line":6334,"range":{"start_line":6334,"start_character":28,"end_line":6334,"end_character":37},"in_reply_to":"9fdfeff1_4af5e9ca","updated":"2019-01-24 15:37:34.000000000","message":"Done","commit_id":"6ff00674be664e1bce031f7602e28079d4011fdd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d3869deacb90dd4c5daddb69d0dad5148e0ef916","unresolved":false,"context_lines":[{"line_number":6339,"context_line":"                if warn and small_pages_expected !\u003d small_pages_actual:"},{"line_number":6340,"context_line":"                    warn \u003d False"},{"line_number":6341,"context_line":"                    LOG.warning("},{"line_number":6342,"context_line":"                        \u0027libvirt %s is reporting incorrect values for small \u0027"},{"line_number":6343,"context_line":"                        \u0027pages (%rk). See bug #1811870 for more information.\u0027,"},{"line_number":6344,"context_line":"                        self._host.get_version(), small_page_size)"},{"line_number":6345,"context_line":""},{"line_number":6346,"context_line":"                cells_mempages[cell.id][small_page_size] \u003d small_pages_actual"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_c1d6a450","line":6343,"range":{"start_line":6342,"start_character":24,"end_line":6343,"end_character":77},"updated":"2019-01-21 03:04:39.000000000","message":"We can add words like \u0027nova corrected the value\u0027, avoid to operator confusing on whether nova correct the value, or this warning is asking operator fix libvirt version right now.","commit_id":"6ff00674be664e1bce031f7602e28079d4011fdd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ee0c3ba394ca367174fd5e1385cc1162f1fc852","unresolved":false,"context_lines":[{"line_number":6339,"context_line":"                if warn and small_pages_expected !\u003d small_pages_actual:"},{"line_number":6340,"context_line":"                    warn \u003d False"},{"line_number":6341,"context_line":"                    LOG.warning("},{"line_number":6342,"context_line":"                        \u0027libvirt %s is reporting incorrect values for small \u0027"},{"line_number":6343,"context_line":"                        \u0027pages (%rk). See bug #1811870 for more information.\u0027,"},{"line_number":6344,"context_line":"                        self._host.get_version(), small_page_size)"},{"line_number":6345,"context_line":""},{"line_number":6346,"context_line":"                cells_mempages[cell.id][small_page_size] \u003d small_pages_actual"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_6763fb1b","line":6343,"range":{"start_line":6342,"start_character":24,"end_line":6343,"end_character":77},"in_reply_to":"9fdfeff1_c1d6a450","updated":"2019-01-24 15:37:34.000000000","message":"Done","commit_id":"6ff00674be664e1bce031f7602e28079d4011fdd"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"9e5e3584f8a8e882db80c8bdc80aa774c981aab5","unresolved":false,"context_lines":[{"line_number":7004,"context_line":"        # Handle rhbz#1569678, where an unsigned int overflow was"},{"line_number":7005,"context_line":"        # resulting in invalid values for 4k page count (small pages)."},{"line_number":7006,"context_line":"        # This is usually triggered by having more than 4 GB hugepages"},{"line_number":7007,"context_line":"        # allocated. This entire thing can go once we raise the minimum libvirt"},{"line_number":7008,"context_line":"        # version, likely during the U development cycle."},{"line_number":7009,"context_line":"        if not self._host.has_min_version(MIN_LIBVIRT_SMALL_PAGE_REPORTING):"},{"line_number":7010,"context_line":"            small_page_size \u003d min([pages.size for pages in cells[0].mempages])"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_fc269616","line":7007,"range":{"start_line":7007,"start_character":39,"end_line":7007,"end_character":45},"updated":"2020-03-17 13:22:32.000000000","message":"nit: I guess a TODO here then?","commit_id":"4167a3043d52017b4ad757cc922d3f537f46be08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"570b715530365a86e29464d85a042754bdd9632e","unresolved":false,"context_lines":[{"line_number":7004,"context_line":"        # Handle rhbz#1569678, where an unsigned int overflow was"},{"line_number":7005,"context_line":"        # resulting in invalid values for 4k page count (small pages)."},{"line_number":7006,"context_line":"        # This is usually triggered by having more than 4 GB hugepages"},{"line_number":7007,"context_line":"        # allocated. This entire thing can go once we raise the minimum libvirt"},{"line_number":7008,"context_line":"        # version, likely during the U development cycle."},{"line_number":7009,"context_line":"        if not self._host.has_min_version(MIN_LIBVIRT_SMALL_PAGE_REPORTING):"},{"line_number":7010,"context_line":"            small_page_size \u003d min([pages.size for pages in cells[0].mempages])"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_5ccfb156","line":7007,"range":{"start_line":7007,"start_character":39,"end_line":7007,"end_character":45},"in_reply_to":"1fa4df85_fc269616","updated":"2020-05-25 08:21:58.000000000","message":"technically i guess but we often treat NOTE or just code comments like this as a TODO as well.\nso i dont think it need a respin for this.\nbut sure if a new version is submited then this could be a TODO.","commit_id":"4167a3043d52017b4ad757cc922d3f537f46be08"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"9e5e3584f8a8e882db80c8bdc80aa774c981aab5","unresolved":false,"context_lines":[{"line_number":7007,"context_line":"        # allocated. This entire thing can go once we raise the minimum libvirt"},{"line_number":7008,"context_line":"        # version, likely during the U development cycle."},{"line_number":7009,"context_line":"        if not self._host.has_min_version(MIN_LIBVIRT_SMALL_PAGE_REPORTING):"},{"line_number":7010,"context_line":"            small_page_size \u003d min([pages.size for pages in cells[0].mempages])"},{"line_number":7011,"context_line":"            warn \u003d True"},{"line_number":7012,"context_line":""},{"line_number":7013,"context_line":"            for cell in cells:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_fc6bf61b","line":7010,"range":{"start_line":7010,"start_character":65,"end_line":7010,"end_character":66},"updated":"2020-03-17 13:22:32.000000000","message":"✓ So this relies on all cells having the same page sizes","commit_id":"4167a3043d52017b4ad757cc922d3f537f46be08"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"570b715530365a86e29464d85a042754bdd9632e","unresolved":false,"context_lines":[{"line_number":7007,"context_line":"        # allocated. This entire thing can go once we raise the minimum libvirt"},{"line_number":7008,"context_line":"        # version, likely during the U development cycle."},{"line_number":7009,"context_line":"        if not self._host.has_min_version(MIN_LIBVIRT_SMALL_PAGE_REPORTING):"},{"line_number":7010,"context_line":"            small_page_size \u003d min([pages.size for pages in cells[0].mempages])"},{"line_number":7011,"context_line":"            warn \u003d True"},{"line_number":7012,"context_line":""},{"line_number":7013,"context_line":"            for cell in cells:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_1cfff967","line":7010,"range":{"start_line":7010,"start_character":65,"end_line":7010,"end_character":66},"in_reply_to":"1fa4df85_fc6bf61b","updated":"2020-05-25 08:21:58.000000000","message":"yep for an nova instnace that will be true.\nthat should also be true for any host cell so this shoudl be correct.\n\nthere may not be any free pages of that size left but the min page size shoudl be the same.","commit_id":"4167a3043d52017b4ad757cc922d3f537f46be08"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"9e5e3584f8a8e882db80c8bdc80aa774c981aab5","unresolved":false,"context_lines":[{"line_number":7008,"context_line":"        # version, likely during the U development cycle."},{"line_number":7009,"context_line":"        if not self._host.has_min_version(MIN_LIBVIRT_SMALL_PAGE_REPORTING):"},{"line_number":7010,"context_line":"            small_page_size \u003d min([pages.size for pages in cells[0].mempages])"},{"line_number":7011,"context_line":"            warn \u003d True"},{"line_number":7012,"context_line":""},{"line_number":7013,"context_line":"            for cell in cells:"},{"line_number":7014,"context_line":"                # sub combined memory usage of all other page sizes from total"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_5ca1ea45","line":7011,"updated":"2020-03-17 13:22:32.000000000","message":"This is just to log the warning once, right?","commit_id":"4167a3043d52017b4ad757cc922d3f537f46be08"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"fd8058e6d111e8b4cdc8db9ee7d288febaebd3b7","unresolved":false,"context_lines":[{"line_number":7008,"context_line":"        # version, likely during the U development cycle."},{"line_number":7009,"context_line":"        if not self._host.has_min_version(MIN_LIBVIRT_SMALL_PAGE_REPORTING):"},{"line_number":7010,"context_line":"            small_page_size \u003d min([pages.size for pages in cells[0].mempages])"},{"line_number":7011,"context_line":"            warn \u003d True"},{"line_number":7012,"context_line":""},{"line_number":7013,"context_line":"            for cell in cells:"},{"line_number":7014,"context_line":"                # sub combined memory usage of all other page sizes from total"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_5a8f6fcc","line":7011,"in_reply_to":"1fa4df85_5ca1ea45","updated":"2020-03-27 17:51:25.000000000","message":"Correct","commit_id":"4167a3043d52017b4ad757cc922d3f537f46be08"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"9e5e3584f8a8e882db80c8bdc80aa774c981aab5","unresolved":false,"context_lines":[{"line_number":7020,"context_line":""},{"line_number":7021,"context_line":"                if warn and small_pages_reported !\u003d small_pages_expected:"},{"line_number":7022,"context_line":"                    warn \u003d False"},{"line_number":7023,"context_line":"                    LOG.warning("},{"line_number":7024,"context_line":"                        \u0027libvirt %s is reporting incorrect values for small \u0027"},{"line_number":7025,"context_line":"                        \u0027pages (%rk). Nova has corrected the value, but you \u0027"},{"line_number":7026,"context_line":"                        \u0027should update libvirt to 4.3.0 or a version with the \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_9f2af47b","line":7023,"updated":"2020-03-17 13:22:32.000000000","message":"cont\u0027d from L7011 - Yeah OK, you need to correct the number of small pages for all cells, but you only want to print the warning once.\n\nI\u0027m on the fence about this one. We know the libvirt version *has* the problem - but it might not manifest itself if there aren\u0027t enough large pages configured. So I can see the logic of logging a warning only in the latter case, but I wouldn\u0027t mind logging it regardless, and changing the wording to something like \"you may get lucky, but you should still upgrade.\"\n\nAlso, if we decide we log the warning conditionally, I think I\u0027d prefer a `page_counted_corrected` flag (or similar), and then log outside of the loop, but that\u0027s a style nit.","commit_id":"4167a3043d52017b4ad757cc922d3f537f46be08"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"06018adbc178556842344850ece3beee3fda8f60","unresolved":false,"context_lines":[{"line_number":7025,"context_line":"                        \u0027pages (%rk). Nova has corrected the value, but you \u0027"},{"line_number":7026,"context_line":"                        \u0027should update libvirt to 4.3.0 or a version with the \u0027"},{"line_number":7027,"context_line":"                        \u0027required fix. See bug #1811870 for more information.\u0027,"},{"line_number":7028,"context_line":"                        self._host.get_version(), small_page_size)"},{"line_number":7029,"context_line":""},{"line_number":7030,"context_line":"                cells_mempages[cell.id][small_page_size] \u003d small_pages_expected"},{"line_number":7031,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_a5ba37de","line":7028,"range":{"start_line":7028,"start_character":35,"end_line":7028,"end_character":46},"updated":"2020-05-23 13:01:00.000000000","message":"Meh, this returns an integer that wouldn\u0027t make sense to most operators IMHO. \n\nhttps://libvirt.org/docs/libvirt-appdev-guide-python/en-US/html/ch03s04s06.html\n\nI think we want to use getLibVersion but there\u0027s no Host method for this at present so feel free to do this in a fup:\n\nhttps://libvirt.org/docs/libvirt-appdev-guide-python/en-US/html/ch03s04s07.html","commit_id":"4167a3043d52017b4ad757cc922d3f537f46be08"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"b3a36e7839f9d7a4380fb44805d2fa6871ab9bde","unresolved":false,"context_lines":[{"line_number":7586,"context_line":""},{"line_number":7587,"context_line":"                cells_mempages[cell.id][small_page_size] \u003d small_pages_expected"},{"line_number":7588,"context_line":""},{"line_number":7589,"context_line":"        mempages \u003d {}"},{"line_number":7590,"context_line":"        for cell_id, cell_mempages in sorted(cells_mempages.items()):"},{"line_number":7591,"context_line":"            mempages[cell_id] \u003d []"},{"line_number":7592,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_678e4733","line":7589,"updated":"2020-09-16 18:22:56.000000000","message":"pep8: error: Need type annotation for \u0027mempages\u0027 (hint: \"mempages: Dict[\u003ctype\u003e, \u003ctype\u003e] \u003d ...\")","commit_id":"3ee567d3c21e0576fb4b9d87d3a3404eb917ed9d"}]}
