From ba44cdebcd8d6a310bf0d75508907c87485fb58a Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 23 Aug 2011 17:33:44 -0700 Subject: [PATCH] journaler: fix waiting_for_zero clearing Clear this flag only if we know no subsequent flushes could be waiting on a prezero operation. Fixes MDS journaling hang under heavy journal load. Signed-off-by: Sage Weil --- src/osdc/Journaler.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/osdc/Journaler.cc b/src/osdc/Journaler.cc index 441d27300681c..bbae4e2450366 100644 --- a/src/osdc/Journaler.cc +++ b/src/osdc/Journaler.cc @@ -667,7 +667,8 @@ void Journaler::_prezeroed(int r, uint64_t start, uint64_t len) } if (waiting_for_zero) { - waiting_for_zero = false; + if (prezero_pos > write_pos) + waiting_for_zero = false; _do_flush(); } } else { -- 2.39.5