Distributed Replicated Block Device (DRBD) development
 help / color / mirror / Atom feed
* [Drbd-dev] DRBD-8: crashes if role is changed to Secondary whilst disk state is Negotiating...
@ 2006-09-24 15:35 Graham, Simon
  2006-09-25 13:48 ` Philipp Reisner
  0 siblings, 1 reply; 2+ messages in thread
From: Graham, Simon @ 2006-09-24 15:35 UTC (permalink / raw)
  To: drbd-dev

The specific crash I saw was due to this code in drbd_set_role; drbd_set_role calls drbd_al_to_on_disk_bm() if the new role is secondary and the disk state is not diskless -- there are transitory states between diskless and attached where this is not valid.

The specific lines of code are:

    if(mdev->state.disk > Diskless && (new_role & Secondary)) {
        drbd_al_to_on_disk_bm(mdev);
    }

and the test should presumably be 'mdev->state.disk > Negotiating' - however, this routine presumably needs to use inc_local() to do this so I would propose the following:

	if ((new_role & Secondary) && inc_local(mdev)) {
		drbd_al_to_on_disk_bm(mdev);

		dec_local(mdev);
	}

Simon

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-09-25 13:48 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-24 15:35 [Drbd-dev] DRBD-8: crashes if role is changed to Secondary whilst disk state is Negotiating Graham, Simon
2006-09-25 13:48 ` Philipp Reisner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox