~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/fs/xfs/xfs_error.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 // SPDX-License-Identifier: GPL-2.0
  2 /*
  3  * Copyright (c) 2000-2002,2005 Silicon Graphics, Inc.
  4  * All Rights Reserved.
  5  */
  6 #ifndef __XFS_ERROR_H__
  7 #define __XFS_ERROR_H__
  8 
  9 struct xfs_mount;
 10 
 11 extern void xfs_error_report(const char *tag, int level, struct xfs_mount *mp,
 12                         const char *filename, int linenum,
 13                         xfs_failaddr_t failaddr);
 14 extern void xfs_corruption_error(const char *tag, int level,
 15                         struct xfs_mount *mp, const void *buf, size_t bufsize,
 16                         const char *filename, int linenum,
 17                         xfs_failaddr_t failaddr);
 18 void xfs_buf_corruption_error(struct xfs_buf *bp, xfs_failaddr_t fa);
 19 extern void xfs_buf_verifier_error(struct xfs_buf *bp, int error,
 20                         const char *name, const void *buf, size_t bufsz,
 21                         xfs_failaddr_t failaddr);
 22 extern void xfs_verifier_error(struct xfs_buf *bp, int error,
 23                         xfs_failaddr_t failaddr);
 24 extern void xfs_inode_verifier_error(struct xfs_inode *ip, int error,
 25                         const char *name, const void *buf, size_t bufsz,
 26                         xfs_failaddr_t failaddr);
 27 
 28 #define XFS_ERROR_REPORT(e, lvl, mp)    \
 29         xfs_error_report(e, lvl, mp, __FILE__, __LINE__, __return_address)
 30 #define XFS_CORRUPTION_ERROR(e, lvl, mp, buf, bufsize)  \
 31         xfs_corruption_error(e, lvl, mp, buf, bufsize, \
 32                              __FILE__, __LINE__, __return_address)
 33 
 34 #define XFS_ERRLEVEL_OFF        0
 35 #define XFS_ERRLEVEL_LOW        1
 36 #define XFS_ERRLEVEL_HIGH       5
 37 
 38 /* Dump 128 bytes of any corrupt buffer */
 39 #define XFS_CORRUPTION_DUMP_LEN         (128)
 40 
 41 #ifdef DEBUG
 42 extern int xfs_errortag_init(struct xfs_mount *mp);
 43 extern void xfs_errortag_del(struct xfs_mount *mp);
 44 extern bool xfs_errortag_test(struct xfs_mount *mp, const char *expression,
 45                 const char *file, int line, unsigned int error_tag);
 46 #define XFS_TEST_ERROR(expr, mp, tag)           \
 47         ((expr) || xfs_errortag_test((mp), #expr, __FILE__, __LINE__, (tag)))
 48 bool xfs_errortag_enabled(struct xfs_mount *mp, unsigned int tag);
 49 #define XFS_ERRORTAG_DELAY(mp, tag)             \
 50         do { \
 51                 might_sleep(); \
 52                 if (!xfs_errortag_enabled((mp), (tag))) \
 53                         break; \
 54                 xfs_warn_ratelimited((mp), \
 55 "Injecting %ums delay at file %s, line %d, on filesystem \"%s\"", \
 56                                 (mp)->m_errortag[(tag)], __FILE__, __LINE__, \
 57                                 (mp)->m_super->s_id); \
 58                 mdelay((mp)->m_errortag[(tag)]); \
 59         } while (0)
 60 
 61 extern int xfs_errortag_get(struct xfs_mount *mp, unsigned int error_tag);
 62 extern int xfs_errortag_set(struct xfs_mount *mp, unsigned int error_tag,
 63                 unsigned int tag_value);
 64 extern int xfs_errortag_add(struct xfs_mount *mp, unsigned int error_tag);
 65 extern int xfs_errortag_clearall(struct xfs_mount *mp);
 66 #else
 67 #define xfs_errortag_init(mp)                   (0)
 68 #define xfs_errortag_del(mp)
 69 #define XFS_TEST_ERROR(expr, mp, tag)           (expr)
 70 #define XFS_ERRORTAG_DELAY(mp, tag)             ((void)0)
 71 #define xfs_errortag_set(mp, tag, val)          (ENOSYS)
 72 #define xfs_errortag_add(mp, tag)               (ENOSYS)
 73 #define xfs_errortag_clearall(mp)               (ENOSYS)
 74 #endif /* DEBUG */
 75 
 76 /*
 77  * XFS panic tags -- allow a call to xfs_alert_tag() be turned into
 78  *                      a panic by setting fs.xfs.panic_mask in a sysctl.
 79  */
 80 #define         XFS_NO_PTAG                     0u
 81 #define         XFS_PTAG_IFLUSH                 (1u << 0)
 82 #define         XFS_PTAG_LOGRES                 (1u << 1)
 83 #define         XFS_PTAG_AILDELETE              (1u << 2)
 84 #define         XFS_PTAG_ERROR_REPORT           (1u << 3)
 85 #define         XFS_PTAG_SHUTDOWN_CORRUPT       (1u << 4)
 86 #define         XFS_PTAG_SHUTDOWN_IOERROR       (1u << 5)
 87 #define         XFS_PTAG_SHUTDOWN_LOGERROR      (1u << 6)
 88 #define         XFS_PTAG_FSBLOCK_ZERO           (1u << 7)
 89 #define         XFS_PTAG_VERIFIER_ERROR         (1u << 8)
 90 
 91 #define         XFS_PTAG_MASK   (XFS_PTAG_IFLUSH | \
 92                                  XFS_PTAG_LOGRES | \
 93                                  XFS_PTAG_AILDELETE | \
 94                                  XFS_PTAG_ERROR_REPORT | \
 95                                  XFS_PTAG_SHUTDOWN_CORRUPT | \
 96                                  XFS_PTAG_SHUTDOWN_IOERROR | \
 97                                  XFS_PTAG_SHUTDOWN_LOGERROR | \
 98                                  XFS_PTAG_FSBLOCK_ZERO | \
 99                                  XFS_PTAG_VERIFIER_ERROR)
100 
101 #define XFS_PTAG_STRINGS \
102         { XFS_NO_PTAG,                  "none" }, \
103         { XFS_PTAG_IFLUSH,              "iflush" }, \
104         { XFS_PTAG_LOGRES,              "logres" }, \
105         { XFS_PTAG_AILDELETE,           "aildelete" }, \
106         { XFS_PTAG_ERROR_REPORT ,       "error_report" }, \
107         { XFS_PTAG_SHUTDOWN_CORRUPT,    "corrupt" }, \
108         { XFS_PTAG_SHUTDOWN_IOERROR,    "ioerror" }, \
109         { XFS_PTAG_SHUTDOWN_LOGERROR,   "logerror" }, \
110         { XFS_PTAG_FSBLOCK_ZERO,        "fsb_zero" }, \
111         { XFS_PTAG_VERIFIER_ERROR,      "verifier" }
112 
113 #endif  /* __XFS_ERROR_H__ */
114 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php