By default, the /etc/cgrules.conf file contains only comments. If this is the
case, the cgred service starts without problem. But if /etc/cgrules.conf file is
empty or missing, the cgred service won't start, even this case is equivalent
with the first one.

This patch allows the cgred service start even when the /etc/cgrules.conf files
is empty, or missing.

Signed-off-by: Peter Schiffer <pschi...@redhat.com>
---
 scripts/init.d/cgred.in |    4 ----
 src/api.c               |   20 +++++++++-----------
 2 files changed, 9 insertions(+), 15 deletions(-)

diff --git a/scripts/init.d/cgred.in b/scripts/init.d/cgred.in
index 9ff2d9b..ed757cf 100644
--- a/scripts/init.d/cgred.in
+++ b/scripts/init.d/cgred.in
@@ -73,10 +73,6 @@ start()
                log_failure_msg "$servicename is already running with PID `cat 
${pidfile}`"
                return 0
        fi
-       if [ ! -s $CGRED_CONF ]; then
-               log_failure_msg "not configured"
-               return 6
-       fi
        if ! grep "^cgroup" /proc/mounts &>/dev/null; then
                echo
                log_failure_msg $"Cannot find cgroups, is cgconfig service 
running?"
diff --git a/src/api.c b/src/api.c
index 98eea29..e5e1959 100644
--- a/src/api.c
+++ b/src/api.c
@@ -538,17 +538,6 @@ static int cgroup_parse_rules(bool cache, uid_t muid,
        /* Loop variable. */
        int i = 0;
 
-       /* Open the configuration file. */
-       pthread_rwlock_wrlock(&rl_lock);
-       fp = fopen(CGRULES_CONF_FILE, "re");
-       if (!fp) {
-               cgroup_err("Error: failed to open configuration file %s: %s\n",
-                               CGRULES_CONF_FILE, strerror(errno));
-               last_errno = errno;
-               ret = ECGOTHER;
-               goto unlock;
-       }
-
        /* Determine which list we're using. */
        if (cache)
                lst = &rl;
@@ -559,6 +548,15 @@ static int cgroup_parse_rules(bool cache, uid_t muid,
        if (lst->head)
                cgroup_free_rule_list(lst);
 
+       /* Open the configuration file. */
+       pthread_rwlock_wrlock(&rl_lock);
+       fp = fopen(CGRULES_CONF_FILE, "re");
+       if (!fp) {
+               cgroup_warn("Warning: failed to open configuration file %s: 
%s\n",
+                               CGRULES_CONF_FILE, strerror(errno));
+               goto unlock;
+       }
+
        /* Now, parse the configuration file one line at a time. */
        cgroup_dbg("Parsing configuration file.\n");
        while (fgets(buff, sizeof(buff), fp) != NULL) {


------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
Libcg-devel mailing list
Libcg-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to