If it changed to be *atime = p->first
we should change ReplicatedPG::agent_maybe_evict
if (atime < 0 && obc->obs.oi.mtime != utime_t()) {
if (obc->obs.oi.local_mtime != utime_t()) {
atime = obc->obs.oi.local_mtime;
} else {
atime = obc->obs.oi.mtime;
}
}
if (atime < 0)
atime = 0; // or other
void ReplicatedPG::agent_estimate_atime_temp(const hobject_t& oid,
int *atime, int *temp)
{
assert(hit_set);
time_t now = ceph_clock_now(NULL).sec();
*atime = -1;
if (temp)
*temp = 0;
if (hit_set->contains(oid)) {
*atime = now;
if (temp)
++(*temp);
else
return;
}
for (map<time_t,HitSetRef>::iterator p = agent_state->hit_set_map.rbegin();
p != agent_state->hit_set_map.rend();
++p) {
if (p->second->contains(oid)) {
if (*atime < 0)
*atime = now - p->first;
if (temp)
++(*temp);
else
return;
}
}
}
2014-10-28 12:36 GMT+08:00 池信泽 <[email protected]>:
> I am sorry. We should only just modify the logic
> ReplicatedPG::agent_estimate_atime_temp, atime should be now.
>
> if (temp)
> *temp = 0;
> if (hit_set->contains(oid)) {
> *atime = 0;
> if (temp)
> ++(*temp);
> else
> return;
> }
>
> 2014-10-28 12:28 GMT+08:00 池信泽 <[email protected]>:
>> I think if it changed to be *atime = p->first, Below logic should
>> also be modified.
>>
>> ReplicatedPG::agent_maybe_evict
>>
>> if (atime < 0 && obc->obs.oi.mtime != utime_t()) {
>> if (obc->obs.oi.local_mtime != utime_t()) {
>> atime = ceph_clock_now(NULL).sec() - obc->obs.oi.local_mtime;
>> } else {
>> atime = ceph_clock_now(NULL).sec() - obc->obs.oi.mtime;
>> }
>> }
>>
>>
>> including
>> ReplicatedPG::agent_estimate_atime_temp
>> if (temp)
>> *temp = 0;
>> if (hit_set->contains(oid)) {
>> *atime = 0;
>> if (temp)
>> ++(*temp);
>> else
>> return;
>> }
>>
>> 2014-10-28 12:02 GMT+08:00 Sage Weil <[email protected]>:
>>> Yep. The pull request looks is correct too, but needs to be squashed into
>>> a single commit with a Signed-off-by: line and description.
>>>
>>> Zhiqiang, I think the reversed logic you just fixed in agent_maybe_evict()
>>> was partly because this function is filling in atime (which sounds like a
>>> timestamp) with an *age* (now - p->first). I think we should change
>>>
>>>> if (*atime < 0)
>>>> *atime = now - p->first;
>>>
>>> to be
>>>
>>> *atime = p->first
>>>
>>> and/or adjust the caller accordingly...?
>>>
>>> sage
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html