[DRBD-cvs] drbd by phil; Fixed the 'Debug: sleeping function call...
drbd-user@lists.linbit.com
drbd-user@lists.linbit.com
Thu, 6 May 2004 18:00:01 +0200 (CEST)
DRBD CVS committal
Author : phil
Module : drbd
Dir : drbd/drbd
Modified Files:
Tag: rel-0_7-branch
drbd_receiver.c
Log Message:
Fixed the
'Debug: sleeping function called from invalid context at mm/slab.c'
bug
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_receiver.c,v
retrieving revision 1.97.2.147
retrieving revision 1.97.2.148
diff -u -3 -r1.97.2.147 -r1.97.2.148
--- drbd_receiver.c 6 May 2004 13:59:14 -0000 1.97.2.147
+++ drbd_receiver.c 6 May 2004 15:59:55 -0000 1.97.2.148
@@ -268,11 +268,14 @@
prepare_to_wait(&mdev->ee_wait, &wait,
TASK_INTERRUPTIBLE);
if(!list_empty(&mdev->free_ee)) break;
+ spin_unlock_irq(&mdev->ee_lock);
if( ( mdev->ee_vacant+mdev->ee_in_use) <
mdev->conf.max_buffers ) {
- if(drbd_alloc_ee(mdev,GFP_TRY)) break;
+ if(drbd_alloc_ee(mdev,GFP_TRY)) {
+ spin_lock_irq(&mdev->ee_lock);
+ break;
+ }
}
- spin_unlock_irq(&mdev->ee_lock);
drbd_kick_lo(mdev);
schedule();
spin_lock_irq(&mdev->ee_lock);