Can anyone suggest what this disk mount error message is trying to tell me?

I am running Truenas 25.04.1 and receive the error message below while trying to add a disk to a pool. While troubleshooting I tried to create a new pool, changed which bay it was in and rebooted the server. I am doing a shutdown and restart on the Truenas server not hot swapping the disk if that matters.

I then connected the disk via USB to a desktop and ran the Seagate Tools long test on it. The test came back fine. I was also able to use the disk on the desktop with no issues.

The disk is a warranty replacement from Seagate that I wanted to test before I put it on the shelf as a future replacement. I need to know if Truenas is telling me it is bad even though the Seagate utility says it is ok.

These are the only errors I receive. Since the disk won’t mount I can’t run a SMART test on it.
Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/middlewared/job.py”, line 515, in run
await self.future
File “/usr/lib/python3/dist-packages/middlewared/job.py”, line 560, in run_body
rv = await self.method(*args)
^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/service/crud_service.py”, line 287, in
nf
rv = await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 48, in nf
res = await f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 174, in nf
return await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/middlewared/plugins/pool
/pool.py", line 762, in
do_update
await self.middleware.call(‘pool.format_disks’, job, disks, 0, 80)
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1000, in call
return await self.call(
^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 715, in call
return await methodobj(*prepared_call.args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/middlewared/plugins/pool
/format_disks.py", line
29, in format_disks
await asyncio_map(unlock_and_format_disk, disks.items(), limit=16)
File "/usr/lib/python3/dist-packages/middlewared/utils/asyncio
.py", line 19, in
asyncio_map
return await asyncio.gather(*futures)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/middlewared/utils/asyncio
.py", line 16, in func
return await real_func(arg)
^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/plugins/pool_/format_disks.py”, line
24, in unlock_and_format_disk
await self.middleware.call(‘disk.format’, disk, config.get(‘size’))
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1000, in call
return await self._call(
^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 726, in callreturn await self.run_in_executor(prepared_call.executor, methodobj,
*prepared_call.args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 619, 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
/format.py", line 33, in
format
self.middleware.call_sync(‘disk.wipe’, disk, ‘QUICK’,
False).wait_sync(raise_error=True)
File “/usr/lib/python3/dist-packages/middlewared/job.py”, line 487, in wait_sync
raise CallError(self.error)
middlewared.service_exception.CallError: [EFAULT] [Errno 5] Input/output error

Hot swapping (unused) disks is fine.

Can you try inserting the disk while watching the console? You should see a message pop up briefly about adding the device. If you do not then the kernel is not seeing the disk. Time to chase down cables and controller.

P.S. I assume when you bring the list of DISKS up in the GUI the drive you are trying to use does not appear on that list? STORAGE → DISKS in the upper right.

Thanks for the suggestions.

The device does appear in Storage Disks. The error comes after I click add and try to add it to either a new pool or the existing pool. In both cases I get the error.

That implies that the OS can see the drive but that it cannot actually do I/O to the drive.

If you select the drive in the DISKS list, can you WIPE it ?

To summarize, disk is reconditions from Seagate ( as a warranty replacement, I have gotten them and had very goo luck), works in a USB → SATA adapter connected to a workstation (Windows or ???), is seen by TN but TN cannot actually write to it, and you tried different controller ports. Is that correct.

Is the drive behind a SATA port multiplier on the TN box? If so can you get it on a direct SATA port?

The disk is mounted in a bay of the Terramaster NAS. I tried a different bay.

I can’t do a wipe either so the disk must be bad. Here is what mount does.

Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/middlewared/job.py”, line 515, in run
await self.future
File “/usr/lib/python3/dist-packages/middlewared/job.py”, line 560, in _run_body
rv = await self.method(*args)
^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 174, in nf
return await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 48, in nf
res = await f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/middlewared/plugins/disk
/wipe.py", line 143, in wipe
await self.middleware.run_in_thread(self.wipe_impl, job, dev, mode, event)
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 622, in run_in_thread
return await self.run_in_executor(io_thread_pool_executor, method, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 619, 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
/wipe.py", line 89, in _wipe_impl
os.fsync(f.fileno())
OSError: [Errno 5] Input/output error

But it worked in the USB → SATA adapter … So I keep coming back to the SATA ports in the chassis.

I have a Terramaster JBOD D4-300 and if I leave it connected to my MacBookPro I find various drives unmounted due to lost connectivity (but not all 4) overnight. I wonder if their NAS box uses the same port multiplier internally?

Thanks. I put it back on the USB enclosure and tried it again and that failed this time too. I also noticed that seagate tools shows the serial number and model number were all zeros, so I plan to send it back.

I have it in a Terramaster F6-424 NAS. I tried several bays.

I appreciate your help, but this drive must be hosed.

Some USB enclosures will do that.