This structure can hold some call back functions, such as event emit, error printf. By using call back, block layer can be decoupled with other components.
Signed-off-by: Wenchao Xia <xiaw...@linux.vnet.ibm.com> --- block.c | 7 +++++++ include/block/block.h | 11 +++++++++++ 2 files changed, 18 insertions(+), 0 deletions(-) diff --git a/block.c b/block.c index 07385bf..576b86e 100644 --- a/block.c +++ b/block.c @@ -55,6 +55,13 @@ typedef enum { BDRV_REQ_ZERO_WRITE = 0x2, } BdrvRequestFlags; +BDRVCommonHooks bdrv_common_hooks; + +void bdrv_set_common_hooks(BDRVCommonHooks *hooks) +{ + bdrv_common_hooks = *hooks; +} + static void bdrv_dev_change_media_cb(BlockDriverState *bs, bool load); static BlockDriverAIOCB *bdrv_aio_readv_em(BlockDriverState *bs, int64_t sector_num, QEMUIOVector *qiov, int nb_sectors, diff --git a/include/block/block.h b/include/block/block.h index 728ec1a..7913f48 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -119,6 +119,17 @@ typedef struct BDRVReopenState { void *opaque; } BDRVReopenState; +/* + * Now all block layer use same hooks, If needed it can be changed as per + * bds. + */ +typedef struct BDRVCommonHooks { + void (*hooks)(void *); +} BDRVCommonHooks; + +extern BDRVCommonHooks bdrv_common_hooks; + +void bdrv_set_common_hooks(BDRVCommonHooks *hooks); void bdrv_iostatus_enable(BlockDriverState *bs); void bdrv_iostatus_reset(BlockDriverState *bs); -- 1.7.1