[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Changes to the filesystem while find is running - comments?

From: Tim Nelson
Subject: Re: Changes to the filesystem while find is running - comments?
Date: Fri, 26 Nov 2004 15:23:48 +1100 (EST)

On Thu, 25 Nov 2004, James Youngman wrote:

On Thu, Nov 25, 2004 at 09:45:25AM +1100, Tim Nelson wrote:

        Ok, so the sequence in find is currently (in pseudo-perl):
$old = stat $dir;
chdir $dir;
$new = stat $dir;
wd_sanity_check($old, $new);

No, we lstat(".") rather than $dir.

        If your information is correct, then what we need to do is
something like:
$tmp = $dir . '.';
$old = stat $tmp;
chdir $dir;
$new = stat $tmp;
wd_sanity_check($old, $new);

        Would that do it, or am I missing something?

What we need to do - and what we do do - is this -

$tmp = <base name of subdirectory>;

According to the description by Steve Revilak which was sent through, if you at this point do:

$tmp = $tmp + '.';

...then that will fix the problem. So instead of statting eg. "/usr/local/bin", you'll be statting "/usr/local/bin/." (note the dot in the second one).

$old = lstat $tmp;   /* line A */
chdir $dir;          /* line B */
$new = lstat ".";    /* line C */
wd_sanity_check($old, $new);

        Assuming that accessing /mount/SUBDIR/. also triggers a mount on
the other OSs, the example above should work on everything.  If it
doesn't, we might have to do two stats the first time, one on $dir and
then one on $tmp.

On Solaris, the filesystem gets mounted at either line B or C (I'm not
sure which).  Hence wd_sanity_check() needed to be changed to
understand why $old differs from $new in this case.

        Point C, according to Steve Revilak.


Tim Nelson
Server Administrator
WebAlive Technologies Global
Level 1 Innovation Building, Digital Harbour
1010 LaTrobe Street
Docklands, Melbourne, Vic, 3008
Phone: +61 3 9934 0812
Fax: +61 3 9934 0899
E-mail: address@hidden

reply via email to

[Prev in Thread] Current Thread [Next in Thread]