From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53252) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZpeAN-0007Th-Bt for qemu-devel@nongnu.org; Fri, 23 Oct 2015 11:22:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZpeAJ-0005oa-Kd for qemu-devel@nongnu.org; Fri, 23 Oct 2015 11:22:03 -0400 Date: Fri, 23 Oct 2015 16:21:47 +0100 From: Stefan Hajnoczi Message-ID: <20151023152147.GF5977@stefanha-x1.localdomain> References: <1445569694-2765-1-git-send-email-famz@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1445569694-2765-1-git-send-email-famz@redhat.com> Subject: Re: [Qemu-devel] [PATCH v7 00/10] block: Protect nested event loop with bdrv_drained_begin and bdrv_drained_end List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fam Zheng Cc: kwolf@redhat.com, pbonzini@redhat.com, jcody@redhat.com, qemu-devel@nongnu.org, qemu-block@nongnu.org On Fri, Oct 23, 2015 at 11:08:04AM +0800, Fam Zheng wrote: > v7: Exclude bdrv_drain and bdrv_qed_drain patches, they'll follow the > bdrv_drain fix for bdrv_aio_flush. > Fix internal snapshot clean. > > v6: Add Kevin's rev-by in patches 1-3, 6-8, 10, 12. > Add Jeff's rev-by in patches 1, 2, 6-8, 10. > 04: Fix spelling and wording in comments. [Jeff] > Add assert at decrement. [Jeff] > 05: Fix bad rebase. [Jeff] > 09: Let blk_is_available come first. [Jeff, Kevin] > 11: Rewrite bdrv_qed_drain. [Jeff] > > v5: Rebase onto Kevin's block tree. > > v4: Rebase on to master so fix the "bdrv_move_feature_fields" issue. > > v3: Call bdrv_drain unconditionally in bdrv_drained_begin. > Document the internal I/O implications between bdrv_drain_begin and end. > > The nested aio_poll()'s in block layer has a bug that new r/w requests from > ioeventfds and nbd exports are processed, which might break the caller's > semantics (qmp_transaction) or even pointers (bdrv_reopen). Probably not worth the hassle of renaming things, but this reminds me of maskable interrupts. When interrupts are masked, they are not delivered. Same thing here for file descriptors and I think a bool maskable flag would be a bit more self-explanatory than bool is_external.