aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2010-08-26 10:34:33 -0700
committerBrian Behlendorf <[email protected]>2010-08-31 08:38:47 -0700
commit8a8f5c6b3ca44248b47a4a65515d7828803c71ff (patch)
treef882882ab7f2e06060756a2356e29ef1f90f0e37
parent5cc556b447380bf5fed181d3aa5f138618cd69c8 (diff)
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 <[email protected]>
-rw-r--r--module/zfs/zfs_ioctl.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/module/zfs/zfs_ioctl.c b/module/zfs/zfs_ioctl.c
index 4e26cae20..3e149ab33 100644
--- a/module/zfs/zfs_ioctl.c
+++ b/module/zfs/zfs_ioctl.c
@@ -1748,9 +1748,10 @@ zfs_ioc_objset_stats_impl(zfs_cmd_t *zc, objset_t *os)
*/
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);
}