1*1a59d1b8SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 21da177e4SLinus Torvalds /* 31868f4aaSDave Kleikamp * Copyright (C) International Business Machines Corp., 2000-2002 41868f4aaSDave Kleikamp * Portions Copyright (C) Christoph Hellwig, 2001-2002 51da177e4SLinus Torvalds */ 61da177e4SLinus Torvalds #ifndef _H_JFS_DEBUG 71da177e4SLinus Torvalds #define _H_JFS_DEBUG 81da177e4SLinus Torvalds 91da177e4SLinus Torvalds /* 101da177e4SLinus Torvalds * jfs_debug.h 111da177e4SLinus Torvalds * 121da177e4SLinus Torvalds * global debug message, data structure/macro definitions 131da177e4SLinus Torvalds * under control of CONFIG_JFS_DEBUG, CONFIG_JFS_STATISTICS; 141da177e4SLinus Torvalds */ 151da177e4SLinus Torvalds 161da177e4SLinus Torvalds /* 171da177e4SLinus Torvalds * Create /proc/fs/jfs if procfs is enabled andeither 181da177e4SLinus Torvalds * CONFIG_JFS_DEBUG or CONFIG_JFS_STATISTICS is defined 191da177e4SLinus Torvalds */ 201da177e4SLinus Torvalds #if defined(CONFIG_PROC_FS) && (defined(CONFIG_JFS_DEBUG) || defined(CONFIG_JFS_STATISTICS)) 211da177e4SLinus Torvalds #define PROC_FS_JFS 221868f4aaSDave Kleikamp extern void jfs_proc_init(void); 231868f4aaSDave Kleikamp extern void jfs_proc_clean(void); 241da177e4SLinus Torvalds #endif 251da177e4SLinus Torvalds 261da177e4SLinus Torvalds /* 271da177e4SLinus Torvalds * assert with traditional printf/panic 281da177e4SLinus Torvalds */ 291da177e4SLinus Torvalds #define assert(p) do { \ 301da177e4SLinus Torvalds if (!(p)) { \ 311da177e4SLinus Torvalds printk(KERN_CRIT "BUG at %s:%d assert(%s)\n", \ 321da177e4SLinus Torvalds __FILE__, __LINE__, #p); \ 331da177e4SLinus Torvalds BUG(); \ 341da177e4SLinus Torvalds } \ 351da177e4SLinus Torvalds } while (0) 361da177e4SLinus Torvalds 371da177e4SLinus Torvalds /* 381da177e4SLinus Torvalds * debug ON 391da177e4SLinus Torvalds * -------- 401da177e4SLinus Torvalds */ 411da177e4SLinus Torvalds #ifdef CONFIG_JFS_DEBUG 421da177e4SLinus Torvalds #define ASSERT(p) assert(p) 431da177e4SLinus Torvalds 441da177e4SLinus Torvalds /* printk verbosity */ 451da177e4SLinus Torvalds #define JFS_LOGLEVEL_ERR 1 461da177e4SLinus Torvalds #define JFS_LOGLEVEL_WARN 2 471da177e4SLinus Torvalds #define JFS_LOGLEVEL_DEBUG 3 481da177e4SLinus Torvalds #define JFS_LOGLEVEL_INFO 4 491da177e4SLinus Torvalds 501da177e4SLinus Torvalds extern int jfsloglevel; 511da177e4SLinus Torvalds 5207a3b8edSChristoph Hellwig int jfs_txanchor_proc_show(struct seq_file *m, void *v); 531da177e4SLinus Torvalds 541da177e4SLinus Torvalds /* information message: e.g., configuration, major event */ 551da177e4SLinus Torvalds #define jfs_info(fmt, arg...) do { \ 561da177e4SLinus Torvalds if (jfsloglevel >= JFS_LOGLEVEL_INFO) \ 571da177e4SLinus Torvalds printk(KERN_INFO fmt "\n", ## arg); \ 581da177e4SLinus Torvalds } while (0) 591da177e4SLinus Torvalds 601da177e4SLinus Torvalds /* debug message: ad hoc */ 611da177e4SLinus Torvalds #define jfs_debug(fmt, arg...) do { \ 621da177e4SLinus Torvalds if (jfsloglevel >= JFS_LOGLEVEL_DEBUG) \ 631da177e4SLinus Torvalds printk(KERN_DEBUG fmt "\n", ## arg); \ 641da177e4SLinus Torvalds } while (0) 651da177e4SLinus Torvalds 661da177e4SLinus Torvalds /* warn message: */ 671da177e4SLinus Torvalds #define jfs_warn(fmt, arg...) do { \ 681da177e4SLinus Torvalds if (jfsloglevel >= JFS_LOGLEVEL_WARN) \ 691da177e4SLinus Torvalds printk(KERN_WARNING fmt "\n", ## arg); \ 701da177e4SLinus Torvalds } while (0) 711da177e4SLinus Torvalds 721da177e4SLinus Torvalds /* error event message: e.g., i/o error */ 731da177e4SLinus Torvalds #define jfs_err(fmt, arg...) do { \ 741da177e4SLinus Torvalds if (jfsloglevel >= JFS_LOGLEVEL_ERR) \ 751da177e4SLinus Torvalds printk(KERN_ERR fmt "\n", ## arg); \ 761da177e4SLinus Torvalds } while (0) 771da177e4SLinus Torvalds 781da177e4SLinus Torvalds /* 791da177e4SLinus Torvalds * debug OFF 801da177e4SLinus Torvalds * --------- 811da177e4SLinus Torvalds */ 821da177e4SLinus Torvalds #else /* CONFIG_JFS_DEBUG */ 831da177e4SLinus Torvalds #define ASSERT(p) do {} while (0) 841da177e4SLinus Torvalds #define jfs_info(fmt, arg...) do {} while (0) 851da177e4SLinus Torvalds #define jfs_debug(fmt, arg...) do {} while (0) 861da177e4SLinus Torvalds #define jfs_warn(fmt, arg...) do {} while (0) 871da177e4SLinus Torvalds #define jfs_err(fmt, arg...) do {} while (0) 881da177e4SLinus Torvalds #endif /* CONFIG_JFS_DEBUG */ 891da177e4SLinus Torvalds 901da177e4SLinus Torvalds /* 911da177e4SLinus Torvalds * statistics 921da177e4SLinus Torvalds * ---------- 931da177e4SLinus Torvalds */ 941da177e4SLinus Torvalds #ifdef CONFIG_JFS_STATISTICS 9507a3b8edSChristoph Hellwig int jfs_lmstats_proc_show(struct seq_file *m, void *v); 9607a3b8edSChristoph Hellwig int jfs_txstats_proc_show(struct seq_file *m, void *v); 9707a3b8edSChristoph Hellwig int jfs_mpstat_proc_show(struct seq_file *m, void *v); 9807a3b8edSChristoph Hellwig int jfs_xtstat_proc_show(struct seq_file *m, void *v); 991868f4aaSDave Kleikamp 1001da177e4SLinus Torvalds #define INCREMENT(x) ((x)++) 1011da177e4SLinus Torvalds #define DECREMENT(x) ((x)--) 1021da177e4SLinus Torvalds #define HIGHWATERMARK(x,y) ((x) = max((x), (y))) 1031da177e4SLinus Torvalds #else 1041da177e4SLinus Torvalds #define INCREMENT(x) 1051da177e4SLinus Torvalds #define DECREMENT(x) 1061da177e4SLinus Torvalds #define HIGHWATERMARK(x,y) 1071da177e4SLinus Torvalds #endif /* CONFIG_JFS_STATISTICS */ 1081da177e4SLinus Torvalds 1091da177e4SLinus Torvalds #endif /* _H_JFS_DEBUG */ 110