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