History

raid6_kunit: cleanup dataptr handling

Move the global dataptr array into test_recover() as all sites that fill data or parity can use test_buffers directly, and this localized the override for the failed slots to the recovery testing routine.

Christoph Hellwig committed 6 months ago

Commit 562bcbf1 parent d67c2571 file · +7 −12Browse files

Showing the changes to lib/raid (1 of 1 file). Show all

Unified · Split

lib/raid/raid6/tests/raid6_kunit.c+7−12
@@ -18,7 +18,6 @@ MODULE_IMPORT_NS("EXPORTED_FOR_KUNIT_TESTING"); · 17 unmodified lines
18#define NDISKS 16 /* Including P and Q */18#define NDISKS 16 /* Including P and Q */
19 19
20static struct rnd_state rng;20static struct rnd_state rng;
21static void *dataptrs[NDISKS];
22static void *test_buffers[NDISKS];21static void *test_buffers[NDISKS];
23static void *test_recov_buffers[RAID6_KUNIT_MAX_FAILURES];22static void *test_recov_buffers[RAID6_KUNIT_MAX_FAILURES];
24 23
@@ -35,10 +34,8 @@ static void makedata(int start, int stop) · 10 unmodified lines
35{34{
36 int i;35 int i;
37 36
38 for (i = start; i <= stop; i++) {37 for (i = start; i <= stop; i++)
39 prandom_bytes_state(&rng, test_buffers[i], PAGE_SIZE);38 prandom_bytes_state(&rng, test_buffers[i], PAGE_SIZE);
40 dataptrs[i] = test_buffers[i];
41 }
42}39}
43 40
44static char member_type(int d)41static char member_type(int d)
@@ -56,11 +53,13 @@ static char member_type(int d) · 11 unmodified lines
56static void test_recover(struct kunit *test, int faila, int failb)53static void test_recover(struct kunit *test, int faila, int failb)
57{54{
58 const struct test_args *ta = test->param_value;55 const struct test_args *ta = test->param_value;
56 void *dataptrs[NDISKS];
59 int i;57 int i;
60 58
61 for (i = 0; i < RAID6_KUNIT_MAX_FAILURES; i++)59 for (i = 0; i < RAID6_KUNIT_MAX_FAILURES; i++)
62 memset(test_recov_buffers[i], 0xf0, PAGE_SIZE);60 memset(test_recov_buffers[i], 0xf0, PAGE_SIZE);
63 61
62 memcpy(dataptrs, test_buffers, sizeof(dataptrs));
64 dataptrs[faila] = test_recov_buffers[0];63 dataptrs[faila] = test_recov_buffers[0];
65 dataptrs[failb] = test_recov_buffers[1];64 dataptrs[failb] = test_recov_buffers[1];
66 65
@@ -70,7 +69,7 @@ static void test_recover(struct kunit *test, int faila, int failb) · 3 unmodified lines
70 * is equivalent to a RAID-5 failure (XOR, then recompute Q).69 * is equivalent to a RAID-5 failure (XOR, then recompute Q).
71 */70 */
72 if (faila != NDISKS - 2)71 if (faila != NDISKS - 2)
73 goto skip;72 return;
74 73
75 /* P+Q failure. Just rebuild the syndrome. */74 /* P+Q failure. Just rebuild the syndrome. */
76 ta->gen->gen_syndrome(NDISKS, PAGE_SIZE, dataptrs);75 ta->gen->gen_syndrome(NDISKS, PAGE_SIZE, dataptrs);
@@ -92,10 +91,6 @@ static void test_recover(struct kunit *test, int faila, int failb) · 15 unmodified lines
92 "failb miscompared: %3d[%c] (faila=%3d[%c])\n",91 "failb miscompared: %3d[%c] (faila=%3d[%c])\n",
93 failb, member_type(failb),92 failb, member_type(failb),
94 faila, member_type(faila));93 faila, member_type(faila));
95
96skip:
97 dataptrs[faila] = test_buffers[faila];
98 dataptrs[failb] = test_buffers[failb];
99}94}
100 95
101static void raid6_test(struct kunit *test)96static void raid6_test(struct kunit *test)
@@ -108,7 +103,7 @@ static void raid6_test(struct kunit *test) · 6 unmodified lines
108 memset(test_buffers[NDISKS - 1], 0xee, PAGE_SIZE);103 memset(test_buffers[NDISKS - 1], 0xee, PAGE_SIZE);
109 104
110 /* Generate assumed good syndrome */105 /* Generate assumed good syndrome */
111 ta->gen->gen_syndrome(NDISKS, PAGE_SIZE, (void **)&dataptrs);106 ta->gen->gen_syndrome(NDISKS, PAGE_SIZE, test_buffers);
112 107
113 for (i = 0; i < NDISKS - 1; i++)108 for (i = 0; i < NDISKS - 1; i++)
114 for (j = i + 1; j < NDISKS; j++)109 for (j = i + 1; j < NDISKS; j++)
@@ -121,10 +116,10 @@ static void raid6_test(struct kunit *test) · 6 unmodified lines
121 for (p2 = p1; p2 < NDISKS - 2; p2++) {116 for (p2 = p1; p2 < NDISKS - 2; p2++) {
122 /* Simulate rmw run */117 /* Simulate rmw run */
123 ta->gen->xor_syndrome(NDISKS, p1, p2, PAGE_SIZE,118 ta->gen->xor_syndrome(NDISKS, p1, p2, PAGE_SIZE,
124 (void **)&dataptrs);119 test_buffers);
125 makedata(p1, p2);120 makedata(p1, p2);
126 ta->gen->xor_syndrome(NDISKS, p1, p2, PAGE_SIZE,121 ta->gen->xor_syndrome(NDISKS, p1, p2, PAGE_SIZE,
127 (void **)&dataptrs);122 test_buffers);
128 123
129 for (i = 0; i < NDISKS - 1; i++)124 for (i = 0; i < NDISKS - 1; i++)
130 for (j = i + 1; j < NDISKS; j++)125 for (j = i + 1; j < NDISKS; j++)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t