aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/openzfs/module/zfs/dsl_dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/openzfs/module/zfs/dsl_dir.c')
-rw-r--r--sys/contrib/openzfs/module/zfs/dsl_dir.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/sys/contrib/openzfs/module/zfs/dsl_dir.c b/sys/contrib/openzfs/module/zfs/dsl_dir.c
index 1b60fa620b8d..71f151b14d9b 100644
--- a/sys/contrib/openzfs/module/zfs/dsl_dir.c
+++ b/sys/contrib/openzfs/module/zfs/dsl_dir.c
@@ -272,9 +272,11 @@ dsl_dir_hold_obj(dsl_pool_t *dp, uint64_t ddobj,
err = zap_lookup(dp->dp_meta_objset,
dd->dd_object, DD_FIELD_LIVELIST,
sizeof (uint64_t), 1, &obj);
- if (err == 0)
- dsl_dir_livelist_open(dd, obj);
- else if (err != ENOENT)
+ if (err == 0) {
+ err = dsl_dir_livelist_open(dd, obj);
+ if (err != 0)
+ goto errout;
+ } else if (err != ENOENT)
goto errout;
}
}
@@ -2301,15 +2303,18 @@ dsl_dir_is_zapified(dsl_dir_t *dd)
return (doi.doi_type == DMU_OTN_ZAP_METADATA);
}
-void
+int
dsl_dir_livelist_open(dsl_dir_t *dd, uint64_t obj)
{
objset_t *mos = dd->dd_pool->dp_meta_objset;
ASSERT(spa_feature_is_active(dd->dd_pool->dp_spa,
SPA_FEATURE_LIVELIST));
- dsl_deadlist_open(&dd->dd_livelist, mos, obj);
+ int err = dsl_deadlist_open(&dd->dd_livelist, mos, obj);
+ if (err != 0)
+ return (err);
bplist_create(&dd->dd_pending_allocs);
bplist_create(&dd->dd_pending_frees);
+ return (0);
}
void
@@ -2489,6 +2494,5 @@ EXPORT_SYMBOL(dsl_dir_set_quota);
EXPORT_SYMBOL(dsl_dir_set_reservation);
#endif
-/* CSTYLED */
ZFS_MODULE_PARAM(zfs, , zvol_enforce_quotas, INT, ZMOD_RW,
"Enable strict ZVOL quota enforcment");