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.