[Drbd-dev] ASSERT( drbd_md_ss(device->ldev) == device->ldev->md.md_offset )

Lars Ellenberg lars.ellenberg at linbit.com
Mon Sep 26 11:46:45 CEST 2016


On Fri, Sep 23, 2016 at 03:01:11PM -0700, Eric Wheeler wrote:
> On Tue, 20 Sep 2016, Lars Ellenberg wrote:
> 
> > On Mon, Sep 19, 2016 at 12:09:12PM -0700, Eric Wheeler wrote:
> > > Hello all,
> > > 
> > > We noticed after resizing one backing device and not the other, that the 
> > > side with the larger device issued the following assertion:
> > > 
> > > ASSERT( drbd_md_ss(device->ldev) == device->ldev->md.md_offset ) in drbd/obj/default/drbd_main.c:3257
> > >
> > > We were issuing a drbdadm resize --assume-clean, but for "reasons", the 
> > > far-end did not resize. Below you can see the trace of the side issuing 
> > > assertions. Is this a bug that should be hanadled intelligent way?
> > > 
> > > What does the failed assertion indicate? It appears to assert shortly 
> > > after role change to-or-from Primary-or-Secondary.
> > 
> > DRBD is configured for "internal" meta data,
> > for some reason does some meta data IO, and realizes that someone
> > resized the backing device under it, without telling it to.
> > 
> > Should not do further harm.
> 
> "Further" ?  Was there any harm (corruption) in the first place?

Spamming your logs ;)

> > On the box that is logging these asserts,
> > do a "drbdadm check-resize".
> > 
> > Preferably, you should follow a backend resize immediately
> > with a drbdadm check-resize (or resize).
> 
> Is `drbdadm check-resize` a node-local operation?  Does it move metadata 
> to the end on both sides, or only on the side invoking check-resize?

Depends on whether or not you have a user set size limit configured.

"check-resize" tells DRBD to check for possible backend resize,
and to move its meta data to where it would expect it
if it would attach now.

After the meta data was moved,
we send our new backend size, current exposed size,
and user capped size if any, to the peer.
Which will take the hint and itself double-check
if it's backend has been resized,
if so, do the same (see above).

Also, whenever we receive such size tuples, we check if it would allow
us to agree on a new size, and if so, do it right there.

-- 
: Lars Ellenberg
: LINBIT | Keeping the Digital World Running
: DRBD -- Heartbeat -- Corosync -- Pacemaker
: R&D, Integration, Ops, Consulting, Support

DRBD® and LINBIT® are registered trademarks of LINBIT


More information about the drbd-dev mailing list