]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Fix 'zfs get {user|group}objused@' functionality
authorLOLi <loli10K@users.noreply.github.com>
Wed, 29 Nov 2017 19:59:22 +0000 (20:59 +0100)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 29 Nov 2017 19:59:22 +0000 (11:59 -0800)
Fix a regression accidentally introduced in 1b81ab4 that prevents
'zfs get {user|group}objused@' from correctly reporting the requested
value.

Update "userspace_003_pos.ksh" and "groupspace_003_pos.ksh" to verify
this functionality.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov>
Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
Closes #6908

module/zfs/zfs_vfsops.c
tests/zfs-tests/tests/functional/userquota/groupspace_003_pos.ksh
tests/zfs-tests/tests/functional/userquota/userspace_003_pos.ksh

index af5593c2e0c58cafe904d64780384a9d760b0f18..7286773d98b98a9022d87e5627a3331040e165ac 100644 (file)
@@ -740,7 +740,7 @@ zfs_userspace_one(zfsvfs_t *zfsvfs, zfs_userquota_prop_t type,
                return (0);
 
        if (type == ZFS_PROP_USEROBJUSED || type == ZFS_PROP_GROUPOBJUSED) {
-               strlcpy(buf, DMU_OBJACCT_PREFIX, DMU_OBJACCT_PREFIX_LEN);
+               strlcpy(buf, DMU_OBJACCT_PREFIX, DMU_OBJACCT_PREFIX_LEN + 1);
                offset = DMU_OBJACCT_PREFIX_LEN;
        }
 
index 5f5965b648c53a60424b5d22928916554b893d31..56b7af0315508214801d1ec71a9c87972fdd17f7 100755 (executable)
@@ -30,6 +30,7 @@
 #
 
 . $STF_SUITE/include/libtest.shlib
+. $STF_SUITE/include/math.shlib
 . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib
 
 #
@@ -56,10 +57,15 @@ function cleanup
 function group_object_count
 {
        typeset fs=$1
-       typeset user=$2
-       typeset cnt=$(zfs groupspace -oname,objused $fs | grep $user |
-                       awk '{print $2}')
-       echo $cnt
+       typeset group=$2
+       typeset -i groupspacecnt=$(zfs groupspace -oname,objused $fs |
+           awk /$group/'{print $2}')
+       typeset -i zfsgetcnt=$(zfs get -H -ovalue groupobjused@$group $fs)
+
+       # 'zfs groupspace' and 'zfs get groupobjused@' should be equal
+       verify_eq "$groupspacecnt" "$zfsgetcnt" "groupobjused@$group"
+
+       echo $groupspacecnt
 }
 
 log_onexit cleanup
index 671e144b092a530c2039cecb32fde9b381a66ca2..96c3b1930c4032d1871dc020df0efdf7ccf74823 100755 (executable)
@@ -30,6 +30,7 @@
 #
 
 . $STF_SUITE/include/libtest.shlib
+. $STF_SUITE/include/math.shlib
 . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib
 
 #
@@ -58,9 +59,14 @@ function user_object_count
 {
        typeset fs=$1
        typeset user=$2
-       typeset cnt=$(zfs userspace -oname,objused $fs |
+       typeset -i userspacecnt=$(zfs userspace -oname,objused $fs |
            awk /$user/'{print $2}')
-       echo $cnt
+       typeset -i zfsgetcnt=$(zfs get -H -ovalue userobjused@$user $fs)
+
+       # 'zfs userspace' and 'zfs get userobjused@' should be equal
+       verify_eq "$userspacecnt" "$zfsgetcnt" "userobjused@$user"
+
+       echo $userspacecnt
 }
 
 log_onexit cleanup