From f99043f92b8b7071251dea7365d5b85b2ed0690a Mon Sep 17 00:00:00 2001 From: Fan Yong Date: Mon, 15 Jul 2013 22:54:24 +0800 Subject: [PATCH] LU-3649 lfsck: release object reference when reset lfsck When reset lfsck, related lfsck tracing file will be re-created, but we forgot to release the object reference of the old tracing file, then trigger LASSERT() when related device to be released. Signed-off-by: Fan Yong Change-Id: I657e539183675e00fe43bbbdfde987c3e48dd13b Reviewed-on: http://review.whamcloud.com/7432 Tested-by: Hudson Reviewed-by: Patrick Farrell Reviewed-by: Andreas Dilger Tested-by: Maloo --- lustre/mdd/mdd_lfsck.c | 2 ++ lustre/tests/sanity-lfsck.sh | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/lustre/mdd/mdd_lfsck.c b/lustre/mdd/mdd_lfsck.c index 3adfda1..b65561c 100644 --- a/lustre/mdd/mdd_lfsck.c +++ b/lustre/mdd/mdd_lfsck.c @@ -997,6 +997,8 @@ static int mdd_lfsck_namespace_reset(const struct lu_env *env, if (rc != 0) GOTO(out, rc); + lu_object_put(env, &com->lc_obj->do_lu); + com->lc_obj = NULL; dto = local_index_find_or_create(env, mdd->mdd_los, root, lfsck_namespace_name, S_IFREG | S_IRUGO | S_IWUSR, diff --git a/lustre/tests/sanity-lfsck.sh b/lustre/tests/sanity-lfsck.sh index 2bd6f64..4de4e25 100644 --- a/lustre/tests/sanity-lfsck.sh +++ b/lustre/tests/sanity-lfsck.sh @@ -128,6 +128,21 @@ test_0() { awk '/^updated_phase1/ { print $2 }') [ $repaired -eq 0 ] || error "(10) Expect nothing to be repaired, but got: $repaired" + + local scanned1=$($SHOW_NAMESPACE | awk '/^success_count/ { print $2 }') + $START_NAMESPACE -r || error "(11) Fail to reset LFSCK!" + sleep 3 + + STATUS=$($SHOW_NAMESPACE | awk '/^status/ { print $2 }') + [ "$STATUS" == "completed" ] || + error "(12) Expect 'completed', but got '$STATUS'" + + local scanned2=$($SHOW_NAMESPACE | awk '/^success_count/ { print $2 }') + [ $((scanned1 + 1)) -eq $scanned2 ] || + error "(13) Expect success $((scanned1 + 1)), but got $scanned2" + + echo "stopall, should NOT crash LU-3649" + stopall > /dev/null } run_test 0 "Control LFSCK manually" -- 1.8.3.1