HomeFreeBSD

rm(1): remove whiteouts when forcibly removing directories

Description

rm(1): remove whiteouts when forcibly removing directories

Commit 2ed053cde5 changed UFS' VOP_RMDIR() behavior to no longer
ignore whiteouts when determining whether a directory is empty,
unless explicitly requested by the caller. However, this also
necessitates a change to rm(1) to avoid breaking the expected
behavior when forcibly removing directory hierarchies via rm -fr.
I neglected to make this follow-on change despite discussing it
in the review for the breaking commit (D45987).

Finally address the breakage by making rm -fr imply FTS_WHITEOUT
when rm(1) reads directory contents via fts_read(3). While here,
also fix a logic error which produces a spurious 'No error' warning
message on stdout for each deleted whiteout.

Reported by: csjp
Reviewed by: csjp, kib, olce
Differential Revision: https://reviews.freebsd.org/D53640

(cherry picked from commit 8b92a6ad597e224b616a8b1d6983f3b55c85308e)

Details

Provenance
jahAuthored on Sat, Nov 8, 4:23 AM
Reviewer
csjp
Differential Revision
D53640: rm(1): remove whiteouts when forcibly removing directories
Parents
rG0ff7c9251790: vmimage.subr: Don't log missing files from pkgs
Branches
Unknown
Tags
Unknown