From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45223) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a3heH-0006Cr-Lw for qemu-devel@nongnu.org; Tue, 01 Dec 2015 04:55:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a3heB-0002vP-S0 for qemu-devel@nongnu.org; Tue, 01 Dec 2015 04:55:01 -0500 Received: from mx1.redhat.com ([209.132.183.28]:50374) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a3he7-0002v2-S9 for qemu-devel@nongnu.org; Tue, 01 Dec 2015 04:54:55 -0500 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (Postfix) with ESMTPS id 838482653 for ; Tue, 1 Dec 2015 09:54:51 +0000 (UTC) References: <1448883140-20249-1-git-send-email-peterx@redhat.com> <1448883140-20249-11-git-send-email-peterx@redhat.com> <565C478A.8080106@redhat.com> <20151201035755.GI21032@pxdev.xzpeter.org> From: Paolo Bonzini Message-ID: <565D6E68.1060303@redhat.com> Date: Tue, 1 Dec 2015 10:54:48 +0100 MIME-Version: 1.0 In-Reply-To: <20151201035755.GI21032@pxdev.xzpeter.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 10/12] Dump: add qmp command "query-dump" List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Xu Cc: drjones@redhat.com, lersek@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org, famz@redhat.com, lcapitulino@redhat.com 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