]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
journaler: fix waiting_for_zero clearing
authorSage Weil <sage.weil@dreamhost.com>
Wed, 24 Aug 2011 00:33:44 +0000 (17:33 -0700)
committerSage Weil <sage@newdream.net>
Wed, 24 Aug 2011 16:10:23 +0000 (09:10 -0700)
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 <sage.weil@dreamhost.com>
src/osdc/Journaler.cc

index 441d27300681cd0efd9f0021bc46dfebfe9264bf..bbae4e2450366cbdf6ec0cbfadc3f88bba2c25d0 100644 (file)
@@ -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 {