From b653e7d706231ff1b736a64b68b05a777cbeff35 Mon Sep 17 00:00:00 2001 From: xie xingguo Date: Fri, 17 Jun 2016 16:13:31 +0800 Subject: [PATCH] mds/CInode: fix potential fin hanging The behaviour of handle_write_error() process is configurable and therefore is non-deterministic. Thus we'd better to finish the context here anyway. Signed-off-by: xie xingguo --- src/mds/CInode.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index ea58d3831536d..95027555366a4 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -995,6 +995,7 @@ void CInode::_stored(int r, version_t v, Context *fin) mdcache->mds->clog->error() << "failed to store ino " << ino() << " object," << " errno " << r << "\n"; mdcache->mds->handle_write_error(r); + fin->complete(r); return; } @@ -1211,6 +1212,8 @@ void CInode::_stored_backtrace(int r, version_t v, Context *fin) << ", pool " << get_backtrace_pool() << ", errno " << r << "\n"; mdcache->mds->handle_write_error(r); + if (fin) + fin->complete(r); return; } -- 2.39.5