Message ID | 1312376904-16115-45-git-send-email-armbru@redhat.com |
---|---|
State | New |
Headers | show |
Am 03.08.2011 15:08, schrieb Markus Armbruster: > To let device models distinguish between eject and load. > > Signed-off-by: Markus Armbruster <armbru@redhat.com> > --- > block.c | 12 ++++++------ > block.h | 3 ++- > hw/fdc.c | 2 +- > hw/ide/core.c | 2 +- > hw/scsi-disk.c | 2 +- > hw/sd.c | 2 +- > 6 files changed, 12 insertions(+), 11 deletions(-) > > diff --git a/block.c b/block.c > index b0e54ef..1bd67dd 100644 > --- a/block.c > +++ b/block.c > @@ -44,7 +44,7 @@ > #include <windows.h> > #endif > > -static void bdrv_dev_change_media_cb(BlockDriverState *bs); > +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, > BlockDriverCompletionFunc *cb, void *opaque); > @@ -661,7 +661,7 @@ int bdrv_open(BlockDriverState *bs, const char *filename, int flags, > } > > if (!bdrv_key_required(bs)) { > - bdrv_dev_change_media_cb(bs); > + bdrv_dev_change_media_cb(bs, true); > } > > return 0; > @@ -697,7 +697,7 @@ void bdrv_close(BlockDriverState *bs) > bdrv_close(bs->file); > } > > - bdrv_dev_change_media_cb(bs); > + bdrv_dev_change_media_cb(bs, false); > } > } > > @@ -780,10 +780,10 @@ void bdrv_set_dev_ops(BlockDriverState *bs, const BlockDevOps *ops, > } > } > > -static void bdrv_dev_change_media_cb(BlockDriverState *bs) > +static void bdrv_dev_change_media_cb(BlockDriverState *bs, bool load) > { > if (bs->dev_ops && bs->dev_ops->change_media_cb) { > - bs->dev_ops->change_media_cb(bs->dev_opaque); > + bs->dev_ops->change_media_cb(bs->dev_opaque, load); > } > } > > @@ -1634,7 +1634,7 @@ int bdrv_set_key(BlockDriverState *bs, const char *key) > } else if (!bs->valid_key) { > bs->valid_key = 1; > /* call the change callback now, we skipped it on open */ > - bdrv_dev_change_media_cb(bs); > + bdrv_dev_change_media_cb(bs, 1); s/1/true/ Kevin
Kevin Wolf <kwolf@redhat.com> writes: > Am 03.08.2011 15:08, schrieb Markus Armbruster: >> To let device models distinguish between eject and load. >> >> Signed-off-by: Markus Armbruster <armbru@redhat.com> >> --- >> block.c | 12 ++++++------ >> block.h | 3 ++- >> hw/fdc.c | 2 +- >> hw/ide/core.c | 2 +- >> hw/scsi-disk.c | 2 +- >> hw/sd.c | 2 +- >> 6 files changed, 12 insertions(+), 11 deletions(-) >> >> diff --git a/block.c b/block.c >> index b0e54ef..1bd67dd 100644 >> --- a/block.c >> +++ b/block.c >> @@ -44,7 +44,7 @@ >> #include <windows.h> >> #endif >> >> -static void bdrv_dev_change_media_cb(BlockDriverState *bs); >> +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, >> BlockDriverCompletionFunc *cb, void *opaque); >> @@ -661,7 +661,7 @@ int bdrv_open(BlockDriverState *bs, const char *filename, int flags, >> } >> >> if (!bdrv_key_required(bs)) { >> - bdrv_dev_change_media_cb(bs); >> + bdrv_dev_change_media_cb(bs, true); >> } >> >> return 0; >> @@ -697,7 +697,7 @@ void bdrv_close(BlockDriverState *bs) >> bdrv_close(bs->file); >> } >> >> - bdrv_dev_change_media_cb(bs); >> + bdrv_dev_change_media_cb(bs, false); >> } >> } >> >> @@ -780,10 +780,10 @@ void bdrv_set_dev_ops(BlockDriverState *bs, const BlockDevOps *ops, >> } >> } >> >> -static void bdrv_dev_change_media_cb(BlockDriverState *bs) >> +static void bdrv_dev_change_media_cb(BlockDriverState *bs, bool load) >> { >> if (bs->dev_ops && bs->dev_ops->change_media_cb) { >> - bs->dev_ops->change_media_cb(bs->dev_opaque); >> + bs->dev_ops->change_media_cb(bs->dev_opaque, load); >> } >> } >> >> @@ -1634,7 +1634,7 @@ int bdrv_set_key(BlockDriverState *bs, const char *key) >> } else if (!bs->valid_key) { >> bs->valid_key = 1; >> /* call the change callback now, we skipped it on open */ >> - bdrv_dev_change_media_cb(bs); >> + bdrv_dev_change_media_cb(bs, 1); > > s/1/true/ Thanks, will fix.
diff --git a/block.c b/block.c index b0e54ef..1bd67dd 100644 --- a/block.c +++ b/block.c @@ -44,7 +44,7 @@ #include <windows.h> #endif -static void bdrv_dev_change_media_cb(BlockDriverState *bs); +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, BlockDriverCompletionFunc *cb, void *opaque); @@ -661,7 +661,7 @@ int bdrv_open(BlockDriverState *bs, const char *filename, int flags, } if (!bdrv_key_required(bs)) { - bdrv_dev_change_media_cb(bs); + bdrv_dev_change_media_cb(bs, true); } return 0; @@ -697,7 +697,7 @@ void bdrv_close(BlockDriverState *bs) bdrv_close(bs->file); } - bdrv_dev_change_media_cb(bs); + bdrv_dev_change_media_cb(bs, false); } } @@ -780,10 +780,10 @@ void bdrv_set_dev_ops(BlockDriverState *bs, const BlockDevOps *ops, } } -static void bdrv_dev_change_media_cb(BlockDriverState *bs) +static void bdrv_dev_change_media_cb(BlockDriverState *bs, bool load) { if (bs->dev_ops && bs->dev_ops->change_media_cb) { - bs->dev_ops->change_media_cb(bs->dev_opaque); + bs->dev_ops->change_media_cb(bs->dev_opaque, load); } } @@ -1634,7 +1634,7 @@ int bdrv_set_key(BlockDriverState *bs, const char *key) } else if (!bs->valid_key) { bs->valid_key = 1; /* call the change callback now, we skipped it on open */ - bdrv_dev_change_media_cb(bs); + bdrv_dev_change_media_cb(bs, 1); } return ret; } diff --git a/block.h b/block.h index 3885208..3fe0357 100644 --- a/block.h +++ b/block.h @@ -32,11 +32,12 @@ typedef struct QEMUSnapshotInfo { typedef struct BlockDevOps { /* * Runs when virtual media changed (monitor commands eject, change) + * Argument load is true on load and false on eject. * Beware: doesn't run when a host device's physical media * changes. Sure would be useful if it did. * Device models with removable media must implement this callback. */ - void (*change_media_cb)(void *opaque); + void (*change_media_cb)(void *opaque, bool load); /* * Is medium ejected from the device? * Device models calling bdrv_eject() should implement this. diff --git a/hw/fdc.c b/hw/fdc.c index e8da6a9..1f084ce 100644 --- a/hw/fdc.c +++ b/hw/fdc.c @@ -1777,7 +1777,7 @@ static void fdctrl_result_timer(void *opaque) fdctrl_stop_transfer(fdctrl, 0x00, 0x00, 0x00); } -static void fdctrl_change_cb(void *opaque) +static void fdctrl_change_cb(void *opaque, bool load) { FDrive *drive = opaque; diff --git a/hw/ide/core.c b/hw/ide/core.c index bd59016..832fdda 100644 --- a/hw/ide/core.c +++ b/hw/ide/core.c @@ -759,7 +759,7 @@ static void ide_cfata_metadata_write(IDEState *s) } /* called when the inserted state of the media has changed */ -static void ide_cd_change_cb(void *opaque) +static void ide_cd_change_cb(void *opaque, bool load) { IDEState *s = opaque; uint64_t nb_sectors; diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c index 71d6408..aa90ede 100644 --- a/hw/scsi-disk.c +++ b/hw/scsi-disk.c @@ -1212,7 +1212,7 @@ static void scsi_destroy(SCSIDevice *dev) blockdev_mark_auto_del(s->qdev.conf.bs); } -static void scsi_cd_change_media_cb(void *opaque) +static void scsi_cd_change_media_cb(void *opaque, bool load) { } diff --git a/hw/sd.c b/hw/sd.c index 3bcfe6a..e756996 100644 --- a/hw/sd.c +++ b/hw/sd.c @@ -419,7 +419,7 @@ static void sd_reset(SDState *sd, BlockDriverState *bdrv) sd->pwd_len = 0; } -static void sd_cardchange(void *opaque) +static void sd_cardchange(void *opaque, bool load) { SDState *sd = opaque;
To let device models distinguish between eject and load. Signed-off-by: Markus Armbruster <armbru@redhat.com> --- block.c | 12 ++++++------ block.h | 3 ++- hw/fdc.c | 2 +- hw/ide/core.c | 2 +- hw/scsi-disk.c | 2 +- hw/sd.c | 2 +- 6 files changed, 12 insertions(+), 11 deletions(-)