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