)]}'
{"id":"openstack%2Fironic-python-agent~1001323","triplet_id":"openstack%2Fironic-python-agent~master~I4359385b850ea5d737b0d766306b77b91f99fea5","project":"openstack/ironic-python-agent","branch":"master","attention_set":{"13252":{"account":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"last_update":"2026-08-18 12:47:27.000000000","reason":"\u003cGERRIT_ACCOUNT_13252\u003e replied on the change","reason_account":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"}},"39388":{"account":{"_account_id":39388,"name":"Timon Schnell","display_name":"Timon Schnell","email":"timonschnell22@googlemail.com","username":"kingspeedy"},"last_update":"2026-08-19 15:55:52.000000000","reason":"\u003cGERRIT_ACCOUNT_10342\u003e replied on the change","reason_account":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"}}},"removed_from_attention_set":{},"hashtags":["ironic-week-prio"],"change_id":"I4359385b850ea5d737b0d766306b77b91f99fea5","subject":"Erase frozen SATA SSDs by discarding them","status":"NEW","created":"2026-08-18 11:04:12.000000000","updated":"2026-08-19 15:55:52.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":2,"unresolved_comment_count":1,"has_review_started":true,"meta_rev_id":"4cd577e77186a008cbd3c0ff23403c1e11f11b58","_number":1001323,"virtual_id_number":1001323,"owner":{"_account_id":39388,"name":"Timon Schnell","display_name":"Timon Schnell","email":"timonschnell22@googlemail.com","username":"kingspeedy"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},{"tag":"autogenerated:zuul:check","value":1,"date":"2026-08-18 12:17:54.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Backport-Candidate":{"all":[{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Do Not Backport"," 0":"Backport Review Needed","+1":"Should Backport"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"CC":[{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-08-18 11:15:31.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"CC"},{"updated":"2026-08-18 12:17:54.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-08-18 12:47:27.000000000","updated_by":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"reviewer":{"_account_id":13252,"name":"Dr. Jens Harbott","display_name":"Jens Harbott (frickler)","email":"frickler@offenerstapel.de","username":"jrosenboom"},"state":"REVIEWER"},{"updated":"2026-08-19 15:55:52.000000000","updated_by":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"reviewer":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"state":"CC"}],"messages":[{"id":"f5685fb8468034fcee17496ffe973b04f9ca9177","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":39388,"name":"Timon Schnell","display_name":"Timon Schnell","email":"timonschnell22@googlemail.com","username":"kingspeedy"},"date":"2026-08-18 11:04:12.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"4acb577e81ef97f1bd04787ffee95d6071d7cb7a","author":{"_account_id":39388,"name":"Timon Schnell","display_name":"Timon Schnell","email":"timonschnell22@googlemail.com","username":"kingspeedy"},"date":"2026-08-18 11:07:51.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"ceba02d76669efbb6488d396d838b96f84b94f83","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-18 11:15:31.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/57c8db7709fe4a10809fe8339b90db0d\n\n- openstack-tox-py311-arm64 https://zuul.opendev.org/t/openstack/build/2b9a4b59ee3c458da95cb33410f8ac62 : SUCCESS in 5m 35s (non-voting)\n- openstack-tox-py313-arm64 https://zuul.opendev.org/t/openstack/build/018b1d1817814d6e8260f732049cc169 : SUCCESS in 6m 45s (non-voting)\n- openstack-tox-py314-arm64 https://zuul.opendev.org/t/openstack/build/00406a067e1d4634aa7a1c8e7888f45b : SUCCESS in 7m 04s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"678c0aa5d12a4ef97413b2a743443b2c34026a2b","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-18 12:17:54.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/fee58fb2163e431db919f57ef6b037f5\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/bf2f291c61b34a4682b62e73c6c1e1ee : SUCCESS in 4m 34s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/6b5fd9e7622c4404b91d533c72483edf : SUCCESS in 3m 04s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/fd99066cc27a49299e7ae0002dd4c81e : SUCCESS in 3m 46s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/6144f94f3f13470dbfd1379453b187a3 : SUCCESS in 3m 23s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/6ff79002bbb349c8b3087cd209865855 : SUCCESS in 6m 43s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7c2e3b20a27e4c2c98f9eab030f178d6 : SUCCESS in 4m 34s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/655edd1d83224e9cab2e343721fa84b0 : SUCCESS in 5m 23s\n- openstack-tox-functional https://zuul.opendev.org/t/openstack/build/2dd8a23a2df6444f97d504f046353ec6 : SUCCESS in 3m 20s\n- ipa-tox-bandit https://zuul.opendev.org/t/openstack/build/7c71c31ea4274ac6946ce31b840100b1 : SUCCESS in 3m 02s\n- ipa-tempest-bios-ipmi-direct-src https://zuul.opendev.org/t/openstack/build/202c9f96f12842919d70f9b20cea2364 : SUCCESS in 1h 08m 28s\n- ipa-tempest-uefi-redfish-vmedia-src https://zuul.opendev.org/t/openstack/build/25c27b88c7014f86a1c073901a2cb05a : SUCCESS in 1h 06m 33s\n- ironic-standalone-ipa-src https://zuul.opendev.org/t/openstack/build/34ed9fc44e174a03bd6049f03d8f23e0 : SUCCESS in 53m 53s\n- ironic-python-agent-check-image-dib-centos9 https://zuul.opendev.org/t/openstack/build/3b5630760c9642d5814b6bf5d54ae63c : SUCCESS in 11m 11s (non-voting)\n- ironic-python-agent-check-image-dib-centos10 https://zuul.opendev.org/t/openstack/build/314e4e477e674339917c797c229f838d : SUCCESS in 7m 11s (non-voting)\n- ironic-python-agent-check-image-dib-debian https://zuul.opendev.org/t/openstack/build/43534a51ce0943a0a6255b33767e7084 : SUCCESS in 7m 06s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"5019fe998c33039b1baa68a423254ff123663c81","tag":"autogenerated:gerrit:setHashtag","author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"date":"2026-08-19 15:54:34.000000000","message":"Hashtag added: ironic-week-prio","accounts_in_message":[],"_revision_number":1},{"id":"4cd577e77186a008cbd3c0ff23403c1e11f11b58","author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"date":"2026-08-19 15:55:52.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"219e19e8c8ca1c169bfbecd68001f06a0e2366dd","revisions":{"219e19e8c8ca1c169bfbecd68001f06a0e2366dd":{"kind":"REWORK","_number":1,"created":"2026-08-18 11:04:12.000000000","uploader":{"_account_id":39388,"name":"Timon Schnell","display_name":"Timon Schnell","email":"timonschnell22@googlemail.com","username":"kingspeedy"},"ref":"refs/changes/23/1001323/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/ironic-python-agent","ref":"refs/changes/23/1001323/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/ironic-python-agent refs/changes/23/1001323/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/ironic-python-agent refs/changes/23/1001323/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/ironic-python-agent refs/changes/23/1001323/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/ironic-python-agent refs/changes/23/1001323/1"}}},"commit":{"parents":[{"commit":"3ce553624c20a47a0f1c01cf216db3e1db7e0777","subject":"Merge \"Change md5_enabled default to False\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ironic-python-agent/commit/3ce553624c20a47a0f1c01cf216db3e1db7e0777"}]}],"author":{"name":"Timon Schnell","email":"timon.schnell@btc-it-services.com","date":"2026-08-18 07:50:43.000000000","tz":120},"committer":{"name":"Timon Schnell","email":"timon.schnell@btc-it-services.com","date":"2026-08-18 10:51:30.000000000","tz":120},"subject":"Erase frozen SATA SSDs by discarding them","message":"Erase frozen SATA SSDs by discarding them\n\nSome platform firmware issues both SECURITY FREEZE LOCK and SANITIZE\nFREEZE LOCK to every attached SATA device during POST, without offering a\nsetup option to disable it. Both ATA erase paths are then unavailable for\nthe lifetime of that boot, and suspend to RAM is no way out on platforms\nimplementing only s2idle. erase_devices is left with shred, which on a\n7.68 TB SSD takes many hours, consumes write cycles, and cannot reach\nremapped or over provisioned blocks behind the FTL anyway.\n\nDiscard is unaffected by either freeze. On a device which returns\ndeterministic zeroes afterwards it is both faster and a better result than\nshred, so it is attempted before the shred fallback is considered. It is\ndeliberately not gated on continue_if_disk_secure_erase_fails, because a\nverified discard is an erase and not a weaker substitute for one.\n\nWhether the device really zeroes is established by measurement rather than\nby asking, because the sysfs attributes which look like they would answer\nthe question do not: queue/discard_zeroes_data has reported a constant 0\nsince kernel 4.12, and queue/write_zeroes_max_bytes describes WRITE\nZEROES, which libata does not offer. A recognisable pattern is written to\nthe sampled positions first, so that reading zeroes back proves the\ndiscard removed data which was really there, rather than passing on a\ndevice which was already zeroed.\n\nA secure discard is attempted before a plain one, so devices implementing\nBLKSECDISCARD give a stronger guarantee than the verification alone. Any\nfailure to discard, or to prove the result, reports no success and leaves\nthe pre-existing shred handling to decide what happens. The sampling is a\nsample: it establishes that the mechanism works on the device, not that\nevery block was visited.\n\nThe bulk of this change was written by the tool named below from a\ndescription of the failure, the hardware evidence and the design\nconstraints, then reviewed and corrected by hand. The reworked parts are\nthe placement of the call site, dropping blkdiscard --force so the default\nO_EXCL check is kept, the pattern written before the discard, and the\nsample offsets, which in the first version collapsed onto fewer positions\nthan intended on small devices.\n\nCloses-Bug: #2163748\nGenerated-By: Claude Opus 5\n\nChange-Id: I4359385b850ea5d737b0d766306b77b91f99fea5\nSigned-off-by: Timon Schnell \u003ctimon.schnell@btc-it-services.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ironic-python-agent/commit/219e19e8c8ca1c169bfbecd68001f06a0e2366dd"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/ironic-python-agent/commit/219e19e8c8ca1c169bfbecd68001f06a0e2366dd"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY"},{"label":"Backport-Candidate","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Backport-Candidate","description":"Backport candidate status","status":"NOT_APPLICABLE","is_legacy":false,"applicability_expression_result":{"fulfilled":false,"status":"FAIL"},"submittability_expression_result":{"expression":"is:true","fulfilled":true,"status":"NOT_EVALUATED","passing_atoms":[],"failing_atoms":[],"atom_explanations":{}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
