]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PGLog: avoid return by value on ginormous log 13493/head
authorSage Weil <sage@redhat.com>
Fri, 17 Feb 2017 17:46:38 +0000 (12:46 -0500)
committerSage Weil <sage@redhat.com>
Fri, 17 Feb 2017 19:50:44 +0000 (14:50 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/PGLog.cc
src/osd/PGLog.h

index 00469e6fdb5de9592433aeb808b452c1b30884ff..0b9d7b75f908c7a2770c70cc232922739f8c1359 100644 (file)
@@ -31,16 +31,16 @@ static ostream& _prefix(std::ostream *_dout, const PGLog *pglog)
 
 //////////////////// PGLog::IndexedLog ////////////////////
 
-PGLog::IndexedLog PGLog::IndexedLog::split_out_child(
+void PGLog::IndexedLog::split_out_child(
   pg_t child_pgid,
-  unsigned split_bits)
+  unsigned split_bits,
+  PGLog::IndexedLog *target)
 {
   unindex();
-  IndexedLog ret(pg_log_t::split_out_child(child_pgid, split_bits));
+  *target = pg_log_t::split_out_child(child_pgid, split_bits);
   index();
-  ret.index();
+  target->index();
   reset_rollback_info_trimmed_to_riter();
-  return ret;
 }
 
 void PGLog::IndexedLog::trim(
index 2d44c648106430e25289ed23aa6584470250e633..d9ced79c3ba04bc01c37a645f9a4971d910d62a1 100644 (file)
@@ -213,9 +213,10 @@ public:
       index();
     }
 
-    IndexedLog split_out_child(
+    void split_out_child(
       pg_t child_pgid,
-      unsigned split_bits);
+      unsigned split_bits,
+      IndexedLog *target);
 
     void zero() {
       // we must have already trimmed the old entries
@@ -655,7 +656,7 @@ public:
       pg_t child_pgid,
       unsigned split_bits,
       PGLog *opg_log) { 
-    opg_log->log = log.split_out_child(child_pgid, split_bits);
+    log.split_out_child(child_pgid, split_bits, &opg_log->log);
     missing.split_into(child_pgid, split_bits, &(opg_log->missing));
     opg_log->mark_dirty_to(eversion_t::max());
     mark_dirty_to(eversion_t::max());