[DRBD-cvs] DRBD CVS: drbd by phil from
drbd-user@lists.linbit.com
drbd-user@lists.linbit.com
Fri, 16 Jan 2004 13:35:44 +0100 (CET)
DRBD CVS committal
Author : phil
Host :
Module : drbd
Dir : drbd/drbd
Modified Files:
Tag: rel-0_7-branch
drbd_actlog.c drbd_dsender.c drbd_int.h
Log Message:
Set w->cb to w_resync_inactive on SyncSource; Lack of it triggered
an assertion at end of sync.
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_actlog.c,v
retrieving revision 1.1.2.54
retrieving revision 1.1.2.55
diff -u -3 -r1.1.2.54 -r1.1.2.55
--- drbd_actlog.c 15 Jan 2004 15:21:07 -0000 1.1.2.54
+++ drbd_actlog.c 16 Jan 2004 12:35:44 -0000 1.1.2.55
@@ -512,7 +512,7 @@
if (ext) {
if( ext->lce.lc_number == enr) {
ext->rs_left -= cleared;
- D_ASSERT((long)ext->rs_left >= 0);
+ D_ASSERT(ext->rs_left >= 0);
} else {
if(mdev->cstate == SyncSource) {
WARN("Recounting sectors"
@@ -539,6 +539,7 @@
list_for_each(le,&mdev->resync->lru) {
ext=(struct bm_extent *)list_entry(le,struct lc_element,list);
if(ext->rs_left == 0) {
+ ERR_IF(ext->lce.refcnt) continue;
spin_unlock(&mdev->al_lock);
drbd_update_on_disk_bm(mdev,enr*SM,1);
// TODO: reconsider to use the async version
@@ -568,6 +569,10 @@
mdev->rs_left -= cleared;
D_ASSERT((long)mdev->rs_left >= 0);
if( cleared && mdev->rs_left == 0 ) finished=1;
+
+ if( cleared == 0 ) {
+ WARN("cleared == 0; sector = %lu\n",sector);
+ }
if(jiffies - mdev->rs_mark_time > HZ*10) {
mdev->rs_mark_time=jiffies;
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_dsender.c,v
retrieving revision 1.1.2.50
retrieving revision 1.1.2.51
diff -u -3 -r1.1.2.50 -r1.1.2.51
--- drbd_dsender.c 16 Jan 2004 10:09:19 -0000 1.1.2.50
+++ drbd_dsender.c 16 Jan 2004 12:35:44 -0000 1.1.2.51
@@ -142,7 +142,7 @@
if(number > 1000) number=1000; // Remove later
if (atomic_read(&mdev->pending_cnt)>1200) {
- ERR("pending cnt high -- throttling resync.\n");
+ // INFO("pending cnt high -- throttling resync.\n");
goto requeue;
}
@@ -192,6 +192,7 @@
__drbd_queue_work(mdev,&mdev->data.work,w);
} else {
// If we are SyncSource we must be consistent :)
+ w->cb = w_resync_inactive;
mdev->gen_cnt[Flags] |= MDF_Consistent;
if ( mdev->rs_total == 0 ) {
w->cb = w_resync_finished;
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_int.h,v
retrieving revision 1.58.2.93
retrieving revision 1.58.2.94
diff -u -3 -r1.58.2.93 -r1.58.2.94
--- drbd_int.h 16 Jan 2004 10:09:19 -0000 1.58.2.93
+++ drbd_int.h 16 Jan 2004 12:35:44 -0000 1.58.2.94
@@ -621,7 +621,7 @@
struct bm_extent { // 16MB sized extents.
struct lc_element lce;
- unsigned int rs_left; //number of sectors our of sync in this extent.
+ int rs_left; //number of sectors our of sync in this extent.
unsigned long flags;
};