]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge branch 'testing' into unstable
authorSage Weil <sage@newdream.net>
Thu, 13 Jan 2011 21:24:52 +0000 (13:24 -0800)
committerSage Weil <sage@newdream.net>
Thu, 13 Jan 2011 21:24:52 +0000 (13:24 -0800)
Conflicts:
configure.ac

1  2 
configure.ac
src/mds/CInode.h
src/mds/MDCache.cc
src/os/FileJournal.cc
src/osd/PG.cc
src/osd/ReplicatedPG.cc

diff --cc configure.ac
index f1daab6730ce9e7c74a8282b3778cc4d507bfe49,71a00db29d84e51fc2543433a172e06f053e5513..a9bcebb7872ade09e6a71a37f872b8e022fbf669
@@@ -3,10 -3,9 +3,10 @@@
  
  # Autoconf
  AC_PREREQ(2.59)
- AC_INIT([Ceph distributed file system], [0.24], 
+ AC_INIT([Ceph distributed file system], [0.24.1], 
              [Sage Weil <sage@newdream.net>],
              [ceph])
 +AC_CONFIG_SUBDIRS([src/gtest])
  
  # Environment
  AC_CANONICAL_HOST
Simple merge
Simple merge
Simple merge
diff --cc src/osd/PG.cc
Simple merge
index 8fc1a4a78dfe781f3b5a3f2564e362e0c1d3d295,1d80e4a3109af1d4f594525aedf654b833f9a6a1..1307fc63a8cf0df0bb24ccff8e45bf7edf794ab2
@@@ -1407,11 -1167,15 +1417,15 @@@ int ReplicatedPG::do_osd_ops(OpContext 
        bufferlist nbl;
        bp.copy(op.extent.length, nbl);
        if (ctx->obs->exists)
 -        t.truncate(coll_t(info.pgid), soid, 0);
 -      t.write(coll_t(info.pgid), soid, op.extent.offset, op.extent.length, nbl);
 +        t.truncate(coll, soid, 0);
 +      t.write(coll, soid, op.extent.offset, op.extent.length, nbl);
        if (ssc->snapset.clones.size()) {
          snapid_t newest = *ssc->snapset.clones.rbegin();
+         // Replace clone_overlap[newest] with an empty interval set since there
+         // should no longer be any overlap
          ssc->snapset.clone_overlap.erase(newest);
+         ssc->snapset.clone_overlap[newest];
          oi.size = 0;
        }
        if (op.extent.length != oi.size) {
@@@ -1988,14 -1664,21 +2006,21 @@@ void ReplicatedPG::_rollback_to(OpConte
        ctx->obs->exists = true; //we're about to recreate it
        
        map<string, bufferptr> attrs;
 -      t.clone(coll_t(info.pgid),
 +      t.clone(coll,
              rollback_to_sobject, soid);
 -      osd->store->getattrs(coll_t(info.pgid),
 +      osd->store->getattrs(coll,
                           rollback_to_sobject, attrs, false);
        osd->filter_xattrs(attrs);
 -      t.setattrs(coll_t(info.pgid), soid, attrs);
 +      t.setattrs(coll, soid, attrs);
        ssc->snapset.head_exists = true;
  
+       // Adjust the cached objectcontext
+       ObjectContext *clone_context = get_object_context(rollback_to_sobject,
+                                                       oi.oloc,
+                                                       false);
+       assert(clone_context);
+       ctx->obs->oi.size = clone_context->obs.oi.size;
        map<snapid_t, interval_set<uint64_t> >::iterator iter =
        ssc->snapset.clone_overlap.lower_bound(snapid);
        interval_set<uint64_t> overlaps = iter->second;