Cleanup up libcfs debug.c to resolve various checkpatch issues.
This also brings us into alignment with the Linux Lustre client.
Change-Id: I011a11ce7f0d5189186f5f9d8e32954ec0ce1ff7
Signed-off-by: James Simmons <jsimmons@infradead.org>
Reviewed-on: https://review.whamcloud.com/39118
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Arshad Hussain <arshad.super@gmail.com>
Reviewed-by: Neil Brown <neilb@suse.de>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
#ifndef __LIBCFS_DEBUG_H__
#define __LIBCFS_DEBUG_H__
#ifndef __LIBCFS_DEBUG_H__
#define __LIBCFS_DEBUG_H__
#include <linux/limits.h>
#include <uapi/linux/lnet/libcfs_debug.h>
#include <linux/limits.h>
#include <uapi/linux/lnet/libcfs_debug.h>
extern unsigned int libcfs_stack;
extern unsigned int libcfs_debug;
extern unsigned int libcfs_printk;
extern unsigned int libcfs_stack;
extern unsigned int libcfs_debug;
extern unsigned int libcfs_printk;
-extern unsigned int libcfs_console_ratelimit;
extern unsigned int libcfs_watchdog_ratelimit;
extern unsigned int libcfs_watchdog_ratelimit;
+extern unsigned int libcfs_console_ratelimit;
extern unsigned int libcfs_console_max_delay;
extern unsigned int libcfs_console_min_delay;
extern unsigned int libcfs_console_backoff;
extern unsigned int libcfs_debug_binary;
extern char libcfs_debug_file_path_arr[PATH_MAX];
extern unsigned int libcfs_console_max_delay;
extern unsigned int libcfs_console_min_delay;
extern unsigned int libcfs_console_backoff;
extern unsigned int libcfs_debug_binary;
extern char libcfs_debug_file_path_arr[PATH_MAX];
int libcfs_debug_mask2str(char *str, int size, int mask, int is_subsys);
int libcfs_debug_str2mask(int *mask, const char *str, int is_subsys);
int libcfs_debug_mask2str(char *str, int size, int mask, int is_subsys);
int libcfs_debug_str2mask(int *mask, const char *str, int is_subsys);
+void libcfs_debug_dumpstack(struct task_struct *tsk);
/* Has there been an LBUG? */
extern unsigned int libcfs_catastrophe;
/* Has there been an LBUG? */
extern unsigned int libcfs_catastrophe;
-extern int libcfs_debug_msg(struct libcfs_debug_msg_data *msgdata,
- const char *format1, ...)
- __attribute__ ((format (printf, 2, 3)));
+int libcfs_debug_msg(struct libcfs_debug_msg_data *msgdata,
+ const char *format1, ...)
+ __printf(2, 3);
/* other external symbols that tracefile provides: */
/* other external symbols that tracefile provides: */
-extern int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob,
- const char __user *usr_buffer,
- int usr_buffer_nob);
-extern int cfs_trace_copyout_string(char __user *usr_buffer, int usr_buffer_nob,
- const char *knl_buffer, char *append);
+int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob,
+ const char __user *usr_buffer, int usr_buffer_nob);
+int cfs_trace_copyout_string(char __user *usr_buffer, int usr_buffer_nob,
+ const char *knl_buffer, char *append);
#define LIBCFS_DEBUG_FILE_PATH_DEFAULT "/tmp/lustre-log"
#define LIBCFS_DEBUG_FILE_PATH_DEFAULT "/tmp/lustre-log"
# define LINVRNT(exp) ((void)sizeof!!(exp))
#endif
# define LINVRNT(exp) ((void)sizeof!!(exp))
#endif
-#define KLASSERT(e) LASSERT(e)
-
-void lbug_with_loc(struct libcfs_debug_msg_data *) __attribute__((noreturn));
+void __noreturn lbug_with_loc(struct libcfs_debug_msg_data *msg);
/******************************************************************************/
/******************************************************************************/
-struct task_struct;
-
-void libcfs_debug_dumpstack(struct task_struct *tsk);
void libcfs_debug_dumplog(void);
int libcfs_debug_init(unsigned long bufsize);
int libcfs_debug_cleanup(void);
void libcfs_debug_dumplog(void);
int libcfs_debug_init(unsigned long bufsize);
int libcfs_debug_cleanup(void);
#if LASSERT_ATOMIC_ENABLED
/** assert value of @a is equal to @v */
#if LASSERT_ATOMIC_ENABLED
/** assert value of @a is equal to @v */
-#define LASSERT_ATOMIC_EQ(a, v) \
-do { \
- LASSERTF(atomic_read(a) == v, \
- "value: %d\n", atomic_read((a))); \
-} while (0)
+#define LASSERT_ATOMIC_EQ(a, v) \
+ LASSERTF(atomic_read(a) == v, "value: %d\n", atomic_read((a)));
/** assert value of @a is unequal to @v */
/** assert value of @a is unequal to @v */
-#define LASSERT_ATOMIC_NE(a, v) \
-do { \
- LASSERTF(atomic_read(a) != v, \
- "value: %d\n", atomic_read((a))); \
-} while (0)
+#define LASSERT_ATOMIC_NE(a, v) \
+ LASSERTF(atomic_read(a) != v, "value: %d\n", atomic_read((a)));
/** assert value of @a is little than @v */
/** assert value of @a is little than @v */
-#define LASSERT_ATOMIC_LT(a, v) \
-do { \
- LASSERTF(atomic_read(a) < v, \
- "value: %d\n", atomic_read((a))); \
-} while (0)
+#define LASSERT_ATOMIC_LT(a, v) \
+ LASSERTF(atomic_read(a) < v, "value: %d\n", atomic_read((a)));
/** assert value of @a is little/equal to @v */
/** assert value of @a is little/equal to @v */
-#define LASSERT_ATOMIC_LE(a, v) \
-do { \
- LASSERTF(atomic_read(a) <= v, \
- "value: %d\n", atomic_read((a))); \
-} while (0)
+#define LASSERT_ATOMIC_LE(a, v) \
+ LASSERTF(atomic_read(a) <= v, "value: %d\n", atomic_read((a)));
/** assert value of @a is great than @v */
/** assert value of @a is great than @v */
-#define LASSERT_ATOMIC_GT(a, v) \
-do { \
- LASSERTF(atomic_read(a) > v, \
- "value: %d\n", atomic_read((a))); \
-} while (0)
+#define LASSERT_ATOMIC_GT(a, v) \
+ LASSERTF(atomic_read(a) > v, "value: %d\n", atomic_read((a)));
/** assert value of @a is great/equal to @v */
/** assert value of @a is great/equal to @v */
-#define LASSERT_ATOMIC_GE(a, v) \
-do { \
- LASSERTF(atomic_read(a) >= v, \
- "value: %d\n", atomic_read((a))); \
-} while (0)
+#define LASSERT_ATOMIC_GE(a, v) \
+ LASSERTF(atomic_read(a) >= v, "value: %d\n", atomic_read((a)));
/** assert value of @a is great than @v1 and little than @v2 */
/** assert value of @a is great than @v1 and little than @v2 */
-#define LASSERT_ATOMIC_GT_LT(a, v1, v2) \
-do { \
- int __v = atomic_read(a); \
- LASSERTF(__v > v1 && __v < v2, "value: %d\n", __v); \
+#define LASSERT_ATOMIC_GT_LT(a, v1, v2) \
+do { \
+ int __v = atomic_read(a); \
+ LASSERTF(__v > v1 && __v < v2, "value: %d\n", __v);\
} while (0)
/** assert value of @a is great than @v1 and little/equal to @v2 */
} while (0)
/** assert value of @a is great than @v1 and little/equal to @v2 */
-#define LASSERT_ATOMIC_GT_LE(a, v1, v2) \
-do { \
- int __v = atomic_read(a); \
- LASSERTF(__v > v1 && __v <= v2, "value: %d\n", __v); \
+#define LASSERT_ATOMIC_GT_LE(a, v1, v2) \
+do { \
+ int __v = atomic_read(a); \
+ LASSERTF(__v > v1 && __v <= v2, "value: %d\n", __v);\
} while (0)
/** assert value of @a is great/equal to @v1 and little than @v2 */
} while (0)
/** assert value of @a is great/equal to @v1 and little than @v2 */
-#define LASSERT_ATOMIC_GE_LT(a, v1, v2) \
-do { \
- int __v = atomic_read(a); \
- LASSERTF(__v >= v1 && __v < v2, "value: %d\n", __v); \
+#define LASSERT_ATOMIC_GE_LT(a, v1, v2) \
+do { \
+ int __v = atomic_read(a); \
+ LASSERTF(__v >= v1 && __v < v2, "value: %d\n", __v);\
} while (0)
/** assert value of @a is great/equal to @v1 and little/equal to @v2 */
#define LASSERT_ATOMIC_GE_LE(a, v1, v2) \
do { \
} while (0)
/** assert value of @a is great/equal to @v1 and little/equal to @v2 */
#define LASSERT_ATOMIC_GE_LE(a, v1, v2) \
do { \
- int __v = atomic_read(a); \
+ int __v = atomic_read(a); \
LASSERTF(__v >= v1 && __v <= v2, "value: %d\n", __v); \
} while (0)
LASSERTF(__v >= v1 && __v <= v2, "value: %d\n", __v); \
} while (0)
# define DEBUG_SUBSYSTEM S_LNET
# define DEBUG_SUBSYSTEM S_LNET
+#include <linux/module.h>
+#include <libcfs/libcfs_string.h>
#include <linux/kthread.h>
#include <linux/stacktrace.h>
#include <linux/utsname.h>
#include <linux/kthread.h>
#include <linux/stacktrace.h>
#include <linux/utsname.h>
-#include <libcfs/libcfs.h>
#include "tracefile.h"
static char debug_file_name[1024];
unsigned int libcfs_subsystem_debug = ~0;
#include "tracefile.h"
static char debug_file_name[1024];
unsigned int libcfs_subsystem_debug = ~0;
+EXPORT_SYMBOL(libcfs_subsystem_debug);
module_param(libcfs_subsystem_debug, int, 0644);
MODULE_PARM_DESC(libcfs_subsystem_debug, "Lustre kernel debug subsystem mask");
module_param(libcfs_subsystem_debug, int, 0644);
MODULE_PARM_DESC(libcfs_subsystem_debug, "Lustre kernel debug subsystem mask");
-EXPORT_SYMBOL(libcfs_subsystem_debug);
unsigned int libcfs_debug = (D_CANTMASK | D_NETERROR | D_HA | D_CONFIG |
D_IOCTL | D_LFSCK | D_TTY);
unsigned int libcfs_debug = (D_CANTMASK | D_NETERROR | D_HA | D_CONFIG |
D_IOCTL | D_LFSCK | D_TTY);
+EXPORT_SYMBOL(libcfs_debug);
module_param(libcfs_debug, int, 0644);
MODULE_PARM_DESC(libcfs_debug, "Lustre kernel debug mask");
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,
cfs_kernel_param_arg_t *kp)
static int libcfs_param_debug_mb_set(const char *val,
cfs_kernel_param_arg_t *kp)
-/*
- * While debug_mb setting look like unsigned int, in fact
+/* While debug_mb setting look like unsigned int, in fact
* it needs quite a bunch of extra processing, so we define special
* debug_mb parameter type with corresponding methods to handle this case
*/
* it needs quite a bunch of extra processing, so we define special
* debug_mb parameter type with corresponding methods to handle this case
*/
-static struct kernel_param_ops param_ops_debug_mb = {
+static const struct kernel_param_ops param_ops_debug_mb = {
.set = libcfs_param_debug_mb_set,
.get = param_get_uint,
};
.set = libcfs_param_debug_mb_set,
.get = param_get_uint,
};
libcfs_console_min_delay, INT_MAX);
}
libcfs_console_min_delay, INT_MAX);
}
-static struct kernel_param_ops param_ops_console_max_delay = {
+static const struct kernel_param_ops param_ops_console_max_delay = {
.set = param_set_console_max_delay,
.get = param_get_delay,
};
.set = param_set_console_max_delay,
.get = param_get_delay,
};
1, libcfs_console_max_delay);
}
1, libcfs_console_max_delay);
}
-static struct kernel_param_ops param_ops_console_min_delay = {
+static const struct kernel_param_ops param_ops_console_min_delay = {
.set = param_set_console_min_delay,
.get = param_get_delay,
};
.set = param_set_console_min_delay,
.get = param_get_delay,
};
return param_set_uint_minmax(val, kp, 1, -1);
}
return param_set_uint_minmax(val, kp, 1, -1);
}
-static struct kernel_param_ops param_ops_uintpos = {
+static const struct kernel_param_ops param_ops_uintpos = {
.set = param_set_uintpos,
.get = param_get_uint,
};
.set = param_set_uintpos,
.get = param_get_uint,
};
int libcfs_panic_in_progress;
int libcfs_panic_in_progress;
-/*
- * libcfs_debug_token2mask() expects the returned
- * string in lower-case
- */
+/* libcfs_debug_token2mask() expects the returned string in lower-case */
static const char *libcfs_debug_subsys2str(int subsys)
{
static const char *libcfs_debug_subsys2str(int subsys)
{
- static const char *libcfs_debug_subsystems[] = LIBCFS_DEBUG_SUBSYS_NAMES;
+ static const char * const libcfs_debug_subsystems[] =
+ LIBCFS_DEBUG_SUBSYS_NAMES;
if (subsys >= ARRAY_SIZE(libcfs_debug_subsystems))
return NULL;
if (subsys >= ARRAY_SIZE(libcfs_debug_subsystems))
return NULL;
return libcfs_debug_subsystems[subsys];
}
return libcfs_debug_subsystems[subsys];
}
-/*
- * libcfs_debug_token2mask() expects the returned
- * string in lower-case
- */
+/* libcfs_debug_token2mask() expects the returned string in lower-case */
static const char *libcfs_debug_dbg2str(int debug)
{
static const char *libcfs_debug_dbg2str(int debug)
{
- static const char *libcfs_debug_masks[] = LIBCFS_DEBUG_MASKS_NAMES;
+ static const char * const libcfs_debug_masks[] =
+ LIBCFS_DEBUG_MASKS_NAMES;
if (debug >= ARRAY_SIZE(libcfs_debug_masks))
return NULL;
if (debug >= ARRAY_SIZE(libcfs_debug_masks))
return NULL;
- if (token == NULL) /* unused bit */
+ if (!token) /* unused bit */
continue;
if (len > 0) { /* separator? */
continue;
if (len > 0) { /* separator? */
if (!isspace(str[n-1]))
break;
matched = n;
if (!isspace(str[n-1]))
break;
matched = n;
t = sscanf(str, "%i%n", &m, &matched);
if (t >= 1 && matched == n) {
/* don't print warning for lctl set_param debug=0 or -1 */
if (m != 0 && m != -1)
t = sscanf(str, "%i%n", &m, &matched);
if (t >= 1 && matched == n) {
/* don't print warning for lctl set_param debug=0 or -1 */
if (m != 0 && m != -1)
- CWARN("You are trying to use a numerical value for the "
- "mask - this will be deprecated in a future "
- "release.\n");
+ CWARN("You are trying to use a numerical value for the mask - this will be deprecated in a future release.\n");
*
* @file path of the dumped log
*/
*
* @file path of the dumped log
*/
-void libcfs_run_debug_log_upcall(char *file)
+static void libcfs_run_debug_log_upcall(char *file)
+ static const char * const envp[] = {
"HOME=/",
"PATH=/sbin:/bin:/usr/sbin:/usr/bin",
NULL
"HOME=/",
"PATH=/sbin:/bin:/usr/sbin:/usr/bin",
NULL
argv[0] = lnet_debug_log_upcall;
LASSERTF(file, "called on a null filename\n");
argv[0] = lnet_debug_log_upcall;
LASSERTF(file, "called on a null filename\n");
- argv[1] = file; //only need to pass the path of the file
+ argv[1] = file; /* only need to pass the path of the file */
- rc = call_usermodehelper(argv[0], argv, envp, 1);
+ rc = call_usermodehelper(argv[0], argv, (char **)envp, 1);
if (rc < 0 && rc != -ENOENT) {
CERROR("Error %d invoking LNET debug log upcall %s %s; check /sys/kernel/debug/lnet/debug_log_upcall\n",
rc, argv[0], argv[1]);
if (rc < 0 && rc != -ENOENT) {
CERROR("Error %d invoking LNET debug log upcall %s %s; check /sys/kernel/debug/lnet/debug_log_upcall\n",
rc, argv[0], argv[1]);
cfs_tracefile_dump_all_pages(debug_file_name);
libcfs_run_debug_log_upcall(debug_file_name);
}
cfs_tracefile_dump_all_pages(debug_file_name);
libcfs_run_debug_log_upcall(debug_file_name);
}
current->journal_info = journal_info;
}
current->journal_info = journal_info;
}
EXPORT_SYMBOL(libcfs_debug_dumplog);
/* coverity[+kill] */
EXPORT_SYMBOL(libcfs_debug_dumplog);
/* coverity[+kill] */
-void lbug_with_loc(struct libcfs_debug_msg_data *msgdata)
+void __noreturn lbug_with_loc(struct libcfs_debug_msg_data *msgdata)
{
libcfs_catastrophe = 1;
libcfs_debug_msg(msgdata, "LBUG\n");
{
libcfs_catastrophe = 1;
libcfs_debug_msg(msgdata, "LBUG\n");
int libcfs_debug_init(unsigned long bufsize)
{
int libcfs_debug_init(unsigned long bufsize)
{
unsigned int max = libcfs_debug_mb;
unsigned int max = libcfs_debug_mb;
if (libcfs_console_max_delay <= 0 || /* not set by user or */
libcfs_console_min_delay <= 0 || /* set to invalid values */
if (libcfs_console_max_delay <= 0 || /* not set by user or */
libcfs_console_min_delay <= 0 || /* set to invalid values */
libcfs_console_min_delay = CDEBUG_DEFAULT_MIN_DELAY;
}
libcfs_console_min_delay = CDEBUG_DEFAULT_MIN_DELAY;
}
- if (libcfs_debug_file_path != NULL) {
+ if (libcfs_debug_file_path) {
strlcpy(libcfs_debug_file_path_arr,
libcfs_debug_file_path,
sizeof(libcfs_debug_file_path_arr));
strlcpy(libcfs_debug_file_path_arr,
libcfs_debug_file_path,
sizeof(libcfs_debug_file_path_arr));
max = TCD_MAX_PAGES;
} else {
max = (max / num_possible_cpus());
max = TCD_MAX_PAGES;
} else {
max = (max / num_possible_cpus());
- max = (max << (20 - PAGE_SHIFT));
+ max <<= (20 - PAGE_SHIFT);
}
rc = cfs_tracefile_init(max);
}
rc = cfs_tracefile_init(max);
-/*
- * Debug markers, although printed by S_LNET
- * should not be be marked as such.
- */
+/* Debug markers, although printed by S_LNET should not be be marked as such. */
#undef DEBUG_SUBSYSTEM
#define DEBUG_SUBSYSTEM S_UNDEFINED
int libcfs_debug_mark_buffer(const char *text)
{
#undef DEBUG_SUBSYSTEM
#define DEBUG_SUBSYSTEM S_UNDEFINED
int libcfs_debug_mark_buffer(const char *text)
{
- CDEBUG(D_TRACE, "**************************************************\n");
+ CDEBUG(D_TRACE,
+ "**************************************************\n");
LCONSOLE(D_WARNING, "DEBUG MARKER: %s\n", text);
LCONSOLE(D_WARNING, "DEBUG MARKER: %s\n", text);
- CDEBUG(D_TRACE, "**************************************************\n");
+ CDEBUG(D_TRACE,
+ "**************************************************\n");
#undef DEBUG_SUBSYSTEM
#define DEBUG_SUBSYSTEM S_LNET
#undef DEBUG_SUBSYSTEM
#define DEBUG_SUBSYSTEM S_LNET
*/
extern char lnet_debug_log_upcall[1024];
*/
extern char lnet_debug_log_upcall[1024];
-extern void libcfs_run_debug_log_upcall(char *file);
-
int cfs_tracefile_dump_all_pages(char *filename);
void cfs_trace_debug_print(void);
void cfs_trace_flush_pages(void);
int cfs_tracefile_dump_all_pages(char *filename);
void cfs_trace_debug_print(void);
void cfs_trace_flush_pages(void);
if (type == CPT_CACHEABLE) {
/* vmpage lock is used to protect the child/parent
* relationship */
if (type == CPT_CACHEABLE) {
/* vmpage lock is used to protect the child/parent
* relationship */
- KLASSERT(PageLocked(vmpage));
+ LASSERT(PageLocked(vmpage));
/*
* cl_vmpage_page() can be called here without any locks as
*
/*
* cl_vmpage_page() can be called here without any locks as
*
struct cl_page *page;
ENTRY;
struct cl_page *page;
ENTRY;
- KLASSERT(PageLocked(vmpage));
+ LASSERT(PageLocked(vmpage));
/*
* NOTE: absence of races and liveness of data are guaranteed by page
/*
* NOTE: absence of races and liveness of data are guaranteed by page