[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] xl: check for meaningful combination of sedf config file parameters
# HG changeset patch # User Dario Faggioli <dario.faggioli@xxxxxxxxxx> # Date 1339165561 -3600 # Node ID 9d1fd58ff602f5f7b8a50ea3866adfd8668e0285 # Parent 32034d1914a607d7b6f1f060352b4cac973600f8 xl: check for meaningful combination of sedf config file parameters As it happens in the implementation of `xl sched-sedf -d ...', some consistency checking is needed for the scheduling parameters when they come from the config file. Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx> Acked-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Acked-by: George Dunlap <george.dunlap@xxxxxxxxxxxxx> Committed-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- diff -r 32034d1914a6 -r 9d1fd58ff602 tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Thu Jun 07 19:46:57 2012 +0100 +++ b/tools/libxl/xl_cmdimpl.c Fri Jun 08 15:26:01 2012 +0100 @@ -550,6 +550,31 @@ vcpp_out: return rc; } +static int sched_params_valid(libxl_domain_sched_params *scp) +{ + int has_weight = scp->weight != LIBXL_DOMAIN_SCHED_PARAM_WEIGHT_DEFAULT; + int has_period = scp->period != LIBXL_DOMAIN_SCHED_PARAM_PERIOD_DEFAULT; + int has_slice = scp->slice != LIBXL_DOMAIN_SCHED_PARAM_SLICE_DEFAULT; + libxl_domain_sched_params sci; + + libxl_domain_sched_params_get(ctx, domid, &sci); + + /* The sedf scheduler needs some more consistency checking */ + if (sci.sched == LIBXL_SCHEDULER_SEDF) { + if (has_weight && (has_period || has_slice)) + return 0; + + if (has_weight) { + scp->slice = 0; + scp->period = 0; + } + if (has_period || has_slice) + scp->weight = 0; + } + + return 1; +} + static void parse_config_data(const char *config_source, const char *config_data, int config_len, @@ -644,6 +669,10 @@ static void parse_config_data(const char b_info->sched_params.latency = l; if (!xlu_cfg_get_long (config, "extratime", &l, 0)) b_info->sched_params.extratime = l; + if (!sched_params_valid(&b_info->sched_params)) { + fprintf(stderr, "Invalid scheduling parameters\n"); + exit(1); + } if (!xlu_cfg_get_long (config, "vcpus", &l, 0)) { b_info->max_vcpus = l; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |