1*8b17e540SMateusz Guzik /* SPDX-License-Identifier: GPL-2.0 */ 2*8b17e540SMateusz Guzik #ifndef LINUX_VFS_DEBUG_H 3*8b17e540SMateusz Guzik #define LINUX_VFS_DEBUG_H 1 4*8b17e540SMateusz Guzik 5*8b17e540SMateusz Guzik #include <linux/bug.h> 6*8b17e540SMateusz Guzik 7*8b17e540SMateusz Guzik struct inode; 8*8b17e540SMateusz Guzik 9*8b17e540SMateusz Guzik #ifdef CONFIG_DEBUG_VFS 10*8b17e540SMateusz Guzik void dump_inode(struct inode *inode, const char *reason); 11*8b17e540SMateusz Guzik 12*8b17e540SMateusz Guzik #define VFS_BUG_ON(cond) BUG_ON(cond) 13*8b17e540SMateusz Guzik #define VFS_WARN_ON(cond) (void)WARN_ON(cond) 14*8b17e540SMateusz Guzik #define VFS_WARN_ON_ONCE(cond) (void)WARN_ON_ONCE(cond) 15*8b17e540SMateusz Guzik #define VFS_WARN_ONCE(cond, format...) (void)WARN_ONCE(cond, format) 16*8b17e540SMateusz Guzik #define VFS_WARN(cond, format...) (void)WARN(cond, format) 17*8b17e540SMateusz Guzik 18*8b17e540SMateusz Guzik #define VFS_BUG_ON_INODE(cond, inode) ({ \ 19*8b17e540SMateusz Guzik if (unlikely(!!(cond))) { \ 20*8b17e540SMateusz Guzik dump_inode(inode, "VFS_BUG_ON_INODE(" #cond")");\ 21*8b17e540SMateusz Guzik BUG_ON(1); \ 22*8b17e540SMateusz Guzik } \ 23*8b17e540SMateusz Guzik }) 24*8b17e540SMateusz Guzik 25*8b17e540SMateusz Guzik #define VFS_WARN_ON_INODE(cond, inode) ({ \ 26*8b17e540SMateusz Guzik int __ret_warn = !!(cond); \ 27*8b17e540SMateusz Guzik \ 28*8b17e540SMateusz Guzik if (unlikely(__ret_warn)) { \ 29*8b17e540SMateusz Guzik dump_inode(inode, "VFS_WARN_ON_INODE(" #cond")");\ 30*8b17e540SMateusz Guzik WARN_ON(1); \ 31*8b17e540SMateusz Guzik } \ 32*8b17e540SMateusz Guzik unlikely(__ret_warn); \ 33*8b17e540SMateusz Guzik }) 34*8b17e540SMateusz Guzik #else 35*8b17e540SMateusz Guzik #define VFS_BUG_ON(cond) BUILD_BUG_ON_INVALID(cond) 36*8b17e540SMateusz Guzik #define VFS_WARN_ON(cond) BUILD_BUG_ON_INVALID(cond) 37*8b17e540SMateusz Guzik #define VFS_WARN_ON_ONCE(cond) BUILD_BUG_ON_INVALID(cond) 38*8b17e540SMateusz Guzik #define VFS_WARN_ONCE(cond, format...) BUILD_BUG_ON_INVALID(cond) 39*8b17e540SMateusz Guzik #define VFS_WARN(cond, format...) BUILD_BUG_ON_INVALID(cond) 40*8b17e540SMateusz Guzik 41*8b17e540SMateusz Guzik #define VFS_BUG_ON_INODE(cond, inode) VFS_BUG_ON(cond) 42*8b17e540SMateusz Guzik #define VFS_WARN_ON_INODE(cond, inode) BUILD_BUG_ON_INVALID(cond) 43*8b17e540SMateusz Guzik #endif /* CONFIG_DEBUG_VFS */ 44*8b17e540SMateusz Guzik 45*8b17e540SMateusz Guzik #endif 46