Fix crash and precision of ETA with zones

If zonesize was bigger than zoneskip, we could encounter a divide by
zero when calculating the number of bytes.

Additionally, the math was just wrong for most cases of zone settings.
Improve that.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/eta.c b/eta.c
index cfb8679..5ef31c6 100644
--- a/eta.c
+++ b/eta.c
@@ -139,6 +139,15 @@
 		bytes_total = td->fill_device_size;
 	}
 
+	if (td->o.zone_size && td->o.zone_skip && bytes_total) {
+		unsigned int nr_zones;
+		uint64_t zone_bytes;
+
+		zone_bytes = bytes_total + td->o.zone_size + td->o.zone_skip;
+		nr_zones = (zone_bytes - 1) / (td->o.zone_size + td->o.zone_skip);
+		bytes_total -= nr_zones * td->o.zone_skip;
+	}
+
 	/*
 	 * if writing and verifying afterwards, bytes_total will be twice the
 	 * size. In a mixed workload, verify phase will be the size of the
@@ -156,9 +165,6 @@
 			bytes_total <<= 1;
 	}
 
-	if (td->o.zone_size && td->o.zone_skip)
-		bytes_total /= (td->o.zone_skip / td->o.zone_size);
-
 	if (td->runstate == TD_RUNNING || td->runstate == TD_VERIFYING) {
 		double perc, perc_t;