On 03/29/2012 10:38 PM, Dave Reisner wrote:
On Wed, Mar 28, 2012 at 11:30:08AM -0300, Gerardo Exequiel Pozzi wrote:
On 03/28/2012 10:44 AM, Dave Reisner wrote:
Is there any way to make something similar work with loop devices? You
would need to disable the loop device before umounting the underlying
file system. If we could solve this as well, then archiso probably
wouldn't need its special shutdown hook anymore.

sure, lsblk loudly declares loop devices to be type loop. Hrmmm, archiso
does a lot of weird stuff... in particular, the squashfs mounts are
confusing me and/or lsblk. I'll get myself a newer image and poke around
at what Gerardo is doing on setup...

I'm sure it's possible, I just need to understand what's happening.

d

Hello,

The first step on "shutdown" for archiso is a mount --move, since
/oldroot depends on things from /oldroot/run/archiso. This make it a
bit special.

So, I need to understand more about this... why is this done?
Are you talk about this "mount --move" ?
Because all things needed for /new_root/ are mounted on /run/archiso on initramfs. So all things are visible outside initramfs, nothing is hide to user (Thomas wants this some long time ago since AUFS-age).
The
current shutdown hook that I have in my tree gets archiso's wacky setup
torn down properly sans loop devs. Add in a quick loop:

     # assume starting in /sys/class/block
     for loop in loop*/loop; do
         losetup -d "${loop%/loop}"
     done
This can be done in one step: losetup -D
Anyway I am done in a special way because some loops are in used, then
    if ! losetup -d ${_lup} 2> /dev/null; then
        umount -d ${_lup}
    fi


Anyway there are special cases if copytoram is used, or cowdevice for persistent data, or iso-loopback mount, and iso via NBD.

http://projects.archlinux.org/archiso.git/tree/archiso/archiso_shutdown

And everything seems to be torn down properly because I'm lazily
unmounting everything.

   Unmounting all devices.
   Disassembling stacked devices.

   losetup: /dev/loop0: detach failed: Device or resource busy
   losetup: /dev/loop3: detach failed: Device or resource busy
   losetup: /dev/loop6: detach failed: Device or resource busy

   # findmnt
   TARGET  SOURCE FSTYPE   OPTIONS
   /       run[/initramfs]
                  tmpfs    rw,nosuid,nodev,relatime,mode=755
   |-/sys  sys    sysfs    rw,nosuid,nodev,noexec,relatime
   |-/proc proc   proc     rw,nosuid,nodev,noexec,relatime
   |-/dev  /dev   devtmpfs 
rw,nosuid,relatime,size=503104k,nr_inodes=125776,mode=75
   `-/run  run    tmpfs    rw,nosuid,nodev,relatime,mode=755

   # lsblk
   NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
   vda    254:0    0     5G  0 disk
   |-vda1 254:1    0   100M  0 part
   `-vda2 254:2    0   4.9G  0 part
   sr0     11:0    1   200M  0 rom
   loop0    7:0    0  92.9M  1 loop
   loop3    7:3    0  34.3M  1 loop
   loop6    7:6    0    53M  1 loop

   # losetup -a
   /dev/loop0: [2816]:1930 (/arch/x86_64/root-image.fs.sfs)
   /dev/loop3: [2816]:1926 (/arch/x86_64/lib-modules.fs.sfs)
   /dev/loop6: [2816]:1414 (/arch/any/usr-share.fs.sfs)

Those three errors are something that archiso hides. So, as far as I can
tell, my hook is equivalent. Is there some serious problem with using
lazy unmounting that makes this non-desirable? I can't really find any
evidence of negative effects here.

d



Anyway using shutdown hook provided by mkinitcpio in archiso can not be a good idea archiso initramfs has a looots of kernel modules, shutdown hooks will copy all them to ram. (Yes, of course we can just still use our install/archiso_shutdown and using initcpio/shutdown script instead of initcpio/archiso_shutdown)

--
Gerardo Exequiel Pozzi
\cos^2\alpha + \sin^2\alpha = 1

Reply via email to