On 28/05/21 12:24, Paolo Bonzini wrote:

It's still more complicated, because you need to add some kind of

     method = s->method;

This would even have to be a separate, one-line critical section...

Paolo

     ret = block_copy_do_copy(..., method);
     if (ret < 0 && method <= COPY_RANGE_SMALL) {
         method = COPY_RANGE_READ_WRITE;
         ret = block_copy_do_copy(..., method);
         }
     lock();
         if (method == s->method) {
             /* compute new method */
         }

which makes it more complicated than this patch IMO.  But yeah at least it's a viable alternative to the atomics.



Reply via email to