From 1de6014a19aae85ad92fc00265f9aeb86fb7f0cb Mon Sep 17 00:00:00 2001 From: Lai Siyao Date: Mon, 15 Oct 2012 00:02:19 -0700 Subject: [PATCH] LU-1887 ptlrpc: grant shrink rpc format is special Grant shrink rpc is packed in OST_SET_INFO request, but its format is different from others. Change-Id: I24fef30504847d26699df427f787d7c1d594c7c5 Signed-off-by: Lai Siyao Reviewed-on: http://review.whamcloud.com/4269 Reviewed-by: Bobi Jam Tested-by: Hudson Tested-by: Maloo Reviewed-by: Jinshan Xiong Reviewed-by: Oleg Drokin --- lustre/osc/osc_request.c | 17 +++++++++-------- lustre/tests/sanity.sh | 5 +++++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/lustre/osc/osc_request.c b/lustre/osc/osc_request.c index 0a430b5..95f27f7 100644 --- a/lustre/osc/osc_request.c +++ b/lustre/osc/osc_request.c @@ -4152,18 +4152,17 @@ static int osc_set_info_async(struct obd_export *exp, obd_count keylen, Even if something bad goes through, we'd get a -EINVAL from OST anyway. */ - if (KEY_IS(KEY_GRANT_SHRINK)) - req = ptlrpc_request_alloc(imp, &RQF_OST_SET_GRANT_INFO); - else - req = ptlrpc_request_alloc(imp, &RQF_OBD_SET_INFO); - + req = ptlrpc_request_alloc(imp, KEY_IS(KEY_GRANT_SHRINK) ? + &RQF_OST_SET_GRANT_INFO : + &RQF_OBD_SET_INFO); if (req == NULL) RETURN(-ENOMEM); req_capsule_set_size(&req->rq_pill, &RMF_SETINFO_KEY, RCL_CLIENT, keylen); - req_capsule_set_size(&req->rq_pill, &RMF_SETINFO_VAL, - RCL_CLIENT, vallen); + if (!KEY_IS(KEY_GRANT_SHRINK)) + req_capsule_set_size(&req->rq_pill, &RMF_SETINFO_VAL, + RCL_CLIENT, vallen); rc = ptlrpc_request_pack(req, LUSTRE_OST_VERSION, OST_SET_INFO); if (rc) { ptlrpc_request_free(req); @@ -4172,7 +4171,9 @@ static int osc_set_info_async(struct obd_export *exp, obd_count keylen, tmp = req_capsule_client_get(&req->rq_pill, &RMF_SETINFO_KEY); memcpy(tmp, key, keylen); - tmp = req_capsule_client_get(&req->rq_pill, &RMF_SETINFO_VAL); + tmp = req_capsule_client_get(&req->rq_pill, KEY_IS(KEY_GRANT_SHRINK) ? + &RMF_OST_BODY : + &RMF_SETINFO_VAL); memcpy(tmp, val, vallen); if (KEY_IS(KEY_MDS_CONN)) { diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index 24c248b..eda8879 100644 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -3790,6 +3790,11 @@ test_64b () { } run_test 64b "check out-of-space detection on client ===========" +test_64c() { + $LCTL set_param osc.*OST0000-osc-[^mM]*.cur_grant_bytes=0 +} +run_test 64c "verify grant shrink ========================------" + # bug 1414 - set/get directories' stripe info test_65a() { mkdir -p $DIR/d65 -- 1.8.3.1