All of lore.kernel.org
 help / color / mirror / Atom feed
* AutoFS creates unmountable directories when ghosting is enabled
@ 2010-12-10 19:10 Leonardo Chiquitto
  2010-12-15  2:49 ` Ian Kent
  0 siblings, 1 reply; 6+ messages in thread
From: Leonardo Chiquitto @ 2010-12-10 19:10 UTC (permalink / raw)
  To: autofs

Hello Ian and list,

I'd like to forward a bug report we received on openSUSE's Bugzilla [1].
Please consider the following setup to reproduce the problem:

host:~ # grep automount /etc/nsswitch.conf
automount:	files

host:~ # cat /etc/auto.master
/vol	/etc/auto.vol

host:~ # cat /etc/auto.vol
data1	-fstype=nfs,ro,rsize=8192,wsize=8192,intr,nolock,nosuid	srv:/data1
data2	-fstype=nfs,ro,rsize=8192,wsize=8192,intr,nolock,nosuid srv:/data2
data3	-fstype=nfs,ro,rsize=8192,wsize=8192,intr,nolock,nosuid srv:/data3

host:~ # cat /etc/sysconfig/autofs
AUTOFS_OPTIONS=""
LOCAL_OPTIONS=""
APPEND_OPTIONS="yes"
DEFAULT_MASTER_MAP_NAME="auto.master"
DEFAULT_TIMEOUT=600
DEFAULT_BROWSE_MODE="yes"
DEFAULT_LOGGING="debug"
USE_MISC_DEVICE="yes"

host:~ # ls -F /vol
data1/  data2/  data3/

The problem depends on ghosting being enabled (ie, BROWSE_MODE=yes).
When we try to access a non-existent key/entry, AutoFS will fail to mount
it but will still create the mount point:

host:~ # ls -d /vol/invalid; sleep 10; ls -d /vol/invalid
ls: cannot access /vol/invalid: No such file or directory
/vol/invalid

host:~ # ls -F /vol
data1/  data2/  data3/  invalid/

The problem happens because lookup_ghost() iterates over all cached
mapents and creates directories for each entry in the cache. Since
the cache also stores entries for failed mounts (negative entries), it
ends up creating directories for mount points that don't exist in the
map.

I tested the patch below and it resolves the problem for me, but I'm not
sure if this is the best (or even the correct) way to fix the bug. I'd
appreciate if you could review and comment.

Thanks,
Leonardo

[1] https://bugzilla.novell.com/show_bug.cgi?id=658734

When ghosting is enabled, don't create mount points for cached entries
that don't have a valid mapent.

Index: autofs-5.0.5/daemon/lookup.c
===================================================================
--- autofs-5.0.5.orig/daemon/lookup.c
+++ autofs-5.0.5/daemon/lookup.c
@@ -604,6 +604,9 @@ int lookup_ghost(struct autofs_point *ap
 			if (!strcmp(me->key, "*"))
 				goto next;
 
+			if (!me->mapent)
+				goto next;
+
 			if (*me->key == '/') {
 				/* It's a busy multi-mount - leave till next time */
 				if (list_empty(&me->multi_list))

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-03-09 14:09 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-10 19:10 AutoFS creates unmountable directories when ghosting is enabled Leonardo Chiquitto
2010-12-15  2:49 ` Ian Kent
2011-03-07  2:37   ` Leonardo Chiquitto
2011-03-09  4:15     ` Ian Kent
2011-03-09  4:21       ` Ian Kent
2011-03-09 14:09         ` Leonardo Chiquitto

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.