----- Original Message -----
> From: "Peter Schiffer" <pschi...@redhat.com>
> To: libcg-devel@lists.sourceforge.net
> Sent: Friday, March 8, 2013 5:09:57 PM
> Subject: [Libcg-devel] [PATCH 09/14] Added new errors/warnings
> 
> I've put few errors and warnings where I find them appropriate -
> usually
> when a function returns error and the user might be interested
> exactly what
> file/directory is bad.
> 
> Signed-off-by: Peter Schiffer <pschi...@redhat.com>
> ---
>  src/api.c    |   31 ++++++++++++++++++++++++++++++-
>  src/config.c |   14 ++++++++++++++
>  2 files changed, 44 insertions(+), 1 deletion(-)
> 
> diff --git a/src/api.c b/src/api.c
> index 5273b78..c10658e 100644
> --- a/src/api.c
> +++ b/src/api.c
> @@ -148,6 +148,8 @@ static int cg_chown_file(FTS *fts, FTSENT *ent,
> uid_t owner, gid_t group)
>               break;
>       }
>       if (ret < 0) {
> +             cgroup_warn("Warning: cannot change owner of file %s: %s\n",
> +                             filename, strerror(errno));
>               last_errno = errno;
>               ret = ECGOTHER;
>       }
> @@ -166,6 +168,8 @@ static int cg_chown_recursive(char **path, uid_t
> owner, gid_t group)
>       fts = fts_open(path, FTS_PHYSICAL | FTS_NOCHDIR |
>                               FTS_NOSTAT, NULL);
>       if (fts == NULL) {
> +             cgroup_err("Error: cannot open directory %s: %s\n",
> +                             path, strerror(errno));

should be warning for me

>               last_errno = errno;
>               return ECGOTHER;
>       }
> @@ -211,6 +215,8 @@ int cg_chmod_path(const char *path, mode_t mode,
> int owner_is_umask)
>       return 0;
>  
>  fail:
> +     cgroup_warn("Warning: cannot change permissions of file %s: %s\n",
> path,
> +                     strerror(errno));
>       last_errno = errno;
>       return ECGOTHER;
>  }
> @@ -270,6 +276,8 @@ static int cg_chmod_recursive_controller(char
> *path, mode_t dir_mode,
>       fts = fts_open(fts_path, FTS_PHYSICAL | FTS_NOCHDIR |
>                       FTS_NOSTAT, NULL);
>       if (fts == NULL) {
> +             cgroup_err("Error: cannot open directory %s: %s\n",
> +                             fts_path, strerror(errno));

should be warning for me

>               last_errno = errno;
>               return ECGOTHER;
>       }
> @@ -298,6 +306,8 @@ static int cg_chmod_recursive_controller(char
> *path, mode_t dir_mode,
>                               file_mode, filem_change,
>                               owner_is_umask);
>               if (ret) {
> +                     cgroup_warn("Warning: cannot change file mode %s: %s\n",
> +                                     fts_path, strerror(errno));
>                       last_errno = errno;
>                       final_ret = ECGOTHER;
>               }
> @@ -725,6 +735,8 @@ static int cgroup_parse_rules(bool cache, uid_t
> muid,
>               if (len_procname) {
>                       newrule->procname = strdup(procname);
>                       if (!newrule->procname) {
> +                             cgroup_err("Error: strdup failed to allocate 
> memory %s\n",
> +                                             strerror(errno));
>                               free(newrule);
>                               last_errno = errno;
>                               ret = ECGOTHER;
> @@ -873,6 +885,8 @@ int cgroup_init(void)
>       proc_cgroup = fopen("/proc/cgroups", "re");
>  
>       if (!proc_cgroup) {
> +             cgroup_err("Error: cannot open /proc/cgroups: %s\n",
> +                             strerror(errno));
>               last_errno = errno;
>               ret = ECGOTHER;
>               goto unlock_exit;
> @@ -892,6 +906,8 @@ int cgroup_init(void)
>       }
>       if (!fgets(buf, FILENAME_MAX, proc_cgroup)) {
>               free(buf);
> +             cgroup_err("Error: cannot read /proc/cgroups: %s\n",
> +                             strerror(errno));
>               last_errno = errno;
>               ret = ECGOTHER;
>               goto unlock_exit;
> @@ -911,7 +927,10 @@ int cgroup_init(void)
>  
>       proc_mount = fopen("/proc/mounts", "re");
>       if (proc_mount == NULL) {
> -             ret = ECGFAIL;
> +             cgroup_err("Error: cannot open /proc/mounts: %s\n",
> +                             strerror(errno));
> +             last_errno = errno;
> +             ret = ECGOTHER;
>               goto unlock_exit;
>       }
>  
> @@ -1927,6 +1946,9 @@ static int cg_delete_cgroup_controller(char
> *cgroup_name, char *controller,
>               delete_tasks = fopen(path, "re");
>               if (delete_tasks) {
>                       ret = cg_move_task_files(delete_tasks, target_tasks);
> +                     if (ret != 0)
> +                             cgroup_warn("Warning: removing tasks from %s 
> failed: %s\n",
> +                                             path, cgroup_strerror(ret));
>                       fclose(delete_tasks);
>               } else {
>                       /*
> @@ -1935,6 +1957,8 @@ static int cg_delete_cgroup_controller(char
> *cgroup_name, char *controller,
>                        * removed.
>                        */
>                       if (errno != ENOENT) {
> +                             cgroup_err("Error: cannot open %s: %s\n",
> +                                             path, strerror(errno));
>                               last_errno = errno;
>                               ret = ECGOTHER;
>                       }
> @@ -1957,6 +1981,8 @@ static int cg_delete_cgroup_controller(char
> *cgroup_name, char *controller,
>       if ((flags & CGFLAG_DELETE_EMPTY_ONLY) && (errno == EBUSY))
>               return ECGNONEMPTY;
>  
> +     cgroup_warn("Warning: cannot remove directory %s: %s\n",
> +                     path, strerror(errno));
>       last_errno = errno;
>       return ECGOTHER;
>  }
> @@ -2128,6 +2154,9 @@ int cgroup_delete_cgroup_ext(struct cgroup
> *cgroup, int flags)
>                       parent_tasks = fopen(parent_path, "we");
>                       if (!parent_tasks) {
>                               if (first_error == 0) {
> +                                     cgroup_warn("Warning: cannot open tasks 
> file %s: %s\n",
> +                                                     parent_path,
> +                                                     strerror(errno));
>                                       first_errno = errno;
>                                       first_error = ECGOTHER;
>                               }
> diff --git a/src/config.c b/src/config.c
> index bc92112..f339a73 100644
> --- a/src/config.c
> +++ b/src/config.c
> @@ -661,6 +661,8 @@ static int cgroup_config_mount_fs(void)
>               ret = stat(curr->mount.path, &buff);
>  
>               if (ret < 0 && errno != ENOENT) {
> +                     cgroup_err("Error: cannot access %s: %s\n",
> +                                     curr->mount.path, strerror(errno));
>                       last_errno = errno;
>                       error = ECGOTHER;
>                       goto out_err;
> @@ -669,10 +671,14 @@ static int cgroup_config_mount_fs(void)
>               if (errno == ENOENT) {
>                       ret = cg_mkdir_p(curr->mount.path);
>                       if (ret) {
> +                             cgroup_err("Error: cannot create directory 
> %s\n",
> +                                             curr->mount.path);
>                               error = ret;
>                               goto out_err;
>                       }
>               } else if (!S_ISDIR(buff.st_mode)) {
> +                     cgroup_err("Error: %s already exists but it is not a
> directory\n",
> +                                     curr->mount.path);
>                       errno = ENOTDIR;
>                       last_errno = errno;
>                       error = ECGOTHER;
> @@ -687,6 +693,9 @@ static int cgroup_config_mount_fs(void)
>                               CGROUP_FILESYSTEM, 0, curr->name);
>  
>               if (ret < 0) {
> +                     cgroup_err("Error: cannot mount %s to %s: %s\n",
> +                                     curr->name, curr->mount.path,
> +                                     strerror(errno));
>                       error = ECGMOUNTFAIL;
>                       goto out_err;
>               }
> @@ -1298,6 +1307,9 @@ static int
> cgroup_config_unload_controller(const struct cgroup_mount_point
> *moun
>       while (ret == 0) {
>               error = umount(path);
>               if (error) {
> +                     cgroup_warn("Warning: cannot unmount controller %s on 
> %s: %s\n",
> +                                     mount_info->name, path,
> +                                     strerror(errno));
>                       last_errno = errno;
>                       ret = ECGOTHER;
>                       goto out_error;
> @@ -1342,6 +1354,8 @@ int cgroup_unload_cgroups(void)
>                       if (error) {
>                               /* remember the error and continue unloading
>                                * the rest */
> +                             cgroup_warn("Warning: cannot clear controller 
> %s\n",
> +                                             info.name);
>                               ret = error;
>                               error = 0;
>                       }
> 
> 
> ------------------------------------------------------------------------------
> Symantec Endpoint Protection 12 positioned as A LEADER in The
> Forrester
> Wave(TM): Endpoint Security, Q1 2013 and "remains a good choice" in
> the
> endpoint security space. For insight on selecting the right partner
> to
> tackle endpoint security challenges, access the full report.
> http://p.sf.net/sfu/symantec-dev2dev
> _______________________________________________
> Libcg-devel mailing list
> Libcg-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/libcg-devel
> 

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_mar
_______________________________________________
Libcg-devel mailing list
Libcg-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to