diff mbox

ceph: cleanup aborted requests when re-sending requests.

Message ID 1380176736-2949-1-git-send-email-zheng.z.yan@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Yan, Zheng Sept. 26, 2013, 6:25 a.m. UTC
From: "Yan, Zheng" <zheng.z.yan@intel.com>

Aborted requests usually get cleared when the reply is received.
If MDS crashes, no reply will be received. So we need to cleanup
aborted requests when re-sending requests.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
---
 fs/ceph/mds_client.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Gregory Farnum Oct. 24, 2013, 12:54 a.m. UTC | #1
A little delayed, but Sage just pushed this into our testing repo. Thanks!
(Feel free to poke me in future if you know you have patches that have
been hanging for a while.)
-Greg
Software Engineer #42 @ http://inktank.com | http://ceph.com


On Wed, Sep 25, 2013 at 11:25 PM, Yan, Zheng <zheng.z.yan@intel.com> wrote:
> From: "Yan, Zheng" <zheng.z.yan@intel.com>
>
> Aborted requests usually get cleared when the reply is received.
> If MDS crashes, no reply will be received. So we need to cleanup
> aborted requests when re-sending requests.
>
> Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
> ---
>  fs/ceph/mds_client.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
> index f51ab26..b959966 100644
> --- a/fs/ceph/mds_client.c
> +++ b/fs/ceph/mds_client.c
> @@ -1875,8 +1875,11 @@ static int __do_request(struct ceph_mds_client *mdsc,
>         int mds = -1;
>         int err = -EAGAIN;
>
> -       if (req->r_err || req->r_got_result)
> +       if (req->r_err || req->r_got_result) {
> +               if (req->r_aborted)
> +                       __unregister_request(mdsc, req);
>                 goto out;
> +       }
>
>         if (req->r_timeout &&
>             time_after_eq(jiffies, req->r_started + req->r_timeout)) {
> --
> 1.8.1.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c
index f51ab26..b959966 100644
--- a/fs/ceph/mds_client.c
+++ b/fs/ceph/mds_client.c
@@ -1875,8 +1875,11 @@  static int __do_request(struct ceph_mds_client *mdsc,
 	int mds = -1;
 	int err = -EAGAIN;
 
-	if (req->r_err || req->r_got_result)
+	if (req->r_err || req->r_got_result) {
+		if (req->r_aborted)
+			__unregister_request(mdsc, req);
 		goto out;
+	}
 
 	if (req->r_timeout &&
 	    time_after_eq(jiffies, req->r_started + req->r_timeout)) {