[libvirt] [PATCH v2 1/3] unify PARAM_CURRENT/PARAM_LIVE/PARAM_CONFIG flags
Hu Tao
hutao at cn.fujitsu.com
Tue Jun 7 03:24:43 UTC 2011
On Fri, Jun 03, 2011 at 08:36:26AM -0600, Eric Blake wrote:
> On 06/02/2011 08:15 PM, Hu Tao wrote:
> > This patch unify the PARAM_CURRENT/PARAM_LIVE/PARAM_CONFIG flags as
> > Daniel Veillard suggested.
>
> I concur with danpb's NACK. See how I kept existing enum names while
> adding a new consolidation enum in commit 824dcaf, as well as how I sunk
> deprecated enum names to the bottom of the file in commig a9b3a78 as
> well as documenting versions so a user knows whether to use the new or
> the old name depending on how old of a libvirt they are targetting. You
> have to take the same approach for this patch to have any chance of
> getting approved.
Thanks for the info.
>
> However, there is one exception - anything that did not exist in 0.9.1
> is fair game, if we do it now.
>
> > /**
> > + * virDomainParamFlags:
> > + *
> > + * common flags for commands that support --current, --live, --config
> > + * and --force parameters
> > + */
> > +
> > +typedef enum {
> > + VIR_DOMAIN_PARAM_CURRENT = 0, /* affect current domain state */
> > + VIR_DOMAIN_PARAM_LIVE = (1 << 0), /* affect active domain */
> > + VIR_DOMAIN_PARAM_CONFIG = (1 << 1), /* affect next boot */
> > + VIR_DOMAIN_PARAM_FORCE = (1 << 2), /* Forcibly modify device
> > + (ex. force eject a cdrom) */
> > + VIR_DOMAIN_PARAM_MAXIMUM = (1 << 3), /* affect Max rather than current */
> > +} virDomainParamFlags;
>
> If we introduce a new enum, we should _only_ list the three values
> _CURRENT, _LIVE, and _CONFIG. Leave other function-specific flags to
> function-specific enums. Furthermore, you _can't_ change values - an
> older client that thinks that _MAXIMUM is 1<<2 calling a newer server
> that thinks _MAXIMUM is 1<<3 is a recipe for disaster.
OK.
>
> Also, I wonder if the names might be better represented as:
>
> VIR_DOMAIN_AFFECT_CURRENT = 0,
> VIR_DOMAIN_AFFECT_LIVE = 1<<1,
> VIR_DOMAIN_AFFECT_CONFIG = 1<<2,
OK.
>
>
> > /* Management of scheduler parameters */
> >
> > -typedef enum {
> > - VIR_DOMAIN_SCHEDPARAM_CURRENT = 0, /* affect current domain state */
> > - VIR_DOMAIN_SCHEDPARAM_LIVE = (1 << 0), /* Affect active domain */
> > - VIR_DOMAIN_SCHEDPARAM_CONFIG = (1 << 1), /* Affect next boot */
> > -} virDomainSchedParameterFlags;
> > -
>
> _IF_ we hurry, we can delete this enum prior to 0.9.2, since this
> particular enum has not been released yet. But if 0.9.2 is released, we
> are stuck with these enum names.
0.9.2 is released at June 6 (+0800)
>
> > -/* flags for setting memory parameters */
> > -typedef enum {
> > - VIR_DOMAIN_MEMORY_PARAM_CURRENT = 0, /* affect current domain state */
> > - VIR_DOMAIN_MEMORY_PARAM_LIVE = (1 << 0), /* affect active domain */
> > - VIR_DOMAIN_MEMORY_PARAM_CONFIG = (1 << 1) /* affect next boot */
> > -} virMemoryParamFlags;
>
> Likewise a set of unreleased enum names.
>
> > -/* Memory size modification flags. */
> > -typedef enum {
> > - VIR_DOMAIN_MEM_CURRENT = 0, /* affect current domain state */
> > - VIR_DOMAIN_MEM_LIVE = (1 << 0), /* affect active domain */
> > - VIR_DOMAIN_MEM_CONFIG = (1 << 1), /* affect next boot */
> > - VIR_DOMAIN_MEM_MAXIMUM = (1 << 2), /* affect Max rather than current */
> > -} virDomainMemoryModFlags;
>
> Must be kept; these existed in 0.9.1. Furthermore, this is a case where
> VIR_DOMAIN_MEM_MAXIMUM cannot change in value.
OK.
>
> > -/* Flags for controlling virtual CPU hot-plugging. */
> > -typedef enum {
> > - /* Must choose at least one of these two bits; SetVcpus can choose both */
> > - VIR_DOMAIN_VCPU_LIVE = (1 << 0), /* Affect active domain */
> > - VIR_DOMAIN_VCPU_CONFIG = (1 << 1), /* Affect next boot */
> > -
> > - /* Additional flags to be bit-wise OR'd in */
> > - VIR_DOMAIN_VCPU_MAXIMUM = (1 << 2), /* Max rather than current count */
> > -} virDomainVcpuFlags;
>
> Must be kept; these existed in 0.9.1. VIR_DOMAIN_VCPU_MAXIMUM cannot
> change in value. However, we _could_ add VIR_DOMAIN_VCPU_CURRENT == 0
> (although that should be a separate patch, and preferably post-0.9.2).
OK.
>
> > -typedef enum {
> > -
> > - VIR_DOMAIN_DEVICE_MODIFY_CURRENT = 0, /* Modify device allocation based on current domain state */
> > - VIR_DOMAIN_DEVICE_MODIFY_LIVE = (1 << 0), /* Modify live device allocation */
> > - VIR_DOMAIN_DEVICE_MODIFY_CONFIG = (1 << 1), /* Modify persisted device allocation */
> > - VIR_DOMAIN_DEVICE_MODIFY_FORCE = (1 << 2), /* Forcibly modify device
> > - (ex. force eject a cdrom) */
> > -} virDomainDeviceModifyFlags;
>
> Must be kept; these existed in 0.9.1.
OK.
--
Thanks,
Hu Tao
More information about the libvir-list
mailing list