]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge remote-tracking branch 'gh/next'
authorSage Weil <sage@redhat.com>
Thu, 28 Aug 2014 22:30:24 +0000 (15:30 -0700)
committerSage Weil <sage@redhat.com>
Thu, 28 Aug 2014 22:30:24 +0000 (15:30 -0700)
Conflicts:
src/osd/ReplicatedPG.cc

1  2 
src/common/config_opts.h
src/osd/OSD.cc
src/osd/PG.cc
src/osd/PG.h
src/osd/ReplicatedPG.cc
src/rgw/rgw_main.cc

Simple merge
diff --cc src/osd/OSD.cc
Simple merge
diff --cc src/osd/PG.cc
Simple merge
diff --cc src/osd/PG.h
Simple merge
index 6c0c42d9a156a66454791dc2449171fcf05c0c50,eb4ea5606ebbdc6a179b7f65882373ae2393d48f..b52f2e71352624d95509af74c3e874057782a2af
@@@ -6462,6 -6337,41 +6470,38 @@@ int ReplicatedPG::start_flush
         CEPH_OSD_FLAG_ENFORCE_SNAPC),
        NULL,
        NULL /* no callback, we'll rely on the ordering w.r.t the next op */);
 -    osd->objecter_lock.Unlock();
+     // do we need to send the second delete?
+     SnapContext dsnapc2;
+     vector<snapid_t>::reverse_iterator rp = snapset.snaps.rbegin();
+     // advance rp to the smallest snap not contained by the last flushed clone
+     while (rp != snapset.snaps.rend() && *rp <= dsnapc.seq)
+       ++rp;
+     // set dnsnapc2.seq to be the snap prior to that snap (the object did not
+     // exist at *rq, so it must have been deleted prior to that).
+     dsnapc2.seq = (rp == snapset.snaps.rend()) ? snapset.seq : *rp;
+     if (dsnapc2.seq > 0)
+       dsnapc2.seq.val -= 1;
+     if (dsnapc2.seq != dsnapc.seq) {
+       dsnapc2.snaps = dsnapc.snaps;
+       ObjectOperation o2;
+       o2.remove();
 -      osd->objecter_lock.Lock();
+       osd->objecter->mutate(
+       soid.oid,
+       base_oloc,
+       o2,
+       dsnapc2,
+       oi.mtime,
+       (CEPH_OSD_FLAG_IGNORE_OVERLAY |
+        CEPH_OSD_FLAG_ORDERSNAP |
+        CEPH_OSD_FLAG_ENFORCE_SNAPC),
+       NULL,
+       NULL /* no callback, we'll rely on the ordering w.r.t the next op */);
 -      osd->objecter_lock.Unlock();
+     }
    }
  
    FlushOpRef fop(new FlushOp);
Simple merge