From ccb225620e292615ec0ded2568fc005f1055dfcc Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 21 Sep 2005 07:16:25 +0000 Subject: [PATCH] - in order to prevent flood during renewing capa for deleted inodes: - mds_getattr() returns regular errors in rq_status - mdc_interpret_getattr() interprets it properly --- lustre/mdc/mdc_request.c | 3 +++ lustre/mds/handler.c | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lustre/mdc/mdc_request.c b/lustre/mdc/mdc_request.c index 790852f..b386463 100644 --- a/lustre/mdc/mdc_request.c +++ b/lustre/mdc/mdc_request.c @@ -111,6 +111,9 @@ mdc_interpret_getattr(struct ptlrpc_request *req, void *unused, int rc) unsigned long expiry; ENTRY; + if (rc == 0) + rc = req->rq_status; + if (rc) { DEBUG_REQ(rc == -ENOENT ? D_INFO : D_ERROR , req, "async getattr failed: rc = %d", rc); diff --git a/lustre/mds/handler.c b/lustre/mds/handler.c index 9740f9d..2beed66 100644 --- a/lustre/mds/handler.c +++ b/lustre/mds/handler.c @@ -1757,13 +1757,14 @@ static int mds_getattr(struct ptlrpc_request *req, int offset) push_ctxt(&saved, &obd->obd_lvfs_ctxt, &uc); de = mds_id2dentry(obd, &body->id1, NULL); if (IS_ERR(de)) { - rc = req->rq_status = PTR_ERR(de); + rc = PTR_ERR(de); GOTO(out_pop, rc); } rc = mds_getattr_pack_msg(req, de, offset); if (rc != 0) { CERROR("mds_getattr_pack_msg: %d\n", rc); + l_dput(de); GOTO(out_pop, rc); } @@ -1773,9 +1774,10 @@ static int mds_getattr(struct ptlrpc_request *req, int offset) EXIT; out_pop: + req->rq_status = rc; pop_ctxt(&saved, &obd->obd_lvfs_ctxt, &uc); mds_exit_ucred(&uc); - return rc; + return 0; } static int mds_access_check(struct ptlrpc_request *req, int offset) -- 1.8.3.1