Handle zap_lookup() failure in ddt_object_load()
Failing to lookup a name in the spa_ddt_stat_object should not result in a panic in ddt_object_load(). The error can be safely returned to the caller for handling resulting in a useful user error message. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #3370
This commit is contained in:
parent
9f5ba90f9f
commit
ff9b1d0725
|
@ -115,13 +115,14 @@ ddt_object_load(ddt_t *ddt, enum ddt_type type, enum ddt_class class)
|
||||||
|
|
||||||
error = zap_lookup(ddt->ddt_os, DMU_POOL_DIRECTORY_OBJECT, name,
|
error = zap_lookup(ddt->ddt_os, DMU_POOL_DIRECTORY_OBJECT, name,
|
||||||
sizeof (uint64_t), 1, &ddt->ddt_object[type][class]);
|
sizeof (uint64_t), 1, &ddt->ddt_object[type][class]);
|
||||||
|
|
||||||
if (error != 0)
|
if (error != 0)
|
||||||
return (error);
|
return (error);
|
||||||
|
|
||||||
VERIFY0(zap_lookup(ddt->ddt_os, ddt->ddt_spa->spa_ddt_stat_object, name,
|
error = zap_lookup(ddt->ddt_os, ddt->ddt_spa->spa_ddt_stat_object, name,
|
||||||
sizeof (uint64_t), sizeof (ddt_histogram_t) / sizeof (uint64_t),
|
sizeof (uint64_t), sizeof (ddt_histogram_t) / sizeof (uint64_t),
|
||||||
&ddt->ddt_histogram[type][class]));
|
&ddt->ddt_histogram[type][class]);
|
||||||
|
if (error != 0)
|
||||||
|
return (error);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Seed the cached statistics.
|
* Seed the cached statistics.
|
||||||
|
|
Loading…
Reference in New Issue