On 04/06/2011 10:37 AM, Jan Safranek wrote:
> cgsnapshot should show named hierarchies in 'mount' section. It already shows
> their groups in 'group' sections and the output should be consistent.
> And take care of quotes in the output, '=' is not valid character in
> controller
> name unless it is in double quotes.
>
> Example:
> $ mount -t cgroup -o none,name=hello none /cgroup/named
> $ mount -t cgroup -o cpuacct,name=cputest none /cgroup/cpuacct
> $ cgsnapshot
>
> mount {
> cpuacct = /cgroup/cpuacct;
> "name=hello" = /cgroup/named;
> "name=cputest" = /cgroup/cpuacct;
> }
>
> Signed-off-by: Jan Safranek<[email protected]>
Acked-by: Ivana Hutarova Varekova<[email protected]>
> src/tools/cgsnapshot.c | 41 +++++++++++++++++++++++++++++++++++++----
> 1 files changed, 37 insertions(+), 4 deletions(-)
>
> diff --git a/src/tools/cgsnapshot.c b/src/tools/cgsnapshot.c
> index 4dbecfd..0ff7435 100644
> --- a/src/tools/cgsnapshot.c
> +++ b/src/tools/cgsnapshot.c
> @@ -319,7 +319,10 @@ static int display_cgroup_data(struct cgroup *group,
> }
>
> /* print the controller header */
> - fprintf(of, "\t%s {\n", controller[i]);
> + if (strncmp(controller[i], "name=", 5) == 0)
> + fprintf(of, "\t\"%s\" {\n", controller[i]);
> + else
> + fprintf(of, "\t%s {\n", controller[i]);
> i++;
> nr_var = cgroup_get_value_name_count(group_controller);
>
> @@ -573,13 +576,20 @@ static int show_mountpoints(const char *controller)
> char path[FILENAME_MAX];
> int ret;
> void *handle;
> + int quote = 0;
> +
> + if (strncmp(controller, "name=", 5) == 0)
> + quote = 1;
>
> ret = cgroup_get_subsys_mount_point_begin(controller,&handle, path);
> if (ret)
> return ret;
>
> while (ret == 0) {
> - printf("\t%s = %s;\n", controller, path);
> + if (quote)
> + printf("\t\"%s\" = %s;\n", controller, path);
> + else
> + printf("\t%s = %s;\n", controller, path);
> ret = cgroup_get_subsys_mount_point_next(&handle, path);
> }
> cgroup_get_subsys_mount_point_end(&handle);
> @@ -594,9 +604,10 @@ static int show_mountpoints(const char *controller)
> static int parse_mountpoints(cont_name_t cont_names[CG_CONTROLLER_MAX],
> const char *program_name)
> {
> - int ret;
> + int ret, final_ret;
> void *handle;
> struct controller_data info;
> + struct cgroup_mount_point mount;
>
> /* start mount section */
> fprintf(of, "mount {\n");
> @@ -629,7 +640,29 @@ static int parse_mountpoints(cont_name_t
> cont_names[CG_CONTROLLER_MAX],
> }
> }
>
> - ret |= cgroup_get_all_controller_end(&handle);
> + final_ret = ret;
> + cgroup_get_all_controller_end(&handle);
> +
> + /* process also named hierarchies */
> + ret = cgroup_get_controller_begin(&handle,&mount);
> + while (ret == 0) {
> + if (strncmp(mount.name, "name=", 5) == 0) {
> + ret = show_mountpoints(mount.name);
> + if (ret != 0)
> + break;
> + }
> + ret = cgroup_get_controller_next(&handle,&mount);
> + }
> + if (ret != ECGEOF) {
> + if ((flags& FL_SILENT) != 0) {
> + fprintf(stderr,
> + "E: in get next controller %s\n",
> + cgroup_strerror(ret));
> + return ret;
> + }
> + final_ret = ret;
> + }
> + cgroup_get_controller_end(&handle);
>
> /* finish mount section */
> fprintf(of, "}\n\n");
>
>
> ------------------------------------------------------------------------------
> Xperia(TM) PLAY
> It's a major breakthrough. An authentic gaming
> smartphone on the nation's most reliable network.
> And it wants your games.
> http://p.sf.net/sfu/verizon-sfdev
> _______________________________________________
> Libcg-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/libcg-devel
------------------------------------------------------------------------------
Benefiting from Server Virtualization: Beyond Initial Workload
Consolidation -- Increasing the use of server virtualization is a top
priority.Virtualization can reduce costs, simplify management, and improve
application availability and disaster protection. Learn more about boosting
the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev
_______________________________________________
Libcg-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libcg-devel