]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
virsh: add parameters --live, --config and --current to cmd schedinfo
authorHu Tao <hutao@cn.fujitsu.com>
Tue, 17 May 2011 06:20:03 +0000 (14:20 +0800)
committerEric Blake <eblake@redhat.com>
Tue, 17 May 2011 16:52:16 +0000 (10:52 -0600)
This enables user to modify cpu.shares even when domain is inactive.

tools/virsh.c
tools/virsh.pod

index 2627cf47c3c057eeae299c3b7bb569f2f8609221..77cadcb815318633d0886fa661b120625f34d8cc 100644 (file)
@@ -1596,6 +1596,9 @@ static const vshCmdOptDef opts_schedinfo[] = {
     {"set", VSH_OT_STRING, VSH_OFLAG_NONE, N_("parameter=value")},
     {"weight", VSH_OT_INT, VSH_OFLAG_NONE, N_("weight for XEN_CREDIT")},
     {"cap", VSH_OT_INT, VSH_OFLAG_NONE, N_("cap for XEN_CREDIT")},
+    {"current", VSH_OT_BOOL, 0, N_("get/set current scheduler info")},
+    {"config", VSH_OT_BOOL, 0, N_("get/set value to be used on next boot")},
+    {"live", VSH_OT_BOOL, 0, N_("get/set value from running domain")},
     {NULL, 0, 0, NULL}
 };
 
@@ -1703,6 +1706,23 @@ cmdSchedinfo(vshControl *ctl, const vshCmd *cmd)
     int update = 0;
     int i, ret;
     bool ret_val = false;
+    unsigned int flags = 0;
+    int current = vshCommandOptBool(cmd, "current");
+    int config = vshCommandOptBool(cmd, "config");
+    int live = vshCommandOptBool(cmd, "live");
+
+    if (current) {
+        if (live || config) {
+            vshError(ctl, "%s", _("--current must be specified exclusively"));
+            return false;
+        }
+        flags = VIR_DOMAIN_SCHEDPARAM_CURRENT;
+    } else {
+        if (config)
+            flags |= VIR_DOMAIN_SCHEDPARAM_CONFIG;
+        if (live)
+            flags |= VIR_DOMAIN_SCHEDPARAM_LIVE;
+    }
 
     if (!vshConnectionUsability(ctl, ctl->conn))
         return false;
@@ -1712,7 +1732,7 @@ cmdSchedinfo(vshControl *ctl, const vshCmd *cmd)
 
     /* Print SchedulerType */
     schedulertype = virDomainGetSchedulerType(dom, &nparams);
-    if (schedulertype!= NULL){
+    if (schedulertype != NULL){
         vshPrint(ctl, "%-15s: %s\n", _("Scheduler"),
              schedulertype);
         VIR_FREE(schedulertype);
@@ -1741,7 +1761,11 @@ cmdSchedinfo(vshControl *ctl, const vshCmd *cmd)
 
         /* Update parameters & refresh data */
         if (update) {
-            ret = virDomainSetSchedulerParameters(dom, params, nparams);
+            if (flags || current)
+                ret = virDomainSetSchedulerParametersFlags(dom, params,
+                                                           nparams, flags);
+            else
+                ret = virDomainSetSchedulerParameters(dom, params, nparams);
             if (ret == -1)
                 goto cleanup;
 
index d11a0e3cf9a7d32cdaeca53ab7a212163e577891..ef01f41c94e200c013da4d1969204884110bb30f 100644 (file)
@@ -570,11 +570,14 @@ This is roughly equivalent to doing a hibernate on a running computer,
 with all the same limitations.  Open network connections may be
 severed upon restore, as TCP timeouts may have expired.
 
-=item B<schedinfo> optional I<--set> B<parameter=value> I<domain-id>
+=item B<schedinfo> optional I<--set> B<parameter=value> I<domain-id> I<--config>
+I<--live> I<--current>
 
-=item B<schedinfo> optional I<--weight> B<number> optional I<--cap> B<number> I<domain-id>
+=item B<schedinfo> optional I<--weight> B<number> optional I<--cap> B<number>
+I<domain-id>
 
-Allows you to show (and set) the domain scheduler parameters. The parameters available for each hypervisor are:
+Allows you to show (and set) the domain scheduler parameters. The parameters
+available for each hypervisor are:
 
 LXC, QEMU/KVM (posix scheduler): cpu_shares
 
@@ -582,6 +585,10 @@ Xen (credit scheduler): weight, cap
 
 ESX (allocation scheduler): reservation, limit, shares
 
+If I<--live> is specified, set scheduler information of a running guest.
+If I<--config> is specified, affect the next boot of a persistent guest.
+If I<--current> is specified, affect the current guest state.
+
 B<Note>: The cpu_shares parameter has a valid value range of 0-262144; Negative
 values are wrapped to positive, and larger values are capped at the maximum.
 Therefore, -1 is a useful shorthand for 262144.