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. 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? Paolo