svn commit: r348696 - stable/12/cddl/contrib/opensolaris/cmd/zfs

Allan Jude allanjude at FreeBSD.org
Wed Jun 5 19:46:36 UTC 2019


Author: allanjude
Date: Wed Jun  5 19:46:35 2019
New Revision: 348696
URL: https://svnweb.freebsd.org/changeset/base/348696

Log:
  MFC r347953:
  
  MFV/ZoL: `zfs userspace` ignored all unresolved UIDs after the first
  
  zfsonlinux/zfs at 88cfff182432e4d1c24c877f33b47ee6cf109eee
  
  zfs_main: fix `zfs userspace` squashing unresolved entries
  
  The `zfs userspace` squashes all entries with unresolved numeric
  values into a single output entry due to the comparsion always
  made by the string name which is empty in case of unresolved IDs.
  
  Fix this by falling to a numerical comparison when either one
  of string values is not found. This then compares any numerical
  values after all with a name resolved.
  
  Signed-off-by: Pavel Boldin <boldin.pavel at gmail.com>
  Signed-off-by: Brian Behlendorf <behlendorf1 at llnl.gov>
  
  Reported by:	clusteradm
  Obtained from:	ZFS-on-Linux

Modified:
  stable/12/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
==============================================================================
--- stable/12/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c	Wed Jun  5 19:30:32 2019	(r348695)
+++ stable/12/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c	Wed Jun  5 19:46:35 2019	(r348696)
@@ -2361,6 +2361,7 @@ us_compare(const void *larg, const void *rarg, void *u
 		case ZFS_PROP_NAME:
 			propname = "name";
 			if (numname) {
+compare_nums:
 				(void) nvlist_lookup_uint64(lnvl, propname,
 				    &lv64);
 				(void) nvlist_lookup_uint64(rnvl, propname,
@@ -2368,10 +2369,12 @@ us_compare(const void *larg, const void *rarg, void *u
 				if (rv64 != lv64)
 					rc = (rv64 < lv64) ? 1 : -1;
 			} else {
-				(void) nvlist_lookup_string(lnvl, propname,
-				    &lvstr);
-				(void) nvlist_lookup_string(rnvl, propname,
-				    &rvstr);
+				if ((nvlist_lookup_string(lnvl, propname,
+						&lvstr) == ENOENT) ||
+				    (nvlist_lookup_string(rnvl, propname,
+						&rvstr) == ENOENT)) {
+					goto compare_nums;
+				}
 				rc = strcmp(lvstr, rvstr);
 			}
 			break;


More information about the svn-src-all mailing list