cgconfig service fails when something else mounts cgroup hierarchies during
boot (e.g. systemd). Therefore we should allow cgconfig.conf to have no
'mount' section -> it's up to admin to ensure that controllers are mounted as
needed.

Because 'group' section is already optional, with this patch cgconfigparser
will accept empty configuration file. This is probably the best default
config for distros with systemd.

Signed-off-by: Jan Safranek <jsafr...@redhat.com>
---

 doc/man/cgconfig.conf.5 |   13 +++++++++++--
 src/config.c            |   10 ++--------
 2 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/doc/man/cgconfig.conf.5 b/doc/man/cgconfig.conf.5
index d57fb44..4a82b95 100644
--- a/doc/man/cgconfig.conf.5
+++ b/doc/man/cgconfig.conf.5
@@ -12,8 +12,8 @@ The file consists of
 .I mount
 and
 .I group
-sections. These sections can be in arbitrary order. Any line starting
-with '#' is considered a comment line and is ignored.
+sections. These sections can be in arbitrary order and both are optional.
+Any line starting with '#' is considered a comment line and is ignored.
 .LP
 .I mount
 section has this form:
@@ -53,6 +53,11 @@ controller shall be mounted. The directory is created
 automatically on cgconfig service startup if it does not exist and
 is deleted on service shutdown.
 .LP
+
+If no
+.I mount
+section is specified, no controllers are mounted.
+
 .I group
 section has this form:
 .RS
@@ -174,6 +179,10 @@ created. If it is enclosed in double quotes `"', it can 
contain spaces
 and other special characters.
 .RE
 
+If no
+.I group
+section is specified, no groups are created.
+
 .\"********************************************"
 .SH EXAMPLES
 .LP
diff --git a/src/config.c b/src/config.c
index f1873ea..ee367ef 100644
--- a/src/config.c
+++ b/src/config.c
@@ -723,19 +723,13 @@ int cgroup_config_load_config(const char *pathname)
        mount_enabled = (config_mount_table[0].name[0] != '\0');
 
        /*
-        * The configuration should have either namespace or mount.
-        * Not both and not none.
+        * The configuration should have namespace or mount, not both.
         */
-       if (namespace_enabled == mount_enabled) {
+       if (namespace_enabled && mount_enabled) {
                free(config_cgroup_table);
                return ECGMOUNTNAMESPACE;
        }
 
-       /*
-        * We do not allow both mount and namespace sections in the
-        * same configuration file. So test for that
-        */
-
        error = cgroup_config_mount_fs();
        if (error)
                goto err_mnt;


------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
Libcg-devel mailing list
Libcg-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to