On Mar 30, 2012 3:38 AM, "Dave Reisner" <d@falconindy.com> 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? 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
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.
Wouldnt this lead to races in case the lazy umount is not finished when you need it to be (either because the parent cant be dissssembled lazily, or because we switch the power off). For once sceptical of lazines, Tom