On 01/12/2015 04:57, Peter Xu wrote:
>> > You need a mutex around the reads of ->status and ->written_size.
> Could I avoid using mutex here? Let me try to explain what I
> thought.
> 
> The concurrency of this should only happen when:
> 
> - detached dump thread is working (dump thread)
> - user queries dump status (main thread)
> 
> What the dump thread is doing should be something like:
> 
> - [start dumping]
> - inc written_size
> - inc written_size
> - ...
> - inc written_size
> - set ->status to COMPLETED|FAILED
> - [end dumping]

Yes, it's possible but you need to use atomic_mb_read/atomic_mb_set to
write ->status.  Otherwise a CPU can see the write to ->status before
some of the final writes to ->written_size.

Paolo

Reply via email to