Re: [PATCH 0/2] vfs: report truthful FIDEDUPERANGE progress safely
Christian Brauner <[email protected]>
| Newsgroups | org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <20260812-gastgewerbe-dementieren-landzunge-db991673a96a@brauner> |
On 2026-08-05 15:14 +0800, Matthias Goergens wrote: > FIDEDUPERANGE currently reports the requested length even when the > filesystem shortens a destination range and deduplicates fewer bytes. A > previous one-line correction was reverted after generic/517 exposed the old > expectation and reviewers raised the risk that existing consumers could loop > on a successful zero-progress result. > > Patch 1 makes a non-zero request shortened to zero fail per destination with > -EINVAL, while preserving explicit zero-length success. Patch 2 then reports > the filesystem's actual positive progress. This ordering keeps every > intermediate kernel safe for callers that advance by bytes_deduped. > > The paired fstests update corrects generic/517 and adds raw ioctl coverage for > zero-length and mixed multi-destination results. Both tests pass on Btrfs and > XFS. Installed duperemove exits successfully on the measured corpus. Installed > rmlint does not hang or silently over-report; it exits 1 after the final > unaligned tail receives -EINVAL, which is recorded explicitly for review. > > A current-source consumer audit supports that ABI choice: duperemove completes > the request on a non-zero status; rmlint, bees and jdupes surface -EINVAL as > failure without retrying; dduper and xfs_io stop but can still report command > success. None retries, hangs or risks data corruption. Thus -EINVAL is the > only truthful result that also avoids exposing successful zero progress to > deployed duperemove binaries. > > Matthias Goergens (2): > vfs: fail dedupe requests that cannot make progress > vfs: report the amount of bytes actually deduplicated Needs input from Amir.