aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/kernel/filesystems/ext2/filesystem.tests.cpp13
-rw-r--r--kernel/kernel/filesystems/ext2/inode.tests.cpp5
-rw-r--r--kernel/kernel/test_support/filesystems/ext2.cpp1
3 files changed, 12 insertions, 7 deletions
diff --git a/kernel/kernel/filesystems/ext2/filesystem.tests.cpp b/kernel/kernel/filesystems/ext2/filesystem.tests.cpp
index c7130e99..7477a51b 100644
--- a/kernel/kernel/filesystems/ext2/filesystem.tests.cpp
+++ b/kernel/kernel/filesystems/ext2/filesystem.tests.cpp
@@ -273,6 +273,7 @@ SCENARIO("Ext2 block writing includes direct and all indirect levels", "[filesys
superblock.inodes_per_group = 32;
superblock.rev_level = kernel::filesystems::ext2::constants::dynamic_revision;
superblock.inode_size = 128;
+ superblock.first_data_block = 1;
auto block_group_descriptor = kernel::filesystems::ext2::block_group_descriptor{};
block_group_descriptor.block_bitmap = 255;
@@ -322,7 +323,7 @@ SCENARIO("Ext2 block writing includes direct and all indirect levels", "[filesys
REQUIRE(write_global_block_number_to_inode_block_index(singly_start, inode_data, singly_global_block_number,
*driver_state, batch));
- REQUIRE(inode_data.block[12] == 16);
+ REQUIRE(inode_data.block[12] == 17);
REQUIRE(read_u32(static_cast<kstd::bytes>(inode_data.block[12]) * block_size.value) ==
singly_global_block_number);
@@ -333,18 +334,18 @@ SCENARIO("Ext2 block writing includes direct and all indirect levels", "[filesys
REQUIRE(write_global_block_number_to_inode_block_index(doubly_start, inode_data, doubly_global_block_number,
*driver_state, batch));
- REQUIRE(inode_data.block[13] == 17);
+ REQUIRE(inode_data.block[13] == 18);
auto const doubly_leaf_table = read_u32(static_cast<size_t>(inode_data.block[13]) * block_size);
- REQUIRE(doubly_leaf_table == 18);
+ REQUIRE(doubly_leaf_table == 19);
REQUIRE(read_u32(static_cast<size_t>(doubly_leaf_table) * block_size) == doubly_global_block_number);
REQUIRE(write_global_block_number_to_inode_block_index(triply_start, inode_data, triply_global_block_number,
*driver_state, batch));
- REQUIRE(inode_data.block[14] == 19);
+ REQUIRE(inode_data.block[14] == 20);
auto const triply_middle_table = read_u32(static_cast<size_t>(inode_data.block[14]) * block_size);
- REQUIRE(triply_middle_table == 20);
+ REQUIRE(triply_middle_table == 21);
auto const triply_leaf_table = read_u32(static_cast<size_t>(triply_middle_table) * block_size);
- REQUIRE(triply_leaf_table == 21);
+ REQUIRE(triply_leaf_table == 22);
REQUIRE(read_u32(static_cast<size_t>(triply_leaf_table) * block_size) == triply_global_block_number);
auto inode = kernel::filesystems::ext2::inode{42, inode_data};
diff --git a/kernel/kernel/filesystems/ext2/inode.tests.cpp b/kernel/kernel/filesystems/ext2/inode.tests.cpp
index d7d27553..bdfb661d 100644
--- a/kernel/kernel/filesystems/ext2/inode.tests.cpp
+++ b/kernel/kernel/filesystems/ext2/inode.tests.cpp
@@ -422,6 +422,7 @@ SCENARIO("Ext2 inode write across block boundaries", "[filesystem][ext2][inode]"
superblock.inode_size = 128;
superblock.rev_level = 1;
superblock.free_blocks_count = 64 - 15;
+ superblock.first_data_block = 1;
auto block_group_descriptor = kernel::filesystems::ext2::block_group_descriptor{};
block_group_descriptor.inode_table = 5;
@@ -544,7 +545,7 @@ SCENARIO("Ext2 inode write across block boundaries", "[filesystem][ext2][inode]"
REQUIRE(inode_data.blocks + 2 == read_inode.data().blocks);
auto expected_blocks = inode_data.block;
- expected_blocks[2] = 16;
+ expected_blocks[2] = 17;
auto const read_blocks = read_inode.data().block;
REQUIRE(expected_blocks == read_blocks);
}
@@ -569,6 +570,7 @@ SCENARIO("Ext2 inode get_size() and set_size() handles size correctly depending
superblock.blocks_per_group = 64;
superblock.inodes_per_group = 32;
superblock.inode_size = 128;
+ superblock.first_data_block = 1;
GIVEN("an ext2 inode with good old revision and inode_data.size = 256, inode_data.dir_acl = 32")
{
@@ -788,6 +790,7 @@ SCENARIO("Ext2 inode read_directory skips deleted entries and paginates correctl
superblock.inodes_per_group = 32;
superblock.inode_size = 128;
superblock.rev_level = 1;
+ superblock.first_data_block = 1;
auto block_group_descriptor = kernel::filesystems::ext2::block_group_descriptor{};
block_group_descriptor.inode_table = 5;
diff --git a/kernel/kernel/test_support/filesystems/ext2.cpp b/kernel/kernel/test_support/filesystems/ext2.cpp
index d9008ade..92f56aef 100644
--- a/kernel/kernel/test_support/filesystems/ext2.cpp
+++ b/kernel/kernel/test_support/filesystems/ext2.cpp
@@ -47,6 +47,7 @@ namespace kernel::tests::filesystems::ext2
superblock.inodes_per_group = 32;
superblock.rev_level = 1;
superblock.inode_size = 128;
+ superblock.first_data_block = 1;
setup_mock_ext2_layout(device, superblock);
}