From 2a9995841c1054ad224c3d2170d743880171cff4 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 24 Jul 2008 11:18:26 -0700 Subject: [PATCH] mon: apply osd_stat updates to pgmap correctly --- src/mon/PGMonitor.cc | 4 ++++ src/osd/OSD.cc | 1 + src/osd/osd_types.h | 5 +++++ 3 files changed, 10 insertions(+) diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc index 3d4e139673439..ae2ad78545ada 100644 --- a/src/mon/PGMonitor.cc +++ b/src/mon/PGMonitor.cc @@ -265,6 +265,10 @@ bool PGMonitor::prepare_pg_stats(MPGStats *stats) } // osd stat + dout(10) << " got " << stats->osd_stat << dendl; + pending_inc.osd_stat_updates[from] = stats->osd_stat; + + // apply to live map too (screw consistency) if (pg_map.osd_stat.count(from)) pg_map.stat_osd_sub(pg_map.osd_stat[from]); pg_map.osd_stat[from] = stats->osd_stat; diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 5c753c195719d..f32a00709fdac 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1105,6 +1105,7 @@ void OSD::send_pg_stats() m->osd_stat.num_blocks = stbuf.f_blocks; m->osd_stat.num_blocks_avail = stbuf.f_bavail; m->osd_stat.num_objects = stbuf.f_files; + dout(20) << " osd_stat " << m->osd_stat << dendl; int mon = monmap->pick_mon(); messenger->send_message(m, monmap->get_inst(mon)); diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 3ff2a4a353924..6c5ed8e2e9f51 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -253,6 +253,11 @@ struct osd_stat_t { WRITE_CLASS_ENCODER(osd_stat_t) +inline ostream& operator<<(ostream& out, const osd_stat_t& s) { + return out << "osd_stat(" << (s.num_blocks-s.num_blocks_avail) << "/" << s.num_blocks << " used, " + << s.num_objects << " objects)"; +} + /* * pg states -- 2.39.5