Commit 8dc08446 authored by Oleg Drokin's avatar Oleg Drokin Committed by Greg Kroah-Hartman
Browse files

staging/lustre/libcfs: get rid of debugfs/lnet/debug_mb



It's just a fancy libcfs_debug_mb module parameter wrapper,
so just add debug buffer size check and resizing and the same
functionality now would be accessible via
/sys/module/libcfs/parameters/libcfs_debug_mb

Also add a symlink for backwards compatibility.

Signed-off-by: default avatarOleg Drokin <green@linuxhacker.ru>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 3e9f88e6
Loading
Loading
Loading
Loading
+38 −2
Original line number Diff line number Diff line
@@ -57,8 +57,42 @@ module_param(libcfs_debug, int, 0644);
MODULE_PARM_DESC(libcfs_debug, "Lustre kernel debug mask");
EXPORT_SYMBOL(libcfs_debug);

static int libcfs_param_debug_mb_set(const char *val,
				     const struct kernel_param *kp)
{
	int rc;
	unsigned num;

	rc = kstrtouint(val, 0, &num);
	if (rc < 0)
		return rc;

	if (!*((unsigned int *)kp->arg)) {
		*((unsigned int *)kp->arg) = num;
		return 0;
	}

	rc = cfs_trace_set_debug_mb(num);

	if (!rc)
		*((unsigned int *)kp->arg) = cfs_trace_get_debug_mb();

	return rc;
}

/* While debug_mb setting look like unsigned int, in fact
 * it needs quite a bunch of extra processing, so we define special
 * debugmb parameter type with corresponding methods to handle this case */
static struct kernel_param_ops param_ops_debugmb = {
	.set = libcfs_param_debug_mb_set,
	.get = param_get_uint,
};

#define param_check_debugmb(name, p) \
		__param_check(name, p, unsigned int)

static unsigned int libcfs_debug_mb;
module_param(libcfs_debug_mb, uint, 0644);
module_param(libcfs_debug_mb, debugmb, 0644);
MODULE_PARM_DESC(libcfs_debug_mb, "Total debug buffer size.");
EXPORT_SYMBOL(libcfs_debug_mb);

@@ -437,8 +471,10 @@ int libcfs_debug_init(unsigned long bufsize)
	}
	rc = cfs_tracefile_init(max);

	if (rc == 0)
	if (rc == 0) {
		libcfs_register_panic_notifier();
		libcfs_debug_mb = cfs_trace_get_debug_mb();
	}

	return rc;
}
+2 −30
Original line number Diff line number Diff line
@@ -550,31 +550,6 @@ static int proc_daemon_file(struct ctl_table *table, int write,
				 __proc_daemon_file);
}

static int __proc_debug_mb(void *data, int write,
			   loff_t pos, void __user *buffer, int nob)
{
	if (!write) {
		char tmpstr[32];
		int  len = snprintf(tmpstr, sizeof(tmpstr), "%d",
				    cfs_trace_get_debug_mb());

		if (pos >= len)
			return 0;

		return cfs_trace_copyout_string(buffer, nob, tmpstr + pos,
		       "\n");
	}

	return cfs_trace_set_debug_mb_usrstr(buffer, nob);
}

static int proc_debug_mb(struct ctl_table *table, int write,
			 void __user *buffer, size_t *lenp, loff_t *ppos)
{
	return proc_call_handler(table->data, write, ppos, buffer, lenp,
				 __proc_debug_mb);
}

static int proc_console_max_delay_cs(struct ctl_table *table, int write,
				     void __user *buffer, size_t *lenp,
				     loff_t *ppos)
@@ -789,11 +764,6 @@ static struct ctl_table lnet_table[] = {
		.maxlen   = 256,
		.proc_handler = &proc_daemon_file,
	},
	{
		.procname = "debug_mb",
		.mode     = 0644,
		.proc_handler = &proc_debug_mb,
	},
	{
		.procname = "force_lbug",
		.data     = NULL,
@@ -833,6 +803,8 @@ struct lnet_debugfs_symlink_def lnet_debugfs_symlinks[] = {
	  "/sys/module/libcfs/parameters/libcfs_panic_on_lbug"},
	{ "libcfs_console_backoff",
	  "/sys/module/libcfs/parameters/libcfs_console_backoff"},
	{ "debug_mb",
	  "/sys/module/libcfs/parameters/libcfs_debug_mb"},
	{},
};

+0 −12
Original line number Diff line number Diff line
@@ -937,18 +937,6 @@ int cfs_trace_set_debug_mb(int mb)
	return 0;
}

int cfs_trace_set_debug_mb_usrstr(void __user *usr_str, int usr_str_nob)
{
	char     str[32];
	int      rc;

	rc = cfs_trace_copyin_string(str, sizeof(str), usr_str, usr_str_nob);
	if (rc < 0)
		return rc;

	return cfs_trace_set_debug_mb(simple_strtoul(str, NULL, 0));
}

int cfs_trace_get_debug_mb(void)
{
	int i;
+0 −1
Original line number Diff line number Diff line
@@ -77,7 +77,6 @@ int cfs_trace_dump_debug_buffer_usrstr(void __user *usr_str, int usr_str_nob);
int cfs_trace_daemon_command(char *str);
int cfs_trace_daemon_command_usrstr(void __user *usr_str, int usr_str_nob);
int cfs_trace_set_debug_mb(int mb);
int cfs_trace_set_debug_mb_usrstr(void __user *usr_str, int usr_str_nob);
int cfs_trace_get_debug_mb(void);

extern void libcfs_debug_dumplog_internal(void *arg);