Add missing zfs_ioc_objset_stats() error handling
Interestingly this looks like an upstream bug as well. If for some reason we are unable to get a zvols statistics, because perhaps the zpool is hopelessly corrupt, we would trigger the VERIFY. This commit adds the proper error handling just to propagate the error back to user space. Now the user space tools still must handle this properly but in the worst case the tool will crash or perhaps have some missing output. That's far far better than crashing the host. Closes #45
This commit is contained in:
parent
b3c82b1b18
commit
89f0abf9b5
|
@ -0,0 +1,12 @@
|
|||
From: Brian Behlendorf <behlendorf1@llnl.gov>
|
||||
Subject: [PATCH] fix zfs_ioc_objset_stats
|
||||
|
||||
Interestingly this looks like an upstream bug as well. If for some
|
||||
reason we are unable to get a zvols statistics, because perhaps the
|
||||
zpool is hopelessly corrupt, we would trigger the VERIFY. This
|
||||
commit adds the proper error handling just to propagate the error
|
||||
back to user space. Now the user space tools still must handle this
|
||||
properly but in the worst case the tool will crash or perhaps have
|
||||
some missing output. That's far far better than crashing the host.
|
||||
|
||||
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
|
|
@ -1611,9 +1611,10 @@ zfs_ioc_objset_stats(zfs_cmd_t *zc)
|
|||
*/
|
||||
if (!zc->zc_objset_stats.dds_inconsistent) {
|
||||
if (dmu_objset_type(os) == DMU_OST_ZVOL)
|
||||
VERIFY(zvol_get_stats(os, nv) == 0);
|
||||
error = zvol_get_stats(os, nv);
|
||||
}
|
||||
error = put_nvlist(zc, nv);
|
||||
if (error == 0)
|
||||
error = put_nvlist(zc, nv);
|
||||
nvlist_free(nv);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue