home | help
ZFS(8)			     System Manager's Manual			  ZFS(8)

NAME
     zfs -- configures ZFS file systems

SYNOPSIS
     zfs [-?]
     zfs create [-p] [-o property=value] ... filesystem
     zfs create [-ps] [-b blocksize] [-o property=value] ... -V size volume
     zfs destroy [-fnpRrv] filesystem|volume
     zfs destroy [-dnpRrv] snapshot[%snapname][,...]
     zfs snapshot [-r] [-o property=value] ...
	 filesystem@snapname|volume@snapname
     zfs rollback [-rRf] snapshot
     zfs clone [-p] [-o property=value] ... snapshot filesystem|volume
     zfs promote clone-filesystem
     zfs rename [-f] filesystem|volume|snapshot filesystem|volume|snapshot
     zfs rename [-f] -p filesystem|volume filesystem|volume
     zfs rename -r snapshot snapshot
     zfs rename -u [-p] filesystem filesystem
     zfs list [-r|-d depth] [-H] [-o property[,...]] [-t type[,...]]
	 [-s property] ... [-S property] ... filesystem|volume|snapshot
     zfs set property=value filesystem|volume|snapshot
     zfs get [-r|-d depth] [-Hp] [-o all | field[,...]] [-t type[,...]]
	 [-s source[,...]] all | property[,...] filesystem|volume|snapshot
     zfs inherit [-rS] property filesystem|volume|snapshot
     zfs upgrade [-v]
     zfs upgrade [-r] [-V version] -a | filesystem
     zfs userspace [-niHp] [-o field[,...]] [-sS field] ... [-t type[,...]]
	 filesystem|snapshot
     zfs groupspace [-niHp] [-o field[,...]] [-sS field] ... [-t type[,...]]
	 filesystem|snapshot
     zfs mount
     zfs mount [-vO] [-o property[,...]] -a | filesystem
     zfs unmount [-f] -a | filesystem|mountpoint
     zfs share -a | filesystem
     zfs unshare -a | filesystem|mountpoint
     zfs send [-DnPpRrv] [-i snapshot | -I snapshot] snapshot
     zfs receive [-vnFu] filesystem|volume|snapshot
     zfs receive [-vnFu] [-d | -e] filesystem
     zfs allow filesystem|volume
     zfs allow [-ldug] everyone|user|group[,...] perm|@setname[,...]
	 filesystem|volume
     zfs allow [-ld] -e perm|@setname[,...] filesystem|volume
     zfs allow -c perm|@setname[,...] filesystem|volume
     zfs allow -s @setname perm|@setname[,...] filesystem|volume
     zfs unallow [-rldug] everyone|user|group[,...] [perm|@setname[,...]]
	 filesystem|volume
     zfs unallow [-rld] -e [perm|@setname[,...]] filesystem|volume
     zfs unallow [-r] -c [perm|@setname[,...]] filesystem|volume
     zfs unallow [-r] -s @setname perm|@setname[,...] filesystem|volume
     zfs hold [-r] tag snapshot ...
     zfs holds [-r] snapshot ...
     zfs release [-r] tag snapshot ...
     zfs diff [-FHt] snapshot [snapshot|filesystem]
     zfs jail jailid filesystem
     zfs unjail jailid filesystem

DESCRIPTION
     The  zfs  command configures ZFS datasets within a ZFS storage pool, as de-
     scribed in zpool(8).  A dataset is identified by a unique path  within  the
     ZFS namespace. For example:

	 pool/{filesystem,volume,snapshot}

     where the maximum length of a dataset name is MAXNAMELEN (256 bytes).

     A dataset can be one of the following:

     file  system   A  ZFS  dataset of type filesystem can be mounted within the
		   standard system namespace and behaves like  other  file  sys-
		   tems. While ZFS file systems are designed to be POSIX compli-
		   ant,  known	issues	exist  that  prevent  compliance in some
		   cases.  Applications that  depend  on  standards  conformance
		   might  fail	due  to  nonstandard behavior when checking file
		   system free space.

     volume	   A logical volume exported as a raw or block device. This type
		   of dataset should only be used under  special  circumstances.
		   File systems are typically used in most environments.

     snapshot	   A  read-only  version  of  a file system or volume at a given
		   point  in  time.  It  is  specified	as  filesystem@name   or
		   volume@name.

   ZFS File System Hierarchy
     A	ZFS  storage  pool is a logical collection of devices that provide space
     for datasets. A storage pool is also the root of the ZFS file system  hier-
     archy.

     The root of the pool can be accessed as a file system, such as mounting and
     unmounting,  taking snapshots, and setting properties. The physical storage
     characteristics, however, are managed by the zpool(8) command.

     See zpool(8) for more information on creating and administering pools.

   Snapshots
     A snapshot is a read-only copy of a file system or volume. Snapshots can be
     created extremely quickly, and initially consume no additional space within
     the pool. As data within the active dataset changes, the snapshot	consumes
     more data than would otherwise be shared with the active dataset.

     Snapshots	can  have arbitrary names. Snapshots of volumes can be cloned or
     rolled back, but cannot be accessed independently.

     File system snapshots can be accessed under the .zfs/snapshot directory  in
     the  root of the file system. Snapshots are automatically mounted on demand
     and may be unmounted at regular intervals. The visibility of the  .zfs  di-
     rectory can be controlled by the snapdir property.

   Clones
     A	clone is a writable volume or file system whose initial contents are the
     same as another dataset. As with snapshots, creating a clone is nearly  in-
     stantaneous, and initially consumes no additional space.

     Clones  can  only be created from a snapshot. When a snapshot is cloned, it
     creates an implicit dependency between the parent and  child.  Even  though
     the  clone is created somewhere else in the dataset hierarchy, the original
     snapshot cannot be destroyed as long as a clone exists. The origin property
     exposes this dependency, and the destroy command lists any  such  dependen-
     cies, if they exist.

     The clone parent-child dependency relationship can be reversed by using the
     promote  subcommand. This causes the "origin" file system to become a clone
     of the specified file system, which makes it possible to destroy  the  file
     system that the clone was created from.

   Mount Points
     Creating  a  ZFS  file  system is a simple operation, so the number of file
     systems per system is likely to be numerous. To cope with this,  ZFS  auto-
     matically	manages mounting and unmounting file systems without the need to
     edit the /etc/fstab  file.  All  automatically  managed  file  systems  are
     mounted by ZFS at boot time.

     By default, file systems are mounted under /path, where path is the name of
     the file system in the ZFS namespace. Directories are created and destroyed
     as needed.

     A	file  system can also have a mount point set in the mountpoint property.
     This directory is created as needed, and ZFS automatically mounts the  file
     system  when  the	"zfs  mount  -a"  command  is  invoked	(without editing
     /etc/fstab).  The mountpoint property can be inherited, so if pool/home has
     a mount point of /home, then pool/home/user automatically inherits a  mount
     point of /home/user.

     A file system mountpoint property of none prevents the file system from be-
     ing mounted.

     If  needed,  ZFS  file  systems  can also be managed with traditional tools
     (mount(8), umount(8), fstab(5)).  If a file system's mount point is set  to
     legacy, ZFS makes no attempt to manage the file system, and the administra-
     tor is responsible for mounting and unmounting the file system.

   Jails
     A ZFS dataset can be attached to a jail by using the "zfs jail" subcommand.
     You  cannot  attach  a  dataset  to  one  jail and the children of the same
     dataset to another jails. To allow management of the dataset from within  a
     jail,  the  jailed  property  has	to  be set. The quota property cannot be
     changed from within a jail.

     A ZFS dataset can be detached from a jail using the  "zfs	unjail"  subcom-
     mand.

     After  a  dataset	is  attached to a jail and the jailed property is set, a
     jailed file system cannot be mounted outside the jail, since the  jail  ad-
     ministrator might have set the mount point to an unacceptable value.

   Deduplication
     Deduplication  is	the  process  for  removing redundant data at the block-
     level, reducing the total amount of data stored. If a file system	has  the
     dedup  property  enabled,	duplicate data blocks are removed synchronously.
     The result is that only unique data is stored  and  common  components  are
     shared among files.

   Native Properties
     Properties  are  divided into two types, native properties and user-defined
     (or "user") properties. Native properties either export internal statistics
     or control ZFS behavior. In addition, native properties are either editable
     or read-only. User properties have no effect on ZFS behavior, but	you  can
     use  them to annotate datasets in a way that is meaningful in your environ-
     ment.  For  more  information  about  user  properties,  see   the   ""User
     Properties"" section, below.

     Every  dataset  has  a  set  of properties that export statistics about the
     dataset as well as control various behaviors. Properties are inherited from
     the parent unless overridden by the child. Some properties  apply	only  to
     certain types of datasets (file systems, volumes, or snapshots).

     The values of numeric properties can be specified using human-readable suf-
     fixes (for example, k, KB, M, Gb, and so forth, up to Z for zettabyte). The
     following are all valid (and equal) specifications:

	 1536M, 1.5g, 1.50GB

     The  values of non-numeric properties are case sensitive and must be lower-
     case, except for mountpoint, sharenfs, and sharesmb.

     The following native properties consist of read-only statistics  about  the
     dataset. These properties can be neither set, nor inherited. Native proper-
     ties apply to all dataset types unless otherwise noted.

     available
	 The  amount of space available to the dataset and all its children, as-
	 suming that there is no other activity in the pool.  Because  space  is
	 shared within a pool, availability can be limited by any number of fac-
	 tors,	including  physical  pool  size,  quotas, reservations, or other
	 datasets within the pool.

	 This property can also be referred to by  its	shortened  column  name,
	 avail.

     compressratio
	 For non-snapshots, the compression ratio achieved for the used space of
	 this  dataset,  expressed  as a multiplier.  The used property includes
	 descendant datasets, and, for clones, does not include the space shared
	 with the origin snapshot.  For snapshots, the compressratio is the same
	 as the refcompressratio property. Compression can be turned on by  run-
	 ning: "zfs set compression=on dataset" The default value is off.

     creation
	 The time this dataset was created.

     clones
	 For  snapshots,  this property is a comma-separated list of filesystems
	 or volumes which are clones of this snapshot.	The clones' origin prop-
	 erty is this snapshot.  If the clones property is not empty, then  this
	 snapshot can not be destroyed (even with the -r or -f options).

     defer_destroy
	 This  property  is  on if the snapshot has been marked for deferred de-
	 stroy by using the "zfs destroy -d" command. Otherwise, the property is
	 off.

     mounted
	 For file systems,  indicates  whether	the  file  system  is  currently
	 mounted. This property can be either yes or no.

     origin
	 For  cloned  file systems or volumes, the snapshot from which the clone
	 was created. See also the clones property.

     referenced
	 The amount of data that is accessible by this dataset, which may or may
	 not be shared with other datasets in the pool. When a snapshot or clone
	 is created, it initially references the same amount  of  space  as  the
	 file  system  or  snapshot  it was created from, since its contents are
	 identical.

	 This property can also be referred to by  its	shortened  column  name,
	 refer.

     refcompressratio
	 The  compression  ratio  achieved  for  the  referenced  space  of this
	 dataset, expressed as a multiplier.  See also the  compressratio  prop-
	 erty.

     type
	 The type of dataset: filesystem, volume, or snapshot.

     used
	 The  amount  of space consumed by this dataset and all its descendents.
	 This is the value that is checked  against  this  dataset's  quota  and
	 reservation.  The  space  used does not include this dataset's reserva-
	 tion, but does take into account the  reservations  of  any  descendent
	 datasets.  The amount of space that a dataset consumes from its parent,
	 as well as the amount of space that are freed if this dataset is recur-
	 sively destroyed, is the greater of its space used and its reservation.

	 When snapshots (see the ""Snapshots"" section) are created, their space
	 is initially shared between the snapshot and the file system, and  pos-
	 sibly	with  previous snapshots. As the file system changes, space that
	 was previously shared becomes unique to the snapshot,	and  counted  in
	 the  snapshot's  space  used.	Additionally, deleting snapshots can in-
	 crease the amount of space unique to (and used by) other snapshots.

	 The amount of space used, available, or referenced does not  take  into
	 account  pending  changes.  Pending changes are generally accounted for
	 within a few seconds. Committing a change to a disk using  fsync(2)  or
	 O_SYNC  does not necessarily guarantee that the space usage information
	 is updated immediately.

     usedby*
	 The usedby* properties decompose the used properties into  the  various
	 reasons  that	space  is  used.  Specifically, used = usedbysnapshots +
	 usedbydataset + usedbychildren + usedbyrefreservation.   These  proper-
	 ties  are  only available for datasets created with ZFS pool version 13
	 pools and higher.

     usedbysnapshots
	 The amount of space consumed by snapshots of this dataset. In	particu-
	 lar,  it  is  the  amount  of	space that would be freed if all of this
	 dataset's snapshots were destroyed. Note that this is	not  simply  the
	 sum  of  the  snapshots' used properties because space can be shared by
	 multiple snapshots.

     usedbydataset
	 The amount of space used by this dataset itself, which would  be  freed
	 if  the dataset were destroyed (after first removing any refreservation
	 and destroying any necessary snapshots or descendents).

     usedbychildren
	 The amount of space used by children of this dataset,	which  would  be
	 freed if all the dataset's children were destroyed.

     usedbyrefreservation
	 The amount of space used by a refreservation set on this dataset, which
	 would be freed if the refreservation was removed.

     userused@user
	 The  amount  of  space  consumed by the specified user in this dataset.
	 Space is charged to the owner of each file, as displayed  by  "ls  -l".
	 The  amount of space charged is displayed by "du" and "ls -s".  See the
	 "zfs userspace" subcommand for more information.

	 Unprivileged users can access only their  own	space  usage.  The  root
	 user,	or  a user who has been granted the userused privilege with "zfs
	 allow", can access everyone's usage.

	 The userused@... properties are not displayed by "zfs	get  all".   The
	 user's  name must be appended after the @ symbol, using one of the fol-
	 lowing forms:

	   *   POSIX name (for example, joe)

	   *   POSIX numeric ID (for example, 1001)

     userrefs
	 This property is set to the number of user holds on this snapshot. User
	 holds are set by using the "zfs hold" command.

     groupused@group
	 The amount of space consumed by the specified group  in  this	dataset.
	 Space is charged to the group of each file, as displayed by ls -l.  See
	 the userused@user property for more information.

	 Unprivileged  users  can only access their own groups' space usage. The
	 root user, or a user who has been granted the groupused privilege  with
	 "zfs allow", can access all groups' usage.

     volblocksize=blocksize
	 For volumes, specifies the block size of the volume. The blocksize can-
	 not be changed once the volume has been written, so it should be set at
	 volume  creation  time.  The default blocksize for volumes is 8 Kbytes.
	 Any power of 2 from 512 bytes to 128 Kbytes is valid.

	 This property can also be referred to by  its	shortened  column  name,
	 volblock.

     written
	 The amount of referenced space written to this dataset since the previ-
	 ous snapshot.

     written@snapshot
	 The amount of referenced space written to this dataset since the speci-
	 fied  snapshot.   This  is the space that is referenced by this dataset
	 but was not referenced by the specified snapshot.

	 The snapshot may be specified as a short snapshot name (just  the  part
	 after the @), in which case it will be interpreted as a snapshot in the
	 same  filesystem  as  this dataset. The snapshot may be a full snapshot
	 name (filesystem@snapshot), which for clones may be a snapshot  in  the
	 origin's filesystem (or the origin of the origin's filesystem, etc).

     The following native properties can be used to change the behavior of a ZFS
     dataset.

     aclinherit=discard | noallow | restricted | passthrough | passthrough-x
	 Controls  how	ACL entries are inherited when files and directories are
	 created. A file system with an aclinherit property of discard does  not
	 inherit  any  ACL  entries.  A  file system with an aclinherit property
	 value of noallow only inherits inheritable  ACL  entries  that  specify
	 "deny" permissions. The property value restricted (the default) removes
	 the  write_acl and write_owner permissions when the ACL entry is inher-
	 ited. A file system with an aclinherit property  value  of  passthrough
	 inherits  all inheritable ACL entries without any modifications made to
	 the ACL entries  when	they  are  inherited.  A  file	system	with  an
	 aclinherit  property  value  of  passthrough-x  has the same meaning as
	 passthrough, except that the owner@, group@, and everyone@ ACEs inherit
	 the execute permission only if the file creation mode also requests the
	 execute bit.

	 When the property value is set to passthrough, files are created with a
	 mode determined by the inheritable ACEs. If no inheritable  ACEs  exist
	 that  affect  the  mode,  then the mode is set in accordance to the re-
	 quested mode from the application.

     aclmode=discard | groupmask | passthrough
	 Controls how an ACL is modified during chmod(2).  A file system with an
	 aclmode property of discard (the default) deletes all ACL entries  that
	 do not represent the mode of the file. An aclmode property of groupmask
	 reduces  permissions granted in all ALLOW entries found in the ACL such
	 that they are no  greater  than  the  group  permissions  specified  by
	 chmod(2).   A file system with an aclmode property of passthrough indi-
	 cates that no changes are made to the ACL other than creating or updat-
	 ing the necessary ACL entries to represent the new mode of the file  or
	 directory.

     atime=on | off
	 Controls  whether  the  access  time for files is updated when they are
	 read.	Turning this property off avoids producing  write  traffic  when
	 reading  files  and can result in significant performance gains, though
	 it might confuse mailers and other similar utilities. The default value
	 is on.

     canmount=on | off | noauto
	 If this property is set to off, the file system cannot be mounted,  and
	 is  ignored by "zfs mount -a".  Setting this property to off is similar
	 to setting the mountpoint property to none,  except  that  the  dataset
	 still has a normal mountpoint property, which can be inherited. Setting
	 this  property  to off allows datasets to be used solely as a mechanism
	 to inherit properties. One example of setting canmount=off is	to  have
	 two  datasets	with  the  same mountpoint, so that the children of both
	 datasets appear in the same directory, but might have different  inher-
	 ited characteristics.

	 When  the  noauto  value  is set, a dataset can only be mounted and un-
	 mounted explicitly. The dataset is not mounted automatically  when  the
	 dataset is created or imported, nor is it mounted by the "zfs mount -a"
	 command or unmounted by the "zfs umount -a" command.

	 This property is not inherited.

     checksum=on | off | fletcher2 | fletcher4
	 Controls  the checksum used to verify data integrity. The default value
	 is on, which automatically selects an appropriate algorithm (currently,
	 fletcher4, but this may change in future releases). The value off  dis-
	 ables	integrity  checking  on  user data. Disabling checksums is NOT a
	 recommended practice.

     compression=on | off | lzjb | gzip | gzip-N | zle
	 Controls the compression algorithm used for this dataset. The	compres-
	 sion algorithm is optimized for performance while providing decent data
	 compression.  Setting compression to on uses the lzjb compression algo-
	 rithm. The gzip compression algorithm uses the same compression as  the
	 gzip(1)  command.  You  can  specify  the gzip level by using the value
	 gzip-N where N is an integer from 1 (fastest) to  9  (best  compression
	 ratio).  Currently, gzip is equivalent to gzip-6 (which is also the de-
	 fault for gzip(1)).  The zle compression algorithm compresses	runs  of
	 zeros.

	 This  property  can  also  be	referred to by its shortened column name
	 compress.  Changing this property affects only newly-written data.

     copies=1 | 2 | 3
	 Controls the number of copies of data stored for  this  dataset.  These
	 copies  are in addition to any redundancy provided by the pool, for ex-
	 ample, mirroring or RAID-Z. The copies are stored on  different  disks,
	 if  possible. The space used by multiple copies is charged to the asso-
	 ciated file and  dataset,  changing  the  used  property  and	counting
	 against quotas and reservations.

	 Changing  this property only affects newly-written data. Therefore, set
	 this property at file system creation time by using the -o copies=N op-
	 tion.

     dedup=on | off | verify | sha256[,verify]
	 Configures deduplication for a dataset. The default value is off.   The
	 default  deduplication  checksum  is sha256 (this may change in the fu-
	 ture).  When dedup is enabled, the checksum defined here overrides  the
	 checksum  property.  Setting the value to verify has the same effect as
	 the setting sha256,verify.

	 If set to verify, ZFS will do a byte-to-byte comparsion in case of  two
	 blocks  having  the  same signature to make sure the block contents are
	 identical.

     devices=on | off
	 The devices property is currently not supported on FreeBSD.

     exec=on | off
	 Controls whether processes can be executed from within this  file  sys-
	 tem. The default value is on.

     mlslabel=label | none
	 The mlslabel property is currently not supported on FreeBSD.

     mountpoint=path | none | legacy
	 Controls  the	mount  point  used for this file system. See the ""Mount
	 Points"" section for more information on how this property is used.

	 When the mountpoint property is changed for a	file  system,  the  file
	 system  and any children that inherit the mount point are unmounted. If
	 the new value is legacy, then they remain  unmounted.	Otherwise,  they
	 are  automatically  remounted	in  the new location if the property was
	 previously legacy or none, or if they were mounted before the	property
	 was  changed.	In  addition,  any  shared file systems are unshared and
	 shared in the new location.

     nbmand=on | off
	 The nbmand property is currently not supported on FreeBSD.

     primarycache=all | none | metadata
	 Controls what is cached in the primary cache (ARC). If this property is
	 set to all, then both user data and metadata is cached. If  this  prop-
	 erty  is set to none, then neither user data nor metadata is cached. If
	 this property is set to metadata, then only metadata is cached. The de-
	 fault value is all.

     quota=size | none
	 Limits the amount of space a dataset and its descendents  can	consume.
	 This  property  enforces a hard limit on the amount of space used. This
	 includes all space consumed by descendents, including file systems  and
	 snapshots.  Setting  a  quota on a descendent of a dataset that already
	 has a quota does not override the ancestor's quota, but rather  imposes
	 an additional limit.

	 Quotas cannot be set on volumes, as the volsize property acts as an im-
	 plicit quota.

     userquota@user=size | none
	 Limits  the amount of space consumed by the specified user.  Similar to
	 the refquota property, the userquota space calculation does not include
	 space that is used  by  descendent  datasets,	such  as  snapshots  and
	 clones.  User	space  consumption  is	identified by the userspace@user
	 property.

	 Enforcement of user quotas may be delayed by several seconds. This  de-
	 lay  means  that  a user might exceed their quota before the system no-
	 tices that they are over quota and begins to refuse  additional  writes
	 with  the  EDQUOT  error message. See the userspace subcommand for more
	 information.

	 Unprivileged users can only access their own groups' space  usage.  The
	 root  user, or a user who has been granted the userquota privilege with
	 "zfs allow", can get and set everyone's quota.

	 This property is not available on volumes, on file systems before  ver-
	 sion 4, or on pools before version 15. The userquota@... properties are
	 not displayed by "zfs get all".  The user's name must be appended after
	 the @ symbol, using one of the following forms:

	   *   POSIX name (for example, joe)

	   *   POSIX numeric ID (for example, 1001)

     groupquota@group=size | none
	 Limits the amount of space consumed by the specified group. Group space
	 consumption is identified by the userquota@user property.

	 Unprivileged  users  can access only their own groups' space usage. The
	 root user, or a user who has been granted the groupquota privilege with
	 "zfs allow", can get and set all groups' quotas.

     readonly=on | off
	 Controls whether this dataset can be modified.  The  default  value  is
	 off.

     recordsize=size
	 Specifies  a  suggested  block  size for files in the file system. This
	 property is designed solely for use with database workloads that access
	 files in fixed-size records.  ZFS automatically tunes block  sizes  ac-
	 cording to internal algorithms optimized for typical access patterns.

	 For  databases  that  create  very large files but access them in small
	 random  chunks,  these  algorithms  may  be  suboptimal.  Specifying  a
	 recordsize greater than or equal to the record size of the database can
	 result  in significant performance gains. Use of this property for gen-
	 eral purpose file systems is strongly discouraged,  and  may  adversely
	 affect performance.

	 The  size specified must be a power of two greater than or equal to 512
	 and less than or equal to 128 Kbytes.

	 Changing the file system's recordsize affects only files created after-
	 ward; existing files are unaffected.

	 This property can also be referred to by  its	shortened  column  name,
	 recsize.

     refquota=size | none
	 Limits  the  amount  of  space a dataset can consume. This property en-
	 forces a hard limit on the amount of space used. This hard  limit  does
	 not include space used by descendents, including file systems and snap-
	 shots.

     refreservation=size | none
	 The  minimum amount of space guaranteed to a dataset, not including its
	 descendents. When the amount of space used is	below  this  value,  the
	 dataset  is  treated as if it were taking up the amount of space speci-
	 fied by refreservation.  The refreservation  reservation  is  accounted
	 for  in  the parent datasets' space used, and counts against the parent
	 datasets' quotas and reservations.

	 If refreservation is set, a snapshot is only allowed if there is enough
	 free pool space outside of this reservation to accommodate the  current
	 number of "referenced" bytes in the dataset.

	 This  property  can  also  be referred to by its shortened column name,
	 refreserv.

     reservation=size | none
	 The minimum amount of space guaranteed to a  dataset  and  its  descen-
	 dents.  When  the amount of space used is below this value, the dataset
	 is treated as if it were taking up the amount of space specified by its
	 reservation. Reservations are accounted for  in  the  parent  datasets'
	 space	used, and count against the parent datasets' quotas and reserva-
	 tions.

	 This property can also be referred to by  its	shortened  column  name,
	 reserv.

     secondarycache=all | none | metadata
	 Controls  what  is cached in the secondary cache (L2ARC). If this prop-
	 erty is set to all, then both user data and metadata is cached. If this
	 property is set to none, then neither user data nor metadata is cached.
	 If this property is set to metadata, then only metadata is cached.  The
	 default value is all.

     setuid=on | off
	 Controls  whether the set-UID bit is respected for the file system. The
	 default value is on.

     sharesmb=on | off | opts
	 The sharesmb property has currently no effect o FreeBSD.

     sharenfs=on | off | opts
	 Controls whether the file system is shared via NFS,  and  what  options
	 are  used. A file system with a sharenfs property of off is managed the
	 traditional way via exports(5).  Otherwise, the file system is automat-
	 ically shared and unshared with the "zfs share" and "zfs unshare"  com-
	 mands.  If  the  property  is set to on no NFS export options are used.
	 Otherwise, NFS export options are equivalent to the  contents	of  this
	 property. The export options may be comma-separated. See exports(5) for
	 a list of valid options.

	 When  the  sharenfs  property	is  changed for a dataset, the mountd(8)
	 dameon is reloaded.

     logbias=latency | throughput
	 Provide a hint to ZFS about handling of synchronous  requests	in  this
	 dataset.  If logbias is set to latency (the default), ZFS will use pool
	 log  devices  (if configured) to handle the requests at low latency. If
	 logbias is set to throughput, ZFS will not use configured pool log  de-
	 vices.   ZFS  will  instead  optimize synchronous operations for global
	 pool throughput and efficient use of resources.

     snapdir=hidden | visible
	 Controls whether the .zfs directory is hidden or visible in the root of
	 the file system as discussed in the ""Snapshots"" section. The  default
	 value is hidden.

     sync=standard | always | disabled
	 Controls   the   behavior  of	synchronous  requests  (e.g.   fsync(2),
	 O_DSYNC). This property accepts the following values:

	     standard  This is the POSIX specified behavior of ensuring all syn-
		       chronous requests are written to stable storage	and  all
		       devices	are  flushed to ensure data is not cached by de-
		       vice controllers (this is the default).

	     always    All file system transactions are written and flushed  be-
		       fore  their system calls return. This has a large perfor-
		       mance penalty.

	     disabled  Disables synchronous requests. File  system  transactions
		       are  only  committed to stable storage periodically. This
		       option will give the highest performance.  However, it is
		       very dangerous as ZFS would be ignoring	the  synchronous
		       transaction  demands of applications such as databases or
		       NFS.  Administrators should only use this option when the
		       risks are understood.

     volsize=size
	 For volumes, specifies the logical size of the volume. By default, cre-
	 ating a volume establishes a reservation of  equal  size.  For  storage
	 pools with a version number of 9 or higher, a refreservation is set in-
	 stead.  Any changes to volsize are reflected in an equivalent change to
	 the reservation (or refreservation).  The volsize can only be set to  a
	 multiple of volblocksize, and cannot be zero.

	 The  reservation  is kept equal to the volume's logical size to prevent
	 unexpected behavior for consumers. Without the reservation, the  volume
	 could run out of space, resulting in undefined behavior or data corrup-
	 tion, depending on how the volume is used. These effects can also occur
	 when  the  volume size is changed while it is in use (particularly when
	 shrinking the size). Extreme care should be  used  when  adjusting  the
	 volume size.

	 Though  not  recommended, a "sparse volume" (also known as "thin provi-
	 sioning") can be created by specifying the -s option to the "zfs create
	 -V" command, or by changing the reservation after the volume  has  been
	 created.  A  "sparse  volume" is a volume where the reservation is less
	 then the volume size.	Consequently, writes to a sparse volume can fail
	 with ENOSPC when the pool is low on space. For a sparse volume, changes
	 to volsize are not reflected in the reservation.

     vscan=off | on
	 The vscan property is currently not supported on FreeBSD.

     xattr=off | on
	 The xattr property is currently not supported on FreeBSD.

     jailed=off | on
	 Controls whether the dataset is managed from a jail. See the  ""Jails""
	 section for more information. The default value is off.

     The  following  three properties cannot be changed after the file system is
     created, and therefore, should be set when the file system is  created.  If
     the  properties are not set with the "zfs create" or zpool create commands,
     these properties are inherited from  the  parent  dataset.  If  the  parent
     dataset  lacks  these  properties due to having been created prior to these
     features being supported, the new file system will have the default  values
     for these properties.

     casesensitivity=sensitive | insensitive | mixed
	   The casesensitivity property is currently not supported on FreeBSD.

     normalization=none | formC | formD | formKC | formKD
	   Indicates whether the file system should perform a unicode normaliza-
	   tion  of  file  names whenever two file names are compared, and which
	   normalization algorithm should be used. File names are always  stored
	   unmodified,	names  are normalized as part of any comparison process.
	   If this property is set to a legal value other  than  none,	and  the
	   utf8only  property was left unspecified, the utf8only property is au-
	   tomatically set to on.  The default value of the normalization  prop-
	   erty  is none.  This property cannot be changed after the file system
	   is created.

     utf8only=on | off
	   Indicates whether the file system should reject file names  that  in-
	   clude  characters  that  are  not present in the UTF-8 character code
	   set. If this property is explicitly set  to	off,  the  normalization
	   property  must  either  not be explicitly set or be set to none.  The
	   default value for the utf8only property is off.  This property cannot
	   be changed after the file system is created.

     The casesensitivity, normalization, and utf8only properties  are  also  new
     permissions  that	can be assigned to non-privileged users by using the ZFS
     delegated administration feature.

   Temporary Mount Point Properties
     When a file system is mounted, either through mount(8) for legacy mounts or
     the "zfs mount" command for normal file systems, its mount options are  set
     according	to  its properties. The correlation between properties and mount
     options is as follows:

	 PROPERTY    MOUNT OPTION
	 atime	     atime/noatime
	 exec	     exec/noexec
	 readonly    ro/rw
	 setuid      suid/nosuid

     In addition, these options can be set on a per-mount basis using the -o op-
     tion, without affecting the property that is stored  on  disk.  The  values
     specified	on  the  command line override the values stored in the dataset.
     These properties are reported as "temporary" by the "zfs get"  command.  If
     the  properties  are  changed while the dataset is mounted, the new setting
     overrides any temporary settings.

   User Properties
     In addition to the standard native properties, ZFS supports arbitrary  user
     properties.  User	properties  have no effect on ZFS behavior, but applica-
     tions or administrators can use them to annotate  datasets  (file	systems,
     volumes, and snapshots).

     User  property names must contain a colon (:) character to distinguish them
     from native properties. They may contain lowercase  letters,  numbers,  and
     the  following  punctuation characters: colon (:), dash (-), period (.) and
     underscore (_).  The expected convention is that the property name  is  di-
     vided  into two portions such as module:property, but this namespace is not
     enforced by ZFS.  User property names can be at most  256	characters,  and
     cannot begin with a dash (-).

     When  making  programmatic use of user properties, it is strongly suggested
     to use a reversed DNS domain name for  the  module  component  of	property
     names  to	reduce	the chance that two independently-developed packages use
     the same property name for different  purposes.  Property	names  beginning
     with com.sun are reserved for use by Sun Microsystems.

     The  values of user properties are arbitrary strings, are always inherited,
     and are never validated. All of the commands  that  operate  on  properties
     ("zfs  list",  "zfs get", "zfs set" and so forth) can be used to manipulate
     both native properties and user properties. Use the "zfs  inherit"  command
     to  clear	a  user  property.  If the property is not defined in any parent
     dataset, it is removed entirely. Property values are limited to 1024  char-
     acters.

SUBCOMMANDS
     All  subcommands  that  modify state are logged persistently to the pool in
     their original form.

     zfs [-?]

	 Displays a help message.

     zfs create [-p] [-o property=value] ... filesystem

	 Creates a new ZFS file system. The file system is automatically mounted
	 according to the mountpoint property inherited from the parent.

	 -p	 Creates all the non-existing parent datasets. Datasets  created
		 in  this  manner  are	automatically  mounted	according to the
		 mountpoint property inherited from their parent.  Any	property
		 specified  on	the command line using the -o option is ignored.
		 If the target filesystem already  exists,  the  operation  com-
		 pletes successfully.

	 -o property=value
		 Sets  the  specified  property  as  if  the  command  "zfs  set
		 property=value" was invoked at the same time  the  dataset  was
		 created.  Any editable ZFS property can also be set at creation
		 time. Multiple -o options can be specified. An error results if
		 the same property is specified in multiple -o options.

     zfs create [-ps] [-b blocksize] [-o property=value] ... -V size volume

	 Creates a volume of the given size. The volume is exported as	a  block
	 device  in  /dev/zvol/path, where path is the name of the volume in the
	 ZFS namespace. The size represents the logical size as exported by  the
	 device. By default, a reservation of equal size is created.

	 size  is  automatically  rounded up to the nearest 128 Kbytes to ensure
	 that the  volume  has	an  integral  number  of  blocks  regardless  of
	 blocksize.

	 -p	 Creates  all the non-existing parent datasets. Datasets created
		 in this manner  are  automatically  mounted  according  to  the
		 mountpoint  property  inherited from their parent. Any property
		 specified on the command line using the -o option  is	ignored.
		 If  the  target  filesystem  already exists, the operation com-
		 pletes successfully.

	 -s	 Creates a sparse volume with no reservation. See volsize in the
		 ""Native Properties"" section for more information about sparse
		 volumes.

	 -b blocksize
		 Equivalent to -o volblocksize=blocksize.   If	this  option  is
		 specified  in	conjunction  with -o volblocksize, the resulting
		 behavior is undefined.

	 -o property=value
		 Sets the specified property as if the "zfs set  property=value"
		 command  was  invoked at the same time the dataset was created.
		 Any editable ZFS property can also be	set  at  creation  time.
		 Multiple  -o  options can be specified. An error results if the
		 same property is specified in multiple -o options.

     zfs destroy [-fnpRrv] filesystem|volume

	 Destroys the given dataset. By default, the command unshares  any  file
	 systems  that	are currently shared, unmounts any file systems that are
	 currently mounted, and refuses to destroy a dataset that has active de-
	 pendents (children or clones).

	 -r	 Recursively destroy all children.

	 -R	 Recursively destroy all dependents, including cloned file  sys-
		 tems outside the target hierarchy.

	 -f	 Force an unmount of any file systems using the "zfs unmount -f"
		 command.  This  option has no effect on non-file systems or un-
		 mounted file systems.

	 -n	 Do a dry-run ("No-op") deletion. No data will be deleted.  This
		 is  useful  in conjunction with the -v or -p flags to determine
		 what data would be deleted.

	 -p	 Print machine-parsable verbose information  about  the  deleted
		 data.

	 -v	 Print verbose information about the deleted data.

	 Extreme  care should be taken when applying either the -r or the -R op-
	 tions, as they can destroy large portions of a  pool  and  cause  unex-
	 pected behavior for mounted file systems in use.

     zfs destroy [-dnpRrv] snapshot[%snapname][,...]

	 The  given  snapshots are destroyed immediately if and only if the "zfs
	 destroy" command without the -d option would have  destroyed  it.  Such
	 immediate  destruction would occur, for example, if the snapshot had no
	 clones and the user-initiated reference count were zero.

	 If a snapshot does not qualify for immediate destruction, it is  marked
	 for  deferred	deletion.  In this state, it exists as a usable, visible
	 snapshot until both of the preconditions listed above are met, at which
	 point it is destroyed.

	 An inclusive range of snapshots may  be  specified  by  separating  the
	 first	and  last  snapshots  with a percent sign (%).	The first and/or
	 last snapshots may be left blank, in which case the filesystem's oldest
	 or newest snapshot will be implied.

	 Multiple snapshots (or ranges of snapshots) of the same  filesystem  or
	 volume  may  be specified in a comma-separated list of snapshots.  Only
	 the snapshot's short name (the part after the @)  should  be  specified
	 when  using  a range or comma-separated list to identify multiple snap-
	 shots.

	 -r	 Destroy (or mark for deferred deletion) all snapshots with this
		 name in descendent file systems.

	 -R	 Recursively destroy all dependents.

	 -n	 Do a dry-run ("No-op") deletion. No data will be deleted.  This
		 is  useful  in conjunction with the -v or -p flags to determine
		 what data would be deleted.

	 -p	 Print machine-parsable verbose information  about  the  deleted
		 data.

	 -v	 Print verbose information about the deleted data.

	 -d	 Defer snapshot deletion.

	 Extreme  care should be taken when applying either the -r or the -R op-
	 tions, as they can destroy large portions of a  pool  and  cause  unex-
	 pected behavior for mounted file systems in use.

     zfs	snapshot	[-r]	    [-o        property=value]	     ...
	 filesystem@snapname|volume@snapname

	 Creates a snapshot with the given name. All previous  modifications  by
	 successful  system  calls  to the file system are part of the snapshot.
	 See the ""Snapshots"" section for details.

	 -r	 Recursively create snapshots of all descendent datasets.  Snap-
		 shots	are  taken  atomically,  so that all recursive snapshots
		 correspond to the same moment in time.

	 -o property=value
		 Sets the specified property; see "zfs create" for details.

     zfs rollback [-rRf] snapshot

	 Roll back the given dataset to a previous snapshot. When a  dataset  is
	 rolled back, all data that has changed since the snapshot is discarded,
	 and  the  dataset  reverts to the state at the time of the snapshot. By
	 default, the command refuses to roll back to a snapshot other than  the
	 most  recent one. In order to do so, all intermediate snapshots must be
	 destroyed by specifying the -r option.

	 -r	 Recursively destroy any snapshots  more  recent  than	the  one
		 specified.

	 -R	 Recursively  destroy  any more recent snapshots, as well as any
		 clones of those snapshots.

	 -f	 Used with the -R option to force an unmount of any  clone  file
		 systems that are to be destroyed.

     zfs clone [-p] [-o property=value] ... snapshot filesystem|volume

	 Creates  a  clone of the given snapshot. See the ""Clones"" section for
	 details. The target dataset can be located anywhere in the ZFS  hierar-
	 chy, and is created as the same type as the original.

	 -p	 Creates  all the non-existing parent datasets. Datasets created
		 in this manner  are  automatically  mounted  according  to  the
		 mountpoint  property inherited from their parent. If the target
		 filesystem or volume already exists,  the  operation  completes
		 successfully.

	 -o property=value
		 Sets the specified property; see "zfs create" for details.

     zfs promote clone-filesystem

	 Promotes  a clone file system to no longer be dependent on its "origin"
	 snapshot. This makes it possible to destroy the file  system  that  the
	 clone	was created from. The clone parent-child dependency relationship
	 is reversed, so that the origin file system  becomes  a  clone  of  the
	 specified file system.

	 The  snapshot that was cloned, and any snapshots previous to this snap-
	 shot, are now owned by the promoted clone. The  space	they  use  moves
	 from the origin file system to the promoted clone, so enough space must
	 be  available	to accommodate these snapshots. No new space is consumed
	 by this operation, but the space accounting is adjusted.  The	promoted
	 clone	must  not  have  any  conflicting snapshot names of its own. The
	 rename subcommand can be used to rename any conflicting snapshots.

     zfs rename [-f] filesystem|volume|snapshot filesystem|volume|snapshot

     zfs rename [-f] -p filesystem|volume filesystem|volume

     zfs rename -u [-p] filesystem filesystem

	 Renames the given dataset. The new target can be  located  anywhere  in
	 the  ZFS hierarchy, with the exception of snapshots. Snapshots can only
	 be renamed within the parent file system or  volume.  When  renaming  a
	 snapshot,  the  parent  file system of the snapshot does not need to be
	 specified as part of the second argument. Renamed file systems can  in-
	 herit	new mount points, in which case they are unmounted and remounted
	 at the new mount point.

	 -p	 Creates all the nonexistent parent datasets.  Datasets  created
		 in  this  manner  are	automatically  mounted	according to the
		 mountpoint property inherited from their parent.

	 -u	 Do not remount file systems during rename. If a  file	system's
		 mountpoint  property  is  set to legacy or none, file system is
		 not unmounted even if this option is not given.

	 -f	 Force unmount any filesystems that need to be unmounted in  the
		 process.   This flag has no effect if used together with the -u
		 flag.

     zfs rename -r snapshot snapshot

	 Recursively rename the snapshots of all descendent datasets.  Snapshots
	 are the only dataset that can be renamed recursively.

     zfs  list	[-r|-d	depth]	[-H]  [-o  property[,...]]  [-t  type[,...]] [-s
	 property] ... [-S property] ... filesystem|volume|snapshot

	 Lists the property information for the given datasets in tabular  form.
	 If  specified,  you can list property information by the absolute path-
	 name or the relative pathname. By default, all file systems and volumes
	 are displayed.  Snapshots are displayed if the listsnaps property is on
	 (the default is off).	The following fields are displayed, name,  used,
	 available, referenced, mountpoint.

	 -r	 Recursively  display any children of the dataset on the command
		 line.

	 -d depth
		 Recursively display any children of the dataset,  limiting  the
		 recursion to depth.  A depth of 1 will display only the dataset
		 and its direct children.

	 -H	 Used  for  scripting  mode.  Do  not print headers and separate
		 fields by a single tab instead of arbitrary white space.

	 -o property[,...]
		 A comma-separated list of properties to display.  The	property
		 must be:

		   *   One   of   the	properties  described  in  the	""Native
		       Properties"" section

		   *   A user property

		   *   The value name to display the dataset name

		   *   The value space to display space usage properties on file
		       systems and volumes. This is a shortcut for specifying -o
		       name,avail,used,usedsnap,usedds,usedrefreserv,usedchild
		       -t filesystem,volume syntax.

	 -t type[,...]
		 A comma-separated list of types to display, where type  is  one
		 of filesystem, snapshot, volume, or all.  For example, specify-
		 ing -t snapshot displays only snapshots.

	 -s property
		 A  property for sorting the output by column in ascending order
		 based on the value of the property. The property must be one of
		 the properties described in the ""Properties"" section, or  the
		 special  value name to sort by the dataset name. Multiple prop-
		 erties can be specified at one time using multiple -s	property
		 options.  Multiple  -s options are evaluated from left to right
		 in decreasing order of importance.

		 The following is a list of sorting criteria:

		   *   Numeric types sort in numeric order.

		   *   String types sort in alphabetical order.

		   *   Types inappropriate for a row sort that row to  the  lit-
		       eral bottom, regardless of the specified ordering.

		   *   If no sorting options are specified the existing behavior
		       of "zfs list" is preserved.

	 -S property
		 Same  as the -s option, but sorts by property in descending or-
		 der.

     zfs set property=value filesystem|volume|snapshot

	 Sets the property to the given value for each dataset. Only some  prop-
	 erties can be edited. See the "Properties" section for more information
	 on what properties can be set and acceptable values. Numeric values can
	 be specified as exact values, or in a human-readable form with a suffix
	 of  B, K, M, G, T, P, E, Z (for bytes, kilobytes, megabytes, gigabytes,
	 terabytes, petabytes,	exabytes,  or  zettabytes,  respectively).  User
	 properties  can  be  set  on  snapshots.  For more information, see the
	 ""User Properties"" section.

     zfs get [-r|-d depth] [-Hp] [-o all  |  field[,...]]  [-t	type[,...]]  [-s
	 source[,...]] all | property[,...] filesystem|volume|snapshot

	 Displays  properties  for the given datasets. If no datasets are speci-
	 fied, then the command displays properties for all datasets on the sys-
	 tem. For each property, the following columns are displayed:

	       name	 Dataset name
	       property  Property name
	       value	 Property value
	       source	 Property source. Can either be local,	default,  tempo-
			 rary, inherited, or none (-).

	 All  columns  except  the RECEIVED column are displayed by default. The
	 columns to display can be specified by using the -o option.  This  com-
	 mand  takes  a  comma-separated  list of properties as described in the
	 ""Native Properties"" and ""User Properties"" sections.

	 The special value all can be used to display all properties that  apply
	 to the given dataset's type (filesystem, volume, or snapshot).

	 -r	 Recursively display properties for any children.

	 -d depth
		 Recursively  display  any children of the dataset, limiting the
		 recursion to depth.  A depth of 1 will display only the dataset
		 and its direct children.

	 -H	 Display output in a form more easily  parsed  by  scripts.  Any
		 headers  are  omitted, and fields are explicitly separated by a
		 single tab instead of an arbitrary amount of space.

	 -p	 Display numbers in parseable (exact) values.

	 -o all | field[,...]
		 A comma-separated list of columns to display. Supported  values
		 are  name,property,value,received,source.   Default  values are
		 name,property,value,source.   The  keyword  all  specifies  all
		 columns.

	 -t type[,...]
		 A  comma-separated  list of types to display, where type is one
		 of filesystem, snapshot, volume, or all.  For example, specify-
		 ing -t snapshot displays only snapshots.

	 -s source[,...]
		 A comma-separated list of sources to display. Those  properties
		 coming from a source other than those in this list are ignored.
		 Each	  source    must    be	  one	 of    the    following:
		 local,default,inherited,temporary,received,none.   The  default
		 value is all sources.

     zfs inherit [-rS] property filesystem|volume|snapshot

	 Clears  the  specified property, causing it to be inherited from an an-
	 cestor. If no ancestor has the property set, then the default value  is
	 used.	See  the ""Properties"" section for a listing of default values,
	 and details on which properties can be inherited.

	 -r	 Recursively inherit the given property for all children.

	 -S	 For properties with a received value,	revert	to  this  value.
		 This  flag  has  no effect on properties that do not have a re-
		 ceived value.

     zfs upgrade [-v]

	 Displays a list of file systems that are not the most recent version.

	 -v	 Displays ZFS filesystem versions supported by the current soft-
		 ware. The current ZFS filesystem version and all previous  sup-
		 ported versions are displayed, along with an explanation of the
		 features provided with each version.

     zfs upgrade [-r] [-V version] -a | filesystem

	 Upgrades  file systems to a new on-disk version. Once this is done, the
	 file systems will no longer be accessible on systems running older ver-
	 sions of the software.  "zfs send" streams generated from new snapshots
	 of these file systems cannot be accessed on systems running older  ver-
	 sions of the software.

	 In general, the file system version is independent of the pool version.
	 See zpool(8) for information on the zpool upgrade command.

	 In  some cases, the file system version and the pool version are inter-
	 related and the pool version must be upgraded before  the  file  system
	 version can be upgraded.

	 -r	 Upgrade  the specified file system and all descendent file sys-
		 tems.

	 -V version
		 Upgrade to the specified version.  If the -V flag is not speci-
		 fied, this command upgrades to the most  recent  version.  This
		 option  can  only  be	used to increase the version number, and
		 only up to the most recent version supported by this software.

	 -a	 Upgrade all file systems on all imported pools.

	 filesystem
		 Upgrade the specified file system.

     zfs userspace [-niHp] [-o field[,...]]  [-sS  field]  ...	[-t  type[,...]]
	 filesystem|snapshot

	 Displays  space  consumed by, and quotas on, each user in the specified
	 filesystem or snapshot.  This	corresponds  to  the  userused@user  and
	 userquota@user properties.

	 -n	 Print numeric ID instead of user/group name.

	 -H	 Do not print headers, use tab-delimited output.

	 -p	 Use exact (parseable) numeric output.

	 -o field[,...]
		 Display  only	the  specified	fields	from  the following set,
		 type,name,used,quota.	The default is to display all fields.

	 -s field
		 Sort output by this field. The -s and -S flags may be specified
		 multiple times to sort first by one field, then by another. The
		 default is -s type -s name.

	 -S field
		 Sort by this field in reverse order. See -s.

	 -t type[,...]
		 Print	only  the  specified  types  from  the	following   set,
		 all,posixuser,smbuser,posixgroup,smbgroup.

		 The default is -t posixuser,smbuser.

		 The default can be changed to include group types.

	 -i	 Translate SID to POSIX ID. This flag has currently no effect on
		 FreeBSD.

     zfs  groupspace  [-niHp]  [-o  field[,...]] [-sS field] ... [-t type[,...]]
	 filesystem|snapshot

	 Displays space consumed by, and quotas on, each group in the  specified
	 filesystem   or   snapshot.   This  subcommand  is  identical	to  "zfs
	 userspace",  except  that  the  default  types  to   display	are   -t
	 posixgroup,smbgroup.

     zfs mount

	 Displays all ZFS file systems currently mounted.

	 -f

     zfs mount [-vO] [-o property[,...]] -a | filesystem

	 Mounts ZFS file systems.

	 -v	 Report mount progress.

	 -O	 Perform  an  overlay mount. Overlay mounts are not supported on
		 FreeBSD.

	 -o property[,...]
		 An optional, comma-separated list of mount options to use  tem-
		 porarily  for	the  duration  of the mount. See the ""Temporary
		 Mount Point Properties"" section for details.

	 -a	 Mount all available ZFS file systems.	This command may be exe-
		 cuted on FreeBSD system startup by /etc/rc.d/zfs.  For more in-
		 formation, see variable zfs_enable in rc.conf(5).

	 filesystem
		 Mount the specified filesystem.

     zfs unmount [-f] -a | filesystem|mountpoint

	 Unmounts currently mounted ZFS file systems.

	 -f	 Forcefully unmount the file system, even if it is currently  in
		 use.

	 -a	 Unmount all available ZFS file systems.

	 filesystem | mountpoint
		 Unmount the specified filesystem. The command can also be given
		 a path to a ZFS file system mount point on the system.

     zfs share -a | filesystem

	 Shares ZFS file systems that have the sharenfs property set.

	 -a	 Share all ZFS file systems that have the sharenfs property set.
		 This  command	may  be  executed  on  FreeBSD system startup by
		 /etc/rc.d/zfs.  For more information, see  variable  zfs_enable
		 in rc.conf(5).

	 filesystem
		 Share	the specified filesystem according to the sharenfs prop-
		 erty. File systems are shared when  the  sharenfs  property  is
		 set.

     zfs unshare -a | filesystem|mountpoint

	 Unshares ZFS file systems that have the sharenfs property set.

	 -a	 Unshares  ZFS file systems that have the sharenfs property set.
		 This command may be executed  on  FreeBSD  system  shutdown  by
		 /etc/rc.d/zfs.   For  more information, see variable zfs_enable
		 in rc.conf(5).

	 filesystem | mountpoint
		 Unshare the specified filesystem. The command can also be given
		 a path to a ZFS file system shared on the system.

     zfs send [-DnPpRrv] [-i snapshot | -I snapshot] snapshot

	 Creates a stream representation of the last snapshot argument (not part
	 of -i or -I) which is written to standard output.  The  output  can  be
	 redirected  to  a  file  or  to  a different system (for example, using
	 ssh(1)).  By default, a full stream is generated.

	 -i snapshot
		 Generate an incremental stream from the -i snapshot to the last
		 snapshot.  The incremental source  (the  -i  snapshot)  can  be
		 specified as the last component of the snapshot name (for exam-
		 ple,  the  part  after the @), and it is assumed to be from the
		 same file system as the last snapshot.

		 If the destination is a clone, the source  may  be  the  origin
		 snapshot,   which   must   be	fully  specified  (for	example,
		 pool/fs@origin, not just @origin).

	 -I snapshot
		 Generate a stream package that sends all intermediary snapshots
		 from the -I snapshot to the last snapshot.  For example, -I  @a
		 fs@d is similar to -i @a fs@b; -i @b fs@c; -i @c fs@d.  The in-
		 cremental  source  snapshot may be specified as with the -i op-
		 tion.

	 -R	 Generate a replication stream package, which will replicate the
		 specified filesystem, and all descendent file	systems,  up  to
		 the  named  snapshot. When received, all properties, snapshots,
		 descendent file systems, and clones are preserved.

		 If the -i or -I flags are used in conjunction with the -R flag,
		 an incremental replication stream  is	generated.  The  current
		 values  of  properties,  and  current	snapshot and file system
		 names are set when the stream is received. If the  -F	flag  is
		 specified when this stream is received, snapshots and file sys-
		 tems that do not exist on the sending side are destroyed.

	 -D	 Generate  a  deduplicated  stream. Blocks which would have been
		 sent multiple times in the send stream will only be sent  once.
		 The  receiving system must also support this feature to receive
		 a deduplicated stream.  This flag can be used regardless of the
		 dataset's dedup property, but performance will be  much  better
		 if the filesystem uses a dedup-capable checksum (eg.  sha256).

	 -r	 Recursively  send all descendant snapshots.  This is similar to
		 the -R flag, but information about deleted and renamed datasets
		 is not included, and property information is only  included  if
		 the -p flag is specified.

	 -p	 Include  the  dataset's  properties in the stream. This flag is
		 implicit when -R is specified. The receiving system  must  also
		 support this feature.

	 -n	 Do  a	dry-run ("No-op") send.  Do not generate any actual send
		 data.	This is useful in conjunction with the -v or -P flags to
		 determine what data will be sent.

	 -P	 Print machine-parsable verbose  information  about  the  stream
		 package generated.

	 -v	 Print	verbose  information about the stream package generated.
		 This information includes a per-second report of how much  data
		 has been sent.

	 The format of the stream is committed. You will be able to receive your
	 streams on future versions of ZFS.

     zfs receive [-vnFu] filesystem|volume|snapshot

     zfs receive [-vnFu] [-d | -e] filesystem

	 Creates  a  snapshot whose contents are as specified in the stream pro-
	 vided on standard input. If a full stream is received, then a new  file
	 system  is  created  as  well. Streams are created using the "zfs send"
	 subcommand, which by default creates a full stream.  "zfs recv" can  be
	 used as an alias for "zfs receive".

	 If  an incremental stream is received, then the destination file system
	 must already exist, and its most recent snapshot must match the  incre-
	 mental  stream's  source. For zvols, the destination device link is de-
	 stroyed and recreated, which means the zvol cannot be	accessed  during
	 the receive operation.

	 When  a  snapshot replication package stream that is generated by using
	 the "zfs send -R" command is received, any snapshots that do not  exist
	 on  the  sending  location  are destroyed by using the "zfs destroy -d"
	 command.

	 The name of the snapshot (and file system, if	a  full  stream  is  re-
	 ceived)  that	this subcommand creates depends on the argument type and
	 the -d or -e option.

	 If the argument is a snapshot name, the specified snapshot is	created.
	 If  the  argument  is a file system or volume name, a snapshot with the
	 same name  as	the  sent  snapshot  is  created  within  the  specified
	 filesystem  or  volume.  If the -d or -e option is specified, the snap-
	 shot name is determined by appending the sent snapshot's  name  to  the
	 specified  filesystem.  If the -d option is specified, all but the pool
	 name of the sent snapshot path is appended (for example, b/c@1 appended
	 from sent snapshot a/b/c@1), and if the -e option  is	specified,  only
	 the  tail  of	the sent snapshot path is appended (for example, c@1 ap-
	 pended from sent snapshot a/b/c@1).  In the case of -d, any  file  sys-
	 tems  needed  to  replicate  the  path of the sent snapshot are created
	 within the specified file system.

	 -d	 Use the full sent  snapshot  path  without  the  first  element
		 (without  pool  name) to determine the name of the new snapshot
		 as described in the paragraph above.

	 -e	 Use only the last element of the sent snapshot path  to  deter-
		 mine the name of the new snapshot as described in the paragraph
		 above.

	 -u	 File  system that is associated with the received stream is not
		 mounted.

	 -v	 Print verbose information about the stream  and  the  time  re-
		 quired to perform the receive operation.

	 -n	 Do  not actually receive the stream. This can be useful in con-
		 junction with the -v option to verify the name the receive  op-
		 eration would use.

	 -F	 Force a rollback of the file system to the most recent snapshot
		 before performing the receive operation. If receiving an incre-
		 mental  replication  stream (for example, one generated by "zfs
		 send -R -Fi -iI"), destroy snapshots and file systems	that  do
		 not exist on the sending side.

     zfs allow filesystem|volume

	 Displays permissions that have been delegated on the specified filesys-
	 tem or volume. See the other forms of "zfs allow" for more information.

     zfs    allow    [-ldug]	everyone|user|group[,...]    perm|@setname[,...]
	 filesystem|volume

     zfs allow [-ld] -e perm|@setname[,...] filesystem|volume

	 Delegates ZFS administration permission for the file  systems	to  non-
	 privileged users.

	 [-ug] everyone|user|group[,...]
		 Specifies to whom the permissions are delegated. Multiple enti-
		 ties  can be specified as a comma-separated list. If neither of
		 the -ug options are specified, then the argument is interpreted
		 preferentially as the keyword "everyone", then as a user  name,
		 and  lastly  as  a group name. To specify a user or group named
		 "everyone", use the -u or -g options. To specify a  group  with
		 the same name as a user, use the -g option.

	 [-e] perm|@setname[,...]
		 Specifies  that  the  permissions  be	delegated to "everyone".
		 Multiple permissions may  be  specified  as  a  comma-separated
		 list. Permission names are the same as ZFS subcommand and prop-
		 erty  names.  See  the property list below. Property set names,
		 which begin with an at sign (@), may be specified. See  the  -s
		 form below for details.

	 [-ld] filesystem|volume
		 Specifies  where  the	permissions are delegated. If neither of
		 the -ld options are specified, or both are,  then  the  permis-
		 sions are allowed for the file system or volume, and all of its
		 descendents.  If  only  the  -l option is used, then is allowed
		 "locally" only for the specified file system.	If only  the  -d
		 option  is  used,  then is allowed only for the descendent file
		 systems.

	 Permissions are generally the ability to use a ZFS subcommand or change
	 a ZFS property. The following permissions are available:

	     NAME	       TYPE	     NOTES
	     allow	       subcommand    Must also have the permission  that
					     is being allowed
	     clone	       subcommand    Must also have the 'create' ability
					     and  'mount'  ability in the origin
					     file system
	     create	       subcommand    Must also have the 'mount' ability
	     destroy	       subcommand    Must also have the 'mount' ability
	     hold	       subcommand    Allows adding  a  user  hold  to  a
					     snapshot
	     mount	       subcommand    Allows mount/umount of ZFS datasets
	     promote	       subcommand    Must  also  have  the  'mount'  and
					     'promote'	ability  in  the  origin
					     file system
	     receive	       subcommand    Must  also  have  the  'mount'  and
					     'create' ability
	     release	       subcommand    Allows releasing a user hold  which
					     might destroy the snapshot
	     rename	       subcommand    Must  also  have  the  'mount'  and
					     'create' ability in the new parent
	     rollback	       subcommand    Must also have the 'mount' ability
	     send	       subcommand
	     share	       subcommand    Allows sharing  file  systems  over
					     the NFS protocol
	     snapshot	       subcommand    Must also have the 'mount' ability
	     groupquota        other	     Allows accessing any groupquota@...
					     property
	     groupused	       other	     Allows  reading  any  groupused@...
					     property
	     userprop	       other	     Allows changing any user property
	     userquota	       other	     Allows accessing any  userquota@...
					     property
	     userused	       other	     Allows   reading  any  userused@...
					     property

	     aclinherit        property
	     aclmode	       property
	     atime	       property
	     canmount	       property
	     casesensitivity   property
	     checksum	       property
	     compression       property
	     copies	       property
	     dedup	       property
	     devices	       property
	     exec	       property
	     logbias	       property
	     jailed	       property
	     mlslabel	       property
	     mountpoint        property
	     nbmand	       property
	     normalization     property
	     primarycache      property
	     quota	       property
	     readonly	       property
	     recordsize        property
	     refquota	       property
	     refreservation    property
	     reservation       property
	     secondarycache    property
	     setuid	       property
	     sharenfs	       property
	     sharesmb	       property
	     snapdir	       property
	     sync	       property
	     utf8only	       property
	     version	       property
	     volblocksize      property
	     volsize	       property
	     vscan	       property
	     xattr	       property

     zfs allow -c perm|@setname[,...] filesystem|volume

	 Sets "create time" permissions. These permissions are granted (locally)
	 to the creator of any newly-created descendent file system.

     zfs allow -s @setname perm|@setname[,...] filesystem|volume

	 Defines or adds permissions to a permission set. The set can be used by
	 other "zfs allow" commands for the specified file system  and	its  de-
	 scendents.  Sets are evaluated dynamically, so changes to a set are im-
	 mediately reflected. Permission sets follow the  same	naming	restric-
	 tions	as  ZFS  file systems, but the name must begin with an "at sign"
	 (@), and can be no more than 64 characters long.

     zfs  unallow   [-rldug]   everyone|user|group[,...]   [perm|@setname[,...]]
	 filesystem|volume

     zfs unallow [-rld] -e [perm|@setname[,...]] filesystem|volume

     zfs unallow [-r] -c [perm|@setname[,...]] filesystem|volume

	 Removes  permissions that were granted with the "zfs allow" command. No
	 permissions are explicitly denied, so	other  permissions  granted  are
	 still in effect. For example, if the permission is granted by an ances-
	 tor.  If  no  permissions  are  specified, then all permissions for the
	 specified user, group, or everyone are removed.  Specifying  "everyone"
	 (or using the -e option) only removes the permissions that were granted
	 to  "everyone",  not  all permissions for every user and group. See the
	 "zfs allow" command for a description of the -ldugec options.

	 -r	 Recursively remove the permissions from this  file  system  and
		 all descendents.

     zfs unallow [-r] -s @setname perm|@setname[,...] filesystem|volume

	 Removes permissions from a permission set. If no permissions are speci-
	 fied, then all permissions are removed, thus removing the set entirely.

     zfs hold [-r] tag snapshot ...

	 Adds  a single reference, named with the tag argument, to the specified
	 snapshot or snapshots. Each snapshot has its  own  tag  namespace,  and
	 tags must be unique within that space.

	 If  a	hold  exists on a snapshot, attempts to destroy that snapshot by
	 using the "zfs destroy" command returns EBUSY.

	 -r	 Specifies that a hold with the given tag is applied recursively
		 to the snapshots of all descendent file systems.

     zfs holds [-r] snapshot ...

	 Lists all existing user references for the given snapshot or snapshots.

	 -r	 Lists the holds that are set on the named descendent snapshots,
		 in addition to listing the holds on the named snapshot.

     zfs release [-r] tag snapshot ...

	 Removes a single reference, named with the tag argument, from the spec-
	 ified snapshot or snapshots. The tag must already exist for each  snap-
	 shot.

	 -r	 Recursively releases a hold with the given tag on the snapshots
		 of all descendent file systems.

     zfs diff [-FHt] snapshot [snapshot|filesystem]

	 Describes  differences  between a snapshot and a successor dataset. The
	 successor dataset can be a later snapshot or the current filesystem.

	 The changed files are displayed including the change type.  The  change
	 type is displayed useing a single character. If a file or directory was
	 renamed, the old and the new names are displayed.

	 The following change types can be displayed:

	       CHARACTER    CHANGE TYPE
	       +	    file was added
	       -	    file was removed
	       M	    file was modified
	       R	    file was renamed

	 -F	 Display  a  single  letter  for the file type in second to last
		 column.

		 The following file types can be displayed:

		       CHARACTER    FILE TYPE
		       F	    file
		       /	    directory
		       B	    block device
		       @	    symbolic link
		       =	    socket
		       >	    door (not supported on FreeBSD)
		       |	    FIFO (not supported on FreeBSD)
		       P	    event portal (not supported on FreeBSD)

	 -H	 Machine-parseable output, fields separated a tab character.

	 -t	 Display a change timestamp in the first column.

     zfs jail jailid filesystem

	 Attaches the specified filesystem to the jail identified by JID jailid.
	 From now on this file system tree can be managed from within a jail  if
	 the  jailed  property has been set. To use this functionality, the jail
	 needs the enforce_statfs parameter set to 0 and the allow.mount parame-
	 ter set to 1.

	 See jail(8) for more information on managing jails and configuring  the
	 parameters above.

     zfs unjail jailid filesystem

	 Detaches  the	specified  filesystem  from  the  jail identified by JID
	 jailid.

EXAMPLES
     Example 1 Creating a ZFS File System Hierarchy

       The following commands create a file system named pool/home  and  a  file
       system  named pool/home/bob.  The mount point /home is set for the parent
       file system, and is automatically inherited by the child file system.

	 # zfs create pool/home
	 # zfs set mountpoint=/home pool/home
	 # zfs create pool/home/bob

     Example 2 Creating a ZFS Snapshot

       The following command creates a snapshot named yesterday.  This	snapshot
       is  mounted  on	demand in the .zfs/snapshot directory at the root of the
       pool/home/bob file system.

	 # zfs snapshot pool/home/bob@yesterday

     Example 3 Creating and Destroying Multiple Snapshots

       The following command creates snapshots named yesterday of pool/home  and
       all of its descendent file systems. Each snapshot is mounted on demand in
       the  .zfs/snapshot  directory  at the root of its file system. The second
       command destroys the newly created snapshots.

	 # zfs snapshot -r pool/home@yesterday
	 # zfs destroy -r pool/home@yesterday

     Example 4 Disabling and Enabling File System Compression

       The following command disables the compression property for all file sys-
       tems under pool/home.  The next command	explicitly  enables  compression
       for pool/home/anne.

	 # zfs set compression=off pool/home
	 # zfs set compression=on pool/home/anne

     Example 5 Listing ZFS Datasets

       The  following  command	lists all active file systems and volumes in the
       system.	Snapshots are displayed if the listsnaps property  is  on.   The
       default is off.	See zpool(8) for more information on pool properties.

	 # zfs list
	    NAME		      USED  AVAIL  REFER  MOUNTPOINT
	    pool		      450K   457G    18K  /pool
	    pool/home		      315K   457G    21K  /home
	    pool/home/anne	       18K   457G    18K  /home/anne
	    pool/home/bob	      276K   457G   276K  /home/bob

     Example 6 Setting a Quota on a ZFS File System

       The following command sets a quota of 50 Gbytes for pool/home/bob.

	 # zfs set quota=50G pool/home/bob

     Example 7 Listing ZFS Properties

       The following command lists all properties for pool/home/bob.

	 # zfs get all pool/home/bob
	 NAME		PROPERTY	      VALUE		     SOURCE
	 pool/home/bob	type		      filesystem	     -
	 pool/home/bob	creation	      Tue Jul 21 15:53 2009  -
	 pool/home/bob	used		      21K		     -
	 pool/home/bob	available	      20.0G		     -
	 pool/home/bob	referenced	      21K		     -
	 pool/home/bob	compressratio	      1.00x		     -
	 pool/home/bob	mounted 	      yes		     -
	 pool/home/bob	quota		      20G		     local
	 pool/home/bob	reservation	      none		     default
	 pool/home/bob	recordsize	      128K		     default
	 pool/home/bob	mountpoint	      /home/bob 	     default
	 pool/home/bob	sharenfs	      off		     default
	 pool/home/bob	checksum	      on		     default
	 pool/home/bob	compression	      on		     local
	 pool/home/bob	atime		      on		     default
	 pool/home/bob	devices 	      on		     default
	 pool/home/bob	exec		      on		     default
	 pool/home/bob	setuid		      on		     default
	 pool/home/bob	readonly	      off		     default
	 pool/home/bob	jailed		      off		     default
	 pool/home/bob	snapdir 	      hidden		     default
	 pool/home/bob	aclmode 	      discard		     default
	 pool/home/bob	aclinherit	      restricted	     default
	 pool/home/bob	canmount	      on		     default
	 pool/home/bob	xattr		      on		     default
	 pool/home/bob	copies		      1 		     default
	 pool/home/bob	version 	      5 		     -
	 pool/home/bob	utf8only	      off		     -
	 pool/home/bob	normalization	      none		     -
	 pool/home/bob	casesensitivity       sensitive 	     -
	 pool/home/bob	vscan		      off		     default
	 pool/home/bob	nbmand		      off		     default
	 pool/home/bob	sharesmb	      off		     default
	 pool/home/bob	refquota	      none		     default
	 pool/home/bob	refreservation	      none		     default
	 pool/home/bob	primarycache	      all		     default
	 pool/home/bob	secondarycache	      all		     default
	 pool/home/bob	usedbysnapshots       0 		     -
	 pool/home/bob	usedbydataset	      21K		     -
	 pool/home/bob	usedbychildren	      0 		     -
	 pool/home/bob	usedbyrefreservation  0 		     -
	 pool/home/bob	logbias 	      latency		     default
	 pool/home/bob	dedup		      off		     default
	 pool/home/bob	mlslabel				     -
	 pool/home/bob	sync		      standard		     default
	 pool/home/bob	refcompressratio      1.00x		     -

       The following command gets a single property value.

	 # zfs get -H -o value compression pool/home/bob
	 on

       The  following  command	lists  all  properties	with  local settings for
       pool/home/bob.

	 # zfs get -s local -o name,property,value all pool/home/bob
	 NAME		PROPERTY	      VALUE
	 pool/home/bob	quota		      20G
	 pool/home/bob	compression	      on

     Example 8 Rolling Back a ZFS File System

       The following command reverts the contents of pool/home/anne to the snap-
       shot named yesterday, deleting all intermediate snapshots.

	 # zfs rollback -r pool/home/anne@yesterday

     Example 9 Creating a ZFS Clone

       The following command creates a writable file system whose  initial  con-
       tents are the same as pool/home/bob@yesterday.

	 # zfs clone pool/home/bob@yesterday pool/clone

     Example 10 Promoting a ZFS Clone

       The  following commands illustrate how to test out changes to a file sys-
       tem, and then replace the original file system with the changed one,  us-
       ing clones, clone promotion, and renaming:

	 # zfs create pool/project/production

       Populate /pool/project/production with data and continue with the follow-
       ing commands:

	 # zfs snapshot pool/project/production@today
	 # zfs clone pool/project/production@today pool/project/beta

       Now  make  changes  to /pool/project/beta and continue with the following
       commands:

	 # zfs promote pool/project/beta
	 # zfs rename pool/project/production pool/project/legacy
	 # zfs rename pool/project/beta pool/project/production

       Once the legacy version is no longer needed, it can be destroyed.

	 # zfs destroy pool/project/legacy

     Example 11 Inheriting ZFS Properties

       The following command causes pool/home/bob and pool/home/anne to  inherit
       the checksum property from their parent.

	 # zfs inherit checksum pool/home/bob pool/home/anne

     Example 12 Remotely Replicating ZFS Data

       The  following commands send a full stream and then an incremental stream
       to  a  remote  machine,	restoring  them  into  poolB/received/fs@a   and
       poolB/received/fs@b,  respectively.   poolB  must contain the file system
       poolB/received, and must not initially contain poolB/received/fs.

	 # zfs send pool/fs@a | ssh host zfs receive poolB/received/fs@a
	 # zfs send -i a pool/fs@b | ssh host zfs receive poolB/received/fs

     Example 13 Using the "zfs receive -d" Option

       The following command sends a full stream of poolA/fsA/fsB@snap to a  re-
       mote   machine,	 receiving  it	into  poolB/received/fsA/fsB@snap.   The
       fsA/fsB@snap portion of the received snapshot's name is	determined  from
       the  name  of  the  sent  snapshot.   poolB  must contain the file system
       poolB/received.	If poolB/received/fsA does not exist, it is  created  as
       an empty file system.

	 # zfs send poolA/fsA/fsB@snap | ssh host zfs receive -d poolB/received

     Example 14 Setting User Properties

       The  following example sets the user-defined com.example:department prop-
       erty for a dataset.

	 # zfs set com.example:department=12345 tank/accounting

     Example 15 Performing a Rolling Snapshot

       The following example shows how to maintain a history of snapshots with a
       consistent naming scheme. To keep a week's worth of snapshots,  the  user
       destroys  the  oldest snapshot, renames the remaining snapshots, and then
       creates a new snapshot, as follows:

	 # zfs destroy -r pool/users@7daysago
	 # zfs rename -r pool/users@6daysago @7daysago
	 # zfs rename -r pool/users@5daysago @6daysago
	 # zfs rename -r pool/users@4daysago @5daysago
	 # zfs rename -r pool/users@3daysago @4daysago
	 # zfs rename -r pool/users@2daysago @3daysago
	 # zfs rename -r pool/users@yesterday @2daysago
	 # zfs rename -r pool/users@today @yesterday
	 # zfs snapshot -r pool/users@today

     Example 16 Setting "sharenfs" Property Options on a ZFS File System

       The following command shows how to set sharenfs property options  to  en-
       able root access for a specific network on the tank/home file system. The
       contents of the sharenfs property are valid exports(5) options.

	 # zfs set sharenfs="maproot=root,network 192.168.0.0/24" tank/home

       Another way to write this command with the same result is:

	 # set zfs sharenfs="-maproot=root -network 192.168.0.0/24" tank/home

     Example 17 Delegating ZFS Administration Permissions on a ZFS Dataset

       The  following  example	shows how to set permissions so that user cindys
       can create, destroy, mount, and take snapshots on tank/cindys.  The  per-
       missions on tank/cindys are also displayed.

	 # zfs allow cindys create,destroy,mount,snapshot tank/cindys
	 # zfs allow tank/cindys
	 -------------------------------------------------------------
	 Local+Descendent permissions on (tank/cindys)
		   user cindys create,destroy,mount,snapshot
	 -------------------------------------------------------------

     Example 18 Delegating Create Time Permissions on a ZFS Dataset

       The  following  example	shows  how to grant anyone in the group staff to
       create file systems in tank/users.  This syntax also allows staff members
       to destroy their own file systems, but not  destroy  anyone  else's  file
       system. The permissions on tank/users are also displayed.

	 # zfs allow staff create,mount tank/users
	 # zfs allow -c destroy tank/users
	 # zfs allow tank/users
	 -------------------------------------------------------------
	 Create time permissions on (tank/users)
		   create,destroy
	 Local+Descendent permissions on (tank/users)
		   group staff create,mount
	 -------------------------------------------------------------

     Example 19 Defining and Granting a Permission Set on a ZFS Dataset

       The  following  example shows how to define and grant a permission set on
       the tank/users file system. The permissions on tank/users are  also  dis-
       played.

	 # zfs allow -s @pset create,destroy,snapshot,mount tank/users
	 # zfs allow staff @pset tank/users
	 # zfs allow tank/users
	 -------------------------------------------------------------
	 Permission sets on (tank/users)
		 @pset create,destroy,mount,snapshot
	 Create time permissions on (tank/users)
		 create,destroy
	 Local+Descendent permissions on (tank/users)
		 group staff @pset,create,mount
	 -------------------------------------------------------------

     Example 20 Delegating Property Permissions on a ZFS Dataset

       The following example shows to grant the ability to set quotas and reser-
       vations	on the users/home file system. The permissions on users/home are
       also displayed.

	 # zfs allow cindys quota,reservation users/home
	 # zfs allow cindys
	 -------------------------------------------------------------
	 Local+Descendent permissions on (users/home)
		 user cindys quota,reservation
	 -------------------------------------------------------------
	 # su - cindys
	 cindys% zfs set quota=10G users/home/marks
	 cindys% zfs get quota users/home/marks
	 NAME		   PROPERTY  VALUE	       SOURCE
	 users/home/marks  quota     10G	       local

     Example 21 Removing ZFS Delegated Permissions on a ZFS Dataset

       The following example shows how to remove the  snapshot	permission  from
       the  staff  group  on  the  tank/users  file  system.  The permissions on
       tank/users are also displayed.

	 # zfs unallow staff snapshot tank/users
	 # zfs allow tank/users
	 -------------------------------------------------------------
	 Permission sets on (tank/users)
		 @pset create,destroy,mount,snapshot
	 Create time permissions on (tank/users)
		 create,destroy
	 Local+Descendent permissions on (tank/users)
		 group staff @pset,create,mount
	 -------------------------------------------------------------

EXIT STATUS
     The following exit values are returned:

       0   Successful completion.

       1   An error occurred.

       2   Invalid command line options were specified.

SEE ALSO
     chmod(2), fsync(2), exports(5), fstab(5),	rc.conf(5),  jail(8),  mount(8),
     umount(8), zpool(8)

AUTHORS
     This  manual  page  is a mdoc(7) reimplementation of the OpenSolaris manual
     page zfs(1M), modified and customized for FreeBSD and  licensed  under  the
     Common Development and Distribution License (CDDL).

     The  mdoc(7)  implementation  of  this manual page was initially written by
     Martin Matuska <mm@FreeBSD.org>.

FreeBSD 9.1			 August 12, 2012			  ZFS(8)

home | help