From 5bab4acf8320b46076c81f32f7954f91dae21bc9 Mon Sep 17 00:00:00 2001 From: Andreas Dilger Date: Sat, 27 Mar 2021 13:50:33 -0600 Subject: [PATCH] LU-14175 osd: print inode number with FID in OI scrub 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 Change-Id: I217624ff2116326f86e053bcfacc6f19873ebbe5 Reviewed-on: https://review.whamcloud.com/43153 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Lai Siyao Reviewed-by: Alex Zhuravlev Reviewed-by: Oleg Drokin --- lustre/osd-ldiskfs/osd_handler.c | 11 ++++++----- lustre/osd-zfs/osd_index.c | 7 +++---- lustre/osd-zfs/osd_object.c | 13 +++++++------ 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/lustre/osd-ldiskfs/osd_handler.c b/lustre/osd-ldiskfs/osd_handler.c index acf36f5..04984f5 100644 --- a/lustre/osd-ldiskfs/osd_handler.c +++ b/lustre/osd-ldiskfs/osd_handler.c @@ -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; } diff --git a/lustre/osd-zfs/osd_index.c b/lustre/osd-zfs/osd_index.c index 9f4ee37..b67d383 100644 --- a/lustre/osd-zfs/osd_index.c +++ b/lustre/osd-zfs/osd_index.c @@ -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; } diff --git a/lustre/osd-zfs/osd_object.c b/lustre/osd-zfs/osd_object.c index d1e4374..2ea8d592 100644 --- a/lustre/osd-zfs/osd_object.c +++ b/lustre/osd-zfs/osd_object.c @@ -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); -- 1.8.3.1