]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
snap: fix oid.snap
authorSage Weil <sage@newdream.net>
Tue, 1 Jul 2008 17:33:36 +0000 (10:33 -0700)
committerSage Weil <sage@newdream.net>
Tue, 1 Jul 2008 17:33:36 +0000 (10:33 -0700)
src/TODO
src/ebofs/Ebofs.cc
src/ebofs/test.ebofs.cc
src/include/object.h
src/include/pobject.h
src/os/FileStore.cc
src/osd/PG.cc
src/osd/ReplicatedPG.cc

index 306df9c84f4531d3762b9d2e4431c0f297cd86ff..bb6b9dc468ff46450714a65e817f11b4144bf5b4 100644 (file)
--- a/src/TODO
+++ b/src/TODO
@@ -1,8 +1,4 @@
-v0.3
-- fix mon osdmap send_full/latest ... never use get_source_inst()!
-
 v0.4
-- fix msgr protocol wrt resets, and varying connection close policies
 - ENOSPC
 - finish client failure recovery (reconnect after long eviction; and slow delayed reconnect)
 - make kclient sendpage (and rip out io interruption?)
index bd50c1ebaffa1fe0cfd5ef70a32e9b52e8381dd9..9a2ff7cb9761ccb8937bb8e505163581ab13bec5 100644 (file)
@@ -3056,14 +3056,14 @@ int Ebofs::_clone(pobject_t from, pobject_t to)
  */
 int Ebofs::pick_object_revision_lt(coll_t cid, pobject_t& oid)
 {
-  assert(oid.oid.rev > 0);   // this is only useful for non-zero oid.rev
+  assert(oid.oid.snap > 0);   // this is only useful for non-zero oid.rev
 
   int r = -EEXIST;             // return code
   ebofs_lock.Lock();
   {
     pobject_t orig = oid;
     pobject_t live = oid;
-    live.oid.rev = 0;
+    live.oid.snap = 0;
     
     if (object_tab->get_num_keys() > 0) {
       Table<pobject_t, ebofs_inode_ptr>::Cursor cursor(object_tab);
@@ -3076,12 +3076,12 @@ int Ebofs::pick_object_revision_lt(coll_t cid, pobject_t& oid)
          if (t.oid.ino != oid.oid.ino || 
              t.oid.bno != oid.oid.bno)                 // passed to previous object
            break;
-         if (oid.oid.rev < t.oid.rev) {                // rev < desired.  possible match.
+         if (oid.oid.snap < t.oid.snap) {                // rev < desired.  possible match.
            r = 0;
            oid = t;
            break;
          }
-         if (firstpass && oid.oid.rev >= t.oid.rev) {  // there is no old rev < desired.  try live.
+         if (firstpass && oid.oid.snap >= t.oid.snap) {  // there is no old rev < desired.  try live.
            r = 0;
            oid = live;
            break;
index 2611971b31eb4da51d9c188b06c02e635ccc34c6..1c333b14cbbf7ee8cef82f14dab3685d4f8a3dff 100644 (file)
@@ -51,7 +51,7 @@ public:
       switch (rand() % 5) {//10) {
       case 0:
         {
-         oid.oid.rev = rand() % 10;
+         oid.oid.snap = rand() % 10;
           cout << t << " read " << hex << oid << dec << " at " << off << " len " << len << std::endl;
           bufferlist bl;
           fs.read(0, oid, off, len, bl);
@@ -137,7 +137,7 @@ public:
       case 10:
        {
          pobject_t newoid = oid;
-         newoid.oid.rev = rand() % 10;
+         newoid.oid.snap = rand() % 10;
          cout << t << " clone " << oid << " to " << newoid << std::endl;
          fs.clone(0, oid, newoid, 0);
        }
@@ -190,7 +190,7 @@ int main(int argc, const char **argv)
     // clone it
     pobject_t oid2;
     oid2 = oid;
-    oid2.oid.rev = 1;
+    oid2.oid.snap = 1;
     fs.clone(0, oid, oid2, 0);
 
     // ... 
index 3fb9a6b46789ff401f358abb58635027f003baf7..3513af880c76d1965385cd5eb96308b93e9cbc1f 100644 (file)
@@ -38,31 +38,31 @@ struct object_t {
     struct {
       uint64_t ino;    // "file" identifier
       uint32_t bno;    // "block" in that "file"
-      objectrev_t rev; // revision.  normally ctime (as epoch).
+      objectrev_t snap; // revision.  normally ctime (as epoch).
     } __attribute__ ((packed));
   };
 
-  object_t() : ino(0), bno(0), rev(0) {}
-  object_t(uint64_t i, uint32_t b) : ino(i), bno(b), rev(0) {}
-  object_t(uint64_t i, uint32_t b, uint64_t r) : ino(i), bno(b), rev(r) {}
+  object_t() : ino(0), bno(0), snap(0) {}
+  object_t(uint64_t i, uint32_t b) : ino(i), bno(b), snap(0) {}
+  object_t(uint64_t i, uint32_t b, uint64_t r) : ino(i), bno(b), snap(r) {}
 
   // IMPORTANT: make this match struct ceph_object ****
   object_t(const ceph_object& co) {
     ino = co.ino;
     bno = co.bno;
-    rev = co.rev;
+    snap = co.snap;
   }  
   operator ceph_object() {
     ceph_object oid;
     oid.ino = ino;
     oid.bno = bno;
-    oid.rev = rev;
+    oid.snap = snap;
     return oid;
   }
   void encode(bufferlist &bl) const {
     ::encode(ino, bl);
     ::encode(bno, bl);
-    ::encode(rev, bl);
+    ::encode(snap, bl);
   }
   void decode(bufferlist::iterator &bl) {
     __u64 i, r;
@@ -72,7 +72,7 @@ struct object_t {
     ::decode(r, bl);
     ino = i;
     bno = b;
-    rev = r;
+    snap = r;
   }
 } __attribute__ ((packed));
 WRITE_CLASS_ENCODER(object_t)
@@ -101,8 +101,8 @@ inline ostream& operator<<(ostream& out, const object_t o) {
   out.fill('0');
   out << setw(8) << o.bno << dec;
   out.unsetf(ios::right);
-  if (o.rev
-    out << '.' << o.rev;
+  if (o.snap
+    out << '.' << o.snap;
   return out;
 }
 
@@ -111,7 +111,7 @@ namespace __gnu_cxx {
     size_t operator()(const object_t &r) const { 
       static rjhash<uint64_t> H;
       static rjhash<uint32_t> I;
-      return H(r.ino) ^ I(r.bno) ^ H(r.rev);
+      return H(r.ino) ^ I(r.bno) ^ H(r.snap);
     }
   };
 
index 5fe0d99e75d97ae77ea53cbe702211528169657b..d5fe7319cccc2ca3320539470c420ebb7ae4483b 100644 (file)
@@ -73,7 +73,7 @@ namespace __gnu_cxx {
     size_t operator()(const pobject_t &r) const { 
       static rjhash<uint64_t> H;
       static rjhash<uint32_t> I;
-      return I(r.volume) ^ I(r.rank) ^ H(r.oid.ino) ^ I(r.oid.bno) ^ I(r.oid.rev);
+      return I(r.volume) ^ I(r.rank) ^ H(r.oid.ino) ^ I(r.oid.bno) ^ H(r.oid.snap);
     }
   };
 }
index 84820bc5d9e17827a0e97cb273737839f55db614..db2cace557a415ac4794b682da7262f93eabca71 100644 (file)
@@ -158,10 +158,10 @@ void FileStore::append_oname(const pobject_t &oid, char *s)
   char *t = s + strlen(s);
 #ifdef __LP64__
   sprintf(t, "/%04x.%04x.%016lx.%08x.%lx", 
-         oid.volume, oid.rank, oid.oid.ino, oid.oid.bno, oid.oid.rev);
+         oid.volume, oid.rank, oid.oid.ino, oid.oid.bno, oid.oid.snap);
 #else
   sprintf(t, "/%04x.%04x.%016llx.%08x.%llx", 
-         oid.volume, oid.rank, oid.oid.ino, oid.oid.bno, oid.oid.rev);
+         oid.volume, oid.rank, oid.oid.ino, oid.oid.bno, oid.oid.snap);
 #endif
   //parse_object(t+1);
 }
@@ -179,7 +179,7 @@ pobject_t FileStore::parse_object(char *s)
   assert(s[26] == '.');
   o.oid.bno = strtoll(s+27, 0, 16);
   assert(s[35] == '.');
-  o.oid.rev = strtoll(s+36, 0, 16);
+  o.oid.snap = strtoll(s+36, 0, 16);
   dout(0) << " got " << o << " errno " << errno << " on " << s << dendl;
   return o;
 }
index 0ac260a31730edd0079ab312948818912d497025..6646897ab2605efc9fd217c34f622c5dba425686 100644 (file)
@@ -1387,7 +1387,7 @@ bool PG::pick_object_rev(object_t& oid)
   objectrev_t crev;
   int r = osd->store->getattr(info.pgid, t, "crev", &crev, sizeof(crev));
   assert(r >= 0);
-  if (crev <= oid.rev) {
+  if (crev <= oid.snap) {
     dout(10) << "pick_object_rev choosing " << t << " crev " << crev << " for " << oid << dendl;
     oid = t.oid;
     return true;
index 2471b3d49f0c18b1421dff587d11365af0300577..20b26e7e0709703bd0595ec83d62e6e17a53be90 100644 (file)
@@ -509,7 +509,7 @@ void ReplicatedPG::op_read(MOSDOp *op)
   long r = 0;
 
   // do it.
-  if (oid.rev && !pick_object_rev(oid)) {
+  if (oid.snap && !pick_object_rev(oid)) {
     // we have no revision for this request.
     r = -EEXIST;
     goto done;
@@ -668,7 +668,7 @@ void ReplicatedPG::prepare_op_transaction(ObjectStore::Transaction& t, const osd
   if (crev && rev && rev > crev) {
     assert(0);
     pobject_t noid = poid;  // FIXME ****
-    noid.oid.rev = rev;
+    noid.oid.snap = rev;
     dout(10) << "prepare_op_transaction cloning " << poid << " crev " << crev << " to " << noid << dendl;
     t.clone(info.pgid, poid, noid);
     did_clone = true;
@@ -1055,7 +1055,7 @@ objectrev_t ReplicatedPG::assign_version(MOSDOp *op)
     assert(nv > log.top);
 
     // will clone?
-    if (crev && poid.oid.rev && poid.oid.rev > crev) {
+    if (crev && poid.oid.snap && poid.oid.snap > crev) {
       clone_version = nv;
       nv.version++;
     }
@@ -1066,7 +1066,7 @@ objectrev_t ReplicatedPG::assign_version(MOSDOp *op)
         nv.version = op->get_version().version; 
 
        // clone?
-       if (crev && op->get_oid().rev && op->get_oid().rev > crev) {
+       if (crev && op->get_oid().snap && op->get_oid().snap > crev) {
          // backstep clone
          clone_version = nv;
          clone_version.version--;
@@ -1223,7 +1223,7 @@ void ReplicatedPG::op_modify(MOSDOp *op)
            << " " << poid.oid 
            << " v " << nv 
     //<< " crev " << crev
-          << " rev " << poid.oid.rev
+          << " rev " << poid.oid.snap
            << " " << op->get_offset() << "~" << op->get_length()
            << dendl;  
 
@@ -1245,11 +1245,11 @@ void ReplicatedPG::op_modify(MOSDOp *op)
   if (op->get_op() != CEPH_OSD_OP_WRNOOP) {
     // log and update later.
     prepare_log_transaction(repop->t, op->get_reqid(), poid, op->get_op(), nv,
-                           crev, poid.oid.rev, peers_complete_thru);
+                           crev, poid.oid.snap, peers_complete_thru);
     prepare_op_transaction(repop->t, op->get_reqid(),
                           info.pgid, op->get_op(), poid, 
                           op->get_offset(), op->get_length(), op->get_data(),
-                          nv, op->get_inc_lock(), crev, poid.oid.rev);
+                          nv, op->get_inc_lock(), crev, poid.oid.snap);
   }
   
   // (logical) local ack.