)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"41fa05db1442afe9f6e6e57c6c7b2bc24984d341","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-11-24 16:33:40 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"RBD drivers can\u0027t continue create to volume from"},{"line_number":8,"context_line":"volume when the config \"rbd_max_clone_depth\" changed."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"When the rbd_max_clone_depth default value is 5, and creates a clone"},{"line_number":11,"context_line":"with a depth of 5.Then change the rbd_max_clone_depth value to 3 or"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5a74a57a_cb4c0c73","line":8,"updated":"2016-11-24 10:25:20.000000000","message":"Better to change title to: RBD driver doesn\u0027t flattern image when clone depth \u003e configured value.","commit_id":"c3bb79f5f2f1ef7ddbdc1c3011fd4b4d9b6d991d"},{"author":{"_account_id":21135,"name":"zhangdaolong","email":"daodragonzhang@gmail.com","username":"zhangdaolong"},"change_message_id":"81bfdd48e89acbb82daa99e450b0baae90424c39","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-11-24 16:33:40 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"RBD drivers can\u0027t continue create to volume from"},{"line_number":8,"context_line":"volume when the config \"rbd_max_clone_depth\" changed."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"When the rbd_max_clone_depth default value is 5, and creates a clone"},{"line_number":11,"context_line":"with a depth of 5.Then change the rbd_max_clone_depth value to 3 or"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5a74a57a_b1d02255","line":8,"in_reply_to":"5a74a57a_cb4c0c73","updated":"2016-12-01 10:49:04.000000000","message":"Ok,thank you","commit_id":"c3bb79f5f2f1ef7ddbdc1c3011fd4b4d9b6d991d"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"41fa05db1442afe9f6e6e57c6c7b2bc24984d341","unresolved":false,"context_lines":[{"line_number":10,"context_line":"When the rbd_max_clone_depth default value is 5, and creates a clone"},{"line_number":11,"context_line":"with a depth of 5.Then change the rbd_max_clone_depth value to 3 or"},{"line_number":12,"context_line":"smaller,ecepte for less than 0.At laste restart cinder-volume,When"},{"line_number":13,"context_line":"you continue to create a clone chain, can not be successful."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Fix Bugs1644129"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5a74a57a_eb470849","line":13,"updated":"2016-11-24 10:25:20.000000000","message":"This paraggrah can be rephrased to:\n  RBD driver has a rbd_max_clone_depth config option which would trigger image flattern operation when a RBD image has been chain-cloned to that value.  But the driver only trigger flattern when actual clone depth equals rbd_max_clone_depth.  There are cases where actual clone depeth is bigger than rbd_max_clone_depth (for example: admin somehow changed rbd_max_clone_depth from a bigger value to a smaller value), auto-flattern won\u0027t be triggered.  This change allows RBD driver to flattern image has been cloned \u003e\u003d rbd_max_clone_depth.","commit_id":"c3bb79f5f2f1ef7ddbdc1c3011fd4b4d9b6d991d"},{"author":{"_account_id":21135,"name":"zhangdaolong","email":"daodragonzhang@gmail.com","username":"zhangdaolong"},"change_message_id":"81bfdd48e89acbb82daa99e450b0baae90424c39","unresolved":false,"context_lines":[{"line_number":10,"context_line":"When the rbd_max_clone_depth default value is 5, and creates a clone"},{"line_number":11,"context_line":"with a depth of 5.Then change the rbd_max_clone_depth value to 3 or"},{"line_number":12,"context_line":"smaller,ecepte for less than 0.At laste restart cinder-volume,When"},{"line_number":13,"context_line":"you continue to create a clone chain, can not be successful."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Fix Bugs1644129"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5a74a57a_f1ca9aa0","line":13,"in_reply_to":"5a74a57a_eb470849","updated":"2016-12-01 10:49:04.000000000","message":"Ok,thank you","commit_id":"c3bb79f5f2f1ef7ddbdc1c3011fd4b4d9b6d991d"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"41fa05db1442afe9f6e6e57c6c7b2bc24984d341","unresolved":false,"context_lines":[{"line_number":12,"context_line":"smaller,ecepte for less than 0.At laste restart cinder-volume,When"},{"line_number":13,"context_line":"you continue to create a clone chain, can not be successful."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Fix Bugs1644129"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ic6e62ffcb4aded6ee9a652a1f4d0a1db5eac0ceb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5a74a57a_0b752497","line":15,"updated":"2016-11-24 10:25:20.000000000","message":"Closes-Bug: #1644129","commit_id":"c3bb79f5f2f1ef7ddbdc1c3011fd4b4d9b6d991d"},{"author":{"_account_id":21135,"name":"zhangdaolong","email":"daodragonzhang@gmail.com","username":"zhangdaolong"},"change_message_id":"81bfdd48e89acbb82daa99e450b0baae90424c39","unresolved":false,"context_lines":[{"line_number":12,"context_line":"smaller,ecepte for less than 0.At laste restart cinder-volume,When"},{"line_number":13,"context_line":"you continue to create a clone chain, can not be successful."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Fix Bugs1644129"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Ic6e62ffcb4aded6ee9a652a1f4d0a1db5eac0ceb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5a74a57a_51c0ae7c","line":15,"in_reply_to":"5a74a57a_0b752497","updated":"2016-12-01 10:49:04.000000000","message":"Ok,thank you","commit_id":"c3bb79f5f2f1ef7ddbdc1c3011fd4b4d9b6d991d"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"604f81e8d9f1c707602f6547a38b035603ec29ab","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     zhangdaolong \u003czhangdaolong@fiberhome.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-12-01 19:00:35 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"RBD driver doesn\u0027t flattern image when clone depth \u003e configured value."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"BD driver has a rbd_max_clone_depth config option which would trigger"},{"line_number":10,"context_line":"image flattern operation when a RBD image has been chain-cloned to that"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a71b18c_6f43786c","line":7,"range":{"start_line":7,"start_character":19,"end_line":7,"end_character":27},"updated":"2016-12-06 18:58:43.000000000","message":"s/flattern/flatten","commit_id":"dbf6bc328769feec9c20ed76e4f814e7fbf3be38"},{"author":{"_account_id":21135,"name":"zhangdaolong","email":"daodragonzhang@gmail.com","username":"zhangdaolong"},"change_message_id":"1f6807f747cbd324128897d7eba86527e350ee59","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     zhangdaolong \u003czhangdaolong@fiberhome.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-12-01 19:00:35 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"RBD driver doesn\u0027t flattern image when clone depth \u003e configured value."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"BD driver has a rbd_max_clone_depth config option which would trigger"},{"line_number":10,"context_line":"image flattern operation when a RBD image has been chain-cloned to that"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a6eadb0_18e20ad6","line":7,"range":{"start_line":7,"start_character":19,"end_line":7,"end_character":27},"in_reply_to":"3a71b18c_6f43786c","updated":"2016-12-22 07:16:22.000000000","message":"ok","commit_id":"dbf6bc328769feec9c20ed76e4f814e7fbf3be38"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"604f81e8d9f1c707602f6547a38b035603ec29ab","unresolved":false,"context_lines":[{"line_number":9,"context_line":"BD driver has a rbd_max_clone_depth config option which would trigger"},{"line_number":10,"context_line":"image flattern operation when a RBD image has been chain-cloned to that"},{"line_number":11,"context_line":"value.  But the driver only trigger flattern when actual clone depth"},{"line_number":12,"context_line":"equals rbd_max_clone_depth.  There are cases where actual clone depeth"},{"line_number":13,"context_line":"is bigger than rbd_max_clone_depth (for example: admin somehow changed"},{"line_number":14,"context_line":"rbd_max_clone_depth from a bigger value to a smaller value),"},{"line_number":15,"context_line":"auto-flattern won\u0027t be triggered.  This change allows RBD driver to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3a71b18c_cf0acc25","line":12,"range":{"start_line":12,"start_character":64,"end_line":12,"end_character":70},"updated":"2016-12-06 18:58:43.000000000","message":"s/depeth/depth","commit_id":"dbf6bc328769feec9c20ed76e4f814e7fbf3be38"},{"author":{"_account_id":21135,"name":"zhangdaolong","email":"daodragonzhang@gmail.com","username":"zhangdaolong"},"change_message_id":"1f6807f747cbd324128897d7eba86527e350ee59","unresolved":false,"context_lines":[{"line_number":9,"context_line":"BD driver has a rbd_max_clone_depth config option which would trigger"},{"line_number":10,"context_line":"image flattern operation when a RBD image has been chain-cloned to that"},{"line_number":11,"context_line":"value.  But the driver only trigger flattern when actual clone depth"},{"line_number":12,"context_line":"equals rbd_max_clone_depth.  There are cases where actual clone depeth"},{"line_number":13,"context_line":"is bigger than rbd_max_clone_depth (for example: admin somehow changed"},{"line_number":14,"context_line":"rbd_max_clone_depth from a bigger value to a smaller value),"},{"line_number":15,"context_line":"auto-flattern won\u0027t be triggered.  This change allows RBD driver to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a6eadb0_98ce1a59","line":12,"range":{"start_line":12,"start_character":64,"end_line":12,"end_character":70},"in_reply_to":"3a71b18c_cf0acc25","updated":"2016-12-22 07:16:22.000000000","message":"ok","commit_id":"dbf6bc328769feec9c20ed76e4f814e7fbf3be38"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"5a96f14feaabf526e6460239ef3c785c0f7d91ce","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"RBD driver doesn\u0027t flatten image when clone depth \u003e configured value."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"BD driver has a rbd_max_clone_depth config option which would trigger"},{"line_number":10,"context_line":"image flatten operation when a RBD image has been chain-cloned to that"},{"line_number":11,"context_line":"value.  But the driver only trigger flatten when actual clone depth"},{"line_number":12,"context_line":"equals rbd_max_clone_depth.  There are cases where actual clone depth"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a30ddce_46f52c55","line":9,"updated":"2017-03-09 14:14:28.000000000","message":"RBD","commit_id":"26c255e4077009d602d201638050f4cbf5d5e880"}],"cinder/volume/drivers/rbd.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"41fa05db1442afe9f6e6e57c6c7b2bc24984d341","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        # If clone depth was reached, flatten should have occurred so if it has"},{"line_number":366,"context_line":"        # been exceeded then something has gone wrong."},{"line_number":367,"context_line":"        if depth \u003e self.configuration.rbd_max_clone_depth:"},{"line_number":368,"context_line":"            raise Exception(_(\"clone depth exceeds limit of %s\") %"},{"line_number":369,"context_line":"                            (self.configuration.rbd_max_clone_depth))"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"        return self._get_clone_depth(client, parent, depth + 1)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a74a57a_2b78208f","side":"PARENT","line":368,"updated":"2016-11-24 10:25:20.000000000","message":"If an exception is not desired, logging a message is better than sliently skip this case.","commit_id":"b4f3507b4fe2b8e4af9339093aa3d33c29018c5e"},{"author":{"_account_id":21135,"name":"zhangdaolong","email":"daodragonzhang@gmail.com","username":"zhangdaolong"},"change_message_id":"81bfdd48e89acbb82daa99e450b0baae90424c39","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        # If clone depth was reached, flatten should have occurred so if it has"},{"line_number":366,"context_line":"        # been exceeded then something has gone wrong."},{"line_number":367,"context_line":"        if depth \u003e self.configuration.rbd_max_clone_depth:"},{"line_number":368,"context_line":"            raise Exception(_(\"clone depth exceeds limit of %s\") %"},{"line_number":369,"context_line":"                            (self.configuration.rbd_max_clone_depth))"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"        return self._get_clone_depth(client, parent, depth + 1)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a74a57a_11455616","side":"PARENT","line":368,"in_reply_to":"5a74a57a_2b78208f","updated":"2016-12-01 10:49:04.000000000","message":"Ok,I will add it.","commit_id":"b4f3507b4fe2b8e4af9339093aa3d33c29018c5e"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"6cdc948e2bda25cd3ff27b11c9b79fe7d24e6bd2","unresolved":false,"context_lines":[{"line_number":410,"context_line":"                    LOG.debug(\"flattening source volume %s\", src_name)"},{"line_number":411,"context_line":"                    src_volume.flatten()"},{"line_number":412,"context_line":"                    # Delete parent clone snap, when parent"},{"line_number":413,"context_line":"                    # do not have children."},{"line_number":414,"context_line":"                    parent_volume \u003d self.rbd.Image(client.ioctx, parent)"},{"line_number":415,"context_line":"                    parent_volume.set_snap(snap)"},{"line_number":416,"context_line":"                    list_children \u003d parent_volume.list_children()"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_d4a05ca8","line":413,"range":{"start_line":413,"start_character":22,"end_line":413,"end_character":24},"updated":"2016-12-22 08:43:19.000000000","message":"s/do/does/","commit_id":"dbf6bc328769feec9c20ed76e4f814e7fbf3be38"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"8ddabe9f49ea64f8bc43e82c467dccbf741230f4","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                    # Delete parent clone snap, when parent"},{"line_number":413,"context_line":"                    # do not have children."},{"line_number":414,"context_line":"                    parent_volume \u003d self.rbd.Image(client.ioctx, parent)"},{"line_number":415,"context_line":"                    parent_volume.set_snap(snap)"},{"line_number":416,"context_line":"                    list_children \u003d parent_volume.list_children()"},{"line_number":417,"context_line":"                    if not list_children:"},{"line_number":418,"context_line":"                        try:"},{"line_number":419,"context_line":"                            parent_volume.unprotect_snap(snap)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_a877fd00","line":416,"range":{"start_line":415,"start_character":20,"end_line":416,"end_character":65},"updated":"2016-12-22 07:02:08.000000000","message":"Why this is needed?  And even they are needed, these two lines of code has already a helper function _get_children_info().","commit_id":"dbf6bc328769feec9c20ed76e4f814e7fbf3be38"},{"author":{"_account_id":21135,"name":"zhangdaolong","email":"daodragonzhang@gmail.com","username":"zhangdaolong"},"change_message_id":"1f6807f747cbd324128897d7eba86527e350ee59","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                    # Delete parent clone snap, when parent"},{"line_number":413,"context_line":"                    # do not have children."},{"line_number":414,"context_line":"                    parent_volume \u003d self.rbd.Image(client.ioctx, parent)"},{"line_number":415,"context_line":"                    parent_volume.set_snap(snap)"},{"line_number":416,"context_line":"                    list_children \u003d parent_volume.list_children()"},{"line_number":417,"context_line":"                    if not list_children:"},{"line_number":418,"context_line":"                        try:"},{"line_number":419,"context_line":"                            parent_volume.unprotect_snap(snap)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_d3e87619","line":416,"range":{"start_line":415,"start_character":20,"end_line":416,"end_character":65},"in_reply_to":"da4df55a_a877fd00","updated":"2016-12-22 07:16:22.000000000","message":"vol-vol1-vol2-vol3-vol4-vol5-vol6.\n                          |\n                          snap ...\nif vol5 has one or more snapshots) ,the parent（vol4）\u0027s snap can not unprotect and delete.","commit_id":"dbf6bc328769feec9c20ed76e4f814e7fbf3be38"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"6cdc948e2bda25cd3ff27b11c9b79fe7d24e6bd2","unresolved":false,"context_lines":[{"line_number":412,"context_line":"                    # Delete parent clone snap, when parent"},{"line_number":413,"context_line":"                    # do not have children."},{"line_number":414,"context_line":"                    parent_volume \u003d self.rbd.Image(client.ioctx, parent)"},{"line_number":415,"context_line":"                    parent_volume.set_snap(snap)"},{"line_number":416,"context_line":"                    list_children \u003d parent_volume.list_children()"},{"line_number":417,"context_line":"                    if not list_children:"},{"line_number":418,"context_line":"                        try:"},{"line_number":419,"context_line":"                            parent_volume.unprotect_snap(snap)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_14dd8442","line":416,"range":{"start_line":415,"start_character":20,"end_line":416,"end_character":65},"in_reply_to":"da4df55a_d3e87619","updated":"2016-12-22 08:43:19.000000000","message":"Got it.  So existing code would raise an exception but Cinder doesn\u0027t catch/handle that.  Good catch.","commit_id":"dbf6bc328769feec9c20ed76e4f814e7fbf3be38"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"6cdc948e2bda25cd3ff27b11c9b79fe7d24e6bd2","unresolved":false,"context_lines":[{"line_number":414,"context_line":"                    parent_volume \u003d self.rbd.Image(client.ioctx, parent)"},{"line_number":415,"context_line":"                    parent_volume.set_snap(snap)"},{"line_number":416,"context_line":"                    list_children \u003d parent_volume.list_children()"},{"line_number":417,"context_line":"                    if not list_children:"},{"line_number":418,"context_line":"                        try:"},{"line_number":419,"context_line":"                            parent_volume.unprotect_snap(snap)"},{"line_number":420,"context_line":"                            parent_volume.remove_snap(snap)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da4df55a_74cb3073","line":417,"range":{"start_line":417,"start_character":20,"end_line":417,"end_character":41},"updated":"2016-12-22 08:43:19.000000000","message":"Maybe we need to log a debug/warning level message in case list_children is not empty?","commit_id":"dbf6bc328769feec9c20ed76e4f814e7fbf3be38"}]}
