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.