PGLog::rewind_divergent_log use case

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[Note: ceph-devel cc'ed]

Hi Sam,

While trying to create the conditions for the following to happen in PGLog::rewind_divergent_log:

    if (p == log.log.begin()) {
      // yikes, the whole thing is divergent!
      divergent.swap(log.log);
      break;
    }

https://github.com/ceph/ceph/blob/master/src/osd/PGLog.cc#L355

I created this ( matching the drawing attached ), and the test case works. 

    {
      pg_log_entry_t e;

      info.log_tail = log.tail = eversion_t(1, 1);
      newhead = eversion_t(1, 3);
      e.version = divergent_version = eversion_t(1, 5);
      e.soid.hash = 0x9;
      divergent_object = e.soid;
      e.op = pg_log_entry_t::DELETE;
      e.prior_version = prior_version = eversion_t(0, 2);
      log.log.push_back(e);
      log.head = e.version;
    }

https://github.com/dachary/ceph/commit/d592d7f10968c56139cb470a4111ddfbe08a4030#L0R136

But it does not look like a situation that is actually going to happen. I feel something is missing and a hint would be much appreciated :-)

Cheers

-- 
Loïc Dachary, Artisan Logiciel Libre
All that is necessary for the triumph of evil is that good people do nothing.

Attachment: a.png
Description: PNG image

Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux