Ubuntu: device-mapper: remove ioctl on luks-xxxx failed: Device or resource busy



Question:

While I was away from my computer, my encrypted USB drive got accidentally unmounted somehow (although it was still physically connected at the time). I haven't been able to recover (haven't tried a reboot yet). I have now completely disconnected the device, but I still get "Device or resource busy" when I try to remove the dangling entry in /dev/mapper. Can I reconnect and mount the drive without a reboot?

Here's what I have tried (long name changed to "xxxxx")...

$ sudo dmsetup ls  luks-xxxxx (252:1)  luks-yyyyy (252:0)    $ sudo umount /dev/mapper/luks-xxxxx  umount: /dev/mapper/luks-xxxxx: not mounted    $ sudo fuser --kill /dev/mapper/luks-xxxxx  $ echo $?  1    $ sudo dmsetup info -c luks-xxxxx  Name       Maj Min Stat Open Targ Event  UUID  luks-xxxxx 252   1 L--w    1    1      0 CRYPT-LUKS1-xxxxx-luks-xxxxx    $ sudo dmsetup remove luks-xxxxx  device-mapper: remove ioctl on luks-xxxx failed: Device or resource busy  Command failed  

After reconnecting the device...

$ sudo cryptsetup luksOpen "/dev/sde1" "luks-xxxxx"  Device luks-xxxxx already exists.  

[EDIT] I solved the problem, this time, by closing a GUI text editor which had no open files, but had been launched from a folder on the device in question. So the question becomes more specific: How can you identify which application is holding the device open?

Bear in mind that lsof doesn't seem to present an easy solution because, once the device is disconnected, the associated names provided by lsof no longer include the name of the disconnected device.


Solution:1

After two years of fighting with this, I think I've finally cracked it completely!

dmsetup ls gives you the data you need:

$ sudo dmsetup ls  luks-xxxxx (252:1)  

then

sudo lsof |grep 252,1  

It seems that sudo may be critical here -- at least in some cases.


This should give you the information necessary to close all open files on the device -- including names of open files and process IDs for the offending applications. You may be able to simply go to those apps and close them, but a brute force approach might be something like:

kill -9 (process ID)  

Once you've closed all the files, some of the command-line tools shown in the question may be necessary in order to close down the existing mount before it can be reopened normally.


Solution:2

Try to stop LVM group prior to stop cypher:

lvchange -a n [LVM_Group_name]

then

cryptsetup -v luksClose [LUKS_name]

Sample:

lvchange -a n My_vg_crypt  cryptsetup -v luksClose My_Crypt  


Solution:3

next time try a lazy umount

umount -l /<folder>  

This works for me most of the times, especially useful with hung-up NFS-drives.


Solution:4

Here is how I manage to solve this problem on Linux Mint 17.3 (~Ubuntu Trusty):

  1. remove the device from device-mapper

    $ sudo dmsetup remove luks-xxyyzz  
  2. map it back

    $ sudo cryptsetup open /dev/sdc1 luks-xxyyzz  Enter passphrase for /dev/sdc1:  

Now the devices is accessible.


Solution:5

I was in a similar situation but could not solve the problem by removing the luks-xxxx device. Instead I had to remove ubuntu--vg-root.

My situation was:

  • I accidentally removed the device before it was locked.
  • Trying to lock or remove the luks device after the fact failed with a busy error message.
  • Unlocking the same device failed because a device with the same name already existed.
  • lsof did not show any open handles for the device.

What did help was to unplug the physical device and remove the ubuntu--vg-root device with the following command:

sudo dmsetup remove ubuntu--vg-root  

At that point I was able to normally activate and decrypt the external device again with my usual setup:

udisksctl unlock -b /dev/sda3  sudo lvchange --activate y ubuntu-vg/root  

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »