From e9725abd83166bf190dee859bbf0cefe0abb0a2b Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Mon, 23 Oct 2023 09:55:36 -0700 Subject: [PATCH] Revert "Do not persist user/group/project quota zap objects when unneeded" This reverts commit 797f55ef12d752d2a7fb04fae5d24e019adf2a1d which was causing a VERIFY failure when running the project quota tests. Signed-off-by: Brian Behlendorf Closes #15438 --- module/zfs/zfs_quota.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/module/zfs/zfs_quota.c b/module/zfs/zfs_quota.c index 56f9d22ed0..9b351eefc0 100644 --- a/module/zfs/zfs_quota.c +++ b/module/zfs/zfs_quota.c @@ -347,32 +347,18 @@ zfs_set_userquota(zfsvfs_t *zfsvfs, zfs_userquota_prop_t type, if (*objp == 0) { *objp = zap_create(zfsvfs->z_os, DMU_OT_USERGROUP_QUOTA, DMU_OT_NONE, 0, tx); - VERIFY0(zap_add(zfsvfs->z_os, MASTER_NODE_OBJ, + VERIFY(0 == zap_add(zfsvfs->z_os, MASTER_NODE_OBJ, zfs_userquota_prop_prefixes[type], 8, 1, objp, tx)); } + mutex_exit(&zfsvfs->z_lock); if (quota == 0) { err = zap_remove(zfsvfs->z_os, *objp, buf, tx); if (err == ENOENT) err = 0; - /* - * If the quota contains no more entries after the entry - * was removed, destroy the quota zap and remove the - * reference from zfsvfs. This will save us unnecessary - * zap_lookups for the quota during writes. - */ - uint64_t zap_nentries; - VERIFY0(zap_count(zfsvfs->z_os, *objp, &zap_nentries)); - if (zap_nentries == 0) { - VERIFY0(zap_remove(zfsvfs->z_os, MASTER_NODE_OBJ, - zfs_userquota_prop_prefixes[type], tx)); - VERIFY0(zap_destroy(zfsvfs->z_os, *objp, tx)); - *objp = 0; - } } else { err = zap_update(zfsvfs->z_os, *objp, buf, 8, 1, "a, tx); } - mutex_exit(&zfsvfs->z_lock); ASSERT(err == 0); if (fuid_dirtied) zfs_fuid_sync(zfsvfs, tx);