)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"a2aa2c61959a57b21500fd74e62803ccd7360622","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2017-11-22 10:08:27 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Libvirt: improve convert image performace in qemu-img"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add -t none option to qemu-img when converting image from qcow2 to"},{"line_number":10,"context_line":"other format image (raw/volume) with a very large size."},{"line_number":11,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ff82abbf_adaa1fcf","line":8,"updated":"2017-11-23 14:46:40.000000000","message":"Reads slightly nicer as: \n\n  \"Libvirt: improve \u0027qemu-img convert\u0027 performance","commit_id":"6ca1e201e9a6ca18a2dcc1f0c926602ceed52ddb"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"0ecdd72428a480dcaff68d663f0637461a265313","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Libvirt: improve convert image performace in qemu-img"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add -t none option to qemu-img when converting image from qcow2 to"},{"line_number":10,"context_line":"other format image (raw/volume) with a very large size."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-Bug: #1484992"},{"line_number":13,"context_line":"Change-Id: I9c9689aa1fb75702c5ad339983d18f794f925d97"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ff82abbf_c0e0bacf","line":10,"range":{"start_line":10,"start_character":36,"end_line":10,"end_character":54},"updated":"2017-11-22 03:44:14.000000000","message":"Suggest re-word this commit message. As it\u0027s now always using the option of \"-t none\" regardless if it\u0027s a large size or not. Although I understand the purpose is to resolve the performance issue for large sized images:-)","commit_id":"6ca1e201e9a6ca18a2dcc1f0c926602ceed52ddb"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"90f3980fceac5548c3664ba4de2b5dd384df3033","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Libvirt: improve convert image performace in qemu-img"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add -t none option to qemu-img when converting image from qcow2 to"},{"line_number":10,"context_line":"other format image (raw/volume) with a very large size."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-Bug: #1484992"},{"line_number":13,"context_line":"Change-Id: I9c9689aa1fb75702c5ad339983d18f794f925d97"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ff82abbf_80edd28c","line":10,"range":{"start_line":10,"start_character":36,"end_line":10,"end_character":54},"in_reply_to":"ff82abbf_c0e0bacf","updated":"2017-11-22 03:53:44.000000000","message":"Thx :), I will do a reverson and refine this commit message to avoid misleading.","commit_id":"6ca1e201e9a6ca18a2dcc1f0c926602ceed52ddb"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b2cf18ee807cc78114d38d199ac332f64a89e46e","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"/* Default to cache\u003dwriteback as data integrity is not important for"},{"line_number":23,"context_line":" * qemu-img */"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"So no need to change this option."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"2. cache \u003d \"unsafe\""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ff82abbf_cc167356","line":24,"updated":"2017-11-24 10:37:28.000000000","message":"I see you quoted that from QEMU source.","commit_id":"bd1c171a24cc40f78856fba86c0ec91bc79c954b"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b2cf18ee807cc78114d38d199ac332f64a89e46e","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"So no need to change this option."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"2. cache \u003d \"unsafe\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"This will use host\u0027s page cache, so the performance will be unpredictable ."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ff82abbf_acc9afac","line":27,"updated":"2017-11-24 10:37:28.000000000","message":"You might want to spell out that the above is cache value for target image during \u0027convert\u0027.","commit_id":"bd1c171a24cc40f78856fba86c0ec91bc79c954b"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b2cf18ee807cc78114d38d199ac332f64a89e46e","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"This will use host\u0027s page cache, so the performance will be unpredictable ."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"This patch adds `-t none` option to set cache to \"none \" to enable sparse"},{"line_number":32,"context_line":"file handling \u0026 TRIM working, saving time on writing GB\u0027s worth of zeros at"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Closes-Bug: #1484992"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ff82abbf_0c1bfbcf","line":31,"updated":"2017-11-24 10:37:28.000000000","message":"Needless extra space after before closing double-quote.","commit_id":"bd1c171a24cc40f78856fba86c0ec91bc79c954b"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b2cf18ee807cc78114d38d199ac332f64a89e46e","unresolved":false,"context_lines":[{"line_number":29,"context_line":"This will use host\u0027s page cache, so the performance will be unpredictable ."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"This patch adds `-t none` option to set cache to \"none \" to enable sparse"},{"line_number":32,"context_line":"file handling \u0026 TRIM working, saving time on writing GB\u0027s worth of zeros at"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Closes-Bug: #1484992"},{"line_number":35,"context_line":"Change-Id: I9c9689aa1fb75702c5ad339983d18f794f925d97"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ff82abbf_cc02f36f","line":32,"updated":"2017-11-24 10:37:28.000000000","message":"s/\"worth of zeros at\"/\"worth of zeroes.\"/","commit_id":"bd1c171a24cc40f78856fba86c0ec91bc79c954b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bdeec711baec1edada9de3d59a2996400daa098f","unresolved":false,"context_lines":[{"line_number":18,"context_line":"- src_cache \u003d \"writeback\""},{"line_number":19,"context_line":"- cache \u003d \"unsafe\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"As data integrity is not important, the \u0027src_cache\u0027 default of"},{"line_number":22,"context_line":"\u0027writeback\u0027 is appropriate. However, the default for \u0027cache\u0027, \u0027unsafe\u0027,"},{"line_number":23,"context_line":"will use the host\u0027s page cache resulting in unpredicatable performance"},{"line_number":24,"context_line":"and another option should be used."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"df7087c5_7b6bbb1e","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":34},"updated":"2018-03-19 16:15:37.000000000","message":"I would have said data integrity is important, hence writeback is a good default? Am I missing something?","commit_id":"1d49534b67f729630f39f6e58042018c6f6066cf"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"de34584f7d8849967589f9f4fd3df1e3cc7a1368","unresolved":false,"context_lines":[{"line_number":23,"context_line":"will use the host\u0027s page cache resulting in unpredicatable performance"},{"line_number":24,"context_line":"and another option should be used."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Add the \u0027-t none\u0027 option to set \u0027cache\u0027 to \u0027none\u0027. This enables sparse"},{"line_number":27,"context_line":"file handling \u0026 TRIM working, saving us time when writing GBs worth of"},{"line_number":28,"context_line":"zeros."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Change-Id: I9c9689aa1fb75702c5ad339983d18f794f925d97"},{"line_number":31,"context_line":"Closes-Bug: #1484992"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5f93b717_5b72164b","line":28,"range":{"start_line":26,"start_character":51,"end_line":28,"end_character":6},"updated":"2018-01-30 13:56:08.000000000","message":"This is not correct. TRIM is not relevant to qemu-img as there is no running guest OS, and output cache mode doesn\u0027t affect sparse handling.","commit_id":"1d49534b67f729630f39f6e58042018c6f6066cf"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"bdeec711baec1edada9de3d59a2996400daa098f","unresolved":false,"context_lines":[{"line_number":23,"context_line":"will use the host\u0027s page cache resulting in unpredicatable performance"},{"line_number":24,"context_line":"and another option should be used."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Add the \u0027-t none\u0027 option to set \u0027cache\u0027 to \u0027none\u0027. This enables sparse"},{"line_number":27,"context_line":"file handling \u0026 TRIM working, saving us time when writing GBs worth of"},{"line_number":28,"context_line":"zeros."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Change-Id: I9c9689aa1fb75702c5ad339983d18f794f925d97"},{"line_number":31,"context_line":"Closes-Bug: #1484992"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"df7087c5_e9cf01ae","line":28,"range":{"start_line":26,"start_character":51,"end_line":28,"end_character":6},"in_reply_to":"5f93b717_5b72164b","updated":"2018-03-19 16:15:37.000000000","message":"It seems any zeros written to a virtual disk are considered a possible TRIM target, so even though the guest doesn\u0027t issues the trim, I guess this could work. This is based on a very optimistic reading of:\nhttps://wiki.qemu.org/Features/QED/Trim\nand https://wiki.qemu.org/ChangeLog/2.4\n\nI really want to see us link to some reference here. But based on the bug report, this does a lot of good, so we should probably just take this as is.\n\nI can see this is a thing that is coming soon:\nhttps://github.com/qemu/qemu/commit/2d9187bc65727d9dd63e2c410b5500add3db0b0d\n\nThis does suggest that convert can do the TRIM like thing when you hit large runs of zeros, well its really just a bitmap edit rather than using an SSD:\nhttps://github.com/qemu/qemu/commit/16aaf975eeed92cce602a844f795a027182a6861\n\nSeems like the comments here explain a few things too:\nhttps://github.com/qemu/qemu/commit/690c7301600162421b928c7f26fd488fd8fa464e","commit_id":"1d49534b67f729630f39f6e58042018c6f6066cf"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"55eb238ca8fe6ed7970c34fc067c5f0d59f629e0","unresolved":false,"context_lines":[{"line_number":7543,"context_line":"        \"\"\"Converts a qcow2 disk to raw.\"\"\""},{"line_number":7544,"context_line":"        path_raw \u003d path + \u0027_raw\u0027"},{"line_number":7545,"context_line":"        utils.execute(\u0027qemu-img\u0027, \u0027convert\u0027, \u0027-t\u0027, \u0027none\u0027, \u0027-f\u0027, \u0027qcow2\u0027,"},{"line_number":7546,"context_line":"                      \u0027-O\u0027, \u0027raw\u0027, path, path_raw)"},{"line_number":7547,"context_line":"        utils.execute(\u0027mv\u0027, path_raw, path)"},{"line_number":7548,"context_line":""},{"line_number":7549,"context_line":"    def finish_migration(self, context, migration, instance, disk_info,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_c47e606a","line":7546,"updated":"2017-11-23 12:55:46.000000000","message":"Sounds good for OpenStack use case, and the bug reports / data I\u0027ve seen so far.\n\nRelated context:\n\nUpstream QEMU chose the default cache value as \u0027unsafe\u0027 for target disk image (during \u0027convert\u0027). However, Nova, based on additional data it has, should feel free to change the default cache value for the source as it sees fit.\n\nAlso you might have noticed, that Dan notes in his comment[*] in the bug that setting \"-t none\" (cache mode for the target image) could result in unpredictable performance depending on the amount of available free memory.\n\nFurther, note that that the lower-case \"-t\" option of \u0027qemu-img\u0027 is for configuring cache for the target disk image.  And the upper-case \"-T\" will let us set cache for source disk image (for which we\u0027re using the default provided by QEMU, which is \"writeback\").  I think this is fine as-is.\n\n\n[*] https://bugs.launchpad.net/nova/+bug/1484992/comments/5","commit_id":"6ca1e201e9a6ca18a2dcc1f0c926602ceed52ddb"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"b2cf18ee807cc78114d38d199ac332f64a89e46e","unresolved":false,"context_lines":[{"line_number":7543,"context_line":"        \"\"\"Converts a qcow2 disk to raw.\"\"\""},{"line_number":7544,"context_line":"        path_raw \u003d path + \u0027_raw\u0027"},{"line_number":7545,"context_line":"        utils.execute(\u0027qemu-img\u0027, \u0027convert\u0027, \u0027-t\u0027, \u0027none\u0027, \u0027-f\u0027, \u0027qcow2\u0027,"},{"line_number":7546,"context_line":"                      \u0027-O\u0027, \u0027raw\u0027, path, path_raw)"},{"line_number":7547,"context_line":"        utils.execute(\u0027mv\u0027, path_raw, path)"},{"line_number":7548,"context_line":""},{"line_number":7549,"context_line":"    def finish_migration(self, context, migration, instance, disk_info,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_cc0bd321","line":7546,"in_reply_to":"ff82abbf_50c67f9c","updated":"2017-11-24 10:37:28.000000000","message":"\u003e \u003e Also you might have noticed, that Dan notes in his comment[*] in\n \u003e \u003e the bug that setting \"-t none\" (cache mode for the target image)\n \u003e \u003e could result in unpredictable performance depending on the amount\n \u003e \u003e of available free memory.\n \u003e \n \u003e you possible saying `removing -t none` instead of `set -t none`?\n\nWhoops, you\u0027re right.\n\n[...]","commit_id":"6ca1e201e9a6ca18a2dcc1f0c926602ceed52ddb"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"63ff03e85c70c8ee100e64171068a11df9d2cd1f","unresolved":false,"context_lines":[{"line_number":7543,"context_line":"        \"\"\"Converts a qcow2 disk to raw.\"\"\""},{"line_number":7544,"context_line":"        path_raw \u003d path + \u0027_raw\u0027"},{"line_number":7545,"context_line":"        utils.execute(\u0027qemu-img\u0027, \u0027convert\u0027, \u0027-t\u0027, \u0027none\u0027, \u0027-f\u0027, \u0027qcow2\u0027,"},{"line_number":7546,"context_line":"                      \u0027-O\u0027, \u0027raw\u0027, path, path_raw)"},{"line_number":7547,"context_line":"        utils.execute(\u0027mv\u0027, path_raw, path)"},{"line_number":7548,"context_line":""},{"line_number":7549,"context_line":"    def finish_migration(self, context, migration, instance, disk_info,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ff82abbf_50c67f9c","line":7546,"in_reply_to":"ff82abbf_c47e606a","updated":"2017-11-24 03:23:52.000000000","message":"\u003e Also you might have noticed, that Dan notes in his comment[*] in\n \u003e the bug that setting \"-t none\" (cache mode for the target image)\n \u003e could result in unpredictable performance depending on the amount\n \u003e of available free memory.\n\nyou possible saying `removing -t none` instead of `set -t none`?\n\n\n \u003e \n \u003e Further, note that that the lower-case \"-t\" option of \u0027qemu-img\u0027 is\n \u003e for configuring cache for the target disk image.  And the\n \u003e upper-case \"-T\" will let us set cache for source disk image (for\n \u003e which we\u0027re using the default provided by QEMU, which is\n \u003e \"writeback\").  I think this is fine as-is.\n \u003e \n \u003e \n \u003e [*] https://bugs.launchpad.net/nova/+bug/1484992/comments/5","commit_id":"6ca1e201e9a6ca18a2dcc1f0c926602ceed52ddb"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"3c8d88b521a1520a28c32f1eaa3d420f54df8840","unresolved":false,"context_lines":[{"line_number":8177,"context_line":""},{"line_number":8178,"context_line":"    @staticmethod"},{"line_number":8179,"context_line":"    def _disk_qcow2_to_raw(path):"},{"line_number":8180,"context_line":"        \"\"\"Converts a qcow2 disk to raw.\"\"\""},{"line_number":8181,"context_line":"        path_raw \u003d path + \u0027_raw\u0027"},{"line_number":8182,"context_line":"        utils.execute(\u0027qemu-img\u0027, \u0027convert\u0027, \u0027-t\u0027, \u0027none\u0027, \u0027-f\u0027, \u0027qcow2\u0027,"},{"line_number":8183,"context_line":"                      \u0027-O\u0027, \u0027raw\u0027, path, path_raw)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_91ad35ec","line":8180,"updated":"2018-03-20 12:36:20.000000000","message":"I would have added some notes explaining the option you have introduced since it\u0027s not so obvious.","commit_id":"eceff630043b3e593b15136befcc3270943436eb"}],"nova/virt/libvirt/utils.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"3c8d88b521a1520a28c32f1eaa3d420f54df8840","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    if dest_fmt \u003d\u003d \u0027ploop\u0027:"},{"line_number":272,"context_line":"        dest_fmt \u003d \u0027parallels\u0027"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    qemu_img_cmd \u003d (\u0027qemu-img\u0027, \u0027convert\u0027, \u0027-t\u0027, \u0027none\u0027,"},{"line_number":275,"context_line":"                    \u0027-f\u0027, source_fmt,"},{"line_number":276,"context_line":"                    \u0027-O\u0027, dest_fmt)"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"df7087c5_f181114c","line":274,"updated":"2018-03-20 12:36:20.000000000","message":"Same here, a small note could be helpful.","commit_id":"eceff630043b3e593b15136befcc3270943436eb"}]}
