Specifying Unicode Versions
Oracle Solaris 11.4 SRU 51 introduces Unicode Version 14.0.0 for ZFS file system namespaces in ZFS file system Version 8 and ZFS pool Version 49.
The Unicode 14.0.0 update controls case-sensitivity and normalization only. Regardless of the version, you can use any Unicode character in a file name.
To use the Unicode 14.0.0 mappings, you must upgrade existing ZFS pools and then create a ZFS file system that sets the unicode
property value to 14.0.0. Upgrade to at least ZFS pool Version 49 and ZFS file system Version 8, as follows:
% zpool upgrade -v|grep Unicode 49 Support for Unicode versioning % zfs upgrade -v|grep Unicode 8 Support for Unicode versioning
ZFS version upgrades affect the mounting of file systems as well as the sending and receving of data streams. An updated file system can mount Unicode 5.0.0 and 14.0.0 file systems, and send and receive Unicode 5.0.0 and 14.0.0 data streams. However, a legacy ZFS file system can mount only a Unicode 5.0.0 file system, and send and receive only Unicode 5.0.0 data streams.
The following example shows how Unicode versions are assigned after upgrading to ZFS file system Version 8 and ZFS pool Version 49:
% zpool create pool % zfs create -o unicode=5.0.0 pool/fs % zfs create pool/fs14 % zfs create pool/fs/child % zfs list -o name,unicode -r pool NAME UNICODE pool 14.0.0 pool/fs 5.0.0 pool/fs/child 5.0.0 pool/fs14 14.0.0
The ZFS file system version determines the default Unicode version and which Unicode versions you can specify. As a result, you can use the version property to indirectly specify the Unicode version.
The following example shows that creating a file system with ZFS file system Version 7 uses Unicode 5.0.0 because it's the only available Unicode version:
% zfs create -o version=7 pool/fs_v7 % zfs get unicode pool/fs_v7 NAME PROPERTY VALUE SOURCE pool/fs_v7 unicode 5.0.0 -
This example shows that creating a file system with ZFS file system Version 8 uses Unicode 14.0.0 because it's the latest available Unicode version:
% zfs create -o version=8 pool/fs_v8 % zfs get unicode pool/fs_v8 NAME PROPERTY VALUE SOURCE pool/fs_v8 unicode 14.0.0 -
The following example shows how you can specify both the unicode
property and the version
property to create ZFS file systems. The first command shows that you can specify the Unicode version (5.0.0) that matches the ZFS file system version (7) to create the pool/fs_v7
file system. The second command fails to create pool/fs_v7_14
when you specify a Unicode version (14.0.0) that does not match the ZFS file system version (7).
% zfs create -o version=7 -o unicode=5.0.0 pool/fs_v7 % zfs create -o version=7 -o unicode=14.0.0 pool/fs_v7_14 cannot create 'pool/fs_v7_14': requested property incompatible with filesystem version