From 1bb0e3cc699998c748891a7574e664de4649f452 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 29 Aug 2011 09:27:13 -0700 Subject: [PATCH] client: simplify Client::remove_cap() args Signed-off-by: Sage Weil --- src/client/Client.cc | 25 ++++++++++++------------- src/client/Client.h | 2 +- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index b81ec4f752e94..8dfa96c53be62 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -2500,16 +2500,13 @@ void Client::add_update_cap(Inode *in, int mds, uint64_t cap_id, signal_cond_list(in->waitfor_caps); } -void Client::remove_cap(Inode *in, int mds) +void Client::remove_cap(Cap *cap) { + Inode *in = cap->inode; + MetaSession *session = cap->session; + int mds = cap->session->mds_num; + ldout(cct, 10) << "remove_cap mds" << mds << " on " << *in << dendl; - if (!in->caps.count(mds)) { - ldout(cct, 10) << "no caps from mds " << mds << "on this inode!\n" - << "remove_cap returning" << dendl; - return; - } - Cap *cap = in->caps[mds]; - MetaSession *session = mds_sessions[mds]; if (!session->release) session->release = new MClientCapRelease; @@ -2543,13 +2540,15 @@ void Client::remove_cap(Inode *in, int mds) void Client::remove_all_caps(Inode *in) { while (in->caps.size()) - remove_cap(in, in->caps.begin()->first); + remove_cap(in->caps.begin()->second); } void Client::remove_session_caps(MetaSession *mds) { - while (mds->caps.size()) - remove_cap((*mds->caps.begin())->inode, mds->mds_num); + while (mds->caps.size()) { + Cap *cap = *mds->caps.begin(); + remove_cap(cap); + } } void Client::trim_caps(int mds, int max) @@ -2571,7 +2570,7 @@ void Client::trim_caps(int mds, int max) continue; } ldout(cct, 20) << " removing unused, unneeded non-auth cap on " << *in << dendl; - remove_cap(in, mds); + remove_cap(cap); trimmed++; } else { ldout(cct, 20) << " trying to trim dentries for " << *in << dendl; @@ -3038,7 +3037,7 @@ void Client::handle_cap_export(Inode *in, MClientCaps *m) << " EXPORT from mds" << mds << ", just removing old cap" << dendl; - remove_cap(in, mds); + remove_cap(cap); } // else we already released it diff --git a/src/client/Client.h b/src/client/Client.h index d2e65edea5984..96b12dab0d5f8 100644 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -388,7 +388,7 @@ protected: void add_update_cap(Inode *in, int mds, uint64_t cap_id, unsigned issued, unsigned seq, unsigned mseq, inodeno_t realm, int flags); - void remove_cap(Inode *in, int mds); + void remove_cap(Cap *cap); void remove_all_caps(Inode *in); void remove_session_caps(MetaSession *session); void mark_caps_dirty(Inode *in, int caps); -- 2.39.5