[DRBD-cvs] drbd by phil; [parch by LGE] Fixed the some (hopefully...
drbd-user@lists.linbit.com
drbd-user@lists.linbit.com
Mon, 10 May 2004 11:13:04 +0200 (CEST)
DRBD CVS committal
Author : phil
Module : drbd
Dir : drbd/drbd
Modified Files:
Tag: rel-0_7-branch
drbd_main.c
Log Message:
[parch by LGE]
Fixed the some (hopefully the last) issues with tl_cancel() and drbd_sebd_dblock()
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_main.c,v
retrieving revision 1.73.2.167
retrieving revision 1.73.2.168
diff -u -3 -r1.73.2.167 -r1.73.2.168
--- drbd_main.c 7 May 2004 15:18:28 -0000 1.73.2.167
+++ drbd_main.c 10 May 2004 09:12:59 -0000 1.73.2.168
@@ -191,6 +191,7 @@
b=mdev->newest_barrier;
new_item->barrier = b;
+ new_item->rq_status |= RQ_DRBD_IN_TL;
list_add(&new_item->w.list,&b->requests);
if( b->n_req++ > mdev->conf.max_epoch_size ) {
@@ -213,10 +214,6 @@
item->rq_status &= ~RQ_DRBD_IN_TL;
spin_unlock_irq(&mdev->tl_lock);
- drbd_end_req(item,RQ_DRBD_SENT,ERF_NOTLD|1, drbd_req_get_sector(item));
- drbd_set_out_of_sync(mdev,
- drbd_req_get_sector(item),
- drbd_req_get_size(item));
}
STATIC unsigned int tl_add_barrier(drbd_dev *mdev)
@@ -785,6 +782,7 @@
drop_it = mdev->meta.socket == sock
|| !mdev->asender.task
+ || get_t_state(&mdev->asender) != Running
|| (volatile int)mdev->cstate < Connected;
if (drop_it)
@@ -891,14 +889,17 @@
ok = _drbd_send_barrier(mdev);
if(ok) {
tl_add(mdev,req);
- req->rq_status |= RQ_DRBD_IN_TL;
-
ok = (drbd_send(mdev,mdev->data.socket,&p,sizeof(p),MSG_MORE) == sizeof(p));
if(ok) {
ok = _drbd_send_zc_bio(mdev,&req->private_bio);
}
if(!ok) tl_cancel(mdev,req);
-
+ }
+ if (!ok) {
+ drbd_set_out_of_sync(mdev,
+ drbd_req_get_sector(req),
+ drbd_req_get_size(req));
+ drbd_end_req(req,RQ_DRBD_SENT,ERF_NOTLD|1, drbd_req_get_sector(item));
}
spin_lock(&mdev->send_task_lock);
mdev->send_task=NULL;