bin/104044: [patch] rc.d/cleartmp works incorrectly
Yar Tikhiy
yar at comp.chem.msu.su
Mon Oct 16 13:19:09 UTC 2006
On Thu, Oct 12, 2006 at 10:40:21AM +0000, Andrey Simonenko wrote:
> The following reply was made to PR bin/104044; it has been noted by GNATS.
>
> From: Andrey Simonenko <simon at comsys.ntu-kpi.kiev.ua>
> To: Yar Tikhiy <yar at comp.chem.msu.su>
> Cc: Florent Thoumie <flz at xbsd.org>, bug-followup at freebsd.org
> Subject: Re: bin/104044: [patch] rc.d/cleartmp works incorrectly
> Date: Thu, 12 Oct 2006 13:36:29 +0300
>
> On Tue, Oct 10, 2006 at 03:31:35PM +0400, Yar Tikhiy wrote:
> > On Tue, Oct 10, 2006 at 02:34:43PM +0400, Yar Tikhiy wrote:
> > >
> > > > 2. Ignore error code from rm and always run find, that is
> > > > use "rm ... ; find ..." instead of "rm ... && find ...":
> > > > one can create many files with long names and rm will not
> > > > be called because of "Argument list too long" error, so
> > > > find should do all of the work.
> > >
> > > By the way, did you consider omitting the first rm at all and just
> > > using "find ... -print0 | xargs -0 rm -rf" ? The first rm can be
> > > an optimization as long as we use find with -exec. OTOH, xargs -0
> > > would buy us the same performance and robustness without hacks.
> > > Both find and xargs should be available to cleartmp. Here's the
> > > code. Note "type -d" omitted.
> > >
> > > if checkyesno ${rcvar1}; then
> > > # This is not needed with mfs /tmp, but doesn't hurt anything.
> > > echo "Clearing /tmp."
> > > find -x /tmp/. ! -name . \
> > > ! \( -name lost+found -type d -user root \) \
> > > ! \( \( -name quota.user -or -name quota.group \) \
> > > -type f -user root \) \
> > > -prune -print0 | xargs -0 rm -rf
> > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > > elif ...
> >
> > It seems we can use just "-delete" here. If run as root, find
> > deletes entries with funny permissions or flags as well as rm does.
> > BTW, find will descend into lost+found and delete its contents in
> > both cases (rm w/ -prune, or -delete), which is good IMHO.
JFTR: Using -delete was a stupid idea of mine. If we want to
preserve lost+found and quota.* _only_ in /tmp itself, then we have
to use "-prune -exec". The committed version doesn't use -delete.
--
Yar
More information about the freebsd-rc
mailing list