Whamcloud - gitweb
LU-12120 grants: prevent negative ted_grant value 96/34996/2
authorMikhail Pershin <mpershin@whamcloud.com>
Thu, 30 May 2019 09:30:43 +0000 (12:30 +0300)
committerOleg Drokin <green@whamcloud.com>
Tue, 4 Jun 2019 05:26:53 +0000 (05:26 +0000)
Add check in tgt_grant_shrink() to protect ted_grant
against negative value.

Signed-off-by: Mikhail Pershin <mpershin@whamcloud.com>
Change-Id: Iddea86f052124413ac60f5d0f26bcb68e376ede5
Reviewed-on: https://review.whamcloud.com/34996
Tested-by: Jenkins
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Quentin Bouget <quentin.bouget@cea.fr>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/target/tgt_grant.c

index f6ee8d1..e832bc9 100644 (file)
@@ -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;