On Mon, 06/23 07:17, Benoît Canet wrote: > The Monday 23 Jun 2014 à 12:32:30 (+0800), Fam Zheng wrote : > > On Sat, 06/21 17:40, Benoît Canet wrote: > > > The Saturday 21 Jun 2014 à 17:39:11 (+0200), Benoît Canet wrote : > > > > We still have the issue of unlocking the bottom BDS when a subtree is > > > > detached > > > > from the graphs by a swap. (It does happen in my drive-mirror arbitrary > > > > node > > > > replacement series). > > > > > > > > From my understanding the unlocking of the root BDS is done by > > > > drive_mirror_complete > > > > while the mirror code tries to unref the orphaned subtree _before_ > > > > drive_mirror_complete > > > > is called. > > > > > > One fixe to my sentence: > > > s/drive_mirror_complete/block_job_complete/ > > > > > > > > > > > > > > So the bottom BDS would be unrefed before being unlocked. > > > > I don't see a problem with that, we can do the unlock before unref the node > > if > > we want. > > My concern is that mirror.c does the unref and don't own the Blocker by > itself. > The blocker is owned by the blockjob so it's difficult for mirror.c to do the > unblock.
For example, drive-backup doesn't change the chain, so this (chain manipulation) blocker should be hold by mirror.c, not by blockjob.c. Fam