cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

xfs_message.c (2313B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Copyright (c) 2011 Red Hat, Inc.  All Rights Reserved.
      4 */
      5
      6#include "xfs.h"
      7#include "xfs_fs.h"
      8#include "xfs_error.h"
      9#include "xfs_shared.h"
     10#include "xfs_format.h"
     11#include "xfs_trans_resv.h"
     12#include "xfs_mount.h"
     13
     14/*
     15 * XFS logging functions
     16 */
     17static void
     18__xfs_printk(
     19	const char		*level,
     20	const struct xfs_mount	*mp,
     21	struct va_format	*vaf)
     22{
     23	if (mp && mp->m_super) {
     24		printk("%sXFS (%s): %pV\n", level, mp->m_super->s_id, vaf);
     25		return;
     26	}
     27	printk("%sXFS: %pV\n", level, vaf);
     28}
     29
     30void
     31xfs_printk_level(
     32	const char *kern_level,
     33	const struct xfs_mount *mp,
     34	const char *fmt, ...)
     35{
     36	struct va_format	vaf;
     37	va_list			args;
     38	int			level;
     39
     40	va_start(args, fmt);
     41	vaf.fmt = fmt;
     42	vaf.va = &args;
     43
     44	__xfs_printk(kern_level, mp, &vaf);
     45
     46	va_end(args);
     47
     48	if (!kstrtoint(kern_level, 0, &level) &&
     49	    level <= LOGLEVEL_ERR &&
     50	    xfs_error_level >= XFS_ERRLEVEL_HIGH)
     51		xfs_stack_trace();
     52}
     53
     54void
     55_xfs_alert_tag(
     56	const struct xfs_mount	*mp,
     57	uint32_t		panic_tag,
     58	const char		*fmt, ...)
     59{
     60	struct va_format	vaf;
     61	va_list			args;
     62	int			do_panic = 0;
     63
     64	if (xfs_panic_mask && (xfs_panic_mask & panic_tag)) {
     65		xfs_alert(mp, "Transforming an alert into a BUG.");
     66		do_panic = 1;
     67	}
     68
     69	va_start(args, fmt);
     70
     71	vaf.fmt = fmt;
     72	vaf.va = &args;
     73
     74	__xfs_printk(KERN_ALERT, mp, &vaf);
     75	va_end(args);
     76
     77	BUG_ON(do_panic);
     78}
     79
     80void
     81asswarn(
     82	struct xfs_mount	*mp,
     83	char			*expr,
     84	char			*file,
     85	int			line)
     86{
     87	xfs_warn(mp, "Assertion failed: %s, file: %s, line: %d",
     88		expr, file, line);
     89	WARN_ON(1);
     90}
     91
     92void
     93assfail(
     94	struct xfs_mount	*mp,
     95	char			*expr,
     96	char			*file,
     97	int			line)
     98{
     99	xfs_emerg(mp, "Assertion failed: %s, file: %s, line: %d",
    100		expr, file, line);
    101	if (xfs_globals.bug_on_assert)
    102		BUG();
    103	else
    104		WARN_ON(1);
    105}
    106
    107void
    108xfs_hex_dump(const void *p, int length)
    109{
    110	print_hex_dump(KERN_ALERT, "", DUMP_PREFIX_OFFSET, 16, 1, p, length, 1);
    111}
    112
    113void
    114xfs_buf_alert_ratelimited(
    115	struct xfs_buf		*bp,
    116	const char		*rlmsg,
    117	const char		*fmt,
    118	...)
    119{
    120	struct xfs_mount	*mp = bp->b_mount;
    121	struct va_format	vaf;
    122	va_list			args;
    123
    124	/* use the more aggressive per-target rate limit for buffers */
    125	if (!___ratelimit(&bp->b_target->bt_ioerror_rl, rlmsg))
    126		return;
    127
    128	va_start(args, fmt);
    129	vaf.fmt = fmt;
    130	vaf.va = &args;
    131	__xfs_printk(KERN_ALERT, mp, &vaf);
    132	va_end(args);
    133}