Hi Ming,
While using dm-cache in my project I have noticed recently (once
applying real pressure) that
the user of dm-cache see corrupted memory.
I now believe there is a race within dm-cache. (using the 2.6.29
version on 2.6.32 kernel)
In particular, I was wondering how are you protecting the cache-block
state variable?
Also, assume that a cache is populated with data, and a read request
comes. in case of cache_hit
dm-cache will reply with 1 (DM_MAPIO_REMAPPED) instead of submitting
the IO. Now assume that
a new request come which is a miss, and the same cache-block that now
have in-flight IO is selected
to be used as the cache for insertions. How does dm-cache verify that
the remapped IO from the previous
cache hit is finished? before reading the new data to the cache-block?
Thank in advance for your reply!
Oded H