diff options
author | Yan, Zheng <zyan@redhat.com> | 2019-06-14 10:55:05 +0800 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2019-07-08 14:01:42 +0200 |
commit | 428138c9892fac19a682973bbb6d8c2a904b6639 (patch) | |
tree | ef04f782d48d54589ba984fffe39c15ed5d5b6da | |
parent | 6f0f597b5debc7c2356fa6a17e2f179066e340d0 (diff) | |
download | talos-op-linux-428138c9892fac19a682973bbb6d8c2a904b6639.tar.gz talos-op-linux-428138c9892fac19a682973bbb6d8c2a904b6639.zip |
ceph: remove request from waiting list before unregister
Link: https://tracker.ceph.com/issues/40339
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
-rw-r--r-- | fs/ceph/mds_client.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index fcea46a54622..598a3fa280a7 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@ -727,6 +727,7 @@ void ceph_mdsc_release_request(struct kref *kref) ceph_pagelist_release(req->r_pagelist); put_request_session(req); ceph_unreserve_caps(req->r_mdsc, &req->r_caps_reservation); + WARN_ON_ONCE(!list_empty(&req->r_wait)); kfree(req); } @@ -4162,6 +4163,7 @@ static void wait_requests(struct ceph_mds_client *mdsc) while ((req = __get_oldest_req(mdsc))) { dout("wait_requests timed out on tid %llu\n", req->r_tid); + list_del_init(&req->r_wait); __unregister_request(mdsc, req); } } |