From eddf4e1f92cfa9456957daa71c643a241c7f02e2 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 20 Nov 2008 13:54:34 -0800 Subject: [PATCH] osd: decode superblock properly --- src/osd/OSD.cc | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index acccd4bd75c42..e64a8f7db0d6c 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -373,6 +373,15 @@ int OSD::init() return -1; } + // load up "current" osdmap + assert(!osdmap); + osdmap = new OSDMap; + if (superblock.current_epoch) { + bufferlist bl; + get_map_bl(superblock.current_epoch, bl); + osdmap->decode(bl); + } + // load up pgs (as they previously existed) load_pgs(); @@ -533,7 +542,8 @@ int OSD::read_superblock() return -1; } - bl.copy(0, sizeof(superblock), (char*)&superblock); + bufferlist::iterator p = bl.begin(); + ::decode(superblock, p); dout(10) << "read_superblock " << superblock << dendl; @@ -548,15 +558,6 @@ int OSD::read_superblock() return -1; } - // load up "current" osdmap - assert(!osdmap); - osdmap = new OSDMap; - if (superblock.current_epoch) { - bl.clear(); - get_map_bl(superblock.current_epoch, bl); - osdmap->decode(bl); - } - return 0; } -- 2.39.5