UTF-8 translation support

The z/OS NFS server provides minimal support for UTF-8 translation from clients. To enable this support set the cln_ccsid(1208) attribute on an NFSv4 text mode mount. Server side CCSIDs are single-byte character sets, so can represent only a subset of UTF-8, choose and set the appropriate srv_ccsid attribute to represent the characters that will be used in your data. The convserv attribute determines what happens with characters that cannot make a round trip between UTF-8 and the server CCSID.

When the UTF-8 code page, cln_ccsid(1208), is set as the mount parameter then the z/OS NFS Server uses the following rules regarding file tagging:
  • If a binary tag is set for the file then no translation is performed
  • If a text tag is set for the file then the z/OS NFS Server uses the file tag as the source code page for translation on read operations and as the target code page on write operations.
Example of a mount with translation from UTF-8 code page 1208 to EBCDIC code page 1141:
mount -o vers=4 
mvsnfs:'/hfs/u/user,text,cln_ccsid(1208),srv_ccsid(1141)' 
'/u/nfsdir'
General restrictions:
  1. cln_ccsid(1208) may only be specified on the mount command
  2. UTF-8 translation requires the NFS version 4 protocol.
  3. Locking of any kind is unsupported during operations involving UTF-8 translation.
  4. The z/OS NFS client does not support UTF-8 translation.
  5. Only one writer is permitted to a UTF-8 file within the current open-close context. Multiple readers are permitted provided there are no writers.
  6. File update and append (operations that require seeking) are not supported for mounts that specified cln_ccsid(1208). Only sequential writes from the beginning to the end of the file are supported.
  7. Because UTF-8 is a variable multi-byte encoding, UTF-8 files must be read for size in order to return accurate file sizes to NFS clients. This may result in decreased performance, particularly when dealing with large files. Using SMS-managed storage may reduce this impact.
  8. Sparse files are not supported.
MVS dataset-specific restrictions:
  1. For fastfilesize mode the z/OS NFS server estimates the UTF-8 file size to be four times the non-UTF-8 file size.
  2. UTF-8 data is cached on the server before translation to the server code page. The bufhigh and percentsteal attributes may need to be adjusted to accommodate the changes to memory consumption when processing UTF-8 files.
z/OS UNIX file-specific restrictions
  1. An entire file cache is used so additional auxiliary storage (page data sets) should be provided. Expect this file cache to consume approximately the total UTF-8 size of all concurrently opened UTF-8 files in virtual 64-bit storage. This file cache storage is freed when the hfsfbtimeout occurs.
  2. A client cannot both read from and write to a UTF-8 file within the current open-close context.