1. added commands blockdev-tray-open, blockdev-tray-close,
blockdev-medium-insert,
blockdev-medium-remove
I think this slightly overengineering. eject and change work well
enough, we do not need blockdev-medium-insert and blockdev-medium-remove
(yet). Of course there can be a new API, just nothing user-visible.
2. added the events: BLOCK_TRAY_OPEN, BLOCK_TRAY_CLOSE,
BLOCK_MEDIUM_INSERTED
BLOCK_MEDIUM_REMOVED, which would be emitted when the relating
command is issued
(maybe the events could just be BLOCK_TRAY_CHANGED &
BLOCK_MEDIUM_CHANGED)
Or even just one event with two boolean arguments.
Looks slightly less clean, but it has an advantage: a guest that sends
"eject" can wait for an event and will know whether the eject command
was really executed (tray = open, medium = none) or just an eject
request was obeyed by the guest (tray = open, medium = present).
Now, maybe the guest eject could also emit BLOCK_TRAY_OPEN &
BLOCK_TRAY_CLOSE. Then
I think this is a complete solution.
Yes.