* [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.