)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"f24601dd3628cacb1e237c91683b3b7130e4ed84","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"de6ae5ca_317f1d03","updated":"2025-09-30 15:49:20.000000000","message":"Cyril, thank you for the inputs, I have answered your queries inline.","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2ccd53db6b32443dfb8741f77278ba4d9bbddfaf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"36370eb0_bca5515a","updated":"2025-10-10 17:51:14.000000000","message":"Thank you Dan and Cyril for inputs, I have made changes as per suggestions!","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7339a4083da9cec880c9cd7e6a42a4715ea37f01","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"87afb4e6_aa8c1e6c","updated":"2026-01-05 14:20:53.000000000","message":"Thank you Francesco for review.","commit_id":"570968da4dfa20e003cfa18c65a3ce36ac4fea80"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7b6e659459307dd20f01b36942d0cbdd0f5a2fcd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d716cb80_020a4283","updated":"2026-01-05 16:23:42.000000000","message":"Thank you for the inputs Dan!!","commit_id":"85122e9a053e32b4929bd92c314f366af6a29a8f"}],"specs/2023.1/approved/glance_store/ceph-ec-pools.rst":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"015563af0e4b776ac28f2eb653d325b3f6b2d6b5","unresolved":true,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"Other contributors:"},{"line_number":100,"context_line":"  pranali-deore (TripleO integration/Tempest testing)"},{"line_number":101,"context_line":"  whoami-rajat (Cinder changes)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Work Items"},{"line_number":104,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"25fafbab_62cb6775","line":101,"updated":"2022-11-01 02:26:46.000000000","message":"Not forcing this onto anyone,  but if we\u0027re gonna have to introduce changes in Nova/Cinder, I\u0027m going to need some help on the reviews (or patches themselves) :)","commit_id":"ebaf548b7a5465f98841cb5468d02cf6550f8a0d"}],"specs/2026.1/approved/glance_store/rbd-erasure-coded-pools.rst":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"96a81c1a4a297407573c02f732ca6d70d86bbfb4","unresolved":true,"context_lines":[{"line_number":43,"context_line":"  overhead that could be better utilized for additional image storage."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* **Enterprise Limitations**: Large enterprises with massive image"},{"line_number":46,"context_line":"  repositories cannot optimize storage costs effectively."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Proposed change"},{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3727ea27_2de4603a","line":46,"range":{"start_line":46,"start_character":45,"end_line":46,"end_character":56},"updated":"2025-09-30 14:21:08.000000000","message":"Are there any downsides to using erasure-coded pools? Apparently we gave up on the idea a few years ago because of the CPU overhead[1]\n\n[1] https://review.opendev.org/c/openstack/glance_store/+/579885","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a902c9604451db0ae7ba881193f118b8409f96d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"  overhead that could be better utilized for additional image storage."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* **Enterprise Limitations**: Large enterprises with massive image"},{"line_number":46,"context_line":"  repositories cannot optimize storage costs effectively."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Proposed change"},{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"215ad347_16fc3679","line":46,"range":{"start_line":46,"start_character":45,"end_line":46,"end_character":56},"in_reply_to":"0ecaa218_9df7748a","updated":"2025-10-30 13:42:08.000000000","message":"Done","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"f24601dd3628cacb1e237c91683b3b7130e4ed84","unresolved":true,"context_lines":[{"line_number":43,"context_line":"  overhead that could be better utilized for additional image storage."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* **Enterprise Limitations**: Large enterprises with massive image"},{"line_number":46,"context_line":"  repositories cannot optimize storage costs effectively."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Proposed change"},{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"750f9bc6_f073c9b7","line":46,"range":{"start_line":46,"start_character":45,"end_line":46,"end_character":56},"in_reply_to":"268181f4_66034a17","updated":"2025-09-30 15:49:20.000000000","message":"I have mentioned this in the proposed change section and used the rbd_store_data_pool as a switch to enable or disable using this feature.","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2ccd53db6b32443dfb8741f77278ba4d9bbddfaf","unresolved":true,"context_lines":[{"line_number":43,"context_line":"  overhead that could be better utilized for additional image storage."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* **Enterprise Limitations**: Large enterprises with massive image"},{"line_number":46,"context_line":"  repositories cannot optimize storage costs effectively."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Proposed change"},{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"0ecaa218_9df7748a","line":46,"range":{"start_line":46,"start_character":45,"end_line":46,"end_character":56},"in_reply_to":"2d5fc73f_b68a6ec2","updated":"2025-10-10 17:51:14.000000000","message":"Ack, I will rewrite this section","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"07ec0e9c2ef578bcbf845e5233ebe05d7e523080","unresolved":true,"context_lines":[{"line_number":43,"context_line":"  overhead that could be better utilized for additional image storage."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* **Enterprise Limitations**: Large enterprises with massive image"},{"line_number":46,"context_line":"  repositories cannot optimize storage costs effectively."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Proposed change"},{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"268181f4_66034a17","line":46,"range":{"start_line":46,"start_character":45,"end_line":46,"end_character":56},"in_reply_to":"3727ea27_2de4603a","updated":"2025-09-30 15:01:05.000000000","message":"I think now RHCSv9 fully supports RBD with EC","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b45bac5c4b70fb23b849ec22bfbb7ca7c7979c59","unresolved":true,"context_lines":[{"line_number":43,"context_line":"  overhead that could be better utilized for additional image storage."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"* **Enterprise Limitations**: Large enterprises with massive image"},{"line_number":46,"context_line":"  repositories cannot optimize storage costs effectively."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Proposed change"},{"line_number":49,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"2d5fc73f_b68a6ec2","line":46,"range":{"start_line":46,"start_character":45,"end_line":46,"end_character":56},"in_reply_to":"750f9bc6_f073c9b7","updated":"2025-10-10 16:19:59.000000000","message":"Okay, but Cyril is asking why someone would want to _not_ use it, which is interesting to me as well. Looks like it\u0027s covered below in the performance note. Perhaps the best thing to do here is change this language to sound a little less flowery about EC and more like \"in the circumstances where storage efficiency outweighs performance concerns...\"\n\nI also think that, as with other recent specs, this list of problems (phrased as reasons \"because EC is not available\") are pretty watered down and not really very useful.\n\nThe first bullet above is probably the only _actual_ problem right? The second is \"because of the first reason, more expensive.\" Is the second (scalability) actually related to EC? Is the third related at all? The fourth (waste) is the same as the first, AFAICT. And this fifth one is just restating the first.","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"96a81c1a4a297407573c02f732ca6d70d86bbfb4","unresolved":true,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* **Profile Management**: Support for configurable erasure coding profiles"},{"line_number":70,"context_line":"  with different k+m parameters for various reliability and efficiency"},{"line_number":71,"context_line":"  requirements."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"* **Enhanced Features**: Add monitoring, reporting, and advanced configuration"},{"line_number":74,"context_line":"  options for production deployments while maintaining the simplicity of the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"c0613109_ec07b472","line":71,"range":{"start_line":71,"start_character":2,"end_line":71,"end_character":14},"updated":"2025-09-30 14:21:08.000000000","message":"Nitpick: can we make it explicit here that K is the amount of data chunks and M the amount of coding chunks?","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"07ec0e9c2ef578bcbf845e5233ebe05d7e523080","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* **Profile Management**: Support for configurable erasure coding profiles"},{"line_number":70,"context_line":"  with different k+m parameters for various reliability and efficiency"},{"line_number":71,"context_line":"  requirements."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"* **Enhanced Features**: Add monitoring, reporting, and advanced configuration"},{"line_number":74,"context_line":"  options for production deployments while maintaining the simplicity of the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3e356648_f909d3dc","line":71,"range":{"start_line":71,"start_character":2,"end_line":71,"end_character":14},"in_reply_to":"c0613109_ec07b472","updated":"2025-09-30 15:01:05.000000000","message":"Acknowledged","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"96a81c1a4a297407573c02f732ca6d70d86bbfb4","unresolved":true,"context_lines":[{"line_number":136,"context_line":"  capacity planning strategies using the two-pool model."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"* **Migration**: Existing single-pool deployments can be migrated"},{"line_number":139,"context_line":"  gradually by adding the data pool configuration."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"* **Monitoring**: Additional monitoring may be needed to track pool"},{"line_number":142,"context_line":"  usage, performance, and storage efficiency across the two pools."}],"source_content_type":"text/x-rst","patch_set":3,"id":"c7cd4779_a992dcb1","line":139,"range":{"start_line":139,"start_character":36,"end_line":139,"end_character":49},"updated":"2025-09-30 14:21:08.000000000","message":"So if I\u0027m currently using replicated pools, how do I migrate to erasure-coded pools? Do I have to enable erasure-coded pools in the Glance config and then migrate my images manually?","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"f24601dd3628cacb1e237c91683b3b7130e4ed84","unresolved":false,"context_lines":[{"line_number":136,"context_line":"  capacity planning strategies using the two-pool model."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"* **Migration**: Existing single-pool deployments can be migrated"},{"line_number":139,"context_line":"  gradually by adding the data pool configuration."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"* **Monitoring**: Additional monitoring may be needed to track pool"},{"line_number":142,"context_line":"  usage, performance, and storage efficiency across the two pools."}],"source_content_type":"text/x-rst","patch_set":3,"id":"32973e13_69147a13","line":139,"range":{"start_line":139,"start_character":36,"end_line":139,"end_character":49},"in_reply_to":"207a0262_91d110d2","updated":"2025-09-30 15:49:20.000000000","message":"Done","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"07ec0e9c2ef578bcbf845e5233ebe05d7e523080","unresolved":true,"context_lines":[{"line_number":136,"context_line":"  capacity planning strategies using the two-pool model."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"* **Migration**: Existing single-pool deployments can be migrated"},{"line_number":139,"context_line":"  gradually by adding the data pool configuration."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"* **Monitoring**: Additional monitoring may be needed to track pool"},{"line_number":142,"context_line":"  usage, performance, and storage efficiency across the two pools."}],"source_content_type":"text/x-rst","patch_set":3,"id":"207a0262_91d110d2","line":139,"range":{"start_line":139,"start_character":36,"end_line":139,"end_character":49},"in_reply_to":"c7cd4779_a992dcb1","updated":"2025-09-30 15:01:05.000000000","message":"I will add more information about it","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"96a81c1a4a297407573c02f732ca6d70d86bbfb4","unresolved":true,"context_lines":[{"line_number":157,"context_line":"  cyril-roelandt or abhishekk"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Other contributors:"},{"line_number":160,"context_line":"  pranali-deore (TripleO integration/Tempest testing)"},{"line_number":161,"context_line":"  whoami-rajat (Cinder changes)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Work Items"}],"source_content_type":"text/x-rst","patch_set":3,"id":"de4a1c56_0705b0db","line":160,"range":{"start_line":160,"start_character":17,"end_line":160,"end_character":24},"updated":"2025-09-30 14:21:08.000000000","message":"I think we can remove TripleO :)","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"07ec0e9c2ef578bcbf845e5233ebe05d7e523080","unresolved":false,"context_lines":[{"line_number":157,"context_line":"  cyril-roelandt or abhishekk"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Other contributors:"},{"line_number":160,"context_line":"  pranali-deore (TripleO integration/Tempest testing)"},{"line_number":161,"context_line":"  whoami-rajat (Cinder changes)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Work Items"}],"source_content_type":"text/x-rst","patch_set":3,"id":"929930fa_06a72399","line":160,"range":{"start_line":160,"start_character":17,"end_line":160,"end_character":24},"in_reply_to":"de4a1c56_0705b0db","updated":"2025-09-30 15:01:05.000000000","message":"Acknowledged","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"96a81c1a4a297407573c02f732ca6d70d86bbfb4","unresolved":true,"context_lines":[{"line_number":164,"context_line":"----------"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* Add the ``rbd_store_data_pool`` configuration option to glance_store"},{"line_number":167,"context_line":"* Modify the RBD driver to use two-pool model (metadata + data pools)"},{"line_number":168,"context_line":"* Implement erasure coding profile management for the data pool"},{"line_number":169,"context_line":"* Update devstack-ceph-plugin to create erasure-coded pools"},{"line_number":170,"context_line":"* Coordinate with Cinder and Nova for similar changes in their RBD pool options"}],"source_content_type":"text/x-rst","patch_set":3,"id":"11663e6f_c6323243","line":167,"range":{"start_line":167,"start_character":40,"end_line":167,"end_character":45},"updated":"2025-09-30 14:21:08.000000000","message":"I\u0027m not sure what\u0027s really needed here. Doesn\u0027t librbd allow us to just pass data_pool to create()?[1]\n\n\n[1] https://docs.ceph.com/en/reef/rbd/api/librbdpy/#rbd.RBD.create","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"07ec0e9c2ef578bcbf845e5233ebe05d7e523080","unresolved":true,"context_lines":[{"line_number":164,"context_line":"----------"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* Add the ``rbd_store_data_pool`` configuration option to glance_store"},{"line_number":167,"context_line":"* Modify the RBD driver to use two-pool model (metadata + data pools)"},{"line_number":168,"context_line":"* Implement erasure coding profile management for the data pool"},{"line_number":169,"context_line":"* Update devstack-ceph-plugin to create erasure-coded pools"},{"line_number":170,"context_line":"* Coordinate with Cinder and Nova for similar changes in their RBD pool options"}],"source_content_type":"text/x-rst","patch_set":3,"id":"30af1b66_44703583","line":167,"range":{"start_line":167,"start_character":40,"end_line":167,"end_character":45},"in_reply_to":"11663e6f_c6323243","updated":"2025-09-30 15:01:05.000000000","message":"Ack I will check it","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"f24601dd3628cacb1e237c91683b3b7130e4ed84","unresolved":false,"context_lines":[{"line_number":164,"context_line":"----------"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* Add the ``rbd_store_data_pool`` configuration option to glance_store"},{"line_number":167,"context_line":"* Modify the RBD driver to use two-pool model (metadata + data pools)"},{"line_number":168,"context_line":"* Implement erasure coding profile management for the data pool"},{"line_number":169,"context_line":"* Update devstack-ceph-plugin to create erasure-coded pools"},{"line_number":170,"context_line":"* Coordinate with Cinder and Nova for similar changes in their RBD pool options"}],"source_content_type":"text/x-rst","patch_set":3,"id":"6cd2ecdc_194c881d","line":167,"range":{"start_line":167,"start_character":40,"end_line":167,"end_character":45},"in_reply_to":"30af1b66_44703583","updated":"2025-09-30 15:49:20.000000000","message":"Done","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"96a81c1a4a297407573c02f732ca6d70d86bbfb4","unresolved":true,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* Add the ``rbd_store_data_pool`` configuration option to glance_store"},{"line_number":167,"context_line":"* Modify the RBD driver to use two-pool model (metadata + data pools)"},{"line_number":168,"context_line":"* Implement erasure coding profile management for the data pool"},{"line_number":169,"context_line":"* Update devstack-ceph-plugin to create erasure-coded pools"},{"line_number":170,"context_line":"* Coordinate with Cinder and Nova for similar changes in their RBD pool options"},{"line_number":171,"context_line":"* Add comprehensive testing for erasure-coded pool scenarios"}],"source_content_type":"text/x-rst","patch_set":3,"id":"37d8c00e_45633f58","line":168,"range":{"start_line":168,"start_character":34,"end_line":168,"end_character":35},"updated":"2025-09-30 14:21:08.000000000","message":"I see one can do:\n\n$ ceph osd erasure-code-profile set myprofile k\u003d2 m\u003d2 ...\n\nBut is this something that is exposed through librbd?","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"f24601dd3628cacb1e237c91683b3b7130e4ed84","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* Add the ``rbd_store_data_pool`` configuration option to glance_store"},{"line_number":167,"context_line":"* Modify the RBD driver to use two-pool model (metadata + data pools)"},{"line_number":168,"context_line":"* Implement erasure coding profile management for the data pool"},{"line_number":169,"context_line":"* Update devstack-ceph-plugin to create erasure-coded pools"},{"line_number":170,"context_line":"* Coordinate with Cinder and Nova for similar changes in their RBD pool options"},{"line_number":171,"context_line":"* Add comprehensive testing for erasure-coded pool scenarios"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1953d285_76430f7a","line":168,"range":{"start_line":168,"start_character":34,"end_line":168,"end_character":35},"in_reply_to":"0979688d_9892b017","updated":"2025-09-30 15:49:20.000000000","message":"Yes, you are right, this is very simple indeed.","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"07ec0e9c2ef578bcbf845e5233ebe05d7e523080","unresolved":true,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* Add the ``rbd_store_data_pool`` configuration option to glance_store"},{"line_number":167,"context_line":"* Modify the RBD driver to use two-pool model (metadata + data pools)"},{"line_number":168,"context_line":"* Implement erasure coding profile management for the data pool"},{"line_number":169,"context_line":"* Update devstack-ceph-plugin to create erasure-coded pools"},{"line_number":170,"context_line":"* Coordinate with Cinder and Nova for similar changes in their RBD pool options"},{"line_number":171,"context_line":"* Add comprehensive testing for erasure-coded pool scenarios"}],"source_content_type":"text/x-rst","patch_set":3,"id":"0979688d_9892b017","line":168,"range":{"start_line":168,"start_character":34,"end_line":168,"end_character":35},"in_reply_to":"37d8c00e_45633f58","updated":"2025-09-30 15:01:05.000000000","message":"I think so, will check for it","commit_id":"079955f5579aa761872a380de5a34ee4e3882a79"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b45bac5c4b70fb23b849ec22bfbb7ca7c7979c59","unresolved":true,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* **Two-Pool Architecture**: Leverage librbd\u0027s native ``data_pool`` parameter"},{"line_number":56,"context_line":"  to store metadata in replicated pools and data in erasure-coded pools for"},{"line_number":57,"context_line":"  optimal performance and storage efficiency."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* **New Configuration Option**: Add ``rbd_store_data_pool`` option to specify"},{"line_number":60,"context_line":"  the erasure-coded pool for data storage. When this option is configured,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"990ab88c_e8b55e1d","line":57,"updated":"2025-10-10 16:19:59.000000000","message":"This makes it basically a librbd function right? So glance(-store) basically doesn\u0027t need to do anything else other than tell librbd what the config value is?","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a902c9604451db0ae7ba881193f118b8409f96d","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* **Two-Pool Architecture**: Leverage librbd\u0027s native ``data_pool`` parameter"},{"line_number":56,"context_line":"  to store metadata in replicated pools and data in erasure-coded pools for"},{"line_number":57,"context_line":"  optimal performance and storage efficiency."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* **New Configuration Option**: Add ``rbd_store_data_pool`` option to specify"},{"line_number":60,"context_line":"  the erasure-coded pool for data storage. When this option is configured,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"d5528162_db013b9b","line":57,"in_reply_to":"0b8084bb_f2d2f8ff","updated":"2025-10-30 13:42:08.000000000","message":"Done","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2ccd53db6b32443dfb8741f77278ba4d9bbddfaf","unresolved":true,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"* **Two-Pool Architecture**: Leverage librbd\u0027s native ``data_pool`` parameter"},{"line_number":56,"context_line":"  to store metadata in replicated pools and data in erasure-coded pools for"},{"line_number":57,"context_line":"  optimal performance and storage efficiency."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* **New Configuration Option**: Add ``rbd_store_data_pool`` option to specify"},{"line_number":60,"context_line":"  the erasure-coded pool for data storage. When this option is configured,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"0b8084bb_f2d2f8ff","line":57,"in_reply_to":"990ab88c_e8b55e1d","updated":"2025-10-10 17:51:14.000000000","message":"yes, we should just use librbd existing feature which already works.","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b45bac5c4b70fb23b849ec22bfbb7ca7c7979c59","unresolved":true,"context_lines":[{"line_number":64,"context_line":"  the driver behaves exactly as it currently does with single replicated pools."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* **Storage Efficiency**: Enable 50-75% storage savings compared to"},{"line_number":67,"context_line":"  traditional replication while maintaining data protection."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* **Profile Management**: Support for configurable erasure coding profiles"},{"line_number":70,"context_line":"  with different k+m parameters for various reliability and efficiency"}],"source_content_type":"text/x-rst","patch_set":4,"id":"48cb9c82_f057abbb","line":67,"updated":"2025-10-10 16:19:59.000000000","message":"This is not a \"proposed change\".. this is a benefit (inverse of the problem listed above). This is the sort of signal-to-noise ratio reduction that writing these with AI brings, IMHO.","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2ccd53db6b32443dfb8741f77278ba4d9bbddfaf","unresolved":true,"context_lines":[{"line_number":64,"context_line":"  the driver behaves exactly as it currently does with single replicated pools."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* **Storage Efficiency**: Enable 50-75% storage savings compared to"},{"line_number":67,"context_line":"  traditional replication while maintaining data protection."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* **Profile Management**: Support for configurable erasure coding profiles"},{"line_number":70,"context_line":"  with different k+m parameters for various reliability and efficiency"}],"source_content_type":"text/x-rst","patch_set":4,"id":"6ccebeb0_c5abf58d","line":67,"in_reply_to":"48cb9c82_f057abbb","updated":"2025-10-10 17:51:14.000000000","message":"Yeah, it\u0027s a benifit and not a technical change. I will rewrite this as well.","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a902c9604451db0ae7ba881193f118b8409f96d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"  the driver behaves exactly as it currently does with single replicated pools."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"* **Storage Efficiency**: Enable 50-75% storage savings compared to"},{"line_number":67,"context_line":"  traditional replication while maintaining data protection."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"* **Profile Management**: Support for configurable erasure coding profiles"},{"line_number":70,"context_line":"  with different k+m parameters for various reliability and efficiency"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7bd5f9dd_402151c0","line":67,"in_reply_to":"6ccebeb0_c5abf58d","updated":"2025-10-30 13:42:08.000000000","message":"Done","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b45bac5c4b70fb23b849ec22bfbb7ca7c7979c59","unresolved":true,"context_lines":[{"line_number":70,"context_line":"  with different k+m parameters for various reliability and efficiency"},{"line_number":71,"context_line":"  requirements, where k is the number of data chunks and m is the number"},{"line_number":72,"context_line":"  of coding chunks (e.g., k\u003d4, m\u003d2 means 4 data chunks + 2 coding chunks"},{"line_number":73,"context_line":"  \u003d 6 total chunks, providing protection against up to 2 failures)."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"* **Deployment Strategy**: The implementation will use a simple approach where:"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"f1d6f957_c8f4e919","line":73,"updated":"2025-10-10 16:19:59.000000000","message":"This is just a benefit of being able to use EC in general, right? This, I think, belongs on Ceph\u0027s list of reasons to use it and glance only needs to point to EC itself as the feature.","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a902c9604451db0ae7ba881193f118b8409f96d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"  with different k+m parameters for various reliability and efficiency"},{"line_number":71,"context_line":"  requirements, where k is the number of data chunks and m is the number"},{"line_number":72,"context_line":"  of coding chunks (e.g., k\u003d4, m\u003d2 means 4 data chunks + 2 coding chunks"},{"line_number":73,"context_line":"  \u003d 6 total chunks, providing protection against up to 2 failures)."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"* **Deployment Strategy**: The implementation will use a simple approach where:"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"2611ddf7_4314df95","line":73,"in_reply_to":"957ff896_bab39b3a","updated":"2025-10-30 13:42:08.000000000","message":"Done","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2ccd53db6b32443dfb8741f77278ba4d9bbddfaf","unresolved":true,"context_lines":[{"line_number":70,"context_line":"  with different k+m parameters for various reliability and efficiency"},{"line_number":71,"context_line":"  requirements, where k is the number of data chunks and m is the number"},{"line_number":72,"context_line":"  of coding chunks (e.g., k\u003d4, m\u003d2 means 4 data chunks + 2 coding chunks"},{"line_number":73,"context_line":"  \u003d 6 total chunks, providing protection against up to 2 failures)."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"* **Deployment Strategy**: The implementation will use a simple approach where:"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"957ff896_bab39b3a","line":73,"in_reply_to":"f1d6f957_c8f4e919","updated":"2025-10-10 17:51:14.000000000","message":"I think I should avoid displaying how EC works, rather keep focus on how glance will use it.","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b45bac5c4b70fb23b849ec22bfbb7ca7c7979c59","unresolved":true,"context_lines":[{"line_number":79,"context_line":"    normally and are fully accessible."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"  * **New Images**: Only newly uploaded images after configuration will use the"},{"line_number":82,"context_line":"    two-pool model (metadata in replicated pool, data in erasure-coded pool)."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"  * **Hybrid Storage**: Deployments will naturally evolve to use both storage"},{"line_number":85,"context_line":"    types - existing images in replicated pools, new images in erasure-coded"}],"source_content_type":"text/x-rst","patch_set":4,"id":"a7bb53ae_b4fc060a","line":82,"updated":"2025-10-10 16:19:59.000000000","message":"To be clear, an existing store that gets a data pool added will be able to fetch the existing images directly from the original pool and the newly uploaded images from the data pool, right? Does glance need to do that work or is it hidden inside librbd for us?","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2ccd53db6b32443dfb8741f77278ba4d9bbddfaf","unresolved":true,"context_lines":[{"line_number":79,"context_line":"    normally and are fully accessible."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"  * **New Images**: Only newly uploaded images after configuration will use the"},{"line_number":82,"context_line":"    two-pool model (metadata in replicated pool, data in erasure-coded pool)."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"  * **Hybrid Storage**: Deployments will naturally evolve to use both storage"},{"line_number":85,"context_line":"    types - existing images in replicated pools, new images in erasure-coded"}],"source_content_type":"text/x-rst","patch_set":4,"id":"c412eb44_5a1f97b5","line":82,"in_reply_to":"a7bb53ae_b4fc060a","updated":"2025-10-10 17:51:14.000000000","message":"Your understanding is correct, librbd handles everything. No migration logic needed in glance.","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a902c9604451db0ae7ba881193f118b8409f96d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    normally and are fully accessible."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"  * **New Images**: Only newly uploaded images after configuration will use the"},{"line_number":82,"context_line":"    two-pool model (metadata in replicated pool, data in erasure-coded pool)."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"  * **Hybrid Storage**: Deployments will naturally evolve to use both storage"},{"line_number":85,"context_line":"    types - existing images in replicated pools, new images in erasure-coded"}],"source_content_type":"text/x-rst","patch_set":4,"id":"bf334c5d_f7c9b1bf","line":82,"in_reply_to":"c412eb44_5a1f97b5","updated":"2025-10-30 13:42:08.000000000","message":"Done","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b45bac5c4b70fb23b849ec22bfbb7ca7c7979c59","unresolved":true,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"  * **Hybrid Storage**: Deployments will naturally evolve to use both storage"},{"line_number":85,"context_line":"    types - existing images in replicated pools, new images in erasure-coded"},{"line_number":86,"context_line":"    pools."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"  * **Future Enhancement**: Migration capabilities for existing images can be"},{"line_number":89,"context_line":"    added as a separate enhancement in future releases if needed, providing"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7acfc2ec_6279f348","line":86,"updated":"2025-10-10 16:19:59.000000000","message":"How is this \"hybrid storage\" or an \"evolution\"? This just means \"there will be a combination over time\" right? I think you can drop this given the above two bullets. The wording here makes it sound like something is happening to push towards a \"hybrid\" goal, when really it\u0027s just stating the above two things.","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2ccd53db6b32443dfb8741f77278ba4d9bbddfaf","unresolved":true,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"  * **Hybrid Storage**: Deployments will naturally evolve to use both storage"},{"line_number":85,"context_line":"    types - existing images in replicated pools, new images in erasure-coded"},{"line_number":86,"context_line":"    pools."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"  * **Future Enhancement**: Migration capabilities for existing images can be"},{"line_number":89,"context_line":"    added as a separate enhancement in future releases if needed, providing"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba79a305_172e20b0","line":86,"in_reply_to":"7acfc2ec_6279f348","updated":"2025-10-10 17:51:14.000000000","message":"You are write, I should write this in simple language rather than using polished AI generated contents.","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a902c9604451db0ae7ba881193f118b8409f96d","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"  * **Hybrid Storage**: Deployments will naturally evolve to use both storage"},{"line_number":85,"context_line":"    types - existing images in replicated pools, new images in erasure-coded"},{"line_number":86,"context_line":"    pools."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"  * **Future Enhancement**: Migration capabilities for existing images can be"},{"line_number":89,"context_line":"    added as a separate enhancement in future releases if needed, providing"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7d04bff0_aa6ed7de","line":86,"in_reply_to":"ba79a305_172e20b0","updated":"2025-10-30 13:42:08.000000000","message":"Done","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b45bac5c4b70fb23b849ec22bfbb7ca7c7979c59","unresolved":true,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"  * **Future Enhancement**: Migration capabilities for existing images can be"},{"line_number":89,"context_line":"    added as a separate enhancement in future releases if needed, providing"},{"line_number":90,"context_line":"    a path for complete migration when desired."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":".. note::"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"acd5932e_5b185511","line":90,"updated":"2025-10-10 16:19:59.000000000","message":"...meaning moving image data from the original pool to the data pool, leaving the metadata in place, right?","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a902c9604451db0ae7ba881193f118b8409f96d","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"  * **Future Enhancement**: Migration capabilities for existing images can be"},{"line_number":89,"context_line":"    added as a separate enhancement in future releases if needed, providing"},{"line_number":90,"context_line":"    a path for complete migration when desired."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":".. note::"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"d0b56e5a_41efb5b4","line":90,"in_reply_to":"4d2c6a39_1a33f643","updated":"2025-10-30 13:42:08.000000000","message":"Done","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2ccd53db6b32443dfb8741f77278ba4d9bbddfaf","unresolved":true,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"  * **Future Enhancement**: Migration capabilities for existing images can be"},{"line_number":89,"context_line":"    added as a separate enhancement in future releases if needed, providing"},{"line_number":90,"context_line":"    a path for complete migration when desired."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":".. note::"},{"line_number":93,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"4d2c6a39_1a33f643","line":90,"in_reply_to":"acd5932e_5b185511","updated":"2025-10-10 17:51:14.000000000","message":"Yes, you are right. I was thinking to have API call similar to our hash calculation, but this can be discussed as a separate task if we chose to work on this proposal this cycle.","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b45bac5c4b70fb23b849ec22bfbb7ca7c7979c59","unresolved":true,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"   * **Write/Read Performance**: Write operations may be slower due to the CPU-intensive"},{"line_number":104,"context_line":"     encoding process, while read operations can experience higher latency, particularly"},{"line_number":105,"context_line":"     when data reconstruction is required due to node unavailability."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"   * **Recovery Operations**: Data reconstruction during hardware failures is"},{"line_number":108,"context_line":"     extremely CPU-intensive and can take significantly longer than with"}],"source_content_type":"text/x-rst","patch_set":4,"id":"f6cf9c0c_ba66bd75","line":105,"updated":"2025-10-10 16:19:59.000000000","message":"Is this CPU overhead incurred by glance itself, or the worker thread that librbd spins off? Are there knobs we need to expose for how many worker threads (if possible) can be spun to parallelize this work? I assume the answer is \"no\", but: is this so much slower that synchronous writes (i.e. image upload) might be problematic because of timeouts? Does the import mechanism need additional timeout handling when doing the stage-\u003eimport operation to an EC pool?","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a902c9604451db0ae7ba881193f118b8409f96d","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"   * **Write/Read Performance**: Write operations may be slower due to the CPU-intensive"},{"line_number":104,"context_line":"     encoding process, while read operations can experience higher latency, particularly"},{"line_number":105,"context_line":"     when data reconstruction is required due to node unavailability."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"   * **Recovery Operations**: Data reconstruction during hardware failures is"},{"line_number":108,"context_line":"     extremely CPU-intensive and can take significantly longer than with"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9cd76beb_b7ca8a4b","line":105,"in_reply_to":"48e918c4_84958d9a","updated":"2025-10-30 13:42:08.000000000","message":"Done","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2ccd53db6b32443dfb8741f77278ba4d9bbddfaf","unresolved":true,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"   * **Write/Read Performance**: Write operations may be slower due to the CPU-intensive"},{"line_number":104,"context_line":"     encoding process, while read operations can experience higher latency, particularly"},{"line_number":105,"context_line":"     when data reconstruction is required due to node unavailability."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"   * **Recovery Operations**: Data reconstruction during hardware failures is"},{"line_number":108,"context_line":"     extremely CPU-intensive and can take significantly longer than with"}],"source_content_type":"text/x-rst","patch_set":4,"id":"48e918c4_84958d9a","line":105,"in_reply_to":"f6cf9c0c_ba66bd75","updated":"2025-10-10 17:51:14.000000000","message":"IMO the CPU overhead is incurred by the Ceph OSD daemons, not by Glance or librbd directly. I think we need to document about operators potentially need to adjust timeouts for imports when using EC pools.","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b45bac5c4b70fb23b849ec22bfbb7ca7c7979c59","unresolved":true,"context_lines":[{"line_number":115,"context_line":"   **Recommendation**: Erasure-coded pools are best suited for cold storage or"},{"line_number":116,"context_line":"   archival use cases where storage efficiency is prioritized over performance,"},{"line_number":117,"context_line":"   workloads with infrequent access patterns, and deployments with sufficient"},{"line_number":118,"context_line":"   CPU resources to handle the computational overhead."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"   **Default Behavior**: The feature is disabled by default (when ``rbd_store_data_pool``"},{"line_number":121,"context_line":"   is not configured) to ensure optimal performance for typical Glance deployments."}],"source_content_type":"text/x-rst","patch_set":4,"id":"d0de2293_9852c454","line":118,"updated":"2025-10-10 16:19:59.000000000","message":"This looks to be the answer to Cyril\u0027s question above. I think rewriting the initial paragraphs of this spec to be much more specific about \"cold/archival storage\" and less like a sales brochure would help position the reader to understand what\u0027s being proposed here.","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a902c9604451db0ae7ba881193f118b8409f96d","unresolved":false,"context_lines":[{"line_number":115,"context_line":"   **Recommendation**: Erasure-coded pools are best suited for cold storage or"},{"line_number":116,"context_line":"   archival use cases where storage efficiency is prioritized over performance,"},{"line_number":117,"context_line":"   workloads with infrequent access patterns, and deployments with sufficient"},{"line_number":118,"context_line":"   CPU resources to handle the computational overhead."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"   **Default Behavior**: The feature is disabled by default (when ``rbd_store_data_pool``"},{"line_number":121,"context_line":"   is not configured) to ensure optimal performance for typical Glance deployments."}],"source_content_type":"text/x-rst","patch_set":4,"id":"443ec504_8caa3046","line":118,"in_reply_to":"b4383924_bed66efb","updated":"2025-10-30 13:42:08.000000000","message":"Done","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2ccd53db6b32443dfb8741f77278ba4d9bbddfaf","unresolved":true,"context_lines":[{"line_number":115,"context_line":"   **Recommendation**: Erasure-coded pools are best suited for cold storage or"},{"line_number":116,"context_line":"   archival use cases where storage efficiency is prioritized over performance,"},{"line_number":117,"context_line":"   workloads with infrequent access patterns, and deployments with sufficient"},{"line_number":118,"context_line":"   CPU resources to handle the computational overhead."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"   **Default Behavior**: The feature is disabled by default (when ``rbd_store_data_pool``"},{"line_number":121,"context_line":"   is not configured) to ensure optimal performance for typical Glance deployments."}],"source_content_type":"text/x-rst","patch_set":4,"id":"b4383924_bed66efb","line":118,"in_reply_to":"d0de2293_9852c454","updated":"2025-10-10 17:51:14.000000000","message":"Ack, I will rewrite the initial paragraph to explain it better.","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b45bac5c4b70fb23b849ec22bfbb7ca7c7979c59","unresolved":true,"context_lines":[{"line_number":245,"context_line":"* Note: Migration tools are not included in this initial implementation."},{"line_number":246,"context_line":"  Migration capabilities can be added as a future enhancement if needed."},{"line_number":247,"context_line":"* Update devstack-ceph-plugin to create erasure-coded pools"},{"line_number":248,"context_line":"* Coordinate with Cinder and Nova for similar changes in their RBD pool options"},{"line_number":249,"context_line":"* Add comprehensive testing for erasure-coded pool scenarios"},{"line_number":250,"context_line":"* Update documentation and configuration examples"},{"line_number":251,"context_line":"* Ensure backward compatibility with existing deployments"}],"source_content_type":"text/x-rst","patch_set":4,"id":"afd35ccb_9a8bbe90","line":248,"updated":"2025-10-10 16:19:59.000000000","message":"What needs to happen here? If we\u0027re snapshotting to an EC pool, nova/cinder need to also specify the data pool for librbd?","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7a902c9604451db0ae7ba881193f118b8409f96d","unresolved":false,"context_lines":[{"line_number":245,"context_line":"* Note: Migration tools are not included in this initial implementation."},{"line_number":246,"context_line":"  Migration capabilities can be added as a future enhancement if needed."},{"line_number":247,"context_line":"* Update devstack-ceph-plugin to create erasure-coded pools"},{"line_number":248,"context_line":"* Coordinate with Cinder and Nova for similar changes in their RBD pool options"},{"line_number":249,"context_line":"* Add comprehensive testing for erasure-coded pool scenarios"},{"line_number":250,"context_line":"* Update documentation and configuration examples"},{"line_number":251,"context_line":"* Ensure backward compatibility with existing deployments"}],"source_content_type":"text/x-rst","patch_set":4,"id":"386aa64f_cc5e5a86","line":248,"in_reply_to":"24a1a426_83b937cf","updated":"2025-10-30 13:42:08.000000000","message":"Done","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2ccd53db6b32443dfb8741f77278ba4d9bbddfaf","unresolved":true,"context_lines":[{"line_number":245,"context_line":"* Note: Migration tools are not included in this initial implementation."},{"line_number":246,"context_line":"  Migration capabilities can be added as a future enhancement if needed."},{"line_number":247,"context_line":"* Update devstack-ceph-plugin to create erasure-coded pools"},{"line_number":248,"context_line":"* Coordinate with Cinder and Nova for similar changes in their RBD pool options"},{"line_number":249,"context_line":"* Add comprehensive testing for erasure-coded pool scenarios"},{"line_number":250,"context_line":"* Update documentation and configuration examples"},{"line_number":251,"context_line":"* Ensure backward compatibility with existing deployments"}],"source_content_type":"text/x-rst","patch_set":4,"id":"24a1a426_83b937cf","line":248,"in_reply_to":"afd35ccb_9a8bbe90","updated":"2025-10-10 17:51:14.000000000","message":"Yes, I think nova and cinder should also support the two-pool model by having their own data_pool config options while creating new image form volume or snapshot.","commit_id":"d016b31cc0b672bd20530091f5cdd5cfa2b21e7e"},{"author":{"_account_id":25402,"name":"Francesco Pantano","email":"fpantano@redhat.com","username":"fmount"},"change_message_id":"c7bb28c3f76c742f5b7af9be70e3513c7375647a","unresolved":true,"context_lines":[{"line_number":38,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"This specification proposes extending the RBD store driver to support"},{"line_number":41,"context_line":"erasure-coded pools using Ceph\u0027s two-pool model."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Use librbd\u0027s native ``data_pool`` parameter to store image metadata in a"},{"line_number":44,"context_line":"replicated pool and image data in an erasure-coded pool."}],"source_content_type":"text/x-rst","patch_set":5,"id":"50fb2f5e_af020dd2","line":41,"updated":"2025-10-30 21:25:29.000000000","message":"Should we add here that it is expected from the Ceph side to run:\n\n```\n$ ceph osd pool create images_data erasure\n$ ceph osd pool create images replicated\n$ ceph osd pool set images_data allow_ec_overwrites true\n```\n\nNote that without `allow_ec_overwrites` set to `true` the image create will fail (I tested in Tentacle), so we might need a `Testing` section where we describe that we need to patch devstack-plugin-ceph to do the above.","commit_id":"aaff352a0f9d38983aef275cd35c31893ab50312"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7339a4083da9cec880c9cd7e6a42a4715ea37f01","unresolved":false,"context_lines":[{"line_number":38,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"This specification proposes extending the RBD store driver to support"},{"line_number":41,"context_line":"erasure-coded pools using Ceph\u0027s two-pool model."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Use librbd\u0027s native ``data_pool`` parameter to store image metadata in a"},{"line_number":44,"context_line":"replicated pool and image data in an erasure-coded pool."}],"source_content_type":"text/x-rst","patch_set":5,"id":"20ba7a87_7c71bf12","line":41,"in_reply_to":"50fb2f5e_af020dd2","updated":"2026-01-05 14:20:53.000000000","message":"Done","commit_id":"aaff352a0f9d38983aef275cd35c31893ab50312"},{"author":{"_account_id":25402,"name":"Francesco Pantano","email":"fpantano@redhat.com","username":"fmount"},"change_message_id":"35c913412ee1e669d38b505c37c27e583ba1a7aa","unresolved":true,"context_lines":[{"line_number":53,"context_line":"  ``create()`` method. librbd handles all the complexity of managing the"},{"line_number":54,"context_line":"  two pools."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"* Existing images stay in their current pools. librbd transparently handles"},{"line_number":57,"context_line":"  reading them from the old location."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* New images after configuration will use the two-pool model."}],"source_content_type":"text/x-rst","patch_set":5,"id":"45dc411b_5687c632","line":56,"updated":"2025-10-30 21:13:38.000000000","message":"Is this referred to the migration path described at the ptg? In that case I think that Glance needs to drive it using multistore.\nThe other case is that you want to use the same (existing) images pool (replicated) to store both images data with the regular use case and metadata in case there\u0027s a configuration switch to move from replicated to erasure coded pool.\n\nSo the question is: is it a good idea to allow users to put different kind of data within the same pool? I see that this is technically possible, just not sure we want to allow or deny these kind of actions.","commit_id":"aaff352a0f9d38983aef275cd35c31893ab50312"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7339a4083da9cec880c9cd7e6a42a4715ea37f01","unresolved":true,"context_lines":[{"line_number":53,"context_line":"  ``create()`` method. librbd handles all the complexity of managing the"},{"line_number":54,"context_line":"  two pools."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"* Existing images stay in their current pools. librbd transparently handles"},{"line_number":57,"context_line":"  reading them from the old location."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* New images after configuration will use the two-pool model."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9c99e98c_30f42e6e","line":56,"in_reply_to":"45dc411b_5687c632","updated":"2026-01-05 14:20:53.000000000","message":"Updated the spec to clarify pool mixing: when rbd_store_data_pool is enabled, the replicated pool contains both existing images (all data) and new images (metadata only). This mixing is supported but not recommended for production. The spec now recommends using separate pools or migrating via multistore.","commit_id":"aaff352a0f9d38983aef275cd35c31893ab50312"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7b6e659459307dd20f01b36942d0cbdd0f5a2fcd","unresolved":false,"context_lines":[{"line_number":53,"context_line":"  ``create()`` method. librbd handles all the complexity of managing the"},{"line_number":54,"context_line":"  two pools."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"* Existing images stay in their current pools. librbd transparently handles"},{"line_number":57,"context_line":"  reading them from the old location."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* New images after configuration will use the two-pool model."}],"source_content_type":"text/x-rst","patch_set":5,"id":"e16f60e5_2c42e159","line":56,"in_reply_to":"9c99e98c_30f42e6e","updated":"2026-01-05 16:23:42.000000000","message":"Done","commit_id":"aaff352a0f9d38983aef275cd35c31893ab50312"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3a78a747d8ebcc1235eeae6af4b42e3f7d26d1eb","unresolved":true,"context_lines":[{"line_number":234,"context_line":"  ``create()`` method when creating images"},{"line_number":235,"context_line":"* Update devstack-ceph-plugin to create erasure-coded pools for testing"},{"line_number":236,"context_line":"* Coordinate with Cinder and Nova teams - they may need similar changes to"},{"line_number":237,"context_line":"  their RBD configuration to work with images stored in erasure-coded pools"},{"line_number":238,"context_line":"* Add tests for the two-pool scenario"},{"line_number":239,"context_line":"* Update documentation with configuration examples and performance guidance"},{"line_number":240,"context_line":"* Note: Migration tools are not part of this spec"}],"source_content_type":"text/x-rst","patch_set":7,"id":"65e1e23a_ba1796c4","line":237,"updated":"2026-01-05 15:59:55.000000000","message":"Hmm, if nova or cinder create an image without EC enabled, that will be the same as existing images in the \"mixing\" scenario above, right? However, I assume the problem comes when an image is created in glance split between the EC an replicated pools and then nova or cinder doesn\u0027t have the pointer to the other pool, right?\n\nEither way, sounds like nova and cinder are hard deps for this to work. I\u0027m not aware of any nova plans to do this, although if it\u0027s just a config knob and passing the pool to `create()` then that should be doable.","commit_id":"85122e9a053e32b4929bd92c314f366af6a29a8f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7b6e659459307dd20f01b36942d0cbdd0f5a2fcd","unresolved":true,"context_lines":[{"line_number":234,"context_line":"  ``create()`` method when creating images"},{"line_number":235,"context_line":"* Update devstack-ceph-plugin to create erasure-coded pools for testing"},{"line_number":236,"context_line":"* Coordinate with Cinder and Nova teams - they may need similar changes to"},{"line_number":237,"context_line":"  their RBD configuration to work with images stored in erasure-coded pools"},{"line_number":238,"context_line":"* Add tests for the two-pool scenario"},{"line_number":239,"context_line":"* Update documentation with configuration examples and performance guidance"},{"line_number":240,"context_line":"* Note: Migration tools are not part of this spec"}],"source_content_type":"text/x-rst","patch_set":7,"id":"77ba4194_e87c0776","line":237,"in_reply_to":"65e1e23a_ba1796c4","updated":"2026-01-05 16:23:42.000000000","message":"Ack, I have added warning mentioning the same here in the spec. Also as you suggested we will mention this in releasenothe as well.","commit_id":"85122e9a053e32b4929bd92c314f366af6a29a8f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"a07228db937b09c1fd30f5dbf3fb50242d1f8b85","unresolved":false,"context_lines":[{"line_number":234,"context_line":"  ``create()`` method when creating images"},{"line_number":235,"context_line":"* Update devstack-ceph-plugin to create erasure-coded pools for testing"},{"line_number":236,"context_line":"* Coordinate with Cinder and Nova teams - they may need similar changes to"},{"line_number":237,"context_line":"  their RBD configuration to work with images stored in erasure-coded pools"},{"line_number":238,"context_line":"* Add tests for the two-pool scenario"},{"line_number":239,"context_line":"* Update documentation with configuration examples and performance guidance"},{"line_number":240,"context_line":"* Note: Migration tools are not part of this spec"}],"source_content_type":"text/x-rst","patch_set":7,"id":"b577b8c0_7253f6ec","line":237,"in_reply_to":"77ba4194_e87c0776","updated":"2026-01-05 16:40:36.000000000","message":"Done","commit_id":"85122e9a053e32b4929bd92c314f366af6a29a8f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"3a78a747d8ebcc1235eeae6af4b42e3f7d26d1eb","unresolved":true,"context_lines":[{"line_number":249,"context_line":"volumes/snapshots in erasure-coded pools."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Nova may write instance snapshots directly to Ceph pools. It may need similar"},{"line_number":252,"context_line":"``data_pool`` support in its ``libvirt.images_rbd_pool`` configuration."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"The devstack-ceph-plugin needs updates to create erasure-coded pools for"},{"line_number":255,"context_line":"testing."}],"source_content_type":"text/x-rst","patch_set":7,"id":"91adb76d_c62baa8e","line":252,"updated":"2026-01-05 15:59:55.000000000","message":"But per above, both are hard dependencies for this to work as expected right? I guess you could back glance with ceph and not have nova/cinder share the pool and it would still be usable, but.. seems like it should be mentioned here that those projects\u0027 support is necessary.","commit_id":"85122e9a053e32b4929bd92c314f366af6a29a8f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7b6e659459307dd20f01b36942d0cbdd0f5a2fcd","unresolved":false,"context_lines":[{"line_number":249,"context_line":"volumes/snapshots in erasure-coded pools."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"Nova may write instance snapshots directly to Ceph pools. It may need similar"},{"line_number":252,"context_line":"``data_pool`` support in its ``libvirt.images_rbd_pool`` configuration."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"The devstack-ceph-plugin needs updates to create erasure-coded pools for"},{"line_number":255,"context_line":"testing."}],"source_content_type":"text/x-rst","patch_set":7,"id":"ed1211cf_8a795188","line":252,"in_reply_to":"91adb76d_c62baa8e","updated":"2026-01-05 16:23:42.000000000","message":"Acknowledged","commit_id":"85122e9a053e32b4929bd92c314f366af6a29a8f"}]}
