If a filesystem has a realtime device or an external log device, the
media scan can start up a separate readverify controller (and workqueue)
to handle that. Each of those controllers can call progress_add, so we
need to bump up nr_threads so that the progress reports controller knows
to make its ptvar big enough to handle all these threads.
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
*items = cvt_off_fsb_to_b(&ctx->mnt,
(d_blocks - d_bfree) + (r_blocks - r_bfree));
+
+ /*
+ * Each read-verify pool starts a thread pool, and each worker thread
+ * can contribute to the progress counter. Hence we need to set
+ * nr_threads appropriately to handle that many threads.
+ */
*nr_threads = disk_heads(ctx->datadev);
+ if (ctx->rtdev)
+ *nr_threads += disk_heads(ctx->rtdev);
+ if (ctx->logdev)
+ *nr_threads += disk_heads(ctx->logdev);
*rshift = 20;
return 0;
}