From: John Spray Date: Tue, 29 Nov 2016 17:11:19 +0000 (+0000) Subject: Revert "client: trim_caps() do not dereference cap if it's removed" X-Git-Tag: v12.0.0~257^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=89fc88ef2ed2518e96bd60f4be35c8987453e188;p=ceph.git Revert "client: trim_caps() do not dereference cap if it's removed" We will simplify this another way. This reverts commit e9fbe39f0f91b7f6551d911f1a2519f5b35175a2. Signed-off-by: John Spray --- diff --git a/src/client/Client.cc b/src/client/Client.cc index bc246f7adf6..790c5154998 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -3858,7 +3858,7 @@ void Client::add_update_cap(Inode *in, MetaSession *mds_session, uint64_t cap_id signal_cond_list(in->waitfor_caps); } -Cap* Client::remove_cap(Cap *cap, bool queue_release) +void Client::remove_cap(Cap *cap, bool queue_release) { Inode *in = cap->inode; MetaSession *session = cap->session; @@ -3890,7 +3890,6 @@ Cap* Client::remove_cap(Cap *cap, bool queue_release) } else { cap->cap_item.remove_myself(); delete cap; - cap = nullptr; } if (!in->is_any_caps()) { @@ -3899,7 +3898,6 @@ Cap* Client::remove_cap(Cap *cap, bool queue_release) put_snap_realm(in->snaprealm); in->snaprealm = 0; } - return cap; } void Client::remove_all_caps(Inode *in) @@ -3996,7 +3994,7 @@ void Client::trim_caps(MetaSession *s, int max) // disposable non-auth cap if (!(get_caps_used(in) & ~oissued & mine)) { ldout(cct, 20) << " removing unused, unneeded non-auth cap on " << *in << dendl; - cap = remove_cap(cap, true); + remove_cap(cap, true); trimmed++; } } else { @@ -4027,7 +4025,7 @@ void Client::trim_caps(MetaSession *s, int max) } ++p; - if (cap && !cap->inode) { + if (!cap->inode) { cap->cap_item.remove_myself(); delete cap; } diff --git a/src/client/Client.h b/src/client/Client.h index 58c794aa6d5..6baa1bce626 100644 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -621,7 +621,7 @@ protected: void add_update_cap(Inode *in, MetaSession *session, uint64_t cap_id, unsigned issued, unsigned seq, unsigned mseq, inodeno_t realm, int flags, const UserPerm& perms); - Cap* remove_cap(Cap *cap, bool queue_release); + void remove_cap(Cap *cap, bool queue_release); void remove_all_caps(Inode *in); void remove_session_caps(MetaSession *session); void mark_caps_dirty(Inode *in, int caps);