On 2.01.20 г. 17:40 ч., David Sterba wrote:
> On Tue, Dec 10, 2019 at 08:00:45PM +0200, Nikolay Borisov wrote:
>> This is enough to exercise out of boundary address exclusion as well as
>> address matching.
>>
>> Signed-off-by: Nikolay Borisov <nborisov@xxxxxxxx>
>> ---
>> V2:
>> * Adjusted comments about some members of struct rmap_test_vector
>> * Fixed inline comments
>> * Correctly handle error when initialising dummy device
>> * Other minor cosmetic changes around comments/braces for single statement 'if'
>> and structure initialization
>
> I still found issues unfixed from v1 and some that I did not notice
> before
>
>> fs/btrfs/tests/extent-map-tests.c | 146 +++++++++++++++++++++++++++++-
>> 1 file changed, 145 insertions(+), 1 deletion(-)
>>
>> diff --git a/fs/btrfs/tests/extent-map-tests.c b/fs/btrfs/tests/extent-map-tests.c
>> index 4a7f796c9900..4878904434af 100644
>> --- a/fs/btrfs/tests/extent-map-tests.c
>> +++ b/fs/btrfs/tests/extent-map-tests.c
>> @@ -6,6 +6,10 @@
>> #include <linux/types.h>
>> #include "btrfs-tests.h"
>> #include "../ctree.h"
>> +#include "../volumes.h"
>> +#include "../disk-io.h"
>> +#include "../block-group.h"
>> +
>
> Extra newline
>
>>
>> static void free_extent_map_tree(struct extent_map_tree *em_tree)
>> {
>> @@ -437,11 +441,144 @@ static int test_case_4(struct btrfs_fs_info *fs_info,
>> return ret;
>> }
>>
>> +struct rmap_test_vector {
>> + u64 raid_type;
>> + u64 physical_start;
>> + u64 data_stripe_size;
>> + u64 num_data_stripes;
>> + u64 num_stripes;
>> + /* Assume we won't have more than 5 physical stripes */
>> + u64 data_stripe_phys_start[5];
>> + int expected_mapped_addr;
>
> This should be bool
Actually the idea here is for expected_mapped_addr to contains the
number of addresses we are expected to map. Currently tests only expect
0 or 1 but if tests are expanded in the future this might be 2 or 3.
THe body of the test does:
if (out_ndaddrs != test->expected_mapped_addr) {
for (i = 0; i < out_ndaddrs; i++)
test_msg("Mapped %llu", logical[i]);
<snip>
>> int btrfs_test_extent_map(void)
>> {
>> struct btrfs_fs_info *fs_info = NULL;
>> struct extent_map_tree *em_tree;
>> - int ret = 0;
>> + int ret = 0, i;
>> + struct rmap_test_vector rmap_tests[] = {
>> + {
>> + /*
>> + * Tests a chunk with 2 data stripes one of which
>> + * interesects the physical address of the super block
>> + * is correctly recognised.
>> + */
>> + .raid_type = BTRFS_BLOCK_GROUP_RAID1,
>> + .physical_start = SZ_64M - SZ_4M,
>> + .data_stripe_size = SZ_256M,
>> + .num_data_stripes = 2,
>> + .num_stripes = 2,
>> + .data_stripe_phys_start = {SZ_64M - SZ_4M, SZ_64M - SZ_4M + SZ_256M},
>
> Formatting
What do you mean?
<snip>