Maybe I shouldn't be doing the "talk without patching" thing, but I'm not 
exactly at guru level with the autofs code, so...

On Wed, 9 Feb 2005 [EMAIL PROTECTED] wrote:

> Multi-mount map entries must be treated as a single unit.
> This is so because nested mounts are allowed within them.
> Consider
> 
> foo   -rw \
> /one/a        server:/one/a \
> /one/b        server:/one/b \
> /one/b/c server:/one/b/c
> 
> If this isn't handled as a single unit then it's possible for /one/b/c to be
> mounted before /one/b. This could happen due to a map update, for example.

I've always wondered about that.  To mount on /net/foo/one/b/c, don't we 
have to readdir /net/foo/one/b first, find the inode of mount point c, and 
stat it?  That would (should :-) trigger an attempt by the module to have 
/net/foo/one/b mounted.  

Or is it a single thread issue, so the daemon can't begin mounting 
/net/foo/one/b until it's finished mounting /net/foo/one/b/c (which it 
can't do until after /net/foo/one/b is mounted)?

> So, just as with individual mount entries, it can't be updated until it's
> umounted and mounted again.

I think you're saying that if the new map says to mount /net/foo/one/b/c on 
a different mount point (or to obtain it from a different place), the 
daemon will remember the new map but (obviously) can't make it happen until 
the old mount times out.  If ever.  Using the "multiple uni-mounts" model 
described below, actually there should be no problem obeying new map 
content for directories that aren't mounted; it's just not possible to get 
rid of old content immediately.

> So the key in the example below that is sent to the daemon is "foo/dir/aaa"
> when in fact the key for the map entry is "foo".
> 
> Consequently it's not found in the map.

Hmm.  It sounds like the map lookup algorithm needs to have foo/dir/aaa 
available as a key and not just the first word of the map row, "foo".  In
other words, multiple keys point to one map row.  

Alternatively, you might think of transforming the multi-mount into a set 
of uni-mounts.  The example above would turn into:

foo             mkdir but don't mount anything
foo/one         mkdir but don't mount anything
foo/one/a       -rw     server:/one/a
foo/one/b       -rw     server:/one/b
foo/one/b/c     -rw     server:/one/b/c

Not that you would accept this syntax from a map file, but the term on the
left is just what the module would send up, and the term on the right is
what the daemon needs to do when it sees that key.

Does any of this make any sense?


James F. Carter          Voice 310 825 2897    FAX 310 206 6673
UCLA-Mathnet;  6115 MSA; 405 Hilgard Ave.; Los Angeles, CA, USA  90095-1555
Email: [EMAIL PROTECTED]    http://www.math.ucla.edu/~jimc (q.v. for PGP key)

_______________________________________________
autofs mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/autofs

Reply via email to