From 7e08317ef5cbed5cd587017cbe343eb4cc52822c Mon Sep 17 00:00:00 2001 From: Mikhail Pershin Date: Thu, 30 May 2019 12:30:43 +0300 Subject: [PATCH 1/1] LU-12120 grants: prevent negative ted_grant value Add check in tgt_grant_shrink() to protect ted_grant against negative value. Signed-off-by: Mikhail Pershin Change-Id: Iddea86f052124413ac60f5d0f26bcb68e376ede5 Reviewed-on: https://review.whamcloud.com/34996 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Quentin Bouget Reviewed-by: Andreas Dilger Reviewed-by: Oleg Drokin --- lustre/target/tgt_grant.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lustre/target/tgt_grant.c b/lustre/target/tgt_grant.c index f6ee8d1..e832bc9 100644 --- a/lustre/target/tgt_grant.c +++ b/lustre/target/tgt_grant.c @@ -605,6 +605,14 @@ static void tgt_grant_shrink(struct obd_export *exp, struct obdo *oa, grant_shrink = oa->o_grant; + if (ted->ted_grant < grant_shrink) { + CDEBUG(D_CACHE, + "%s: cli %s/%p wants %lu shrinked > grant %lu\n", + obd->obd_name, exp->exp_client_uuid.uuid, exp, + grant_shrink, ted->ted_grant); + grant_shrink = ted->ted_grant; + } + ted->ted_grant -= grant_shrink; tgd->tgd_tot_granted -= grant_shrink; -- 1.8.3.1