diff options
author | Yan, Zheng <ukernel@gmail.com> | 2014-09-11 14:28:56 +0800 |
---|---|---|
committer | Jiri Slaby <jslaby@suse.cz> | 2015-11-14 18:56:56 +0100 |
commit | fcd082c0640d0f8eef3d0d2a17a62c9446a77cf2 (patch) | |
tree | fc1f4837518052fd96579a2ab0cd18eda3c6ee0d | |
parent | dbbcea97ecdcee66c453ac4127cdf9bc6c8481a0 (diff) | |
download | lwn-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.c | 1 |
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); } } |