Dataset Share Types

Beemer533

Dabbler
Joined
Sep 29, 2018
Messages
27
I have a question for folks as I am trying to get my FreeNAS set up properly:

After I created my first pool I don't get the option to set the share type, and when I try to change the share type to "Windows" under edit options, I always get this error: (I've deleted and added the pool several times with the same results)
Capture.PNG


Code:
Error: Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/middlewared/plugins/zfs.py", line 305, in do_update
    dataset.properties[k] = prop
  File "libzfs.pyx", line 374, in libzfs.ZFS.__exit__
  File "/usr/local/lib/python3.6/site-packages/middlewared/plugins/zfs.py", line 294, in do_update
    prop.value = v['value']
  File "libzfs.pyx", line 1069, in libzfs.ZFSProperty.value.__set__
libzfs.ZFSException: use 'none' to disable quota/refquota

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/middlewared/main.py", line 165, in call_method
    result = await self.middleware.call_method(self, message)
  File "/usr/local/lib/python3.6/site-packages/middlewared/main.py", line 1141, in call_method
    return await self._call(message['method'], serviceobj, methodobj, params, app=app, io_thread=False)
  File "/usr/local/lib/python3.6/site-packages/middlewared/main.py", line 1081, in _call
    return await methodobj(*args)
  File "/usr/local/lib/python3.6/site-packages/middlewared/service.py", line 289, in update
    f'{self._config.namespace}.update', self, self.do_update, [id, data]
  File "/usr/local/lib/python3.6/site-packages/middlewared/main.py", line 1081, in _call
    return await methodobj(*args)
  File "/usr/local/lib/python3.6/site-packages/middlewared/schema.py", line 664, in nf
    return await f(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/middlewared/plugins/pool.py", line 757, in do_update
    rv = await self.middleware.call('zfs.dataset.update', id, {'properties': props})
  File "/usr/local/lib/python3.6/site-packages/middlewared/main.py", line 1145, in call
    return await self._call(name, serviceobj, methodobj, params, app=app, pipes=pipes, io_thread=True)
  File "/usr/local/lib/python3.6/site-packages/middlewared/main.py", line 1081, in _call
    return await methodobj(*args)
  File "/usr/local/lib/python3.6/site-packages/middlewared/service.py", line 289, in update
    f'{self._config.namespace}.update', self, self.do_update, [id, data]
  File "/usr/local/lib/python3.6/site-packages/middlewared/main.py", line 1095, in _call
    return await run_method(methodobj, *args)
  File "/usr/local/lib/python3.6/site-packages/middlewared/main.py", line 1041, in run_in_thread
    return await self.loop.run_in_executor(executor, functools.partial(method, *args, **kwargs))
  File "/usr/local/lib/python3.6/concurrent/futures/thread.py", line 56, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.6/site-packages/middlewared/schema.py", line 668, in nf
    return f(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/middlewared/plugins/zfs.py", line 309, in do_update
    raise CallError(f'Failed to update dataset: {e}')
middlewared.service_exception.CallError: [EFAULT] Failed to update dataset: use 'none' to disable quota/refquota

Now if I add a nested dataset, I can set that as a windows share type when I create it with no issues.

I'm not sure if this makes sense or I am missing something obvious?

All of the PC in the house are Windows (with the exception of my Raspberry PI for my CNC) so it seems to make sense that all my shares should be set to windows. From what I understand it also isn't a good idea to mix share types (this is what the Freenas documentation describes)

Maybe I'm misunderstanding (probably ;) )
 

Ericloewe

Server Wrangler
Moderator
Joined
Feb 15, 2014
Messages
20,194
Do you get the error when trying to change it on the top-level dataset? Because that would be a terrible idea and would break a lot of things.
 

Beemer533

Dabbler
Joined
Sep 29, 2018
Messages
27
Yep, that would be the case! Thanks for the reply.

I guess when I read that you shouldn't mix share types I didn't understand that it didn't apply to the top level.
 

Ericloewe

Server Wrangler
Moderator
Joined
Feb 15, 2014
Messages
20,194
Now that I'm not on my phone, let me elaborate:

Sharing a single dataset via multiple methods is somewhere between "tricky" and "outright impossible", depending on what you're looking to do. It is definitely best avoided.

That is a separate issue from the top-level dataset. It shouldn't be shared at all and its permissions should not be messed with. Basically, don't change anything at the top level (except for compression and maybe block sizes and quotas and stuff) - create as many datasets as you need as children of the top-level dataset and share (or don't share) those as necessary.
 

Beemer533

Dabbler
Joined
Sep 29, 2018
Messages
27
Excellent, thanks for the explanation, very much appreciated.
 
Top