blob: 4d7b72f63056e2e22c6bf44488bd6708c90c7c47 [file] [log] [blame]
Theodore Ts'o246501c1998-03-24 16:22:38 +000011998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
2
3 * unix.c: Fix bug in check of feature set, to make sure we can
4 really fix this filesystem.
5
6 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
7 num field be a 64 bit type. Add the problem code
8 PR_1_FEATURE_LARGE_FILES
9
10 * problem.c: Add table entry for the problem code
11 PR_1_FEATURE_LARGE_FILES.
12
13 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
14 a problem for directory inodes. (Since it is also
15 i_size_high now.) If there are no large_files, then
16 clear the LARGE_FLAG feature flag. If there are
17 large_files, but the LARGE_FLAG feature flag is not set,
18 complain and offer to fix it.
19 (check_blocks): Add support to deal with non-directory
20 inodes that have i_size_high set (i.e., large_files).
21 Don't give an error if a directory has preallocated
22 blocks, to support the DIR_PREALLOC feature.
23 (process_block, process_bad_block): The blockcnt variable
24 is a type of blkcnt_t, for conversion to the new
25 block_iterate2.
26
27 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
28 a problem for directory inodes. (Since it is also
29 i_size_high now.)
30
31 * message.c (expand_inode_expression): Print a 64-bits of the
32 inode size for non-directory inodes. (Directory inodes
33 can only use a 32-bit directory acl size, since
34 i_size_high is shared with i_dir_acl.) Add sanity check
35 so that trying to print out the directory acl on a
36 non-directory inode will print zero.
37 (expand_percent_expression): %B and %N, which print
38 pctx->blkcount and pctx->num, can now be 64 bit
39 variables. Print them using the "%lld" format if
40 EXT2_NO_64_TYPE is not defined.
41
42 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
43
44 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
45 field.
46
Theodore Ts'ob6f79831998-03-09 13:10:37 +000047Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
48
49 * pass3.c (fix_dotdot_proc):
50 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
51 * message.c (expand_dirent_expression): Mask off the high eight
52 bits of the directory entry's name_len field, so that it
53 can be used for other purposes.
54
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +000055Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
56
57 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
58 include EXT2_FLAG_RESTART anymore, we need to adjust this
59 routine so that it *does* return in the case of it seeing
60 EXT2_FLAG_RESTART.
61
62 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
63 done callback function, which may set context abort
64 flags. So we need to test the context abort flags after
65 we call ext2_get_next_inode().
66 (process_inodes): If we abort due out of process_inodes,
67 do a clean exit by breaking out of the for loop instead of
68 just returning.
69
70 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
71 considered a SIGNAL mask (i.e., requiring an immediate
72 abort of processing to restart). FLAG_RESTART just means
73 that we want to restart once pass 1 is complete.
74
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +000075Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
76
77 * Change the progress function to return an integer; if returns 1,
78 then the progress function is expected to have set the
79 e2fsck context flag signalling a user abort, and the
80 caller should also initiate a user abort.
81
Theodore Ts'o63c49691998-02-20 05:24:59 +000082Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
83
84 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
85 end_problem_latch() unless there was actually a problem
86 latched. Simplifies semantics of the latch processing.
87
Theodore Ts'o43139321998-02-16 22:34:46 +000088Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
89
90 * e2fsck.h: Add new field, priv_data to the e2fsck context
91 structure. It should be used by callers of the e2fsck
92 functions only, and not by anything in e2fsck itself.
93
94Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
95
96 * super.c: Instead of call ext2fs_get_device_size(), define and call
97 e2fsck_get_device_size(). (This function may be stubbed
98 out in special versions of e2fsck.)
99
100 * pass3.c, pass4.c: Remove extra calls to the progress function
101 that weren't needed.
102
103 * mke2fs.8.in: Update man page to note that the format of the bad
104 block file is the same as the one generated by badblocks.
105
Theodore Ts'o54be2cc1998-02-01 12:58:48 +0000106Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
107
108 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
109
110 * e2fsck.h: Include <time.h> since it is needed
111
112 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
113 processing.
114
Theodore Ts'o24dd4021998-02-01 00:16:40 +0000115Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
116
117 * unix.c (main): In the case where the filesystem revision is too
118 high, print the message about the superblock possibly
119 being corrupt.
120
121 * e2fsck.8.in: Add expanded comments about how the -b option
122 works.
123
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +0000124Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
125
126 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
127 the ext2-specific header files are in a flat directory.
128
129 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
130 super.c, swapfs.c, unix.c: Explicitly cast all assignments
131 from void * to be compatible with C++.
132
133Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
134
135 * unix.c (sync_disk): Remove sync_disk and calls to that function,
136 since ext2fs_close() now takes care of this.
137
138Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
139
140 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
141 ehandler.c, unix.c: Change use of private to be priv_data,
142 to avoid C++ reserved name clash.
143
Theodore Ts'o5be8dc21997-12-01 18:24:10 +0000144Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
145
146 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
147 of e2fsck_get_num_dirs, which has been removed.
148
149Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
150
151 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
152 to compile and install flushb.
153
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +0000154Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
155
156 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
157 to make sure the extra i_blocks in a device are cleared if
158 the immutable flag is set.
159
160 * util.c (print_resource_track): Fix typo which caused the
161 time/resource tracking to print "Pass 1 :" instead of
162 "Pass 1: ".
163
Theodore Ts'ob8647fa1997-11-20 21:52:43 +0000164Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
165
166 * pass3.c (expand_directory): Fix bug which could cause core dump
167 when expanding the directory, and the bitmaps hadn't yet
168 been read in. Also, only use ext2fs_write_dir_block when
169 writing a directory block, not when writing out a fresh
170 indirect block.
171
Theodore Ts'o8039c481997-11-19 21:39:13 +0000172Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
173
174 * pass1.c (process_bad_block): Fix bug where first_block wasn't
175 getting incremented, which caused user to get a
176 "Programming error?" warning if there was a bad block in a
177 non-primary superblock/group_descriptor. Also fixed
178 another bug so that ext2fs_bg_has_super() is consulted, to
179 avoid problems when using a filesystem with the
180 sparse_groups option set and there are bad blocks at the
181 beginning of a group which doesn't have a superblock.
182
Theodore Ts'of8188ff1997-11-14 05:23:04 +0000183Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
184
185 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
186 progress indicator function.
187
188 * pass1.c (scan_callback): Add call to the progress feedback
189 function (if it exists).
190
191Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
192
193 * super.c (check_super_block): Skip the device size check if the
194 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
195
196 * iscan.c (main): Don't use fatal_error() anymore.
197
198 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
199 calling fatal_error(0).
200
201 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
202 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
203
204 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
205
206 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
207
208 * problemP.h: New file which separates out the private fix_problem
209 data structures.
210
211 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
212 swapfs.c util.c: allocate_memory() now takes a e2fsck
213 context as its first argument, and rename it to be
214 e2fsck_allocate_memory().
215
Theodore Ts'o08b21301997-11-03 19:42:40 +0000216Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
217
Theodore Ts'o68227541997-11-04 04:25:22 +0000218 * unix.c (main): Add a special case check for the error code EROFS
219 and display an appropriate error message for this case.
220
Theodore Ts'o08b21301997-11-03 19:42:40 +0000221 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
222 to take the e2fsck context as their first argument.
223 Change dir_info.c routines to take an e2fsck_context,
224 renamed them to start with e2fsck_ to avoid namespace
225 issues, and changed them to store the directory
226 information inside the e2fsck context.
227 Added e2fsck_run() which calls all of the e2fsck passes in
228 the correct order, and which handles the return of abort
229 codes. Added abort processing, both via setjmp/longjmp
230 and via flags in the e2fsck context. Use a flag in the
231 e2fsck context instead of the restart_e2fsck global
232 variable. Change uses of free and malloc to
233 ext2fs_free_mem and ext2fs_get_mem.
234
Theodore Ts'o291c9041997-10-31 06:17:08 +0000235Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
236
237 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
238 consistency.
239
Theodore Ts'oc555aeb1997-10-25 04:16:53 +0000240Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
241
242 * pass3.c (get_lost_and_found): Check error return of
243 EXT2_FILE_NOT_FOUND instead of ENOTDIR
244
245 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
246 instead of ENOTDIR
247
Theodore Ts'o622f5f21997-10-24 04:18:21 +0000248Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
249
Theodore Ts'o519149f1997-10-25 03:49:49 +0000250 * unix.c (PRS): Make the variable which getopt returns into be
251 an int, so that it won't lose on platforms where char is
252 unsigned.
253
Theodore Ts'o622f5f21997-10-24 04:18:21 +0000254 * pass1b.c (clone_file): Fix bug in error reporting in the case
255 where cs.errcode is non-zero.
256
Theodore Ts'ob2da22d1997-10-20 01:16:35 +0000257Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
258
Theodore Ts'o8bf191e1997-10-20 01:38:32 +0000259 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
260 RESOURCE_TRACK around code which uses init_resource_track
261 and print_resource_track. (Not all systems have timeval)
262
Theodore Ts'ob2da22d1997-10-20 01:16:35 +0000263 * super.c: Remove excess #includes which are not necessary.
264
265 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
266
Theodore Ts'o1b6bf171997-10-03 17:48:10 +0000267Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
268
269 * pass*.c, super.c: Massive changes to avoid using printf and
270 com_err routines. All diagnostic messages are now routed
271 through the fix_problem interface.
272
273Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
274
275 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
276 entries.
277
278 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
279 PR_2_DUP_DOT_DOT.
280
281Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
282
283 * problem.c: Added new problem codes for some of the
284 superblock corruption checks, and for the pass header
285 messages. ("Pass 1: xxxxx")
286
287 * util.c (print_resource_track): Now takes a description
288 argument.
289
290Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
291
292 * super.c, unix.c, e2fsck.c: New files to separate out the
293 operating-specific operations out from e2fsck.c.
294 e2fsck.c now contains the global e2fsck context management
295 routines, and super.c contains the "pass 0" initial
296 validation of the superblock and global block group
297 descriptors.
298
299 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
300 (nearly) all global variables and moved them to the e2fsck
301 context structure.
302
303 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
304 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
305 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
306
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +0000307Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
308
309 * message.c: Add compression for the word "Illegal"
310
311 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
312 PR_2_BAD_BLOCK_DEV
313
314Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
315
316 * pass1.c (pass1, check_device_inode), pass2.c
317 (process_bad_inode): Use a more stringent test for a valid
318 device.
319
Theodore Ts'oa47b66e1997-08-10 23:02:21 +0000320Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
321
322 * e2fsck.c (check_mount): Add stronger warning message about the
323 perils of running e2fsck on a mounted filesystem.
324
Theodore Ts'o024996c1997-06-17 05:38:35 +0000325Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
326
327 * Release of E2fsprogs 1.11
328
Theodore Ts'oda2e97f1997-06-12 04:28:07 +0000329Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
330
331 * pass1.c (mark_table_blocks): Mark the superblock and group
332 descriptor blocks first, so that any conflicts between
333 these and the bitmap or inode table blocks is noticed.
334
335 * problem.c: Fix message printed out when a block or inode bitmap
336 conflicts with other fs data, has the correct group number
337 in it.
338
Theodore Ts'o7ac02a51997-06-11 18:32:35 +0000339Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
340
341 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
342
Theodore Ts'of635d7f1997-05-09 02:50:16 +0000343Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
344
Theodore Ts'o583ccdc1997-05-09 03:06:31 +0000345 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
346 Hawes (whawes@star.net).
347
Theodore Ts'of635d7f1997-05-09 02:50:16 +0000348 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
349 bad blocks command so that all of the filesystem gets
350 tested in the case where the blocksize 2048 or 4096.
351
Theodore Ts'oa29f4d31997-04-29 21:26:48 +0000352Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
353
354 * Release of E2fsprogs version 1.10
355
356Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
357
358 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
359 where ext2fs_get_next_inode returns the
360 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
361
362Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
363
364 * Release of E2fsprogs version 1.09
365
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +0000366Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
367
368 * Release of E2fsprogs version 1.08
369
Theodore Ts'o521e3681997-04-29 17:48:10 +0000370Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
371
372 * pass1b.c (clone_file_block): If we clone a directory, we need to
373 update the dblist entry so that we check (and correct) the
374 right directory block.
375
376Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
377
378 * pass1.c (process_block): Don't clear blocks references to
379 filesystem metadata; let pass 1B handle this case.
380
381 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
382
383 * pass1b.c (pass1d): Deal with a block which is shared with
384 filesystem metadata.
385
386 * e2fsck.h: Make block_illegal_map be a global variable
387
388Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
389
390 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
391 feature.
392 (get_backup_sb): New function which attempts to obtain the
393 correct backup superblock (if possible).
394
395Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
396
397 * e2fsck.c (main): Check the version of the library, and warn if
398 the library is out of date; this happens generally due to
399 users who manually install e2fsprogs.
400
401 * pass1.c (pass1_get_blocks): If the passed in inode number for
402 get_blocks isn't what we're expecting pass back
403 EXT2_ET_CALLBACK_NOT_HANDLED.
404
Theodore Ts'o21c84b71997-04-29 16:15:03 +0000405Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
406
407 * Release of E2fsprogs version 1.07
408
409Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
410
411 * icount.c: New file which implements an inode count abstraction.
412 This significantly reduces amount of memory needed to
413 check really large filesystems.
414
415 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
416 abstraction.
417
418Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
419
420 * dirinfo.c (dir_info_iter): New function which allows iteration
421 over the directories in the dir_info map.
422
423 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
424 over all directories in the dir_info structure, instead of
425 iterating all inodes looking for directories, and then
426 looking up the directories using get_dir_info().
427
428Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
429
430 * pass1.c (pass1, process_block):
431 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
432 manual code to manage the directory block list information.
433
434 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
435 (deallocate_inode): Call the ext2 library routine
436 ext2_inode_has_valid_blocks() instead of
437 inode_has_valid_blocks().
438
439 * swapfs.c (swap_inodes): Add check so that we don't try to call
440 swap_inode_blocks unless the inode has valid blocks.
441 (Otherwise a long fast symlink might cause
442 swap_inode_blocks to erroneously get called.)
443
444Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
445
446 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
447 PR_2_DOT_DOT_NULL_TERM.
448
449 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
450 .. entries are null-terminated, since the 2.0 kernel
451 requires this (for no good reason).
452
453Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
454
455 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
456 that we can recover from missing inode tables.
457
458 * dirinfo.c (get_dir_info): If there are no directories in the
459 dir_info abstraction, don't core dump (because dir_info is
460 NULL).
461
462 * e2fsck.c (main): Don't try using the backup superblocks if there
463 aren't any.
464 (check_super_block): If there are illegal inode table or
465 bitmaps, set the filesystem as being in error.
466
467Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
468
469 * pass2.c (check_dir_block): Added check to make sure that rec_len
470 is a a multiple of 4 (so that the directory entries are
471 4-byte aligned).
472
473Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
474
475 * Makefile.in (uninstall): Uninstall all programs in the PROGS
476 line.
477 (PROGS): Don't build and install the extend program by
478 default.
479
480
481Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
482
483 * pass1.c (process_inodes): Make sure the stashed_ino variable is
484 saved and restored as well.
485 (pass1): For fast sym links, skip the check_blocks
486 processing step altogether.
487
488Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
489
490 * problem.c, message.c: New files, to completely refurbish how
491 filesystem problems are reported to the user. The
492 diagnostic messages are now encoded out in an easily
493 customizable, extensible format. The messages printed out
494 in preen mode are all on one line, and contain the device
495 name.
496
497Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
498
499 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
500 deleted files.
501
502 * pass1.c (pass1): Ignore missing inode table errors during the
503 scan, and just skip past those inodes.
504
505 * pass3.c (check_root): Remove root_ino argument, and assume that
506 the root inode must be EXT2_ROOT_INO. Move responsibility
507 of setting the parent of the root inode in the directory
508 inode structure to pass2().
509
510 * pass2.c (check_dir_block): Don't allow links to the root
511 directory.
512
513 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
514 since the inode is no longer used.
515
516Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
517
518 * e2fsck.c (main): If the superblock magic number is wrong, or the
519 block group fails a sanity check, then automatically
520 restart trying to use the backup superblocks.
521
522 * pass1.c (mark_table_blocks): Make the inode tables ahead of
523 everything else; in the case where a bitmap block overlays
524 the inode table, the inode table should take precedence.
525
526 * pass2.c (maybe_clear_entry): Make the deleted/unused error
527 message fit on one line, since the error can happen during
528 a preen pass. (We eventually need to revamp the whole
529 e2fsck error reporting and prompting system, but that's a
530 job for another day.)
531
532Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
533
534 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
535 for the benefit of the inode scan functions.
536
537 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
538 indicating that an inode is in a bad block, mark that
539 inode as being used, as well as in the inode "bb" map.
540
541 * pass2.c (maybe_clear_entry): New function which generalizes the
542 error cases when a directory entry needs to be cleared.
543 (check_dir_block): If an inode is in the "bb" map, offer
544 to clear the directory entry, since the inode is in a bad
545 block.
546
547 * pass4.c (pass4): If an inode is marked as used, but is is marked
548 in the "bb" map, don't process it as a disconnected inode.
549
550Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
551
552 * Release of E2fsprogs version 1.06
553
Theodore Ts'o5c576471997-04-29 15:29:49 +0000554Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
555
556 * e2fsck.c (main): Print out the version number of the shared
557 library when using the -V option.
558
559 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
560 consistency's sake.
561
562 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
563 out the backup superblocks when we know we have a valid
564 filesystem.
565
566Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
567
568 * util.c (preenhalt): Make it explicit on preenhalt that running
569 e2fsck manually means without the -a or -p flag.
570
571Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
572
573 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
574 (Linux/FT actually sets the mode bits, so we have to
575 handle it specially.)
576
577 * e2fsck.c (check_if_skip): Print a message if the filesystem is
578 just dirty, so that the user knows that it's about to be
579 checked (since this will take a while).
580
581Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
582
583 * pass4.c: If a disconnected inode is zero-length, prompt to
584 delete it instead of connecting it to lost+found.
585
586Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
587
588 * Release of E2fsprogs version 1.05
589
Theodore Ts'o1e3472c1997-04-29 14:53:37 +0000590Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
591
592 * pass4.c (pass4): If the user refuses to connect an unattached
593 inode to lost+found, don't try to set i_links_count. This
594 is bad, since if the user says yes, the inode will be
595 marked as unused, which is not necessarily the right
596 thing, especially since the rest of the cleanup doesn't
597 happen here.
598
599 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
600 dellocating an inode. (Not strictly necessary, but...)
601
602 * pass4.c (pass4): Add "bonehead" explanation to the "programming
603 error" message.
604
605Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
606
607 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
608 byte-swap the filesystem so that it is normalized. -S
609 will byte-swap the filesystem regardless of its current
610 byte-order.
611
612 * swapfs.c: New file, which will byte-swap a filesystem.
613
614Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
615
616 * pass1.c (pass1): Change handling on files with non-zero dtime
617 and non-zero i_link_count; before we treated them as
618 deleted file per botched ext2 0.3c kernel behavior. We
619 now clear dtime instead.
620
621Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
622
623 * e2fsck.c (main): If e2fsck sets the clean bit, even if
624 nothing else is changed, make sure FSCK_NONDESTRUCT is
625 set (since after all having the filesystem set to
626 invalid is an error. :-)
627
628Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
629
630 * pass1.c (process_block): Make sure that meta data doesn't get
631 accidentally set in the dir_blocks array (which could
632 happen in some error condtions).
633
634 * pass1.c (pass1):
635 * pass2.c (process_bad_inode): Check for fragments in a
636 OS-independent fashion.
637
638Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
639
640 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
641 cleanup for the filesystem.
642
643Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
644
645 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
646
Theodore Ts'o62c06f71997-04-29 14:34:47 +0000647Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
648
649 * Release of E2fsprogs version 1.04
650
651Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
652
653 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
654 try "e2fsck -b 8193" before allowing e2fsck to relocate
655 inode table blocks.
656
657 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
658 depending on the option to configure. Added targets for
659 e2fsck.static and e2fsck.shared for people who want to
660 build a static or shared variant manually.
661
Theodore Ts'o7f88b041997-04-26 14:48:50 +0000662Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
663
664 * Release of E2fsprogs version 1.03
665
666Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
667
668 * e2fsck.c (show_stats): Don't use floating point to display
669 percentage of non-contiguous files, as different libc
670 handle result truncation differently, and this causes the
671 test suite to bomb out depending on which libc you are
672 using.
673
674 * util.c (allocate_memory): Fix error message to omit extraneous
675 %%s.
676
677Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
678
679 * pass4.c (pass4):
680 * pass2.c (check_dir_block):
681 * pass1.c (pass1): Add support for dynamic first inode revision.
682
683Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
684
685 * pass3.c (check_root): Fix spelling typo
686
687Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
688
689 * e2fsck.c (check_super_block): If the superblock fails certain
690 internal consistency checks, exit with a fatal error after
691 printing the "superblock is corrupt message".
692
Theodore Ts'o74becf31997-04-26 14:37:06 +0000693Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
694
695 * Release of E2fsprogs version 1.02
696
697Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
698
699 * pass1.c (process_block): Check to see if a file is "fragmented".
700 i.e., non-contiguous. Note that any file which is larger
701 than the block group is guaranteed to be non-contiguous.
702 We may want to use a different hueristic for deciding
703 whether or not a file is "fragmented".
704
705 * e2fsck.c (show_stats): Print statistics of how many
706 non-contiguous files are on the system.
707
708Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
709
710 * badblocks.c (read_bad_blocks_file, test_disk): Fold
711 functionality of test_disk() (which runs badblocks) into
712 read_bad_blocks_file(); test_disk() now calls
713 read_bad_blocks_file() with a NULL bad_blocks_file
714 argument.
715
716Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
717
718 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
719 #if defined(linux). The latter won't work if we're
720 compiling -ansi.
721
Theodore Ts'o297f47a1997-04-26 14:25:20 +0000722Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
723
724 * e2fsck.c (check_mount): For Linux systems, the check to see if
725 the root is mounted read-only has to be done for all
726 filesystems, not just for the root filesystem, due to the
727 way that some /etc/rc scripts are set up.
728
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000729Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
730
731 * Makefile.in (install): Strip programs when they are installed.
732 (e2fsck): Build e2fsck statically.
733
734Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
735
736 * util.c (preenhalt): Preenhalt now takes an argument, which is an
737 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
738 flag in the superblock in cases where preenhalt is called.
739 All calls to preenhalt() were changed to either
740 preenhalt(fs) or preenhalt(NULL) in a few cases where the
741 fs pointer was not available. (Most notable, for block
742 read/write errors.)
743
744Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
745
746 * ehandler.c:
747 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
748
749Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
750
751 * e2fsck.c (show_stats): Show statistics about how many inodes
752 have indirect, doubly indirect, and triply indirect
753 blocks. Allow up to 8 digits for statistics, instead of
754 merely 6, so things look pretty for large filesystems.
755
756 * pass1.c (pass1): Keep statistics about indirect, doubly
757 indirect, and triply indirect blocks.
758
759 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
760 pass 1.
761
762Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
763
764 * util.c, ehandler.c: Move #include of <sys/resource.h> after
765 #include of "e2fsck.h", since sys/resource.h may depend on
766 sys/time.h, which is #included in e2fsck.h.
767
768Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
769
770 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
771 function to determine if the device is mounted.
772
773 * e2fsck.c (main): Add better error messages if ext2fs_open()
774 fails.
775
776Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
777
778 * pass1.c (check_blocks): If we're clearing a directory, clear
779 pb.is_dir so we don't do the following check of making
780 sure the directory size matches; this is pointless, since
781 we've already cleared the inode.
782
783Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
784
785 * pass1.c (bad_primary_block): New function, called by
786 process_bad_block, which explains the facts of life to the
787 user when a block in the primary superblock or primary
788 group descriptors is bad.
789
790 * pass2.c (check_dot): Handle the case where the first directory
791 entry is used, but not ".".
792
793 * pass2.c (check_dotdot): Handle the case where the second directory
794 entry is used, but is not "..".
795
796Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
797
798 * e2fsck.c (check_super_block): Get the size of the physical
799 device and if it is smaller than the reported size of the
800 filesystem, report an error.
801
802Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
803
804 * e2fsck.c (check_if_skip): Print the number of allocated files and
805 blocks on clean filesystems.
806
807Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
808
809 * e2fsck.8: Updated date and version number.
810
811Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
812
813 * pass1.c (check_blocks): Check that directory size matches *exactly*
814 the count of allocated blocks.
815
816Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
817
818 * pass1b.c (pass1d): Free the shared[] array when we're done with
819 it to avoid a memory leak.
820
821 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
822 block_dup_map.
823
824 * pass2.c (process_bad_inode): When clearing the inode, make sure
825 the pathname is freed, to prevent a memory leak.
826
827 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
828 when we're finished with them.
829 (check_block_bitmaps): Free free_array when we're finished
830 with them.
831
832 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
833 linking the executable.
834
835 * pass2.c (process_bad_inode): Even on OS's that don't support the
836 fragment fields, make sure the Linux equivalent fields are
837 set to zero. If an OS wants to reuse these fields, which
838 is probably a bad idea (although we may get desperate in
839 the future) this code will have to be changed.
840
841 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
842 on the inode field, and then blockcnt field. This is just
843 to keep the ordering of dir_blocks the same on all
844 platforms when there are more than on missing directory
845 blocks, which are indicated directories with holes, which
846 are indicated with the block number being set to zero.
847
848Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
849
850 * pass1.c (check_blocks, process_block): check_blocks() modified
851 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
852 the inode is a directory. process_block() now checks to
853 see if a directory has a "hole", or missing block. If so,
854 this fact is recorded in the directory block list so that
855 the problem can be resolved in pass #2.
856
857 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
858 allocate new blocks for directories with "holes". Called
859 out of check_dir_block if a block in the directory block
860 list is zero.
861
862 * pass3.c (get_lost_and_found): Move location of free(block) to
863 prevent possible memory leak.
864
865Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
866
867 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
868 instead of alloca() --- alloca is not portable! Check to
869 make sure the filename is not longer than EXT2_NAME_LEN,
870 and offer to fix it by truncating it, since it should
871 never happen.
872
873 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
874 not portable!! In any case putenv() in some systems must
875 take a static character array or malloc()'ed memory;
876 passing memory allocated using alloca() to putenv() is not
877 advisable.
878
879 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
880 alloca() --- alloca() is not portable!!!
881
882Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
883
884 * pass1b.c (pass1c):
885 * pass3.c (check_root, get_lost_and_found):
886 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
887 to read/write the directory block.
888
889Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
890
891 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
892 make sure VMIN and VTIME are set correct.
893
894Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
895
896 * pass1.c (mark_block_used): Change to be an inline function.
897 Assume that the block validity checks are already done,
898 and use the fast variant of the bitmap functions.
899
900Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
901
902 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
903 bounds of the bitmaps in advance, and then use the fast
904 variant of e2fs_test_{block,inode}_bitmap.
905
906 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
907 the bounds checking has already been done earlier.
908
909Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
910
911 * pass1.c (pass1): Allocate and free the block_illegal_map, which
912 is used for shortcut processing in process_block.
913 (mark_table_blocks): Initialize block_illegal_map with the
914 filesystem blocks.
915 (describe_illegal_block): New helper function that
916 describes why a block is illegal.
917 (process_block): Use block_illegal_map as a shortcut
918 to determine whether a block is bad. Use
919 describe_illegal_block to print out why the block is illegal.
920
921Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
922
923 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
924
925 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
926 <mntent.h> if they don't exist. (Mostly so that "make
927 depend" works.)
928
929 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
930 it exists).
931
932 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
933 exist.
934
935Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
936
937 * pass2.c (process_bad_inode, check_for_zero_long,
938 check_for_zero_char): Change long to u32, and char to u8.
939
940Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
941
942 * util.c (inode_has_valid_blocks):
943 * pass2.c (process_bad_inode):
944 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
945 LINUX_S_IS* instead of S_IS*.
946
947 * e2fsck.h: Don't #include <sys/stat.h>
948
949 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
950 this program is pretty much useless if BLKFLSBUF isn't
951 supported.)
952
953 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
954 used.
955
956Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
957
958 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
959 to allocate space for file names instead of using fixed size buffers.
960 (process_bad_inode): Only check inode frag fields if
961 HAVE_EXT2_FRAGS is defined (by configure).
962 * pass1.c (pass1): Only check the inode frag fields if
963 HAVE_EXT2_FRAGS is defined (by configure).
964
965 * e2fsck.c (check_mount): Only check for a mounted filesystem if
966 HAVE_MNTENT_H is defined (by configure).
967 (PRS): Use alloca to allocate the new path string, instead of
968 having a fixed size buffer (which was the wrong size anyway).
969 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
970 is defined.
971
972 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
973 defined (by configure).
974
975 * Makefile.in: Rewritten to conform to GNU coding standards and
976 support separate compilation directories.
977
978Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
979
980 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
981
Theodore Ts'of3db3561997-04-26 13:34:30 +0000982Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
983
984 * pass1.c (unwind_pass1): Clear the file type statistics counter
985 when pass 1 needs to be restarted from scratch.
986
987 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
988 being reallocated to blocks in the next block group,
989 instead of the current block grup.
990
991 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
992 inode.i_links_count is set.
993
994Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
995
996 * pass1.c (process_block): Add checks for if the block is
997 trepassing on a superblock or group descriptor table.
998
999Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
1000
1001 * main.c (corrupt_msg): Extend the message which is printed out
1002 when the superblock is corrupt, to include the suggestion
1003 of using the -b option to specify an alternate superblock.
1004
1005Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
1006
1007 * badblocks.c (read_bad_blocks_file): If we are adding or
1008 replacing bad blocks in the bad blocks inode, sanity check
1009 the bad block inode first, and clear out any illegal blocks.
1010
1011 * pass2.c (check_name): Don't bomb out if the attempt to get the
1012 pathname of the containing directory returns an error; the
1013 directory may be too badly damaged to expect that
1014 ext2fs_get_pathname will always succeed. Use "???" if the
1015 pathname can't be obtained (it's only for a printf to the
1016 user anyway).
1017
1018 The name of the containing directory and the bad filename
1019 were incorrectly interchanged in the user message. Fixed.
1020
1021 * pass2.c (check_name, check_dir_block): Use a common static
1022 string for the unknown pathname.
1023
1024Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
1025
1026 * Fixed lots of printf formats to make sure that block and inode
1027 numbers are printed as unsigned integers.
1028
1029Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
1030
1031 * pass5.c (check_block_end): Fix calculation of how the last block
1032 in the block bitmap should be calculated.
1033
1034Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
1035
1036 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
1037 be an ext2fs_inode_bitmap, and free it properly.
1038
1039 * e2fsck.h
1040 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
1041 level to the superblock.
1042
1043Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
1044
1045 * e2fsck.c (usage): Fixed bogus usage message.
1046
1047Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
1048
1049 * pass1.c (process_bad_block): Fixed bug so that blocks in the
1050 backup superblocks and group descriptors are handled gracefully.
1051