)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"817c8311db422fc2e89ccad8d6414df5a9a5db8d","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This is a workaround that calls fsync.  This also introduces"},{"line_number":19,"context_line":"Tony Breeds\u0027 idea of a \"workaround\" conf group which I really liked,"},{"line_number":20,"context_line":"the default behavior is to perform the fsync, however for those that"},{"line_number":21,"context_line":"have verified they have the fixed version of qemu they can turn this"},{"line_number":22,"context_line":"off."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a961159_a19c5610","line":20,"updated":"2014-12-12 05:46:14.000000000","message":"Actually it was Dan Smiths idea but I\u0027ll take credit ;P","commit_id":"7c087250b5899fa638b4e078305354316ee53945"}],"cinder/image/image_utils.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"96b4054f2571f01b45a0852af8326cfa882bb586","unresolved":false,"context_lines":[{"line_number":56,"context_line":"# See: https://wiki.openstack.org/wiki/Bug1368815 for tracking"},{"line_number":57,"context_line":"# info and more details."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"workaround_opt \u003d [cfg.BoolOpt(\u0027sync_image_conversion_file\u0027,"},{"line_number":60,"context_line":"                              default\u003dTrue,"},{"line_number":61,"context_line":"                              help\u003d\u0027Work around for qemu bug whereby \u0027"},{"line_number":62,"context_line":"                                   \u0027the convert process may kick off \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_41f01291","line":59,"updated":"2014-12-12 05:26:40.000000000","message":"This new config option needs to be registered like \u0027image_helper_opt\u0027 is doing below.","commit_id":"7c087250b5899fa638b4e078305354316ee53945"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"6378e384f5fa36c2e1b7044e84f3310b337a4d86","unresolved":false,"context_lines":[{"line_number":56,"context_line":"# See: https://wiki.openstack.org/wiki/Bug1368815 for tracking"},{"line_number":57,"context_line":"# info and more details."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"workaround_opt \u003d [cfg.BoolOpt(\u0027sync_image_conversion_file\u0027,"},{"line_number":60,"context_line":"                              default\u003dTrue,"},{"line_number":61,"context_line":"                              help\u003d\u0027Work around for qemu bug whereby \u0027"},{"line_number":62,"context_line":"                                   \u0027the convert process may kick off \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_3457ad03","line":59,"in_reply_to":"3a961159_41f01291","updated":"2014-12-12 17:24:58.000000000","message":"Done","commit_id":"7c087250b5899fa638b4e078305354316ee53945"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"817c8311db422fc2e89ccad8d6414df5a9a5db8d","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"CONF \u003d cfg.CONF"},{"line_number":67,"context_line":"CONF.register_opts(image_helper_opt)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def _fsync(path):"},{"line_number":71,"context_line":"    if CONF.sync_image_conversion_file:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_018b6ac3","line":68,"updated":"2014-12-12 05:46:14.000000000","message":"CONF.register_opts(workaround_opt)","commit_id":"7c087250b5899fa638b4e078305354316ee53945"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"6378e384f5fa36c2e1b7044e84f3310b337a4d86","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"CONF \u003d cfg.CONF"},{"line_number":67,"context_line":"CONF.register_opts(image_helper_opt)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def _fsync(path):"},{"line_number":71,"context_line":"    if CONF.sync_image_conversion_file:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_145471fd","line":68,"in_reply_to":"3a961159_018b6ac3","updated":"2014-12-12 17:24:58.000000000","message":"Done","commit_id":"7c087250b5899fa638b4e078305354316ee53945"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"54dc1ae11c257c9c9d85238feb5aad459babf9ed","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    if CONF.sync_image_conversion_file:"},{"line_number":72,"context_line":"        LOG.debug(\u0027Perform fsync operation on temp conversion file\u0027)"},{"line_number":73,"context_line":"        data \u003d open(path, \u0027wb\u0027)"},{"line_number":74,"context_line":"        data.flush()"},{"line_number":75,"context_line":"        os.fsync(data.fileno())"},{"line_number":76,"context_line":"        data.close()"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_b443a8ad","line":74,"updated":"2014-12-12 13:03:33.000000000","message":"Why don\u0027t you use \u0027with\u0027 statement?","commit_id":"7c087250b5899fa638b4e078305354316ee53945"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"6378e384f5fa36c2e1b7044e84f3310b337a4d86","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    if CONF.sync_image_conversion_file:"},{"line_number":72,"context_line":"        LOG.debug(\u0027Perform fsync operation on temp conversion file\u0027)"},{"line_number":73,"context_line":"        data \u003d open(path, \u0027wb\u0027)"},{"line_number":74,"context_line":"        data.flush()"},{"line_number":75,"context_line":"        os.fsync(data.fileno())"},{"line_number":76,"context_line":"        data.close()"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_d42e698b","line":74,"in_reply_to":"3a961159_b443a8ad","updated":"2014-12-12 17:24:58.000000000","message":"Done","commit_id":"7c087250b5899fa638b4e078305354316ee53945"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"bc08271f296fb5c286499caac419c39530cdc8d6","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                               help\u003d\u0027Directory used for temporary storage \u0027"},{"line_number":49,"context_line":"                                    \u0027during image conversion\u0027), ]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"# NOTE(jdg): This fsync() is to work around an issue in qemu where fiemap"},{"line_number":52,"context_line":"# is used to read blocks from the source image BUT is not using"},{"line_number":53,"context_line":"# FIEMAP_FLAG_SYNC.  This results in corrupt images.  This is"},{"line_number":54,"context_line":"# fixed in upstream qemu but we need this workaround until the"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_340fade2","line":51,"updated":"2014-12-12 17:28:49.000000000","message":"It would probably be more understandable to put this description down where _fsync() is called.","commit_id":"2ee13dec6389a898827cdf8c2c8ca3301df25132"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"bf34fc585fc8cf5f442cb653a9cb879c2e59ce31","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                               help\u003d\u0027Directory used for temporary storage \u0027"},{"line_number":49,"context_line":"                                    \u0027during image conversion\u0027), ]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"# NOTE(jdg): This fsync() is to work around an issue in qemu where fiemap"},{"line_number":52,"context_line":"# is used to read blocks from the source image BUT is not using"},{"line_number":53,"context_line":"# FIEMAP_FLAG_SYNC.  This results in corrupt images.  This is"},{"line_number":54,"context_line":"# fixed in upstream qemu but we need this workaround until the"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_06d444bb","line":51,"in_reply_to":"3a961159_340fade2","updated":"2014-12-12 19:46:41.000000000","message":"yeah, some seem to *think* that, which is fine.  Personally I find it awkward but I really don\u0027t care that much.\n\nRegardless seems I shouldn\u0027t hijack this from Tony as he expressed in the LP bug that he had intended to port this to Cinder after the Nova version landed.  I\u0027m a bit concerned about that but that\u0027s ok, we\u0027ll see what happens.","commit_id":"2ee13dec6389a898827cdf8c2c8ca3301df25132"},{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"c21af1f2c90acbd87fe8d22d2af8b941eb39266d","unresolved":false,"context_lines":[{"line_number":71,"context_line":"def _fsync(path):"},{"line_number":72,"context_line":"    if CONF.sync_image_conversion_file:"},{"line_number":73,"context_line":"        LOG.debug(\u0027Perform fsync operation on temp conversion file\u0027)"},{"line_number":74,"context_line":"        with open(path, \u0027wb\u0027) as data:"},{"line_number":75,"context_line":"            data.flush()"},{"line_number":76,"context_line":"            os.fsync(data.fileno())"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_58187584","line":74,"updated":"2014-12-17 11:05:56.000000000","message":"So I just made a fool of myself in nova.   We really don\u0027t want \u0027wb\u0027 here I just switched to \u0027ab\u0027 in nova.  I didn\u0027t catch that \u0027w\u0027 will truncate the file which is a really bad idea in this context :(","commit_id":"2ee13dec6389a898827cdf8c2c8ca3301df25132"}],"cinder/tests/test_image_utils.py":[{"author":{"_account_id":12898,"name":"Tony Breeds","email":"tony@bakeyournoodle.com","username":"tonyb"},"change_message_id":"817c8311db422fc2e89ccad8d6414df5a9a5db8d","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                         \u002719:04:00 32:06:34.974\u0027)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        self.assertEqual(str(inf), TEST_STR)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    def _test_fetch_to_raw(self, has_qemu\u003dTrue, src_inf\u003dNone, dest_inf\u003dNone,"},{"line_number":211,"context_line":"                           bps_limit\u003d0):"},{"line_number":212,"context_line":"        mox \u003d self._mox"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_01b28a93","line":209,"updated":"2014-12-12 05:46:14.000000000","message":"As you can see in the nova change I thought it was important to check that the config option did the right thing.","commit_id":"7c087250b5899fa638b4e078305354316ee53945"}]}
