From: Fan Yong Date: Wed, 22 Oct 2014 21:30:23 +0000 (+0800) Subject: LU-6102 osd: log message when trigger OI scrub X-Git-Tag: 2.6.93~19 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=bd6cce5b0d88523e6ab629a60b776347f9212cd9 LU-6102 osd: log message when trigger OI scrub These log messages can give us more information about why the OI scrub is triggered. Signed-off-by: Fan Yong Change-Id: I4229fd41c61b4de9a8ad00c486ba92b5037db3a1 Reviewed-on: http://review.whamcloud.com/13314 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Lai Siyao Reviewed-by: Oleg Drokin --- diff --git a/lustre/osd-ldiskfs/osd_handler.c b/lustre/osd-ldiskfs/osd_handler.c index 2f93f70..39a26cf 100644 --- a/lustre/osd-ldiskfs/osd_handler.c +++ b/lustre/osd-ldiskfs/osd_handler.c @@ -349,6 +349,8 @@ static struct inode *osd_iget_check(struct osd_thread_info *info, check_oi: if (rc != 0) { + struct osd_inode_id saved_id = *id; + LASSERTF(rc == -ESTALE || rc == -ENOENT, "rc = %d\n", rc); rc = osd_oi_lookup(info, dev, fid, id, OI_CHECK_FLD); @@ -370,10 +372,22 @@ check_oi: * to distinguish the 1st case from the 2nd case. */ if (rc == 0) { if (!IS_ERR(inode) && inode->i_generation != 0 && - inode->i_generation == id->oii_gen) + inode->i_generation == id->oii_gen) { rc = -ENOENT; - else + } else { + __u32 level = D_LFSCK; + rc = -EREMCHG; + if (!thread_is_running(&dev->od_scrub.os_thread)) + level |= D_CONSOLE; + + CDEBUG(level, "%s: the OI mapping for the FID " + DFID" become inconsistent, the given ID " + "%u/%u, the ID in OI mapping %u/%u\n", + osd_name(dev), PFID(fid), + saved_id.oii_ino, saved_id.oii_gen, + id->oii_ino, id->oii_ino); + } } } else { if (id->oii_gen == OSD_OII_NOGEN) @@ -508,6 +522,8 @@ static int osd_check_lma(const struct lu_env *env, struct osd_object *obj) } if (fid != NULL && unlikely(!lu_fid_eq(rfid, fid))) { + __u32 level = D_LFSCK; + if (fid_is_idif(rfid) && fid_is_idif(fid)) { struct ost_id *oi = &info->oti_ostid; struct lu_fid *fid1 = &info->oti_fid3; @@ -531,9 +547,13 @@ static int osd_check_lma(const struct lu_env *env, struct osd_object *obj) } } - CDEBUG(D_INODE, "%s: FID "DFID" != self_fid "DFID"\n", - osd_name(osd), PFID(rfid), PFID(fid)); + rc = -EREMCHG; + if (!thread_is_running(&osd->od_scrub.os_thread)) + level |= D_CONSOLE; + + CDEBUG(level, "%s: FID "DFID" != self_fid "DFID"\n", + osd_name(osd), PFID(rfid), PFID(fid)); } RETURN(rc); @@ -638,9 +658,9 @@ trigger: * whole device. */ result = osd_scrub_start(dev, SS_AUTO_FULL | SS_CLEAR_DRYRUN | SS_CLEAR_FAILOUT); - LCONSOLE_WARN("%.16s: trigger OI scrub by RPC " - "for "DFID", rc = %d [1]\n", - osd_name(dev), PFID(fid),result); + CDEBUG(D_LFSCK | D_CONSOLE, "%.16s: trigger OI " + "scrub by RPC for "DFID", rc = %d [1]\n", + osd_name(dev), PFID(fid),result); if (result == 0 || result == -EALREADY) result = -EINPROGRESS; else @@ -4185,10 +4205,10 @@ again: if (!dev->od_noscrub && ++once == 1) { rc = osd_scrub_start(dev, SS_AUTO_PARTIAL | SS_CLEAR_DRYRUN | SS_CLEAR_FAILOUT); - LCONSOLE_WARN("%.16s: trigger OI scrub by RPC for "DFID - ", rc = %d [2]\n", - LDISKFS_SB(osd_sb(dev))->s_es->s_volume_name, - PFID(fid), rc); + CDEBUG(D_LFSCK | D_CONSOLE, "%.16s: trigger OI scrub by RPC " + "for "DFID", rc = %d [2]\n", + LDISKFS_SB(osd_sb(dev))->s_es->s_volume_name, + PFID(fid), rc); if (rc == 0 || rc == -EALREADY) goto again; }