** Description changed:

+ [ Impact ]
+ os-prober scripts will leave hanging mounts under /var/lib/os-prober/mount,
+ typically LVM snapshots. This can cause the server installer to hang, and 
causes
+ several errors when running grub-update:
+ Warning: os-prober will be executed to detect other bootable partitions.
+ Its output will be used to detect bootable binaries on them and create new 
boot entries.
+ rmdir: failed to remove '/var/lib/os-prober/mount': Device or resource busy
+ grub-probe: error: unknown filesystem.
+ rmdir: failed to remove '/var/lib/os-prober/mount': Device or resource busy
+ grub-probe: error: unknown filesystem.
+ rmdir: failed to remove '/var/lib/os-prober/mount': Device or resource busy
+ rmdir: failed to remove '/var/lib/os-prober/mount': Device or resource busy
+ /usr/sbin/grub-probe: error: unknown filesystem.
+ 
+ [ Test plan ]
+ I was able to reproduce this by having multiple LVM disks attached to the same
+ VM (e.g. from different runs of the Ubuntu installer on top of LVM). To
+ consistently trigger this issue, I had one of the LVs contain snapshots of the
+ Ubuntu rootfs (there's no need to mount multiple LVM partitions, as shown
+ below):
+ 
+ # lsblk /dev/vda /dev/vdb
+ NAME                            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
+ vda                             252:0    0   25G  0 disk
+ ├─vda1                          252:1    0    1M  0 part
+ ├─vda2                          252:2    0    2G  0 part /boot
+ └─vda3                          252:3    0   23G  0 part
+   └─ubuntu--vg--1-ubuntu--lv--1 253:0    0 11.5G  0 lvm  /
+ vdb                             252:16   0   25G  0 disk
+ ├─vdb1                          252:17   0    1M  0 part
+ ├─vdb2                          252:18   0    2G  0 part
+ └─vdb3                          252:19   0   23G  0 part
+   ├─ubuntu--vg-ubuntu--lv-real  253:1    0 11.5G  0 lvm
+   │ ├─ubuntu--vg-ubuntu--lv     253:2    0 11.5G  0 lvm
+   │ ├─ubuntu--vg-rootfs_snap0   253:4    0 11.5G  0 lvm
+   │ └─ubuntu--vg-rootfs_snap1   253:6    0 11.5G  0 lvm
+   ├─ubuntu--vg-rootfs_snap0-cow 253:3    0    1G  0 lvm
+   │ └─ubuntu--vg-rootfs_snap0   253:4    0 11.5G  0 lvm
+   └─ubuntu--vg-rootfs_snap1-cow 253:5    0    1G  0 lvm
+     └─ubuntu--vg-rootfs_snap1   253:6    0 11.5G  0 lvm
+ 
+ To reproduce:
+ 
+ 1. Setup multiple VGs and LVs on a single system, preferably with snapshots of
+    an Ubuntu install
+ 2. Enable os-prober by adding `GRUB_DISABLE_OS_PROBER=false` to 
/etc/default/grub
+    # echo GRUB_DISABLE_OS_PROBER=false >> /etc/default/grub
+ 3. Run update-grub, it'll complain about the busy device on re-runs
+    # update-grub
+ 4. Verify if there are stale mounts under /var/lib/os-prober/mount
+    # mount | tail
+    nsfs on /run/snapd/ns/lxd.mnt type nsfs (rw)
+    tmpfs on /run/user/1000 type tmpfs 
(rw,nosuid,nodev,relatime,size=201080k,nr_inodes=50270,mode=700,uid=1000,gid=1000,inode64)
+    grub-mount on /var/lib/os-prober/mount type fuse.grub-mount 
(rw,nosuid,nodev,relatime,user_id=0,group_id=0)
+    grub-mount on /var/lib/os-prober/mount type fuse.grub-mount 
(rw,nosuid,nodev,relatime,user_id=0,group_id=0)
+    grub-mount on /var/lib/os-prober/mount type fuse.grub-mount 
(rw,nosuid,nodev,relatime,user_id=0,group_id=0)
+    grub-mount on /var/lib/os-prober/mount type fuse.grub-mount 
(rw,nosuid,nodev,relatime,user_id=0,group_id=0)
+ 
+ [ Where problems could occur ]
+ Since we're now allowing partition types that aren't recongnized by 
grub-probe,
+ non-standard partition types could cause issues later on in the os-prober
+ scripts if they're not handled properly. This would likely show up as further
+ issues when running "update-grub", or when updating boot loader entries.
+ 
+ Since these scripts are restricted to the non-default case of running 
os-prober
+ (as it's not enabled by default), regression potential for existing installs
+ should be fairly low.
+ 
+ [ Other info ]
+ The patch prevents 50mounted-tests from exiting out early if grub-probe
+ encounters an error. We return a new type "bad" that is handled later in the
+ script, as to not leave the partition type unspecified. We also take care to
+ revert to the previous "default" of type=fuseblk as it might be used 
elsewhere.
+ 
+ --
  If one happens to have by accident (or on purpose) a thick LVM snapshot, or a 
thin-LV with a copy of a system on it, update-grub reports
  /sbin/grub-probe: error: unknown filesystem.
  Found Ubuntu 22.04.1 LTS on /dev/mapper/vgxubuntu-s22.04
  and
  /sbin/grub-probe: error: disk 
`lvmid/X7waXv-rMDA-5fQA-aw6l-ei1I-8Gz3-pQl3lr/k3Ze1u-Mfwc-pxUt-7fXa-FjSZ-7IkX-HAxf3b'
 not found.
  Found Ubuntu 22.04.1 LTS (22.04) on /dev/mapper/vgxubuntu-XR22.04.1U
  
  and leaves the systems mounted rw on /var/lib/os-prober/mount.
  On subsequent invocations update-grub spews out multiple
  mdir: failed to remove '/var/lib/os-prober/mount': Device or resource busy
  
  I'm pretty sure this also causes a new install to hang (though a power-
  reset seems to load the new system - not sure if it is complete or not.)
  
  The missing umounts should be relatively easy to fix, but the thick
  snapshot error is particularly vague as most users (I think) would take
  the "unknown filesystem" to refer to the previous entry.
  
  I have been playing with grub2-common-2.06-2ubuntu7 on xubuntu 22.04.1,
  though I am sure this has been around a while

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1987679

Title:
  os-prober leaves filesystems (lvm-thin, lvm snap) mounted

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/os-prober/+bug/1987679/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to