Whamcloud - gitweb
LU-4788 lfsck: namespace LFSCK uses assistant thread 03/10603/24
authorFan Yong <fan.yong@intel.com>
Tue, 29 Jul 2014 19:02:18 +0000 (03:02 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 24 Sep 2014 02:16:04 +0000 (02:16 +0000)
commitb356ff8e1bec6a1653c3ab5ed393742344457f64
tree80e4bdc529a65a5aee81044ad5ed3b80585b51dd
parent027054bb4457dacd638b36d55ae6629b045da781
LU-4788 lfsck: namespace LFSCK uses assistant thread

Move the lfsck assistant thread from layout.c to engine.c, and
make it to be shared by both layout LFSCK and namespace LFSCK.

With using assistant thread, the namespace LFSCK can make the
async pipeline for scanning the directory as the layout LFSCK
does for scanning the stripes, then the LFSCK main engine will
not be blocked by cross-MDT verification.

The namesapce LFSCK assistant thread is necessary, because both
the layout LFSCK and the namespace LFSCK are driven by the same
LFSCK main engine. If the LFSCK main engine is blocked because
of namespace handling, then the layout LFSCK will also be blocked.
Currently, the LFSCK main engine and the layout LFSCK assistant
thread has composed a async pipeline, then the LFSCK main engine
will not be blocked by layout related remote operations. So it is
necessary to make another pipeline for namespace related handling
to avoid the LFSCK main engine to be blocked for namespace related
remote operations.

Signed-off-by: Fan Yong <fan.yong@intel.com>
Change-Id: I99e18ab1d85ad4d74b16b2387767422907781d5e
Reviewed-on: http://review.whamcloud.com/10603
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/lfsck/lfsck_engine.c
lustre/lfsck/lfsck_internal.h
lustre/lfsck/lfsck_layout.c
lustre/lfsck/lfsck_lib.c
lustre/lfsck/lfsck_namespace.c