Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Jul 2014 23:21:21 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r268376 - head/bin/rm
Message-ID:  <201407072321.s67NLL7p070713@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201407072321.s67NLL7p070713>