From 5e9f83e0ecf14afd5799004c0dea6a5b5f4b6126 Mon Sep 17 00:00:00 2001 From: Dave Kleikamp Date: Tue, 18 Sep 2012 11:27:22 -0500 Subject: [PATCH] --- yaml --- r: 329199 b: refs/heads/master c: 84f4141ee3ea11035f741d4298cb6bbad1850fcf h: refs/heads/master i: 329197: 956af16d3d4e650ef94ec5071edf99443f413789 329195: 41ddca584a57c4289ef61dc400e3e603ae5340e9 329191: ab99845616d9ff73598fbc859d9bdbdf587dd246 329183: a3fe2d78f3c175906bd9d464884394b184fa4777 v: v3 --- [refs] | 2 +- trunk/fs/jfs/jfs_dmap.c | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 4eefe314903f..586d17b66347 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 550d6da288df57f154ca27c4acb1c398ced42ea9 +refs/heads/master: 84f4141ee3ea11035f741d4298cb6bbad1850fcf diff --git a/trunk/fs/jfs/jfs_dmap.c b/trunk/fs/jfs/jfs_dmap.c index 174feb6a73c1..9a55f53be5ff 100644 --- a/trunk/fs/jfs/jfs_dmap.c +++ b/trunk/fs/jfs/jfs_dmap.c @@ -1641,14 +1641,15 @@ s64 dbDiscardAG(struct inode *ip, int agno, s64 minlen) /* max blkno / nblocks pairs to trim */ int count = 0, range_cnt; + u64 max_ranges; /* prevent others from writing new stuff here, while trimming */ IWRITE_LOCK(ipbmap, RDWRLOCK_DMAP); nblocks = bmp->db_agfree[agno]; - range_cnt = nblocks; - do_div(range_cnt, (int)minlen); - range_cnt = min(range_cnt + 1, 32 * 1024); + max_ranges = nblocks; + do_div(max_ranges, minlen); + range_cnt = min_t(u64, max_ranges + 1, 32 * 1024); totrim = kmalloc(sizeof(struct range2trim) * range_cnt, GFP_NOFS); if (totrim == NULL) { jfs_error(bmp->db_ipbmap->i_sb,