Whamcloud - gitweb
LU-5914 lfsck: dt_lookup() LBUG 88/13188/2
authorLai Siyao <lai.siyao@intel.com>
Fri, 26 Dec 2014 14:15:35 +0000 (22:15 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 31 Dec 2014 22:33:45 +0000 (22:33 +0000)
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 <lai.siyao@intel.com>
Change-Id: I0755f471470cc0805db222640bba1d04f4128388
Reviewed-on: http://review.whamcloud.com/13188
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Fan Yong <fan.yong@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/lfsck/lfsck_namespace.c
lustre/lfsck/lfsck_striped_dir.c

index c67e5fc..8352fb7 100644 (file)
@@ -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));
index b0103df..6b3f69d 100644 (file)
@@ -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;