On 07/31/2014 10:12 AM, Ivana Hutarova Varekova wrote:
> This patch adds the possibility to use meta character "*" as a shortcut for 
> all mounted controllers. This meta character can be used in "-g" option.
>
> For example:
>      $ cgcreate -g *:first  -g cpu:second
>      $ lssubsys
>      cpuset:/
>      cpuset:/first
>      cpu,cpuacct:/
>      cpu,cpuacct:/first
>      cpu,cpuacct:/second
>      memory:/
>      memory:/first
>      devices:/
>      devices:/first
>      freezer:/
>      freezer:/first
>      net_cls,net_prio:/
>      net_cls,net_prio:/first
>      blkio:/
>      blkio:/first
>      perf_event:/
>      perf_event:/first
>      hugetlb:/
>      hugetlb:/first
>
> Signed-off-by: Ivana Hutarova Varekova <varek...@redhat.com>

Reviewed-by: Jan Chaloupka<jchal...@redhat.com>

> ---
>   doc/man/cgcreate.1   |    3 ++-
>   src/tools/cgcreate.c |   32 ++++++++++++++++++++++----------
>   2 files changed, 24 insertions(+), 11 deletions(-)
>
> diff --git a/doc/man/cgcreate.1 b/doc/man/cgcreate.1
> index 7068073..557b5ae 100644
> --- a/doc/man/cgcreate.1
> +++ b/doc/man/cgcreate.1
> @@ -38,7 +38,8 @@ others permissions to the owners permissions).
>   .TP
>   .B -g <controllers>:<path>
>   defines control groups to be added.
> -\fBcontrollers\fR is a list of controllers and
> +\fBcontrollers\fR is a list of controllers. Character "*" can be used
> +as a shortcut for "all mounted controllers".
>   \fBpath\fR is the relative path to control groups
>   in the given controllers list. This option can be specified
>   multiple times.
> diff --git a/src/tools/cgcreate.c b/src/tools/cgcreate.c
> index 73abd91..65b188a 100644
> --- a/src/tools/cgcreate.c
> +++ b/src/tools/cgcreate.c
> @@ -54,7 +54,6 @@ static void usage(int status, const char *program_name)
>       printf("  -t <tuid>:<tgid>              Owner of the tasks file\n");
>   }
>   
> -
>   int main(int argc, char *argv[])
>   {
>       int ret = 0;
> @@ -195,16 +194,29 @@ int main(int argc, char *argv[])
>               /* add controllers to the new cgroup */
>               j = 0;
>               while (cgroup_list[i]->controllers[j]) {
> -                     cgc = cgroup_add_controller(cgroup,
> -                             cgroup_list[i]->controllers[j]);
> -                     if (!cgc) {
> -                             ret = ECGINVAL;
> -                             fprintf(stderr, "%s: "
> -                                     "controller %s can't be add\n",
> -                                     argv[0],
> +                     if (strcmp(cgroup_list[i]->controllers[j], "*") == 0) {
> +                             /* it is meta character, add all controllers */
> +                             ret = cgroup_add_all_controllers(cgroup);
> +                             if (ret != 0) {
> +                                     ret = ECGINVAL;
> +                                     fprintf(stderr, "%s: can't add ",
> +                                             argv[0]);
> +                                     fprintf(stderr, "all controllers\n");
> +                                     cgroup_free(&cgroup);
> +                                     goto err;
> +                             }
> +                     } else {
> +                             cgc = cgroup_add_controller(cgroup,
>                                       cgroup_list[i]->controllers[j]);
> -                             cgroup_free(&cgroup);
> -                             goto err;
> +                             if (!cgc) {
> +                                     ret = ECGINVAL;
> +                                     fprintf(stderr, "%s: ", argv[0]);
> +                                     fprintf(stderr, "controller %s",
> +                                             cgroup_list[i]->controllers[j]);
> +                                     fprintf(stderr, "can't be add\n");
> +                                     cgroup_free(&cgroup);
> +                                     goto err;
> +                             }
>                       }
>                       j++;
>               }
>
>
> ------------------------------------------------------------------------------
> Infragistics Professional
> Build stunning WinForms apps today!
> Reboot your WinForms applications with our WinForms controls.
> Build a bridge from your legacy apps to the future.
> http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
> _______________________________________________
> Libcg-devel mailing list
> Libcg-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/libcg-devel

-- 
Jan Chaloupka
------------------------------
* Software Engineer          *
* ENG Base Operating Systems *
* Red Hat Czech, s. r. o.    *
* UTC+1 (CET), jchaloup      *


------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________
Libcg-devel mailing list
Libcg-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to