Revision 0e49de52 block.c
b/block.c | ||
---|---|---|
44 | 44 |
#include <windows.h> |
45 | 45 |
#endif |
46 | 46 |
|
47 |
static void bdrv_dev_change_cb(BlockDriverState *bs, int reason); |
|
47 | 48 |
static BlockDriverAIOCB *bdrv_aio_readv_em(BlockDriverState *bs, |
48 | 49 |
int64_t sector_num, QEMUIOVector *qiov, int nb_sectors, |
49 | 50 |
BlockDriverCompletionFunc *cb, void *opaque); |
... | ... | |
688 | 689 |
} |
689 | 690 |
|
690 | 691 |
if (!bdrv_key_required(bs)) { |
691 |
/* call the change callback */ |
|
692 | 692 |
bs->media_changed = 1; |
693 |
if (bs->change_cb) |
|
694 |
bs->change_cb(bs->change_opaque, CHANGE_MEDIA); |
|
693 |
bdrv_dev_change_cb(bs, CHANGE_MEDIA); |
|
695 | 694 |
} |
696 | 695 |
|
697 | 696 |
return 0; |
... | ... | |
727 | 726 |
bdrv_close(bs->file); |
728 | 727 |
} |
729 | 728 |
|
730 |
/* call the change callback */ |
|
731 | 729 |
bs->media_changed = 1; |
732 |
if (bs->change_cb) |
|
733 |
bs->change_cb(bs->change_opaque, CHANGE_MEDIA); |
|
730 |
bdrv_dev_change_cb(bs, CHANGE_MEDIA); |
|
734 | 731 |
} |
735 | 732 |
} |
736 | 733 |
|
... | ... | |
792 | 789 |
{ |
793 | 790 |
assert(bs->dev == dev); |
794 | 791 |
bs->dev = NULL; |
795 |
bs->change_cb = NULL;
|
|
796 |
bs->change_opaque = NULL;
|
|
792 |
bs->dev_ops = NULL;
|
|
793 |
bs->dev_opaque = NULL;
|
|
797 | 794 |
} |
798 | 795 |
|
799 | 796 |
/* TODO change to return DeviceState * when all users are qdevified */ |
... | ... | |
802 | 799 |
return bs->dev; |
803 | 800 |
} |
804 | 801 |
|
802 |
void bdrv_set_dev_ops(BlockDriverState *bs, const BlockDevOps *ops, |
|
803 |
void *opaque) |
|
804 |
{ |
|
805 |
bs->dev_ops = ops; |
|
806 |
bs->dev_opaque = opaque; |
|
807 |
} |
|
808 |
|
|
809 |
static void bdrv_dev_change_cb(BlockDriverState *bs, int reason) |
|
810 |
{ |
|
811 |
if (bs->dev_ops && bs->dev_ops->change_cb) { |
|
812 |
bs->dev_ops->change_cb(bs->dev_opaque, reason); |
|
813 |
} |
|
814 |
} |
|
815 |
|
|
805 | 816 |
/* |
806 | 817 |
* Run consistency checks on an image |
807 | 818 |
* |
... | ... | |
1272 | 1283 |
ret = drv->bdrv_truncate(bs, offset); |
1273 | 1284 |
if (ret == 0) { |
1274 | 1285 |
ret = refresh_total_sectors(bs, offset >> BDRV_SECTOR_BITS); |
1275 |
if (bs->change_cb) { |
|
1276 |
bs->change_cb(bs->change_opaque, CHANGE_SIZE); |
|
1277 |
} |
|
1286 |
bdrv_dev_change_cb(bs, CHANGE_SIZE); |
|
1278 | 1287 |
} |
1279 | 1288 |
return ret; |
1280 | 1289 |
} |
... | ... | |
1612 | 1621 |
return bs->enable_write_cache; |
1613 | 1622 |
} |
1614 | 1623 |
|
1615 |
/* XXX: no longer used */ |
|
1616 |
void bdrv_set_change_cb(BlockDriverState *bs, |
|
1617 |
void (*change_cb)(void *opaque, int reason), |
|
1618 |
void *opaque) |
|
1619 |
{ |
|
1620 |
bs->change_cb = change_cb; |
|
1621 |
bs->change_opaque = opaque; |
|
1622 |
} |
|
1623 |
|
|
1624 | 1624 |
int bdrv_is_encrypted(BlockDriverState *bs) |
1625 | 1625 |
{ |
1626 | 1626 |
if (bs->backing_hd && bs->backing_hd->encrypted) |
... | ... | |
1659 | 1659 |
bs->valid_key = 1; |
1660 | 1660 |
/* call the change callback now, we skipped it on open */ |
1661 | 1661 |
bs->media_changed = 1; |
1662 |
if (bs->change_cb) |
|
1663 |
bs->change_cb(bs->change_opaque, CHANGE_MEDIA); |
|
1662 |
bdrv_dev_change_cb(bs, CHANGE_MEDIA); |
|
1664 | 1663 |
} |
1665 | 1664 |
return ret; |
1666 | 1665 |
} |
Also available in: Unified diff