User space RAID-6 access fix

> I have applied some patch - with some formatting changes to make it consistent
> with the rest of the code.
>
> I don't really have time to look more deeply at it at the moment.
> Maybe someone else will?...

Hi Neil,

thanks for including this in git.

Actually I did it look at it :-) and I already found a
couple of issues, below is a small fix patch.

Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
Piergiorgio Sartor 2011-02-18 23:51:19 +11:00 committed by NeilBrown
parent 51cf74194f
commit c4db530180
1 changed files with 5 additions and 5 deletions

View File

@ -430,7 +430,8 @@ int raid6_check_disks(int data_disks, int start, int chunk_size,
if((Px != 0) && (Qx != 0)) {
data_id = (raid6_gflog[Qx] - raid6_gflog[Px]) & 0xFF;
data_id = (raid6_gflog[Qx] - raid6_gflog[Px]);
if(data_id < 0) data_id += 255;
diskD = geo_map(data_id, start/chunk_size,
data_disks + 2, level, layout);
curr_broken_disk = diskD;
@ -439,6 +440,9 @@ int raid6_check_disks(int data_disks, int start, int chunk_size,
if((Px == 0) && (Qx == 0))
curr_broken_disk = curr_broken_disk;
if(curr_broken_disk >= data_disks + 2)
broken_status = 2;
switch(broken_status) {
case 0:
if(curr_broken_disk != -1) {
@ -450,10 +454,6 @@ int raid6_check_disks(int data_disks, int start, int chunk_size,
case 1:
if(curr_broken_disk != prev_broken_disk)
broken_status = 2;
if(curr_broken_disk >= data_disks + 2)
broken_status = 2;
break;
case 2: