d7de5b109flogs: show reindex progress in `ImportBlocks` (Lőrinc) Pull request description: ### Summary When triggering a reindex, users have no indication of progress. ### Fix This patch precomputes the total number of block files so progress can be shown. Instead of only displaying which block file is being processed, it now shows the percent complete. ### Reproducer + expected results ```bash cmake -B build -DCMAKE_BUILD_TYPE=Release && make -C build -j && ./build/bin/bitcoind -datadir=demo -reindex ``` Before, the block files were shown one-by-one, there's no way to see how much work is left: ``` Reindexing block file blk00000.dat... Loaded 119920 blocks from external file in 1228ms Reindexing block file blk00001.dat... Loaded 10671 blocks from external file in 284ms Reindexing block file blk00002.dat... Loaded 5459 blocks from external file in 263ms Reindexing block file blk00003.dat... Loaded 5595 blocks from external file in 267ms ``` After the change we add a percentage: ``` Reindexing block file blk00000.dat (0% complete)... Loaded 119920 blocks from external file in 1255ms Reindexing block file blk00001.dat (1% complete)... Loaded 10671 blocks from external file in 303ms Reindexing block file blk00002.dat (2% complete)... Loaded 5459 blocks from external file in 278ms Reindexing block file blk00003.dat (3% complete)... Loaded 5595 blocks from external file in 285ms ``` ACKs for top commit: enirox001: Concept ACKd7de5b1rkrux: lgtm ACKd7de5b109fdanielabrozzoni: tACKd7de5b109f- code reviewed and tested on my archival node. maflcko: review ACKd7de5b109f💇 Tree-SHA512: 359a539b781ad8b73e2a616c951567062a76be27cf90e5b88bb5309295af9cd7994e327f185bacc1482b43b892b38329593b4043a5e71d8800e3e4b7a3954310
src/node/
The src/node/ directory contains code that needs to access node state
(state in CChain, CBlockIndex, CCoinsView, CTxMemPool, and similar
classes).
Code in src/node/ is meant to be segregated from code in
src/wallet/ and src/qt/, to ensure wallet and GUI
code changes don't interfere with node operation, to allow wallet and GUI code
to run in separate processes, and to perhaps eventually allow wallet and GUI
code to be maintained in separate source repositories.
As a rule of thumb, code in one of the src/node/,
src/wallet/, or src/qt/ directories should avoid
calling code in the other directories directly, and only invoke it indirectly
through the more limited src/interfaces/ classes.
This directory is at the moment
sparsely populated. Eventually more substantial files like
src/validation.cpp and
src/txmempool.cpp might be moved there.