I am trying to create a child dataset. and it is giving me an error which I do not understand.
In TrueNAS Scale Dragonfish, fully up to date.
I click on datasets
I click on a dataset called vered.
I click on add dataset. doing so opens this window.
I type “kopia” for the name and click on save button.
this gives the error:
(!) VALIDATION
[EINVAL] pool_dataset_create.aclmode: Must be set to DISCARD when acltype is POSIX or OFF
Error: Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 198, in call_method
result = await self.middleware.call_with_audit(message[‘method’], serviceobj, methodobj, params, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1466, in call_with_audit
result = await self._call(method, serviceobj, methodobj, params, app=app,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1417, in _call
return await methodobj(*prepared_call.args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/service/crud_service.py”, line 179, in create
return await self.middleware._call(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1417, in call
return await methodobj(*prepared_call.args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/service/crud_service.py”, line 210, in nf
rv = await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 47, in nf
res = await f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 187, in nf
return await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/middlewared/plugins/pool/dataset.py", line 562, in do_create
verrors.check()
File “/usr/lib/python3/dist-packages/middlewared/service_exception.py”, line 70, in check
raise self
middlewared.service_exception.ValidationErrors: [EINVAL] pool_dataset_create.aclmode: Must be set to DISCARD when acltype is POSIX or OFF
For now, as a workaround for the GUI not working, I am just using putty to connect to the server and then using command line.
zfs create
zfs destroy
zfs rename
all work perfectly fine. and allow me to restructure my filesystem to my hearts content. It is just weird that he gui is not working for some reason
IIRC my tank pool was created on solaris. Before being migrated to open solaris when the acquisition debacle happened. then to freeBSD. then a couple of other OS. Then truenas core. then truenas scale (the first one). then each subsequent version of scale when it was released.
Also, the pool was enlarged multiple times. By replacing the drives one at a time with larger drives and resilvering. (it is a mirror. so only 2 drives. very simple to enlarge).
Every single component of the server was replaced multiple times. case, PSU, mobo, everything. And every time I used the trusty “zfs import -f tank” function.
I got a real ship of thesseus here.
although… I might have actually destroyed and recreated it at some point several OSes ago. maybe. I think I didn’t but its possible I did and forgot.
seeing as the acquisition of sun by oracle was in 2010. and i had it for years at that point… this pool is probably nearly 20 years old by now.
Update on this one, we’ve discovered the issue and have a fix ready to go for future releases: [NAS-130877] - iXsystems TrueNAS Jira.
It specifically has to do with an ACL mismatch that can occur with pools created outside of SCALE and imported (which is not visible in the UI).
In the meantime there is a surprisingly simple workaround for anyone running into this problem when trying to create a third level dataset (a child of a child dataset). You just need to click on that second level dataset, click Edit, and click Save on the edit form without making any changes. Then you should be able to create a child of that dataset without issues.
I am not sure if related. but when i used zfs rename (via putty) to rename a top level dataset tank/share (tank being pool name) to a child dataset tank/fam/share something weird happened to its acl.
all the files and folders at the first level of that share were available via smb. but not anything inside subfolders.
that is, I could open
/mnt/tank/fam/share/something.pdf
but going to
/mnt/tank/fam/share/food-recipes/
showed an empty directory or gave an error of not having permission to access the content of said folder.
I tried stripping the acl and reapplying it via gui. did not work.
I tried fiddling with the ACL in various ways and none of them worked.
eventually the only way I could actually access the files in that dataset was to go with the nuclear option of putty into the server and then
chmod -R 777 /mnt/tank/fam/share
which worked, now I can access the files in the share location.
Not very happy at having to do such a thing.
I am hoping that when the fix you posted is released it actually resolves that issue and lets me go back to my preferred permission set of 700