HomeFreeBSD

ddt: block scan until log is flushed, and flush aggressively

Description

ddt: block scan until log is flushed, and flush aggressively

The dedup log does not have a stable cursor, so its not possible to
persist our current scan location within it across pool reloads.
Beccause of this, when walking (scanning), we can't treat it like just
another source of dedup entries.

Instead, when a scan is wanted, we switch to an aggressive flushing
mode, pushing out entries older than the scan start txg as fast as we
can, before starting the scan proper.

Entries after the scan start txg will be handled via other methods; the
DDT ZAPs and logs will be written as normal, and blocks not seen yet
will be offered to the scan machinery as normal.

Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Co-authored-by: Allan Jude <allan@klarasystems.com>
Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
Sponsored-by: Klara, Inc.
Sponsored-by: iXsystems, Inc.
Closes #15895

Details

Provenance
rob.norris_klarasystems.comAuthored on Oct 16 2023, 12:52 AM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Aug 16 2024, 7:03 PM
Parents
rGcd69ba3d49cd: ddt: dedup log
Branches
Unknown
Tags
Unknown