mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
ore: fix BUG_ON, too few sgs when reading
When reading RAID5 files, in rare cases, we calculated too few sg segments. There should be two extra for the beginning and end partial units. Also "too few sg segments" should not be a BUG_ON there is all the mechanics in place to handle it, as a short read. So just return -ENOMEM and the rest of the code will gracefully split the IO. [Bug in 3.2.0 Kernel] CC: Stable Tree <stable@kernel.org> Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
This commit is contained in:
parent
ffefb8eaa3
commit
361aba569f
2 changed files with 6 additions and 2 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue