]> git.proxmox.com Git - mirror_zfs.git/commitdiff
zfs userspace: use zfs_path_to_zhandle so argument can be a path
authorAllan Jude <allan@klarasystems.com>
Fri, 25 Sep 2020 21:37:10 +0000 (17:37 -0400)
committerGitHub <noreply@github.com>
Fri, 25 Sep 2020 21:37:10 +0000 (14:37 -0700)
Change zfs userspace subcommand to use zfs_path_to_zhandle() so that
the provided dataset can be a path (/usr) or a dataset (rpool/usr).

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
Signed-off-by: Allan Jude <allan@klarasystems.com>
Closes #8915

cmd/zfs/zfs_main.c
man/man8/zfs-userspace.8

index 20579157d7d607723b828b8b6b0f64fb9ee46221..42c180890fec746877c2366f9401188b5211b945 100644 (file)
@@ -363,16 +363,16 @@ get_usage(zfs_help_t idx)
                return (gettext("\tuserspace [-Hinp] [-o field[,...]] "
                    "[-s field] ...\n"
                    "\t    [-S field] ... [-t type[,...]] "
-                   "<filesystem|snapshot>\n"));
+                   "<filesystem|snapshot|path>\n"));
        case HELP_GROUPSPACE:
                return (gettext("\tgroupspace [-Hinp] [-o field[,...]] "
                    "[-s field] ...\n"
                    "\t    [-S field] ... [-t type[,...]] "
-                   "<filesystem|snapshot>\n"));
+                   "<filesystem|snapshot|path>\n"));
        case HELP_PROJECTSPACE:
                return (gettext("\tprojectspace [-Hp] [-o field[,...]] "
                    "[-s field] ... \n"
-                   "\t    [-S field] ... <filesystem|snapshot>\n"));
+                   "\t    [-S field] ... <filesystem|snapshot|path>\n"));
        case HELP_PROJECT:
                return (gettext("\tproject [-d|-r] <directory|file ...>\n"
                    "\tproject -c [-0] [-d|-r] [-p id] <directory|file ...>\n"
@@ -2481,11 +2481,13 @@ zfs_do_upgrade(int argc, char **argv)
 
 /*
  * zfs userspace [-Hinp] [-o field[,...]] [-s field [-s field]...]
- *               [-S field [-S field]...] [-t type[,...]] filesystem | snapshot
+ *               [-S field [-S field]...] [-t type[,...]]
+ *               filesystem | snapshot | path
  * zfs groupspace [-Hinp] [-o field[,...]] [-s field [-s field]...]
- *                [-S field [-S field]...] [-t type[,...]] filesystem | snapshot
+ *                [-S field [-S field]...] [-t type[,...]]
+ *                filesystem | snapshot | path
  * zfs projectspace [-Hp] [-o field[,...]] [-s field [-s field]...]
- *                [-S field [-S field]...] filesystem | snapshot
+ *                [-S field [-S field]...] filesystem | snapshot | path
  *
  *     -H      Scripted mode; elide headers and separate columns by tabs.
  *     -i      Translate SID to POSIX ID.
@@ -3191,7 +3193,7 @@ zfs_do_userspace(int argc, char **argv)
                } while (delim != NULL);
        }
 
-       if ((zhp = zfs_open(g_zfs, argv[0], ZFS_TYPE_FILESYSTEM |
+       if ((zhp = zfs_path_to_zhandle(g_zfs, argv[0], ZFS_TYPE_FILESYSTEM |
            ZFS_TYPE_SNAPSHOT)) == NULL)
                return (1);
        if (zhp->zfs_head_type != ZFS_TYPE_FILESYSTEM) {
index a8477d16a1ae2bf303f0034bcc7774631bd165ca..9c103bf48c0483a4550173587b1ac8903d592ce1 100644 (file)
@@ -44,7 +44,7 @@
 .Oo Fl s Ar field Oc Ns ...
 .Oo Fl S Ar field Oc Ns ...
 .Oo Fl t Ar type Ns Oo , Ns Ar type Oc Ns ... Oc
-.Ar filesystem Ns | Ns Ar snapshot
+.Ar filesystem Ns | Ns Ar snapshot Ns | Ns Ar path
 .Nm
 .Cm groupspace
 .Op Fl Hinp
 .Oo Fl s Ar field Oc Ns ...
 .Oo Fl S Ar field Oc Ns ...
 .Oo Fl t Ar type Ns Oo , Ns Ar type Oc Ns ... Oc
-.Ar filesystem Ns | Ns Ar snapshot
+.Ar filesystem Ns | Ns Ar snapshot Ns | Ns Ar path
 .Nm
 .Cm projectspace
 .Op Fl Hp
 .Oo Fl o Ar field Ns Oo , Ns Ar field Oc Ns ... Oc
 .Oo Fl s Ar field Oc Ns ...
 .Oo Fl S Ar field Oc Ns ...
-.Ar filesystem Ns | Ns Ar snapshot
+.Ar filesystem Ns | Ns Ar snapshot Ns | Ns Ar path
 .Sh DESCRIPTION
 .Bl -tag -width ""
 .It Xo
 .Oo Fl s Ar field Oc Ns ...
 .Oo Fl S Ar field Oc Ns ...
 .Oo Fl t Ar type Ns Oo , Ns Ar type Oc Ns ... Oc
-.Ar filesystem Ns | Ns Ar snapshot
+.Ar filesystem Ns | Ns Ar snapshot Ns | Ns Ar path
 .Xc
-Displays space consumed by, and quotas on, each user in the specified filesystem
-or snapshot.
+Displays space consumed by, and quotas on, each user in the specified filesystem,
+snapshot, or path.
+If a path is given, the filesystem that contains that path will be used.
 This corresponds to the
 .Sy userused@ Ns Em user ,
 .Sy userobjused@ Ns Em user ,
@@ -167,7 +168,7 @@ except that the default types to display are
 .Oo Fl o Ar field Ns Oo , Ns Ar field Oc Ns ... Oc
 .Oo Fl s Ar field Oc Ns ...
 .Oo Fl S Ar field Oc Ns ...
-.Ar filesystem Ns | Ns Ar snapshot
+.Ar filesystem Ns | Ns Ar snapshot Ns | Ns Ar path
 .Xc
 Displays space consumed by, and quotas on, each project in the specified
 filesystem or snapshot. This subcommand is identical to