[rds-devel] Re: The meaning of MR invalidation
Richard Frank
richard.frank at oracle.com
Fri Feb 8 09:00:58 PST 2008
Just to be sure I'm on the same page..
We should not cache and "re-use keys" - we always want a fresh key (seqn
bumped) for every I/O (get_mr).
When we invalidate we want all prior "free'd" keys to be invalid - not
the current set of I/Os - which is why we want a fresh key on every I/O.
The invalidate (sync_tpt) affects operations for all free'd keys.
Assuming multiple I/Os - each with a different key - are issued to the
same memory - even with a fresh key on every I/O - without an
intervening invalidate - it is possible for the prior I/O to arrive
which could result in corruption.
It's up to the app to decide if an invalidate of prior I/Os (keys) is
required - based on the apps protocol.
Olaf Kirch wrote:
> On Friday 08 February 2008 15:32, Richard Frank wrote:
>
>>> We could make this a little more robust I guess by also freeing MRs
>>> when the application asks for an invalidate. At least the mthca
>>> driver seems to generate unique R_Keys (the top bits of the R_Key
>>> are used as a kind of counter, so we'd really have to cycle through
>>> 4 billion MRs before getting the same R_Key).
>>>
>>>
>>>
>> Yes - this is what we want.
>>
>
> Okay. It'll allow me to remove quite a bit of code from the pool code,
> too.
>
> Olaf
>
More information about the rds-devel
mailing list