usr/src/uts/common/fs/zfs/ddt.c
changeset 10956 0c81acaaf614
parent 10922 e2081f502306
child 11125 fca3e6d28599
--- a/usr/src/uts/common/fs/zfs/ddt.c	Thu Nov 05 10:44:03 2009 +0530
+++ b/usr/src/uts/common/fs/zfs/ddt.c	Wed Nov 04 21:23:08 2009 -0800
@@ -398,11 +398,10 @@
 	return (B_TRUE);
 }
 
-uint64_t
-ddt_get_pool_dedup_ratio(spa_t *spa)
+static void
+ddt_get_dedup_stats(spa_t *spa, ddt_stat_t *dds_total)
 {
 	ddt_histogram_t ddh_total = { 0 };
-	ddt_stat_t dds_total = { 0 };
 
 	for (enum zio_checksum c = 0; c < ZIO_CHECKSUM_FUNCTIONS; c++) {
 		ddt_t *ddt = spa->spa_ddt[c];
@@ -415,8 +414,24 @@
 		}
 	}
 
-	ddt_histogram_stat(&dds_total, &ddh_total);
+	ddt_histogram_stat(dds_total, &ddh_total);
+}
+
+uint64_t
+ddt_get_dedup_dspace(spa_t *spa)
+{
+	ddt_stat_t dds_total = { 0 };
 
+	ddt_get_dedup_stats(spa, &dds_total);
+	return (dds_total.dds_ref_dsize - dds_total.dds_dsize);
+}
+
+uint64_t
+ddt_get_pool_dedup_ratio(spa_t *spa)
+{
+	ddt_stat_t dds_total = { 0 };
+
+	ddt_get_dedup_stats(spa, &dds_total);
 	if (dds_total.dds_dsize == 0)
 		return (100);