)]}'
{"glance_store/_drivers/filesystem.py":[{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"ed714ac202cc25680a878a36ff5a53cc23a9d094","unresolved":false,"context_lines":[{"line_number":166,"context_line":"    * None"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"\"\"\"),"},{"line_number":169,"context_line":"    cfg.BoolOpt(\u0027filesystem_thin_provisioning\u0027,"},{"line_number":170,"context_line":"                default\u003dFalse,"},{"line_number":171,"context_line":"                help\u003d\"\"\""},{"line_number":172,"context_line":"Enable or not thin provisioning in this backend."}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_f67abe74","line":169,"range":{"start_line":169,"start_character":17,"end_line":169,"end_character":45},"updated":"2020-08-20 13:43:23.000000000","message":"NIT: we could just call this thin_provision(ing) as it will be under FS Store driver anyways, but I don\u0027t really mind more descriptive name either.","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"56dd035fe05df11c1ee259a6b6c3aa50d50daa79","unresolved":false,"context_lines":[{"line_number":166,"context_line":"    * None"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"\"\"\"),"},{"line_number":169,"context_line":"    cfg.BoolOpt(\u0027filesystem_thin_provisioning\u0027,"},{"line_number":170,"context_line":"                default\u003dFalse,"},{"line_number":171,"context_line":"                help\u003d\"\"\""},{"line_number":172,"context_line":"Enable or not thin provisioning in this backend."}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_1059358d","line":169,"range":{"start_line":169,"start_character":17,"end_line":169,"end_character":45},"in_reply_to":"9f560f44_f67abe74","updated":"2020-08-20 15:51:28.000000000","message":"It is actually not possible, as stores can be configured in \"glance_store\" section, it will cause a DuplicateOptionError with the rbd one (I find that when launching the test).","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"ed714ac202cc25680a878a36ff5a53cc23a9d094","unresolved":false,"context_lines":[{"line_number":177,"context_line":"your storage."},{"line_number":178,"context_line":"Enabling this feature will also speed up image upload and save network trafic"},{"line_number":179,"context_line":"in addition to save space in the backend, as null bytes sequences are not"},{"line_number":180,"context_line":"sended over the network."},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"Possible Values:"},{"line_number":183,"context_line":"    * True"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_d6717aaa","line":180,"range":{"start_line":180,"start_character":0,"end_line":180,"end_character":6},"updated":"2020-08-20 13:43:23.000000000","message":"NIT: sent","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"56dd035fe05df11c1ee259a6b6c3aa50d50daa79","unresolved":false,"context_lines":[{"line_number":177,"context_line":"your storage."},{"line_number":178,"context_line":"Enabling this feature will also speed up image upload and save network trafic"},{"line_number":179,"context_line":"in addition to save space in the backend, as null bytes sequences are not"},{"line_number":180,"context_line":"sended over the network."},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"Possible Values:"},{"line_number":183,"context_line":"    * True"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_108015bf","line":180,"range":{"start_line":180,"start_character":0,"end_line":180,"end_character":6},"in_reply_to":"9f560f44_d6717aaa","updated":"2020-08-20 15:51:28.000000000","message":"Done","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"632f4e9b5e433c1a8bca19a94e20d4705138844c","unresolved":false,"context_lines":[{"line_number":750,"context_line":"                    if verifier:"},{"line_number":751,"context_line":"                        verifier.update(buf)"},{"line_number":752,"context_line":"                    if self.thin_provisioning and \\"},{"line_number":753,"context_line":"                            buf \u003d\u003d b\u0027\\x00\u0027 * len(buf):"},{"line_number":754,"context_line":"                        LOG.debug(_(\"found sparse, truncating file to %s \""},{"line_number":755,"context_line":"                                    \"bytes\") % bytes_written)"},{"line_number":756,"context_line":"                        f.truncate(bytes_written)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_d6b7baf4","line":753,"updated":"2020-08-20 13:59:53.000000000","message":"This will allocate memory and create this test string every time, and then require us to compare it byte-by-byte. Why not just do the latter step?\n\n if self.thin_provisioning and all(b \u003d\u003d b\u0027\\x00\u0027 for b in buf):\n\nEven .strip(b\u0027\\x00\u0027) will allocate a new string. Another shortcut would be:\n\n if self.thin_provisioning and len(buf) \u003d\u003d buf.count(b\u0027\\x00\u0027):\n\nIt might even be most efficient to do the loop yourself because you can avoid iterating the block for *most* cases:\n\n def is_zero(buf):\n     for b in buf:\n         if b !\u003d b\u0027\\x00\u0027:\n             return False\n     return True\n\n if thin_provisioning and is_zero(buf):","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"56dd035fe05df11c1ee259a6b6c3aa50d50daa79","unresolved":false,"context_lines":[{"line_number":750,"context_line":"                    if verifier:"},{"line_number":751,"context_line":"                        verifier.update(buf)"},{"line_number":752,"context_line":"                    if self.thin_provisioning and \\"},{"line_number":753,"context_line":"                            buf \u003d\u003d b\u0027\\x00\u0027 * len(buf):"},{"line_number":754,"context_line":"                        LOG.debug(_(\"found sparse, truncating file to %s \""},{"line_number":755,"context_line":"                                    \"bytes\") % bytes_written)"},{"line_number":756,"context_line":"                        f.truncate(bytes_written)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_b07e89e1","line":753,"in_reply_to":"9f560f44_d6b7baf4","updated":"2020-08-20 15:51:28.000000000","message":"Done","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"632f4e9b5e433c1a8bca19a94e20d4705138844c","unresolved":false,"context_lines":[{"line_number":752,"context_line":"                    if self.thin_provisioning and \\"},{"line_number":753,"context_line":"                            buf \u003d\u003d b\u0027\\x00\u0027 * len(buf):"},{"line_number":754,"context_line":"                        LOG.debug(_(\"found sparse, truncating file to %s \""},{"line_number":755,"context_line":"                                    \"bytes\") % bytes_written)"},{"line_number":756,"context_line":"                        f.truncate(bytes_written)"},{"line_number":757,"context_line":"                        f.seek(0, os.SEEK_END)"},{"line_number":758,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_960b828c","line":755,"updated":"2020-08-20 13:59:53.000000000","message":"This will generate a lot of overhead, especially if your data is coming from a 64k-chunk network pipeline. If you think it\u0027s worth emitting some logs (I don\u0027t really think it is), then maybe tally up all the regions you skipped and emit one log message at the end with the total of the sparse areas?","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"ed714ac202cc25680a878a36ff5a53cc23a9d094","unresolved":false,"context_lines":[{"line_number":751,"context_line":"                        verifier.update(buf)"},{"line_number":752,"context_line":"                    if self.thin_provisioning and \\"},{"line_number":753,"context_line":"                            buf \u003d\u003d b\u0027\\x00\u0027 * len(buf):"},{"line_number":754,"context_line":"                        LOG.debug(_(\"found sparse, truncating file to %s \""},{"line_number":755,"context_line":"                                    \"bytes\") % bytes_written)"},{"line_number":756,"context_line":"                        f.truncate(bytes_written)"},{"line_number":757,"context_line":"                        f.seek(0, os.SEEK_END)"},{"line_number":758,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_96eee21f","line":755,"range":{"start_line":754,"start_character":34,"end_line":755,"end_character":44},"updated":"2020-08-20 13:43:23.000000000","message":"debug logging should not be sent to translation functions.","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"56dd035fe05df11c1ee259a6b6c3aa50d50daa79","unresolved":false,"context_lines":[{"line_number":752,"context_line":"                    if self.thin_provisioning and \\"},{"line_number":753,"context_line":"                            buf \u003d\u003d b\u0027\\x00\u0027 * len(buf):"},{"line_number":754,"context_line":"                        LOG.debug(_(\"found sparse, truncating file to %s \""},{"line_number":755,"context_line":"                                    \"bytes\") % bytes_written)"},{"line_number":756,"context_line":"                        f.truncate(bytes_written)"},{"line_number":757,"context_line":"                        f.seek(0, os.SEEK_END)"},{"line_number":758,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_701b51c9","line":755,"in_reply_to":"9f560f44_960b828c","updated":"2020-08-20 15:51:28.000000000","message":"Done","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"96c50288a295ba4e6a59392713ae0e712631e802","unresolved":false,"context_lines":[{"line_number":749,"context_line":"                    checksum.update(buf)"},{"line_number":750,"context_line":"                    if verifier:"},{"line_number":751,"context_line":"                        verifier.update(buf)"},{"line_number":752,"context_line":"                    if self.thin_provisioning and not any(buf):"},{"line_number":753,"context_line":"                        f.truncate(bytes_written)"},{"line_number":754,"context_line":"                        f.seek(0, os.SEEK_END)"},{"line_number":755,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_d04cdd9f","line":752,"range":{"start_line":752,"start_character":54,"end_line":752,"end_character":62},"updated":"2020-08-20 16:06:33.000000000","message":"Ah, right because int(b\u0027\\x00\u0027) \u003d\u003d 0, nice :)","commit_id":"4c7718787bc7d58e277112f1fbd63eca50919931"}],"glance_store/_drivers/rbd.py":[{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"ed714ac202cc25680a878a36ff5a53cc23a9d094","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    * None"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"\"\"\"),"},{"line_number":153,"context_line":"    cfg.BoolOpt(\u0027rbd_thin_provisioning\u0027,"},{"line_number":154,"context_line":"                default\u003dFalse,"},{"line_number":155,"context_line":"                help\u003d\"\"\""},{"line_number":156,"context_line":"Enable or not thin provisioning in this backend."}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_d6421a0f","line":153,"range":{"start_line":153,"start_character":17,"end_line":153,"end_character":38},"updated":"2020-08-20 13:43:23.000000000","message":"NIT: ditto","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"56dd035fe05df11c1ee259a6b6c3aa50d50daa79","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    * None"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"\"\"\"),"},{"line_number":153,"context_line":"    cfg.BoolOpt(\u0027rbd_thin_provisioning\u0027,"},{"line_number":154,"context_line":"                default\u003dFalse,"},{"line_number":155,"context_line":"                help\u003d\"\"\""},{"line_number":156,"context_line":"Enable or not thin provisioning in this backend."}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_901ee5b8","line":153,"range":{"start_line":153,"start_character":17,"end_line":153,"end_character":38},"in_reply_to":"9f560f44_d6421a0f","updated":"2020-08-20 15:51:28.000000000","message":"Same","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"ed714ac202cc25680a878a36ff5a53cc23a9d094","unresolved":false,"context_lines":[{"line_number":160,"context_line":"be interpreted by Ceph as null bytes, and do not really consume your storage."},{"line_number":161,"context_line":"Enabling this feature will also speed up image upload and save network trafic"},{"line_number":162,"context_line":"in addition to save space in the backend, as null bytes sequences are not"},{"line_number":163,"context_line":"sended over the network."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Possible Values:"},{"line_number":166,"context_line":"    * True"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_76518ed9","line":163,"range":{"start_line":163,"start_character":0,"end_line":163,"end_character":6},"updated":"2020-08-20 13:43:23.000000000","message":"NIT: sent","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"56dd035fe05df11c1ee259a6b6c3aa50d50daa79","unresolved":false,"context_lines":[{"line_number":160,"context_line":"be interpreted by Ceph as null bytes, and do not really consume your storage."},{"line_number":161,"context_line":"Enabling this feature will also speed up image upload and save network trafic"},{"line_number":162,"context_line":"in addition to save space in the backend, as null bytes sequences are not"},{"line_number":163,"context_line":"sended over the network."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Possible Values:"},{"line_number":166,"context_line":"    * True"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_3025590a","line":163,"range":{"start_line":163,"start_character":0,"end_line":163,"end_character":6},"in_reply_to":"9f560f44_76518ed9","updated":"2020-08-20 15:51:28.000000000","message":"Done","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"632f4e9b5e433c1a8bca19a94e20d4705138844c","unresolved":false,"context_lines":[{"line_number":570,"context_line":"                                          (length / units.Ki))"},{"line_number":571,"context_line":"                                image.resize(length)"},{"line_number":572,"context_line":"                            if self.thin_provisioning and \\"},{"line_number":573,"context_line":"                                    chunk \u003d\u003d b\u0027\\x00\u0027 * chunk_length:"},{"line_number":574,"context_line":"                                LOG.debug(_(\"ignore writing sparse at \""},{"line_number":575,"context_line":"                                            \"offset %s\") % offset)"},{"line_number":576,"context_line":"                            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_363f1626","line":573,"updated":"2020-08-20 13:59:53.000000000","message":"Same comment here about efficiency.","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"56dd035fe05df11c1ee259a6b6c3aa50d50daa79","unresolved":false,"context_lines":[{"line_number":570,"context_line":"                                          (length / units.Ki))"},{"line_number":571,"context_line":"                                image.resize(length)"},{"line_number":572,"context_line":"                            if self.thin_provisioning and \\"},{"line_number":573,"context_line":"                                    chunk \u003d\u003d b\u0027\\x00\u0027 * chunk_length:"},{"line_number":574,"context_line":"                                LOG.debug(_(\"ignore writing sparse at \""},{"line_number":575,"context_line":"                                            \"offset %s\") % offset)"},{"line_number":576,"context_line":"                            else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_f00f6185","line":573,"in_reply_to":"9f560f44_363f1626","updated":"2020-08-20 15:51:28.000000000","message":"Done","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"ed714ac202cc25680a878a36ff5a53cc23a9d094","unresolved":false,"context_lines":[{"line_number":571,"context_line":"                                image.resize(length)"},{"line_number":572,"context_line":"                            if self.thin_provisioning and \\"},{"line_number":573,"context_line":"                                    chunk \u003d\u003d b\u0027\\x00\u0027 * chunk_length:"},{"line_number":574,"context_line":"                                LOG.debug(_(\"ignore writing sparse at \""},{"line_number":575,"context_line":"                                            \"offset %s\") % offset)"},{"line_number":576,"context_line":"                            else:"},{"line_number":577,"context_line":"                                LOG.debug(_(\"writing chunk at offset %s\") %"},{"line_number":578,"context_line":"                                          offset)"},{"line_number":579,"context_line":"                                image.write(chunk, offset)"},{"line_number":580,"context_line":"                            offset +\u003d chunk_length"},{"line_number":581,"context_line":"                            os_hash_value.update(chunk)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_d65b3af3","line":578,"range":{"start_line":574,"start_character":0,"end_line":578,"end_character":49},"updated":"2020-08-20 13:43:23.000000000","message":"ditto, no translations on debug logging.","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"56dd035fe05df11c1ee259a6b6c3aa50d50daa79","unresolved":false,"context_lines":[{"line_number":571,"context_line":"                                image.resize(length)"},{"line_number":572,"context_line":"                            if self.thin_provisioning and \\"},{"line_number":573,"context_line":"                                    chunk \u003d\u003d b\u0027\\x00\u0027 * chunk_length:"},{"line_number":574,"context_line":"                                LOG.debug(_(\"ignore writing sparse at \""},{"line_number":575,"context_line":"                                            \"offset %s\") % offset)"},{"line_number":576,"context_line":"                            else:"},{"line_number":577,"context_line":"                                LOG.debug(_(\"writing chunk at offset %s\") %"},{"line_number":578,"context_line":"                                          offset)"},{"line_number":579,"context_line":"                                image.write(chunk, offset)"},{"line_number":580,"context_line":"                            offset +\u003d chunk_length"},{"line_number":581,"context_line":"                            os_hash_value.update(chunk)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_100bf57c","line":578,"range":{"start_line":574,"start_character":0,"end_line":578,"end_character":49},"in_reply_to":"9f560f44_76450eb4","updated":"2020-08-20 15:51:28.000000000","message":"Done","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"632f4e9b5e433c1a8bca19a94e20d4705138844c","unresolved":false,"context_lines":[{"line_number":571,"context_line":"                                image.resize(length)"},{"line_number":572,"context_line":"                            if self.thin_provisioning and \\"},{"line_number":573,"context_line":"                                    chunk \u003d\u003d b\u0027\\x00\u0027 * chunk_length:"},{"line_number":574,"context_line":"                                LOG.debug(_(\"ignore writing sparse at \""},{"line_number":575,"context_line":"                                            \"offset %s\") % offset)"},{"line_number":576,"context_line":"                            else:"},{"line_number":577,"context_line":"                                LOG.debug(_(\"writing chunk at offset %s\") %"},{"line_number":578,"context_line":"                                          offset)"},{"line_number":579,"context_line":"                                image.write(chunk, offset)"},{"line_number":580,"context_line":"                            offset +\u003d chunk_length"},{"line_number":581,"context_line":"                            os_hash_value.update(chunk)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_76450eb4","line":578,"range":{"start_line":574,"start_character":0,"end_line":578,"end_character":49},"in_reply_to":"9f560f44_d65b3af3","updated":"2020-08-20 13:59:53.000000000","message":"Definitely too verbose, IMHO.","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"}],"glance_store/multi_backend.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"55390450611176b148ce23b0e18ed35824822d3b","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                           min\u003d1,"},{"line_number":146,"context_line":"                           help\u003dFS_CONF_CHUNKSIZE_HELP.format(key)),"},{"line_number":147,"context_line":"                cfg.BoolOpt(\u0027enable_thin_provisioning\u0027,"},{"line_number":148,"context_line":"                           default\u003dFalse,"},{"line_number":149,"context_line":"                           help\u003d\"\"\"Not used\"\"\")]"},{"line_number":150,"context_line":"            LOG.debug(\"Registering options for reserved store: {}\".format(key))"},{"line_number":151,"context_line":"            conf.register_opts(fs_conf_template, group\u003dkey)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_3fe51ddd","line":148,"updated":"2020-08-03 19:37:05.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"aef2e85cbe8ff29d10c5d8db8d4caf3cab326443"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"55390450611176b148ce23b0e18ed35824822d3b","unresolved":false,"context_lines":[{"line_number":146,"context_line":"                           help\u003dFS_CONF_CHUNKSIZE_HELP.format(key)),"},{"line_number":147,"context_line":"                cfg.BoolOpt(\u0027enable_thin_provisioning\u0027,"},{"line_number":148,"context_line":"                           default\u003dFalse,"},{"line_number":149,"context_line":"                           help\u003d\"\"\"Not used\"\"\")]"},{"line_number":150,"context_line":"            LOG.debug(\"Registering options for reserved store: {}\".format(key))"},{"line_number":151,"context_line":"            conf.register_opts(fs_conf_template, group\u003dkey)"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_1fead9aa","line":149,"updated":"2020-08-03 19:37:05.000000000","message":"pep8: E128 continuation line under-indented for visual indent","commit_id":"aef2e85cbe8ff29d10c5d8db8d4caf3cab326443"}],"glance_store/tests/unit/test_filesystem_store.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"632f4e9b5e433c1a8bca19a94e20d4705138844c","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def test_add_thick_provisioning_with_holes_in_file(self):"},{"line_number":194,"context_line":"        \"\"\""},{"line_number":195,"context_line":"        Tests that a file who contains null bytes chunks is fully"},{"line_number":196,"context_line":"        written with a thick provisioning configuration."},{"line_number":197,"context_line":"        \"\"\""},{"line_number":198,"context_line":"        chunk_size \u003d units.Ki  # 1K"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_16af722a","line":195,"range":{"start_line":195,"start_character":26,"end_line":195,"end_character":29},"updated":"2020-08-20 13:59:53.000000000","message":"s/who/which in all of these","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"56dd035fe05df11c1ee259a6b6c3aa50d50daa79","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def test_add_thick_provisioning_with_holes_in_file(self):"},{"line_number":194,"context_line":"        \"\"\""},{"line_number":195,"context_line":"        Tests that a file who contains null bytes chunks is fully"},{"line_number":196,"context_line":"        written with a thick provisioning configuration."},{"line_number":197,"context_line":"        \"\"\""},{"line_number":198,"context_line":"        chunk_size \u003d units.Ki  # 1K"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_b01969d8","line":195,"range":{"start_line":195,"start_character":26,"end_line":195,"end_character":29},"in_reply_to":"9f560f44_16af722a","updated":"2020-08-20 15:51:28.000000000","message":"Done","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"632f4e9b5e433c1a8bca19a94e20d4705138844c","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        self._do_test_thin_provisioning(content, 3 * chunk_size, 0, 3, True)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def _do_test_thin_provisioning(self, content, size, truncate, write, thin):"},{"line_number":230,"context_line":"        self.config(filesystem_store_chunk_size\u003dunits.Ki,"},{"line_number":231,"context_line":"                    filesystem_thin_provisioning\u003dthin,"},{"line_number":232,"context_line":"                    group\u003d\u0027glance_store\u0027)"},{"line_number":233,"context_line":"        self.store.configure()"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_d6a05a45","line":230,"range":{"start_line":230,"start_character":20,"end_line":230,"end_character":57},"updated":"2020-08-20 13:59:53.000000000","message":"Can you add a test case here to use a different chunk size than the exact regions that you have in order to make sure that partial blocks are not considered sparse? The easiest thing do to would be to add another case above where you pass in a buffer with boundaries in different places, like:\n\n my_chunk \u003d chunk_size * 1.5\n b\u0027*\u0027 * my_chunk + b\u00270\u0027 * my_chunk + ...","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"56dd035fe05df11c1ee259a6b6c3aa50d50daa79","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        self._do_test_thin_provisioning(content, 3 * chunk_size, 0, 3, True)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def _do_test_thin_provisioning(self, content, size, truncate, write, thin):"},{"line_number":230,"context_line":"        self.config(filesystem_store_chunk_size\u003dunits.Ki,"},{"line_number":231,"context_line":"                    filesystem_thin_provisioning\u003dthin,"},{"line_number":232,"context_line":"                    group\u003d\u0027glance_store\u0027)"},{"line_number":233,"context_line":"        self.store.configure()"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_d014dda2","line":230,"range":{"start_line":230,"start_character":20,"end_line":230,"end_character":57},"in_reply_to":"9f560f44_d6a05a45","updated":"2020-08-20 15:51:28.000000000","message":"Done","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"}],"glance_store/tests/unit/test_rbd_store.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"632f4e9b5e433c1a8bca19a94e20d4705138844c","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def test_add_thick_provisioning_with_holes_in_file(self):"},{"line_number":312,"context_line":"        \"\"\""},{"line_number":313,"context_line":"        Tests that a file who contains null bytes chunks is fully"},{"line_number":314,"context_line":"        written to rbd backend in a thick provisioning configuration."},{"line_number":315,"context_line":"        \"\"\""},{"line_number":316,"context_line":"        chunk_size \u003d units.Mi"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_d6b97a79","line":313,"range":{"start_line":313,"start_character":26,"end_line":313,"end_character":29},"updated":"2020-08-20 13:59:53.000000000","message":"s/who/which/ in all of these","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"56dd035fe05df11c1ee259a6b6c3aa50d50daa79","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"    def test_add_thick_provisioning_with_holes_in_file(self):"},{"line_number":312,"context_line":"        \"\"\""},{"line_number":313,"context_line":"        Tests that a file who contains null bytes chunks is fully"},{"line_number":314,"context_line":"        written to rbd backend in a thick provisioning configuration."},{"line_number":315,"context_line":"        \"\"\""},{"line_number":316,"context_line":"        chunk_size \u003d units.Mi"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_704231ad","line":313,"range":{"start_line":313,"start_character":26,"end_line":313,"end_character":29},"in_reply_to":"9f560f44_d6b97a79","updated":"2020-08-20 15:51:28.000000000","message":"Done","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"632f4e9b5e433c1a8bca19a94e20d4705138844c","unresolved":false,"context_lines":[{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def _do_test_thin_provisioning(self, content, size, write, thin):"},{"line_number":348,"context_line":"        self.config(rbd_store_chunk_size\u003d1,"},{"line_number":349,"context_line":"                    rbd_thin_provisioning\u003dthin)"},{"line_number":350,"context_line":"        self.store.configure()"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        image_id \u003d \u0027fake_image_id\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_b663261a","line":349,"updated":"2020-08-20 13:59:53.000000000","message":"Same comment about chunk boundaries.","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"56dd035fe05df11c1ee259a6b6c3aa50d50daa79","unresolved":false,"context_lines":[{"line_number":346,"context_line":""},{"line_number":347,"context_line":"    def _do_test_thin_provisioning(self, content, size, write, thin):"},{"line_number":348,"context_line":"        self.config(rbd_store_chunk_size\u003d1,"},{"line_number":349,"context_line":"                    rbd_thin_provisioning\u003dthin)"},{"line_number":350,"context_line":"        self.store.configure()"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        image_id \u003d \u0027fake_image_id\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_904545b7","line":349,"in_reply_to":"9f560f44_b663261a","updated":"2020-08-20 15:51:28.000000000","message":"Done","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"}],"releasenotes/notes/handle-sparse-image-a3ecfc4ae1c00d48.yaml":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"632f4e9b5e433c1a8bca19a94e20d4705138844c","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    ``filesystem_thin_provisioning`` to rbd and filesystem"},{"line_number":6,"context_line":"    store to enable or not sparse upload, default are False."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    Sparse file mean not really write null byte sequences but only the"},{"line_number":9,"context_line":"    data itself at a given offset, the \"holes\" who can appear will"},{"line_number":10,"context_line":"    automatically interpreted by the storage backend as null bytes,"},{"line_number":11,"context_line":"    and do not really consume your storage."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f560f44_167492ce","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":31},"updated":"2020-08-20 13:59:53.000000000","message":"\"A sparse file means that we do not actually\"","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"56dd035fe05df11c1ee259a6b6c3aa50d50daa79","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    ``filesystem_thin_provisioning`` to rbd and filesystem"},{"line_number":6,"context_line":"    store to enable or not sparse upload, default are False."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    Sparse file mean not really write null byte sequences but only the"},{"line_number":9,"context_line":"    data itself at a given offset, the \"holes\" who can appear will"},{"line_number":10,"context_line":"    automatically interpreted by the storage backend as null bytes,"},{"line_number":11,"context_line":"    and do not really consume your storage."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f560f44_303c392e","line":8,"range":{"start_line":8,"start_character":4,"end_line":8,"end_character":31},"in_reply_to":"9f560f44_167492ce","updated":"2020-08-20 15:51:28.000000000","message":"Done","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"632f4e9b5e433c1a8bca19a94e20d4705138844c","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    store to enable or not sparse upload, default are False."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    Sparse file mean not really write null byte sequences but only the"},{"line_number":9,"context_line":"    data itself at a given offset, the \"holes\" who can appear will"},{"line_number":10,"context_line":"    automatically interpreted by the storage backend as null bytes,"},{"line_number":11,"context_line":"    and do not really consume your storage."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f560f44_767d0eb1","line":9,"range":{"start_line":9,"start_character":47,"end_line":9,"end_character":50},"updated":"2020-08-20 13:59:53.000000000","message":"which","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"56dd035fe05df11c1ee259a6b6c3aa50d50daa79","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    store to enable or not sparse upload, default are False."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    Sparse file mean not really write null byte sequences but only the"},{"line_number":9,"context_line":"    data itself at a given offset, the \"holes\" who can appear will"},{"line_number":10,"context_line":"    automatically interpreted by the storage backend as null bytes,"},{"line_number":11,"context_line":"    and do not really consume your storage."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f560f44_d02b3de8","line":9,"range":{"start_line":9,"start_character":47,"end_line":9,"end_character":50},"in_reply_to":"9f560f44_767d0eb1","updated":"2020-08-20 15:51:28.000000000","message":"Done","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"632f4e9b5e433c1a8bca19a94e20d4705138844c","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    Sparse file mean not really write null byte sequences but only the"},{"line_number":9,"context_line":"    data itself at a given offset, the \"holes\" who can appear will"},{"line_number":10,"context_line":"    automatically interpreted by the storage backend as null bytes,"},{"line_number":11,"context_line":"    and do not really consume your storage."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    Enabling this feature will also speed up image upload and save"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f560f44_f642be67","line":10,"range":{"start_line":10,"start_character":18,"end_line":10,"end_character":29},"updated":"2020-08-20 13:59:53.000000000","message":"\"be interpreted\"","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"56dd035fe05df11c1ee259a6b6c3aa50d50daa79","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    Sparse file mean not really write null byte sequences but only the"},{"line_number":9,"context_line":"    data itself at a given offset, the \"holes\" who can appear will"},{"line_number":10,"context_line":"    automatically interpreted by the storage backend as null bytes,"},{"line_number":11,"context_line":"    and do not really consume your storage."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    Enabling this feature will also speed up image upload and save"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f560f44_70ed11b6","line":10,"range":{"start_line":10,"start_character":18,"end_line":10,"end_character":29},"in_reply_to":"9f560f44_f642be67","updated":"2020-08-20 15:51:28.000000000","message":"Done","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":5202,"name":"Erno Kuvaja","email":"jokke@usr.fi","username":"jokke"},"change_message_id":"ed714ac202cc25680a878a36ff5a53cc23a9d094","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    Enabling this feature will also speed up image upload and save"},{"line_number":14,"context_line":"    network trafic in addition to save space in the backend, as null"},{"line_number":15,"context_line":"    bytes sequences are not sended over the network."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f560f44_d6acdaa0","line":15,"range":{"start_line":15,"start_character":28,"end_line":15,"end_character":34},"updated":"2020-08-20 13:43:23.000000000","message":"NIT: sent","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":28595,"name":"Victor Coutellier","email":"victor.coutellier@gmail.com","username":"alistarle"},"change_message_id":"56dd035fe05df11c1ee259a6b6c3aa50d50daa79","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    Enabling this feature will also speed up image upload and save"},{"line_number":14,"context_line":"    network trafic in addition to save space in the backend, as null"},{"line_number":15,"context_line":"    bytes sequences are not sended over the network."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f560f44_90f0a593","line":15,"range":{"start_line":15,"start_character":28,"end_line":15,"end_character":34},"in_reply_to":"9f560f44_d6acdaa0","updated":"2020-08-20 15:51:28.000000000","message":"Done","commit_id":"54c75ba5485d0d3ace6a94aecb5d45073b32840a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"96c50288a295ba4e6a59392713ae0e712631e802","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    null bytes, and do not really consume your storage."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    Enabling this feature will also speed up image upload and save"},{"line_number":14,"context_line":"    network trafic in addition to save space in the backend, as null"},{"line_number":15,"context_line":"    bytes sequences are not sent over the network."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"9f560f44_d01a1d7b","line":14,"range":{"start_line":14,"start_character":12,"end_line":14,"end_character":18},"updated":"2020-08-20 16:06:33.000000000","message":"traffic","commit_id":"4c7718787bc7d58e277112f1fbd63eca50919931"}]}
