Illumos 3897 - zfs filesystem and snapshot limits

3897 zfs filesystem and snapshot limits
Author: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Approved by: Christopher Siden <christopher.siden@delphix.com>

References:
  https://www.illumos.org/issues/3897
  https://github.com/illumos/illumos-gate/commit/a2afb61

Porting Notes:

dsl_dataset_snapshot_check(): reduce stack usage using kmem_alloc().

Ported-by: Chris Dunlop <chris@onthe.net.au>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
This commit is contained in:
Jerry Jelinek
2015-04-02 00:07:48 +11:00
committed by Brian Behlendorf
parent 308a451f7f
commit 788eb90c4c
19 changed files with 1021 additions and 27 deletions
+22
View File
@@ -1,6 +1,7 @@
'\" te
.\" Copyright (c) 2013 by Delphix. All rights reserved.
.\" Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
.\" Copyright (c) 2014, Joyent, Inc. All rights reserved.
.\" The contents of this file are subject to the terms of the Common Development
.\" and Distribution License (the "License"). You may not use this file except
.\" in compliance with the License. You can obtain a copy of the license at
@@ -198,6 +199,27 @@ This feature is \fBactive\fR while there are any filesystems, volumes,
or snapshots which were created after enabling this feature.
.RE
.sp
.ne 2
.na
\fB\fBfilesystem_limits\fR\fR
.ad
.RS 4n
.TS
l l .
GUID com.joyent:filesystem_limits
READ\-ONLY COMPATIBLE yes
DEPENDENCIES extensible_dataset
.TE
This feature enables filesystem and snapshot limits. These limits can be used
to control how many filesystems and/or snapshots can be created at the point in
the tree on which the limits are set.
This feature is \fBactive\fR once either of the limit properties has been
set on a dataset. Once activated the feature is never deactivated.
.RE
.sp
.ne 2
.na
+58 -1
View File
@@ -23,7 +23,7 @@
.\" Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved.
.\" Copyright 2011 Joshua M. Clulow <josh@sysmgr.org>
.\" Copyright (c) 2014 by Delphix. All rights reserved.
.\" Copyright (c) 2012, Joyent, Inc. All rights reserved.
.\" Copyright (c) 2014, Joyent, Inc. All rights reserved.
.\" Copyright 2012 Nexenta Systems, Inc. All Rights Reserved.
.\" Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
.\"
@@ -467,6 +467,18 @@ This property is \fBon\fR if the snapshot has been marked for deferred destructi
.ne 2
.mk
.na
\fB\fBfilesystem_count\fR
.ad
.sp .6
.RS 4n
The total number of filesystems and volumes that exist under this location in the
dataset tree. This value is only available when a \fBfilesystem_limit\fR has
been set somewhere in the tree under which the dataset resides.
.RE
.sp
.ne 2
.na
\fB\fBlogicalreferenced\fR\fR
.ad
.sp .6
@@ -549,6 +561,18 @@ property.
.ne 2
.mk
.na
\fB\fBsnapshot_count\fR
.ad
.sp .6
.RS 4n
The total number of snapshots that exist under this location in the dataset tree.
This value is only available when a \fBsnapshot_limit\fR has been set somewhere
in the tree under which the dataset resides.
.RE
.sp
.ne 2
.na
\fB\fBtype\fR\fR
.ad
.sp .6
@@ -910,6 +934,21 @@ Zones are a Solaris feature and are not relevant on Linux.
.ne 2
.mk
.na
\fB\fBfilesystem_limit\fR=\fIcount\fR | \fBnone\fR\fR
.ad
.sp .6
.RS 4n
Limits the number of filesystems and volumes that can exist under this point in
the dataset tree. The limit is not enforced if the user is allowed to change
the limit. Setting a filesystem_limit on a descendent of a filesystem that
already has a filesystem_limit does not override the ancestor's filesystem_limit,
but rather imposes an additional limit. This feature must be enabled to be used
(see \fBzpool-features\fR(5)).
.RE
.sp
.ne 2
.na
\fB\fBmountpoint\fR=\fIpath\fR | \fBnone\fR | \fBlegacy\fR\fR
.ad
.sp .6
@@ -958,6 +997,22 @@ Quotas cannot be set on volumes, as the \fBvolsize\fR property acts as an implic
.ne 2
.mk
.na
\fB\fBsnapshot_limit\fR=\fIcount\fR | \fBnone\fR\fR
.ad
.sp .6
.RS 4n
Limits the number of snapshots that can be created on a dataset and its
descendents. Setting a snapshot_limit on a descendent of a dataset that already
has a snapshot_limit does not override the ancestor's snapshot_limit, but
rather imposes an additional limit. The limit is not enforced if the user is
allowed to change the limit. For example, this means that recursive snapshots
taken from the global zone are counted against each delegated dataset within
a zone. This feature must be enabled to be used (see \fBzpool-features\fR(5)).
.RE
.sp
.ne 2
.na
\fB\fBuserquota@\fR\fIuser\fR=\fIsize\fR | \fBnone\fR\fR
.ad
.sp .6
@@ -3013,6 +3068,7 @@ copies property
dedup property
devices property
exec property
filesystem_limit property
logbias property
mlslabel property
mountpoint property
@@ -3031,6 +3087,7 @@ shareiscsi property
sharenfs property
sharesmb property
snapdir property
snapshot_limit property
utf8only property
version property
volblocksize property