Index: drbd-8.2.7/drbd/drbd_nl.c =================================================================== --- drbd-8.2.7.orig/drbd/drbd_nl.c +++ drbd-8.2.7/drbd/drbd_nl.c @@ -820,6 +820,8 @@ STATIC int drbd_nl_disk_conf(struct drbd goto fail; } + memset(&nbc->md, 0, sizeof(struct drbd_md)); + if (!(nlp->flags & DRBD_NL_SET_DEFAULTS) && inc_local(mdev)) { memcpy(&nbc->dc, &mdev->bc->dc, sizeof(struct disk_conf)); dec_local(mdev); @@ -916,7 +918,13 @@ STATIC int drbd_nl_disk_conf(struct drbd goto release_bdev2_fail; } + /* RT - for drbd_get_max_capacity() DRBD_MD_INDEX_FLEX_INT */ + drbd_md_set_sector_offsets(mdev, nbc); + if (drbd_get_max_capacity(nbc) < nbc->dc.disk_size) { + ERR("max capacity %llu smaller than disk size %llu\n", + (unsigned long long) drbd_get_max_capacity(nbc), + (unsigned long long) nbc->dc.disk_size); retcode = LDDeviceTooSmall; goto release_bdev2_fail; }