Commit b1a22e3a by Christian Brauner Committed by Stéphane Graber

commands: improve logging

parent 492ee659
...@@ -168,8 +168,8 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd) ...@@ -168,8 +168,8 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
ret = lxc_abstract_unix_recv_fd(sock, &rspfd, rsp, sizeof(*rsp)); ret = lxc_abstract_unix_recv_fd(sock, &rspfd, rsp, sizeof(*rsp));
if (ret < 0) { if (ret < 0) {
WARN("command %s failed to receive response", WARN("Command %s failed to receive response: %s.",
lxc_cmd_str(cmd->req.cmd)); lxc_cmd_str(cmd->req.cmd), strerror(errno));
return -1; return -1;
} }
...@@ -184,7 +184,7 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd) ...@@ -184,7 +184,7 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
rspdata = malloc(sizeof(*rspdata)); rspdata = malloc(sizeof(*rspdata));
if (!rspdata) { if (!rspdata) {
ERROR("command %s couldn't allocate response buffer", ERROR("Command %s couldn't allocate response buffer.",
lxc_cmd_str(cmd->req.cmd)); lxc_cmd_str(cmd->req.cmd));
return -1; return -1;
} }
...@@ -196,7 +196,7 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd) ...@@ -196,7 +196,7 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
if (rsp->datalen == 0) if (rsp->datalen == 0)
return ret; return ret;
if (rsp->datalen > LXC_CMD_DATA_MAX) { if (rsp->datalen > LXC_CMD_DATA_MAX) {
ERROR("command %s response data %d too long", ERROR("Command %s response data %d too long.",
lxc_cmd_str(cmd->req.cmd), rsp->datalen); lxc_cmd_str(cmd->req.cmd), rsp->datalen);
errno = EFBIG; errno = EFBIG;
return -1; return -1;
...@@ -204,14 +204,14 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd) ...@@ -204,14 +204,14 @@ static int lxc_cmd_rsp_recv(int sock, struct lxc_cmd_rr *cmd)
rsp->data = malloc(rsp->datalen); rsp->data = malloc(rsp->datalen);
if (!rsp->data) { if (!rsp->data) {
ERROR("command %s unable to allocate response buffer", ERROR("Command %s was unable to allocate response buffer.",
lxc_cmd_str(cmd->req.cmd)); lxc_cmd_str(cmd->req.cmd));
return -1; return -1;
} }
ret = recv(sock, rsp->data, rsp->datalen, 0); ret = recv(sock, rsp->data, rsp->datalen, 0);
if (ret != rsp->datalen) { if (ret != rsp->datalen) {
ERROR("command %s failed to receive response data", ERROR("Command %s failed to receive response data: %s.",
lxc_cmd_str(cmd->req.cmd)); lxc_cmd_str(cmd->req.cmd), strerror(errno));
if (ret >= 0) if (ret >= 0)
ret = -1; ret = -1;
} }
...@@ -233,7 +233,7 @@ static int lxc_cmd_rsp_send(int fd, struct lxc_cmd_rsp *rsp) ...@@ -233,7 +233,7 @@ static int lxc_cmd_rsp_send(int fd, struct lxc_cmd_rsp *rsp)
ret = send(fd, rsp, sizeof(*rsp), 0); ret = send(fd, rsp, sizeof(*rsp), 0);
if (ret != sizeof(*rsp)) { if (ret != sizeof(*rsp)) {
ERROR("failed to send command response %d %s", ret, ERROR("Failed to send command response %d: %s.", ret,
strerror(errno)); strerror(errno));
return -1; return -1;
} }
...@@ -241,8 +241,8 @@ static int lxc_cmd_rsp_send(int fd, struct lxc_cmd_rsp *rsp) ...@@ -241,8 +241,8 @@ static int lxc_cmd_rsp_send(int fd, struct lxc_cmd_rsp *rsp)
if (rsp->datalen > 0) { if (rsp->datalen > 0) {
ret = send(fd, rsp->data, rsp->datalen, 0); ret = send(fd, rsp->data, rsp->datalen, 0);
if (ret != rsp->datalen) { if (ret != rsp->datalen) {
WARN("failed to send command response data %d %s", ret, WARN("Failed to send command response data %d: %s.",
strerror(errno)); ret, strerror(errno));
return -1; return -1;
} }
} }
...@@ -293,7 +293,7 @@ static int lxc_cmd(const char *name, struct lxc_cmd_rr *cmd, int *stopped, ...@@ -293,7 +293,7 @@ static int lxc_cmd(const char *name, struct lxc_cmd_rr *cmd, int *stopped,
if (errno == ECONNREFUSED) if (errno == ECONNREFUSED)
*stopped = 1; *stopped = 1;
else else
SYSERROR("command %s failed to connect to '@%s'", SYSERROR("Command %s failed to connect to \"@%s\".",
lxc_cmd_str(cmd->req.cmd), offset); lxc_cmd_str(cmd->req.cmd), offset);
return -1; return -1;
} }
...@@ -302,7 +302,7 @@ static int lxc_cmd(const char *name, struct lxc_cmd_rr *cmd, int *stopped, ...@@ -302,7 +302,7 @@ static int lxc_cmd(const char *name, struct lxc_cmd_rr *cmd, int *stopped,
if (ret != sizeof(cmd->req)) { if (ret != sizeof(cmd->req)) {
if (errno == EPIPE) if (errno == EPIPE)
goto epipe; goto epipe;
SYSERROR("command %s failed to send req to '@%s' %d", SYSERROR("Command %s failed to send req to \"@%s\" %d.",
lxc_cmd_str(cmd->req.cmd), offset, ret); lxc_cmd_str(cmd->req.cmd), offset, ret);
if (ret >=0) if (ret >=0)
ret = -1; ret = -1;
...@@ -314,7 +314,7 @@ static int lxc_cmd(const char *name, struct lxc_cmd_rr *cmd, int *stopped, ...@@ -314,7 +314,7 @@ static int lxc_cmd(const char *name, struct lxc_cmd_rr *cmd, int *stopped,
if (ret != cmd->req.datalen) { if (ret != cmd->req.datalen) {
if (errno == EPIPE) if (errno == EPIPE)
goto epipe; goto epipe;
SYSERROR("command %s failed to send request data to '@%s' %d", SYSERROR("Command %s failed to send request data to \"@%s\" %d.",
lxc_cmd_str(cmd->req.cmd), offset, ret); lxc_cmd_str(cmd->req.cmd), offset, ret);
if (ret >=0) if (ret >=0)
ret = -1; ret = -1;
...@@ -458,14 +458,13 @@ char *lxc_cmd_get_cgroup_path(const char *name, const char *lxcpath, ...@@ -458,14 +458,13 @@ char *lxc_cmd_get_cgroup_path(const char *name, const char *lxcpath,
return NULL; return NULL;
if (!ret) { if (!ret) {
WARN("'%s' has stopped before sending its state", name); WARN("Container \"%s\" has stopped before sending its state.", name);
return NULL; return NULL;
} }
if (cmd.rsp.ret < 0 || cmd.rsp.datalen < 0) { if (cmd.rsp.ret < 0 || cmd.rsp.datalen < 0) {
ERROR("command %s failed for '%s': %s", ERROR("Command %s failed for container \"%s\": %s.",
lxc_cmd_str(cmd.req.cmd), name, lxc_cmd_str(cmd.req.cmd), name, strerror(-cmd.rsp.ret));
strerror(-cmd.rsp.ret));
return NULL; return NULL;
} }
...@@ -571,11 +570,11 @@ lxc_state_t lxc_cmd_get_state(const char *name, const char *lxcpath) ...@@ -571,11 +570,11 @@ lxc_state_t lxc_cmd_get_state(const char *name, const char *lxcpath)
return -1; return -1;
if (!ret) { if (!ret) {
WARN("'%s' has stopped before sending its state", name); WARN("Container \"%s\" has stopped before sending its state.", name);
return -1; return -1;
} }
DEBUG("'%s' is in '%s' state", name, DEBUG("Container \"%s\" is in \"%s\" state.", name,
lxc_state2str(PTR_TO_INT(cmd.rsp.data))); lxc_state2str(PTR_TO_INT(cmd.rsp.data)));
return PTR_TO_INT(cmd.rsp.data); return PTR_TO_INT(cmd.rsp.data);
} }
...@@ -607,7 +606,7 @@ int lxc_cmd_stop(const char *name, const char *lxcpath) ...@@ -607,7 +606,7 @@ int lxc_cmd_stop(const char *name, const char *lxcpath)
ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL); ret = lxc_cmd(name, &cmd, &stopped, lxcpath, NULL);
if (ret < 0) { if (ret < 0) {
if (stopped) { if (stopped) {
INFO("'%s' is already stopped", name); INFO("Container \"%s\" is already stopped.", name);
return 0; return 0;
} }
return -1; return -1;
...@@ -617,11 +616,12 @@ int lxc_cmd_stop(const char *name, const char *lxcpath) ...@@ -617,11 +616,12 @@ int lxc_cmd_stop(const char *name, const char *lxcpath)
* closed * closed
*/ */
if (ret > 0) { if (ret > 0) {
ERROR("failed to stop '%s': %s", name, strerror(-cmd.rsp.ret)); ERROR("Failed to stop container \"%s\": %s.", name,
strerror(-cmd.rsp.ret));
return -1; return -1;
} }
INFO("'%s' has stopped", name); INFO("Container \"%s\" has stopped.", name);
return 0; return 0;
} }
...@@ -643,7 +643,7 @@ static int lxc_cmd_stop_callback(int fd, struct lxc_cmd_req *req, ...@@ -643,7 +643,7 @@ static int lxc_cmd_stop_callback(int fd, struct lxc_cmd_req *req,
*/ */
if (cgroup_unfreeze(handler)) if (cgroup_unfreeze(handler))
return 0; return 0;
ERROR("Failed to unfreeze %s:%s", handler->lxcpath, handler->name); ERROR("Failed to unfreeze container \"%s\".", handler->name);
rsp.ret = -1; rsp.ret = -1;
} }
...@@ -705,27 +705,27 @@ int lxc_cmd_console(const char *name, int *ttynum, int *fd, const char *lxcpath) ...@@ -705,27 +705,27 @@ int lxc_cmd_console(const char *name, int *ttynum, int *fd, const char *lxcpath)
return ret; return ret;
if (cmd.rsp.ret < 0) { if (cmd.rsp.ret < 0) {
ERROR("console access denied: %s", strerror(-cmd.rsp.ret)); ERROR("Console access denied: %s.", strerror(-cmd.rsp.ret));
ret = -1; ret = -1;
goto out; goto out;
} }
if (ret == 0) { if (ret == 0) {
ERROR("console %d invalid,busy or all consoles busy", *ttynum); ERROR("Console %d invalid, busy or all consoles busy.", *ttynum);
ret = -1; ret = -1;
goto out; goto out;
} }
rspdata = cmd.rsp.data; rspdata = cmd.rsp.data;
if (rspdata->masterfd < 0) { if (rspdata->masterfd < 0) {
ERROR("unable to allocate fd for tty %d", rspdata->ttynum); ERROR("Unable to allocate fd for tty %d.", rspdata->ttynum);
goto out; goto out;
} }
ret = cmd.rsp.ret; /* sock fd */ ret = cmd.rsp.ret; /* sock fd */
*fd = rspdata->masterfd; *fd = rspdata->masterfd;
*ttynum = rspdata->ttynum; *ttynum = rspdata->ttynum;
INFO("tty %d allocated fd %d sock %d", rspdata->ttynum, *fd, ret); INFO("tty %d allocated fd %d sock %d.", rspdata->ttynum, *fd, ret);
out: out:
free(cmd.rsp.data); free(cmd.rsp.data);
return ret; return ret;
...@@ -745,7 +745,7 @@ static int lxc_cmd_console_callback(int fd, struct lxc_cmd_req *req, ...@@ -745,7 +745,7 @@ static int lxc_cmd_console_callback(int fd, struct lxc_cmd_req *req,
memset(&rsp, 0, sizeof(rsp)); memset(&rsp, 0, sizeof(rsp));
rsp.data = INT_TO_PTR(ttynum); rsp.data = INT_TO_PTR(ttynum);
if (lxc_abstract_unix_send_fd(fd, masterfd, &rsp, sizeof(rsp)) < 0) { if (lxc_abstract_unix_send_fd(fd, masterfd, &rsp, sizeof(rsp)) < 0) {
ERROR("failed to send tty to client"); ERROR("Failed to send tty to client.");
lxc_console_free(handler->conf, fd); lxc_console_free(handler->conf, fd);
goto out_close; goto out_close;
} }
...@@ -854,7 +854,7 @@ static int lxc_cmd_process(int fd, struct lxc_cmd_req *req, ...@@ -854,7 +854,7 @@ static int lxc_cmd_process(int fd, struct lxc_cmd_req *req,
}; };
if (req->cmd >= LXC_CMD_MAX) { if (req->cmd >= LXC_CMD_MAX) {
ERROR("bad cmd %d received", req->cmd); ERROR("Undefined command id %d received.", req->cmd);
return -1; return -1;
} }
return cb[req->cmd](fd, req, handler); return cb[req->cmd](fd, req, handler);
...@@ -885,23 +885,23 @@ static int lxc_cmd_handler(int fd, uint32_t events, void *data, ...@@ -885,23 +885,23 @@ static int lxc_cmd_handler(int fd, uint32_t events, void *data,
} }
if (ret < 0) { if (ret < 0) {
SYSERROR("failed to receive data on command socket"); SYSERROR("Failed to receive data on command socket.");
goto out_close; goto out_close;
} }
if (!ret) { if (!ret) {
DEBUG("peer has disconnected"); DEBUG("Peer has disconnected.");
goto out_close; goto out_close;
} }
if (ret != sizeof(req)) { if (ret != sizeof(req)) {
WARN("partial request, ignored"); WARN("Failed to receive full command request. Ignoring request.");
ret = -1; ret = -1;
goto out_close; goto out_close;
} }
if (req.datalen > LXC_CMD_DATA_MAX) { if (req.datalen > LXC_CMD_DATA_MAX) {
ERROR("cmd data length %d too large", req.datalen); ERROR("Received command data length %d is too large.", req.datalen);
ret = -1; ret = -1;
goto out_close; goto out_close;
} }
...@@ -912,7 +912,7 @@ static int lxc_cmd_handler(int fd, uint32_t events, void *data, ...@@ -912,7 +912,7 @@ static int lxc_cmd_handler(int fd, uint32_t events, void *data,
reqdata = alloca(req.datalen); reqdata = alloca(req.datalen);
ret = recv(fd, reqdata, req.datalen, 0); ret = recv(fd, reqdata, req.datalen, 0);
if (ret != req.datalen) { if (ret != req.datalen) {
WARN("partial request, ignored"); WARN("Failed to receive full command request. Ignoring request.");
ret = -1; ret = -1;
goto out_close; goto out_close;
} }
...@@ -940,24 +940,24 @@ static int lxc_cmd_accept(int fd, uint32_t events, void *data, ...@@ -940,24 +940,24 @@ static int lxc_cmd_accept(int fd, uint32_t events, void *data,
connection = accept(fd, NULL, 0); connection = accept(fd, NULL, 0);
if (connection < 0) { if (connection < 0) {
SYSERROR("failed to accept connection"); SYSERROR("Failed to accept connection to run command.");
return -1; return -1;
} }
if (fcntl(connection, F_SETFD, FD_CLOEXEC)) { if (fcntl(connection, F_SETFD, FD_CLOEXEC)) {
SYSERROR("failed to set close-on-exec on incoming connection"); SYSERROR("Failed to set close-on-exec on incoming command connection.");
goto out_close; goto out_close;
} }
if (setsockopt(connection, SOL_SOCKET, if (setsockopt(connection, SOL_SOCKET,
SO_PASSCRED, &opt, sizeof(opt))) { SO_PASSCRED, &opt, sizeof(opt))) {
SYSERROR("failed to enable credential on socket"); SYSERROR("Failed to enable necessary credentials on command socket.");
goto out_close; goto out_close;
} }
ret = lxc_mainloop_add_handler(descr, connection, lxc_cmd_handler, data); ret = lxc_mainloop_add_handler(descr, connection, lxc_cmd_handler, data);
if (ret) { if (ret) {
ERROR("failed to add handler"); ERROR("Failed to add command handler.");
goto out_close; goto out_close;
} }
...@@ -988,17 +988,15 @@ int lxc_cmd_init(const char *name, struct lxc_handler *handler, ...@@ -988,17 +988,15 @@ int lxc_cmd_init(const char *name, struct lxc_handler *handler,
fd = lxc_abstract_unix_open(path, SOCK_STREAM, 0); fd = lxc_abstract_unix_open(path, SOCK_STREAM, 0);
if (fd < 0) { if (fd < 0) {
ERROR("failed (%d) to create the command service point %s", errno, offset); ERROR("Failed to create the command service point %s: %s.",
if (errno == EADDRINUSE) { offset, strerror(errno));
ERROR("##"); if (errno == EADDRINUSE)
ERROR("# The container appears to be already running!"); ERROR("Container \"%s\" appears to be already running!", name);
ERROR("##");
}
return -1; return -1;
} }
if (fcntl(fd, F_SETFD, FD_CLOEXEC)) { if (fcntl(fd, F_SETFD, FD_CLOEXEC)) {
SYSERROR("failed to set sigfd to close-on-exec"); SYSERROR("Failed to set FD_CLOEXEC on signal file descriptor.");
close(fd); close(fd);
return -1; return -1;
} }
...@@ -1015,7 +1013,7 @@ int lxc_cmd_mainloop_add(const char *name, ...@@ -1015,7 +1013,7 @@ int lxc_cmd_mainloop_add(const char *name,
ret = lxc_mainloop_add_handler(descr, fd, lxc_cmd_accept, handler); ret = lxc_mainloop_add_handler(descr, fd, lxc_cmd_accept, handler);
if (ret) { if (ret) {
ERROR("failed to add handler for command socket"); ERROR("Failed to add handler for command socket.");
close(fd); close(fd);
} }
......
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