diff options
Diffstat (limited to 'fs/ceph/mds_client.c')
-rw-r--r-- | fs/ceph/mds_client.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index 239bc9cba28c..f54f77037d22 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c | |||
@@ -644,6 +644,9 @@ static void __unregister_request(struct ceph_mds_client *mdsc, | |||
644 | { | 644 | { |
645 | dout("__unregister_request %p tid %lld\n", req, req->r_tid); | 645 | dout("__unregister_request %p tid %lld\n", req, req->r_tid); |
646 | 646 | ||
647 | /* Never leave an unregistered request on an unsafe list! */ | ||
648 | list_del_init(&req->r_unsafe_item); | ||
649 | |||
647 | if (req->r_tid == mdsc->oldest_tid) { | 650 | if (req->r_tid == mdsc->oldest_tid) { |
648 | struct rb_node *p = rb_next(&req->r_node); | 651 | struct rb_node *p = rb_next(&req->r_node); |
649 | mdsc->oldest_tid = 0; | 652 | mdsc->oldest_tid = 0; |
@@ -1051,7 +1054,6 @@ static void cleanup_session_requests(struct ceph_mds_client *mdsc, | |||
1051 | while (!list_empty(&session->s_unsafe)) { | 1054 | while (!list_empty(&session->s_unsafe)) { |
1052 | req = list_first_entry(&session->s_unsafe, | 1055 | req = list_first_entry(&session->s_unsafe, |
1053 | struct ceph_mds_request, r_unsafe_item); | 1056 | struct ceph_mds_request, r_unsafe_item); |
1054 | list_del_init(&req->r_unsafe_item); | ||
1055 | pr_warn_ratelimited(" dropping unsafe request %llu\n", | 1057 | pr_warn_ratelimited(" dropping unsafe request %llu\n", |
1056 | req->r_tid); | 1058 | req->r_tid); |
1057 | __unregister_request(mdsc, req); | 1059 | __unregister_request(mdsc, req); |
@@ -2477,7 +2479,6 @@ static void handle_reply(struct ceph_mds_session *session, struct ceph_msg *msg) | |||
2477 | * useful we could do with a revised return value. | 2479 | * useful we could do with a revised return value. |
2478 | */ | 2480 | */ |
2479 | dout("got safe reply %llu, mds%d\n", tid, mds); | 2481 | dout("got safe reply %llu, mds%d\n", tid, mds); |
2480 | list_del_init(&req->r_unsafe_item); | ||
2481 | 2482 | ||
2482 | /* last unsafe request during umount? */ | 2483 | /* last unsafe request during umount? */ |
2483 | if (mdsc->stopping && !__get_oldest_req(mdsc)) | 2484 | if (mdsc->stopping && !__get_oldest_req(mdsc)) |