Consider non-zero exit status of spfs similar to killed status and do the same cleanups.
v3: New Signed-off-by: Kirill Tkhai <ktk...@virtuozzo.com> --- manager/context.c | 8 ++++---- manager/spfs.c | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/manager/context.c b/manager/context.c index 1eb37c9..73d5ada 100644 --- a/manager/context.c +++ b/manager/context.c @@ -45,12 +45,12 @@ const char *mgr_ovz_id(void) static void cleanup_spfs_mount(struct spfs_manager_context_s *ctx, struct spfs_info_s *info, int status) { - bool killed = WIFSIGNALED(status); + bool failed = WIFSIGNALED(status) || !!WEXITSTATUS(status); pr_debug("removing info %s from the list\n", info->mnt.id); - if (killed) - /* SPFS master was killed. We need to release the reference */ + if (failed) + /* SPFS master was failed. We need to release the reference */ spfs_release_mnt(info); info->dead = true; @@ -59,7 +59,7 @@ static void cleanup_spfs_mount(struct spfs_manager_context_s *ctx, if (unlink(info->socket_path)) pr_perror("failed to unlink %s", info->socket_path); - spfs_cleanup_env(info, killed); + spfs_cleanup_env(info, failed); close_namespaces(info->ns_fds); } diff --git a/manager/spfs.c b/manager/spfs.c index 3e0f667..99845b1 100644 --- a/manager/spfs.c +++ b/manager/spfs.c @@ -409,9 +409,9 @@ int spfs_prepare_env(struct spfs_info_s *info, const char *proxy_dir) return err ? err : res; } -static int __spfs_cleanup_env(struct spfs_info_s *info, bool killed) +static int __spfs_cleanup_env(struct spfs_info_s *info, bool failed) { - if (killed && umount(info->work_dir)) { + if (failed && umount(info->work_dir)) { pr_perror("failed to umount %s", info->work_dir); return -errno; } @@ -423,7 +423,7 @@ static int __spfs_cleanup_env(struct spfs_info_s *info, bool killed) return 0; } -int spfs_cleanup_env(struct spfs_info_s *info, bool killed) +int spfs_cleanup_env(struct spfs_info_s *info, bool failed) { int err, res; unsigned orig_ns_mask; @@ -432,7 +432,7 @@ int spfs_cleanup_env(struct spfs_info_s *info, bool killed) if (res) return res; - err = __spfs_cleanup_env(info, killed); + err = __spfs_cleanup_env(info, failed); res = leave_spfs_context(info, orig_ns_mask); _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel