mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	Certain uses of "do once" functionality reside outside of fast path,
and so do not require jump label patching via static keys, making
existing DO_ONCE undesirable in such cases.
Replace uses of __section(".data.once") with DO_ONCE_LITE(_IF)?
This patch changes the return values of xfs_printk_once, printk_once,
and printk_deferred_once. Before, they returned whether the print was
performed, but now, they always return true. This is okay because the
return values of the following macros are entirely ignored throughout
the kernel:
- xfs_printk_once
- xfs_warn_once
- xfs_notice_once
- xfs_info_once
- printk_once
- pr_emerg_once
- pr_alert_once
- pr_crit_once
- pr_err_once
- pr_warn_once
- pr_notice_once
- pr_info_once
- pr_devel_once
- pr_debug_once
- printk_deferred_once
- orc_warn
Changes
v3:
  - Expand commit message to explain why changing return values of
    xfs_printk_once, printk_once, printk_deferred_once is benign
v2:
  - Fix i386 build warnings
Signed-off-by: Tanner Love <tannerlove@google.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Acked-by: Mahesh Bandewar <maheshb@google.com>
Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
		
	
			
		
			
				
	
	
		
			80 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0 */
 | 
						|
#ifndef __XFS_MESSAGE_H
 | 
						|
#define __XFS_MESSAGE_H 1
 | 
						|
 | 
						|
#include <linux/once_lite.h>
 | 
						|
 | 
						|
struct xfs_mount;
 | 
						|
 | 
						|
extern __printf(2, 3)
 | 
						|
void xfs_emerg(const struct xfs_mount *mp, const char *fmt, ...);
 | 
						|
extern __printf(2, 3)
 | 
						|
void xfs_alert(const struct xfs_mount *mp, const char *fmt, ...);
 | 
						|
extern __printf(3, 4)
 | 
						|
void xfs_alert_tag(const struct xfs_mount *mp, int tag, const char *fmt, ...);
 | 
						|
extern __printf(2, 3)
 | 
						|
void xfs_crit(const struct xfs_mount *mp, const char *fmt, ...);
 | 
						|
extern __printf(2, 3)
 | 
						|
void xfs_err(const struct xfs_mount *mp, const char *fmt, ...);
 | 
						|
extern __printf(2, 3)
 | 
						|
void xfs_warn(const struct xfs_mount *mp, const char *fmt, ...);
 | 
						|
extern __printf(2, 3)
 | 
						|
void xfs_notice(const struct xfs_mount *mp, const char *fmt, ...);
 | 
						|
extern __printf(2, 3)
 | 
						|
void xfs_info(const struct xfs_mount *mp, const char *fmt, ...);
 | 
						|
 | 
						|
#ifdef DEBUG
 | 
						|
extern __printf(2, 3)
 | 
						|
void xfs_debug(const struct xfs_mount *mp, const char *fmt, ...);
 | 
						|
#else
 | 
						|
static inline __printf(2, 3)
 | 
						|
void xfs_debug(const struct xfs_mount *mp, const char *fmt, ...)
 | 
						|
{
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#define xfs_printk_ratelimited(func, dev, fmt, ...)			\
 | 
						|
do {									\
 | 
						|
	static DEFINE_RATELIMIT_STATE(_rs,				\
 | 
						|
				      DEFAULT_RATELIMIT_INTERVAL,	\
 | 
						|
				      DEFAULT_RATELIMIT_BURST);		\
 | 
						|
	if (__ratelimit(&_rs))						\
 | 
						|
		func(dev, fmt, ##__VA_ARGS__);				\
 | 
						|
} while (0)
 | 
						|
 | 
						|
#define xfs_printk_once(func, dev, fmt, ...)			\
 | 
						|
	DO_ONCE_LITE(func, dev, fmt, ##__VA_ARGS__)
 | 
						|
 | 
						|
#define xfs_emerg_ratelimited(dev, fmt, ...)				\
 | 
						|
	xfs_printk_ratelimited(xfs_emerg, dev, fmt, ##__VA_ARGS__)
 | 
						|
#define xfs_alert_ratelimited(dev, fmt, ...)				\
 | 
						|
	xfs_printk_ratelimited(xfs_alert, dev, fmt, ##__VA_ARGS__)
 | 
						|
#define xfs_crit_ratelimited(dev, fmt, ...)				\
 | 
						|
	xfs_printk_ratelimited(xfs_crit, dev, fmt, ##__VA_ARGS__)
 | 
						|
#define xfs_err_ratelimited(dev, fmt, ...)				\
 | 
						|
	xfs_printk_ratelimited(xfs_err, dev, fmt, ##__VA_ARGS__)
 | 
						|
#define xfs_warn_ratelimited(dev, fmt, ...)				\
 | 
						|
	xfs_printk_ratelimited(xfs_warn, dev, fmt, ##__VA_ARGS__)
 | 
						|
#define xfs_notice_ratelimited(dev, fmt, ...)				\
 | 
						|
	xfs_printk_ratelimited(xfs_notice, dev, fmt, ##__VA_ARGS__)
 | 
						|
#define xfs_info_ratelimited(dev, fmt, ...)				\
 | 
						|
	xfs_printk_ratelimited(xfs_info, dev, fmt, ##__VA_ARGS__)
 | 
						|
#define xfs_debug_ratelimited(dev, fmt, ...)				\
 | 
						|
	xfs_printk_ratelimited(xfs_debug, dev, fmt, ##__VA_ARGS__)
 | 
						|
 | 
						|
#define xfs_warn_once(dev, fmt, ...)				\
 | 
						|
	xfs_printk_once(xfs_warn, dev, fmt, ##__VA_ARGS__)
 | 
						|
#define xfs_notice_once(dev, fmt, ...)				\
 | 
						|
	xfs_printk_once(xfs_notice, dev, fmt, ##__VA_ARGS__)
 | 
						|
#define xfs_info_once(dev, fmt, ...)				\
 | 
						|
	xfs_printk_once(xfs_info, dev, fmt, ##__VA_ARGS__)
 | 
						|
 | 
						|
void assfail(struct xfs_mount *mp, char *expr, char *f, int l);
 | 
						|
void asswarn(struct xfs_mount *mp, char *expr, char *f, int l);
 | 
						|
 | 
						|
extern void xfs_hex_dump(const void *p, int length);
 | 
						|
 | 
						|
void xfs_buf_alert_ratelimited(struct xfs_buf *bp, const char *rlmsg,
 | 
						|
			       const char *fmt, ...);
 | 
						|
 | 
						|
#endif	/* __XFS_MESSAGE_H */
 |