)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"c7b924ff26f5fbd427a058bd1b7636b90c7c50b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"10b52e84_e1bdf108","updated":"2026-06-18 15:53:45.000000000","message":"Hi Silvan, just a nit for you to consider.","commit_id":"466e7a1895102846b7cc0869edcb7cb5865d3659"},{"author":{"_account_id":38081,"name":"Anthony Galica","display_name":"agalica","email":"anthony.galica@hitachivantara.com","username":"agalica","status":"Hitachi Vantara"},"change_message_id":"2fde45b8ddfef53868210d638c094348282e6b35","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"498cca0e_186f06b3","updated":"2026-07-17 15:40:10.000000000","message":"Small patch, release notes, CI.  Always nice to drop dependencies.  LGTM.","commit_id":"86126107df7258f9761fbcf8c1e845f7a1729142"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"2ed21fc11ad4e895af098ca9b345480bdfc6fba3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"c96560ca_8f87e505","updated":"2026-06-30 12:26:58.000000000","message":"run-Quobyte CI","commit_id":"86126107df7258f9761fbcf8c1e845f7a1729142"}],"cinder/volume/drivers/quobyte.py":[{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"c7b924ff26f5fbd427a058bd1b7636b90c7c50b8","unresolved":true,"context_lines":[{"line_number":810,"context_line":"        with QuobyteDriver.read_proc_mount() as proc_mount:"},{"line_number":811,"context_line":"            for line in proc_mount:"},{"line_number":812,"context_line":"                fields \u003d line.split()"},{"line_number":813,"context_line":"                if len(fields) \u003c 3:"},{"line_number":814,"context_line":"                    continue"},{"line_number":815,"context_line":"                device, mountpoint, fstype \u003d ("},{"line_number":816,"context_line":"                    self._unescape_proc_mount_field(f) for f in fields[:3])"}],"source_content_type":"text/x-python","patch_set":2,"id":"4b0a7ee0_845bcdd6","line":813,"updated":"2026-06-18 15:53:45.000000000","message":"Is this guard really necessary? I believe /proc/mounts will always have more than 3 fields due to its fixed structure. Also, I checked for references in Cinder and other projects [1][2][3], but couldn\u0027t find anything related to this.\n\n[1] https://opendev.org/openstack/os-brick/src/commit/379b7a5fe27ee22148fe48b68c454059485b8ec9/os_brick/remotefs/remotefs.py#L90\n[2] https://opendev.org/openstack/nova/src/commit/d5a4e2b56cf5662204f108560c9e4a3a4f8ee3d5/nova/virt/libvirt/utils.py#L597\n[3] https://opendev.org/openstack/swift/src/commit/bab1688e2c91cb9866c714ee77bb8c45f6885e7b/swift/common/middleware/recon.py#L106","commit_id":"466e7a1895102846b7cc0869edcb7cb5865d3659"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"d325884f3afcdc477b42549424e85ad5fd8fdd61","unresolved":true,"context_lines":[{"line_number":810,"context_line":"        with QuobyteDriver.read_proc_mount() as proc_mount:"},{"line_number":811,"context_line":"            for line in proc_mount:"},{"line_number":812,"context_line":"                fields \u003d line.split()"},{"line_number":813,"context_line":"                if len(fields) \u003c 3:"},{"line_number":814,"context_line":"                    continue"},{"line_number":815,"context_line":"                device, mountpoint, fstype \u003d ("},{"line_number":816,"context_line":"                    self._unescape_proc_mount_field(f) for f in fields[:3])"}],"source_content_type":"text/x-python","patch_set":2,"id":"255a47df_9d802a2f","line":813,"in_reply_to":"22d535bf_165a9c77","updated":"2026-06-19 13:20:10.000000000","message":"Hi Fernando, thanks for taking a look!\nThis was primarily to prevent possible failures, I am not absolutely sure about the always more than three point. However you\u0027re correct in that this is handled differently in your referenced locations, w/o the field number checking, so I am fine with removing it. I\u0027ll update shortly.\n\nI think a rstrip() should not be needed as the default whitespace separator will have the required effect already with split().","commit_id":"466e7a1895102846b7cc0869edcb7cb5865d3659"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"68d9228ffc5deab955f9168d3b9416e0a72a00f8","unresolved":false,"context_lines":[{"line_number":810,"context_line":"        with QuobyteDriver.read_proc_mount() as proc_mount:"},{"line_number":811,"context_line":"            for line in proc_mount:"},{"line_number":812,"context_line":"                fields \u003d line.split()"},{"line_number":813,"context_line":"                if len(fields) \u003c 3:"},{"line_number":814,"context_line":"                    continue"},{"line_number":815,"context_line":"                device, mountpoint, fstype \u003d ("},{"line_number":816,"context_line":"                    self._unescape_proc_mount_field(f) for f in fields[:3])"}],"source_content_type":"text/x-python","patch_set":2,"id":"86597bef_32154790","line":813,"in_reply_to":"255a47df_9d802a2f","updated":"2026-06-19 14:46:45.000000000","message":"Done","commit_id":"466e7a1895102846b7cc0869edcb7cb5865d3659"},{"author":{"_account_id":30555,"name":"Fernando Ferraz","display_name":"Fernando Ferraz","email":"fesilva@redhat.com","username":"fernandoperches"},"change_message_id":"bb6b838d44fb8ca478d518b629de272ec57633dc","unresolved":true,"context_lines":[{"line_number":810,"context_line":"        with QuobyteDriver.read_proc_mount() as proc_mount:"},{"line_number":811,"context_line":"            for line in proc_mount:"},{"line_number":812,"context_line":"                fields \u003d line.split()"},{"line_number":813,"context_line":"                if len(fields) \u003c 3:"},{"line_number":814,"context_line":"                    continue"},{"line_number":815,"context_line":"                device, mountpoint, fstype \u003d ("},{"line_number":816,"context_line":"                    self._unescape_proc_mount_field(f) for f in fields[:3])"}],"source_content_type":"text/x-python","patch_set":2,"id":"22d535bf_165a9c77","line":813,"in_reply_to":"4b0a7ee0_845bcdd6","updated":"2026-06-18 16:15:34.000000000","message":"Is this due to trailing newlines? If so, I believe you could use rstrip() instead of checking for the number of fields.","commit_id":"466e7a1895102846b7cc0869edcb7cb5865d3659"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"82041f30fa86d76ac46101eb8c0a2dcb27a46e17","unresolved":true,"context_lines":[{"line_number":805,"context_line":"        return (field.replace(r\u0027\\040\u0027, \u0027 \u0027).replace(r\u0027\\011\u0027, \u0027\\t\u0027)"},{"line_number":806,"context_line":"                .replace(r\u0027\\012\u0027, \u0027\\n\u0027).replace(r\u0027\\134\u0027, \u0027\\\\\u0027))"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"    def _validate_volume(self, mount_path):"},{"line_number":809,"context_line":"        \"\"\"Runs a number of tests on the expect Quobyte mount\"\"\""},{"line_number":810,"context_line":"        with QuobyteDriver.read_proc_mount() as proc_mount:"},{"line_number":811,"context_line":"            for line in proc_mount:"},{"line_number":812,"context_line":"                fields \u003d line.split()"},{"line_number":813,"context_line":"                device, mountpoint, fstype \u003d ("}],"source_content_type":"text/x-python","patch_set":4,"id":"79f248de_749c50a2","line":810,"range":{"start_line":808,"start_character":0,"end_line":810,"end_character":59},"updated":"2026-07-29 13:55:43.000000000","message":"Can you explain why `disk_partitions()` does not meet your requirements, and what\u0027s the problem you\u0027re trying to solve? If you need to replace it, please define a function with the same signature but with the desired behavior, so you only need to change the function name in your calls.","commit_id":"86126107df7258f9761fbcf8c1e845f7a1729142"},{"author":{"_account_id":13915,"name":"Silvan Kaiser","email":"silvan@quobyte.com","username":"kaisers"},"change_message_id":"2900f41c01d731235f05ef3784100bb922d21d6f","unresolved":false,"context_lines":[{"line_number":805,"context_line":"        return (field.replace(r\u0027\\040\u0027, \u0027 \u0027).replace(r\u0027\\011\u0027, \u0027\\t\u0027)"},{"line_number":806,"context_line":"                .replace(r\u0027\\012\u0027, \u0027\\n\u0027).replace(r\u0027\\134\u0027, \u0027\\\\\u0027))"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"    def _validate_volume(self, mount_path):"},{"line_number":809,"context_line":"        \"\"\"Runs a number of tests on the expect Quobyte mount\"\"\""},{"line_number":810,"context_line":"        with QuobyteDriver.read_proc_mount() as proc_mount:"},{"line_number":811,"context_line":"            for line in proc_mount:"},{"line_number":812,"context_line":"                fields \u003d line.split()"},{"line_number":813,"context_line":"                device, mountpoint, fstype \u003d ("}],"source_content_type":"text/x-python","patch_set":4,"id":"95021a6c_082e213e","line":810,"range":{"start_line":808,"start_character":0,"end_line":810,"end_character":59},"in_reply_to":"79f248de_749c50a2","updated":"2026-07-30 12:44:34.000000000","message":"Motivation was not missed requirements but the removal of psutil (initially in [1] but there were more follow ups on pulling it from e.g. the driver requirements in the last cycle).\nI can adapt the method to more directly replace the disk_partitions original.\n\n[1] https://review.opendev.org/c/openstack/cinder/+/916154","commit_id":"86126107df7258f9761fbcf8c1e845f7a1729142"}]}
