[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH v2 8/8] hw: Drop superfluous specia
Re: [Qemu-block] [Qemu-devel] [PATCH v2 8/8] hw: Drop superfluous special checks for orphaned -drive
Fri, 03 Feb 2017 16:38:25 +0100
Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux)
Fam Zheng <address@hidden> writes:
> On Fri, 02/03 14:35, Markus Armbruster wrote:
>> > I guess the painpoint is "okay, what the heck does the machine support
>> > then?" -
>> At the place where we can reliably detect orphaned drives regardless of
>> what the machine initialization code does, we have no idea.
>> > that "3 > 2" is the good part of the old message.
>> At the places that actually adopt drives, we know. But there are many
>> of them. Just three check for orphans. One of them gets it right
>> (ide/core.c), one of them gets it wrong (mips_jazz.c), and one of them
>> sets a problematic example (sun4m.c): if copied to a machine that lets
>> users configure additional SCSI HBAs, it would break if=scsi for those.
>> Dampens my enthusiasm for improving the error message by adding similar
>> checks to all the places that adopt drives.
>> We could make machines declare what they support. Better, I think. So
>> if you have a burning desire to leave your mark in git-blame for every
> Could you please remind me the situation about if=scsi across all machines? If
> it is simply legacy and it's recommended to use "-drive if=none" and "-device
> ...", I think saying this in the error message is enough; or if "if=scsi" is a
> valid way for some machines, then maybe we can declare support limits found
> your script?
Short story: once my followup series "[PATCH 0/3] hw: Deprecate unwanted
use -drive if=scsi" is in, if=scsi is deprecated except for machine
types magnum pica61 LX SPARCClassic SPARCbook SS-10 SS-20 SS-4 SS-5
SS-600MP Voyager realview-eb realview-eb-mpcore versatileab versatilepb
pseries-*. Documenting what they support would be feasible.
Long story: it's... complicated.
Ideally, -drive if=T,... (T!=none) would be sugar for a -drive / -device
combo. It actually is for if=virtio: drive_new() desugars it.
All the others are implemented by machine-specific ad hoc code,
i.e. machine initialization creates devices however it sees fit.
For modern devices, what's done is often pretty much equivalent to a
-device. For instance, a PC machine type's action for
if=ide,media=disk,bus=B,unit=U is pretty much equivalent to -device
ide-hd,bus=ide.B,unit=U. See also docs/qdev-device-use.txt.
Desugaring details depend on the machine, and are code, not data. Data
would be easier to find and document.
For non-qdevified devices, we're even farther from a clean desugaring,
simply because these are not available with -device, but can only be
created by code. For instance, some machine types implement if=sd with
the non-qdevified hw/sd/sd.c; grep for sd_init().
So, we're not yet ready for deprecating if!=none.
But you asked for if=scsi specifically.
Only a few machines have a SCSI HBA onboard, and therefore adopt if=scsi
drives: magnum pica61 LX SPARCClassic SPARCbook SS-10 SS-20 SS-4 SS-5
SS-600MP Voyager. We're not deprecating this usage.
A few more create SCSI HBAs on demand: realview-eb realview-eb-mpcore
versatileab versatilepb pseries-* pc*. My followup series deprecates it
for pc* only.
Finally, there's some special SCSI magic: most SCSI HBAs adopt if=scsi
drives independend of machine initialization. My followup series