rm -rf can fail sometimes with an error from fts_read. Make it honor
fflag to ignore fts_read errors, but stop deleting from that directory because no further progress can be made. When building a kernel with a high -j value on a high core count machine, during the cleanobj phase we can wind up doing multiple rm -rf at the same time for modules that have subdirectories. This exposed this race (sometimes) as fts_read can return an error if the directory is removed by another rm -rf. Since the intent of the -f flag was to ignore errors, even if this was a bug in fts_read, we should ignore the error like we've been instructed to do.
This commit is contained in:
parent
e3a6cb96d6
commit
413a368c90
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=268376
@ -335,7 +335,7 @@ rm_tree(char **argv)
|
||||
warn("%s", p->fts_path);
|
||||
eval = 1;
|
||||
}
|
||||
if (errno)
|
||||
if (!fflag && errno)
|
||||
err(1, "fts_read");
|
||||
fts_close(fts);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user