Whamcloud - gitweb
LU-6102 osd: log message when trigger OI scrub 14/13314/3
authorFan Yong <fan.yong@intel.com>
Wed, 22 Oct 2014 21:30:23 +0000 (05:30 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 22 Jan 2015 20:07:47 +0000 (20:07 +0000)
These log messages can give us more information about why
the OI scrub is triggered.

Signed-off-by: Fan Yong <fan.yong@intel.com>
Change-Id: I4229fd41c61b4de9a8ad00c486ba92b5037db3a1
Reviewed-on: http://review.whamcloud.com/13314
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Lai Siyao <lai.siyao@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/osd-ldiskfs/osd_handler.c

index 2f93f70..39a26cf 100644 (file)
@@ -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;
        }