)]}'
{"cinder/volume/manager.py":[{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"f18d77e009120c1c8bc739e5d77a8f30ecf4a035","unresolved":false,"context_lines":[{"line_number":1274,"context_line":"                # pick up an instance, whose back-end supports swap_volume, to"},{"line_number":1275,"context_line":"                # call update_server_volume, but nova api does not support it,"},{"line_number":1276,"context_line":"                # so the first instance is picked up."},{"line_number":1277,"context_line":"                instance_uuid \u003d attachments[0][\u0027instance_uuid\u0027]"},{"line_number":1278,"context_line":"                nova_api.update_server_volume(ctxt, instance_uuid,"},{"line_number":1279,"context_line":"                                              volume[\u0027id\u0027],"},{"line_number":1280,"context_line":"                                              new_volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"fabf19d9_fa81c94e","line":1277,"updated":"2015-04-18 02:58:31.000000000","message":"Original code will break data consistency in the volume when multiple active instances are attaching the volume and they copy the volume data at the same time. Also migrate_volume_completion will be called multiple time, which may confuse cinder as you mentioned.\n\nEven if we swap the volume at only one instance[0](on one HV), we might break data consistency because other instance has a lock for the volume and issuing I/O for the volume. (ex. SCSI reservation case.)\n\nSo far, we should abort live volume migration when there are multiple attachments, or introduce \"--force\" option with warning of dangerousness for the operation to administrator.\n\nAny thought?","commit_id":"fbc6579250f84a8fd826af78132554e6bf2f033e"},{"author":{"_account_id":10115,"name":"Mitsuhiro Tanino","email":"mitsuhiro.tanino@lycorp.co.jp","username":"mtanino"},"change_message_id":"eb1c0647a3bea65c7ba0ec49fca9530f7faaa2e5","unresolved":false,"context_lines":[{"line_number":1274,"context_line":"                # pick up an instance, whose back-end supports swap_volume, to"},{"line_number":1275,"context_line":"                # call update_server_volume, but nova api does not support it,"},{"line_number":1276,"context_line":"                # so the first instance is picked up."},{"line_number":1277,"context_line":"                instance_uuid \u003d attachments[0][\u0027instance_uuid\u0027]"},{"line_number":1278,"context_line":"                nova_api.update_server_volume(ctxt, instance_uuid,"},{"line_number":1279,"context_line":"                                              volume[\u0027id\u0027],"},{"line_number":1280,"context_line":"                                              new_volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"fabf19d9_23f9584e","line":1277,"in_reply_to":"fabf19d9_fa81c94e","updated":"2015-04-18 11:03:49.000000000","message":"Also if we swap the volume only for instance[0], other instances do not know the change. Therefore they try to continue issuing I/O to old volume but the old one has deleted by swap_volume of instance[0]. I seems this causes I/O error for other instances.","commit_id":"fbc6579250f84a8fd826af78132554e6bf2f033e"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"e8b2016c0254a8e7c256267156240b68856df085","unresolved":false,"context_lines":[{"line_number":1274,"context_line":"                # pick up an instance, whose back-end supports swap_volume, to"},{"line_number":1275,"context_line":"                # call update_server_volume, but nova api does not support it,"},{"line_number":1276,"context_line":"                # so the first instance is picked up."},{"line_number":1277,"context_line":"                instance_uuid \u003d attachments[0][\u0027instance_uuid\u0027]"},{"line_number":1278,"context_line":"                nova_api.update_server_volume(ctxt, instance_uuid,"},{"line_number":1279,"context_line":"                                              volume[\u0027id\u0027],"},{"line_number":1280,"context_line":"                                              new_volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"dac4157f_7b65b2df","line":1277,"in_reply_to":"fabf19d9_fa81c94e","updated":"2015-04-20 02:08:50.000000000","message":"For a short term, I think we can try to avoid migration with multiple attachments to remove conflict and confusion, but for a long term, I think we need to resolve it.\nGive me some time to do some more tests.","commit_id":"fbc6579250f84a8fd826af78132554e6bf2f033e"}]}
