From 8b182ea98f33394fb9bd1e45e0762a730800f188 Mon Sep 17 00:00:00 2001 From: shadow Date: Mon, 21 Jan 2008 13:55:11 +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 15023cf..88cd228 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -13,6 +13,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 : 9977 Description: allow userland application know is lost one of stripes. Details : fill lvb_blocks with error code on ost and return it to diff --git a/lustre/obdfilter/filter.c b/lustre/obdfilter/filter.c index 84947d6..a99a422 100644 --- a/lustre/obdfilter/filter.c +++ b/lustre/obdfilter/filter.c @@ -2297,9 +2297,9 @@ static int filter_precleanup(struct obd_device *obd, break; case OBD_CLEANUP_EXPORTS: target_cleanup_recovery(obd); + rc = filter_llog_preclean(obd); break; case OBD_CLEANUP_SELF_EXP: - rc = filter_llog_preclean(obd); break; case OBD_CLEANUP_OBD: break; -- 1.8.3.1