Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 1 | /* |
| 2 | * This testing program makes sure the badblocks implementation works. |
| 3 | * |
| 4 | * Copyright (C) 1996 by Theodore Ts'o. |
Theodore Ts'o | efc6f62 | 2008-08-27 23:07:54 -0400 | [diff] [blame] | 5 | * |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 6 | * %Begin-Header% |
Theodore Ts'o | 543547a | 2010-05-17 21:31:56 -0400 | [diff] [blame] | 7 | * This file may be redistributed under the terms of the GNU Library |
| 8 | * General Public License, version 2. |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 9 | * %End-Header% |
| 10 | */ |
| 11 | |
Theodore Ts'o | d1154eb | 2011-09-18 17:34:37 -0400 | [diff] [blame] | 12 | #include "config.h" |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 13 | #include <stdio.h> |
| 14 | #include <string.h> |
Theodore Ts'o | 4cbe8af | 1997-08-10 23:07:40 +0000 | [diff] [blame] | 15 | #if HAVE_UNISTD_H |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 16 | #include <unistd.h> |
Theodore Ts'o | 4cbe8af | 1997-08-10 23:07:40 +0000 | [diff] [blame] | 17 | #endif |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 18 | #include <fcntl.h> |
| 19 | #include <time.h> |
| 20 | #include <sys/stat.h> |
| 21 | #include <sys/types.h> |
| 22 | #if HAVE_ERRNO_H |
| 23 | #include <errno.h> |
| 24 | #endif |
| 25 | |
Theodore Ts'o | b5abe6f | 1998-01-19 14:47:53 +0000 | [diff] [blame] | 26 | #include "ext2_fs.h" |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 27 | #include "ext2fs.h" |
| 28 | |
Theodore Ts'o | 7d7bdd5 | 2003-06-24 17:34:02 -0400 | [diff] [blame] | 29 | #define ADD_BLK 0x0001 |
| 30 | #define DEL_BLK 0x0002 |
| 31 | |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 32 | blk_t test1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0 }; |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 33 | blk_t test2[] = { 11, 10, 9, 8, 7, 6, 5, 4, 3, 3, 2, 1 }; |
Theodore Ts'o | 9b9fe8a | 1999-11-08 22:05:04 +0000 | [diff] [blame] | 34 | blk_t test3[] = { 3, 1, 4, 5, 9, 2, 7, 10, 5, 6, 10, 8, 0 }; |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 35 | blk_t test4[] = { 20, 50, 12, 17, 13, 2, 66, 23, 56, 0 }; |
| 36 | blk_t test4a[] = { |
| 37 | 20, 1, |
| 38 | 50, 1, |
| 39 | 3, 0, |
| 40 | 17, 1, |
| 41 | 18, 0, |
| 42 | 16, 0, |
| 43 | 11, 0, |
| 44 | 12, 1, |
| 45 | 13, 1, |
Theodore Ts'o | efc6f62 | 2008-08-27 23:07:54 -0400 | [diff] [blame] | 46 | 14, 0, |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 47 | 80, 0, |
| 48 | 45, 0, |
| 49 | 66, 1, |
| 50 | 0 }; |
Theodore Ts'o | 7d7bdd5 | 2003-06-24 17:34:02 -0400 | [diff] [blame] | 51 | blk_t test5[] = { 31, 20, 17, 51, 23, 1, 56, 57, 0 }; |
| 52 | blk_t test5a[] = { |
| 53 | 50, ADD_BLK, |
| 54 | 51, DEL_BLK, |
| 55 | 57, DEL_BLK, |
| 56 | 66, ADD_BLK, |
| 57 | 31, DEL_BLK, |
| 58 | 12, ADD_BLK, |
| 59 | 2, ADD_BLK, |
| 60 | 13, ADD_BLK, |
| 61 | 1, DEL_BLK, |
| 62 | 0 |
| 63 | }; |
Theodore Ts'o | efc6f62 | 2008-08-27 23:07:54 -0400 | [diff] [blame] | 64 | |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 65 | |
| 66 | static int test_fail = 0; |
Theodore Ts'o | bc47952 | 2005-12-10 14:37:10 -0500 | [diff] [blame] | 67 | static int test_expected_fail = 0; |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 68 | |
| 69 | static errcode_t create_test_list(blk_t *vec, badblocks_list *ret) |
| 70 | { |
| 71 | errcode_t retval; |
| 72 | badblocks_list bb; |
| 73 | int i; |
Theodore Ts'o | efc6f62 | 2008-08-27 23:07:54 -0400 | [diff] [blame] | 74 | |
Theodore Ts'o | 9b9fe8a | 1999-11-08 22:05:04 +0000 | [diff] [blame] | 75 | retval = ext2fs_badblocks_list_create(&bb, 5); |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 76 | if (retval) { |
| 77 | com_err("create_test_list", retval, "while creating list"); |
| 78 | return retval; |
| 79 | } |
| 80 | for (i=0; vec[i]; i++) { |
Theodore Ts'o | 9b9fe8a | 1999-11-08 22:05:04 +0000 | [diff] [blame] | 81 | retval = ext2fs_badblocks_list_add(bb, vec[i]); |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 82 | if (retval) { |
| 83 | com_err("create_test_list", retval, |
| 84 | "while adding test vector %d", i); |
Theodore Ts'o | 9b9fe8a | 1999-11-08 22:05:04 +0000 | [diff] [blame] | 85 | ext2fs_badblocks_list_free(bb); |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 86 | return retval; |
| 87 | } |
| 88 | } |
| 89 | *ret = bb; |
| 90 | return 0; |
| 91 | } |
| 92 | |
| 93 | static void print_list(badblocks_list bb, int verify) |
| 94 | { |
| 95 | errcode_t retval; |
| 96 | badblocks_iterate iter; |
| 97 | blk_t blk; |
| 98 | int i, ok; |
Theodore Ts'o | efc6f62 | 2008-08-27 23:07:54 -0400 | [diff] [blame] | 99 | |
Theodore Ts'o | 9b9fe8a | 1999-11-08 22:05:04 +0000 | [diff] [blame] | 100 | retval = ext2fs_badblocks_list_iterate_begin(bb, &iter); |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 101 | if (retval) { |
| 102 | com_err("print_list", retval, "while setting up iterator"); |
| 103 | return; |
| 104 | } |
| 105 | ok = i = 1; |
Theodore Ts'o | 9b9fe8a | 1999-11-08 22:05:04 +0000 | [diff] [blame] | 106 | while (ext2fs_badblocks_list_iterate(iter, &blk)) { |
Eric Sandeen | d0ff90d | 2006-09-12 14:56:15 -0400 | [diff] [blame] | 107 | printf("%u ", blk); |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 108 | if (i++ != blk) |
| 109 | ok = 0; |
| 110 | } |
Theodore Ts'o | 9b9fe8a | 1999-11-08 22:05:04 +0000 | [diff] [blame] | 111 | ext2fs_badblocks_list_iterate_end(iter); |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 112 | if (verify) { |
| 113 | if (ok) |
| 114 | printf("--- OK"); |
| 115 | else { |
| 116 | printf("--- NOT OK"); |
| 117 | test_fail++; |
| 118 | } |
| 119 | } |
| 120 | } |
| 121 | |
| 122 | static void validate_test_seq(badblocks_list bb, blk_t *vec) |
| 123 | { |
| 124 | int i, match, ok; |
| 125 | |
| 126 | for (i = 0; vec[i]; i += 2) { |
Theodore Ts'o | 9b9fe8a | 1999-11-08 22:05:04 +0000 | [diff] [blame] | 127 | match = ext2fs_badblocks_list_test(bb, vec[i]); |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 128 | if (match == vec[i+1]) |
| 129 | ok = 1; |
| 130 | else { |
| 131 | ok = 0; |
| 132 | test_fail++; |
| 133 | } |
Eric Sandeen | d0ff90d | 2006-09-12 14:56:15 -0400 | [diff] [blame] | 134 | printf("\tblock %u is %s --- %s\n", vec[i], |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 135 | match ? "present" : "absent", |
| 136 | ok ? "OK" : "NOT OK"); |
| 137 | } |
| 138 | } |
| 139 | |
Theodore Ts'o | 7d7bdd5 | 2003-06-24 17:34:02 -0400 | [diff] [blame] | 140 | static void do_test_seq(badblocks_list bb, blk_t *vec) |
| 141 | { |
| 142 | int i, match; |
| 143 | |
| 144 | for (i = 0; vec[i]; i += 2) { |
| 145 | switch (vec[i+1]) { |
| 146 | case ADD_BLK: |
| 147 | ext2fs_badblocks_list_add(bb, vec[i]); |
| 148 | match = ext2fs_badblocks_list_test(bb, vec[i]); |
Eric Sandeen | d0ff90d | 2006-09-12 14:56:15 -0400 | [diff] [blame] | 149 | printf("Adding block %u --- now %s\n", vec[i], |
Theodore Ts'o | 7d7bdd5 | 2003-06-24 17:34:02 -0400 | [diff] [blame] | 150 | match ? "present" : "absent"); |
| 151 | if (!match) { |
| 152 | printf("FAILURE!\n"); |
| 153 | test_fail++; |
| 154 | } |
| 155 | break; |
| 156 | case DEL_BLK: |
| 157 | ext2fs_badblocks_list_del(bb, vec[i]); |
| 158 | match = ext2fs_badblocks_list_test(bb, vec[i]); |
Eric Sandeen | d0ff90d | 2006-09-12 14:56:15 -0400 | [diff] [blame] | 159 | printf("Removing block %u --- now %s\n", vec[i], |
Theodore Ts'o | efc6f62 | 2008-08-27 23:07:54 -0400 | [diff] [blame] | 160 | ext2fs_badblocks_list_test(bb, vec[i]) ? |
Theodore Ts'o | 7d7bdd5 | 2003-06-24 17:34:02 -0400 | [diff] [blame] | 161 | "present" : "absent"); |
| 162 | if (match) { |
| 163 | printf("FAILURE!\n"); |
| 164 | test_fail++; |
| 165 | } |
| 166 | break; |
| 167 | } |
| 168 | } |
| 169 | } |
| 170 | |
| 171 | |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 172 | int file_test(badblocks_list bb) |
| 173 | { |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 174 | badblocks_list new_bb = 0; |
| 175 | errcode_t retval; |
| 176 | FILE *f; |
| 177 | |
Theodore Ts'o | 68dbdc2 | 2003-05-03 16:39:50 -0400 | [diff] [blame] | 178 | f = tmpfile(); |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 179 | if (!f) { |
Theodore Ts'o | 68dbdc2 | 2003-05-03 16:39:50 -0400 | [diff] [blame] | 180 | fprintf(stderr, "Error opening temp file: %s\n", |
| 181 | error_message(errno)); |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 182 | return 1; |
| 183 | } |
| 184 | retval = ext2fs_write_bb_FILE(bb, 0, f); |
| 185 | if (retval) { |
| 186 | com_err("file_test", retval, "while writing bad blocks"); |
| 187 | return 1; |
| 188 | } |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 189 | |
Theodore Ts'o | 68dbdc2 | 2003-05-03 16:39:50 -0400 | [diff] [blame] | 190 | rewind(f); |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 191 | retval = ext2fs_read_bb_FILE2(0, f, &new_bb, 0, 0); |
| 192 | if (retval) { |
| 193 | com_err("file_test", retval, "while reading bad blocks"); |
| 194 | return 1; |
| 195 | } |
| 196 | fclose(f); |
| 197 | |
| 198 | if (ext2fs_badblocks_equal(bb, new_bb)) { |
| 199 | printf("Block bitmap matched after reading and writing.\n"); |
| 200 | } else { |
| 201 | printf("Block bitmap NOT matched.\n"); |
| 202 | test_fail++; |
| 203 | } |
Theodore Ts'o | 546a1ff | 2002-03-07 23:52:56 -0500 | [diff] [blame] | 204 | return 0; |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 205 | } |
| 206 | |
Theodore Ts'o | bc47952 | 2005-12-10 14:37:10 -0500 | [diff] [blame] | 207 | static void invalid_proc(ext2_filsys fs, blk_t blk) |
| 208 | { |
| 209 | if (blk == 34500) { |
| 210 | printf("Expected invalid block\n"); |
| 211 | test_expected_fail++; |
| 212 | } else { |
Eric Sandeen | d0ff90d | 2006-09-12 14:56:15 -0400 | [diff] [blame] | 213 | printf("Invalid block #: %u\n", blk); |
Theodore Ts'o | bc47952 | 2005-12-10 14:37:10 -0500 | [diff] [blame] | 214 | test_fail++; |
| 215 | } |
| 216 | } |
| 217 | |
| 218 | int file_test_invalid(badblocks_list bb) |
| 219 | { |
| 220 | badblocks_list new_bb = 0; |
| 221 | errcode_t retval; |
| 222 | ext2_filsys fs; |
| 223 | FILE *f; |
| 224 | |
| 225 | fs = malloc(sizeof(struct struct_ext2_filsys)); |
| 226 | memset(fs, 0, sizeof(struct struct_ext2_filsys)); |
| 227 | fs->magic = EXT2_ET_MAGIC_EXT2FS_FILSYS; |
| 228 | fs->super = malloc(SUPERBLOCK_SIZE); |
| 229 | memset(fs->super, 0, SUPERBLOCK_SIZE); |
| 230 | fs->super->s_first_data_block = 1; |
Valerie Aurora Henson | 4efbac6 | 2009-09-07 20:46:34 -0400 | [diff] [blame] | 231 | ext2fs_blocks_count_set(fs->super, 100); |
Theodore Ts'o | bc47952 | 2005-12-10 14:37:10 -0500 | [diff] [blame] | 232 | |
| 233 | f = tmpfile(); |
| 234 | if (!f) { |
| 235 | fprintf(stderr, "Error opening temp file: %s\n", |
| 236 | error_message(errno)); |
| 237 | return 1; |
| 238 | } |
| 239 | retval = ext2fs_write_bb_FILE(bb, 0, f); |
| 240 | if (retval) { |
| 241 | com_err("file_test", retval, "while writing bad blocks"); |
| 242 | return 1; |
| 243 | } |
| 244 | fprintf(f, "34500\n"); |
| 245 | |
| 246 | rewind(f); |
| 247 | test_expected_fail = 0; |
| 248 | retval = ext2fs_read_bb_FILE(fs, f, &new_bb, invalid_proc); |
| 249 | if (retval) { |
| 250 | com_err("file_test", retval, "while reading bad blocks"); |
| 251 | return 1; |
| 252 | } |
| 253 | fclose(f); |
| 254 | if (!test_expected_fail) { |
| 255 | printf("Expected test failure didn't happen!\n"); |
| 256 | test_fail++; |
| 257 | } |
Theodore Ts'o | efc6f62 | 2008-08-27 23:07:54 -0400 | [diff] [blame] | 258 | |
Theodore Ts'o | bc47952 | 2005-12-10 14:37:10 -0500 | [diff] [blame] | 259 | |
| 260 | if (ext2fs_badblocks_equal(bb, new_bb)) { |
| 261 | printf("Block bitmap matched after reading and writing.\n"); |
| 262 | } else { |
| 263 | printf("Block bitmap NOT matched.\n"); |
| 264 | test_fail++; |
| 265 | } |
| 266 | return 0; |
| 267 | } |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 268 | |
Theodore Ts'o | 546a1ff | 2002-03-07 23:52:56 -0500 | [diff] [blame] | 269 | int main(int argc, char **argv) |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 270 | { |
Theodore Ts'o | 7d7bdd5 | 2003-06-24 17:34:02 -0400 | [diff] [blame] | 271 | badblocks_list bb1, bb2, bb3, bb4, bb5; |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 272 | int equal; |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 273 | errcode_t retval; |
| 274 | |
Theodore Ts'o | 04f13d6 | 2009-09-08 21:33:03 -0400 | [diff] [blame] | 275 | add_error_table(&et_ext2_error_table); |
| 276 | |
Theodore Ts'o | 7d7bdd5 | 2003-06-24 17:34:02 -0400 | [diff] [blame] | 277 | bb1 = bb2 = bb3 = bb4 = bb5 = 0; |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 278 | |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 279 | printf("test1: "); |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 280 | retval = create_test_list(test1, &bb1); |
| 281 | if (retval == 0) |
| 282 | print_list(bb1, 1); |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 283 | printf("\n"); |
Theodore Ts'o | efc6f62 | 2008-08-27 23:07:54 -0400 | [diff] [blame] | 284 | |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 285 | printf("test2: "); |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 286 | retval = create_test_list(test2, &bb2); |
| 287 | if (retval == 0) |
| 288 | print_list(bb2, 1); |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 289 | printf("\n"); |
| 290 | |
| 291 | printf("test3: "); |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 292 | retval = create_test_list(test3, &bb3); |
| 293 | if (retval == 0) |
| 294 | print_list(bb3, 1); |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 295 | printf("\n"); |
Theodore Ts'o | efc6f62 | 2008-08-27 23:07:54 -0400 | [diff] [blame] | 296 | |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 297 | printf("test4: "); |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 298 | retval = create_test_list(test4, &bb4); |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 299 | if (retval == 0) { |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 300 | print_list(bb4, 0); |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 301 | printf("\n"); |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 302 | validate_test_seq(bb4, test4a); |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 303 | } |
| 304 | printf("\n"); |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 305 | |
Theodore Ts'o | 7d7bdd5 | 2003-06-24 17:34:02 -0400 | [diff] [blame] | 306 | printf("test5: "); |
| 307 | retval = create_test_list(test5, &bb5); |
| 308 | if (retval == 0) { |
| 309 | print_list(bb5, 0); |
| 310 | printf("\n"); |
| 311 | do_test_seq(bb5, test5a); |
| 312 | printf("After test5 sequence: "); |
| 313 | print_list(bb5, 0); |
| 314 | printf("\n"); |
| 315 | } |
| 316 | printf("\n"); |
| 317 | |
| 318 | if (bb1 && bb2 && bb3 && bb4 && bb5) { |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 319 | printf("Comparison tests:\n"); |
| 320 | equal = ext2fs_badblocks_equal(bb1, bb2); |
Theodore Ts'o | efc6f62 | 2008-08-27 23:07:54 -0400 | [diff] [blame] | 321 | printf("bb1 and bb2 are %sequal.\n", equal ? "" : "NOT "); |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 322 | if (equal) |
| 323 | test_fail++; |
| 324 | |
| 325 | equal = ext2fs_badblocks_equal(bb1, bb3); |
Theodore Ts'o | efc6f62 | 2008-08-27 23:07:54 -0400 | [diff] [blame] | 326 | printf("bb1 and bb3 are %sequal.\n", equal ? "" : "NOT "); |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 327 | if (!equal) |
| 328 | test_fail++; |
Theodore Ts'o | efc6f62 | 2008-08-27 23:07:54 -0400 | [diff] [blame] | 329 | |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 330 | equal = ext2fs_badblocks_equal(bb1, bb4); |
Theodore Ts'o | efc6f62 | 2008-08-27 23:07:54 -0400 | [diff] [blame] | 331 | printf("bb1 and bb4 are %sequal.\n", equal ? "" : "NOT "); |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 332 | if (equal) |
| 333 | test_fail++; |
Theodore Ts'o | 7d7bdd5 | 2003-06-24 17:34:02 -0400 | [diff] [blame] | 334 | |
| 335 | equal = ext2fs_badblocks_equal(bb4, bb5); |
Theodore Ts'o | efc6f62 | 2008-08-27 23:07:54 -0400 | [diff] [blame] | 336 | printf("bb4 and bb5 are %sequal.\n", equal ? "" : "NOT "); |
Theodore Ts'o | 7d7bdd5 | 2003-06-24 17:34:02 -0400 | [diff] [blame] | 337 | if (!equal) |
| 338 | test_fail++; |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 339 | printf("\n"); |
| 340 | } |
Theodore Ts'o | efc6f62 | 2008-08-27 23:07:54 -0400 | [diff] [blame] | 341 | |
Theodore Ts'o | 7d7bdd5 | 2003-06-24 17:34:02 -0400 | [diff] [blame] | 342 | file_test(bb4); |
Theodore Ts'o | bc47952 | 2005-12-10 14:37:10 -0500 | [diff] [blame] | 343 | |
| 344 | file_test_invalid(bb4); |
Theodore Ts'o | efc6f62 | 2008-08-27 23:07:54 -0400 | [diff] [blame] | 345 | |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 346 | if (test_fail == 0) |
| 347 | printf("ext2fs library badblocks tests checks out OK!\n"); |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 348 | |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 349 | if (bb1) |
| 350 | ext2fs_badblocks_list_free(bb1); |
| 351 | if (bb2) |
| 352 | ext2fs_badblocks_list_free(bb2); |
| 353 | if (bb3) |
| 354 | ext2fs_badblocks_list_free(bb3); |
| 355 | if (bb4) |
| 356 | ext2fs_badblocks_list_free(bb4); |
| 357 | |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 358 | return test_fail; |
Theodore Ts'o | 57dca85 | 2000-07-04 19:20:25 +0000 | [diff] [blame] | 359 | |
Theodore Ts'o | 19c78dc | 1997-04-29 16:17:09 +0000 | [diff] [blame] | 360 | } |