lkml.org 
[lkml]   [2002]   [Aug]   [5]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
FromRob Landley <>
SubjectIs there a way to move an existing mount point?
DateSun, 4 Aug 2002 22:23:47 -0400
I've got a boot script that mounts an ext3 partition, and out of that 
loopback mounting a zisofs image to be the system's root partition.  (Sort of 
a firmware setup: the whole OS can be upgraded atomically by replacing one 
file, which rsyncs against a copy of itself fairly nicely.)

The partition the zisofs image lives in is going to become the "var" 
partition when the system's the rest of the way up, and I'd like to move the 
existing mount to newmount/var.  Right now I'm mounting /var, loopback 
mounting /zisofs, doing an "exec chroot zisofs /sbin/init auto", and just 
leaving a couple of inaccessable mount points cluttering up the start of 
/proc/mounts.
This works fine, but it's ugly.  I'm in the process of switching to using a 
ramdisk for the boot loader, and in the process I was hoping to actually 
relocate the first /var mount down under the zisofs/var.

Here's why pivot_root doesn't work: I have to mount the var partition before 
I can loopback mount the zisofs (firmware) root partition out of it.  Once 
the zisofs image is mounted, the var partition is busy (due to loop0 holding 
a file open), and pivot_root won't relocate it (on 2.4.18 anyway).  In 
theory, the zisofs image should point to the same inode out of the same 
superblock, so it shouldn't mind moving the mount as long as I don't UNMOUNT 
it.  But for some reason pivot_root is mad anyway.

pivot_root is even less useful when booting from an initrd, since the var 
partition (mounted onto a directory of the ramdisk) is never actually the 
root partition anyway.  What I WANT is some kind of "move_mount path1 path2".

"mount -o remount" explicitly doesn't change the mount point.  "mount --bind 
oldmout newmount" just makes duplicate mounts (of subdirectories, which is 
cool, but not what I'm looking for.  Mounting the same partition again in a 
new location (creating a duplicate mount) doesn't allow the first one to 
become un-busy and thus be unmounted, even though the reference count of the 
superblock should be increased.

Is this a toolchain problem, or a kernel problem, or a documentation problem, 
or a "I just don't know what I'm doing yet" problem?  I THINK it's a kernel 
problem because things seem to be happening per mount that should probably be 
happening per superblock (now that superblocks may be multiply mounted and 
reference counted), but my understanding of this part of the code is still 
very incomplete.

Anybody have any suggestions?

Rob

(P.S.  Zisofs is really cool.  Thanks HPA.  :)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 12:27    [W:0.090 / U:0.110 seconds]
©2003-2008 Jasper Spaans