* About BUG #16279 @ 2016-09-02 2:44 Ning Yao 2016-09-02 15:50 ` Samuel Just 0 siblings, 1 reply; 4+ messages in thread From: Ning Yao @ 2016-09-02 2:44 UTC (permalink / raw) To: ceph-devel Hi, all we got the same issue http://tracker.ceph.com/issues/16279 I think it is possible objiter->second->version == last_divergent_update? If olog is [200'5 ~ 200'10, 202'11~ 202'20] with object A: [200'5, 200'8] log is [200'3 ~ 200'11], object A : [200'5, 200'8] Then after merge log os [200'3 ~ 200'10, 202'11~202'20] with divergent entry: object A: 200'5 and 200'8 first_divergent_update will be 200'5 and last_divergent_update will be 200'8 for object A. If can find it in current log, and the possible version the object A is equal or greater than 200'8. So I am not sure it must be greater than last_divergent_update but may be equal? Am I missing something else? Regards Ning Yao ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: About BUG #16279 2016-09-02 2:44 About BUG #16279 Ning Yao @ 2016-09-02 15:50 ` Samuel Just 2016-09-06 10:35 ` Ning Yao 0 siblings, 1 reply; 4+ messages in thread From: Samuel Just @ 2016-09-02 15:50 UTC (permalink / raw) To: Ning Yao; +Cc: ceph-devel On Thu, Sep 1, 2016 at 7:44 PM, Ning Yao <zay11022@gmail.com> wrote: > Hi, all > > we got the same issue http://tracker.ceph.com/issues/16279 > > I think it is possible objiter->second->version == last_divergent_update? > > If olog is [200'5 ~ 200'10, 202'11~ 202'20] with object A: [200'5, 200'8] > log is [200'3 ~ 200'11], object A : [200'5, 200'8] > > Then after merge log os [200'3 ~ 200'10, 202'11~202'20] with divergent entry: > object A: 200'5 and 200'8 I think I'm misunderstanding your notation, but if I'm reading this right, the entries at 200'5 and 200'8 would *not* be divergent -- the only divergent entry would be 200'11. > > first_divergent_update will be 200'5 and last_divergent_update will be > 200'8 for object A. If can find it in current log, and the possible > version the object A is equal or greater than 200'8. So I am not sure > it must be greater than last_divergent_update but may be equal? > > Am I missing something else? > > Regards > Ning Yao > -- > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: About BUG #16279 2016-09-02 15:50 ` Samuel Just @ 2016-09-06 10:35 ` Ning Yao 2016-09-06 14:32 ` Samuel Just 0 siblings, 1 reply; 4+ messages in thread From: Ning Yao @ 2016-09-06 10:35 UTC (permalink / raw) To: Samuel Just; +Cc: ceph-devel So I think the notation in the code is misunderstanding? Or the code to get list<pg_log_entry_t> divergent in merge_log is wrong? // move aside divergent items list<pg_log_entry_t> divergent; while (!log.empty()) { pg_log_entry_t &oe = *log.log.rbegin(); /* * look at eversion.version here. we want to avoid a situation like: * our log: 100'10 (0'0) m 10000004d3a.00000000/head by client4225.1:18529 * new log: 122'10 (0'0) m 10000004d3a.00000000/head by client4225.1:18529 * lower_bound = 100'9 * i.e, same request, different version. If the eversion.version is > the * lower_bound, we it is divergent. */ if (oe.version.version <= lower_bound.version) break; dout(10) << "merge_log divergent " << oe << dendl; divergent.push_front(oe); log.log.pop_back(); } As the logic above, divergent will contain all log_entry whose version is the same in olog and log? Regards Ning Yao 2016-09-02 23:50 GMT+08:00 Samuel Just <sjust@redhat.com>: > On Thu, Sep 1, 2016 at 7:44 PM, Ning Yao <zay11022@gmail.com> wrote: >> Hi, all >> >> we got the same issue http://tracker.ceph.com/issues/16279 >> >> I think it is possible objiter->second->version == last_divergent_update? >> >> If olog is [200'5 ~ 200'10, 202'11~ 202'20] with object A: [200'5, 200'8] >> log is [200'3 ~ 200'11], object A : [200'5, 200'8] >> >> Then after merge log os [200'3 ~ 200'10, 202'11~202'20] with divergent entry: >> object A: 200'5 and 200'8 > > I think I'm misunderstanding your notation, but if I'm reading this > right, the entries at 200'5 and 200'8 would *not* be divergent -- the > only divergent entry would be 200'11. > >> >> first_divergent_update will be 200'5 and last_divergent_update will be >> 200'8 for object A. If can find it in current log, and the possible >> version the object A is equal or greater than 200'8. So I am not sure >> it must be greater than last_divergent_update but may be equal? >> >> Am I missing something else? >> >> Regards >> Ning Yao >> -- >> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: About BUG #16279 2016-09-06 10:35 ` Ning Yao @ 2016-09-06 14:32 ` Samuel Just 0 siblings, 0 replies; 4+ messages in thread From: Samuel Just @ 2016-09-06 14:32 UTC (permalink / raw) To: Ning Yao; +Cc: ceph-devel No, in that example the versions are different, 100'10 vs 122'10. -Sam On Tue, Sep 6, 2016 at 3:35 AM, Ning Yao <zay11022@gmail.com> wrote: > So I think the notation in the code is misunderstanding? > > Or the code to get list<pg_log_entry_t> divergent in merge_log is wrong? > > // move aside divergent items > list<pg_log_entry_t> divergent; > while (!log.empty()) { > pg_log_entry_t &oe = *log.log.rbegin(); > /* > * look at eversion.version here. we want to avoid a situation like: > * our log: 100'10 (0'0) m 10000004d3a.00000000/head by > client4225.1:18529 > * new log: 122'10 (0'0) m 10000004d3a.00000000/head by > client4225.1:18529 > * lower_bound = 100'9 > * i.e, same request, different version. If the eversion.version is > the > * lower_bound, we it is divergent. > */ > if (oe.version.version <= lower_bound.version) > break; > dout(10) << "merge_log divergent " << oe << dendl; > divergent.push_front(oe); > log.log.pop_back(); > } > > As the logic above, divergent will contain all log_entry whose > version is the same in olog and log? > Regards > Ning Yao > > > 2016-09-02 23:50 GMT+08:00 Samuel Just <sjust@redhat.com>: >> On Thu, Sep 1, 2016 at 7:44 PM, Ning Yao <zay11022@gmail.com> wrote: >>> Hi, all >>> >>> we got the same issue http://tracker.ceph.com/issues/16279 >>> >>> I think it is possible objiter->second->version == last_divergent_update? >>> >>> If olog is [200'5 ~ 200'10, 202'11~ 202'20] with object A: [200'5, 200'8] >>> log is [200'3 ~ 200'11], object A : [200'5, 200'8] >>> >>> Then after merge log os [200'3 ~ 200'10, 202'11~202'20] with divergent entry: >>> object A: 200'5 and 200'8 >> >> I think I'm misunderstanding your notation, but if I'm reading this >> right, the entries at 200'5 and 200'8 would *not* be divergent -- the >> only divergent entry would be 200'11. >> >>> >>> first_divergent_update will be 200'5 and last_divergent_update will be >>> 200'8 for object A. If can find it in current log, and the possible >>> version the object A is equal or greater than 200'8. So I am not sure >>> it must be greater than last_divergent_update but may be equal? >>> >>> Am I missing something else? >>> >>> Regards >>> Ning Yao >>> -- >>> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in >>> the body of a message to majordomo@vger.kernel.org >>> More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-09-06 14:32 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-09-02 2:44 About BUG #16279 Ning Yao 2016-09-02 15:50 ` Samuel Just 2016-09-06 10:35 ` Ning Yao 2016-09-06 14:32 ` Samuel Just
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.