Thanks for replying. 

>>I am a bit puzzled why a new ARC entry could not be cloned in arc_release.....
>
>We have already handed out a reference to the data at the point that
>buffer is being released, so we cannot allocate a new block "JIT".

I think I get it.  Each colliding thread threads need a separate copy of the 
buffer from 
the point of the read collision, so that they can dirty these if they so 
desire.  
You have to be prepared for the worst case scenario, where all threads end up 
modifying their buffer.
We may end up with N different buffer contents for N possible colliding threads.

COW is a bit of a mind-bender to get used to.  

So if we have a number of threads colliding on read, we have to maintain all 
of the cloned data in the ARC, even if none of the threads ends up modifying 
their buffer.
-- 
This message posted from opensolaris.org

Reply via email to