static bool do_tests(struct ext4_blockdev *part_blockdev) { tim_wait_ms(TEST_DELAY_MS); if (!test_lwext4_mount(part_blockdev, bc)) return false; tim_wait_ms(TEST_DELAY_MS); ext4_cache_write_back("/mp/", 1); test_lwext4_cleanup(); if (sbstat) { tim_wait_ms(TEST_DELAY_MS); test_lwext4_mp_stats(); } tim_wait_ms(TEST_DELAY_MS); test_lwext4_dir_ls("/mp/"); if (!test_lwext4_dir_test(dir_cnt)) return false; tim_wait_ms(TEST_DELAY_MS); if (!test_lwext4_file_test(rw_buff, rw_szie, rw_count)) return false; if (sbstat) { tim_wait_ms(TEST_DELAY_MS); test_lwext4_mp_stats(); } if (cleanup_flag) { tim_wait_ms(TEST_DELAY_MS); test_lwext4_cleanup(); } if (bstat) { tim_wait_ms(TEST_DELAY_MS); test_lwext4_block_stats(); } ext4_cache_write_back("/mp/", 0); if (!test_lwext4_umount()) return false; return true; }
bool test_lwext4_umount(void) { int r; ext4_cache_write_back("/mp/", 0); r = ext4_journal_stop("/mp/"); if (r != EOK) { printf("ext4_journal_stop: fail %d", r); return false; } r = ext4_umount("/mp/"); if (r != EOK) { printf("ext4_umount: fail %d", r); return false; } return true; }
bool test_lwext4_mount(struct ext4_blockdev *bdev, struct ext4_bcache *bcache) { int r; bc = bcache; bd = bdev; if (!bd) { printf("test_lwext4_mount: no block device\n"); return false; } ext4_dmask_set(DEBUG_ALL); r = ext4_device_register(bd, bc ? bc : 0, "ext4_fs"); if (r != EOK) { printf("ext4_device_register: rc = %d\n", r); return false; } r = ext4_mount("ext4_fs", "/mp/", false); if (r != EOK) { printf("ext4_mount: rc = %d\n", r); return false; } r = ext4_recover("/mp/"); if (r != EOK && r != ENOTSUP) { printf("ext4_recover: rc = %d\n", r); return false; } r = ext4_journal_start("/mp/"); if (r != EOK) { printf("ext4_journal_start: rc = %d\n", r); return false; } ext4_cache_write_back("/mp/", 1); return true; }