From 8216ff7499ed1b78b6a994d3fcead85b7383149a Mon Sep 17 00:00:00 2001 From: Boaz Harrosh Date: Wed, 28 Dec 2011 19:14:23 +0200 Subject: [PATCH] --- yaml --- r: 281442 b: refs/heads/master c: 361aba569f55dd159b850489a3538253afbb3973 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/exofs/ore.c | 2 +- trunk/fs/exofs/ore_raid.c | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index a8feaec1345f..4cadfb0a132a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ffefb8eaa367e8a5c14f779233d9da1fbc23d164 +refs/heads/master: 361aba569f55dd159b850489a3538253afbb3973 diff --git a/trunk/fs/exofs/ore.c b/trunk/fs/exofs/ore.c index 894f3e192e6b..49cf230554a2 100644 --- a/trunk/fs/exofs/ore.c +++ b/trunk/fs/exofs/ore.c @@ -266,7 +266,7 @@ int ore_get_rw_state(struct ore_layout *layout, struct ore_components *oc, /* first/last seg is split */ num_raid_units += layout->group_width; - sgs_per_dev = div_u64(num_raid_units, data_devs); + sgs_per_dev = div_u64(num_raid_units, data_devs) + 2; } else { /* For Writes add parity pages array. */ max_par_pages = num_raid_units * pages_in_unit * diff --git a/trunk/fs/exofs/ore_raid.c b/trunk/fs/exofs/ore_raid.c index 29c47e5c4a86..414a2dfd9500 100644 --- a/trunk/fs/exofs/ore_raid.c +++ b/trunk/fs/exofs/ore_raid.c @@ -551,7 +551,11 @@ int _ore_add_parity_unit(struct ore_io_state *ios, unsigned cur_len) { if (ios->reading) { - BUG_ON(per_dev->cur_sg >= ios->sgs_per_dev); + if (per_dev->cur_sg >= ios->sgs_per_dev) { + ORE_DBGMSG("cur_sg(%d) >= sgs_per_dev(%d)\n" , + per_dev->cur_sg, ios->sgs_per_dev); + return -ENOMEM; + } _ore_add_sg_seg(per_dev, cur_len, true); } else { struct __stripe_pages_2d *sp2d = ios->sp2d;