private void rdp_decoding_r(char[][] g_data,int disks,int stripe_unit_size,int w,int k){
  int off, p;
  int packet_size=stripe_unit_size / w;
  int i=0;
  System.arraycopy(g_data[0],0,g_data[k],0,stripe_unit_size);
  for (i=2; i < (disks + 2); i++) {
    if (i == k)     continue;
    for (p=0; p < w; p++) {
      for (off=0; off < packet_size; off++) {
        g_data[k][p * packet_size + off]^=g_data[i][p * packet_size + off];
      }
    }
  }
}

private void rdp_decoding_r ( char [ ] [ ] g_data , int disks , int stripe_unit_size , int w , int k ) { int off , p ; int packet_size = stripe_unit_size / w ; int i = 0 ; System . arraycopy ( g_data [ 0 ] , 0 , g_data [ k ] , 0 , stripe_unit_size ) ; for ( i = 2 ; i < ( disks + 2 ) ; i ++ ) { if ( i == k ) continue ; for ( p = 0 ; p < w ; p ++ ) { for ( off = 0 ; off < packet_size ; off ++ ) { g_data [ k ] [ p * packet_size + off ] ^= g_data [ i ] [ p * packet_size + off ] ; } } } }
rdp decoding according r and d checkouts . k : the first error disk in g_data
