linux/fs/xfs/xfs_error.h

// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (c) 2000-2002,2005 Silicon Graphics, Inc.
 * All Rights Reserved.
 */
#ifndef	__XFS_ERROR_H__
#define __XFS_ERROR_H__

struct xfs_mount;

extern void xfs_error_report(const char *tag, int level, struct xfs_mount *mp,
			const char *filename, int linenum,
			xfs_failaddr_t failaddr);
extern void xfs_corruption_error(const char *tag, int level,
			struct xfs_mount *mp, const void *buf, size_t bufsize,
			const char *filename, int linenum,
			xfs_failaddr_t failaddr);
void xfs_buf_corruption_error(struct xfs_buf *bp, xfs_failaddr_t fa);
extern void xfs_buf_verifier_error(struct xfs_buf *bp, int error,
			const char *name, const void *buf, size_t bufsz,
			xfs_failaddr_t failaddr);
extern void xfs_verifier_error(struct xfs_buf *bp, int error,
			xfs_failaddr_t failaddr);
extern void xfs_inode_verifier_error(struct xfs_inode *ip, int error,
			const char *name, const void *buf, size_t bufsz,
			xfs_failaddr_t failaddr);

#define XFS_ERROR_REPORT(e, lvl, mp)
#define XFS_CORRUPTION_ERROR(e, lvl, mp, buf, bufsize)

#define XFS_ERRLEVEL_OFF
#define XFS_ERRLEVEL_LOW
#define XFS_ERRLEVEL_HIGH

/* Dump 128 bytes of any corrupt buffer */
#define XFS_CORRUPTION_DUMP_LEN

#ifdef DEBUG
extern int xfs_errortag_init(struct xfs_mount *mp);
extern void xfs_errortag_del(struct xfs_mount *mp);
extern bool xfs_errortag_test(struct xfs_mount *mp, const char *expression,
		const char *file, int line, unsigned int error_tag);
#define XFS_TEST_ERROR(expr, mp, tag)
bool xfs_errortag_enabled(struct xfs_mount *mp, unsigned int tag);
#define XFS_ERRORTAG_DELAY(mp, tag)

extern int xfs_errortag_get(struct xfs_mount *mp, unsigned int error_tag);
extern int xfs_errortag_set(struct xfs_mount *mp, unsigned int error_tag,
		unsigned int tag_value);
extern int xfs_errortag_add(struct xfs_mount *mp, unsigned int error_tag);
extern int xfs_errortag_clearall(struct xfs_mount *mp);
#else
#define xfs_errortag_init
#define xfs_errortag_del
#define XFS_TEST_ERROR
#define XFS_ERRORTAG_DELAY
#define xfs_errortag_set
#define xfs_errortag_add
#define xfs_errortag_clearall
#endif /* DEBUG */

/*
 * XFS panic tags -- allow a call to xfs_alert_tag() be turned into
 *			a panic by setting fs.xfs.panic_mask in a sysctl.
 */
#define XFS_NO_PTAG
#define XFS_PTAG_IFLUSH
#define XFS_PTAG_LOGRES
#define XFS_PTAG_AILDELETE
#define XFS_PTAG_ERROR_REPORT
#define XFS_PTAG_SHUTDOWN_CORRUPT
#define XFS_PTAG_SHUTDOWN_IOERROR
#define XFS_PTAG_SHUTDOWN_LOGERROR
#define XFS_PTAG_FSBLOCK_ZERO
#define XFS_PTAG_VERIFIER_ERROR

#define XFS_PTAG_MASK

#define XFS_PTAG_STRINGS

#endif	/* __XFS_ERROR_H__ */