Whamcloud - gitweb
LU-14175 osd: print inode number with FID in OI scrub 53/43153/4
authorAndreas Dilger <adilger@whamcloud.com>
Sat, 27 Mar 2021 19:50:33 +0000 (13:50 -0600)
committerOleg Drokin <green@whamcloud.com>
Thu, 15 Apr 2021 06:30:20 +0000 (06:30 +0000)
When debugging OI Scrub problems, also print the inode number
with the FID so that it is easier to find the problematic inode.
Otherwise, if the OI is broken it is not easy to find the inode
in question without a full filesystem scan.

Test-Parameters: trivial testlist=sanity-scrub,sanity-lfsck
Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: I217624ff2116326f86e053bcfacc6f19873ebbe5
Reviewed-on: https://review.whamcloud.com/43153
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Lai Siyao <lai.siyao@whamcloud.com>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/osd-ldiskfs/osd_handler.c
lustre/osd-zfs/osd_index.c
lustre/osd-zfs/osd_object.c

index acf36f5..04984f5 100644 (file)
@@ -1271,8 +1271,9 @@ trigger:
 
 join:
        rc1 = osd_scrub_start(env, dev, flags);
-       LCONSOLE_WARN("%s: trigger OI scrub by RPC for the " DFID" with flags "
-                     "0x%x, rc = %d\n", osd_name(dev), PFID(fid), flags, rc1);
+       CDEBUG_LIMIT(D_LFSCK | D_CONSOLE | D_WARNING,
+                    "%s: trigger OI scrub by RPC for "DFID"/%u with flags %#x: rc = %d\n",
+                    osd_name(dev), PFID(fid), id->oii_ino, flags, rc1);
        if (rc1 && rc1 != -EALREADY)
                GOTO(out, result = -EREMCHG);
 
@@ -5850,9 +5851,9 @@ trigger:
        if (dev->od_auto_scrub_interval != AS_NEVER && ++once == 1) {
                rc = osd_scrub_start(oti->oti_env, dev, SS_AUTO_PARTIAL |
                                     SS_CLEAR_DRYRUN | SS_CLEAR_FAILOUT);
-               CDEBUG(D_LFSCK | D_CONSOLE | D_WARNING,
-                      "%s: trigger partial OI scrub for RPC inconsistency checking FID "DFID": rc = %d\n",
-                      osd_dev2name(dev), PFID(fid), rc);
+               CDEBUG_LIMIT(D_LFSCK | D_CONSOLE | D_WARNING,
+                            "%s: trigger partial OI scrub for RPC inconsistency, checking FID "DFID"/%u: rc = %d\n",
+                            osd_dev2name(dev), PFID(fid), id->oii_ino, rc);
                if (rc == 0 || rc == -EALREADY)
                        goto again;
        }
index 9f4ee37..b67d383 100644 (file)
@@ -623,10 +623,9 @@ trigger:
        if (osd->od_auto_scrub_interval != AS_NEVER && ++once == 1) {
                rc = osd_scrub_start(env, osd, SS_AUTO_FULL |
                                     SS_CLEAR_DRYRUN | SS_CLEAR_FAILOUT);
-               CDEBUG(D_LFSCK | D_CONSOLE | D_WARNING,
-                      "%s: trigger partial OI scrub for RPC inconsistency "
-                      "checking FID "DFID": rc = %d\n",
-                      osd_name(osd), PFID(fid), rc);
+               CDEBUG_LIMIT(D_LFSCK | D_CONSOLE | D_WARNING,
+                            "%s: trigger partial OI scrub for RPC inconsistency, checking FID "DFID"/%#llx): rc = %d\n",
+                            osd_name(osd), PFID(fid), oid, rc);
                if (!rc)
                        goto again;
        }
index d1e4374..2ea8d59 100644 (file)
@@ -664,8 +664,9 @@ trigger:
        /* It is me to trigger the OI scrub. */
        rc1 = osd_scrub_start(env, osd, SS_CLEAR_DRYRUN |
                              SS_CLEAR_FAILOUT | SS_AUTO_FULL);
-       LCONSOLE_WARN("%s: trigger OI scrub by RPC for the "DFID": rc = %d\n",
-                     osd_name(osd), PFID(fid), rc1);
+       CDEBUG_LIMIT(D_LFSCK | D_CONSOLE | D_WARNING,
+                    "%s: trigger OI scrub by RPC for "DFID"/%#llx: rc = %d\n",
+                    osd_name(osd), PFID(fid), oid, rc1);
        if (!rc) {
                LASSERT(remote);
 
@@ -854,12 +855,12 @@ static int osd_destroy(const struct lu_env *env, struct dt_object *dt,
                LASSERT(obj->oo_attr.la_size <= osd_sync_destroy_max_size);
                rc = -dmu_object_free(osd->od_os, oid, oh->ot_tx);
                if (rc)
-                       CERROR("%s: failed to free %s %llu: rc = %d\n",
+                       CERROR("%s: failed to free %s/%#llx: rc = %d\n",
                               osd->od_svname, buf, oid, rc);
        } else if (obj->oo_destroy == OSD_DESTROY_SYNC) {
                rc = -dmu_object_free(osd->od_os, oid, oh->ot_tx);
                if (rc)
-                       CERROR("%s: failed to free %s %llu: rc = %d\n",
+                       CERROR("%s: failed to free %s/%#llx: rc = %d\n",
                               osd->od_svname, buf, oid, rc);
        } else { /* asynchronous destroy */
                char *key = info->oti_key;
@@ -872,7 +873,7 @@ static int osd_destroy(const struct lu_env *env, struct dt_object *dt,
                rc = osd_zap_add(osd, osd->od_unlinked->dn_object,
                                 osd->od_unlinked, key, 8, 1, &oid, oh->ot_tx);
                if (rc)
-                       CERROR("%s: zap_add_int() failed %s %llu: rc = %d\n",
+                       CERROR("%s: zap_add_int() failed %s/%#llx: rc = %d\n",
                               osd->od_svname, buf, oid, rc);
        }
 
@@ -1016,7 +1017,7 @@ static int osd_attr_get(const struct lu_env *env, struct dt_object *dt,
        }
        read_unlock(&obj->oo_attr_lock);
        if (attr->la_valid & LA_FLAGS && attr->la_flags & LUSTRE_ORPHAN_FL)
-               CDEBUG(D_INFO, "%s: set orphan flag on "DFID" (%llx/%x)\n",
+               CDEBUG(D_INFO, "%s: set orphan flag on "DFID" (%#llx/%#x)\n",
                       osd_obj2dev(obj)->od_svname,
                       PFID(lu_object_fid(&dt->do_lu)),
                       attr->la_valid, obj->oo_lma_flags);