Commit 025adbe8 authored by Allan Stephens's avatar Allan Stephens Committed by David S. Miller

tipc: Simplify log buffer resizing

This patch simplifies & standardizes the way TIPC's print buffer
log is resized.  Code to terminate use of the log buffer is
eliminated by simply setting the log buffer size to 0 bytes.
Signed-off-by: default avatarAllan Stephens <allan.stephens@windriver.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f74d505b
...@@ -529,7 +529,7 @@ struct sk_buff *tipc_cfg_do_cmd(u32 orig_node, u16 cmd, const void *request_area ...@@ -529,7 +529,7 @@ struct sk_buff *tipc_cfg_do_cmd(u32 orig_node, u16 cmd, const void *request_area
break; break;
#endif #endif
case TIPC_CMD_SET_LOG_SIZE: case TIPC_CMD_SET_LOG_SIZE:
rep_tlv_buf = tipc_log_resize(req_tlv_area, req_tlv_space); rep_tlv_buf = tipc_log_resize_cmd(req_tlv_area, req_tlv_space);
break; break;
case TIPC_CMD_DUMP_LOG: case TIPC_CMD_DUMP_LOG:
rep_tlv_buf = tipc_log_dump(); rep_tlv_buf = tipc_log_dump();
......
...@@ -182,7 +182,7 @@ static int __init tipc_init(void) ...@@ -182,7 +182,7 @@ static int __init tipc_init(void)
{ {
int res; int res;
tipc_log_reinit(CONFIG_TIPC_LOG); tipc_log_resize(CONFIG_TIPC_LOG);
info("Activated (version " TIPC_MOD_VER info("Activated (version " TIPC_MOD_VER
" compiled " __DATE__ " " __TIME__ ")\n"); " compiled " __DATE__ " " __TIME__ ")\n");
...@@ -209,7 +209,7 @@ static void __exit tipc_exit(void) ...@@ -209,7 +209,7 @@ static void __exit tipc_exit(void)
tipc_core_stop_net(); tipc_core_stop_net();
tipc_core_stop(); tipc_core_stop();
info("Deactivated\n"); info("Deactivated\n");
tipc_log_stop(); tipc_log_resize(0);
} }
module_init(tipc_init); module_init(tipc_init);
......
...@@ -350,43 +350,31 @@ void tipc_dump(struct print_buf *pb, const char *fmt, ...) ...@@ -350,43 +350,31 @@ void tipc_dump(struct print_buf *pb, const char *fmt, ...)
} }
/** /**
* tipc_log_stop - free up TIPC log print buffer * tipc_log_resize - change the size of the TIPC log buffer
* @log_size: print buffer size to use
*/ */
void tipc_log_stop(void) void tipc_log_resize(int log_size)
{ {
spin_lock_bh(&print_lock); spin_lock_bh(&print_lock);
if (TIPC_LOG->buf) { if (TIPC_LOG->buf) {
kfree(TIPC_LOG->buf); kfree(TIPC_LOG->buf);
TIPC_LOG->buf = NULL; TIPC_LOG->buf = NULL;
} }
spin_unlock_bh(&print_lock);
}
/**
* tipc_log_reinit - (re)initialize TIPC log print buffer
* @log_size: print buffer size to use
*/
void tipc_log_reinit(int log_size)
{
tipc_log_stop();
if (log_size) { if (log_size) {
if (log_size < TIPC_PB_MIN_SIZE) if (log_size < TIPC_PB_MIN_SIZE)
log_size = TIPC_PB_MIN_SIZE; log_size = TIPC_PB_MIN_SIZE;
spin_lock_bh(&print_lock);
tipc_printbuf_init(TIPC_LOG, kmalloc(log_size, GFP_ATOMIC), tipc_printbuf_init(TIPC_LOG, kmalloc(log_size, GFP_ATOMIC),
log_size); log_size);
spin_unlock_bh(&print_lock);
} }
spin_unlock_bh(&print_lock);
} }
/** /**
* tipc_log_resize - reconfigure size of TIPC log buffer * tipc_log_resize_cmd - reconfigure size of TIPC log buffer
*/ */
struct sk_buff *tipc_log_resize(const void *req_tlv_area, int req_tlv_space) struct sk_buff *tipc_log_resize_cmd(const void *req_tlv_area, int req_tlv_space)
{ {
u32 value; u32 value;
...@@ -397,7 +385,7 @@ struct sk_buff *tipc_log_resize(const void *req_tlv_area, int req_tlv_space) ...@@ -397,7 +385,7 @@ struct sk_buff *tipc_log_resize(const void *req_tlv_area, int req_tlv_space)
if (value != delimit(value, 0, 32768)) if (value != delimit(value, 0, 32768))
return tipc_cfg_reply_error_string(TIPC_CFG_INVALID_VALUE return tipc_cfg_reply_error_string(TIPC_CFG_INVALID_VALUE
" (log size must be 0-32768)"); " (log size must be 0-32768)");
tipc_log_reinit(value); tipc_log_resize(value);
return tipc_cfg_reply_none(); return tipc_cfg_reply_none();
} }
......
...@@ -61,10 +61,10 @@ int tipc_printbuf_empty(struct print_buf *pb); ...@@ -61,10 +61,10 @@ int tipc_printbuf_empty(struct print_buf *pb);
int tipc_printbuf_validate(struct print_buf *pb); int tipc_printbuf_validate(struct print_buf *pb);
void tipc_printbuf_move(struct print_buf *pb_to, struct print_buf *pb_from); void tipc_printbuf_move(struct print_buf *pb_to, struct print_buf *pb_from);
void tipc_log_reinit(int log_size); void tipc_log_resize(int log_size);
void tipc_log_stop(void);
struct sk_buff *tipc_log_resize(const void *req_tlv_area, int req_tlv_space); struct sk_buff *tipc_log_resize_cmd(const void *req_tlv_area,
int req_tlv_space);
struct sk_buff *tipc_log_dump(void); struct sk_buff *tipc_log_dump(void);
#endif #endif
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