[DRBD-user] ASSERT( 0 ) in drbd_worker.c:541

Lars Ellenberg Lars.Ellenberg at linbit.com
Wed Jul 28 17:21:42 CEST 2004

Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.


/ 2004-07-28 17:14:28 +0200
\ Bernd Schubert:
> > can you reproduce it? did it happen more than once?
> 
> Two times yes.
> 
> Seems to happen since some time, but it also seems that we didn't notice until 
> today:
> 
> hamilton1:/var/log/test# grep ASSERT *
> syslog:Jul 28 14:19:13 hamilton1 kernel: drbd3: ASSERT( 0 ) in 
> drbd_worker.c:541
> syslog.1:Jul 26 11:11:55 hamilton1 kernel: drbd3: ASSERT( 0 ) in 
> drbd_worker.c:541
> syslog.3:Jul 25 16:09:20 hamilton1 kernel: drbd3: ASSERT( 0 ) in 
> drbd_worker.c:541
> syslog.3:Jul 25 16:26:23 hamilton1 kernel: drbd3: ASSERT( 0 ) in 
> drbd_worker.c:541
> syslog.4:Jul 22 17:33:34 hamilton1 kernel: drbd2: 
> ASSERT( list_empty(&mdev->resync->lru) ) 
> in /usr/src/modules/drbd/drbd/drbd_worker.c:545
> syslog.6:Jul 19 08:40:31 hamilton1 kernel: drbd1: ASSERT( 0 ) 
> in /usr/src/modules/drbd/drbd/drbd_worker.c:541
> 
> 
> Reproducing is also easy, we just need to run '/etc/init.d/drbd stop' and then 
> '/etc/init.d/drbd start' on our second node (hamilton2).
> 
> Maybe its interesting that just the smallest devices is affected (from df -h):
> 
> /dev/drbd0             24G  9.9G   14G  43% /clientroot
> /dev/drbd3            816M   70M  706M   9% /clientroot/etc
> /dev/drbd4            4.5G  1.4G  2.9G  32% /clientroot/var
> /dev/drbd1             19G  7.3G   12G  40% /misc
> /dev/drbd2            187G   40G  148G  21% /home
> 

I just checked this in into svn (among some other updates).
(in case you want to upgrade to svn,
 BE SURE TO READ upgrade_0.7.0_to_0.7.1.txt !!)
this particular chunk fixes your case.

===========================
--- trunk/drbd/drbd_worker.c	2004-07-28 13:06:48 UTC (rev 1465)
+++ trunk/drbd/drbd_worker.c	2004-07-28 15:04:28 UTC (rev 1466)
@@ -538,15 +538,16 @@
 	INFO("Resync done (total %lu sec; %lu K/sec)\n",
 	     dt,(unsigned long)n);
 
-	if (mdev->cstate == SyncTarget) {
+	if (mdev->cstate == SyncTarget || mdev->cstate == PausedSyncT) {
 		drbd_md_set_flag(mdev,MDF_Consistent);
 		ERR_IF(drbd_md_test_flag(mdev,MDF_FullSync))
 			drbd_md_clear_flag(mdev,MDF_FullSync);
 		drbd_md_write(mdev);
-	} else if (mdev->cstate == SyncSource) {
+	} else if (mdev->cstate == SyncSource || mdev->cstate == PausedSyncS) {
 		set_bit(PARTNER_CONSISTENT, &mdev->flags);
 	} else {
-		D_ASSERT(0);
+		ERR("unexpected cstate (%s) in drbd_resync_finished\n",
+		    cstate_to_name(mdev->cstate));
 	}
 
 	// assert that all bit-map parts are cleared.
===========================


	Lars Ellenberg

-- 
please use the "List-Reply" function of your email client.



More information about the drbd-user mailing list