)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"904a627310a9068daafa2450eb412e31c427d1e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"3fd440fe_f3e84dad","updated":"2026-07-05 09:27:40.000000000","message":"Hi Eric, thanks for the review.\nCould you please clarify the reason for the -1?","commit_id":"6ffe85cb3fd8b8d28c62baeedcfaa6a20f806658"}],"cinder/volume/drivers/remotefs.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"2f96e4ec849d82cf75baecb7429f4ff88e118b02","unresolved":true,"context_lines":[{"line_number":1294,"context_line":""},{"line_number":1295,"context_line":"        volume_status \u003d snapshot.volume.status"},{"line_number":1296,"context_line":"        acceptable_states \u003d [\u0027available\u0027, \u0027in-use\u0027, \u0027backing-up\u0027, \u0027deleting\u0027,"},{"line_number":1297,"context_line":"                             \u0027downloading\u0027, \u0027uploading\u0027]"},{"line_number":1298,"context_line":"        self._validate_state(volume_status, acceptable_states)"},{"line_number":1299,"context_line":""},{"line_number":1300,"context_line":"        vol_path \u003d self._local_volume_dir(snapshot.volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"910b2738_c660b37c","line":1297,"updated":"2026-06-23 11:47:36.000000000","message":"I don\u0027t think it\u0027s safe to delete a snapshot while in the uploading state? Wouldn\u0027t this break things, since the upload is presumably reading from the snapshot data?","commit_id":"94eb77bb2f15146bf40174ca335ff99b6cf7d35b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"a3afbf7ee84451ec5a9231ef2d5b5440472f1a61","unresolved":true,"context_lines":[{"line_number":1294,"context_line":""},{"line_number":1295,"context_line":"        volume_status \u003d snapshot.volume.status"},{"line_number":1296,"context_line":"        acceptable_states \u003d [\u0027available\u0027, \u0027in-use\u0027, \u0027backing-up\u0027, \u0027deleting\u0027,"},{"line_number":1297,"context_line":"                             \u0027downloading\u0027, \u0027uploading\u0027]"},{"line_number":1298,"context_line":"        self._validate_state(volume_status, acceptable_states)"},{"line_number":1299,"context_line":""},{"line_number":1300,"context_line":"        vol_path \u003d self._local_volume_dir(snapshot.volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"49b0fa6e_0d145fb1","line":1297,"in_reply_to":"204f8801_7a663730","updated":"2026-07-09 14:06:42.000000000","message":"I don\u0027t think we can allow operations to manipulate the snapshot chain while uploading the volume to an image.\n\nIf volume to image is reading from a chain like\n  volume -\u003e snap A -\u003e snap B -\u003e snap C\n  \nand we allow snap B to be deleted while that operation is running (or is about to run), problems would ensue, because that operation assumes that the snapshot/volume file chain is not changing while it\u0027s running.","commit_id":"94eb77bb2f15146bf40174ca335ff99b6cf7d35b"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"173e7d515240e26be897320e482681434c1debdb","unresolved":true,"context_lines":[{"line_number":1294,"context_line":""},{"line_number":1295,"context_line":"        volume_status \u003d snapshot.volume.status"},{"line_number":1296,"context_line":"        acceptable_states \u003d [\u0027available\u0027, \u0027in-use\u0027, \u0027backing-up\u0027, \u0027deleting\u0027,"},{"line_number":1297,"context_line":"                             \u0027downloading\u0027, \u0027uploading\u0027]"},{"line_number":1298,"context_line":"        self._validate_state(volume_status, acceptable_states)"},{"line_number":1299,"context_line":""},{"line_number":1300,"context_line":"        vol_path \u003d self._local_volume_dir(snapshot.volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"e201e966_1332530c","line":1297,"in_reply_to":"49b0fa6e_0d145fb1","updated":"2026-07-09 16:25:29.000000000","message":"I may be missing something, but I believe this case is already handled by the existing code. In the previous patch, I removed the uploading state from the acceptable states, so a snapshot delete on a volume that is currently being uploaded to an image should already be rejected at the driver level.\n\nIn your example, this means snapshot B cannot be deleted while the upload operation is still in progress.","commit_id":"94eb77bb2f15146bf40174ca335ff99b6cf7d35b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e4e47f2315da00f60fc10ae1cd1d074b9f00dc20","unresolved":true,"context_lines":[{"line_number":1294,"context_line":""},{"line_number":1295,"context_line":"        volume_status \u003d snapshot.volume.status"},{"line_number":1296,"context_line":"        acceptable_states \u003d [\u0027available\u0027, \u0027in-use\u0027, \u0027backing-up\u0027, \u0027deleting\u0027,"},{"line_number":1297,"context_line":"                             \u0027downloading\u0027, \u0027uploading\u0027]"},{"line_number":1298,"context_line":"        self._validate_state(volume_status, acceptable_states)"},{"line_number":1299,"context_line":""},{"line_number":1300,"context_line":"        vol_path \u003d self._local_volume_dir(snapshot.volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"c536b80d_931124e1","line":1297,"in_reply_to":"56a585c2_30425a8b","updated":"2026-06-24 15:04:26.000000000","message":"I was thinking more of the case where a snapshot delete is requested in a completely separate operation when an upload to volume operation is already in progress.","commit_id":"94eb77bb2f15146bf40174ca335ff99b6cf7d35b"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"8b6449fb5d5e6f0fc30159aba00e7961a1b151e9","unresolved":true,"context_lines":[{"line_number":1294,"context_line":""},{"line_number":1295,"context_line":"        volume_status \u003d snapshot.volume.status"},{"line_number":1296,"context_line":"        acceptable_states \u003d [\u0027available\u0027, \u0027in-use\u0027, \u0027backing-up\u0027, \u0027deleting\u0027,"},{"line_number":1297,"context_line":"                             \u0027downloading\u0027, \u0027uploading\u0027]"},{"line_number":1298,"context_line":"        self._validate_state(volume_status, acceptable_states)"},{"line_number":1299,"context_line":""},{"line_number":1300,"context_line":"        vol_path \u003d self._local_volume_dir(snapshot.volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"56a585c2_30425a8b","line":1297,"in_reply_to":"910b2738_c660b37c","updated":"2026-06-24 10:00:06.000000000","message":"The deletion at line 1239 happens inside a finally block after copy_volume_from_snapshot completes, so the snapshot is already fully consumed and no longer being read.\nsame as the existing \u0027downloading\u0027 case","commit_id":"94eb77bb2f15146bf40174ca335ff99b6cf7d35b"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"c4b2ba7007e11e30f5afb12d27f4a68a8409f235","unresolved":false,"context_lines":[{"line_number":1294,"context_line":""},{"line_number":1295,"context_line":"        volume_status \u003d snapshot.volume.status"},{"line_number":1296,"context_line":"        acceptable_states \u003d [\u0027available\u0027, \u0027in-use\u0027, \u0027backing-up\u0027, \u0027deleting\u0027,"},{"line_number":1297,"context_line":"                             \u0027downloading\u0027, \u0027uploading\u0027]"},{"line_number":1298,"context_line":"        self._validate_state(volume_status, acceptable_states)"},{"line_number":1299,"context_line":""},{"line_number":1300,"context_line":"        vol_path \u003d self._local_volume_dir(snapshot.volume)"}],"source_content_type":"text/x-python","patch_set":2,"id":"204f8801_7a663730","line":1297,"in_reply_to":"c536b80d_931124e1","updated":"2026-06-25 08:35:50.000000000","message":"Acknowledged","commit_id":"94eb77bb2f15146bf40174ca335ff99b6cf7d35b"}]}
