On Thu, 24 Mar 2005 22:26:46 +0000, Alasdair G Kergon wrote: > It should probably be setting the recent DM_SKIP_BDGET_FLAG > on every? dm ioctl. > > i.e. call dm_task_no_open_count() in libdevmapper prior to > dm_task_run(). I see. A recent change which I did not have in my 2.6.11-rc3 kernel but which I see is in the 2.6.12-rc1 kernel. This code will certainly fix the deadlock problem for any dm ioctl which is calling bdget_disk indirectly from __dev_status, but ... this will not address the case where bdget_disk is called from __lock_fs and __unlock_fs. This occurs in the code path of multipath(8) suspending a dm mapped device which currently has no valid paths while swapping the device's map/table while some process which owns the __I_LOCK bit of the same mapped device's block device inode is waiting for dirty pages associated with the inode to be flushed.