Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Oct 2017 11:57:29 +0200
From:      Harry Schmalzbauer <freebsd@omnilan.de>
To:        FreeBSD Stable <freebsd-stable@freebsd.org>
Subject:   Re: reboot-less zfs volmode property refresh?
Message-ID:  <59E33109.6010101@omnilan.de>
In-Reply-To: <59E32B56.6050203@omnilan.de>
References:  <59E32B56.6050203@omnilan.de>

next in thread | previous in thread | raw e-mail | index | archive | help
 Bezüglich Harry Schmalzbauer's Nachricht vom 15.10.2017 11:33 (localtime):
>  Hello,
>
> maybe I'm just missing something obvious, but modifying a dataset's
> volmode property seems to force me to reboot the host to have any effect.
>
> Test to reproduce (parent dataset hostPsys/bhyveVOL/sys  has volmode set
> ot "dev"):
>
> 1.) Create new volume with volmode=geom, and write new GPT
>
> zfs create -o volmode=geom -V 10G hostPsys/bhyveVOL/sys/test
> gpart create -s gpt /dev/zvol/hostPsys/bhyveVOL/sys/test
> gpart show -l /dev/zvol/hostPsys/bhyveVOL/sys/test
> =>      40  20971440  zvol/hostPsys/bhyveVOL/sys/test  GPT 
> (10G)                           
>         40  20971440                                    - free -  (10G)
>
> (works as expected)
>
> 2.) Create new volume with volmode=dev, and write new GPT
>
> zfs destroy hostPsys/bhyveVOL/sys/test
> zfs create -V 10G hostPsys/bhyveVOL/sys/test
> gpart create -s gpt
> /dev/zvol/hostPsys/bhyveVOL/sys/test                                             
>
> gpart: arg0 'zvol/hostPsys/bhyveVOL/sys/test': Invalid argument
>
> (fails as expected)
>
> 3.) Modify existing volmode=dev dataset and write new GPT
>
> zfs set volmode=geom
> hostPsys/bhyveVOL/sys/test                                                     
>
> zfs get volmode
> hostPsys/bhyveVOL/sys/test                                                          
>
> NAME                         PROPERTY  VALUE   
> SOURCE                                                                                
>
> hostPsys/bhyveVOL/sys/test  volmode   geom     local
> gpart create -s gpt
> /dev/zvol/hostPsys/bhyveVOL/sys/test                                            
>
> gpart: arg0 'zvol/hostPsys/bhyveVOL/sys/test': Invalid argument
>
> (fails unexpected)
>
> What can I do to let geom(4) know that there's a new device?

Device should read provider.

I found that last sentence in the zfs(8) man page, describing the
volmode property:
»This property can be changed any time, but
so far it is processed only during volume creation and pool import.«

So it seems to be a limitation by design.

re-importing the pool is no option for me, so I'll keep in mind that
changing volmode means outage.

I'm aware that I can utilize ctl(8) to get access to a volmode=dev
volume, also md(4) might help in that case, but for changing
volmode=geom a reboot / re-import was required.

I guess the benefit of extending the implementation design is much to
small to justify the effort.
But I think making "volmode" a creation-only property (like utf8only)
should be considered.

Thanks,

-harry



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?59E33109.6010101>