Aclmode: failed to get property: <UNKNOWN>. - GoldEye

Hi dear,

I’m getting crazy, I can’t perform almost any action after a fresh install (+ config upload) in GoldEye, almost every command get me back:

RuntimeError: aclmode: failed to get property: <UNKNOWN>.

I think that i broke something ith ACLs, please help me!

Here the full log of the error is this:

Error Name: EINVAL
Error Code: 22
Reason: aclmode: failed to get property: <UNKNOWN>.
Error Class: RuntimeError
Trace: 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 771, in _call
    return await methodobj(*prepared_call.args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/service/crud_service.py", line 196, in delete
    return await self.middleware._call(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 771, in _call
    return await methodobj(*prepared_call.args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/service/crud_service.py", line 214, in nf
    rv = await func(*args, **kwargs)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/api/base/decorator.py", line 108, in wrapped
    result = await func(*args)
             ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/plugins/pool_/dataset.py", line 826, in do_delete
    dataset = await self.get_instance(id_)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/api/base/decorator.py", line 108, in wrapped
    result = await func(*args)
             ^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/service/crud_service.py", line 236, in get_instance
    instance = await self.middleware.call(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1043, in call
    return await self._call(
           ^^^^^^^^^^^^^^^^^
  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/api/base/decorator.py", line 116, in wrapped
    result = func(*args)
             ^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/plugins/pool_/dataset.py", line 161, in query
    return generic_query(
           ^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/plugins/pool_/dataset_query_utils.py", line 1080, in generic_query
    rsrc_iterator(callback=generic_query_callback, state=state)
  File "/usr/lib/python3/dist-packages/middlewared/plugins/pool_/dataset_query_utils.py", line 997, in generic_query_callback
    hdl.iter_filesystems(callback=generic_query_callback, state=state)
  File "/usr/lib/python3/dist-packages/middlewared/plugins/pool_/dataset_query_utils.py", line 920, in generic_query_callback
    info = build_info(hdl, state)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/plugins/pool_/dataset_query_utils.py", line 727, in build_info
    tmp = hdl.asdict(
          ^^^^^^^^^^^
RuntimeError: aclmode: failed to get property: <UNKNOWN>.

I’m a SCALE newbie coming from CORE that I’ve used more than 10 years.

Can you PM me a debug please? This error means that we’re is issuing zfs_prop_get() call and getting an error response back from libzfs without it setting proper error information.

1 Like

Sended

Summary of issue:

Back in 2017 there was a release-that-shall-not-be-named, and among its features was a custom value for the aclmode property (this value does not exist in upstream ZFS or in TrueNAS). In 25.10 we began transitioning to a new python module that, among other things, more accurately when errors occur in libzfs.

I’m making a change for 25.10.1 to include the dataset name in the error message and we’ll include instructions in the release notes on how to fix it. Basically, you need to:

  1. identify the impacted dataset (from the error message in 25.10.1 and later)
  2. run the command zfs set aclmode=passthrough <dataset name>

The presence of the invalid setting for the ZFS aclmode has never been reported as an issue that impacts access or data integrity. In this case ZFS ignores the invalid value and uses the default.

1 Like

I’m glad to be part of the improvement of this software!

Thanks for the support!