Device or resource busy

During adding and removing kernels on my multi-boot PC, I ran into “Device or resource busy” error. The problem was in used device-mapper as leftover that was shown on dmsetup list. After removing device definitions (clearing list), I was able to recreate boot grub2 options.

Before anything else, please be careful and read manuals. Resetting device-mapper driver to remove osprober-linux-sda15 was successful in my case without any data loss so use with care!

OK, my PC with UEFI has two Fedora boot options (Fedora 27 and Fedora 28) and Windows 10. After adding kernel in Fedora 27, rebooting to Fedora 28 and generating new boot options with grub2-mkconfig, the following error was displayed for sda15.

# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg 
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.16.3-301.fc28.x86_64
Found initrd image: /boot/initramfs-4.16.3-301.fc28.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-a7b31c458cf84e03b15ccfb4c6aa7c32
Found initrd image: /boot/initramfs-0-rescue-a7b31c458cf84e03b15ccfb4c6aa7c32.img
device-mapper: remove ioctl on osprober-linux-sda15  failed: Device or resource busy
Command failed
Found Windows Boot Manager on /dev/sda2@/EFI/Microsoft/Boot/bootmgfw.efi
done

I was convinced that /dev/sda15 was not used as it’s shown with df command:

# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  3.9G     0  3.9G   0% /dev
tmpfs          tmpfs     3.9G     0  3.9G   0% /dev/shm
tmpfs          tmpfs     3.9G  1.9M  3.9G   1% /run
tmpfs          tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda8      ext4       28G  7.6G   19G  30% /
/dev/sda6      ext4      1.9G  126M  1.6G   8% /boot
/dev/sda10     ext4      3.7G   67M  3.4G   2% /tmp
/dev/sda7      ext4      148G   28G  113G  20% /home
/dev/sda9      ext4       28G  2.0G   25G   8% /var
/dev/sda5      vfat      488M   18M  470M   4% /boot/efi
tmpfs          tmpfs     795M   16K  795M   1% /run/user/42
tmpfs          tmpfs     795M   24K  795M   1% /run/user/1000

The problem was with osprober-linux-sda15 device as the reason why /dev/sda15 was marked busy. lsblk command displays it nicely:

# lsblk -p
NAME                                 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
/dev/sda                               8:0    0 465.8G  0 disk 
├─/dev/sda1                            8:1    0   499M  0 part 
├─/dev/sda2                            8:2    0   100M  0 part 
├─/dev/sda3                            8:3    0    16M  0 part 
├─/dev/sda4                            8:4    0 214.2G  0 part 
├─/dev/sda5                            8:5    0   488M  0 part /boot/efi
├─/dev/sda6                            8:6    0   1.9G  0 part /boot
├─/dev/sda7                            8:7    0 150.9G  0 part /home
├─/dev/sda8                            8:8    0    28G  0 part /
├─/dev/sda9                            8:9    0    28G  0 part /var
├─/dev/sda10                           8:10   0   3.7G  0 part /tmp
├─/dev/sda11                           8:11   0   3.7G  0 part [SWAP]
├─/dev/sda12                           8:12   0   476M  0 part 
├─/dev/sda13                           8:13   0   1.9G  0 part 
├─/dev/sda14                           8:14   0   1.9G  0 part 
└─/dev/sda15                           8:15   0  30.2G  0 part 
  └─/dev/mapper/osprober-linux-sda15 253:0    0  30.2G  1 dm

Now we are close to the solution. dmsetup manages logical devices that use the device-mapper driver and with “ls” option it will list all device names in use.

# dmsetup ls
osprober-linux-sda15	(253:0)

Finally, removing osprober-linux-sda15 device was solution for my problem. I assume that it was somehow leftover after trying to downgrade Fedora 27 kernel version and recreating new boot options with grub2 on Fedora 28. With removing osprober device from dmsetup list, I was able to mount /dev/sda15 and grub2-mkconfing was not showing any error.

# dmsetup remove_all

Hope this tips will help you to resolve similar problems.
Cheer!

Leave a Comment