]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
OSD,ReplicatedPG: Do not run snap_trimmer while the pg is degraded
authorSamuel Just <samuelj@hq.newdream.net>
Fri, 14 Jan 2011 00:18:40 +0000 (16:18 -0800)
committerSamuel Just <samuelj@hq.newdream.net>
Fri, 14 Jan 2011 00:20:46 +0000 (16:20 -0800)
snap_trimmer causes replica crashes if the replica is missing
objects.

Signed-off-by: Samuel Just <samuelj@hq.newdream.net>
src/osd/OSD.cc
src/osd/PG.cc

index 0465ffc64e9e665f9a755e9d752ab390bbe92614..1fcd5d35e5d391351ba36ef69abc92159dd347f5 100644 (file)
@@ -3108,7 +3108,8 @@ void OSD::activate_map(ObjectStore::Transaction& t, list<Context*>& tfin)
     if (pg->is_active()) {
       // i am active
       if (pg->is_primary() &&
-         !pg->snap_trimq.empty())
+         !pg->snap_trimq.empty() &&
+         !pg->is_degraded())
        pg->queue_snap_trim();
     }
     else if (pg->is_primary() &&
index 203602a85aa9370de08eb2acbd69e25725a09f71..dee517c669c8de718cf9cdccfc59031809365114 100644 (file)
@@ -1823,7 +1823,7 @@ void PG::activate(ObjectStore::Transaction& t, list<Context*>& tfin,
     snap_trimq = pool->cached_removed_snaps;
     snap_trimq.subtract(info.purged_snaps);
     dout(10) << "activate - snap_trimq " << snap_trimq << dendl;
-    if (!snap_trimq.empty())
+    if (!snap_trimq.empty() && !is_degraded())
       queue_snap_trim();
   }