[Drbd-dev] Possible synchronization problems in 8.0.6

Graham, Simon Simon.Graham at stratus.com
Mon Nov 26 00:17:27 CET 2007


> this is not true.
> 
> STATIC void drbd_global_lock(void)
> {
> 	drbd_dev *mdev;
> 	int i;
> 
> 	local_irq_disable();
> 	for (i=0; i < minor_count; i++) {
> 		if(!(mdev = minor_to_mdev(i))) continue;
> 		spin_lock(&mdev->req_lock);
> 	}
> }
> 
> this disables irq,
> then aquires _all_ reqest locks of all (allocated) devices _in order_.
> 

Hah! It would help if I read the code properly wouldn't it... OK, so
this isn't the cause of my problems...

Well, that's possibly better then -- maybe my problems are purely caused
by not kicking the resync timer and by the re-ordering of netlink
broadcasts because the after_state_change is not always handled in a
worker..

I will look at changing all after-state-changes to be scheduled and
backing out Phil's fix for kicking the resync timer.

Thanks,
/simgr


More information about the drbd-dev mailing list