Hey, everyone!
I’m using TrueNAS SCALE version ElectricEel-24.10.2.2.
I want to add a dedicated SLOG device to my RAIDZ3 pool. As the “SLOG Devices” documentation says:
The current TrueNAS project recommendation is a 16 GB SLOG device over-provisioned from larger SSDs to increase the write endurance and throughput of an individual SSD, though this is not the only usable size for SLOG devices.
, so I went go through the “SLOG Over-Provisioning” documentation (mind you the latest available version is for 23.10).
The “Resizing a Disk for Over-Provisioning” section mentions using the storage disk resize
command. It seems that the disks
parameter’s syntax has changed, as when I went to <server_address>/api/docs/restful/#/disk/post_disk_resize
, it says it needs to be a list. Since I was still getting some unknown error via the cli
command, I used this command instead:
midclt call disk.resize '{"disks": [{"name": "nvme0n1", "size": 32}], "sync": true, "raise_error": true}'
When I inspected the output of midclt call core.get_jobs
, I see this output:
{
"id": 452,
"method": "disk.resize",
"arguments": [
{
"disks": [
{
"name": "nvme0n1",
"size": 32
}
],
"sync": true,
"raise_error": true
}
],
"transient": false,
"description": null,
"abortable": false,
"logs_path": null,
"logs_excerpt": null,
"progress": {
"percent": 0,
"description": "",
"extra": null
},
"result": null,
"result_encoding_error": null,
"error": "[EINVAL] disks: Not a list\n",
"exception": "Traceback (most recent call last):\n File \"/usr/lib/python3/dist-packages/middlewared/job.py\", line 509, in run\n await self.future\n File \"/usr/lib/python3/dist-packages/middlewared/job.py\", line 554, in __run_body\n rv = await self.method(*args)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/lib/python3/dist-packages/middlewared/schema/processor.py\", line 178, in nf\n args, kwargs = clean_and_validate_args(args, kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/lib/python3/dist-packages/middlewared/schema/processor.py\", line 172, in clean_and_validate_args\n verrors.check()\n File \"/usr/lib/python3/dist-packages/middlewared/service_exception.py\", line 72, in check\n raise self\nmiddlewared.service_exception.ValidationErrors: [EINVAL] disks: Not a list\n\n",
"exc_info": {
"repr": "ValidationErrors([ValidationError('disks', 'Not a list', 22)])",
"type": "VALIDATION",
"errno": null,
"extra": [
[
"disks",
"Not a list",
22
]
]
},
"state": "FAILED",
"time_started": {
"$date": 1747568891000
},
"time_finished": {
"$date": 1747568891000
},
"credentials": {
"type": "UNIX_SOCKET",
"data": {
"username": "root"
}
}
}
You can see the error is disks: Not a list
. I’ve tried multiple different ways to provide the disks
argument, but it still fails.
Any ideas? My hunch is that there is a bug in the parsing of the JSON arguments (specifically the disks
list).