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.