Lines Matching defs:eb

342 static int check_eb_bitmap(unsigned long *bitmap, struct extent_buffer *eb)
346 for (i = 0; i < eb->len * BITS_PER_BYTE; i++) {
350 bit1 = !!extent_buffer_test_bit(eb, 0, i);
355 read_extent_buffer(eb, &has, i / BITS_PER_BYTE, 1);
364 bit1 = !!extent_buffer_test_bit(eb, i / BITS_PER_BYTE,
370 read_extent_buffer(eb, &has, i / BITS_PER_BYTE, 1);
384 struct extent_buffer *eb,
391 extent_buffer_bitmap_set(eb, byte_start, bit_start, bit_len);
392 ret = check_eb_bitmap(bitmap, eb);
399 struct extent_buffer *eb,
406 extent_buffer_bitmap_clear(eb, byte_start, bit_start, bit_len);
407 ret = check_eb_bitmap(bitmap, eb);
412 static int __test_eb_bitmaps(unsigned long *bitmap, struct extent_buffer *eb)
415 unsigned long byte_len = eb->len;
419 ret = test_bitmap_clear("clear all run 1", bitmap, eb, 0, 0,
424 ret = test_bitmap_set("set all", bitmap, eb, 0, 0, byte_len * BITS_PER_BYTE);
428 ret = test_bitmap_clear("clear all run 2", bitmap, eb, 0, 0,
433 ret = test_bitmap_set("same byte set", bitmap, eb, 0, 2, 4);
437 ret = test_bitmap_clear("same byte partial clear", bitmap, eb, 0, 4, 1);
441 ret = test_bitmap_set("cross byte set", bitmap, eb, 2, 4, 8);
445 ret = test_bitmap_set("cross multi byte set", bitmap, eb, 4, 4, 24);
449 ret = test_bitmap_clear("cross byte clear", bitmap, eb, 2, 6, 4);
453 ret = test_bitmap_clear("cross multi byte clear", bitmap, eb, 4, 6, 20);
459 ret = test_bitmap_set("cross page set", bitmap, eb,
465 ret = test_bitmap_set("cross page set all", bitmap, eb, 0, 0,
470 ret = test_bitmap_clear("cross page clear", bitmap, eb,
482 ret = test_bitmap_clear("clear all run 3", bitmap, eb, 0, 0,
492 extent_buffer_bitmap_set(eb, 0, i * 32 + j, 1);
497 ret = check_eb_bitmap(bitmap, eb);
510 struct extent_buffer *eb = NULL;
528 eb = __alloc_dummy_extent_buffer(fs_info, 0, nodesize);
529 if (!eb) {
535 ret = __test_eb_bitmaps(bitmap, eb);
539 free_extent_buffer(eb);
545 eb = __alloc_dummy_extent_buffer(fs_info, sectorsize, nodesize);
546 if (!eb) {
552 ret = __test_eb_bitmaps(bitmap, eb);
554 free_extent_buffer(eb);
671 static void dump_eb_and_memory_contents(struct extent_buffer *eb, void *memory,
674 for (int i = 0; i < eb->len; i++) {
675 struct page *page = folio_page(eb->folios[i >> PAGE_SHIFT], 0);
680 test_err("eb and memory diffs at byte %u, eb has 0x%02x memory has 0x%02x",
687 static int verify_eb_and_memory(struct extent_buffer *eb, void *memory,
690 for (int i = 0; i < (eb->len >> PAGE_SHIFT); i++) {
691 void *eb_addr = folio_address(eb->folios[i]);
694 dump_eb_and_memory_contents(eb, memory, test_name);
705 static void init_eb_and_memory(struct extent_buffer *eb, void *memory)
707 get_random_bytes(memory, eb->len);
708 write_extent_buffer(eb, memory, 0, eb->len);
714 struct extent_buffer *eb = NULL;
733 eb = __alloc_dummy_extent_buffer(fs_info, SZ_1M, nodesize);
734 if (!eb) {
740 init_eb_and_memory(eb, memory);
741 ret = verify_eb_and_memory(eb, memory, "full eb write");
746 memcpy_extent_buffer(eb, 0, 16, 16);
747 ret = verify_eb_and_memory(eb, memory, "same page non-overlapping memcpy 1");
752 memcpy_extent_buffer(eb, 0, 2048, 16);
753 ret = verify_eb_and_memory(eb, memory, "same page non-overlapping memcpy 2");
757 memcpy_extent_buffer(eb, 0, 2048, 2048);
758 ret = verify_eb_and_memory(eb, memory, "same page non-overlapping memcpy 3");
763 memmove_extent_buffer(eb, 512, 256, 512);
764 ret = verify_eb_and_memory(eb, memory, "same page overlapping memcpy 1");
769 memmove_extent_buffer(eb, 2048, 512, 2048);
770 ret = verify_eb_and_memory(eb, memory, "same page overlapping memcpy 2");
774 memmove_extent_buffer(eb, 512, 2048, 2048);
775 ret = verify_eb_and_memory(eb, memory, "same page overlapping memcpy 3");
781 memcpy_extent_buffer(eb, 0, 4096 - 128, 256);
782 ret = verify_eb_and_memory(eb, memory, "cross page non-overlapping memcpy 1");
787 memcpy_extent_buffer(eb, 4096 - 128, 4096 + 128, 256);
788 ret = verify_eb_and_memory(eb, memory, "cross page non-overlapping memcpy 2");
793 memmove_extent_buffer(eb, 4096 - 128, 4096 - 64, 256);
794 ret = verify_eb_and_memory(eb, memory, "cross page overlapping memcpy 1");
799 memmove_extent_buffer(eb, 4096 - 64, 4096 - 128, 256);
800 ret = verify_eb_and_memory(eb, memory, "cross page overlapping memcpy 2");
805 free_extent_buffer(eb);