Commit bd491d6a4ecc57144ffa55c0daf97b43bc1648ce
1 parent
71e3ceb8
Fix CDROM change, by Anthony Liguori.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2262 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
12 additions
and
0 deletions
hw/ide.c
... | ... | @@ -1481,6 +1481,17 @@ static void ide_atapi_cmd(IDEState *s) |
1481 | 1481 | } |
1482 | 1482 | } |
1483 | 1483 | |
1484 | +/* called when the inserted state of the media has changed */ | |
1485 | +static void cdrom_change_cb(void *opaque) | |
1486 | +{ | |
1487 | + IDEState *s = opaque; | |
1488 | + int64_t nb_sectors; | |
1489 | + | |
1490 | + /* XXX: send interrupt too */ | |
1491 | + bdrv_get_geometry(s->bs, &nb_sectors); | |
1492 | + s->nb_sectors = nb_sectors; | |
1493 | +} | |
1494 | + | |
1484 | 1495 | static void ide_cmd_lba48_transform(IDEState *s, int lba48) |
1485 | 1496 | { |
1486 | 1497 | s->lba48 = lba48; |
... | ... | @@ -2111,6 +2122,7 @@ static void ide_init2(IDEState *ide_state, |
2111 | 2122 | } |
2112 | 2123 | if (bdrv_get_type_hint(s->bs) == BDRV_TYPE_CDROM) { |
2113 | 2124 | s->is_cdrom = 1; |
2125 | + bdrv_set_change_cb(s->bs, cdrom_change_cb, s); | |
2114 | 2126 | } |
2115 | 2127 | } |
2116 | 2128 | s->drive_serial = drive_serial++; | ... | ... |