Adding full disk without partitioning to raidz2 pool breaks Storage UI

Description

I had a disk fail. I replaced the disk by using zfs commands from the command line. I didn’t partition the new disk, I added it to the pool as a whole disk. Now the Storage UI breaks with the following traceback:

Error: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/middlewared/main.py", line 204, in call_method result = await self.middleware._call(message['method'], serviceobj, methodobj, params, app=self) File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1344, in _call return await methodobj(*prepared_call.args) File "/usr/lib/python3/dist-packages/middlewared/schema.py", line 1246, in nf res = await f(*args, **kwargs) File "/usr/lib/python3/dist-packages/middlewared/schema.py", line 1378, in nf return await func(*args, **kwargs) File "/usr/lib/python3/dist-packages/middlewared/service.py", line 927, in query result = await self.middleware.call( File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1395, in call return await self._call( File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1344, in _call return await methodobj(*prepared_call.args) File "/usr/lib/python3/dist-packages/middlewared/schema.py", line 1378, in nf return await func(*args, **kwargs) File "/usr/lib/python3/dist-packages/middlewared/plugins/datastore/read.py", line 165, in query result = await self._queryset_serialize( File "/usr/lib/python3/dist-packages/middlewared/plugins/datastore/read.py", line 217, in _queryset_serialize return [ File "/usr/lib/python3/dist-packages/middlewared/plugins/datastore/read.py", line 218, in <listcomp> await self._extend(data, extend, extend_context, extend_context_value, select) File "/usr/lib/python3/dist-packages/middlewared/plugins/datastore/read.py", line 231, in _extend data = await self.middleware.call(extend, data, extend_context_value) File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1395, in call return await self._call( File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1355, in _call return await self.run_in_executor(prepared_call.executor, methodobj, *prepared_call.args) File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1258, in run_in_executor return await loop.run_in_executor(pool, functools.partial(method, *args, **kwargs)) File "/usr/lib/python3.9/concurrent/futures/thread.py", line 52, in run result = self.fn(*self.args, **self.kwargs) File "/usr/lib/python3/dist-packages/middlewared/plugins/pool.py", line 606, in pool_extend pool |= self.middleware.call_sync('pool.pool_normalize_info', pool['name']) File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1414, in call_sync return self.run_coroutine(methodobj(*prepared_call.args)) File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1454, in run_coroutine return fut.result() File "/usr/lib/python3.9/concurrent/futures/_base.py", line 433, in result return self.__get_result() File "/usr/lib/python3.9/concurrent/futures/_base.py", line 389, in __get_result raise self._exception File "/usr/lib/python3/dist-packages/middlewared/schema.py", line 1378, in nf return await func(*args, **kwargs) File "/usr/lib/python3/dist-packages/middlewared/schema.py", line 1246, in nf res = await f(*args, **kwargs) File "/usr/lib/python3/dist-packages/middlewared/plugins/pool.py", line 571, in pool_normalize_info 'topology': await self.middleware.call('pool.transform_topology', info['groups']), File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1395, in call return await self._call( File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1355, in _call return await self.run_in_executor(prepared_call.executor, methodobj, *prepared_call.args) File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1258, in run_in_executor return await loop.run_in_executor(pool, functools.partial(method, *args, **kwargs)) File "/usr/lib/python3.9/concurrent/futures/thread.py", line 52, in run result = self.fn(*self.args, **self.kwargs) File "/usr/lib/python3/dist-packages/middlewared/plugins/pool.py", line 508, in transform_topology x[key] = self.transform_topology(x[key], dict(options, geom_scan=False)) File "/usr/lib/python3/dist-packages/middlewared/plugins/pool.py", line 511, in transform_topology x[i] = self.transform_topology(x[i], dict(options, geom_scan=False)) File "/usr/lib/python3/dist-packages/middlewared/plugins/pool.py", line 508, in transform_topology x[key] = self.transform_topology(x[key], dict(options, geom_scan=False)) File "/usr/lib/python3/dist-packages/middlewared/plugins/pool.py", line 511, in transform_topology x[i] = self.transform_topology(x[i], dict(options, geom_scan=False)) File "/usr/lib/python3/dist-packages/middlewared/plugins/pool.py", line 492, in transform_topology disk = self.middleware.call_sync('disk.label_to_disk', *args) File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1425, in call_sync return methodobj(*prepared_call.args) File "/usr/lib/python3/dist-packages/middlewared/plugins/disk_/disk_info.py", line 122, in label_to_disk return self.get_disk_from_partition(part_disk) if part_disk else None File "/usr/lib/python3/dist-packages/middlewared/plugins/disk_/disk_info.py", line 128, in get_disk_from_partition with open(os.path.join('/sys/class/block', part_name, 'partition'), 'r') as f: FileNotFoundError: [Errno 2] No such file or directory: '/sys/class/block/sdb/partition'

I may just try to remove the disk from the pool, wipe it and it via the web UI again to fix this, but I wanted to report it to you first.

Problem/Justification

None

Impact

None

Activity

Show:

William Gryzbowski July 14, 2023 at 3:34 PM

Operations not made through TrueNAS are not supported.

Thanks for the report though.

Automation for Jira July 8, 2023 at 9:21 AM

Thank you for submitting this TrueNAS Bug Report! So that we can quickly investigate your issue, please attach a Debug file and any other information related to this issue through our secure and private upload service below. Debug files can be generated in the UI by navigating to System -> Advanced -> Save Debug.

https://ixsystems.atlassian.net/servicedesk/customer/portal/15/group/37/create/153

Behaves as Intended
Pinned fields
Click on the next to a field label to start pinning.

Details

Assignee

Reporter

Components

Fix versions

Affects versions

Priority

More fields

Katalon Platform

Created July 8, 2023 at 9:21 AM
Updated February 27, 2025 at 9:27 PM
Resolved July 14, 2023 at 3:34 PM