From 993489e511662bde7fddbe8bb32dd290968ad89a Mon Sep 17 00:00:00 2001 From: shadow Date: Mon, 21 Jan 2008 13:52:00 +0000 Subject: [PATCH] fix deadlock with llog cleanup. b=14608 i=johann i=wangdi --- lustre/ChangeLog | 10 ++++++++++ lustre/obdfilter/filter.c | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 9b0325d..7eb9456 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -18,6 +18,16 @@ tbd Sun Microsystems, Inc. removed cwd "./" (refer to Bugzilla 14399). Severity : normal +Frequency : rare on shutdown ost +Bugzilla : 14608 +Description: If llog cancel was not send before clean_exports phase, this can + produce deadlock in llog code. +Details : If llog thread has last reference to obd and call class_import_put + this produce deadlock because llog_cleanup_commit_master wait when + last llog_commit_thread exited, but this never success because was + called from llog_commit_thread. + +Severity : normal Bugzilla : 14607 Description: NULL lov_tgts causing MDS oops Details : more safe checks for NULL lov_tgts for avoid oops. diff --git a/lustre/obdfilter/filter.c b/lustre/obdfilter/filter.c index 87773e2..d992391 100644 --- a/lustre/obdfilter/filter.c +++ b/lustre/obdfilter/filter.c @@ -1947,9 +1947,9 @@ static int filter_precleanup(struct obd_device *obd, break; case OBD_CLEANUP_EXPORTS: target_cleanup_recovery(obd); + rc = filter_llog_finish(obd, 0); break; case OBD_CLEANUP_SELF_EXP: - rc = filter_llog_finish(obd, 0); break; case OBD_CLEANUP_OBD: break; -- 1.8.3.1