aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ceph
diff options
context:
space:
mode:
authorYan, Zheng <ukernel@gmail.com>2014-09-11 02:28:56 -0400
committerIlya Dryomov <idryomov@redhat.com>2014-10-14 13:03:24 -0400
commit03974e8177b36d672eb59658f976f03cb77c1129 (patch)
tree4dc3cf220c09ff41b986dbe904131c32a77ea0cc /fs/ceph
parent656e4382948d4b2c81bdaf707f1400f53eff2625 (diff)
ceph: make sure request isn't in any waiting list when kicking request.
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>
Diffstat (limited to 'fs/ceph')
-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 267ba4496dc8..a17fc49c9948 100644
--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -2078,6 +2078,7 @@ static void kick_requests(struct ceph_mds_client *mdsc, int mds)
2078 if (req->r_session && 2078 if (req->r_session &&
2079 req->r_session->s_mds == mds) { 2079 req->r_session->s_mds == mds) {
2080 dout(" kicking tid %llu\n", req->r_tid); 2080 dout(" kicking tid %llu\n", req->r_tid);
2081 list_del_init(&req->r_wait);
2081 __do_request(mdsc, req); 2082 __do_request(mdsc, req);
2082 } 2083 }
2083 } 2084 }