On Tue, 26 Apr 2005, Jeff Moyer wrote:

> ==> Regarding Re: [patch] get rid of is_mounted checks in cache_clean; Ian 
> Kent <[EMAIL PROTECTED]> adds:
> 
> raven> On Mon, 25 Apr 2005, Jeff Moyer wrote:
> >> Hi, Ian,
> >> 
> >> I'm not sure what purpose the following check serves in the cache_clean
> >> function:
> >> 
> >> if (is_mounted(_PATH_MOUNTED, path)) { free(path); continue; }
> >> 
> >> In the event that the map was updated, we signal the daemon to do a
> >> re-read of the entire map.  If the mount finishes before the daemon is
> >> able to process this signal, we end up not pruning the old entry for the
> >> given path.  Now, because we append entries to the cache, we end up with
> >> the stale entry first, followed by the updated entry.  This means that
> >> subsequent lookups will give the old entry.
> 
> raven> This was originally meant to stop busy (currently mounted) entries
> raven> from disappearing from the cache.
> 
> raven> I'll check whether this is actually needed and get back.
> 
> raven> One thing that comes to mind is that the direct mount rework design
> raven> might need this.
> 
> Well, unfortunately I cannot comment on that.  We had have a very precise
> definite of what it means to be in the cache, then, if there are to be
> side-effects of removing entries.
> 
> Anyway, the patch I sent was somewhat incomplete.  Look at this:
> 
>               if (me->age < age) {
>                       pred->next = me->next;
>                       free(me->key);
>                       free(me->mapent);
>                       free(me);
>                       me = pred;
>                       rmdir_path(path);
>               }
> 
> The rmdir_path is unneeded, and I would argue has no business being here.
> It is the job of the umount_multi code to clean up the directory tree, not
> the cache code.  Lucky for us, the umount_multi path doesn't error out if a
> directory is removed for it (thinking of odd races, here).  Anyway, the
> attached patch (diffed against current cvs) is more complete in this
> respect.  It gets rid of these rmdir_path calls.

I remember now why this is needed.

The directory creation/removal isn't done at mount/umount for browsable 
maps. It's done when the map is updated.

Ian

_______________________________________________
autofs mailing list
autofs@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/autofs

Reply via email to