HomeFreeBSD

Update resume token at object receive.

Description

Update resume token at object receive.

Before this change resume token was updated only on data receive.
Usually it is enough to resume replication without much overlap.
But we've got a report of a curios case, where replication source
was traversed with recursive grep, which through enabled atime
modified every object without modifying any data. It produced
several gigabytes of replication traffic without a single data
write and so without a single resume point.

While the resume token was not designed to resume from an object,
I've found that the send implementation always sends object before
any data. So by requesting resume from offset 0 we are effectively
resuming from the object, followed (or not) by the data at offset
0, just as we need it.

Reviewed-by: Allan Jude <allan@klarasystems.com>
Reviewed-by: Paul Dagnelie <pcd@delphix.com>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Sponsored by: iXsystems, Inc.
Closes #15927

Details

Provenance
mavAuthored on Mar 21 2024, 12:22 AM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Apr 19 2024, 5:13 PM
Parents
rG793a2cff2a0c: Linux: Cleanup taskq threads spawn/exit
Branches
Unknown
Tags
Unknown