diff options
author | Yan, Zheng <ukernel@gmail.com> | 2014-09-11 08:28:56 +0200 |
---|---|---|
committer | Ilya Dryomov <idryomov@redhat.com> | 2014-10-14 19:03:24 +0200 |
commit | 03974e8177b36d672eb59658f976f03cb77c1129 (patch) | |
tree | 4dc3cf220c09ff41b986dbe904131c32a77ea0cc /fs/ceph | |
parent | ceph: protect kick_requests() with mdsc->mutex (diff) | |
download | linux-03974e8177b36d672eb59658f976f03cb77c1129.tar.xz linux-03974e8177b36d672eb59658f976f03cb77c1129.zip |
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.c | 1 |
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) 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); } } |