xref: /linux-6.15/include/linux/vfsdebug.h (revision 8b17e540)
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