Commit df83b2c2 authored by Pavel Emelyanov's avatar Pavel Emelyanov

parasite: Use simple logging engine

Just as for restorer, but simper, as the parasite logging
is just sys_write_msg :)
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent ddf68b79
...@@ -39,7 +39,11 @@ parasite-util-net.o: util-net.c $(SYS-OBJ) ...@@ -39,7 +39,11 @@ parasite-util-net.o: util-net.c $(SYS-OBJ)
$(E) " CC " $@ $(E) " CC " $@
$(Q) $(CC) -c $(CFLAGS) $(PIEFLAGS) $< -o $@ $(Q) $(CC) -c $(CFLAGS) $(PIEFLAGS) $< -o $@
POBJS += parasite-util-net.o parasite-log.o: log-simple.c $(SYS-OBJ)
$(E) " CC " $@
$(Q) $(CC) -c $(CFLAGS) $(PIEFLAGS) $< -o $@
POBJS += parasite-util-net.o parasite-log.o
$(PBLOB-BIN-O): $(PIELDS) $(POBJS) $(PASM-OBJS) $(PBLOB-BIN-O): $(PIELDS) $(POBJS) $(PASM-OBJS)
$(E) " GEN " $@ $(E) " GEN " $@
......
...@@ -3,9 +3,11 @@ ...@@ -3,9 +3,11 @@
#include <signal.h> #include <signal.h>
#include <linux/limits.h> #include <linux/limits.h>
#include <sys/mount.h> #include <sys/mount.h>
#include <stdarg.h>
#include "syscall.h" #include "syscall.h"
#include "parasite.h" #include "parasite.h"
#include "log.h"
#include <string.h> #include <string.h>
...@@ -32,7 +34,6 @@ ...@@ -32,7 +34,6 @@
static void *brk_start, *brk_end, *brk_tail; static void *brk_start, *brk_end, *brk_tail;
static int logfd = -1;
static int tsock = -1; static int tsock = -1;
#define MAX_HEAP_SIZE (10 << 20) /* Hope 10MB will be enough... */ #define MAX_HEAP_SIZE (10 << 20) /* Hope 10MB will be enough... */
...@@ -93,14 +94,6 @@ static char *long2hex(unsigned long v) ...@@ -93,14 +94,6 @@ static char *long2hex(unsigned long v)
} }
#endif #endif
static void sys_write_msg(const char *msg)
{
int size = 0;
while (msg[size])
size++;
sys_write(logfd, msg, size);
}
#define PME_PRESENT (1ULL << 63) #define PME_PRESENT (1ULL << 63)
#define PME_SWAP (1ULL << 62) #define PME_SWAP (1ULL << 62)
#define PME_FILE (1ULL << 61) #define PME_FILE (1ULL << 61)
...@@ -132,7 +125,7 @@ static int dump_pages_init() ...@@ -132,7 +125,7 @@ static int dump_pages_init()
fd_pagemap = sys_open("/proc/self/pagemap", O_RDONLY, 0); fd_pagemap = sys_open("/proc/self/pagemap", O_RDONLY, 0);
if (fd_pagemap < 0) { if (fd_pagemap < 0) {
sys_write_msg("Can't open self pagemap"); pr_err("Can't open self pagemap");
sys_close(fd_pages); sys_close(fd_pages);
return fd_pagemap; return fd_pagemap;
} }
...@@ -146,12 +139,12 @@ static int sys_write_safe(int fd, void *buf, int size) ...@@ -146,12 +139,12 @@ static int sys_write_safe(int fd, void *buf, int size)
ret = sys_write(fd, buf, size); ret = sys_write(fd, buf, size);
if (ret < 0) { if (ret < 0) {
sys_write_msg("sys_write failed\n"); pr_err("sys_write failed\n");
return ret; return ret;
} }
if (ret != size) { if (ret != size) {
sys_write_msg("not all data was written\n"); pr_err("not all data was written\n");
ret = -EIO; ret = -EIO;
} }
...@@ -190,14 +183,14 @@ static int dump_pages(struct parasite_dump_pages_args *args) ...@@ -190,14 +183,14 @@ static int dump_pages(struct parasite_dump_pages_args *args)
off = pfn * sizeof(*map); off = pfn * sizeof(*map);
off = sys_lseek(fd_pagemap, off, SEEK_SET); off = sys_lseek(fd_pagemap, off, SEEK_SET);
if (off != pfn * sizeof(*map)) { if (off != pfn * sizeof(*map)) {
sys_write_msg("Can't seek pagemap"); pr_err("Can't seek pagemap");
ret = off; ret = off;
goto err_free; goto err_free;
} }
ret = sys_read(fd_pagemap, map, length); ret = sys_read(fd_pagemap, map, length);
if (ret != length) { if (ret != length) {
sys_write_msg("Can't read self pagemap"); pr_err("Can't read self pagemap");
goto err_free; goto err_free;
} }
...@@ -212,7 +205,7 @@ static int dump_pages(struct parasite_dump_pages_args *args) ...@@ -212,7 +205,7 @@ static int dump_pages(struct parasite_dump_pages_args *args)
(unsigned long)vma_entry_len(&args->vma_entry), (unsigned long)vma_entry_len(&args->vma_entry),
prot_new); prot_new);
if (ret) { if (ret) {
sys_write_msg("sys_mprotect failed\n"); pr_err("sys_mprotect failed\n");
goto err_free; goto err_free;
} }
} }
...@@ -248,7 +241,7 @@ static int dump_pages(struct parasite_dump_pages_args *args) ...@@ -248,7 +241,7 @@ static int dump_pages(struct parasite_dump_pages_args *args)
(unsigned long)vma_entry_len(&args->vma_entry), (unsigned long)vma_entry_len(&args->vma_entry),
prot_old); prot_old);
if (ret) { if (ret) {
sys_write_msg("PANIC: Ouch! sys_mprotect failed on restore\n"); pr_err("PANIC: Ouch! sys_mprotect failed on restore\n");
goto err_free; goto err_free;
} }
} }
...@@ -280,7 +273,7 @@ static int dump_sigact(struct parasite_dump_sa_args *da) ...@@ -280,7 +273,7 @@ static int dump_sigact(struct parasite_dump_sa_args *da)
ret = sys_sigaction(sig, NULL, &da->sas[sig], sizeof(rt_sigset_t)); ret = sys_sigaction(sig, NULL, &da->sas[sig], sizeof(rt_sigset_t));
if (ret < 0) { if (ret < 0) {
sys_write_msg("sys_sigaction failed\n"); pr_err("sys_sigaction failed\n");
break; break;
} }
} }
...@@ -299,7 +292,7 @@ static int dump_itimers(struct parasite_dump_itimers_args *args) ...@@ -299,7 +292,7 @@ static int dump_itimers(struct parasite_dump_itimers_args *args)
ret = sys_getitimer(ITIMER_PROF, &args->prof); ret = sys_getitimer(ITIMER_PROF, &args->prof);
if (ret) if (ret)
sys_write_msg("getitimer failed\n"); pr_err("getitimer failed\n");
return ret; return ret;
} }
...@@ -340,7 +333,7 @@ static int drain_fds(struct parasite_drain_fd *args) ...@@ -340,7 +333,7 @@ static int drain_fds(struct parasite_drain_fd *args)
ret = send_fds(tsock, NULL, 0, ret = send_fds(tsock, NULL, 0,
args->fds, args->nr_fds, true); args->fds, args->nr_fds, true);
if (ret) if (ret)
sys_write_msg("send_fds failed\n"); pr_err("send_fds failed\n");
return ret; return ret;
} }
...@@ -384,7 +377,7 @@ static int parasite_get_proc_fd() ...@@ -384,7 +377,7 @@ static int parasite_get_proc_fd()
ret = sys_readlink("/proc/self", buf, sizeof(buf)); ret = sys_readlink("/proc/self", buf, sizeof(buf));
if (ret < 0 && ret != -ENOENT) { if (ret < 0 && ret != -ENOENT) {
sys_write_msg("Can't readlink /proc/self\n"); pr_err("Can't readlink /proc/self\n");
return ret; return ret;
} }
...@@ -395,14 +388,12 @@ static int parasite_get_proc_fd() ...@@ -395,14 +388,12 @@ static int parasite_get_proc_fd()
} }
if (sys_mkdir(proc_mountpoint, 0700)) { if (sys_mkdir(proc_mountpoint, 0700)) {
sys_write_msg("Can't create a directory "); pr_err("Can't create a directory\n");
sys_write_msg(proc_mountpoint);
sys_write_msg("\n");
return ret; return ret;
} }
if (sys_mount("proc", proc_mountpoint, "proc", MS_MGC_VAL, NULL)) { if (sys_mount("proc", proc_mountpoint, "proc", MS_MGC_VAL, NULL)) {
sys_write_msg("mount failed\n"); pr_err("mount failed\n");
ret = -1; ret = -1;
goto out_rmdir; goto out_rmdir;
} }
...@@ -410,13 +401,13 @@ static int parasite_get_proc_fd() ...@@ -410,13 +401,13 @@ static int parasite_get_proc_fd()
fd = sys_open(proc_mountpoint, O_RDONLY, 0); fd = sys_open(proc_mountpoint, O_RDONLY, 0);
if (sys_umount2(proc_mountpoint, MNT_DETACH)) { if (sys_umount2(proc_mountpoint, MNT_DETACH)) {
sys_write_msg("Can't umount procfs\n"); pr_err("Can't umount procfs\n");
return -1; return -1;
} }
out_rmdir: out_rmdir:
if (sys_rmdir(proc_mountpoint)) { if (sys_rmdir(proc_mountpoint)) {
sys_write_msg("Can't remove directory\n"); pr_err("Can't remove directory\n");
return -1; return -1;
} }
...@@ -434,7 +425,7 @@ static int parasite_set_logfd() ...@@ -434,7 +425,7 @@ static int parasite_set_logfd()
ret = recv_fd(tsock); ret = recv_fd(tsock);
if (ret >= 0) { if (ret >= 0) {
logfd = ret; log_set_fd(ret);
ret = 0; ret = 0;
} }
...@@ -445,7 +436,8 @@ static int fini(void) ...@@ -445,7 +436,8 @@ static int fini(void)
{ {
if (reset_blocked == 1) if (reset_blocked == 1)
sys_sigprocmask(SIG_SETMASK, &old_blocked, NULL, sizeof(k_rtsigset_t)); sys_sigprocmask(SIG_SETMASK, &old_blocked, NULL, sizeof(k_rtsigset_t));
sys_close(logfd);
log_set_fd(-1);
sys_close(tsock); sys_close(tsock);
brk_fini(); brk_fini();
...@@ -460,6 +452,8 @@ int __used parasite_service(unsigned int cmd, void *args) ...@@ -460,6 +452,8 @@ int __used parasite_service(unsigned int cmd, void *args)
BUILD_BUG_ON(sizeof(struct parasite_dump_tid_info) > PARASITE_ARG_SIZE); BUILD_BUG_ON(sizeof(struct parasite_dump_tid_info) > PARASITE_ARG_SIZE);
BUILD_BUG_ON(sizeof(struct parasite_drain_fd) > PARASITE_ARG_SIZE); BUILD_BUG_ON(sizeof(struct parasite_drain_fd) > PARASITE_ARG_SIZE);
pr_info("Parasite cmd %d/%x process\n", cmd, cmd);
switch (cmd) { switch (cmd) {
case PARASITE_CMD_INIT: case PARASITE_CMD_INIT:
return init((struct parasite_init_args *) args); return init((struct parasite_init_args *) args);
...@@ -487,7 +481,7 @@ int __used parasite_service(unsigned int cmd, void *args) ...@@ -487,7 +481,7 @@ int __used parasite_service(unsigned int cmd, void *args)
return parasite_get_proc_fd(); return parasite_get_proc_fd();
} }
sys_write_msg("Unknown command to parasite\n"); pr_err("Unknown command to parasite\n");
return -EINVAL; return -EINVAL;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment