From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58552) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZpDVN-0001yw-Am for qemu-devel@nongnu.org; Thu, 22 Oct 2015 06:53:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZpDVJ-0002zC-Fr for qemu-devel@nongnu.org; Thu, 22 Oct 2015 06:53:57 -0400 Date: Thu, 22 Oct 2015 12:53:45 +0200 From: Kevin Wolf Message-ID: <20151022105345.GF3941@noname.redhat.com> References: <1445495580-32129-1-git-send-email-famz@redhat.com> <1445495580-32129-12-git-send-email-famz@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1445495580-32129-12-git-send-email-famz@redhat.com> Subject: Re: [Qemu-devel] [PATCH v6 11/12] qed: Implement .bdrv_drain List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fam Zheng Cc: pbonzini@redhat.com, jcody@redhat.com, stefanha@redhat.com, qemu-devel@nongnu.org, qemu-block@nongnu.org Am 22.10.2015 um 08:32 hat Fam Zheng geschrieben: > The "need_check_timer" is used to clear the "NEED_CHECK" flag in the > image header after a grace period once metadata update has finished. In > compliance to the bdrv_drain semantics we should make sure it remains > deleted once .bdrv_drain is called. > > We cannot reuse qed_need_check_timer_cb because it calls bdrv_aio_flush > with a completion callback that starts more I/O, bdrv_drain cannot cope > with this. For the record: I discussed this with Fam on IRC and we came to the conclusion that we should instead fix bdrv_drain() to correctly drain in-flight flushes. In order to achieve this, Fam will send a series that adds a BdrvTrackedRequest to all remaining asynchronous operations. So far we have identified flush, discard and aio_ioctl. At the same time he will send a rebased version of this series that goes back to asynchronous flushing in bdrv_qed_drain(). > Also the assertions in qed_need_check_timer_cb and > qed_unplug_allocating_write_reqs are not guaranteed in the case of > bdrv_qed_drain. > > Signed-off-by: Fam Zheng Kevin