cregit-Linux how code gets into the kernel

Release 4.10 fs/gfs2/util.c

Directory: fs/gfs2
/*
 * Copyright (C) Sistina Software, Inc.  1997-2003 All rights reserved.
 * Copyright (C) 2004-2006 Red Hat, Inc.  All rights reserved.
 *
 * This copyrighted material is made available to anyone wishing to use,
 * modify, copy, or redistribute it subject to the terms and conditions
 * of the GNU General Public License version 2.
 */


#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

#include <linux/spinlock.h>
#include <linux/completion.h>
#include <linux/buffer_head.h>
#include <linux/crc32.h>
#include <linux/gfs2_ondisk.h>
#include <linux/uaccess.h>

#include "gfs2.h"
#include "incore.h"
#include "glock.h"
#include "util.h"


struct kmem_cache *gfs2_glock_cachep __read_mostly;

struct kmem_cache *gfs2_glock_aspace_cachep __read_mostly;

struct kmem_cache *gfs2_inode_cachep __read_mostly;

struct kmem_cache *gfs2_bufdata_cachep __read_mostly;

struct kmem_cache *gfs2_rgrpd_cachep __read_mostly;

struct kmem_cache *gfs2_quotad_cachep __read_mostly;

struct kmem_cache *gfs2_qadata_cachep __read_mostly;

mempool_t *gfs2_page_pool __read_mostly;


void gfs2_assert_i(struct gfs2_sbd *sdp) { fs_emerg(sdp, "fatal assertion failed\n"); }

Contributors

PersonTokensPropCommitsCommitProp
david teiglanddavid teigland1482.35%150.00%
joe perchesjoe perches317.65%150.00%
Total17100.00%2100.00%


int gfs2_lm_withdraw(struct gfs2_sbd *sdp, const char *fmt, ...) { struct lm_lockstruct *ls = &sdp->sd_lockstruct; const struct lm_lockops *lm = ls->ls_ops; va_list args; struct va_format vaf; if (sdp->sd_args.ar_errors == GFS2_ERRORS_WITHDRAW && test_and_set_bit(SDF_SHUTDOWN, &sdp->sd_flags)) return 0; va_start(args, fmt); vaf.fmt = fmt; vaf.va = &args; fs_err(sdp, "%pV", &vaf); va_end(args); if (sdp->sd_args.ar_errors == GFS2_ERRORS_WITHDRAW) { fs_err(sdp, "about to withdraw this file system\n"); BUG_ON(sdp->sd_args.ar_debug); kobject_uevent(&sdp->sd_kobj, KOBJ_OFFLINE); if (!strcmp(sdp->sd_lockstruct.ls_ops->lm_proto_name, "lock_dlm")) wait_for_completion(&sdp->sd_wdack); if (lm->lm_unmount) { fs_err(sdp, "telling LM to unmount\n"); lm->lm_unmount(sdp); } set_bit(SDF_SKIP_DLM_UNLOCK, &sdp->sd_flags); fs_err(sdp, "withdrawn\n"); dump_stack(); } if (sdp->sd_args.ar_errors == GFS2_ERRORS_PANIC) panic("GFS2: fsid=%s: panic requested\n", sdp->sd_fsname); return -1; }

Contributors

PersonTokensPropCommitsCommitProp
steven whitehousesteven whitehouse15668.12%342.86%
robert s. petersonrobert s. peterson3816.59%114.29%
joe perchesjoe perches2510.92%228.57%
benjamin marzinskibenjamin marzinski104.37%114.29%
Total229100.00%7100.00%

/** * gfs2_assert_withdraw_i - Cause the machine to withdraw if @assertion is false * Returns: -1 if this call withdrew the machine, * -2 if it was already withdrawn */
int gfs2_assert_withdraw_i(struct gfs2_sbd *sdp, char *assertion, const char *function, char *file, unsigned int line) { int me; me = gfs2_lm_withdraw(sdp, "fatal: assertion \"%s\" failed\n" " function = %s, file = %s, line = %u\n", assertion, function, file, line); dump_stack(); return (me) ? -1 : -2; }

Contributors

PersonTokensPropCommitsCommitProp
david teiglanddavid teigland5791.94%133.33%
steven whitehousesteven whitehouse34.84%133.33%
joe perchesjoe perches23.23%133.33%
Total62100.00%3100.00%

/** * gfs2_assert_warn_i - Print a message to the console if @assertion is false * Returns: -1 if we printed something * -2 if we didn't */
int gfs2_assert_warn_i(struct gfs2_sbd *sdp, char *assertion, const char *function, char *file, unsigned int line) { if (time_before(jiffies, sdp->sd_last_warning + gfs2_tune_get(sdp, gt_complain_secs) * HZ)) return -2; if (sdp->sd_args.ar_errors == GFS2_ERRORS_WITHDRAW) fs_warn(sdp, "warning: assertion \"%s\" failed at function = %s, file = %s, line = %u\n", assertion, function, file, line); if (sdp->sd_args.ar_debug) BUG(); else dump_stack(); if (sdp->sd_args.ar_errors == GFS2_ERRORS_PANIC) panic("GFS2: fsid=%s: warning: assertion \"%s\" failed\n" "GFS2: fsid=%s: function = %s, file = %s, line = %u\n", sdp->sd_fsname, assertion, sdp->sd_fsname, function, file, line); sdp->sd_last_warning = jiffies; return -1; }

Contributors

PersonTokensPropCommitsCommitProp
david teiglanddavid teigland8463.16%125.00%
robert s. petersonrobert s. peterson4231.58%125.00%
steven whitehousesteven whitehouse43.01%125.00%
joe perchesjoe perches32.26%125.00%
Total133100.00%4100.00%

/** * gfs2_consist_i - Flag a filesystem consistency error and withdraw * Returns: -1 if this call withdrew the machine, * 0 if it was already withdrawn */
int gfs2_consist_i(struct gfs2_sbd *sdp, int cluster_wide, const char *function, char *file, unsigned int line) { int rv; rv = gfs2_lm_withdraw(sdp, "fatal: filesystem consistency error - function = %s, file = %s, line = %u\n", function, file, line); return rv; }

Contributors

PersonTokensPropCommitsCommitProp
david teiglanddavid teigland4697.87%150.00%
joe perchesjoe perches12.13%150.00%
Total47100.00%2100.00%

/** * gfs2_consist_inode_i - Flag an inode consistency error and withdraw * Returns: -1 if this call withdrew the machine, * 0 if it was already withdrawn */
int gfs2_consist_inode_i(struct gfs2_inode *ip, int cluster_wide, const char *function, char *file, unsigned int line) { struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode); int rv; rv = gfs2_lm_withdraw(sdp, "fatal: filesystem consistency error\n" " inode = %llu %llu\n" " function = %s, file = %s, line = %u\n", (unsigned long long)ip->i_no_formal_ino, (unsigned long long)ip->i_no_addr, function, file, line); return rv; }

Contributors

PersonTokensPropCommitsCommitProp
david teiglanddavid teigland6075.00%120.00%
steven whitehousesteven whitehouse1721.25%360.00%
joe perchesjoe perches33.75%120.00%
Total80100.00%5100.00%

/** * gfs2_consist_rgrpd_i - Flag a RG consistency error and withdraw * Returns: -1 if this call withdrew the machine, * 0 if it was already withdrawn */
int gfs2_consist_rgrpd_i(struct gfs2_rgrpd *rgd, int cluster_wide, const char *function, char *file, unsigned int line) { struct gfs2_sbd *sdp = rgd->rd_sbd; int rv; rv = gfs2_lm_withdraw(sdp, "fatal: filesystem consistency error\n" " RG = %llu\n" " function = %s, file = %s, line = %u\n", (unsigned long long)rgd->rd_addr, function, file, line); return rv; }

Contributors

PersonTokensPropCommitsCommitProp
david teiglanddavid teigland5886.57%125.00%
steven whitehousesteven whitehouse68.96%250.00%
joe perchesjoe perches34.48%125.00%
Total67100.00%4100.00%

/** * gfs2_meta_check_ii - Flag a magic number consistency error and withdraw * Returns: -1 if this call withdrew the machine, * -2 if it was already withdrawn */
int gfs2_meta_check_ii(struct gfs2_sbd *sdp, struct buffer_head *bh, const char *type, const char *function, char *file, unsigned int line) { int me; me = gfs2_lm_withdraw(sdp, "fatal: invalid metadata block\n" " bh = %llu (%s)\n" " function = %s, file = %s, line = %u\n", (unsigned long long)bh->b_blocknr, type, function, file, line); return (me) ? -1 : -2; }

Contributors

PersonTokensPropCommitsCommitProp
david teiglanddavid teigland6992.00%133.33%
joe perchesjoe perches34.00%133.33%
steven whitehousesteven whitehouse34.00%133.33%
Total75100.00%3100.00%

/** * gfs2_metatype_check_ii - Flag a metadata type consistency error and withdraw * Returns: -1 if this call withdrew the machine, * -2 if it was already withdrawn */
int gfs2_metatype_check_ii(struct gfs2_sbd *sdp, struct buffer_head *bh, u16 type, u16 t, const char *function, char *file, unsigned int line) { int me; me = gfs2_lm_withdraw(sdp, "fatal: invalid metadata block\n" " bh = %llu (type: exp=%u, found=%u)\n" " function = %s, file = %s, line = %u\n", (unsigned long long)bh->b_blocknr, type, t, function, file, line); return (me) ? -1 : -2; }

Contributors

PersonTokensPropCommitsCommitProp
david teiglanddavid teigland7089.74%125.00%
steven whitehousesteven whitehouse56.41%250.00%
joe perchesjoe perches33.85%125.00%
Total78100.00%4100.00%

/** * gfs2_io_error_i - Flag an I/O error and withdraw * Returns: -1 if this call withdrew the machine, * 0 if it was already withdrawn */
int gfs2_io_error_i(struct gfs2_sbd *sdp, const char *function, char *file, unsigned int line) { int rv; rv = gfs2_lm_withdraw(sdp, "fatal: I/O error\n" " function = %s, file = %s, line = %u\n", function, file, line); return rv; }

Contributors

PersonTokensPropCommitsCommitProp
david teiglanddavid teigland4395.56%150.00%
joe perchesjoe perches24.44%150.00%
Total45100.00%2100.00%

/** * gfs2_io_error_bh_i - Flag a buffer I/O error and withdraw * Returns: -1 if this call withdrew the machine, * 0 if it was already withdrawn */
int gfs2_io_error_bh_i(struct gfs2_sbd *sdp, struct buffer_head *bh, const char *function, char *file, unsigned int line) { int rv; rv = gfs2_lm_withdraw(sdp, "fatal: I/O error\n" " block = %llu\n" " function = %s, file = %s, line = %u\n", (unsigned long long)bh->b_blocknr, function, file, line); return rv; }

Contributors

PersonTokensPropCommitsCommitProp
david teiglanddavid teigland5490.00%133.33%
steven whitehousesteven whitehouse35.00%133.33%
joe perchesjoe perches35.00%133.33%
Total60100.00%3100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
david teiglanddavid teigland59560.28%13.70%
steven whitehousesteven whitehouse22422.70%1555.56%
robert s. petersonrobert s. peterson929.32%414.81%
joe perchesjoe perches585.88%311.11%
benjamin marzinskibenjamin marzinski101.01%13.70%
christoph lameterchristoph lameter60.61%13.70%
linus torvaldslinus torvalds10.10%13.70%
fabio massimo di nittofabio massimo di nitto10.10%13.70%
Total987100.00%27100.00%
Directory: fs/gfs2
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.