* Debugging
*/
extern unsigned int libcfs_subsystem_debug;
-extern unsigned int libcfs_stack;
extern unsigned int libcfs_debug;
extern unsigned int libcfs_printk;
extern unsigned int libcfs_watchdog_ratelimit;
#ifdef CDEBUG_ENABLED
-#if !defined(__x86_64__)
-# ifdef __ia64__
-# define CDEBUG_STACK() (THREAD_SIZE - \
- ((unsigned long)__builtin_dwarf_cfa() & \
- (THREAD_SIZE - 1)))
-# else
-# define CDEBUG_STACK() (THREAD_SIZE - \
- ((unsigned long)__builtin_frame_address(0) & \
- (THREAD_SIZE - 1)))
-# endif /* __ia64__ */
-
-#define __CHECK_STACK_WITH_LOC(file, func, line, msgdata, mask, cdls) \
-do { \
- if (unlikely(CDEBUG_STACK() > libcfs_stack)) { \
- LIBCFS_DEBUG_MSG_DATA_INIT(file, func, line, msgdata, \
- D_WARNING, NULL); \
- libcfs_stack = CDEBUG_STACK(); \
- libcfs_debug_msg(msgdata, "maximum lustre stack %u\n", \
- libcfs_stack); \
- (msgdata)->msg_mask = mask; \
- (msgdata)->msg_cdls = cdls; \
- dump_stack(); \
- /*panic("LBUG");*/ \
- } \
-} while (0)
-#else /* __x86_64__ */
-#define CDEBUG_STACK() (0L)
-#define __CHECK_STACK_WITH_LOC(file, func, line, msgdata, mask, cdls) \
- do {} while (0)
-#endif /* __x86_64__ */
-
-#define CFS_CHECK_STACK(msgdata, mask, cdls) \
- __CHECK_STACK_WITH_LOC(__FILE__, __func__, __LINE__, \
- msgdata, mask, cdls)
/**
* Filters out logging messages based on mask and subsystem.
*/
do { \
static struct libcfs_debug_msg_data msgdata; \
\
- __CHECK_STACK_WITH_LOC(file, func, line, &msgdata, mask, cdls); \
- \
if (cfs_cdebug_show(mask, DEBUG_SUBSYSTEM)) { \
LIBCFS_DEBUG_MSG_DATA_INIT(file, func, line, \
&msgdata, mask, cdls); \
unsigned int libcfs_debug_binary = 1;
-unsigned int libcfs_stack = 3 * THREAD_SIZE / 4;
-EXPORT_SYMBOL(libcfs_stack);
-
unsigned int libcfs_catastrophe;
EXPORT_SYMBOL(libcfs_catastrophe);
}
static void cfs_set_ptldebug_header(struct ptldebug_header *header,
- struct libcfs_debug_msg_data *msgdata,
- unsigned long stack)
+ struct libcfs_debug_msg_data *msgdata)
{
struct timespec64 ts;
*/
header->ph_sec = (u32)ts.tv_sec;
header->ph_usec = ts.tv_nsec / NSEC_PER_USEC;
- header->ph_stack = stack;
header->ph_pid = current->pid;
header->ph_line_num = msgdata->msg_line;
header->ph_extern_pid = 0;
* pins us to a particular CPU. This avoids an smp_processor_id()
* warning on Linux when debugging is enabled.
*/
- cfs_set_ptldebug_header(&header, msgdata, CDEBUG_STACK());
+ cfs_set_ptldebug_header(&header, msgdata);
if (!tcd) /* arch may not log in IRQ context */
goto console;
libcfs_catastrophe = 1;
smp_mb();
- cfs_set_ptldebug_header(&hdr, msgdata, CDEBUG_STACK());
+ cfs_set_ptldebug_header(&hdr, msgdata);
cfs_print_to_console(&hdr, D_EMERG, msgdata->msg_file, msgdata->msg_fn,
"%s", str);
#define kgnilnd_debug_msg(msgdata, mask, cdls, msg, fmt, a...) \
do { \
- CFS_CHECK_STACK(msgdata, mask, cdls); \
- \
if (((mask) & D_CANTMASK) != 0 || \
((libcfs_debug & (mask)) != 0 && \
(libcfs_subsystem_debug & DEBUG_SUBSYSTEM) != 0)) \
#define kgnilnd_debug_conn(msgdata, mask, cdls, conn, fmt, a...) \
do { \
- CFS_CHECK_STACK(msgdata, mask, cdls); \
- \
if (((mask) & D_CANTMASK) != 0 || \
((libcfs_debug & (mask)) != 0 && \
(libcfs_subsystem_debug & DEBUG_SUBSYSTEM) != 0)) \
#define kgnilnd_debug_tx(msgdata, mask, cdls, tx, fmt, a...) \
do { \
- CFS_CHECK_STACK(msgdata, mask, cdls); \
- \
if (((mask) & D_CANTMASK) != 0 || \
((libcfs_debug & (mask)) != 0 && \
(libcfs_subsystem_debug & DEBUG_SUBSYSTEM) != 0)) \
#define kgnilnd_api_rc_lbug(msgdata, rc, fmt, a...) \
do { \
- CFS_CHECK_STACK(msgdata, D_ERROR, NULL); \
/* we don't mask this - it is always at D_ERROR */ \
_kgnilnd_api_rc_lbug(kgnilnd_api_rc2str(rc), (rc), msgdata, fmt, ##a); \
} while (0)
*/
#ifdef LIBCFS_DEBUG
#define ldlm_lock_debug(msgdata, mask, cdls, lock, fmt, a...) do { \
- CFS_CHECK_STACK(msgdata, mask, cdls); \
- \
if (((mask) & D_CANTMASK) != 0 || \
((libcfs_debug & (mask)) != 0 && \
(libcfs_subsystem_debug & DEBUG_SUBSYSTEM) != 0)) \
*/
#define debug_req(msgdata, mask, cdls, req, fmt, a...) \
do { \
- CFS_CHECK_STACK(msgdata, mask, cdls); \
- \
if (((mask) & D_CANTMASK) != 0 || \
((libcfs_debug & (mask)) != 0 && \
(libcfs_subsystem_debug & DEBUG_SUBSYSTEM) != 0)) \
/* debugging macros */
#ifdef LIBCFS_DEBUG
#define lquota_lqe_debug(msgdata, mask, cdls, lqe, fmt, a...) do { \
- CFS_CHECK_STACK(msgdata, mask, cdls); \
- \
if (((mask) & D_CANTMASK) != 0 || \
((libcfs_debug & (mask)) != 0 && \
(libcfs_subsystem_debug & DEBUG_SUBSYSTEM) != 0)) \