From: Lai Siyao Date: Fri, 26 Dec 2014 14:15:35 +0000 (+0800) Subject: LU-5914 lfsck: dt_lookup() LBUG X-Git-Tag: 2.6.92~3 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=4950f42fb6286f4cf5e6092593acabde76a8f093 LU-5914 lfsck: dt_lookup() LBUG This patch contains two fixes: 1. object can be remote in lfsck_namespace_rebuild_linkea(), remove assert on this. 2. initialize dt_index_ops for parent in l_n_verify_stripe_slave() before dt_lookup() on it. Signed-off-by: Lai Siyao Change-Id: I0755f471470cc0805db222640bba1d04f4128388 Reviewed-on: http://review.whamcloud.com/13188 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Fan Yong Reviewed-by: Alex Zhuravlev Reviewed-by: Oleg Drokin --- diff --git a/lustre/lfsck/lfsck_namespace.c b/lustre/lfsck/lfsck_namespace.c index c67e5fc..8352fb7 100644 --- a/lustre/lfsck/lfsck_namespace.c +++ b/lustre/lfsck/lfsck_namespace.c @@ -1973,8 +1973,6 @@ int lfsck_namespace_rebuild_linkea(const struct lu_env *env, int rc = 0; ENTRY; - LASSERT(!dt_object_remote(obj)); - th = dt_trans_create(env, dev); if (IS_ERR(th)) GOTO(log, rc = PTR_ERR(th)); diff --git a/lustre/lfsck/lfsck_striped_dir.c b/lustre/lfsck/lfsck_striped_dir.c index b0103df..6b3f69d 100644 --- a/lustre/lfsck/lfsck_striped_dir.c +++ b/lustre/lfsck/lfsck_striped_dir.c @@ -1728,6 +1728,9 @@ int lfsck_namespace_verify_stripe_slave(const struct lu_env *env, GOTO(out, rc); } + if (unlikely(!dt_try_as_dir(env, parent))) + GOTO(out, rc = -ENOTDIR); + rc = lfsck_read_stripe_lmv(env, parent, plmv); if (rc != 0) { int rc1;