)]}'
{"nova/virt/libvirt/config.py":[{"author":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"change_message_id":"ae2d9f10f22e42e8a2ce6b4466fcb52e5424f545","unresolved":false,"context_lines":[{"line_number":531,"context_line":"        if self.memory is not None:"},{"line_number":532,"context_line":"            cell.set(\"memory\", str(self.memory))"},{"line_number":533,"context_line":"        if self.memAccess is not None:"},{"line_number":534,"context_line":"            cell.set(\"memAccess\", self.memAccess)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        return cell"},{"line_number":537,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_fb201e4b","line":534,"updated":"2015-05-28 14:36:24.000000000","message":"Should the libvirt version be checked prior to setting this? The memAccess parameter was introduced in 1.2.9, and if an earlier version is used, this will not be picked up, right? The attribute might be set, but it will be ineffective.","commit_id":"d306306abecc8af885d8ac0f40a4ad8a8a3fab89"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"77b286d2cc4be27b7b6fdceacc528642aa8c0569","unresolved":false,"context_lines":[{"line_number":531,"context_line":"        if self.memory is not None:"},{"line_number":532,"context_line":"            cell.set(\"memory\", str(self.memory))"},{"line_number":533,"context_line":"        if self.memAccess is not None:"},{"line_number":534,"context_line":"            cell.set(\"memAccess\", self.memAccess)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        return cell"},{"line_number":537,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5afe65bd_1e40dda4","line":534,"in_reply_to":"5afe65bd_630cda94","updated":"2015-06-02 13:25:22.000000000","message":"That\u0027s really something that just needs to be documented for the vhostuser VIF type. This is not something it is appropriate to raise an error for at guest boot time, as the user might never even plug in a vhostuser VIF to the guest - we have no way of predicting the future right here.","commit_id":"d306306abecc8af885d8ac0f40a4ad8a8a3fab89"},{"author":{"_account_id":13177,"name":"Emma Foley","email":"efoley@redhat.com","username":"emma-l-foley"},"change_message_id":"0e9254282ddd7d4e5e71337fb3eb976f1a2294cf","unresolved":false,"context_lines":[{"line_number":531,"context_line":"        if self.memory is not None:"},{"line_number":532,"context_line":"            cell.set(\"memory\", str(self.memory))"},{"line_number":533,"context_line":"        if self.memAccess is not None:"},{"line_number":534,"context_line":"            cell.set(\"memAccess\", self.memAccess)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        return cell"},{"line_number":537,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5afe65bd_630cda94","line":534,"in_reply_to":"7a016987_9b1b6aca","updated":"2015-06-02 13:08:59.000000000","message":"But, if an older version is used, and it passes silently, plugging a vhostuser VIF type will cause issues if the memory is not shared. There should be some way to express the reasons for failure.","commit_id":"d306306abecc8af885d8ac0f40a4ad8a8a3fab89"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"6e7b729ff4349fb43744444c5d957753368c2eb4","unresolved":false,"context_lines":[{"line_number":531,"context_line":"        if self.memory is not None:"},{"line_number":532,"context_line":"            cell.set(\"memory\", str(self.memory))"},{"line_number":533,"context_line":"        if self.memAccess is not None:"},{"line_number":534,"context_line":"            cell.set(\"memAccess\", self.memAccess)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        return cell"},{"line_number":537,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_9b1b6aca","line":534,"in_reply_to":"7a016987_fb201e4b","updated":"2015-05-28 14:41:30.000000000","message":"Since older libvirt will harmlessly ignore this attribute, there is no real benefit to checking the libvirt version. We only need version checks for cases where something will be non-functional.","commit_id":"d306306abecc8af885d8ac0f40a4ad8a8a3fab89"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":12909,"name":"Mark Wu","email":"wudx05@gmail.com","username":"markw"},"change_message_id":"9931785d2ccfc77ffdf2dcde1d6d7238f9d2a58f","unresolved":false,"context_lines":[{"line_number":3451,"context_line":"        topology \u003d self._get_host_numa_topology()"},{"line_number":3452,"context_line":""},{"line_number":3453,"context_line":"        # If we have huge pages enabled, then we need to mark the"},{"line_number":3454,"context_line":"        # NUMA nodes as having shared memory access"},{"line_number":3455,"context_line":"        wants_hugepages \u003d False"},{"line_number":3456,"context_line":"        if topology is not None and instance_numa_topology is not None:"},{"line_number":3457,"context_line":"            avail_pagesize \u003d [page.size_kb"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ad32947_b60ec8e3","line":3454,"updated":"2015-04-27 13:41:58.000000000","message":"Shared memory is not required by huge page, but only for the case of vhost-user.  So it\u0027s better to add it in the comment.  Actually,  I don\u0027t like the fix and I prefer to add a spec parameter in flavor to request share memory explicitly.   With this change, the operator will see a lot of unexpected shared memory usage when they run instances backed by hugepages.  It\u0027s wired somehow.","commit_id":"c592fbcb2e00e973a91d82040217141422a4ec8b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"971268447d3f3eb7543b75791c6256071e01ece4","unresolved":false,"context_lines":[{"line_number":3451,"context_line":"        topology \u003d self._get_host_numa_topology()"},{"line_number":3452,"context_line":""},{"line_number":3453,"context_line":"        # If we have huge pages enabled, then we need to mark the"},{"line_number":3454,"context_line":"        # NUMA nodes as having shared memory access"},{"line_number":3455,"context_line":"        wants_hugepages \u003d False"},{"line_number":3456,"context_line":"        if topology is not None and instance_numa_topology is not None:"},{"line_number":3457,"context_line":"            avail_pagesize \u003d [page.size_kb"}],"source_content_type":"text/x-python","patch_set":2,"id":"bab921fb_1056e6cd","line":3454,"updated":"2015-04-26 06:55:52.000000000","message":"can we break lines 3455 - 3468 into a helper method.\nthis may aid with testing","commit_id":"c592fbcb2e00e973a91d82040217141422a4ec8b"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"1588faf648fbf4fcf72b74e955cd910d2e56b8b0","unresolved":false,"context_lines":[{"line_number":3451,"context_line":"        topology \u003d self._get_host_numa_topology()"},{"line_number":3452,"context_line":""},{"line_number":3453,"context_line":"        # If we have huge pages enabled, then we need to mark the"},{"line_number":3454,"context_line":"        # NUMA nodes as having shared memory access"},{"line_number":3455,"context_line":"        wants_hugepages \u003d False"},{"line_number":3456,"context_line":"        if topology is not None and instance_numa_topology is not None:"},{"line_number":3457,"context_line":"            avail_pagesize \u003d [page.size_kb"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ad32947_3aa4bd55","line":3454,"in_reply_to":"7ad32947_b60ec8e3","updated":"2015-04-28 08:53:18.000000000","message":"I don\u0027t think that is a compelling reason to make a configurable knob for this. Users should not be expected to know that vhost-user requires shared memory pages - this is a low level hypervisor specific implementation detail - we should just always use them so that everything \"just works\" without them having to research obscure flags to set.","commit_id":"c592fbcb2e00e973a91d82040217141422a4ec8b"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"34f9e157451c7b3c5650dbf973448609fb965e69","unresolved":false,"context_lines":[{"line_number":3464,"context_line":"            for cell in instance_numa_topology.cells:"},{"line_number":3465,"context_line":"                if (cell.pagesize is not None and"},{"line_number":3466,"context_line":"                    cell.pagesize in avail_pagesize):"},{"line_number":3467,"context_line":"                    wants_hugepages \u003d True"},{"line_number":3468,"context_line":""},{"line_number":3469,"context_line":"        # We have instance NUMA so translate it to the config class"},{"line_number":3470,"context_line":"        guest_cpu_numa_config \u003d self._get_cpu_numa_config_from_instance("}],"source_content_type":"text/x-python","patch_set":2,"id":"bab921fb_0bc8fba6","line":3467,"updated":"2015-04-26 11:47:40.000000000","message":"nit, we can break at here.","commit_id":"c592fbcb2e00e973a91d82040217141422a4ec8b"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"5826fc3b1073ddf6a5fb64cf2a2813dec5bde531","unresolved":false,"context_lines":[{"line_number":3438,"context_line":"                # no real negative functional effect on the guest, so"},{"line_number":3439,"context_line":"                # is a reasonable approach to take"},{"line_number":3440,"context_line":"                if wants_hugepages:"},{"line_number":3441,"context_line":"                    guest_cell.memAccess \u003d \"shared\""},{"line_number":3442,"context_line":"                guest_cpu_numa.cells.append(guest_cell)"},{"line_number":3443,"context_line":"            return guest_cpu_numa"},{"line_number":3444,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3afb71cf_bcb7c083","line":3441,"updated":"2015-06-11 11:09:03.000000000","message":"We should verify the libvirt version here. We support hugepage from 1.2.8 unfortunately this attribute has been added with 1.2.9.","commit_id":"d306306abecc8af885d8ac0f40a4ad8a8a3fab89"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"89e3cb42b84bb4375469f538c2826caa2d59fc26","unresolved":false,"context_lines":[{"line_number":3451,"context_line":"        if host_topology is None or instance_topology is None:"},{"line_number":3452,"context_line":"            return False"},{"line_number":3453,"context_line":""},{"line_number":3454,"context_line":"        avail_pagesize \u003d [page.size_kb"},{"line_number":3455,"context_line":"                          for page in host_topology.cells[0].mempages]"},{"line_number":3456,"context_line":"        avail_pagesize.sort()"},{"line_number":3457,"context_line":"        # Remove smallest page size as that\u0027s not classed as a largepage"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_9e797985","line":3454,"updated":"2015-08-13 16:32:47.000000000","message":"This calculation is also done in _get_guest_memory_backing_config - we should create a helper function for this in a follow-on change so we don\u0027t have the copy/paste, which to someone unfamiliar with the structure of how this works, it looks a bit scary, i.e. making assumptions about cells[0].","commit_id":"25df2fae79c03a0335413e7a5de6b54c127e7926"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"89e3cb42b84bb4375469f538c2826caa2d59fc26","unresolved":false,"context_lines":[{"line_number":3505,"context_line":"            raise exception.NUMATopologyUnsupported()"},{"line_number":3506,"context_line":""},{"line_number":3507,"context_line":"        topology \u003d self._get_host_numa_topology()"},{"line_number":3508,"context_line":""},{"line_number":3509,"context_line":"        # We have instance NUMA so translate it to the config class"},{"line_number":3510,"context_line":"        guest_cpu_numa_config \u003d self._get_cpu_numa_config_from_instance("},{"line_number":3511,"context_line":"                instance_numa_topology,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a4dcd0f_1b6a5b82","line":3508,"updated":"2015-08-13 16:32:47.000000000","message":"unrelated whitespace change gah!!!","commit_id":"25df2fae79c03a0335413e7a5de6b54c127e7926"}]}
