[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[dm-devel] Thin provisioning bug in interface



The current thin interface works in the following way:

* you create a pool target and pass it two devices, one for metadata and 
the other for data

* you create a thin target and pass it a pool device and thin device id

Now the problem:

if you destroy the pool target (reload it with empty table or something 
like that) --- the pool structure can't be freed from memory (because a 
thin device is open) and it is still active. The problem: the data and 
metadata devices are closed. You can't keep them open because "dm_dev" is 
bound to a specific dm table and is force-closed when the table is 
destroyed.

I thought about fixing it, but concluded that this interface is 
fundamentally broken and there is no easy way to do the fix.

There is an unfixable flaw in thin provisioning interface. Something like 
"dmsetup remove_all" can trigger it.

I think the interface should be changed in such a way that "thin" target 
receives metadata and data devices as its parameters and looks up "pool" 
target using these parameters. If we change it this way, the "thin" target 
would keep "data" and "metadata" devices open, so if someone destroys the 
pool target, the devices would still be accessible and there would be no 
risk of crash becuase of using freed kernel structures.

I thin Joe said that Alasdair wanted to have current interface ("thin" 
target opens "pool"), but it suffers from an unfixable bug. So Alasdair, 
maybe you should change your mind? Or provide some explanation how this 
scenario should be fixed?

Mikulas


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]