Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 66c811e9 authored by H. Peter Anvin's avatar H. Peter Anvin Committed by Linus Torvalds
Browse files

md: raid6: clean up the style of raid6test/test.c



Clean up the coding style in raid6test/test.c.  Break it apart into
subfunctions to make the code more readable.

Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
Signed-off-by: default avatarNeil Brown <neilb@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 98ec302b
Loading
Loading
Loading
Loading
+69 −48
Original line number Diff line number Diff line
/* -*- linux-c -*- ------------------------------------------------------- *
 *
 *   Copyright 2002 H. Peter Anvin - All Rights Reserved
 *   Copyright 2002-2007 H. Peter Anvin - All Rights Reserved
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, Inc., 53 Temple Place Ste 330,
 *   Bostom MA 02111-1307, USA; either version 2 of the License, or
 *   (at your option) any later version; incorporated herein by reference.
 *   This file is part of the Linux kernel, and is made available under
 *   the terms of the GNU General Public License version 2 or (at your
 *   option) any later version; incorporated herein by reference.
 *
 * ----------------------------------------------------------------------- */

@@ -30,38 +28,34 @@ char *dataptrs[NDISKS];
char data[NDISKS][PAGE_SIZE];
char recovi[PAGE_SIZE], recovj[PAGE_SIZE];

void makedata(void)
static void makedata(void)
{
	int i, j;

	for (i = 0; i < NDISKS; i++) {
		for ( j = 0 ; j < PAGE_SIZE ; j++ ) {
		for (j = 0; j < PAGE_SIZE; j++)
			data[i][j] = rand();
		}

		dataptrs[i] = data[i];
	}
}

int main(int argc, char *argv[])
static char disk_type(int d)
{
	const struct raid6_calls * const * algo;
	int i, j;
	int erra, errb;

	makedata();

	for ( algo = raid6_algos ; *algo ; algo++ ) {
		if ( !(*algo)->valid || (*algo)->valid() ) {
			raid6_call = **algo;

			/* Nuke syndromes */
			memset(data[NDISKS-2], 0xee, 2*PAGE_SIZE);
	switch (d) {
	case NDISKS-2:
		return 'P';
	case NDISKS-1:
		return 'Q';
	default:
		return 'D';
	}
}

			/* Generate assumed good syndrome */
			raid6_call.gen_syndrome(NDISKS, PAGE_SIZE, (void **)&dataptrs);
static int test_disks(int i, int j)
{
	int erra, errb;

			for ( i = 0 ; i < NDISKS-1 ; i++ ) {
				for ( j = i+1 ; j < NDISKS ; j++ ) {
	memset(recovi, 0xf0, PAGE_SIZE);
	memset(recovj, 0xba, PAGE_SIZE);

@@ -76,21 +70,45 @@ int main(int argc, char *argv[])
	if (i < NDISKS-2 && j == NDISKS-1) {
		/* We don't implement the DQ failure scenario, since it's
		   equivalent to a RAID-5 failure (XOR, then recompute Q) */
		erra = errb = 0;
	} else {
		printf("algo=%-8s  faila=%3d(%c)  failb=%3d(%c)  %s\n",
		       raid6_call.name,
						       i, (i==NDISKS-2)?'P':'D',
						       j, (j==NDISKS-1)?'Q':(j==NDISKS-2)?'P':'D',
		       i, disk_type(i),
		       j, disk_type(j),
		       (!erra && !errb) ? "OK" :
		       !erra ? "ERRB" :
						       !errb ? "ERRA" :
						       "ERRAB");
		       !errb ? "ERRA" : "ERRAB");
	}

	dataptrs[i] = data[i];
	dataptrs[j] = data[j];

	return erra || errb;
}
			}

int main(int argc, char *argv[])
{
	const struct raid6_calls *const *algo;
	int i, j;
	int err = 0;

	makedata();

	for (algo = raid6_algos; *algo; algo++) {
		if (!(*algo)->valid || (*algo)->valid()) {
			raid6_call = **algo;

			/* Nuke syndromes */
			memset(data[NDISKS-2], 0xee, 2*PAGE_SIZE);

			/* Generate assumed good syndrome */
			raid6_call.gen_syndrome(NDISKS, PAGE_SIZE,
						(void **)&dataptrs);

			for (i = 0; i < NDISKS-1; i++)
				for (j = i+1; j < NDISKS; j++)
					err += test_disks(i, j);
		}
		printf("\n");
	}
@@ -99,5 +117,8 @@ int main(int argc, char *argv[])
	/* Pick the best algorithm test */
	raid6_select_algo();

	return 0;
	if (err)
		printf("\n*** ERRORS FOUND ***\n");

	return err;
}