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
d55a30df87
commit
feebbf9480
@ -335,7 +335,7 @@ rm_tree(char **argv)
|
|||||||
warn("%s", p->fts_path);
|
warn("%s", p->fts_path);
|
||||||
eval = 1;
|
eval = 1;
|
||||||
}
|
}
|
||||||
if (errno)
|
if (!fflag && errno)
|
||||||
err(1, "fts_read");
|
err(1, "fts_read");
|
||||||
fts_close(fts);
|
fts_close(fts);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user