Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -529,7 +529,7 @@ struct sk_buff *tipc_cfg_do_cmd(u32 orig_node, u16 cmd, const void *request_area
		break;
#endif
	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;
	case TIPC_CMD_DUMP_LOG:
		rep_tlv_buf = tipc_log_dump();
+2 −2
Original line number Diff line number Diff line
@@ -182,7 +182,7 @@ static int __init tipc_init(void)
{
	int res;

	tipc_log_reinit(CONFIG_TIPC_LOG);
	tipc_log_resize(CONFIG_TIPC_LOG);
	info("Activated (version " TIPC_MOD_VER
	     " compiled " __DATE__ " " __TIME__ ")\n");

@@ -209,7 +209,7 @@ static void __exit tipc_exit(void)
	tipc_core_stop_net();
	tipc_core_stop();
	info("Deactivated\n");
	tipc_log_stop();
	tipc_log_resize(0);
}

module_init(tipc_init);
+7 −19
Original line number Diff line number Diff line
@@ -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);
	if (TIPC_LOG->buf) {
		kfree(TIPC_LOG->buf);
		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 < 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),
				   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;

@@ -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))
		return tipc_cfg_reply_error_string(TIPC_CFG_INVALID_VALUE
						   " (log size must be 0-32768)");
	tipc_log_reinit(value);
	tipc_log_resize(value);
	return tipc_cfg_reply_none();
}

+3 −3
Original line number Diff line number Diff line
@@ -61,10 +61,10 @@ int tipc_printbuf_empty(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_log_reinit(int log_size);
void tipc_log_stop(void);
void tipc_log_resize(int log_size);

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);

#endif