All of lore.kernel.org
 help / color / mirror / Atom feed
* Kernel patch to better support bind-mounts
@ 2008-01-08 10:38 Lukas Kolbe
  2008-01-08 13:21 ` Ian Kent
  2008-03-04 12:47 ` Lukas Kolbe
  0 siblings, 2 replies; 11+ messages in thread
From: Lukas Kolbe @ 2008-01-08 10:38 UTC (permalink / raw)
  To: autofs

Hi!

Ian, you made a patch for our problem here late laste year that didn't
quite work for all of our cases. I don't really understand the code in
the kernel module, but logic tells me that this patch should be safe.
Plus, it's solving our problems and is straightforward. Your patch was:

diff -up linux-2.6.21/fs/autofs4/root.c.lookup_access-intent linux-2.6.21/fs/autofs4/root.c
--- linux-2.6.21/fs/autofs4/root.c.lookup_access-intent 2007-10-11 16:32:07.000000000 +0800
+++ linux-2.6.21/fs/autofs4/root.c      2007-10-11 16:34:59.000000000 +0800
@@ -20,6 +20,8 @@
 #include <linux/smp_lock.h>
 #include "autofs_i.h"
 
+#define DIRECT_TRIGGER_FLAGS (LOOKUP_CONTINUE|LOOKUP_DIRECTORY|LOOKUP_ACCESS)
+
 static int autofs4_dir_symlink(struct inode *,struct dentry *,const char *);
 static int autofs4_dir_unlink(struct inode *,struct dentry *);
 static int autofs4_dir_rmdir(struct inode *,struct dentry *);
@@ -336,7 +338,7 @@ static void *autofs4_follow_link(struct 
                nd->flags);
 
        /* If it's our master or we shouldn't trigger a mount we're done */
-       lookup_type = nd->flags & (LOOKUP_CONTINUE | LOOKUP_DIRECTORY);
+       lookup_type = nd->flags & DIRECT_TRIGGER_FLAGS;
        if (oz_mode || !lookup_type)
                goto done;


This helps for a map like this:

eclipse-3.1 \
  /bin          -rw,nosuid,grpid          fileserver:/volumes/vol1/eclipse-3.1/bin.linx86
eclipse \
  /bin          -rw,nosuid,grpid          :/vol/eclipse-3.1/bin

Accessing /vol/eclipse/bin now works flawlessly. But given this map:

jdk-1.5.13 -rw,nosuid,grpid fileserver:/export/stud/vol/jdk-1.5.13/linx86
jdk-1.5    -rw,nosuid,grpid :/vol/jdk-1.5.13

accessing /vol/jdk-1.5 doesn't work always (ie only when /vol/jdk-1.5.13
was accessed first). I changed the patch to the one below, and this
problem is now also fixed.

Ian, can you comment on the sanity of this one? If it's OK, I'd like to
see it pushed upstream. We're building our own kernel anyway now (had
known large-scale linux was so damn difficult I bet I wouldn't have
started in the first plate), but it would be nice to see upstream.


-- 
Lukas


diff -ru linux-2.6-2.6.23-a/fs/autofs4/root.c linux-2.6-2.6.23/fs/autofs4/root.c
--- linux-2.6-2.6.23-a/fs/autofs4/root.c        2007-11-30 16:20:33.000000000 +0100
+++ linux-2.6-2.6.23/fs/autofs4/root.c  2007-11-30 16:22:24.000000000 +0100
@@ -19,6 +19,9 @@
 #include <linux/time.h>
 #include "autofs_i.h"

+#define DIRECT_TRIGGER_FLAGS (LOOKUP_CONTINUE|LOOKUP_DIRECTORY|LOOKUP_ACCESS)
+
+
 static int autofs4_dir_symlink(struct inode *,struct dentry *,const char *);
 static int autofs4_dir_unlink(struct inode *,struct dentry *);
 static int autofs4_dir_rmdir(struct inode *,struct dentry *);
@@ -291,7 +294,7 @@
                        return status;
                }
        /* Trigger mount for path component or follow link */
-       } else if (flags & (LOOKUP_CONTINUE | LOOKUP_DIRECTORY) ||
+       } else if (flags & DIRECT_TRIGGER_FLAGS ||
                        current->link_count) {
                DPRINTK("waiting for mount name=%.*s",
                        dentry->d_name.len, dentry->d_name.name);
@@ -335,7 +338,7 @@
                nd->flags);

        /* If it's our master or we shouldn't trigger a mount we're done */
-       lookup_type = nd->flags & (LOOKUP_CONTINUE | LOOKUP_DIRECTORY);
+       lookup_type = nd->flags & DIRECT_TRIGGER_FLAGS;
        if (oz_mode || !lookup_type)
                goto done;

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

end of thread, other threads:[~2008-03-05 14:29 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-08 10:38 Kernel patch to better support bind-mounts Lukas Kolbe
2008-01-08 13:21 ` Ian Kent
2008-01-08 14:41   ` Lukas Kolbe
2008-01-08 14:50     ` Ian Kent
2008-03-04 12:47 ` Lukas Kolbe
2008-03-04 13:25   ` Peter Staubach
2008-03-05  2:46     ` Ian Kent
2008-03-05 14:19       ` Peter Staubach
2008-03-05 14:24         ` Lukas Kolbe
2008-03-05 14:29           ` Peter Staubach
2008-03-05  2:47   ` Ian Kent

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.