Smartctl Error, Phantom Disk, and Cronjob Errors Introduced in 25.10 and Following

Since upgrading to 25.10 (and the next point release), I have been receiving this error. I believe it is related to a HDD that failed, that I replaced. Here is the phantom disk or the disk in question:

November_25_2025_13h_36m_24

Here is the Pool that I have that is healthy:

And here is the cronjob that runs every day to send me an error:

The command:

midclt call disk.smart_test SHORT '["*"]'

Produced the following output:

[EFAULT] ['smartctl', '/dev/sde', '-t', 'short'] failed for sde (1):

Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/middlewared/api/base/server/ws_handler/rpc.py", line 360, in process_method_call
result = await method.call(app, id_, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/middlewared/api/base/server/method.py", line 57, in call
result = await self.middleware.call_with_audit(self.name, self.serviceobj, methodobj, params, app,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/middlewared/main.py", line 954, in call_with_audit
result = await self._call(method, serviceobj, methodobj, params, app=app,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/middlewared/main.py", line 782, 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 665, in run_in_executor
return await loop.run_in_executor(pool, functools.partial(method, *args, **kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/middlewared/plugins/disk_/smart.py", line 18, in smart_test
raise CallError("\n\n".join(errors))
middlewared.service_exception.CallError: [EFAULT] ['smartctl', '/dev/sde', '-t', 'short'] failed for sde (1):

If you don't wish to receive these e-mails, please go to your Cron Job options and check "Hide Standard Output" and "Hide Standard Error" checkboxes.

Now, I don’t want to simply disable the cronjob from running: I would like to know how to remove (or hide or whatever) the phantom disk or troubleshoot this further. I don’t know where to begin. Any input from others facing the same issue or those who might be able to share better insight to troubleshoot, please let me know.

Thanks, Matt

Also, I failed to note that this started with upgrading to 25.10 and to the next point release.

how does your cronjob for the smart test look like
like this

midclt call disk.smart_test SHORT '["*"]'

or

midclt call disk.smart_test SHORT '["sda,sdb,sdc,sdd,sde"]'

?
If sde was once a disk but got removed, but is still part of the cronjob, all you may have to do is to adjust your cronjob

And as the error states, you can disable the output.

Edit: 25.10 removed the old smart menu and how smart tests are set up. Your old smart tests got migrated to cronjobs when you updated from 25.04 to 25.10

admin@truenas[~]$ midclt call disk.smart_test SHORT ‘[“*”]’
[EFAULT] [‘smartctl’, ‘/dev/sde’, ‘-t’, ‘short’] failed for sde (1):

Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/middlewared/api/base/server/ws_handler/rpc.py”, line 360, in process_method_call
result = await method.call(app, id_, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/api/base/server/method.py”, line 57, in call
result = await self.middleware.call_with_audit(self.name, self.serviceobj, methodobj, params, app,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 954, in call_with_audit
result = await self._call(method, serviceobj, methodobj, params, app=app,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 782, 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 665, in run_in_executor
return await loop.run_in_executor(pool, functools.partial(method, *args, **kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.11/concurrent/futures/thread.py”, line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/middlewared/plugins/disk
/smart.py", line 18, in smart_test
raise CallError(“\n\n”.join(errors))
middlewared.service_exception.CallError: [EFAULT] [‘smartctl’, ‘/dev/sde’, ‘-t’, ‘short’] failed for sde (1):

For the second

I get a null output.

I really don’t want to “Hide Standard Errors” because I don’t know what is the burden of determining what is an okay error and what isn’t. That seems like a bad policy to start down.

How can I get rid of this disk in that’s throwing the error in the first place - I don’t seem to be able to unmount it or determine if something else is broken (ie, attached to that disk somehow). Here is what I see when I try to remove the disk: