[arch-projects] [mkinitcpio][PATCH] shutdown: disassemble devices on shutdown v2

Dave Reisner d at falconindy.com
Thu Mar 29 21:38:46 EDT 2012

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? 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}"

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
  /       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
  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.


More information about the arch-projects mailing list