All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] nested mounts with loop
@ 2007-09-25 16:21 Matthias Koenig
  2007-09-25 18:04 ` Ian Kent
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Matthias Koenig @ 2007-09-25 16:21 UTC (permalink / raw)
  To: autofs mailing list

Hi,

we noticed a problem concerning loop mounts on locations that 
have to be mounted before. E.g. consider the following situation,
a NFS server exporting a cd image, which we want to loop mount
locally to get access to the content:

auto.master:
/cdimage        auto.cdimage
/cdcontent      auto.cdcontent

auto.cdimage:
foo             nfsserver:/cdimage/foo.img

auto.cdcontent:
foo             -fstype=auto,loop       :/cdimage/foo/foo.img

The access to /cdcontent/foo will fail, when /cdimage/foo is not 
mounted before, because spawn_mount does not use SPAWN_OPT_ACCESS
in this case.
The patch below fixes this problem.

Matthias

Index: autofs-git20070924/daemon/spawn.c
===================================================================
--- autofs-git20070924.orig/daemon/spawn.c
+++ autofs-git20070924/daemon/spawn.c
@@ -293,6 +293,13 @@ int spawn_mount(logger *log, ...)
 	while ((*p++ = va_arg(arg, char *)));
 	va_end(arg);
 
+#ifndef ENABLE_MOUNT_LOCKING
+	/* validate loop mounts as they could be on some location to be
+	 * mounted first */
+	if (!strcmp(argv[4], "-o") && strstr(argv[5], "loop"))
+		options = SPAWN_OPT_ACCESS;
+#endif
+
 	while (retries--) {
 		ret = do_spawn(log, options, prog, (const char **) argv);
 		if (ret & MTAB_NOTUPDATED)

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

* Re: [PATCH] nested mounts with loop
  2007-09-25 16:21 [PATCH] nested mounts with loop Matthias Koenig
@ 2007-09-25 18:04 ` Ian Kent
  2007-09-26 15:32   ` Matthias Koenig
  2007-10-08  3:49 ` Ian Kent
  2007-10-08  4:55 ` Ian Kent
  2 siblings, 1 reply; 14+ messages in thread
From: Ian Kent @ 2007-09-25 18:04 UTC (permalink / raw)
  To: Matthias Koenig; +Cc: autofs mailing list

On Tue, 2007-09-25 at 18:21 +0200, Matthias Koenig wrote:
> Hi,
> 
> we noticed a problem concerning loop mounts on locations that 
> have to be mounted before. E.g. consider the following situation,
> a NFS server exporting a cd image, which we want to loop mount
> locally to get access to the content:
> 
> auto.master:
> /cdimage        auto.cdimage
> /cdcontent      auto.cdcontent
> 
> auto.cdimage:
> foo             nfsserver:/cdimage/foo.img
> 
> auto.cdcontent:
> foo             -fstype=auto,loop       :/cdimage/foo/foo.img
> 
> The access to /cdcontent/foo will fail, when /cdimage/foo is not 
> mounted before, because spawn_mount does not use SPAWN_OPT_ACCESS
> in this case.
> The patch below fixes this problem.

I can't remember now.
I wonder why I don't always call access?
I must have had a reason, let me think about it for a while.

Thanks for the patch.
Ian

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

* Re: [PATCH] nested mounts with loop
  2007-09-25 18:04 ` Ian Kent
@ 2007-09-26 15:32   ` Matthias Koenig
  2007-09-26 15:49     ` Ian Kent
  0 siblings, 1 reply; 14+ messages in thread
From: Matthias Koenig @ 2007-09-26 15:32 UTC (permalink / raw)
  To: Ian Kent; +Cc: autofs mailing list

Ian Kent <raven@themaw.net> writes:

> On Tue, 2007-09-25 at 18:21 +0200, Matthias Koenig wrote:
>> Hi,
>> 
>> we noticed a problem concerning loop mounts on locations that 
>> have to be mounted before. E.g. consider the following situation,
>> a NFS server exporting a cd image, which we want to loop mount
>> locally to get access to the content:
>> 
>> auto.master:
>> /cdimage        auto.cdimage
>> /cdcontent      auto.cdcontent
>> 
>> auto.cdimage:
>> foo             nfsserver:/cdimage/foo.img
>> 
>> auto.cdcontent:
>> foo             -fstype=auto,loop       :/cdimage/foo/foo.img
>> 
>> The access to /cdcontent/foo will fail, when /cdimage/foo is not 
>> mounted before, because spawn_mount does not use SPAWN_OPT_ACCESS
>> in this case.
>> The patch below fixes this problem.
>
> I can't remember now.
> I wonder why I don't always call access?
> I must have had a reason, let me think about it for a while.

Yes, I first tried to set SPAWN_OPT_ACCESS as default, but this did
not work and had the negative effect, that NFS mounts could not
be mounted anymore, because an access() has been done on the
NFS location description "nfsserver:/cdimage", which then fails.

Matthias

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

* Re: [PATCH] nested mounts with loop
  2007-09-26 15:32   ` Matthias Koenig
@ 2007-09-26 15:49     ` Ian Kent
  2007-09-26 16:02       ` Jeff Moyer
  0 siblings, 1 reply; 14+ messages in thread
From: Ian Kent @ 2007-09-26 15:49 UTC (permalink / raw)
  To: Matthias Koenig; +Cc: autofs mailing list

On Wed, 2007-09-26 at 17:32 +0200, Matthias Koenig wrote:
> Ian Kent <raven@themaw.net> writes:
> 
> > On Tue, 2007-09-25 at 18:21 +0200, Matthias Koenig wrote:
> >> Hi,
> >> 
> >> we noticed a problem concerning loop mounts on locations that 
> >> have to be mounted before. E.g. consider the following situation,
> >> a NFS server exporting a cd image, which we want to loop mount
> >> locally to get access to the content:
> >> 
> >> auto.master:
> >> /cdimage        auto.cdimage
> >> /cdcontent      auto.cdcontent
> >> 
> >> auto.cdimage:
> >> foo             nfsserver:/cdimage/foo.img
> >> 
> >> auto.cdcontent:
> >> foo             -fstype=auto,loop       :/cdimage/foo/foo.img
> >> 
> >> The access to /cdcontent/foo will fail, when /cdimage/foo is not 
> >> mounted before, because spawn_mount does not use SPAWN_OPT_ACCESS
> >> in this case.
> >> The patch below fixes this problem.
> >
> > I can't remember now.
> > I wonder why I don't always call access?
> > I must have had a reason, let me think about it for a while.
> 
> Yes, I first tried to set SPAWN_OPT_ACCESS as default, but this did
> not work and had the negative effect, that NFS mounts could not
> be mounted anymore, because an access() has been done on the
> NFS location description "nfsserver:/cdimage", which then fails.

Of course, I'll go with you're patch.
Thanks
Ian

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

* Re: [PATCH] nested mounts with loop
  2007-09-26 15:49     ` Ian Kent
@ 2007-09-26 16:02       ` Jeff Moyer
  2007-10-02  5:19         ` Ian Kent
  0 siblings, 1 reply; 14+ messages in thread
From: Jeff Moyer @ 2007-09-26 16:02 UTC (permalink / raw)
  To: Ian Kent; +Cc: autofs mailing list

Ian Kent <raven@themaw.net> writes:

> On Wed, 2007-09-26 at 17:32 +0200, Matthias Koenig wrote:
>> Ian Kent <raven@themaw.net> writes:
>> 
>> > On Tue, 2007-09-25 at 18:21 +0200, Matthias Koenig wrote:
>> >> Hi,
>> >> 
>> >> we noticed a problem concerning loop mounts on locations that 
>> >> have to be mounted before. E.g. consider the following situation,
>> >> a NFS server exporting a cd image, which we want to loop mount
>> >> locally to get access to the content:
>> >> 
>> >> auto.master:
>> >> /cdimage        auto.cdimage
>> >> /cdcontent      auto.cdcontent
>> >> 
>> >> auto.cdimage:
>> >> foo             nfsserver:/cdimage/foo.img
>> >> 
>> >> auto.cdcontent:
>> >> foo             -fstype=auto,loop       :/cdimage/foo/foo.img
>> >> 
>> >> The access to /cdcontent/foo will fail, when /cdimage/foo is not 
>> >> mounted before, because spawn_mount does not use SPAWN_OPT_ACCESS
>> >> in this case.
>> >> The patch below fixes this problem.
>> >
>> > I can't remember now.
>> > I wonder why I don't always call access?
>> > I must have had a reason, let me think about it for a while.
>> 
>> Yes, I first tried to set SPAWN_OPT_ACCESS as default, but this did
>> not work and had the negative effect, that NFS mounts could not
>> be mounted anymore, because an access() has been done on the
>> NFS location description "nfsserver:/cdimage", which then fails.
>
> Of course, I'll go with you're patch.

Are you sure the argument positions will be the same for all of the
mount modules?  Is this really the best way to fix this?

-Jeff

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

* Re: [PATCH] nested mounts with loop
  2007-09-26 16:02       ` Jeff Moyer
@ 2007-10-02  5:19         ` Ian Kent
  2007-10-02  9:37           ` Matthias Koenig
  0 siblings, 1 reply; 14+ messages in thread
From: Ian Kent @ 2007-10-02  5:19 UTC (permalink / raw)
  To: Jeff Moyer; +Cc: autofs mailing list

On Wed, 2007-09-26 at 12:02 -0400, Jeff Moyer wrote:
> Ian Kent <raven@themaw.net> writes:
> 
> > On Wed, 2007-09-26 at 17:32 +0200, Matthias Koenig wrote:
> >> Ian Kent <raven@themaw.net> writes:
> >> 
> >> > On Tue, 2007-09-25 at 18:21 +0200, Matthias Koenig wrote:
> >> >> Hi,
> >> >> 
> >> >> we noticed a problem concerning loop mounts on locations that 
> >> >> have to be mounted before. E.g. consider the following situation,
> >> >> a NFS server exporting a cd image, which we want to loop mount
> >> >> locally to get access to the content:
> >> >> 
> >> >> auto.master:
> >> >> /cdimage        auto.cdimage
> >> >> /cdcontent      auto.cdcontent
> >> >> 
> >> >> auto.cdimage:
> >> >> foo             nfsserver:/cdimage/foo.img
> >> >> 
> >> >> auto.cdcontent:
> >> >> foo             -fstype=auto,loop       :/cdimage/foo/foo.img
> >> >> 
> >> >> The access to /cdcontent/foo will fail, when /cdimage/foo is not 
> >> >> mounted before, because spawn_mount does not use SPAWN_OPT_ACCESS
> >> >> in this case.
> >> >> The patch below fixes this problem.
> >> >
> >> > I can't remember now.
> >> > I wonder why I don't always call access?
> >> > I must have had a reason, let me think about it for a while.
> >> 
> >> Yes, I first tried to set SPAWN_OPT_ACCESS as default, but this did
> >> not work and had the negative effect, that NFS mounts could not
> >> be mounted anymore, because an access() has been done on the
> >> NFS location description "nfsserver:/cdimage", which then fails.
> >
> > Of course, I'll go with you're patch.
> 
> Are you sure the argument positions will be the same for all of the
> mount modules?  Is this really the best way to fix this?

Yes, it's possible that the "-o" could end up in a different position if
the code is modified at some later time without thinking.

The SPAWN_OPT_ACCESS mechanism turned out to be the only way to deal
with this case. I spent a fair while trying to work out another way to
do it but couldn't think of any. People had been using this method for
quite a long time in personal patches.

Ian

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

* Re: [PATCH] nested mounts with loop
  2007-10-02  5:19         ` Ian Kent
@ 2007-10-02  9:37           ` Matthias Koenig
  2007-10-02 13:15             ` Ian Kent
  0 siblings, 1 reply; 14+ messages in thread
From: Matthias Koenig @ 2007-10-02  9:37 UTC (permalink / raw)
  To: Ian Kent; +Cc: autofs mailing list

Ian Kent <raven@themaw.net> writes:

> On Wed, 2007-09-26 at 12:02 -0400, Jeff Moyer wrote:
>> Ian Kent <raven@themaw.net> writes:
>> 
>> > On Wed, 2007-09-26 at 17:32 +0200, Matthias Koenig wrote:
>> >> Ian Kent <raven@themaw.net> writes:
>> >> 
>> >> > On Tue, 2007-09-25 at 18:21 +0200, Matthias Koenig wrote:
>> >> >> Hi,
>> >> >> 
>> >> >> we noticed a problem concerning loop mounts on locations that 
>> >> >> have to be mounted before. E.g. consider the following situation,
>> >> >> a NFS server exporting a cd image, which we want to loop mount
>> >> >> locally to get access to the content:
>> >> >> 
>> >> >> auto.master:
>> >> >> /cdimage        auto.cdimage
>> >> >> /cdcontent      auto.cdcontent
>> >> >> 
>> >> >> auto.cdimage:
>> >> >> foo             nfsserver:/cdimage/foo.img
>> >> >> 
>> >> >> auto.cdcontent:
>> >> >> foo             -fstype=auto,loop       :/cdimage/foo/foo.img
>> >> >> 
>> >> >> The access to /cdcontent/foo will fail, when /cdimage/foo is not 
>> >> >> mounted before, because spawn_mount does not use SPAWN_OPT_ACCESS
>> >> >> in this case.
>> >> >> The patch below fixes this problem.
>> >> >
>> >> > I can't remember now.
>> >> > I wonder why I don't always call access?
>> >> > I must have had a reason, let me think about it for a while.
>> >> 
>> >> Yes, I first tried to set SPAWN_OPT_ACCESS as default, but this did
>> >> not work and had the negative effect, that NFS mounts could not
>> >> be mounted anymore, because an access() has been done on the
>> >> NFS location description "nfsserver:/cdimage", which then fails.
>> >
>> > Of course, I'll go with you're patch.
>> 
>> Are you sure the argument positions will be the same for all of the
>> mount modules?  Is this really the best way to fix this?
>
> Yes, it's possible that the "-o" could end up in a different position if
> the code is modified at some later time without thinking.

Maybe it is better to iterate over the options?

Matthias

Index: autofs-git20070924/daemon/spawn.c
===================================================================
--- autofs-git20070924.orig/daemon/spawn.c
+++ autofs-git20070924/daemon/spawn.c
@@ -293,6 +293,14 @@ int spawn_mount(logger *log, ...)
        while ((*p++ = va_arg(arg, char *)));
        va_end(arg);
 
+#ifndef ENABLE_MOUNT_LOCKING
+       /* validate loop mounts as they could be on some location to be
+        * mounted first */
+       for (p = argv; *(p+1); p++)
+               if (!strcmp(*p, "-o") && strstr(*(p+1), "loop"))
+                       options = SPAWN_OPT_ACCESS;
+#endif
+
        while (retries--) {
                ret = do_spawn(log, options, prog, (const char **) argv);
                if (ret & MTAB_NOTUPDATED)

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

* Re: [PATCH] nested mounts with loop
  2007-10-02  9:37           ` Matthias Koenig
@ 2007-10-02 13:15             ` Ian Kent
  0 siblings, 0 replies; 14+ messages in thread
From: Ian Kent @ 2007-10-02 13:15 UTC (permalink / raw)
  To: Matthias Koenig; +Cc: autofs mailing list

On Tue, 2007-10-02 at 11:37 +0200, Matthias Koenig wrote:
> Ian Kent <raven@themaw.net> writes:
> 
> > On Wed, 2007-09-26 at 12:02 -0400, Jeff Moyer wrote:
> >> Ian Kent <raven@themaw.net> writes:
> >> 
> >> > On Wed, 2007-09-26 at 17:32 +0200, Matthias Koenig wrote:
> >> >> Ian Kent <raven@themaw.net> writes:
> >> >> 
> >> >> > On Tue, 2007-09-25 at 18:21 +0200, Matthias Koenig wrote:
> >> >> >> Hi,
> >> >> >> 
> >> >> >> we noticed a problem concerning loop mounts on locations that 
> >> >> >> have to be mounted before. E.g. consider the following situation,
> >> >> >> a NFS server exporting a cd image, which we want to loop mount
> >> >> >> locally to get access to the content:
> >> >> >> 
> >> >> >> auto.master:
> >> >> >> /cdimage        auto.cdimage
> >> >> >> /cdcontent      auto.cdcontent
> >> >> >> 
> >> >> >> auto.cdimage:
> >> >> >> foo             nfsserver:/cdimage/foo.img
> >> >> >> 
> >> >> >> auto.cdcontent:
> >> >> >> foo             -fstype=auto,loop       :/cdimage/foo/foo.img
> >> >> >> 
> >> >> >> The access to /cdcontent/foo will fail, when /cdimage/foo is not 
> >> >> >> mounted before, because spawn_mount does not use SPAWN_OPT_ACCESS
> >> >> >> in this case.
> >> >> >> The patch below fixes this problem.
> >> >> >
> >> >> > I can't remember now.
> >> >> > I wonder why I don't always call access?
> >> >> > I must have had a reason, let me think about it for a while.
> >> >> 
> >> >> Yes, I first tried to set SPAWN_OPT_ACCESS as default, but this did
> >> >> not work and had the negative effect, that NFS mounts could not
> >> >> be mounted anymore, because an access() has been done on the
> >> >> NFS location description "nfsserver:/cdimage", which then fails.
> >> >
> >> > Of course, I'll go with you're patch.
> >> 
> >> Are you sure the argument positions will be the same for all of the
> >> mount modules?  Is this really the best way to fix this?
> >
> > Yes, it's possible that the "-o" could end up in a different position if
> > the code is modified at some later time without thinking.
> 
> Maybe it is better to iterate over the options?

Yep, I've just done something similar myself.

Ian

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

* Re: [PATCH] nested mounts with loop
  2007-09-25 16:21 [PATCH] nested mounts with loop Matthias Koenig
  2007-09-25 18:04 ` Ian Kent
@ 2007-10-08  3:49 ` Ian Kent
  2007-10-08  4:55 ` Ian Kent
  2 siblings, 0 replies; 14+ messages in thread
From: Ian Kent @ 2007-10-08  3:49 UTC (permalink / raw)
  To: Matthias Koenig; +Cc: autofs mailing list

On Tue, 2007-09-25 at 18:21 +0200, Matthias Koenig wrote:
> Hi,
> 
> we noticed a problem concerning loop mounts on locations that 
> have to be mounted before. E.g. consider the following situation,
> a NFS server exporting a cd image, which we want to loop mount
> locally to get access to the content:
> 
> auto.master:
> /cdimage        auto.cdimage
> /cdcontent      auto.cdcontent
> 
> auto.cdimage:
> foo             nfsserver:/cdimage/foo.img
> 
> auto.cdcontent:
> foo             -fstype=auto,loop       :/cdimage/foo/foo.img

Just trying to test this out and it seem that this should
read :/cdimage/foo.

Correct?

Ian

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

* Re: [PATCH] nested mounts with loop
  2007-09-25 16:21 [PATCH] nested mounts with loop Matthias Koenig
  2007-09-25 18:04 ` Ian Kent
  2007-10-08  3:49 ` Ian Kent
@ 2007-10-08  4:55 ` Ian Kent
  2007-10-08 12:28   ` Matthias Koenig
  2 siblings, 1 reply; 14+ messages in thread
From: Ian Kent @ 2007-10-08  4:55 UTC (permalink / raw)
  To: Matthias Koenig; +Cc: autofs mailing list

On Tue, 2007-09-25 at 18:21 +0200, Matthias Koenig wrote:
> Hi,
> 
> we noticed a problem concerning loop mounts on locations that 
> have to be mounted before. E.g. consider the following situation,
> a NFS server exporting a cd image, which we want to loop mount
> locally to get access to the content:
> 
> auto.master:
> /cdimage        auto.cdimage
> /cdcontent      auto.cdcontent
> 
> auto.cdimage:
> foo             nfsserver:/cdimage/foo.img
> 
> auto.cdcontent:
> foo             -fstype=auto,loop       :/cdimage/foo/foo.img
> 
> The access to /cdcontent/foo will fail, when /cdimage/foo is not 
> mounted before, because spawn_mount does not use SPAWN_OPT_ACCESS
> in this case.

This test case seems broken to me.
Can you check you've described this correctly please.
Maybe even try this exact setup yourself.

Even if the maps were correct the procedure you describe wouldn't call
spawn_mount first, it would call spawn_bind_mount, which would then
trigger the mount through the access call.

Ian

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

* Re: [PATCH] nested mounts with loop
  2007-10-08  4:55 ` Ian Kent
@ 2007-10-08 12:28   ` Matthias Koenig
  2007-10-08 15:51     ` Ian Kent
  2007-10-10  4:19     ` Ian Kent
  0 siblings, 2 replies; 14+ messages in thread
From: Matthias Koenig @ 2007-10-08 12:28 UTC (permalink / raw)
  To: Ian Kent; +Cc: autofs mailing list

Ian Kent <raven@themaw.net> writes:

> On Tue, 2007-09-25 at 18:21 +0200, Matthias Koenig wrote:
>> Hi,
>> 
>> we noticed a problem concerning loop mounts on locations that 
>> have to be mounted before. E.g. consider the following situation,
>> a NFS server exporting a cd image, which we want to loop mount
>> locally to get access to the content:
>> 
>> auto.master:
>> /cdimage        auto.cdimage
>> /cdcontent      auto.cdcontent
>> 
>> auto.cdimage:
>> foo             nfsserver:/cdimage/foo.img
>> 

Yes, sorry. It is nfsserver:/cdimage/foo of course.
I invented this testcase in place, because the original setup
was less readable.

>> auto.cdcontent:
>> foo             -fstype=auto,loop       :/cdimage/foo/foo.img
>> 
>> The access to /cdcontent/foo will fail, when /cdimage/foo is not 
>> mounted before, because spawn_mount does not use SPAWN_OPT_ACCESS
>> in this case.
>
> This test case seems broken to me.
> Can you check you've described this correctly please.
> Maybe even try this exact setup yourself.

I checked this again and adapt it to the testcase described here.
auto.master remaining as shown above.

giuliani:/ # cat /etc/auto.cdimage 
foo     dist:/dist/install/openSUSE-10.3-GM/

giuliani:/ # cat /etc/auto.cdcontent 
foo -fstype=auto,loop,ro :/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso

> Even if the maps were correct the procedure you describe wouldn't call
> spawn_mount first, it would call spawn_bind_mount, which would then
> trigger the mount through the access call.

Hmm, with the above setup, I am only able to access the content after I
have triggered the mount of the image separately.

giuliani:/ # ls /cdcontent/foo
ls: cannot open directory /cdcontent/foo: No such file or directory
giuliani:/ # ls /cdimage/foo/
[...]
giuliani:/ # ls /cdcontent/foo
ARCHIVES.gz     dosutils                          INDEX.gz
[...]

Here is the log of the failure:
Oct  8 14:25:17 giuliani automount[16597]: lookup_mount: lookup(file): looking up foo
Oct  8 14:25:17 giuliani automount[16597]: lookup_mount: lookup(file): foo -> -fstype=auto,loop,ro :/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso
Oct  8 14:25:17 giuliani automount[16597]: parse_mount: parse(sun): expanded entry: -fstype=auto,loop,ro :/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso
Oct  8 14:25:17 giuliani automount[16597]: parse_mount: parse(sun): gathered options: fstype=auto,loop,ro
Oct  8 14:25:17 giuliani automount[16597]: parse_mount: parse(sun): dequote(":/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso") -> :/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso
Oct  8 14:25:17 giuliani automount[16597]: parse_mount: parse(sun): core of entry: options=fstype=auto,loop,ro, loc=:/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso
Oct  8 14:25:17 giuliani automount[16597]: sun_mount: parse(sun): mounting root /cdcontent, mountpoint foo, what /cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso, fstype auto, options loop,ro
Oct  8 14:25:17 giuliani automount[16597]: open_mount: (mount):cannot open mount module auto (/usr/lib/autofs/mount_auto.so: cannot open shared object file: No such file or directory)
Oct  8 14:25:17 giuliani automount[16597]: do_mount: /cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso /cdcontent/foo type auto options loop,ro using module generic
Oct  8 14:25:17 giuliani automount[16597]: mount_mount: mount(generic): calling mkdir_path /cdcontent/foo
Oct  8 14:25:17 giuliani automount[16597]: mount_mount: mount(generic): calling mount -t auto -s -o loop,ro /cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso /cdcontent/foo
Oct  8 14:25:17 giuliani automount[16597]: >> /cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso: No such file or directory
Oct  8 14:25:17 giuliani automount[16597]: mount(generic): failed to mount /cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso (type auto) on /cdcontent/foo
Oct  8 14:25:17 giuliani automount[16597]: send_fail: token = 61
Oct  8 14:25:17 giuliani automount[16597]: failed to mount /cdcontent/foo


Thanks,
Matthias

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

* Re: [PATCH] nested mounts with loop
  2007-10-08 12:28   ` Matthias Koenig
@ 2007-10-08 15:51     ` Ian Kent
  2007-10-08 16:10       ` Matthias Koenig
  2007-10-10  4:19     ` Ian Kent
  1 sibling, 1 reply; 14+ messages in thread
From: Ian Kent @ 2007-10-08 15:51 UTC (permalink / raw)
  To: Matthias Koenig; +Cc: autofs mailing list

On Mon, 2007-10-08 at 14:28 +0200, Matthias Koenig wrote:
> Ian Kent <raven@themaw.net> writes:
> 
> > On Tue, 2007-09-25 at 18:21 +0200, Matthias Koenig wrote:
> >> Hi,
> >> 
> >> we noticed a problem concerning loop mounts on locations that 
> >> have to be mounted before. E.g. consider the following situation,
> >> a NFS server exporting a cd image, which we want to loop mount
> >> locally to get access to the content:
> >> 
> >> auto.master:
> >> /cdimage        auto.cdimage
> >> /cdcontent      auto.cdcontent
> >> 
> >> auto.cdimage:
> >> foo             nfsserver:/cdimage/foo.img
> >> 
> 
> Yes, sorry. It is nfsserver:/cdimage/foo of course.
> I invented this testcase in place, because the original setup
> was less readable.
> 
> >> auto.cdcontent:
> >> foo             -fstype=auto,loop       :/cdimage/foo/foo.img
> >> 
> >> The access to /cdcontent/foo will fail, when /cdimage/foo is not 
> >> mounted before, because spawn_mount does not use SPAWN_OPT_ACCESS
> >> in this case.
> >
> > This test case seems broken to me.
> > Can you check you've described this correctly please.
> > Maybe even try this exact setup yourself.
> 
> I checked this again and adapt it to the testcase described here.
> auto.master remaining as shown above.
> 
> giuliani:/ # cat /etc/auto.cdimage 
> foo     dist:/dist/install/openSUSE-10.3-GM/
> 
> giuliani:/ # cat /etc/auto.cdcontent 
> foo -fstype=auto,loop,ro :/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso
> 
> > Even if the maps were correct the procedure you describe wouldn't call
> > spawn_mount first, it would call spawn_bind_mount, which would then
> > trigger the mount through the access call.
> 
> Hmm, with the above setup, I am only able to access the content after I
> have triggered the mount of the image separately.

Mmm .. but my comment above assumes you're autofs build uses the
configure option --disable-mount-locking.

Is that correct?

If not then this can't be done because the locking will cause a
deadlock, consequently the code that calls access isn't compiled in and
recursive mounts aren't possible.

> 
> giuliani:/ # ls /cdcontent/foo
> ls: cannot open directory /cdcontent/foo: No such file or directory
> giuliani:/ # ls /cdimage/foo/
> [...]
> giuliani:/ # ls /cdcontent/foo
> ARCHIVES.gz     dosutils                          INDEX.gz
> [...]
> 
> Here is the log of the failure:
> Oct  8 14:25:17 giuliani automount[16597]: lookup_mount: lookup(file): looking up foo
> Oct  8 14:25:17 giuliani automount[16597]: lookup_mount: lookup(file): foo -> -fstype=auto,loop,ro :/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso
> Oct  8 14:25:17 giuliani automount[16597]: parse_mount: parse(sun): expanded entry: -fstype=auto,loop,ro :/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso
> Oct  8 14:25:17 giuliani automount[16597]: parse_mount: parse(sun): gathered options: fstype=auto,loop,ro
> Oct  8 14:25:17 giuliani automount[16597]: parse_mount: parse(sun): dequote(":/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso") -> :/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso
> Oct  8 14:25:17 giuliani automount[16597]: parse_mount: parse(sun): core of entry: options=fstype=auto,loop,ro, loc=:/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso
> Oct  8 14:25:17 giuliani automount[16597]: sun_mount: parse(sun): mounting root /cdcontent, mountpoint foo, what /cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso, fstype auto, options loop,ro
> Oct  8 14:25:17 giuliani automount[16597]: open_mount: (mount):cannot open mount module auto (/usr/lib/autofs/mount_auto.so: cannot open shared object file: No such file or directory)
> Oct  8 14:25:17 giuliani automount[16597]: do_mount: /cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso /cdcontent/foo type auto options loop,ro using module generic
> Oct  8 14:25:17 giuliani automount[16597]: mount_mount: mount(generic): calling mkdir_path /cdcontent/foo
> Oct  8 14:25:17 giuliani automount[16597]: mount_mount: mount(generic): calling mount -t auto -s -o loop,ro /cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso /cdcontent/foo
> Oct  8 14:25:17 giuliani automount[16597]: >> /cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso: No such file or directory
> Oct  8 14:25:17 giuliani automount[16597]: mount(generic): failed to mount /cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso (type auto) on /cdcontent/foo
> Oct  8 14:25:17 giuliani automount[16597]: send_fail: token = 61
> Oct  8 14:25:17 giuliani automount[16597]: failed to mount /cdcontent/foo
> 
> 
> Thanks,
> Matthias

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

* Re: [PATCH] nested mounts with loop
  2007-10-08 15:51     ` Ian Kent
@ 2007-10-08 16:10       ` Matthias Koenig
  0 siblings, 0 replies; 14+ messages in thread
From: Matthias Koenig @ 2007-10-08 16:10 UTC (permalink / raw)
  To: Ian Kent; +Cc: autofs mailing list

Ian Kent <raven@themaw.net> writes:

> Mmm .. but my comment above assumes you're autofs build uses the
> configure option --disable-mount-locking.
>
> Is that correct?
>
> If not then this can't be done because the locking will cause a
> deadlock, consequently the code that calls access isn't compiled in and
> recursive mounts aren't possible.

Yes, the build is with the --disable-mount-locking option.

Thanks,
Matthias

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

* Re: [PATCH] nested mounts with loop
  2007-10-08 12:28   ` Matthias Koenig
  2007-10-08 15:51     ` Ian Kent
@ 2007-10-10  4:19     ` Ian Kent
  1 sibling, 0 replies; 14+ messages in thread
From: Ian Kent @ 2007-10-10  4:19 UTC (permalink / raw)
  To: Matthias Koenig; +Cc: autofs mailing list

On Mon, 2007-10-08 at 14:28 +0200, Matthias Koenig wrote:
> Ian Kent <raven@themaw.net> writes:
> 
> Hmm, with the above setup, I am only able to access the content after I
> have triggered the mount of the image separately.
> 
> giuliani:/ # ls /cdcontent/foo
> ls: cannot open directory /cdcontent/foo: No such file or directory
> giuliani:/ # ls /cdimage/foo/
> [...]
> giuliani:/ # ls /cdcontent/foo
> ARCHIVES.gz     dosutils                          INDEX.gz
> [...]

Yep, reproduced and verified our approach fixes the problem.

> 
> Here is the log of the failure:
> Oct  8 14:25:17 giuliani automount[16597]: lookup_mount: lookup(file): looking up foo
> Oct  8 14:25:17 giuliani automount[16597]: lookup_mount: lookup(file): foo -> -fstype=auto,loop,ro :/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso
> Oct  8 14:25:17 giuliani automount[16597]: parse_mount: parse(sun): expanded entry: -fstype=auto,loop,ro :/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso
> Oct  8 14:25:17 giuliani automount[16597]: parse_mount: parse(sun): gathered options: fstype=auto,loop,ro
> Oct  8 14:25:17 giuliani automount[16597]: parse_mount: parse(sun): dequote(":/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso") -> :/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso
> Oct  8 14:25:17 giuliani automount[16597]: parse_mount: parse(sun): core of entry: options=fstype=auto,loop,ro, loc=:/cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso
> Oct  8 14:25:17 giuliani automount[16597]: sun_mount: parse(sun): mounting root /cdcontent, mountpoint foo, what /cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso, fstype auto, options loop,ro
> Oct  8 14:25:17 giuliani automount[16597]: open_mount: (mount):cannot open mount module auto (/usr/lib/autofs/mount_auto.so: cannot open shared object file: No such file or directory)
> Oct  8 14:25:17 giuliani automount[16597]: do_mount: /cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso /cdcontent/foo type auto options loop,ro using module generic
> Oct  8 14:25:17 giuliani automount[16597]: mount_mount: mount(generic): calling mkdir_path /cdcontent/foo
> Oct  8 14:25:17 giuliani automount[16597]: mount_mount: mount(generic): calling mount -t auto -s -o loop,ro /cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso /cdcontent/foo

Aaha .. now I get it!

This type of request calls the generic mount module which, in turn calls
spawn_mount which leads to the problem.

> Oct  8 14:25:17 giuliani automount[16597]: >> /cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso: No such file or directory
> Oct  8 14:25:17 giuliani automount[16597]: mount(generic): failed to mount /cdimage/foo/openSUSE-10.3-GM-DVD-i386.iso (type auto) on /cdcontent/foo
> Oct  8 14:25:17 giuliani automount[16597]: send_fail: token = 61
> Oct  8 14:25:17 giuliani automount[16597]: failed to mount /cdcontent/foo

I will need to do more testing before committing the change but it
should be fine.

Thanks
Ian

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

end of thread, other threads:[~2007-10-10  4:19 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-09-25 16:21 [PATCH] nested mounts with loop Matthias Koenig
2007-09-25 18:04 ` Ian Kent
2007-09-26 15:32   ` Matthias Koenig
2007-09-26 15:49     ` Ian Kent
2007-09-26 16:02       ` Jeff Moyer
2007-10-02  5:19         ` Ian Kent
2007-10-02  9:37           ` Matthias Koenig
2007-10-02 13:15             ` Ian Kent
2007-10-08  3:49 ` Ian Kent
2007-10-08  4:55 ` Ian Kent
2007-10-08 12:28   ` Matthias Koenig
2007-10-08 15:51     ` Ian Kent
2007-10-08 16:10       ` Matthias Koenig
2007-10-10  4:19     ` 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.