[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] xl: fix sedf parameters checking
# HG changeset patch # User Dario Faggioli <dario.faggioli@xxxxxxxxxx> # Date 1340282598 -3600 # Node ID 513d5e196e23bcb37f2b897be31fa911ebe19aae # Parent baa85434d0ec16629ca30b7c07deaa9beb3ea9c5 xl: fix sedf parameters checking 25468:9d1fd58ff602 was bogus in not letting a new domain being created if its scheduling parameters --when running under the sedf scheduler-- were not fully specified, making creation fail like in this example here below: 2012-06-16 07:37:47 Z executing ssh ... root@xxxxxxxxxxxxx xl create /etc/xen/debian.guest.osstest.cfg libxl: error: libxl.c:3619:sched_sedf_domain_set: setting domain sched sedf: Invalid argument libxl: error: libxl_create.c:710:domcreate_bootloader_done: cannot (re-)build domain: -3 Parsing config from /etc/xen/debian.guest.osstest.cfg This is due to the fact the values for period, slice, weight and extratime should be consistent among each others, and if not all are explicitly specified, someone has to make that happen. That was right the purpose of the change in question, but it was failing at achieving so. This commit fixes things by forcing unspecified parameters to sensible values, depending on the ones the user provided. Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxx> Committed-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> --- diff -r baa85434d0ec -r 513d5e196e23 tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c Thu Jun 21 11:30:59 2012 +0200 +++ b/tools/libxl/xl_cmdimpl.c Thu Jun 21 13:43:18 2012 +0100 @@ -555,6 +555,8 @@ static int sched_params_valid(libxl_doma 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; + int has_extratime = + scp->extratime != LIBXL_DOMAIN_SCHED_PARAM_EXTRATIME_DEFAULT; libxl_domain_sched_params sci; libxl_domain_sched_params_get(ctx, domid, &sci); @@ -563,12 +565,27 @@ static int sched_params_valid(libxl_doma if (sci.sched == LIBXL_SCHEDULER_SEDF) { if (has_weight && (has_period || has_slice)) return 0; - + if (has_period != has_slice) + return 0; + + /* + * Idea is, if we specify a weight, then both period and + * slice has to be zero. OTOH, if we do not specify a weight, + * that means we want a pure best effort domain or an actual + * real-time one. In the former case, it is period that needs + * to be zero, in the latter, weight should be. + */ if (has_weight) { scp->slice = 0; scp->period = 0; } - if (has_period || has_slice) + else if (!has_period) { + /* We can setup a proper best effort domain (extra time only) + * iff we either already have or are asking for some extra time. */ + scp->weight = has_extratime ? scp->extratime : sci.extratime; + scp->period = 0; + } + if (has_period && has_slice) scp->weight = 0; } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |