Error adding new Dataset

I recently upgraded to Dragonfish-24.04.2, and tried to add a new dataset under my main pool like I usually do, but I get the following error:

[EINVAL] filesystem.add_to_acl.path: The specified path is a ZFS pool mountpoint "(/mnt/poolname)"

I’ve never had this problem before. Can someone point me in the right direction?

What did you enter for the dataset name?

TimeMachine

I am selecting SMB for the dataset preset by the way.

Please upload some screenshots of dataset page with the main expanded and maybe the page you are adding it on.

Hi SmallBarky. Thanks for checking this out. Here’s the full output of the error message as well.

 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 587, in do_create
    acl_to_set = await self.middleware.call('filesystem.get_inherited_acl', {
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1564, in call
    return await self._call(
           ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1428, 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 1321, 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/schema/processor.py", line 191, in nf
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/plugins/filesystem_/acl_linux.py", line 863, in get_inherited_acl
    verrors.check()
  File "/usr/lib/python3/dist-packages/middlewared/service_exception.py", line 70, in check
    raise self
middlewared.service_exception.ValidationErrors: [EINVAL] filesystem.add_to_acl.path: The specified path is a ZFS pool mountpoint "(/mnt/poolio)" 


How full is your pool? 18.64 TiB / 2.24TiB Free. You are probably at the 90% mark. Below %80 is recommended for regular data. %50 for block type storage.

I don’t know if that is your problem but that is another problem I see.

It’s at 89%. I can try deleting some data, but I have a feeling that’s not the issue. It’s all regular data as far as I know. Not sure how to tell.

SMB SCALE
adding tags?

@essinghigh

At 90% ZFS changes the way it does things and switched to space based optimization. What is your current pool config? Mirrors, Z1, Z2, how many drives and what size. Trying to figure out what options you have for more space.

Have you tried rebooting and attempting adding SMB dataset again?

I am facing a similar issue.
I can create SMB-datasets in my secondary pool but not in my primary (RedPool).
I can create generic datasets in both pools without any problems.
All parameters are set at default, is makes not difference if the checkbox to create a share is unchecked. I have tried different dataset names with no difference.
RedMirror is at 40% utilisation and I have tried a reboot with no difference.

Error:

[EINVAL] filesystem.add_to_acl.path: The specified path is a ZFS pool mountpoint “(/mnt/RedMirror)”

Details:

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 587, in do_create
acl_to_set = await self.middleware.call(‘filesystem.get_inherited_acl’, {
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1564, in call
return await self._call(
^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1428, 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 1321, 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/schema/processor.py”, line 191, in nf
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/middlewared/plugins/filesystem
/acl_linux.py", line 863, in get_inherited_acl
verrors.check()
File “/usr/lib/python3/dist-packages/middlewared/service_exception.py”, line 70, in check
raise self
middlewared.service_exception.ValidationErrors: [EINVAL] filesystem.add_to_acl.path: The specified path is a ZFS pool mountpoint “(/mnt/RedMirror)”

Can’t see that causing a problem with creating datasets though

Maybe time for a bug report?

1 Like

Yup, not 90%. Have seen issues with 98-99%, but 90 is plenty for a dataset.

This smells like a bug.

1 Like

I’ve created bug [NAS-130413] - iXsystems TrueNAS Jira

1 Like

This sounds like an apps related problem on the backend (webui doesn’t use this endpoint). Do you have an app directly consuming that entire pool?

No, I don’t have an app that consumes the entire pool (as in /mnt/RedMirror/).
I do have apps that consumes files/dirs in the RedMirror dataset but I have had this for many years without issues.
The problem only occurs when creating SMB-datasets at the root of the pool. If I create a generic dataset at the root I can create a SMB-dataset as child to the generic dataset without problems.

EDIT: The forum does not allow me to post more than 3 replies in a thread due to being a new user…
Anyway, I’ve enabled apt and dpkg to install the gasket driver for the Google Coral TPU (GitHub - google/gasket-driver).

I see that you have modified the base OS (developer mode). What changes have you made to it?

2 Likes

Okay. I see the problem.

It looks like you initially set an ACL on /mnt/RedMirror to grant the equivalent of 0o770, then you performed a chmod of 0o755 on top of it. We don’t allow modifying ACL on top-level datasets via API or GUI so it would have been a manual change. This has made permissions there wonky and also caused the dataset as being flagged as having an ACL.

There’s a logic error here when we’re trying to create new dataset in this particular situation. I’ll fix for electric eel, but you really need to just remove the ACL from /mnt/RedMirror. It’s literally doing nothing for you other than causing problems.

2 Likes

What do you think about the issue I’m having? I haven’t made any modifications to my OS.