Re: About BUG #16279

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

 



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@xxxxxxxxx> 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@xxxxxxxxxx>:
>> On Thu, Sep 1, 2016 at 7:44 PM, Ning Yao <zay11022@xxxxxxxxx> 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@xxxxxxxxxxxxxxx
>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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