]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: ignore dup scrub maps
authorSage Weil <sage@newdream.net>
Thu, 4 Dec 2008 19:16:25 +0000 (11:16 -0800)
committerSage Weil <sage@newdream.net>
Thu, 4 Dec 2008 20:18:18 +0000 (12:18 -0800)
src/osd/OSD.cc

index fb3963d52b32f8e269f529e8f34b764746f36c4d..7813d644413a51757526ab0e72e4320ad51736d4 100644 (file)
@@ -2880,10 +2880,14 @@ void OSD::handle_pg_scrub(MOSDPGScrub *m)
       dout(10) << *pg << " has changed since " << m->epoch << dendl;
     } else {
       if (pg->is_primary()) {
-       dout(10) << "handle_pg_scrub got peer osd" << from << " scrub map" << dendl;
-       bufferlist::iterator p = m->map.begin();
-       pg->peer_scrub_map[from].decode(p);
-       pg->kick();
+       if (pg->peer_scrub_map.count(from)) {
+         dout(10) << "handle_pg_scrub got peer osd" << from << " scrub map -- had it already" << dendl;
+       } else {
+         dout(10) << "handle_pg_scrub got peer osd" << from << " scrub map" << dendl;
+         bufferlist::iterator p = m->map.begin();
+         pg->peer_scrub_map[from].decode(p);
+         pg->kick();
+       }
       } else {
        // replica, reply
        dout(10) << "handle_pg_scrub generating scrub map for primary" << dendl;