]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/ReplicatedPG: validate ino when scrubbing snap collections
authorSage Weil <sage@inktank.com>
Thu, 10 Jan 2013 06:34:12 +0000 (22:34 -0800)
committerSage Weil <sage@inktank.com>
Wed, 16 Jan 2013 03:25:36 +0000 (19:25 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
src/osd/PG.cc
src/osd/PG.h
src/osd/ReplicatedPG.cc
src/osd/ReplicatedPG.h

index bfcdf7e3d90c126b174056048e9a925817b95586..c38ab0c5fa2746b8cdd82ada32bf89ef706d0958 100644 (file)
@@ -2687,7 +2687,7 @@ void PG::_scan_list(ScrubMap &map, vector<hobject_t> &ls)
       osd->store->getattrs(coll, poid, o.attrs);
       if (poid.snap != CEPH_SNAPDIR && poid.snap != CEPH_NOSNAP) {
        // Check snap collections
-       check_snap_collections(poid, o.attrs, &o.snapcolls);
+       check_snap_collections(st.st_ino, poid, o.attrs, &o.snapcolls);
       }
       dout(25) << "_scan_list  " << poid << dendl;
     } else {
index 0354de800c7e66c7e4267084e7a44e1e9b652261..d6dc5912c2318ac8a2260a53d41e6b50dcf498ff 100644 (file)
@@ -775,7 +775,7 @@ public:
     uint32_t nlinks,
     ostream &out) { return false; };
   virtual void check_snap_collections(
-    const hobject_t &hoid,
+    ino_t hino, const hobject_t &hoid,
     const map<string, bufferptr> &attrs,
     set<snapid_t> *snapcolls) {};
   void clear_scrub_reserved();
index 8b24fc93b967303ec5190177c1631a2a48844ad0..d6ff0d2917f25a657c205a8d53dd33523cb42d37 100644 (file)
@@ -6682,6 +6682,7 @@ bool ReplicatedPG::_report_snap_collection_errors(
 }
 
 void ReplicatedPG::check_snap_collections(
+  ino_t hino,
   const hobject_t &hoid,
   const map<string, bufferptr> &attrs,
   set<snapid_t> *snapcolls)
@@ -6694,7 +6695,9 @@ void ReplicatedPG::check_snap_collections(
     int r = osd->store->stat(coll_t(info.pgid, *i), hoid, &st);
     if (r == -ENOENT) {
     } else if (r == 0) {
-      snapcolls->insert(*i);
+      if (hino == st.st_ino) {
+       snapcolls->insert(*i);
+      }
     } else {
       assert(0);
     }
index 60aab4b022b07938e95f045922b429738249030b..51eaebe0e5f8d4812d07b54f8fae44bcec1a93eb 100644 (file)
@@ -796,7 +796,7 @@ protected:
     uint32_t nlinks,
     ostream &out);
   virtual void check_snap_collections(
-    const hobject_t &hoid,
+    ino_t hino, const hobject_t &hoid,
     const map<string, bufferptr> &attrs,
     set<snapid_t> *snapcolls);