ceph: just call get_session in __ceph_lookup_mds_session
I originally thought there was a potential race here, but the fact that this is called with the mdsc->mutex held, ensures that the last reference to the session can't be put here. Still, it's clearer to just return the value from get_session here, and may prevent a bug later if we ever rework this code to be less reliant on mutexes. Signed-off-by: Jeff Layton <jlayton@kernel.org> Reviewed-by: "Yan, Zheng" <zyan@redhat.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
1199d7da2d
commit
488f5284e2
@ -550,15 +550,9 @@ void ceph_put_mds_session(struct ceph_mds_session *s)
|
|||||||
struct ceph_mds_session *__ceph_lookup_mds_session(struct ceph_mds_client *mdsc,
|
struct ceph_mds_session *__ceph_lookup_mds_session(struct ceph_mds_client *mdsc,
|
||||||
int mds)
|
int mds)
|
||||||
{
|
{
|
||||||
struct ceph_mds_session *session;
|
|
||||||
|
|
||||||
if (mds >= mdsc->max_sessions || !mdsc->sessions[mds])
|
if (mds >= mdsc->max_sessions || !mdsc->sessions[mds])
|
||||||
return NULL;
|
return NULL;
|
||||||
session = mdsc->sessions[mds];
|
return get_session(mdsc->sessions[mds]);
|
||||||
dout("lookup_mds_session %p %d\n", session,
|
|
||||||
refcount_read(&session->s_ref));
|
|
||||||
get_session(session);
|
|
||||||
return session;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool __have_session(struct ceph_mds_client *mdsc, int mds)
|
static bool __have_session(struct ceph_mds_client *mdsc, int mds)
|
||||||
|
Loading…
Reference in New Issue
Block a user