Lines Matching +full:- +full:i

1 // SPDX-License-Identifier: GPL-2.0-only
2 /* I/O iterator tests. This can only test kernel-backed iterator types.
34 { -1 }
79 int i; in iov_kunit_load_kvec() local
81 for (i = 0; i < kvmax; i++, pr++) { in iov_kunit_load_kvec()
82 if (pr->from < 0) in iov_kunit_load_kvec()
84 KUNIT_ASSERT_GE(test, pr->to, pr->from); in iov_kunit_load_kvec()
85 KUNIT_ASSERT_LE(test, pr->to, bufsize); in iov_kunit_load_kvec()
86 kvec[i].iov_base = buffer + pr->from; in iov_kunit_load_kvec()
87 kvec[i].iov_len = pr->to - pr->from; in iov_kunit_load_kvec()
88 size += pr->to - pr->from; in iov_kunit_load_kvec()
92 iov_iter_kvec(iter, dir, kvec, i, size); in iov_kunit_load_kvec()
96 * Test copying to a ITER_KVEC-type iterator.
106 int i, patt; in iov_kunit_copy_to_kvec() local
112 for (i = 0; i < bufsize; i++) in iov_kunit_copy_to_kvec()
113 scratch[i] = pattern(i); in iov_kunit_copy_to_kvec()
131 for (pr = kvec_test_ranges; pr->from >= 0; pr++) in iov_kunit_copy_to_kvec()
132 for (i = pr->from; i < pr->to; i++) in iov_kunit_copy_to_kvec()
133 scratch[i] = pattern(patt++); in iov_kunit_copy_to_kvec()
136 for (i = 0; i < bufsize; i++) { in iov_kunit_copy_to_kvec()
137 KUNIT_EXPECT_EQ_MSG(test, buffer[i], scratch[i], "at i=%x", i); in iov_kunit_copy_to_kvec()
138 if (buffer[i] != scratch[i]) in iov_kunit_copy_to_kvec()
146 * Test copying from a ITER_KVEC-type iterator.
156 int i, j; in iov_kunit_copy_from_kvec() local
162 for (i = 0; i < bufsize; i++) in iov_kunit_copy_from_kvec()
163 buffer[i] = pattern(i); in iov_kunit_copy_from_kvec()
179 i = 0; in iov_kunit_copy_from_kvec()
181 for (pr = kvec_test_ranges; pr->from >= 0; pr++) { in iov_kunit_copy_from_kvec()
182 for (j = pr->from; j < pr->to; j++) { in iov_kunit_copy_from_kvec()
183 buffer[i++] = pattern(j); in iov_kunit_copy_from_kvec()
184 if (i >= bufsize) in iov_kunit_copy_from_kvec()
191 for (i = 0; i < bufsize; i++) { in iov_kunit_copy_from_kvec()
192 KUNIT_EXPECT_EQ_MSG(test, scratch[i], buffer[i], "at i=%x", i); in iov_kunit_copy_from_kvec()
193 if (scratch[i] != buffer[i]) in iov_kunit_copy_from_kvec()
213 { -1, -1, -1 }
225 int i; in iov_kunit_load_bvec() local
227 for (i = 0; i < bvmax; i++, pr++) { in iov_kunit_load_bvec()
228 if (pr->from < 0) in iov_kunit_load_bvec()
230 KUNIT_ASSERT_LT(test, pr->page, npages); in iov_kunit_load_bvec()
231 KUNIT_ASSERT_LT(test, pr->page * PAGE_SIZE, bufsize); in iov_kunit_load_bvec()
232 KUNIT_ASSERT_GE(test, pr->from, 0); in iov_kunit_load_bvec()
233 KUNIT_ASSERT_GE(test, pr->to, pr->from); in iov_kunit_load_bvec()
234 KUNIT_ASSERT_LE(test, pr->to, PAGE_SIZE); in iov_kunit_load_bvec()
236 page = pages[pr->page]; in iov_kunit_load_bvec()
237 if (pr->from == 0 && pr->from != pr->to && page == can_merge) { in iov_kunit_load_bvec()
238 i--; in iov_kunit_load_bvec()
239 bvec[i].bv_len += pr->to; in iov_kunit_load_bvec()
241 bvec_set_page(&bvec[i], page, pr->to - pr->from, pr->from); in iov_kunit_load_bvec()
244 size += pr->to - pr->from; in iov_kunit_load_bvec()
245 if ((pr->to & ~PAGE_MASK) == 0) in iov_kunit_load_bvec()
246 can_merge = page + pr->to / PAGE_SIZE; in iov_kunit_load_bvec()
251 iov_iter_bvec(iter, dir, bvec, i, size); in iov_kunit_load_bvec()
255 * Test copying to a ITER_BVEC-type iterator.
265 int i, b, patt; in iov_kunit_copy_to_bvec() local
271 for (i = 0; i < bufsize; i++) in iov_kunit_copy_to_bvec()
272 scratch[i] = pattern(i); in iov_kunit_copy_to_bvec()
291 for (pr = bvec_test_ranges; pr->from >= 0; pr++, b++) { in iov_kunit_copy_to_bvec()
292 u8 *p = scratch + pr->page * PAGE_SIZE; in iov_kunit_copy_to_bvec()
294 for (i = pr->from; i < pr->to; i++) in iov_kunit_copy_to_bvec()
295 p[i] = pattern(patt++); in iov_kunit_copy_to_bvec()
299 for (i = 0; i < bufsize; i++) { in iov_kunit_copy_to_bvec()
300 KUNIT_EXPECT_EQ_MSG(test, buffer[i], scratch[i], "at i=%x", i); in iov_kunit_copy_to_bvec()
301 if (buffer[i] != scratch[i]) in iov_kunit_copy_to_bvec()
309 * Test copying from a ITER_BVEC-type iterator.
319 int i, j; in iov_kunit_copy_from_bvec() local
325 for (i = 0; i < bufsize; i++) in iov_kunit_copy_from_bvec()
326 buffer[i] = pattern(i); in iov_kunit_copy_from_bvec()
342 i = 0; in iov_kunit_copy_from_bvec()
344 for (pr = bvec_test_ranges; pr->from >= 0; pr++) { in iov_kunit_copy_from_bvec()
345 size_t patt = pr->page * PAGE_SIZE; in iov_kunit_copy_from_bvec()
347 for (j = pr->from; j < pr->to; j++) { in iov_kunit_copy_from_bvec()
348 buffer[i++] = pattern(patt + j); in iov_kunit_copy_from_bvec()
349 if (i >= bufsize) in iov_kunit_copy_from_bvec()
356 for (i = 0; i < bufsize; i++) { in iov_kunit_copy_from_bvec()
357 KUNIT_EXPECT_EQ_MSG(test, scratch[i], buffer[i], "at i=%x", i); in iov_kunit_copy_from_bvec()
358 if (scratch[i] != buffer[i]) in iov_kunit_copy_from_bvec()
379 int i; in iov_kunit_load_xarray() local
381 for (i = 0; i < npages; i++) { in iov_kunit_load_xarray()
382 void *x = xa_store(xarray, i, pages[i], GFP_KERNEL); in iov_kunit_load_xarray()
402 * Test copying to a ITER_XARRAY-type iterator.
412 int i, patt; in iov_kunit_copy_to_xarray() local
420 for (i = 0; i < bufsize; i++) in iov_kunit_copy_to_xarray()
421 scratch[i] = pattern(i); in iov_kunit_copy_to_xarray()
428 i = 0; in iov_kunit_copy_to_xarray()
429 for (pr = kvec_test_ranges; pr->from >= 0; pr++) { in iov_kunit_copy_to_xarray()
430 size = pr->to - pr->from; in iov_kunit_copy_to_xarray()
431 KUNIT_ASSERT_LE(test, pr->to, bufsize); in iov_kunit_copy_to_xarray()
433 iov_iter_xarray(&iter, READ, xarray, pr->from, size); in iov_kunit_copy_to_xarray()
434 copied = copy_to_iter(scratch + i, size, &iter); in iov_kunit_copy_to_xarray()
439 i += size; in iov_kunit_copy_to_xarray()
445 for (pr = kvec_test_ranges; pr->from >= 0; pr++) in iov_kunit_copy_to_xarray()
446 for (i = pr->from; i < pr->to; i++) in iov_kunit_copy_to_xarray()
447 scratch[i] = pattern(patt++); in iov_kunit_copy_to_xarray()
450 for (i = 0; i < bufsize; i++) { in iov_kunit_copy_to_xarray()
451 KUNIT_EXPECT_EQ_MSG(test, buffer[i], scratch[i], "at i=%x", i); in iov_kunit_copy_to_xarray()
452 if (buffer[i] != scratch[i]) in iov_kunit_copy_to_xarray()
460 * Test copying from a ITER_XARRAY-type iterator.
470 int i, j; in iov_kunit_copy_from_xarray() local
478 for (i = 0; i < bufsize; i++) in iov_kunit_copy_from_xarray()
479 buffer[i] = pattern(i); in iov_kunit_copy_from_xarray()
486 i = 0; in iov_kunit_copy_from_xarray()
487 for (pr = kvec_test_ranges; pr->from >= 0; pr++) { in iov_kunit_copy_from_xarray()
488 size = pr->to - pr->from; in iov_kunit_copy_from_xarray()
489 KUNIT_ASSERT_LE(test, pr->to, bufsize); in iov_kunit_copy_from_xarray()
491 iov_iter_xarray(&iter, WRITE, xarray, pr->from, size); in iov_kunit_copy_from_xarray()
492 copied = copy_from_iter(scratch + i, size, &iter); in iov_kunit_copy_from_xarray()
497 i += size; in iov_kunit_copy_from_xarray()
501 i = 0; in iov_kunit_copy_from_xarray()
503 for (pr = kvec_test_ranges; pr->from >= 0; pr++) { in iov_kunit_copy_from_xarray()
504 for (j = pr->from; j < pr->to; j++) { in iov_kunit_copy_from_xarray()
505 buffer[i++] = pattern(j); in iov_kunit_copy_from_xarray()
506 if (i >= bufsize) in iov_kunit_copy_from_xarray()
513 for (i = 0; i < bufsize; i++) { in iov_kunit_copy_from_xarray()
514 KUNIT_EXPECT_EQ_MSG(test, scratch[i], buffer[i], "at i=%x", i); in iov_kunit_copy_from_xarray()
515 if (scratch[i] != buffer[i]) in iov_kunit_copy_from_xarray()
523 * Test the extraction of ITER_KVEC-type iterators.
534 int i, from; in iov_kunit_extract_pages_kvec() local
546 from = pr->from; in iov_kunit_extract_pages_kvec()
550 for (i = 0; i < ARRAY_SIZE(pagelist); i++) in iov_kunit_extract_pages_kvec()
551 pagelist[i] = (void *)(unsigned long)0xaa55aa55aa55aa55ULL; in iov_kunit_extract_pages_kvec()
561 KUNIT_EXPECT_EQ(test, iter.count, size - len); in iov_kunit_extract_pages_kvec()
562 size -= len; in iov_kunit_extract_pages_kvec()
567 for (i = 0; i < ARRAY_SIZE(pagelist); i++) { in iov_kunit_extract_pages_kvec()
569 ssize_t part = min_t(ssize_t, len, PAGE_SIZE - offset0); in iov_kunit_extract_pages_kvec()
573 while (from == pr->to) { in iov_kunit_extract_pages_kvec()
575 from = pr->from; in iov_kunit_extract_pages_kvec()
582 KUNIT_EXPECT_PTR_EQ(test, pagelist[i], p); in iov_kunit_extract_pages_kvec()
585 len -= part; in iov_kunit_extract_pages_kvec()
592 if (test->status == KUNIT_FAILURE) in iov_kunit_extract_pages_kvec()
603 * Test the extraction of ITER_BVEC-type iterators.
613 int i, from; in iov_kunit_extract_pages_bvec() local
624 from = pr->from; in iov_kunit_extract_pages_bvec()
628 for (i = 0; i < ARRAY_SIZE(pagelist); i++) in iov_kunit_extract_pages_bvec()
629 pagelist[i] = (void *)(unsigned long)0xaa55aa55aa55aa55ULL; in iov_kunit_extract_pages_bvec()
639 KUNIT_EXPECT_EQ(test, iter.count, size - len); in iov_kunit_extract_pages_bvec()
640 size -= len; in iov_kunit_extract_pages_bvec()
645 for (i = 0; i < ARRAY_SIZE(pagelist); i++) { in iov_kunit_extract_pages_bvec()
647 ssize_t part = min_t(ssize_t, len, PAGE_SIZE - offset0); in iov_kunit_extract_pages_bvec()
651 while (from == pr->to) { in iov_kunit_extract_pages_bvec()
653 from = pr->from; in iov_kunit_extract_pages_bvec()
657 ix = pr->page + from / PAGE_SIZE; in iov_kunit_extract_pages_bvec()
660 KUNIT_EXPECT_PTR_EQ(test, pagelist[i], p); in iov_kunit_extract_pages_bvec()
663 len -= part; in iov_kunit_extract_pages_bvec()
670 if (test->status == KUNIT_FAILURE) in iov_kunit_extract_pages_bvec()
681 * Test the extraction of ITER_XARRAY-type iterators.
691 int i, from; in iov_kunit_extract_pages_xarray() local
701 for (pr = kvec_test_ranges; pr->from >= 0; pr++) { in iov_kunit_extract_pages_xarray()
702 from = pr->from; in iov_kunit_extract_pages_xarray()
703 size = pr->to - from; in iov_kunit_extract_pages_xarray()
704 KUNIT_ASSERT_LE(test, pr->to, bufsize); in iov_kunit_extract_pages_xarray()
711 for (i = 0; i < ARRAY_SIZE(pagelist); i++) in iov_kunit_extract_pages_xarray()
712 pagelist[i] = (void *)(unsigned long)0xaa55aa55aa55aa55ULL; in iov_kunit_extract_pages_xarray()
720 KUNIT_EXPECT_EQ(test, iter.count, size - len); in iov_kunit_extract_pages_xarray()
723 size -= len; in iov_kunit_extract_pages_xarray()
727 for (i = 0; i < ARRAY_SIZE(pagelist); i++) { in iov_kunit_extract_pages_xarray()
729 ssize_t part = min_t(ssize_t, len, PAGE_SIZE - offset0); in iov_kunit_extract_pages_xarray()
736 KUNIT_EXPECT_PTR_EQ(test, pagelist[i], p); in iov_kunit_extract_pages_xarray()
739 len -= part; in iov_kunit_extract_pages_xarray()
746 if (test->status == KUNIT_FAILURE) in iov_kunit_extract_pages_xarray()
752 KUNIT_EXPECT_EQ(test, iter.iov_offset, pr->to - pr->from); in iov_kunit_extract_pages_xarray()