On Wed, 05/06 16:22, Paolo Bonzini wrote: > > > On 06/05/2015 13:23, Fam Zheng wrote: > > void bdrv_op_block(BlockDriverState *bs, BlockOpType op, Error *reason) > > { > > BdrvOpBlocker *blocker; > > assert((int) op >= 0 && op < BLOCK_OP_TYPE_MAX); > > > > + bdrv_op_blocker_notify(bs, op, reason, true); > > blocker = g_new0(BdrvOpBlocker, 1); > > blocker->reason = reason; > > QLIST_INSERT_HEAD(&bs->op_blockers[op], blocker, list); > > @@ -3405,6 +3424,7 @@ void bdrv_op_unblock(BlockDriverState *bs, > > BlockOpType op, Error *reason) > > { > > BdrvOpBlocker *blocker, *next; > > assert((int) op >= 0 && op < BLOCK_OP_TYPE_MAX); > > + bdrv_op_blocker_notify(bs, op, reason, false); > > QLIST_FOREACH_SAFE(blocker, &bs->op_blockers[op], list, next) { > > if (blocker->reason == reason) { > > QLIST_REMOVE(blocker, list); > > Changed in the following patch.
Bad git rebase -i, will fix. > > Also, should we only invoke the notifier if the list becomes > empty/non-empty? Is there any reason why the notifier would like to > know the particular Error that was added? > Good point, this can be simplified. Fam