summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYan, Zheng <ukernel@gmail.com>2014-09-11 14:28:56 +0800
committerJiri Slaby <jslaby@suse.cz>2015-11-14 18:56:56 +0100
commitfcd082c0640d0f8eef3d0d2a17a62c9446a77cf2 (patch)
treefc1f4837518052fd96579a2ab0cd18eda3c6ee0d
parentdbbcea97ecdcee66c453ac4127cdf9bc6c8481a0 (diff)
downloadlwn-fcd082c0640d0f8eef3d0d2a17a62c9446a77cf2.tar.gz
lwn-fcd082c0640d0f8eef3d0d2a17a62c9446a77cf2.zip
ceph: make sure request isn't in any waiting list when kicking request.
commit 03974e8177b36d672eb59658f976f03cb77c1129 upstream. we may corrupt waiting list if a request in the waiting list is kicked. Signed-off-by: "Yan, Zheng" <zyan@redhat.com> Reviewed-by: Sage Weil <sage@redhat.com> Signed-off-by: Jiri Slaby <jslaby@suse.cz>
-rw-r--r--fs/ceph/mds_client.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
index 6f1161324f91..3e07f82a3c9d 100644
--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -1985,6 +1985,7 @@ static void kick_requests(struct ceph_mds_client *mdsc, int mds)
if (req->r_session &&
req->r_session->s_mds == mds) {
dout(" kicking tid %llu\n", req->r_tid);
+ list_del_init(&req->r_wait);
__do_request(mdsc, req);
}
}