From ed2bb387708511b4910758d77c5a9754193eb48a Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Thu, 7 Feb 2013 16:04:59 -0800 Subject: [PATCH] OSD: check pg snap collections on start up Backport: bobtail Signed-off-by: Samuel Just Reviewed-by: Sage Weil --- src/osd/OSD.cc | 2 ++ src/osd/PG.cc | 12 ++++++++++++ src/osd/PG.h | 2 ++ 3 files changed, 16 insertions(+) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 00e138ea22f6b..f09055e5bc83c 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1578,6 +1578,8 @@ void OSD::load_pgs() // read pg state, log pg->read_state(store, bl); + pg->check_ondisk_snap_colls(i->second); + set split_pgs; if (osdmap->have_pg_pool(pg->info.pgid.pool()) && pg->info.pgid.is_split(pg->get_osdmap()->get_pg_num(pg->info.pgid.pool()), diff --git a/src/osd/PG.cc b/src/osd/PG.cc index fc3f8c24b1f6a..595cd3fdf7b1c 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -3134,6 +3134,18 @@ void PG::sub_op_scrub_stop(OpRequestRef op) osd->send_message_osd_cluster(reply, m->get_connection()); } + +void PG::check_ondisk_snap_colls( + const interval_set &ondisk_snapcolls) +{ + if (!(ondisk_snapcolls == snap_collections)) { + derr << "ondisk_snapcolls: " << ondisk_snapcolls + << " does not match snap_collections " << snap_collections + << " repairing." << dendl; + snap_collections = ondisk_snapcolls; + } +} + void PG::clear_scrub_reserved() { osd->scrub_wq.dequeue(this); diff --git a/src/osd/PG.h b/src/osd/PG.h index ba80f8186e6c9..68e886802b5c9 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -1002,6 +1002,8 @@ public: ino_t hino, const hobject_t &hoid, const map &attrs, set *snapcolls) {}; + void check_ondisk_snap_colls( + const interval_set &ondisk_snapcolls); void clear_scrub_reserved(); void scrub_reserve_replicas(); void scrub_unreserve_replicas(); -- 2.39.5