2018-06-06 05:42:14 +03:00
// SPDX-License-Identifier: GPL-2.0
2005-04-17 02:20:36 +04:00
/*
2005-11-02 06:58:39 +03:00
* Copyright ( c ) 2000 - 2002 , 2005 Silicon Graphics , Inc .
* All Rights Reserved .
2005-04-17 02:20:36 +04:00
*/
# ifndef __XFS_ERROR_H__
# define __XFS_ERROR_H__
struct xfs_mount ;
2010-04-13 09:22:08 +04:00
extern void xfs_error_report ( const char * tag , int level , struct xfs_mount * mp ,
2018-01-08 21:51:25 +03:00
const char * filename , int linenum ,
xfs_failaddr_t failaddr ) ;
2010-04-13 09:22:08 +04:00
extern void xfs_corruption_error ( const char * tag , int level ,
2019-11-02 19:40:36 +03:00
struct xfs_mount * mp , const void * buf , size_t bufsize ,
2018-06-04 20:23:54 +03:00
const char * filename , int linenum ,
xfs_failaddr_t failaddr ) ;
2020-03-11 20:37:54 +03:00
void xfs_buf_corruption_error ( struct xfs_buf * bp , xfs_failaddr_t fa ) ;
2018-03-23 20:06:53 +03:00
extern void xfs_buf_verifier_error ( struct xfs_buf * bp , int error ,
2019-11-02 19:40:36 +03:00
const char * name , const void * buf , size_t bufsz ,
2018-03-23 20:06:53 +03:00
xfs_failaddr_t failaddr ) ;
2018-01-08 21:51:03 +03:00
extern void xfs_verifier_error ( struct xfs_buf * bp , int error ,
xfs_failaddr_t failaddr ) ;
2018-01-23 05:09:48 +03:00
extern void xfs_inode_verifier_error ( struct xfs_inode * ip , int error ,
2019-11-02 19:40:36 +03:00
const char * name , const void * buf , size_t bufsz ,
2018-01-23 05:09:48 +03:00
xfs_failaddr_t failaddr ) ;
2005-04-17 02:20:36 +04:00
# define XFS_ERROR_REPORT(e, lvl, mp) \
xfs_error_report ( e , lvl , mp , __FILE__ , __LINE__ , __return_address )
2018-06-04 20:23:54 +03:00
# define XFS_CORRUPTION_ERROR(e, lvl, mp, buf, bufsize) \
xfs_corruption_error ( e , lvl , mp , buf , bufsize , \
2005-04-17 02:20:36 +04:00
__FILE__ , __LINE__ , __return_address )
# define XFS_ERRLEVEL_OFF 0
# define XFS_ERRLEVEL_LOW 1
# define XFS_ERRLEVEL_HIGH 5
2018-01-08 21:51:26 +03:00
/* Dump 128 bytes of any corrupt buffer */
# define XFS_CORRUPTION_DUMP_LEN (128)
2008-08-13 10:17:37 +04:00
# ifdef DEBUG
2017-06-21 03:54:46 +03:00
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 ) ;
2017-06-21 03:54:47 +03:00
# define XFS_TEST_ERROR(expr, mp, tag) \
2017-06-21 03:54:46 +03:00
( ( expr ) | | xfs_errortag_test ( ( mp ) , # expr , __FILE__ , __LINE__ , ( tag ) ) )
2005-04-17 02:20:36 +04:00
2017-06-21 03:54:47 +03:00
extern int xfs_errortag_get ( struct xfs_mount * mp , unsigned int error_tag ) ;
2017-06-21 03:54:46 +03:00
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 ) ;
2005-04-17 02:20:36 +04:00
# else
2017-06-21 03:54:46 +03:00
# define xfs_errortag_init(mp) (0)
# define xfs_errortag_del(mp)
2017-06-21 03:54:47 +03:00
# define XFS_TEST_ERROR(expr, mp, tag) (expr)
2017-06-21 03:54:46 +03:00
# define xfs_errortag_set(mp, tag, val) (ENOSYS)
# define xfs_errortag_add(mp, tag) (ENOSYS)
# define xfs_errortag_clearall(mp) (ENOSYS)
2008-08-13 10:17:37 +04:00
# endif /* DEBUG */
2005-04-17 02:20:36 +04:00
/*
2011-03-07 02:02:35 +03:00
* XFS panic tags - - allow a call to xfs_alert_tag ( ) be turned into
* a panic by setting xfs_panic_mask in a sysctl .
2005-04-17 02:20:36 +04:00
*/
# define XFS_NO_PTAG 0
# define XFS_PTAG_IFLUSH 0x00000001
# define XFS_PTAG_LOGRES 0x00000002
# define XFS_PTAG_AILDELETE 0x00000004
# define XFS_PTAG_ERROR_REPORT 0x00000008
# define XFS_PTAG_SHUTDOWN_CORRUPT 0x00000010
# define XFS_PTAG_SHUTDOWN_IOERROR 0x00000020
# define XFS_PTAG_SHUTDOWN_LOGERROR 0x00000040
2006-09-28 05:03:20 +04:00
# define XFS_PTAG_FSBLOCK_ZERO 0x00000080
2019-02-01 20:12:20 +03:00
# define XFS_PTAG_VERIFIER_ERROR 0x00000100
2005-04-17 02:20:36 +04:00
2021-08-11 03:00:54 +03:00
# define XFS_PTAG_STRINGS \
{ XFS_NO_PTAG , " none " } , \
{ XFS_PTAG_IFLUSH , " iflush " } , \
{ XFS_PTAG_LOGRES , " logres " } , \
{ XFS_PTAG_AILDELETE , " aildelete " } , \
{ XFS_PTAG_ERROR_REPORT , " error_report " } , \
{ XFS_PTAG_SHUTDOWN_CORRUPT , " corrupt " } , \
{ XFS_PTAG_SHUTDOWN_IOERROR , " ioerror " } , \
{ XFS_PTAG_SHUTDOWN_LOGERROR , " logerror " } , \
{ XFS_PTAG_FSBLOCK_ZERO , " fsb_zero " } , \
{ XFS_PTAG_VERIFIER_ERROR , " verifier " }
2005-04-17 02:20:36 +04:00
# endif /* __XFS_ERROR_H__ */