mirror of https://gitee.com/openkylin/linux.git
gfs2: Use fs_* functions instead of pr_* function where we can
Before this patch, various errors and messages were reported using the pr_* functions: pr_err, pr_warn, pr_info, etc., but that does not tell you which gfs2 mount had the problem, which is often vital to debugging. This patch changes the calls from pr_* to fs_* in most of the messages so that the file system id is printed along with the message. Signed-off-by: Bob Peterson <rpeterso@redhat.com>
This commit is contained in:
parent
b524abcc01
commit
e54c78a27f
|
@ -506,7 +506,8 @@ static int gfs2_dirent_gather(const struct gfs2_dirent *dent,
|
|||
* For now the most important thing is to check that the various sizes
|
||||
* are correct.
|
||||
*/
|
||||
static int gfs2_check_dirent(struct gfs2_dirent *dent, unsigned int offset,
|
||||
static int gfs2_check_dirent(struct gfs2_sbd *sdp,
|
||||
struct gfs2_dirent *dent, unsigned int offset,
|
||||
unsigned int size, unsigned int len, int first)
|
||||
{
|
||||
const char *msg = "gfs2_dirent too small";
|
||||
|
@ -528,12 +529,12 @@ static int gfs2_check_dirent(struct gfs2_dirent *dent, unsigned int offset,
|
|||
goto error;
|
||||
return 0;
|
||||
error:
|
||||
pr_warn("%s: %s (%s)\n",
|
||||
fs_warn(sdp, "%s: %s (%s)\n",
|
||||
__func__, msg, first ? "first in block" : "not first in block");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
static int gfs2_dirent_offset(const void *buf)
|
||||
static int gfs2_dirent_offset(struct gfs2_sbd *sdp, const void *buf)
|
||||
{
|
||||
const struct gfs2_meta_header *h = buf;
|
||||
int offset;
|
||||
|
@ -552,7 +553,8 @@ static int gfs2_dirent_offset(const void *buf)
|
|||
}
|
||||
return offset;
|
||||
wrong_type:
|
||||
pr_warn("%s: wrong block type %u\n", __func__, be32_to_cpu(h->mh_type));
|
||||
fs_warn(sdp, "%s: wrong block type %u\n", __func__,
|
||||
be32_to_cpu(h->mh_type));
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -566,7 +568,7 @@ static struct gfs2_dirent *gfs2_dirent_scan(struct inode *inode, void *buf,
|
|||
unsigned size;
|
||||
int ret = 0;
|
||||
|
||||
ret = gfs2_dirent_offset(buf);
|
||||
ret = gfs2_dirent_offset(GFS2_SB(inode), buf);
|
||||
if (ret < 0)
|
||||
goto consist_inode;
|
||||
|
||||
|
@ -574,7 +576,7 @@ static struct gfs2_dirent *gfs2_dirent_scan(struct inode *inode, void *buf,
|
|||
prev = NULL;
|
||||
dent = buf + offset;
|
||||
size = be16_to_cpu(dent->de_rec_len);
|
||||
if (gfs2_check_dirent(dent, offset, size, len, 1))
|
||||
if (gfs2_check_dirent(GFS2_SB(inode), dent, offset, size, len, 1))
|
||||
goto consist_inode;
|
||||
do {
|
||||
ret = scan(dent, name, opaque);
|
||||
|
@ -586,7 +588,8 @@ static struct gfs2_dirent *gfs2_dirent_scan(struct inode *inode, void *buf,
|
|||
prev = dent;
|
||||
dent = buf + offset;
|
||||
size = be16_to_cpu(dent->de_rec_len);
|
||||
if (gfs2_check_dirent(dent, offset, size, len, 0))
|
||||
if (gfs2_check_dirent(GFS2_SB(inode), dent, offset, size,
|
||||
len, 0))
|
||||
goto consist_inode;
|
||||
} while(1);
|
||||
|
||||
|
@ -1043,7 +1046,7 @@ static int dir_split_leaf(struct inode *inode, const struct qstr *name)
|
|||
len = BIT(dip->i_depth - be16_to_cpu(oleaf->lf_depth));
|
||||
half_len = len >> 1;
|
||||
if (!half_len) {
|
||||
pr_warn("i_depth %u lf_depth %u index %u\n",
|
||||
fs_warn(GFS2_SB(inode), "i_depth %u lf_depth %u index %u\n",
|
||||
dip->i_depth, be16_to_cpu(oleaf->lf_depth), index);
|
||||
gfs2_consist_inode(dip);
|
||||
error = -EIO;
|
||||
|
@ -1351,7 +1354,7 @@ static int gfs2_set_cookies(struct gfs2_sbd *sdp, struct buffer_head *bh,
|
|||
if (!sdp->sd_args.ar_loccookie)
|
||||
continue;
|
||||
offset = (char *)(darr[i]) -
|
||||
(bh->b_data + gfs2_dirent_offset(bh->b_data));
|
||||
(bh->b_data + gfs2_dirent_offset(sdp, bh->b_data));
|
||||
offset /= GFS2_MIN_DIRENT_SIZE;
|
||||
offset += leaf_nr * sdp->sd_max_dents_per_leaf;
|
||||
if (offset >= GFS2_USE_HASH_FLAG ||
|
||||
|
|
|
@ -494,7 +494,8 @@ static void finish_xmote(struct gfs2_glock *gl, unsigned int ret)
|
|||
do_xmote(gl, gh, LM_ST_UNLOCKED);
|
||||
break;
|
||||
default: /* Everything else */
|
||||
pr_err("wanted %u got %u\n", gl->gl_target, state);
|
||||
fs_err(gl->gl_name.ln_sbd, "wanted %u got %u\n",
|
||||
gl->gl_target, state);
|
||||
GLOCK_BUG_ON(gl, 1);
|
||||
}
|
||||
spin_unlock(&gl->gl_lockref.lock);
|
||||
|
@ -577,7 +578,7 @@ __acquires(&gl->gl_lockref.lock)
|
|||
gfs2_glock_queue_work(gl, 0);
|
||||
}
|
||||
else if (ret) {
|
||||
pr_err("lm_lock ret %d\n", ret);
|
||||
fs_err(sdp, "lm_lock ret %d\n", ret);
|
||||
GLOCK_BUG_ON(gl, !test_bit(SDF_SHUTDOWN,
|
||||
&sdp->sd_flags));
|
||||
}
|
||||
|
@ -1064,13 +1065,13 @@ __acquires(&gl->gl_lockref.lock)
|
|||
return;
|
||||
|
||||
trap_recursive:
|
||||
pr_err("original: %pSR\n", (void *)gh2->gh_ip);
|
||||
pr_err("pid: %d\n", pid_nr(gh2->gh_owner_pid));
|
||||
pr_err("lock type: %d req lock state : %d\n",
|
||||
fs_err(sdp, "original: %pSR\n", (void *)gh2->gh_ip);
|
||||
fs_err(sdp, "pid: %d\n", pid_nr(gh2->gh_owner_pid));
|
||||
fs_err(sdp, "lock type: %d req lock state : %d\n",
|
||||
gh2->gh_gl->gl_name.ln_type, gh2->gh_state);
|
||||
pr_err("new: %pSR\n", (void *)gh->gh_ip);
|
||||
pr_err("pid: %d\n", pid_nr(gh->gh_owner_pid));
|
||||
pr_err("lock type: %d req lock state : %d\n",
|
||||
fs_err(sdp, "new: %pSR\n", (void *)gh->gh_ip);
|
||||
fs_err(sdp, "pid: %d\n", pid_nr(gh->gh_owner_pid));
|
||||
fs_err(sdp, "lock type: %d req lock state : %d\n",
|
||||
gh->gh_gl->gl_name.ln_type, gh->gh_state);
|
||||
gfs2_dump_glock(NULL, gl);
|
||||
BUG();
|
||||
|
|
|
@ -177,14 +177,14 @@ static void gdlm_bast(void *arg, int mode)
|
|||
gfs2_glock_cb(gl, LM_ST_SHARED);
|
||||
break;
|
||||
default:
|
||||
pr_err("unknown bast mode %d\n", mode);
|
||||
fs_err(gl->gl_name.ln_sbd, "unknown bast mode %d\n", mode);
|
||||
BUG();
|
||||
}
|
||||
}
|
||||
|
||||
/* convert gfs lock-state to dlm lock-mode */
|
||||
|
||||
static int make_mode(const unsigned int lmstate)
|
||||
static int make_mode(struct gfs2_sbd *sdp, const unsigned int lmstate)
|
||||
{
|
||||
switch (lmstate) {
|
||||
case LM_ST_UNLOCKED:
|
||||
|
@ -196,7 +196,7 @@ static int make_mode(const unsigned int lmstate)
|
|||
case LM_ST_SHARED:
|
||||
return DLM_LOCK_PR;
|
||||
}
|
||||
pr_err("unknown LM state %d\n", lmstate);
|
||||
fs_err(sdp, "unknown LM state %d\n", lmstate);
|
||||
BUG();
|
||||
return -1;
|
||||
}
|
||||
|
@ -257,7 +257,7 @@ static int gdlm_lock(struct gfs2_glock *gl, unsigned int req_state,
|
|||
u32 lkf;
|
||||
char strname[GDLM_STRNAME_BYTES] = "";
|
||||
|
||||
req = make_mode(req_state);
|
||||
req = make_mode(gl->gl_name.ln_sbd, req_state);
|
||||
lkf = make_flags(gl, flags, req);
|
||||
gfs2_glstats_inc(gl, GFS2_LKS_DCOUNT);
|
||||
gfs2_sbstats_inc(gl, GFS2_LKS_DCOUNT);
|
||||
|
@ -309,7 +309,7 @@ static void gdlm_put_lock(struct gfs2_glock *gl)
|
|||
error = dlm_unlock(ls->ls_dlm, gl->gl_lksb.sb_lkid, DLM_LKF_VALBLK,
|
||||
NULL, gl);
|
||||
if (error) {
|
||||
pr_err("gdlm_unlock %x,%llx err=%d\n",
|
||||
fs_err(sdp, "gdlm_unlock %x,%llx err=%d\n",
|
||||
gl->gl_name.ln_type,
|
||||
(unsigned long long)gl->gl_name.ln_number, error);
|
||||
return;
|
||||
|
|
|
@ -101,12 +101,16 @@ static inline void gfs2_setbit(const struct gfs2_rbm *rbm, bool do_clone,
|
|||
cur_state = (*byte1 >> bit) & GFS2_BIT_MASK;
|
||||
|
||||
if (unlikely(!valid_change[new_state * 4 + cur_state])) {
|
||||
pr_warn("buf_blk = 0x%x old_state=%d, new_state=%d\n",
|
||||
struct gfs2_sbd *sdp = rbm->rgd->rd_sbd;
|
||||
|
||||
fs_warn(sdp, "buf_blk = 0x%x old_state=%d, new_state=%d\n",
|
||||
rbm->offset, cur_state, new_state);
|
||||
pr_warn("rgrp=0x%llx bi_start=0x%x\n",
|
||||
(unsigned long long)rbm->rgd->rd_addr, bi->bi_start);
|
||||
pr_warn("bi_offset=0x%x bi_len=0x%x\n",
|
||||
bi->bi_offset, bi->bi_len);
|
||||
fs_warn(sdp, "rgrp=0x%llx bi_start=0x%x biblk: 0x%llx\n",
|
||||
(unsigned long long)rbm->rgd->rd_addr, bi->bi_start,
|
||||
(unsigned long long)bi->bi_bh->b_blocknr);
|
||||
fs_warn(sdp, "bi_offset=0x%x bi_len=0x%x block=0x%llx\n",
|
||||
bi->bi_offset, bi->bi_len,
|
||||
(unsigned long long)gfs2_rbm_to_block(rbm));
|
||||
dump_stack();
|
||||
gfs2_consist_rgrpd(rbm->rgd);
|
||||
return;
|
||||
|
@ -738,11 +742,13 @@ void gfs2_clear_rgrpd(struct gfs2_sbd *sdp)
|
|||
|
||||
static void gfs2_rindex_print(const struct gfs2_rgrpd *rgd)
|
||||
{
|
||||
pr_info("ri_addr = %llu\n", (unsigned long long)rgd->rd_addr);
|
||||
pr_info("ri_length = %u\n", rgd->rd_length);
|
||||
pr_info("ri_data0 = %llu\n", (unsigned long long)rgd->rd_data0);
|
||||
pr_info("ri_data = %u\n", rgd->rd_data);
|
||||
pr_info("ri_bitbytes = %u\n", rgd->rd_bitbytes);
|
||||
struct gfs2_sbd *sdp = rgd->rd_sbd;
|
||||
|
||||
fs_info(sdp, "ri_addr = %llu\n", (unsigned long long)rgd->rd_addr);
|
||||
fs_info(sdp, "ri_length = %u\n", rgd->rd_length);
|
||||
fs_info(sdp, "ri_data0 = %llu\n", (unsigned long long)rgd->rd_data0);
|
||||
fs_info(sdp, "ri_data = %u\n", rgd->rd_data);
|
||||
fs_info(sdp, "ri_bitbytes = %u\n", rgd->rd_bitbytes);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2423,7 +2429,7 @@ int gfs2_alloc_blocks(struct gfs2_inode *ip, u64 *bn, unsigned int *nblocks,
|
|||
}
|
||||
}
|
||||
if (rbm.rgd->rd_free < *nblocks) {
|
||||
pr_warn("nblocks=%u\n", *nblocks);
|
||||
fs_warn(sdp, "nblocks=%u\n", *nblocks);
|
||||
goto rgrp_error;
|
||||
}
|
||||
|
||||
|
|
|
@ -74,13 +74,13 @@ int gfs2_trans_begin(struct gfs2_sbd *sdp, unsigned int blocks,
|
|||
return error;
|
||||
}
|
||||
|
||||
static void gfs2_print_trans(const struct gfs2_trans *tr)
|
||||
static void gfs2_print_trans(struct gfs2_sbd *sdp, const struct gfs2_trans *tr)
|
||||
{
|
||||
pr_warn("Transaction created at: %pSR\n", (void *)tr->tr_ip);
|
||||
pr_warn("blocks=%u revokes=%u reserved=%u touched=%u\n",
|
||||
fs_warn(sdp, "Transaction created at: %pSR\n", (void *)tr->tr_ip);
|
||||
fs_warn(sdp, "blocks=%u revokes=%u reserved=%u touched=%u\n",
|
||||
tr->tr_blocks, tr->tr_revokes, tr->tr_reserved,
|
||||
test_bit(TR_TOUCHED, &tr->tr_flags));
|
||||
pr_warn("Buf %u/%u Databuf %u/%u Revoke %u/%u\n",
|
||||
fs_warn(sdp, "Buf %u/%u Databuf %u/%u Revoke %u/%u\n",
|
||||
tr->tr_num_buf_new, tr->tr_num_buf_rm,
|
||||
tr->tr_num_databuf_new, tr->tr_num_databuf_rm,
|
||||
tr->tr_num_revoke, tr->tr_num_revoke_rm);
|
||||
|
@ -109,7 +109,7 @@ void gfs2_trans_end(struct gfs2_sbd *sdp)
|
|||
|
||||
if (gfs2_assert_withdraw(sdp, (nbuf <= tr->tr_blocks) &&
|
||||
(tr->tr_num_revoke <= tr->tr_revokes)))
|
||||
gfs2_print_trans(tr);
|
||||
gfs2_print_trans(sdp, tr);
|
||||
|
||||
gfs2_log_commit(sdp, tr);
|
||||
if (alloced && !test_bit(TR_ATTACHED, &tr->tr_flags))
|
||||
|
@ -225,12 +225,13 @@ void gfs2_trans_add_meta(struct gfs2_glock *gl, struct buffer_head *bh)
|
|||
set_bit(GLF_DIRTY, &bd->bd_gl->gl_flags);
|
||||
mh = (struct gfs2_meta_header *)bd->bd_bh->b_data;
|
||||
if (unlikely(mh->mh_magic != cpu_to_be32(GFS2_MAGIC))) {
|
||||
pr_err("Attempting to add uninitialised block to journal (inplace block=%lld)\n",
|
||||
fs_err(sdp, "Attempting to add uninitialised block to "
|
||||
"journal (inplace block=%lld)\n",
|
||||
(unsigned long long)bd->bd_bh->b_blocknr);
|
||||
BUG();
|
||||
}
|
||||
if (unlikely(state == SFS_FROZEN)) {
|
||||
printk(KERN_INFO "GFS2:adding buf while frozen\n");
|
||||
fs_info(sdp, "GFS2:adding buf while frozen\n");
|
||||
gfs2_assert_withdraw(sdp, 0);
|
||||
}
|
||||
gfs2_pin(sdp, bd->bd_bh);
|
||||
|
|
|
@ -86,7 +86,7 @@ static inline int gfs2_meta_check(struct gfs2_sbd *sdp,
|
|||
struct gfs2_meta_header *mh = (struct gfs2_meta_header *)bh->b_data;
|
||||
u32 magic = be32_to_cpu(mh->mh_magic);
|
||||
if (unlikely(magic != GFS2_MAGIC)) {
|
||||
pr_err("Magic number missing at %llu\n",
|
||||
fs_err(sdp, "Magic number missing at %llu\n",
|
||||
(unsigned long long)bh->b_blocknr);
|
||||
return -EIO;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue