From be0fb348b8f9e535510d37cc6b84bec480ef5fa1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
Date: Sat, 11 Jan 2020 22:11:16 +0100
Subject: [PATCH] daemon: Fix the displayed GC estimated progress.

* nix/libstore/gc.cc (LocalStore::deletePathRecursive): Fix computation
of 'fraction'.  Take 'bytesInvalidated' into account.
---
 nix/libstore/gc.cc | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/nix/libstore/gc.cc b/nix/libstore/gc.cc
index 5043963fa24..77d7fa2dc70 100644
--- a/nix/libstore/gc.cc
+++ b/nix/libstore/gc.cc
@@ -426,13 +426,14 @@ void LocalStore::deletePathRecursive(GCState & state, const Path & path)
     }
 
     if (state.options.maxFreed != ULLONG_MAX) {
-	double fraction = state.results.bytesFreed + size
-	    / state.options.maxFreed;
+	auto freed = state.results.bytesFreed + state.bytesInvalidated;
+	double fraction = ((double) freed) / (double) state.options.maxFreed;
 	unsigned int percentage = (fraction > 1. ? 1. : fraction) * 100.;
 	printMsg(lvlInfo, format("[%1%%%] deleting '%2%'") % percentage % path);
     } else {
-	size_t total = (state.results.bytesFreed + size) / (1024 * 1024);
-	printMsg(lvlInfo, format("[%1% MiB] deleting '%2%'") % total % path);
+	auto freed = state.results.bytesFreed + state.bytesInvalidated;
+	freed /=  1024ULL * 1024ULL;
+	printMsg(lvlInfo, format("[%1% MiB] deleting '%2%'") % freed % path);
     }
 
     state.results.paths.insert(path);
-- 
GitLab