From: Yan, Zheng Date: Thu, 31 Oct 2019 10:45:37 +0000 (+0800) Subject: Revert "mds: properly setup client_need_snapflush for snap inode" X-Git-Tag: v13.2.9~21^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e3bc0dcd4d1ae42dc538a36fea3f02fc214fe1f8;p=ceph.git Revert "mds: properly setup client_need_snapflush for snap inode" This reverts commit 0faa143a459c00b1cf6b562873e446a69467cef1. Signed-off-by: "Yan, Zheng" (cherry picked from commit 06b878c5bbb6e35b8428281fc648bc2316192ae7) Conflicts: src/mds/Locker.cc --- diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index a4040d5c8e9..440c35f8727 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -3012,8 +3012,9 @@ void Locker::handle_client_caps(MClientCaps *m) dout(10) << " revocation in progress, not making any conclusions about null snapflushes" << dendl; } } + if (cap->need_snapflush() && !(m->flags & MClientCaps::FLAG_PENDING_CAPSNAP)) + cap->clear_needsnapflush(); - bool need_snapflush = cap->need_snapflush(); if (m->get_dirty() && in->is_auth()) { dout(7) << " flush client." << client << " dirty " << ccap_string(m->get_dirty()) << " seq " << m->get_seq() << " on " << *in << dendl; @@ -3021,12 +3022,6 @@ void Locker::handle_client_caps(MClientCaps *m) m->get_caps(), 0, m->get_dirty(), 0, mds->get_osd_epoch_barrier()); ack->set_client_tid(m->get_client_tid()); ack->set_oldest_flush_tid(m->get_oldest_flush_tid()); - - // client flushes and releases caps at the same time. make sure MDCache::cow_inode() - // properly setup CInode::client_need_snapflush - if (!need_snapflush && (m->get_dirty() & ~cap->issued()) && - (m->flags & MClientCaps::FLAG_PENDING_CAPSNAP)) - cap->mark_needsnapflush(); } // filter wanted based on what we could ever give out (given auth/replica status) @@ -3040,15 +3035,10 @@ void Locker::handle_client_caps(MClientCaps *m) adjust_cap_wanted(cap, new_wanted, m->get_issue_seq()); } - - bool updated = in->is_auth() && - _do_cap_update(in, cap, m->get_dirty(), follows, m, ack, &need_flush); - - if (cap->need_snapflush() && - (!need_snapflush || !(m->flags & MClientCaps::FLAG_PENDING_CAPSNAP))) - cap->clear_needsnapflush(); - - if (updated) { + + if (in->is_auth() && + _do_cap_update(in, cap, m->get_dirty(), follows, m, ack, &need_flush)) { + // updated eval(in, CEPH_CAP_LOCKS); if (!need_flush && (cap->wanted() & ~cap->pending()))