[Top][All Lists]

[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

From: Markus Armbruster
Subject: Re: [Qemu-block] [Qemu-devel] [PATCH v2 8/8] hw: Drop superfluous special checks for orphaned -drive
Date: Fri, 03 Feb 2017 16:38:25 +0100
User-agent: 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
>> machine...
> 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 
> with
> 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
deprecates that.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]