infra: {send,recv}ing mars_cmd via wrapper

This commit is contained in:
Thomas Schoebel-Theuer 2019-07-11 09:34:43 +02:00 committed by Thomas Schoebel-Theuer
parent 381b6489f6
commit 0c5b5daa38
5 changed files with 33 additions and 13 deletions

View File

@ -299,7 +299,7 @@ struct client_channel *_get_channel(struct client_bundle *bundle, int min_channe
.cmd_code = CMD_CONNECT, .cmd_code = CMD_CONNECT,
.cmd_str1 = bundle->path, .cmd_str1 = bundle->path,
}; };
int status = mars_send_struct(&res->socket, &cmd, mars_cmd_meta, false); int status = mars_send_cmd(&res->socket, &cmd, false);
MARS_DBG("send CMD_CONNECT status = %d\n", status); MARS_DBG("send CMD_CONNECT status = %d\n", status);
if (unlikely(status < 0)) { if (unlikely(status < 0)) {
MARS_WRN("connect '%s' @%s on channel %d failed, status = %d\n", MARS_WRN("connect '%s' @%s on channel %d failed, status = %d\n",
@ -330,7 +330,7 @@ int _request_info(struct client_channel *ch)
int status; int status;
MARS_DBG("\n"); MARS_DBG("\n");
status = mars_send_struct(&ch->socket, &cmd, mars_cmd_meta, false); status = mars_send_cmd(&ch->socket, &cmd, false);
MARS_DBG("send CMD_GETINFO status = %d\n", status); MARS_DBG("send CMD_GETINFO status = %d\n", status);
if (unlikely(status < 0)) { if (unlikely(status < 0)) {
MARS_DBG("send of getinfo failed, status = %d\n", status); MARS_DBG("send of getinfo failed, status = %d\n", status);
@ -553,7 +553,7 @@ int receiver_thread(void *data)
continue; continue;
} }
status = mars_recv_struct(&ch->socket, &cmd, mars_cmd_meta); status = mars_recv_cmd(&ch->socket, &cmd);
MARS_IO("got cmd = %d status = %d\n", cmd.cmd_code, status); MARS_IO("got cmd = %d status = %d\n", cmd.cmd_code, status);
if (status <= 0) { if (status <= 0) {
if (brick->power.button && if (brick->power.button &&

View File

@ -1186,8 +1186,22 @@ const struct meta mars_cmd_meta[] = {
META_INI(cmd_str1, struct mars_cmd, FIELD_STRING), META_INI(cmd_str1, struct mars_cmd, FIELD_STRING),
{} {}
}; };
EXPORT_SYMBOL_GPL(mars_cmd_meta);
int mars_send_cmd(struct mars_socket *msock, struct mars_cmd *cmd, bool cork)
{
int status;
status = desc_send_struct(msock, cmd, mars_cmd_meta, cork);
return status;
}
int _mars_recv_cmd(struct mars_socket *msock, struct mars_cmd *cmd, int line)
{
int status;
status = desc_recv_struct(msock, cmd, mars_cmd_meta, line);
return status;
}
int mars_send_mref(struct mars_socket *msock, struct mref_object *mref, bool cork) int mars_send_mref(struct mars_socket *msock, struct mref_object *mref, bool cork)
{ {
@ -1204,7 +1218,7 @@ int mars_send_mref(struct mars_socket *msock, struct mref_object *mref, bool cor
if (!cork || !msock->s_pos) if (!cork || !msock->s_pos)
get_lamport(NULL, &cmd.cmd_stamp); get_lamport(NULL, &cmd.cmd_stamp);
status = desc_send_struct(msock, &cmd, mars_cmd_meta, true); status = mars_send_cmd(msock, &cmd, true);
if (status < 0) if (status < 0)
goto done; goto done;
@ -1263,7 +1277,7 @@ int mars_send_cb(struct mars_socket *msock, struct mref_object *mref, bool cork)
if (!cork || !msock->s_pos) if (!cork || !msock->s_pos)
get_lamport(NULL, &cmd.cmd_stamp); get_lamport(NULL, &cmd.cmd_stamp);
status = desc_send_struct(msock, &cmd, mars_cmd_meta, true); status = mars_send_cmd(msock, &cmd, true);
if (status < 0) if (status < 0)
goto done; goto done;

View File

@ -119,8 +119,6 @@ struct mars_cmd {
//char *cmd_str3; //char *cmd_str3;
}; };
extern const struct meta mars_cmd_meta[];
extern char *(*mars_translate_hostname)(const char *name); extern char *(*mars_translate_hostname)(const char *name);
/* Low-level network traffic /* Low-level network traffic
@ -154,6 +152,14 @@ extern int _mars_recv_struct(struct mars_socket *msock, void *data, const struct
/* High-level transport of mars structures /* High-level transport of mars structures
*/ */
extern int mars_send_cmd(struct mars_socket *msock, struct mars_cmd *cmd, bool cork);
extern int _mars_recv_cmd(struct mars_socket *msock, struct mars_cmd *cmd, int line);
#define mars_recv_cmd(_sock_,_cmd_) \
({ \
_mars_recv_cmd(_sock_, _cmd_, __LINE__); \
})
extern int mars_send_dent_list(struct mars_socket *msock, struct list_head *anchor); extern int mars_send_dent_list(struct mars_socket *msock, struct list_head *anchor);
extern int mars_recv_dent_list(struct mars_socket *msock, struct list_head *anchor); extern int mars_recv_dent_list(struct mars_socket *msock, struct list_head *anchor);

View File

@ -444,7 +444,7 @@ int handler_thread(void *data)
goto clean; goto clean;
} }
status = mars_recv_struct(sock, &cmd, mars_cmd_meta); status = mars_recv_cmd(sock, &cmd);
if (unlikely(status < 0)) { if (unlikely(status < 0)) {
MARS_WRN("#%d recv cmd status = %d\n", sock->s_debug_nr, status); MARS_WRN("#%d recv cmd status = %d\n", sock->s_debug_nr, status);
goto clean_unlock; goto clean_unlock;
@ -476,7 +476,7 @@ int handler_thread(void *data)
break; break;
} }
down(&brick->socket_sem); down(&brick->socket_sem);
status = mars_send_struct(sock, &cmd, mars_cmd_meta, true); status = mars_send_cmd(sock, &cmd, true);
if (status >= 0) { if (status >= 0) {
status = mars_send_struct(sock, &info, mars_info_meta, false); status = mars_send_struct(sock, &info, mars_info_meta, false);
} }
@ -552,7 +552,7 @@ int handler_thread(void *data)
err: err:
cmd.cmd_int1 = status; cmd.cmd_int1 = status;
down(&brick->socket_sem); down(&brick->socket_sem);
status = mars_send_struct(sock, &cmd, mars_cmd_meta, false); status = mars_send_cmd(sock, &cmd, false);
up(&brick->socket_sem); up(&brick->socket_sem);
break; break;
} }

View File

@ -2499,7 +2499,7 @@ int peer_thread(void *data)
pause_time = 0; pause_time = 0;
MARS_DBG("sending notify to peer...\n"); MARS_DBG("sending notify to peer...\n");
cmd.cmd_code = CMD_NOTIFY; cmd.cmd_code = CMD_NOTIFY;
status = mars_send_struct(&peer->socket, &cmd, mars_cmd_meta, true); status = mars_send_cmd(&peer->socket, &cmd, true);
} }
if (likely(status >= 0)) { if (likely(status >= 0)) {
@ -2522,7 +2522,7 @@ int peer_thread(void *data)
} }
MARS_DBG("fetching dents from '%s' paths '%s'\n", MARS_DBG("fetching dents from '%s' paths '%s'\n",
peer->peer, cmd.cmd_str1); peer->peer, cmd.cmd_str1);
status = mars_send_struct(&peer->socket, &cmd, mars_cmd_meta, false); status = mars_send_cmd(&peer->socket, &cmd, false);
} }
if (unlikely(status < 0)) { if (unlikely(status < 0)) {
MARS_WRN("communication error on send, status = %d\n", status); MARS_WRN("communication error on send, status = %d\n", status);