svn commit: r268376 - head/bin/rm
Warner Losh
imp at FreeBSD.org
Mon Jul 7 23:21:21 UTC 2014
Author: imp
Date: Mon Jul 7 23:21:20 2014
New Revision: 268376
URL: http://svnweb.freebsd.org/changeset/base/268376
Log:
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.
Modified:
head/bin/rm/rm.c
Modified: head/bin/rm/rm.c
==============================================================================
--- head/bin/rm/rm.c Mon Jul 7 23:21:15 2014 (r268375)
+++ head/bin/rm/rm.c Mon Jul 7 23:21:20 2014 (r268376)
@@ -335,7 +335,7 @@ err:
warn("%s", p->fts_path);
eval = 1;
}
- if (errno)
+ if (!fflag && errno)
err(1, "fts_read");
fts_close(fts);
}
More information about the svn-src-all
mailing list