From: Sage Weil Date: Wed, 27 Jul 2011 19:40:35 +0000 (-0700) Subject: mds: honor scatter_wanted flag in scatter_eval() X-Git-Tag: v0.33~141 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d22e48f6ed00ffec0e8ea864fa49ecb8c14db14d;p=ceph.git mds: honor scatter_wanted flag in scatter_eval() We do in file_eval, but not here. Signed-off-by: Sage Weil --- diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index f162369c90ee..2f4cdc8af5ef 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -3527,6 +3527,16 @@ void Locker::scatter_eval(ScatterLock *lock, bool *need_issue) if (lock->get_parent()->is_freezing_or_frozen()) return; + if (!lock->is_rdlocked() && + !lock->is_xlocked() && + lock->get_state() != LOCK_MIX && + lock->get_scatter_wanted()) { + dout(10) << "scatter_eval scatter_wanted, bump to mix " << *lock + << " on " << *lock->get_parent() << dendl; + scatter_mix(lock, need_issue); + return; + } + if (lock->get_type() == CEPH_LOCK_INEST) { // in general, we want to keep INEST writable at all times. if (!lock->is_rdlocked() &&