"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "restripe.c" between
mdadm-4.1.tar.gz and mdadm-4.2.tar.gz

About: mdadm is a tool for creating, managing and monitoring device arrays using the "md" driver in Linux, also known as Software RAID arrays.

restripe.c  (mdadm-4.1):restripe.c  (mdadm-4.2)
skipping to change at line 336 skipping to change at line 336
/* Compute inverse table x^-1 == x^254 */ /* Compute inverse table x^-1 == x^254 */
for (i = 0; i < 256; i++) for (i = 0; i < 256; i++)
raid6_gfinv[i] = gfpow(i, 254); raid6_gfinv[i] = gfpow(i, 254);
/* Compute inv(2^x + 1) (exponent-xor-inverse) table */ /* Compute inv(2^x + 1) (exponent-xor-inverse) table */
for (i = 0; i < 256; i ++) for (i = 0; i < 256; i ++)
raid6_gfexi[i] = raid6_gfinv[raid6_gfexp[i] ^ 1]; raid6_gfexi[i] = raid6_gfinv[raid6_gfexp[i] ^ 1];
/* Compute log and inverse log */ /* Compute log and inverse log */
/* Modified code from: /* Modified code from:
* http://web.eecs.utk.edu/~plank/plank/papers/CS-96-332.html * https://web.eecs.utk.edu/~plank/plank/papers/CS-96-332.html
*/ */
b = 1; b = 1;
raid6_gflog[0] = 0; raid6_gflog[0] = 0;
raid6_gfilog[255] = 0; raid6_gfilog[255] = 0;
for (log = 0; log < 255; log++) { for (log = 0; log < 255; log++) {
raid6_gflog[b] = (uint8_t) log; raid6_gflog[b] = (uint8_t) log;
raid6_gfilog[log] = (uint8_t) b; raid6_gfilog[log] = (uint8_t) b;
b = b << 1; b = b << 1;
if (b & 256) b = b ^ 0435; if (b & 256) b = b ^ 0435;
skipping to change at line 869 skipping to change at line 869
if (!tables_ready) if (!tables_ready)
make_tables(); make_tables();
for ( i = 0 ; i < raid_disks ; i++) for ( i = 0 ; i < raid_disks ; i++)
stripes[i] = stripe_buf + i * chunk_size; stripes[i] = stripe_buf + i * chunk_size;
while (length > 0) { while (length > 0) {
int disk; int disk;
for (i = 0 ; i < raid_disks ; i++) { for (i = 0 ; i < raid_disks ; i++) {
lseek64(source[i], offsets[i]+start, 0); if ((lseek64(source[i], offsets[i]+start, 0) < 0) ||
read(source[i], stripes[i], chunk_size); (read(source[i], stripes[i], chunk_size) !=
chunk_size)) {
free(q);
free(p);
free(blocks);
free(stripes);
free(stripe_buf);
return -1;
}
} }
for (i = 0 ; i < data_disks ; i++) { for (i = 0 ; i < data_disks ; i++) {
int disk = geo_map(i, start/chunk_size, raid_disks, int disk = geo_map(i, start/chunk_size, raid_disks,
level, layout); level, layout);
blocks[i] = stripes[disk]; blocks[i] = stripes[disk];
printf("%d->%d\n", i, disk); printf("%d->%d\n", i, disk);
} }
switch(level) { switch(level) {
case 6: case 6:
qsyndrome(p, q, (uint8_t**)blocks, data_disks, chunk_size ); qsyndrome(p, q, (uint8_t**)blocks, data_disks, chunk_size );
 End of changes. 2 change blocks. 
3 lines changed or deleted 11 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)