On 04.06.2015 14:37, Alberto Garcia wrote:
On Wed 03 Jun 2015 09:43:48 PM CEST, Max Reitz wrote:
bdrv_is_inserted() should be invoked recursively on the children of
quorum.
Signed-off-by: Max Reitz <mre...@redhat.com>
Reviewed-by: Eric Blake <ebl...@redhat.com>
---
+static bool quorum_is_inserted(BlockDriverState *bs)
+{
+ BDRVQuorumState *s = bs->opaque;
+ int i;
+
+ for (i = 0; i < s->num_children; i++) {
+ if (!bdrv_is_inserted(s->bs[i])) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
I wonder if it can actually happen that only some of the BDS are
inserted :-?
I'm actually able to start Quorum on an empty DVD drive:
$ x86_64-softmmu/qemu-system-x86_64 -drive
if=none,id=drv,driver=quorum,children.0.file.filename=/dev/sr0,children.0.driver=raw,children.1.file.filename=test.qcow2,vote-threshold=1
-qmp stdio
{"QMP": {"version": {"qemu": {"micro": 50, "minor": 3, "major": 2},
"package": ""}, "capabilities": []}}
{'execute':'qmp_capabilities'}
{"return": {}}
{'execute':'human-monitor-command','arguments':{'command-line':'qemu-io
drv "write 0 512"'}}
write failed: No medium found
{"return": ""}
(note that on master, the write is successful (???), but you do get:
{"timestamp": {"seconds": 1433518087, "microseconds": 527326}, "event":
"QUORUM_REPORT_BAD", "data": {"node-name": "", "sectors-count": 1,
"sector-num": 0, "error": "No medium found"}})
Thank you for reviewing! :-)
Max