)]}'
{"specs/stein/approved/virtual-pmem-libvirt-implementation.rst":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"310c7b7a36710e6aae381a5cad76eb64ed4816b3","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"PMEM namespace disposal"},{"line_number":51,"context_line":"-----------------------"},{"line_number":52,"context_line":"For security reasons, PMEM namespaces need to be erased (zeroed out) to be"},{"line_number":53,"context_line":"reused by other instances."},{"line_number":54,"context_line":"Since the standard I/O APIs (read/write) cannot be used with DAX"},{"line_number":55,"context_line":"(direct access) devices. The libvirt driver uses daxio_ utility"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd5e7cf_4e0d028f","line":52,"range":{"start_line":52,"start_character":56,"end_line":52,"end_character":68},"updated":"2019-01-07 06:38:01.000000000","message":"nit: will the daxio applicaiton actully zero out the memory or do a secure erase.\n\nzeroing out flash or magnetic storage has generally not been considered suffienct for secure earsure. espically in the case of magnetic storage so i proably woudl remove this unless it really will overwrite all data with 0 bytes.\n\nif it will do a real secure erase we should state that instead.","commit_id":"4fafdd86d9f8146e389ad07352c9883aecc88003"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"44ebb747c6e82b63ee4652f9c44f5f7796f30133","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"PMEM namespace disposal"},{"line_number":51,"context_line":"-----------------------"},{"line_number":52,"context_line":"For security reasons, PMEM namespaces need to be erased (zeroed out) to be"},{"line_number":53,"context_line":"reused by other instances."},{"line_number":54,"context_line":"Since the standard I/O APIs (read/write) cannot be used with DAX"},{"line_number":55,"context_line":"(direct access) devices. The libvirt driver uses daxio_ utility"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd5e7cf_8898b46a","line":52,"range":{"start_line":52,"start_character":56,"end_line":52,"end_character":68},"in_reply_to":"dfd5e7cf_4e0d028f","updated":"2019-01-07 16:43:12.000000000","message":"Oh, daxio does not have any specific function to do a secure erase in that purpose. However, it does have a zero out function (option). So I guess \"zero out\" should e used instead of erase.","commit_id":"4fafdd86d9f8146e389ad07352c9883aecc88003"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"310c7b7a36710e6aae381a5cad76eb64ed4816b3","unresolved":false,"context_lines":[{"line_number":52,"context_line":"For security reasons, PMEM namespaces need to be erased (zeroed out) to be"},{"line_number":53,"context_line":"reused by other instances."},{"line_number":54,"context_line":"Since the standard I/O APIs (read/write) cannot be used with DAX"},{"line_number":55,"context_line":"(direct access) devices. The libvirt driver uses daxio_ utility"},{"line_number":56,"context_line":"for this purpose."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Data copying between PMEM namespaces"},{"line_number":59,"context_line":"------------------------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd5e7cf_0e6cda34","line":56,"range":{"start_line":55,"start_character":26,"end_line":56,"end_character":17},"updated":"2019-01-07 06:38:01.000000000","message":"so to be clear the libvirt driver means that nova will invoke the daxio utility to preferment the secure erase rather then a pmem driver in the libvirt daemon invoking daxio.","commit_id":"4fafdd86d9f8146e389ad07352c9883aecc88003"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"847979e0445ad23db35e0b0b8b7d81fa005e8364","unresolved":false,"context_lines":[{"line_number":52,"context_line":"For security reasons, PMEM namespaces need to be erased (zeroed out) to be"},{"line_number":53,"context_line":"reused by other instances."},{"line_number":54,"context_line":"Since the standard I/O APIs (read/write) cannot be used with DAX"},{"line_number":55,"context_line":"(direct access) devices. The libvirt driver uses daxio_ utility"},{"line_number":56,"context_line":"for this purpose."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Data copying between PMEM namespaces"},{"line_number":59,"context_line":"------------------------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd5e7cf_ca39be41","line":56,"range":{"start_line":55,"start_character":26,"end_line":56,"end_character":17},"in_reply_to":"dfd5e7cf_08acc48a","updated":"2019-01-08 15:08:42.000000000","message":"Done","commit_id":"4fafdd86d9f8146e389ad07352c9883aecc88003"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"44ebb747c6e82b63ee4652f9c44f5f7796f30133","unresolved":false,"context_lines":[{"line_number":52,"context_line":"For security reasons, PMEM namespaces need to be erased (zeroed out) to be"},{"line_number":53,"context_line":"reused by other instances."},{"line_number":54,"context_line":"Since the standard I/O APIs (read/write) cannot be used with DAX"},{"line_number":55,"context_line":"(direct access) devices. The libvirt driver uses daxio_ utility"},{"line_number":56,"context_line":"for this purpose."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Data copying between PMEM namespaces"},{"line_number":59,"context_line":"------------------------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd5e7cf_08acc48a","line":56,"range":{"start_line":55,"start_character":26,"end_line":56,"end_character":17},"in_reply_to":"dfd5e7cf_0e6cda34","updated":"2019-01-07 16:43:12.000000000","message":"Sure, will rephrase accordingly.","commit_id":"4fafdd86d9f8146e389ad07352c9883aecc88003"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"310c7b7a36710e6aae381a5cad76eb64ed4816b3","unresolved":false,"context_lines":[{"line_number":61,"context_line":"possible that the instance after resizing will use another PMEM namespace."},{"line_number":62,"context_line":"In order to persist virtual PMEM data, data in the original PMEM"},{"line_number":63,"context_line":"namespace needs to be copied to the new PMEM namespace."},{"line_number":64,"context_line":"The daxio_ utility is used to read out the data from the source PMEM"},{"line_number":65,"context_line":"namespace and write in to the target PMEM namespace."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"If the source and target PMEM namespaces are not on the same host,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd5e7cf_8e61aa3c","line":64,"range":{"start_line":64,"start_character":22,"end_line":64,"end_character":26},"updated":"2019-01-07 06:38:01.000000000","message":"again as above it is use by nova or libvirt","commit_id":"4fafdd86d9f8146e389ad07352c9883aecc88003"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"847979e0445ad23db35e0b0b8b7d81fa005e8364","unresolved":false,"context_lines":[{"line_number":61,"context_line":"possible that the instance after resizing will use another PMEM namespace."},{"line_number":62,"context_line":"In order to persist virtual PMEM data, data in the original PMEM"},{"line_number":63,"context_line":"namespace needs to be copied to the new PMEM namespace."},{"line_number":64,"context_line":"The daxio_ utility is used to read out the data from the source PMEM"},{"line_number":65,"context_line":"namespace and write in to the target PMEM namespace."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"If the source and target PMEM namespaces are not on the same host,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd5e7cf_2a488aca","line":64,"range":{"start_line":64,"start_character":22,"end_line":64,"end_character":26},"in_reply_to":"dfd5e7cf_8e61aa3c","updated":"2019-01-08 15:08:42.000000000","message":"Done","commit_id":"4fafdd86d9f8146e389ad07352c9883aecc88003"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"44ebb747c6e82b63ee4652f9c44f5f7796f30133","unresolved":false,"context_lines":[{"line_number":61,"context_line":"possible that the instance after resizing will use another PMEM namespace."},{"line_number":62,"context_line":"In order to persist virtual PMEM data, data in the original PMEM"},{"line_number":63,"context_line":"namespace needs to be copied to the new PMEM namespace."},{"line_number":64,"context_line":"The daxio_ utility is used to read out the data from the source PMEM"},{"line_number":65,"context_line":"namespace and write in to the target PMEM namespace."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"If the source and target PMEM namespaces are not on the same host,"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd5e7cf_28a9887a","line":64,"range":{"start_line":64,"start_character":22,"end_line":64,"end_character":26},"in_reply_to":"dfd5e7cf_8e61aa3c","updated":"2019-01-07 16:43:12.000000000","message":"OK.","commit_id":"4fafdd86d9f8146e389ad07352c9883aecc88003"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"310c7b7a36710e6aae381a5cad76eb64ed4816b3","unresolved":false,"context_lines":[{"line_number":64,"context_line":"The daxio_ utility is used to read out the data from the source PMEM"},{"line_number":65,"context_line":"namespace and write in to the target PMEM namespace."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"If the source and target PMEM namespaces are not on the same host,"},{"line_number":68,"context_line":"ssh tunnel is used to channel the data transfer."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"System prerequisite"},{"line_number":71,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd5e7cf_ce91f2f3","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":48},"updated":"2019-01-07 06:38:01.000000000","message":"which users credentials will be used for this tunnel?\n\nif daxio was being invoked by libvirt i would have assumed it is using the same credentials/transport mechanisum as libvirt for live migration but the fact you are stating it uses ssh tunnels leads me to assuem daxio is being invoked by the nova compute agent directly.\n\nassuming that is the case we will likely want to have a config option to explicitly specify the ssh key to use.\nwe will also need to work with installer project to support\ndeploying and configuring these new ssh keys and update the administror docs/ install guide to document the exact requirements.","commit_id":"4fafdd86d9f8146e389ad07352c9883aecc88003"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"44ebb747c6e82b63ee4652f9c44f5f7796f30133","unresolved":false,"context_lines":[{"line_number":64,"context_line":"The daxio_ utility is used to read out the data from the source PMEM"},{"line_number":65,"context_line":"namespace and write in to the target PMEM namespace."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"If the source and target PMEM namespaces are not on the same host,"},{"line_number":68,"context_line":"ssh tunnel is used to channel the data transfer."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"System prerequisite"},{"line_number":71,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd5e7cf_885bd485","line":68,"range":{"start_line":67,"start_character":0,"end_line":68,"end_character":48},"in_reply_to":"dfd5e7cf_ce91f2f3","updated":"2019-01-07 16:43:12.000000000","message":"Hmm, no, it does not invoked by libvirt as live migration. The copying is invoked by nova compute (libvirt driver though). The current implementation uses the same key which is used to move the disks during resize. \nI don\u0027t think it is necessary to introduce another config option for a new key for the same resizing purpose.","commit_id":"4fafdd86d9f8146e389ad07352c9883aecc88003"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"310c7b7a36710e6aae381a5cad76eb64ed4816b3","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Alternatives"},{"line_number":82,"context_line":"------------"},{"line_number":83,"context_line":"Currently there are no python bindings for ndctl_ and daxio_."},{"line_number":84,"context_line":"Whenever the python bindings emerge, they should be adopted."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Data model impact"},{"line_number":87,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd5e7cf_8ebd2a6a","line":84,"range":{"start_line":83,"start_character":1,"end_line":84,"end_character":60},"updated":"2019-01-07 06:38:01.000000000","message":"this is not really an alternitive.\n\nthis spec simpley stats that the daxio utility\nwill be used to copy the memory it did not state that\nwe must use process utils to spawn a shell and invoke the commandline that is just an impementation detail and side effect of the lack of python bindings. \n\nso using the python bindings for those utils if they emerge is not an alternitive as we are still using the same tool to copy/erase the data.\n\ni would just set it to none and leave a TODO in the code to replace with python binding if you know of plans to create them. if there are no plans to that effect there is no point in adding a TODO or listing it as an alternitive here.","commit_id":"4fafdd86d9f8146e389ad07352c9883aecc88003"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"847979e0445ad23db35e0b0b8b7d81fa005e8364","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Alternatives"},{"line_number":82,"context_line":"------------"},{"line_number":83,"context_line":"Currently there are no python bindings for ndctl_ and daxio_."},{"line_number":84,"context_line":"Whenever the python bindings emerge, they should be adopted."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Data model impact"},{"line_number":87,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd5e7cf_aa5b1a85","line":84,"range":{"start_line":83,"start_character":1,"end_line":84,"end_character":60},"in_reply_to":"dfd5e7cf_8ebd2a6a","updated":"2019-01-08 15:08:42.000000000","message":"Done","commit_id":"4fafdd86d9f8146e389ad07352c9883aecc88003"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"44ebb747c6e82b63ee4652f9c44f5f7796f30133","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Alternatives"},{"line_number":82,"context_line":"------------"},{"line_number":83,"context_line":"Currently there are no python bindings for ndctl_ and daxio_."},{"line_number":84,"context_line":"Whenever the python bindings emerge, they should be adopted."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Data model impact"},{"line_number":87,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd5e7cf_6852306a","line":84,"range":{"start_line":83,"start_character":1,"end_line":84,"end_character":60},"in_reply_to":"dfd5e7cf_8ebd2a6a","updated":"2019-01-07 16:43:12.000000000","message":"OK.","commit_id":"4fafdd86d9f8146e389ad07352c9883aecc88003"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"310c7b7a36710e6aae381a5cad76eb64ed4816b3","unresolved":false,"context_lines":[{"line_number":111,"context_line":"Performance Impact"},{"line_number":112,"context_line":"------------------"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"PMEM namespaces tend to be large. Zeroing out a PMEM namespace requires"},{"line_number":115,"context_line":"a considerable amount of time. This may introduce a negative performance"},{"line_number":116,"context_line":"impact when deleting a guest with a large virtual PMEM."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd5e7cf_ce7fb2a9","line":114,"range":{"start_line":114,"start_character":34,"end_line":114,"end_character":45},"updated":"2019-01-07 06:38:01.000000000","message":"Erasing","commit_id":"4fafdd86d9f8146e389ad07352c9883aecc88003"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"44ebb747c6e82b63ee4652f9c44f5f7796f30133","unresolved":false,"context_lines":[{"line_number":111,"context_line":"Performance Impact"},{"line_number":112,"context_line":"------------------"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"PMEM namespaces tend to be large. Zeroing out a PMEM namespace requires"},{"line_number":115,"context_line":"a considerable amount of time. This may introduce a negative performance"},{"line_number":116,"context_line":"impact when deleting a guest with a large virtual PMEM."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfd5e7cf_48dacce9","line":114,"range":{"start_line":114,"start_character":34,"end_line":114,"end_character":45},"in_reply_to":"dfd5e7cf_ce7fb2a9","updated":"2019-01-07 16:43:12.000000000","message":"It is actually zeroing out. So changing every \"erase\" to \"zero out\"??","commit_id":"4fafdd86d9f8146e389ad07352c9883aecc88003"}],"specs/train/approved/virtual-pmem-libvirt-implementation.rst":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"888d86fb949695f24731817182481381b339271b","unresolved":false,"context_lines":[{"line_number":35,"context_line":"to hold the namespace configurations. This config option is of list type"},{"line_number":36,"context_line":"with strings as list elements. Each string is of format::"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    \"region_name:pmem_size[|pmem_size]\""},{"line_number":39,"context_line":"    `pmem_size` is an integer in the unit of MegaBytes"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"An example would be \"region0:131072|262144|131072\"."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fce034c_26694720","line":38,"range":{"start_line":38,"start_character":5,"end_line":38,"end_character":16},"updated":"2019-04-18 05:38:22.000000000","message":"How do we get the \u0027region_name\u0027 on the host? Can this provide an interface? Or is an automatically obtained list available for selection?","commit_id":"c5b77b4a3825100d4ff1b62b31161fc7d0893a42"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"8c1388d34f790bdb525e2bfae7a548d33a86a5af","unresolved":false,"context_lines":[{"line_number":35,"context_line":"to hold the namespace configurations. This config option is of list type"},{"line_number":36,"context_line":"with strings as list elements. Each string is of format::"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    \"region_name:pmem_size[|pmem_size]\""},{"line_number":39,"context_line":"    `pmem_size` is an integer in the unit of MegaBytes"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"An example would be \"region0:131072|262144|131072\"."}],"source_content_type":"text/x-rst","patch_set":5,"id":"ffb9cba7_00c79d14","line":38,"range":{"start_line":38,"start_character":5,"end_line":38,"end_character":16},"in_reply_to":"3fce034c_26694720","updated":"2019-04-24 04:11:44.000000000","message":"You can get that by some tools like ndctl or ipmctl.\nhttps://github.com/pmem/ndctl\nhttps://github.com/intel/ipmctl","commit_id":"c5b77b4a3825100d4ff1b62b31161fc7d0893a42"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a6d601ccf3c27a743211e470011f2e7178d1752b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"to hold the namespace configurations. This config option is of string type"},{"line_number":37,"context_line":"in below format::"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    \"pmem_namespace:capacity[|pmem_namespace:capacity]\""},{"line_number":40,"context_line":"    `pmem_namespace` is the name of a certain namespace."},{"line_number":41,"context_line":"    `capability` typically is the size of the namespace in whatever"},{"line_number":42,"context_line":"    desired units. It also could be a decription string of the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_f0cb491b","line":39,"updated":"2019-05-20 18:37:44.000000000","message":"I think you meant to unindent L40-43, and probably not use the double quotes here.","commit_id":"29f3bc9e18301c967af90c7a02fb03c2ad528c8b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a6d601ccf3c27a743211e470011f2e7178d1752b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"in below format::"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    \"pmem_namespace:capacity[|pmem_namespace:capacity]\""},{"line_number":40,"context_line":"    `pmem_namespace` is the name of a certain namespace."},{"line_number":41,"context_line":"    `capability` typically is the size of the namespace in whatever"},{"line_number":42,"context_line":"    desired units. It also could be a decription string of the"},{"line_number":43,"context_line":"    namespace such as \"SMALL\", \"MEDIUM\" or \"LARGE\"."}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_b0d5d1bb","line":40,"range":{"start_line":40,"start_character":5,"end_line":40,"end_character":19},"updated":"2019-05-20 18:37:44.000000000","message":"``literal`` (here and below)","commit_id":"29f3bc9e18301c967af90c7a02fb03c2ad528c8b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a6d601ccf3c27a743211e470011f2e7178d1752b","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    \"pmem_namespace:capacity[|pmem_namespace:capacity]\""},{"line_number":40,"context_line":"    `pmem_namespace` is the name of a certain namespace."},{"line_number":41,"context_line":"    `capability` typically is the size of the namespace in whatever"},{"line_number":42,"context_line":"    desired units. It also could be a decription string of the"},{"line_number":43,"context_line":"    namespace such as \"SMALL\", \"MEDIUM\" or \"LARGE\"."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_b0607134","line":41,"range":{"start_line":41,"start_character":5,"end_line":41,"end_character":15},"updated":"2019-05-20 18:37:44.000000000","message":"capacity","commit_id":"29f3bc9e18301c967af90c7a02fb03c2ad528c8b"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c081c5cce74cc3a135b7421e0f216996770b54b0","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    `capability` typically is the size of the namespace in whatever"},{"line_number":42,"context_line":"    desired units. It also could be a decription string of the"},{"line_number":43,"context_line":"    namespace such as \"SMALL\", \"MEDIUM\" or \"LARGE\"."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"An example would be \"namespace0:131072MB|namespace1:128GB|namespace2:SMALL\"."},{"line_number":46,"context_line":"The interpretation is that the size of \"namespace0\" is 131072MB,"},{"line_number":47,"context_line":"the size of \"namespace1\" is 128GB, and \"namespace2\" is \"SMALL\"."}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_dde656e9","line":44,"updated":"2019-05-21 06:54:39.000000000","message":"we probably have a rule here, since there is limitation of resource class name. definitely, we can\u0027t have a floating size.","commit_id":"29f3bc9e18301c967af90c7a02fb03c2ad528c8b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8fe9d9bfd94b57a28a4622fa9dabf0cf923c9ea2","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    `capability` typically is the size of the namespace in whatever"},{"line_number":42,"context_line":"    desired units. It also could be a decription string of the"},{"line_number":43,"context_line":"    namespace such as \"SMALL\", \"MEDIUM\" or \"LARGE\"."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"An example would be \"namespace0:131072MB|namespace1:128GB|namespace2:SMALL\"."},{"line_number":46,"context_line":"The interpretation is that the size of \"namespace0\" is 131072MB,"},{"line_number":47,"context_line":"the size of \"namespace1\" is 128GB, and \"namespace2\" is \"SMALL\"."}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_d7f38372","line":44,"in_reply_to":"bfb3d3c7_dde656e9","updated":"2019-05-21 19:50:19.000000000","message":"Wash it through os_resource_classes.normalize_name().","commit_id":"29f3bc9e18301c967af90c7a02fb03c2ad528c8b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a6d601ccf3c27a743211e470011f2e7178d1752b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"An example would be \"namespace0:131072MB|namespace1:128GB|namespace2:SMALL\"."},{"line_number":46,"context_line":"The interpretation is that the size of \"namespace0\" is 131072MB,"},{"line_number":47,"context_line":"the size of \"namespace1\" is 128GB, and \"namespace2\" is \"SMALL\"."},{"line_number":48,"context_line":"The `capacity` strings are used to form the Resoruce Class name in"},{"line_number":49,"context_line":"placement inventory. Please refer to the virtual-persistent-memory_ spec"},{"line_number":50,"context_line":"for details. It is the responsibility of cloud admins who create the"},{"line_number":51,"context_line":"persistent memory namespaces to properly define the `capability` for"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_30a8011e","line":48,"range":{"start_line":48,"start_character":44,"end_line":48,"end_character":52},"updated":"2019-05-20 18:37:44.000000000","message":"Resource","commit_id":"29f3bc9e18301c967af90c7a02fb03c2ad528c8b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a6d601ccf3c27a743211e470011f2e7178d1752b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"The `capacity` strings are used to form the Resoruce Class name in"},{"line_number":49,"context_line":"placement inventory. Please refer to the virtual-persistent-memory_ spec"},{"line_number":50,"context_line":"for details. It is the responsibility of cloud admins who create the"},{"line_number":51,"context_line":"persistent memory namespaces to properly define the `capability` for"},{"line_number":52,"context_line":"each namespace."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Persistent memory management tool -- ndctl_ should be used to create"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_50da55e9","line":51,"range":{"start_line":51,"start_character":53,"end_line":51,"end_character":63},"updated":"2019-05-20 18:37:44.000000000","message":"``capacity``","commit_id":"29f3bc9e18301c967af90c7a02fb03c2ad528c8b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a6d601ccf3c27a743211e470011f2e7178d1752b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"placement inventory. Please refer to the virtual-persistent-memory_ spec"},{"line_number":50,"context_line":"for details. It is the responsibility of cloud admins who create the"},{"line_number":51,"context_line":"persistent memory namespaces to properly define the `capability` for"},{"line_number":52,"context_line":"each namespace."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Persistent memory management tool -- ndctl_ should be used to create"},{"line_number":55,"context_line":"the namespaces."}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_f656e206","line":52,"updated":"2019-05-20 18:37:44.000000000","message":"I think there\u0027s been a disconnect here.\n\nMy understanding was that the\n\n $name:$capacity[|$name:$capacity...]\n\nformat was specifically so that $name could be the arbitrary designation like \u0027128GB\u0027 or \u0027SMALL\u0027, and $capacity would *always* be the exact byte size of the namespace so the driver would be able to match up specific names to specific namespaces.\n\nIf we\u0027re relying on being able to use namespace labels (-n/--name per [1]) then we don\u0027t need a tuple; we can just list the namespace names in the conf option, which simply amounts to a \"whitelist\" at that point.\n\n[1] https://docs.pmem.io/ndctl-users-guide/managing-namespaces#creating-namespaces","commit_id":"29f3bc9e18301c967af90c7a02fb03c2ad528c8b"},{"author":{"_account_id":11347,"name":"Rui Zang","email":"rui.zang@yandex.com","username":"rzang"},"change_message_id":"297cdb79d8b87d90a1df3d8f6c90fad62b759bec","unresolved":false,"context_lines":[{"line_number":49,"context_line":"placement inventory. Please refer to the virtual-persistent-memory_ spec"},{"line_number":50,"context_line":"for details. It is the responsibility of cloud admins who create the"},{"line_number":51,"context_line":"persistent memory namespaces to properly define the `capability` for"},{"line_number":52,"context_line":"each namespace."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Persistent memory management tool -- ndctl_ should be used to create"},{"line_number":55,"context_line":"the namespaces."}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_cce758e4","line":52,"in_reply_to":"bfb3d3c7_3a13e65e","updated":"2019-05-23 08:45:22.000000000","message":"I like the idea of RC_NAME:namespace_name[,namespace_name]\nWill update the spec accordingly.","commit_id":"29f3bc9e18301c967af90c7a02fb03c2ad528c8b"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"83ef8238831a5c99077be25b0140d8f48b37027a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"placement inventory. Please refer to the virtual-persistent-memory_ spec"},{"line_number":50,"context_line":"for details. It is the responsibility of cloud admins who create the"},{"line_number":51,"context_line":"persistent memory namespaces to properly define the `capability` for"},{"line_number":52,"context_line":"each namespace."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Persistent memory management tool -- ndctl_ should be used to create"},{"line_number":55,"context_line":"the namespaces."}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_e0085129","line":52,"in_reply_to":"bfb3d3c7_dd34164d","updated":"2019-05-21 07:39:48.000000000","message":"sorry, I missed understand the words. The problem is the size can\u0027t be match exactly. Rui can explain that better","commit_id":"29f3bc9e18301c967af90c7a02fb03c2ad528c8b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"8fe9d9bfd94b57a28a4622fa9dabf0cf923c9ea2","unresolved":false,"context_lines":[{"line_number":49,"context_line":"placement inventory. Please refer to the virtual-persistent-memory_ spec"},{"line_number":50,"context_line":"for details. It is the responsibility of cloud admins who create the"},{"line_number":51,"context_line":"persistent memory namespaces to properly define the `capability` for"},{"line_number":52,"context_line":"each namespace."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Persistent memory management tool -- ndctl_ should be used to create"},{"line_number":55,"context_line":"the namespaces."}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_3a13e65e","line":52,"in_reply_to":"bfb3d3c7_e0085129","updated":"2019-05-21 19:50:19.000000000","message":"Of course you can match the sizes exactly, if they\u0027re in bytes.\n\nThe concern with using the sizes in human-friendly form was that a) we didn\u0027t want to encode information into resource class names that we would have to parse mechanically; and b) we would have multiple ways of expressing namespaces of the same size (_1GB \u003d\u003d _1024MB etc.).\n\nSo the suggested remedy was for the conf option to be $rc_name:$byte_size. So e.g. \n\n CUSTOM_PMEM_1MB:1048576\n\nThis way the human gets to read the intuitive \"1MB\" part, but the code gets to match that up to real namespaces of exact byte size 1048576.\n\n(Note that we should error if more than one label is associated with the same byte size. E.g. if we also had\n\n CUSTOM_PMEM_1024K:1048576\n\n...and multiple 1MB namespaces, we wouldn\u0027t know which ones get associated with which RC.)\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nHowever, if we can rely on the namespaces having *names* (ndctl -n/--name), then we could do this another way:\n\n CUSTOM_PMEM_1MB:ns1,ns2,ns3\n\nI sort of get the impression that L39-43 was heading in this direction, but I don\u0027t think it quite got there.","commit_id":"29f3bc9e18301c967af90c7a02fb03c2ad528c8b"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"c081c5cce74cc3a135b7421e0f216996770b54b0","unresolved":false,"context_lines":[{"line_number":49,"context_line":"placement inventory. Please refer to the virtual-persistent-memory_ spec"},{"line_number":50,"context_line":"for details. It is the responsibility of cloud admins who create the"},{"line_number":51,"context_line":"persistent memory namespaces to properly define the `capability` for"},{"line_number":52,"context_line":"each namespace."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Persistent memory management tool -- ndctl_ should be used to create"},{"line_number":55,"context_line":"the namespaces."}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_dd34164d","line":52,"in_reply_to":"bfb3d3c7_f656e206","updated":"2019-05-21 06:54:39.000000000","message":"I don\u0027t like we have a specific namespace labels definition for nova, that is a burden for the deployment tool or script to remember that rule.","commit_id":"29f3bc9e18301c967af90c7a02fb03c2ad528c8b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a6d601ccf3c27a743211e470011f2e7178d1752b","unresolved":false,"context_lines":[{"line_number":174,"context_line":"The cloud administrator docs need to describe how to create"},{"line_number":175,"context_line":"and create persistent memory namespaces."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"The end user needs to be make aware of this feature."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"References"},{"line_number":180,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_165cd623","line":177,"range":{"start_line":177,"start_character":25,"end_line":177,"end_character":29},"updated":"2019-05-20 18:37:44.000000000","message":"made","commit_id":"29f3bc9e18301c967af90c7a02fb03c2ad528c8b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a6d601ccf3c27a743211e470011f2e7178d1752b","unresolved":false,"context_lines":[{"line_number":187,"context_line":"History"},{"line_number":188,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Optional section intended to be used each time the spec is updated to describe"},{"line_number":191,"context_line":"new design, API or any database schema updated. Useful to let reader understand"},{"line_number":192,"context_line":"what\u0027s happened along the time."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":".. list-table:: Revisions"},{"line_number":195,"context_line":"   :header-rows: 1"}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb3d3c7_b6406a37","line":192,"range":{"start_line":190,"start_character":0,"end_line":192,"end_character":31},"updated":"2019-05-20 18:37:44.000000000","message":"delete boilerplate","commit_id":"29f3bc9e18301c967af90c7a02fb03c2ad528c8b"}]}
