Whamcloud - gitweb
ChangeLog, unix.c:
[tools/e2fsprogs.git] / e2fsck / ChangeLog
1 1999-06-30    <tytso@valinux.com>
2
3         * unix.c (check_mount): Clean up the abort message displayed when
4                 the filesystem is mounted and either stdout or stdin isn't
5                 a tty.
6
7 1999-06-25    <tytso@valinux.com>
8
9         * e2fsck.h:
10         * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode, 
11                 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
12                 pass1_* be private static functions, and create new
13                 function e2fsck_use_inode_shortcuts which sets and clears
14                 the inode shortcut functions in the fs structure.
15
16         * e2fsck.h:     
17         * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
18                 exported function.
19
20         * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
21                 if a disconnected inode has any problems before
22                 connecting it to /lost+found.  Bug and suggested fix by 
23                 Pavel Machek <pavel@bug.ucw.cz>
24
25 1999-06-21    <tytso@valinux.com>
26
27         * unix.c (main): Add missing space in the disk write-protected
28                 message. 
29
30 1999-05-22    <tytso@rsts-11.mit.edu>
31
32         * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
33                 code. 
34         
35         * super.c (check_super_block): Add check to make sure the total
36                 number of inodes is sane, since this can be calculated
37                 from the number of groups times the number of inodes per
38                 group.   Offer to correct it if it is incorrect.
39
40 1999-03-19    <tytso@rsts-11.mit.edu>
41
42         * pass5.c (check_block_end): Fix fencepost condition where when
43                 clearing the block padding we were missing the last position
44                 in the bitmap.
45
46 1999-05-17    <tytso@rsts-11.mit.edu>
47
48         * unix.c (reserve_stdio_fds): Add safety check in case
49                 reserve_stdio_fds couldn't open /dev/null.
50
51 1999-03-14  Theodore Ts'o  <tytso@rsts-11.mit.edu>
52
53         * util.c (print_resource_track): Use mallinfo if present to get
54                 more accurate malloc statistics.
55
56         * pass3.c (get_lost_and_found): Check to see if lost+found is a
57                 plain fail; if so, offer to unlink it.
58
59         * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
60
61 1999-03-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
62
63         * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
64                 that the block group number is printed.  Add new prompt,
65                 PROMPT_UNLINK.
66
67 1999-01-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
68
69         * Release of E2fsprogs 1.14
70
71 1999-01-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
72
73         * message.c (safe_print): New function which prints strings,
74                 converting non-printable characters using the '^' and
75                 M-notation.  This function is now used to print directory
76                 name entries and pathnames.
77
78 Mon Jan  4 02:28:59 1999  Theodore Y. Ts'o  <tytso@mit.edu>
79
80         * unix.c (main): Reset the context before calling ext2fs_close(),
81                 to avoid referencing already freed memory.
82
83 1998-12-15  Theodore Ts'o  <tytso@rsts-11.mit.edu>
84
85         * Release of E2fsprogs 1.13
86
87 1998-12-03  Theodore Ts'o  <tytso@rsts-11.mit.edu>
88
89         * Makefile.in: Updated dependencies.
90
91 1998-11-27  Theodore Ts'o  <tytso@rsts-11.mit.edu>
92
93         * pass3.c (get_lost_and_found): If the filesystem is not opened
94                 read-only, then force /lost+found to be created if it is
95                 not present.
96
97         * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
98                 operation. 
99
100 1998-10-28  Theodore Ts'o  <tytso@rsts-11.mit.edu>
101
102         * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
103                 since e2fsck_free_context may reference data in ctx->fs.
104
105         * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
106                 before checking ctx->fs->dblist.
107
108 1998-10-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
109
110         * pass1.c (e2fsck_pass1): Use the device check subroutine on
111                 FIFO's and Socket's, so that we catch bogus immutable inodes.
112
113         * pass2.c (process_bad_inode): Process bad socket and fifo's.
114
115         * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
116                 PR_2_BAD_SOCKET.
117
118 1998-09-02  Theodore Ts'o  <tytso@rsts-11.mit.edu>
119
120         * problem.c: Add PR_3_NO_DIRINFO error code.
121
122         * super.c (check_super_value): Rename min and max to min_val and
123                 max_val to avoid possible cpp macro conflicts.
124
125         * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
126                 possible cpp macro conflicts.
127         
128         * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
129                 cpp macro conflicts.
130                 (check_directory): Fix logic to avoid possible core dump
131                 in the case of ext2fs_get_dir_info returning NULL.  (By
132                 the time we get here, it should never happen, but...).
133                 Also simply/streamline the control flow of the function.
134
135 1998-08-17  Theodore Ts'o  <tytso@rsts-11.mit.edu>
136
137         * unix.c (check_if_skip): Move the "not cleanly mounted" check
138                 ahead of the maximal mount and too long since checked tests.
139                 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
140                 open, so that we don't open the filesystem using the same
141                 file descriptor as stdout or stderr.
142
143 1998-08-01  Theodore Ts'o  <tytso@rsts-11.mit.edu>
144
145         * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
146                 get to 100%.
147
148         * pass3.c (e2fsck_pass3): Change progress accounting to be
149                 consistent with the other e2fsck passes.                
150
151         * e2fsck.c (e2fsck_run): At the end of each pass, call the
152                 progress function with the pass number set to zero. 
153
154         * unix.c (e2fsck_update_progress): If the pass number is zero,
155                 ignore the call, since that indicates that we just want to
156                 deallocate any progress structures.
157
158 1998-07-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
159
160         * Release of E2fsprogs 1.12
161
162 1998-07-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
163
164         * unix.c (main): Fix typo in checking the incompat feature set; it
165                 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
166
167 1998-07-07  Theodore Ts'o  <tytso@rsts-11.mit.edu>
168
169         * badblocks.c (test_disk): Don't clear the existing bad blocks
170                 list when using e2fsck -c, since it may cause blocks with
171                 marginal errors to be dropped from the bad blocks list.
172
173 Mon Jul  6 10:32:11 1998  Theodre Ts'o  <tytso@lurch.mit.edu>
174
175         * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
176                 compatibility with older kernels.
177
178 1998-06-25  Theodore Ts'o  <tytso@rsts-11.mit.edu>
179
180         * unix.c (e2fsck_update_progress): Remove unused variables.
181
182 1998-06-10  Theodore Ts'o  <tytso@rsts-11.mit.edu>
183
184         * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
185                 collision with LFS API.
186
187         * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
188                 properly initialized.  
189                 (e2fsck_pass1): Don't allow the the boot loader inode to
190                 be a directory (clear the inode mode field if so).
191
192 1998-05-07  Theodore Ts'o  <tytso@rsts-11.mit.edu>
193
194         * unix.c (PRS): Added new option -C, which causes e2fsck to print
195                 progress updates so that callers can keep track of the
196                 completion progress of e2fsck.  Designed for use by
197                 progress, except for -C 0, which prints a spinning report
198                 which may be useful for some users.
199
200         * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
201                 scheme (useful for larger filesystems).
202
203         * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
204                 progress reporting functions.
205
206 1998-04-28  Theodore Ts'o  <tytso@rsts-11.mit.edu>
207
208         * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
209                 appropriate return type for comparison functions for qsort.
210
211         * e2fsck.h: Add #ifdef protection for unistd.h
212
213         * super.c: Remove header files already included by e2fsck.h
214
215 1998-04-26  Theodore Ts'o  <tytso@rsts-11.mit.edu>
216
217         * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
218                   size of the memory to be resized to ext2fs_resize_mem().
219
220 1998-03-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
221
222         * Makefile.in: Change to use new installation directory variables
223                 convention.  Fix uninstall rules to take $(DESTDIR) into
224                 account.  Remove cat8dir from the installdirs target,
225                 since modern man package don't necessarily put the cat
226                 directory in /usr/man/cat?.
227
228 1998-03-29  Theodore Ts'o  <tytso@rsts-11.mit.edu>
229
230         * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
231                 extern in e2fsck.h to prevent -Wall warnings.
232
233         * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
234
235 1998-03-28  Theodore Ts'o  <tytso@rsts-11.mit.edu>
236
237         * super.c (check_super_block): Fix broken superblock sanity check
238                 when calculating blocks_per_group if s_log_frag_size !=
239                 s_log_block_size.  Since we don't support fragments, this
240                 isn't a bug deal, but it's good to get it fixed.
241
242 1998-03-23  Theodore Ts'o  <tytso@rsts-11.mit.edu>
243
244         * unix.c: Fix bug in check of feature set, to make sure we can
245                 really fix this filesystem.
246
247         * problem.h: Make blkcount type to be of type blkcnt_t.  Make the
248                 num field be a 64 bit type.  Add the problem code
249                 PR_1_FEATURE_LARGE_FILES
250
251         * problem.c: Add table entry for the problem code
252                 PR_1_FEATURE_LARGE_FILES.
253
254         * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
255                 a problem for directory inodes.  (Since it is also
256                 i_size_high now.)   If there are no large_files, then
257                 clear the LARGE_FLAG feature flag.  If there are
258                 large_files, but the LARGE_FLAG feature flag is not set,
259                 complain and offer to fix it.
260                 (check_blocks): Add support to deal with non-directory
261                 inodes that have i_size_high set (i.e., large_files).
262                 Don't give an error if a directory has preallocated
263                 blocks, to support the DIR_PREALLOC feature.
264                 (process_block, process_bad_block): The blockcnt variable
265                 is a type of blkcnt_t, for conversion to the new
266                 block_iterate2.
267
268         * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
269                 a problem for directory inodes.  (Since it is also
270                 i_size_high now.)
271
272         * message.c (expand_inode_expression): Print a 64-bits of the
273                 inode size for non-directory inodes.  (Directory inodes
274                 can only use a 32-bit directory acl size, since
275                 i_size_high is shared with i_dir_acl.)  Add sanity check
276                 so that trying to print out the directory acl on a
277                 non-directory inode will print zero.
278                 (expand_percent_expression): %B and %N, which print 
279                 pctx->blkcount and pctx->num, can now be 64 bit
280                 variables.  Print them using the "%lld" format if
281                 EXT2_NO_64_TYPE is not defined.
282
283         * e2fsck.h: Add the large_flagsfield to the e2fsck context.
284
285         * e2fsck.c (e2fsck_reset_context): Clear the large_flags
286                 field.
287
288 Sun Mar  8 23:08:08 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
289
290         * pass3.c (fix_dotdot_proc): 
291         * pass2.c (check_dot, check_dotdot, check_name, check_dir_block): 
292         * message.c (expand_dirent_expression): Mask off the high eight
293                 bits of the directory entry's name_len field, so that it
294                 can be used for other purposes.
295
296 Fri Feb 27 00:01:39 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
297
298         * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
299                 include EXT2_FLAG_RESTART anymore, we need to adjust this
300                 routine so that it *does* return in the case of it seeing
301                 EXT2_FLAG_RESTART.
302
303         * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
304                 done callback function, which may set context abort
305                 flags.  So we need to test the context abort flags after
306                 we call ext2_get_next_inode().
307                 (process_inodes): If we abort due out of process_inodes,
308                 do a clean exit by breaking out of the for loop instead of
309                 just returning.
310
311         * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
312                 considered a SIGNAL mask (i.e., requiring an immediate
313                 abort of processing to restart).  FLAG_RESTART just means
314                 that we want to restart once pass 1 is complete.
315
316 Tue Feb 24 15:19:40 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
317
318         * Change the progress function to return an integer; if returns 1,
319                 then the progress function is expected to have set the
320                 e2fsck context flag signalling a user abort, and the
321                 caller should also initiate a user abort.
322
323 Tue Feb 17 19:03:44 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
324
325         * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
326                 end_problem_latch() unless there was actually a problem
327                 latched.  Simplifies semantics of the latch processing.
328
329 Mon Feb 16 17:31:44 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
330
331         * e2fsck.h: Add new field, priv_data to the e2fsck context
332                 structure.  It should be used by callers of the e2fsck
333                 functions only, and not by anything in e2fsck itself.
334
335 Mon Feb 7 17:31:04 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
336
337         * super.c: Instead of call ext2fs_get_device_size(), define and call
338                 e2fsck_get_device_size().  (This function may be stubbed
339                 out in special versions of e2fsck.)
340
341         * pass3.c, pass4.c: Remove extra calls to the progress function
342                 that weren't needed.
343
344         * mke2fs.8.in: Update man page to note that the format of the bad
345                 block file is the same as the one generated by badblocks. 
346
347 Sun Feb  1 07:57:14 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
348
349         * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
350
351         * e2fsck.h: Include <time.h> since it is needed
352
353         * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
354                 processing. 
355
356 Tue Jan 20 15:37:01 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
357
358         * unix.c (main): In the case where the filesystem revision is too
359                 high, print the message about the superblock possibly
360                 being corrupt.
361
362         * e2fsck.8.in: Add expanded comments about how the -b option
363                 works. 
364
365 Sat Jan 17 13:02:16 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
366
367         * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
368                 the ext2-specific header files are in a flat directory.
369
370         * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
371                 super.c, swapfs.c, unix.c: Explicitly cast all assignments
372                 from void * to be compatible with C++.
373
374 Tue Jan  6 11:30:24 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
375
376         * unix.c (sync_disk): Remove sync_disk and calls to that function,
377                 since ext2fs_close() now takes care of this.
378
379 Mon Dec 29 14:45:42 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
380
381         * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
382                 ehandler.c, unix.c: Change use of private to be priv_data,
383                 to avoid C++ reserved name clash.
384
385 Fri Nov 28 09:30:26 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
386
387         * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
388                 of e2fsck_get_num_dirs, which has been removed.
389
390 Tue Nov 25 15:54:35 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
391
392         * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
393                 to compile and install flushb.
394
395 Mon Nov 24 06:48:00 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
396
397         * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
398                 to make sure the extra i_blocks in a device are cleared if
399                 the immutable flag is set.
400
401         * util.c (print_resource_track): Fix typo which caused the
402                 time/resource tracking to print "Pass 1 :" instead of
403                 "Pass 1: ".
404
405 Thu Nov 20 16:02:23 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
406
407         * pass3.c (expand_directory): Fix bug which could cause core dump
408                 when expanding the directory, and the bitmaps hadn't yet
409                 been read in.  Also, only use ext2fs_write_dir_block when
410                 writing a directory block, not when writing out a fresh
411                 indirect block.
412
413 Wed Nov 19 16:15:44 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
414
415         * pass1.c (process_bad_block): Fix bug where first_block wasn't
416                 getting incremented, which caused user to get a
417                 "Programming error?" warning if there was a bad block in a
418                 non-primary superblock/group_descriptor.  Also fixed
419                 another bug so that ext2fs_bg_has_super() is consulted, to
420                 avoid problems when using a filesystem with the
421                 sparse_groups option set and there are bad blocks at the
422                 beginning of a group which doesn't have a superblock.
423
424 Thu Nov  6 16:10:20 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
425
426         * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the 
427                 progress indicator function.
428
429         * pass1.c (scan_callback): Add call to the progress feedback
430                 function (if it exists).
431
432 Tue Nov  4 09:45:36 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
433
434         * super.c (check_super_block): Skip the device size check if the
435                 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
436
437         * iscan.c (main): Don't use fatal_error() anymore.
438
439         * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
440                 calling fatal_error(0).
441
442         * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT, 
443                 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
444         
445         * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
446
447         * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
448         
449         * problemP.h: New file which separates out the private fix_problem
450                 data structures.
451
452         * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
453                 swapfs.c util.c: allocate_memory() now takes a e2fsck
454                 context as its first argument, and rename it to be
455                 e2fsck_allocate_memory().
456
457 Mon Nov  3 14:35:29 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
458
459         * unix.c (main): Add a special case check for the error code EROFS
460                 and display an appropriate error message for this case.
461
462         * [lots of files]:  Change ext2fs_read_inode, ext2fs_write_inode
463                 to take the e2fsck context as their first argument.
464                 Change dir_info.c routines to take an e2fsck_context,
465                 renamed them to start with e2fsck_ to avoid namespace
466                 issues, and changed them to store the directory
467                 information inside the e2fsck context.
468                 Added e2fsck_run() which calls all of the e2fsck passes in
469                 the correct order, and which handles the return of abort
470                 codes.  Added abort processing, both via setjmp/longjmp
471                 and via flags in the e2fsck context.  Use a flag in the
472                 e2fsck context instead of the restart_e2fsck global
473                 variable.   Change uses of free and malloc to
474                 ext2fs_free_mem and ext2fs_get_mem.
475         
476 Fri Oct 31 01:12:43 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
477
478         * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
479                 consistency.
480
481 Sat Oct 25 00:10:58 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
482
483         * pass3.c (get_lost_and_found): Check error return of 
484                 EXT2_FILE_NOT_FOUND instead of ENOTDIR
485
486         * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
487                 instead of ENOTDIR
488
489 Fri Oct 24 00:12:39 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
490
491         * unix.c (PRS): Make the variable which getopt returns into be
492                 an int, so that it won't lose on platforms where char is
493                 unsigned. 
494
495         * pass1b.c (clone_file): Fix bug in error reporting in the case
496                 where cs.errcode is non-zero.
497
498 Sun Oct 19 21:12:11 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
499
500         * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
501                 RESOURCE_TRACK around code which uses init_resource_track
502                 and print_resource_track.  (Not all systems have timeval)
503
504         * super.c: Remove excess #includes which are not necessary.
505
506         * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
507
508 Fri Oct  3 13:40:03 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
509
510         * pass*.c, super.c: Massive changes to avoid using printf and
511                 com_err routines.   All diagnostic messages are now routed
512                 through the fix_problem interface.
513
514 Sat Sep  6 17:13:28 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
515
516         * pass2.c (check_dir_block): Check for duplicate '.' and '..'
517                 entries. 
518
519         * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
520                 PR_2_DUP_DOT_DOT.
521
522 Tue Sep  2 09:04:51 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
523
524         * problem.c: Added new problem codes for some of the
525                 superblock corruption checks, and for the pass header
526                 messages.  ("Pass 1: xxxxx")
527
528         * util.c (print_resource_track): Now takes a description
529                 argument. 
530
531 Mon Aug 25 10:23:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
532
533         * super.c, unix.c, e2fsck.c: New files to separate out the
534                 operating-specific operations out from e2fsck.c.  
535                 e2fsck.c now contains the global e2fsck context management
536                 routines, and super.c contains the "pass 0" initial
537                 validation of the superblock and global block group
538                 descriptors. 
539
540         * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
541                 (nearly) all global variables and moved them to the e2fsck
542                 context structure.
543
544         * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
545                 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
546                 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
547
548 Thu Aug 14 10:55:21 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
549
550         * message.c: Add compression for the word "Illegal"
551
552         * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
553                 PR_2_BAD_BLOCK_DEV
554
555 Wed Aug 13 09:55:57 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
556
557         * pass1.c (pass1, check_device_inode), pass2.c
558                 (process_bad_inode): Use a more stringent test for a valid
559                 device.
560
561 Sun Aug 10 18:58:02 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
562
563         * e2fsck.c (check_mount): Add stronger warning message about the
564                 perils of running e2fsck on a mounted filesystem.
565
566 Tue Jun 17 01:33:20 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
567
568         * Release of E2fsprogs 1.11
569
570 Thu Jun 12 00:25:31 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
571
572         * pass1.c (mark_table_blocks): Mark the superblock and group
573                 descriptor blocks first, so that any conflicts between
574                 these and the bitmap or inode table blocks is noticed.
575
576         * problem.c: Fix message printed out when a block or inode bitmap
577                 conflicts with other fs data, has the correct group number
578                 in it.
579
580 Tue Jun 10 12:07:37 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
581
582         * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
583
584 Thu May  8 22:45:27 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
585
586         * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
587                 Hawes (whawes@star.net).
588
589         * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
590                 bad blocks command so that all of the filesystem gets
591                 tested in the case where the blocksize 2048 or 4096.
592
593 Thu Apr 24 12:16:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
594
595         * Release of E2fsprogs version 1.10
596
597 Mon Apr 21 22:43:08 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
598
599         * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
600                 where ext2fs_get_next_inode returns the 
601                 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
602
603 Thu Apr 17 12:23:38 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
604
605         * Release of E2fsprogs version 1.09
606
607 Fri Apr 11 18:56:26 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
608
609         * Release of E2fsprogs version 1.08
610
611 Thu Apr 10 13:51:16 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
612
613         * pass1b.c (clone_file_block): If we clone a directory, we need to
614                 update the dblist entry so that we check (and correct) the
615                 right directory block.
616
617 Sun Apr  6 09:13:12 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
618
619         * pass1.c (process_block): Don't clear blocks references to
620                 filesystem metadata; let pass 1B handle this case.
621
622         * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
623
624         * pass1b.c (pass1d): Deal with a block which is shared with
625                 filesystem metadata.
626
627         * e2fsck.h: Make block_illegal_map be a global variable
628
629 Sat Apr  5 11:51:58 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
630
631         * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
632                 feature.
633                 (get_backup_sb): New function which attempts to obtain the
634                 correct backup superblock (if possible).
635
636 Fri Apr  4 10:46:26 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
637
638         * e2fsck.c (main): Check the version of the library, and warn if
639                 the library is out of date; this happens generally due to
640                 users who manually install e2fsprogs.
641
642         * pass1.c (pass1_get_blocks): If the passed in inode number for
643                 get_blocks isn't what we're expecting pass back
644                 EXT2_ET_CALLBACK_NOT_HANDLED.
645
646 Wed Mar 12 13:32:05 1997  Theodore Y. Ts'o  <tytso@mit.edu>
647
648         * Release of E2fsprogs version 1.07
649
650 Tue Mar 11 10:31:47 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
651
652         * icount.c: New file which implements an inode count abstraction.
653                 This significantly reduces amount of memory needed to
654                 check really large filesystems.
655
656         * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
657                 abstraction.
658
659 Fri Mar  7 08:28:55 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
660
661         * dirinfo.c (dir_info_iter): New function which allows iteration
662                 over the directories in the dir_info map.
663
664         * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
665                 over all directories in the dir_info structure, instead of
666                 iterating all inodes looking for directories, and then
667                 looking up the directories using get_dir_info().
668
669 Sat Feb  1 11:33:43 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
670
671         * pass1.c (pass1, process_block): 
672         * pass2.c (pass2): Use the ext2_dblist abstraction instead of
673                 manual code to manage the directory block list information.
674
675         * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
676                 (deallocate_inode): Call the ext2 library routine
677                 ext2_inode_has_valid_blocks() instead of
678                 inode_has_valid_blocks().
679
680         * swapfs.c (swap_inodes): Add check so that we don't try to call
681                 swap_inode_blocks unless the inode has valid blocks.
682                 (Otherwise a long fast symlink might cause
683                 swap_inode_blocks to erroneously get called.)
684
685 Wed Jan 22 14:42:53 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
686
687         * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
688                 PR_2_DOT_DOT_NULL_TERM.
689
690         * pass2.c (check_dot, check_dot_dot): Make sure the new . and
691                 .. entries are null-terminated, since the 2.0 kernel
692                 requires this (for no good reason).
693
694 Mon Jan 20 20:05:11 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
695
696         * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
697                 that we can recover from missing inode tables.
698
699         * dirinfo.c (get_dir_info): If there are no directories in the
700                 dir_info abstraction, don't core dump (because dir_info is
701                 NULL).
702
703         * e2fsck.c (main): Don't try using the backup superblocks if there
704                 aren't any.
705                 (check_super_block): If there are illegal inode table or
706                 bitmaps, set the filesystem as being in error.
707
708 Wed Jan 15 11:32:01 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
709
710         * pass2.c (check_dir_block): Added check to make sure that rec_len
711                 is a a multiple of 4 (so that the directory entries are
712                 4-byte aligned).
713
714 Sat Dec 28 12:16:32 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
715
716         * Makefile.in (uninstall): Uninstall all programs in the PROGS
717                 line.
718                 (PROGS): Don't build and install the extend program by
719                 default. 
720         
721
722 Sat Dec  7 16:41:02 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
723
724         * pass1.c (process_inodes): Make sure the stashed_ino variable is
725                 saved and restored as well.
726                 (pass1): For fast sym links, skip the check_blocks
727                 processing step altogether.
728
729 Mon Dec  2 09:28:24 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
730
731         * problem.c, message.c: New files, to completely refurbish how
732                 filesystem problems are reported to the user.  The
733                 diagnostic messages are now encoded out in an easily
734                 customizable, extensible format.  The messages printed out
735                 in preen mode are all on one line, and contain the device
736                 name.
737
738 Fri Nov 29 20:26:08 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
739
740         * swapfs.c (swap_inodes): When swapping a filesystem, ignore
741                 deleted files.
742
743         * pass1.c (pass1): Ignore missing inode table errors during the
744                 scan, and just skip past those inodes.
745
746         * pass3.c (check_root): Remove root_ino argument, and assume that
747                 the root inode must be EXT2_ROOT_INO.  Move responsibility
748                 of setting the parent of the root inode in the directory
749                 inode structure to pass2().
750
751         * pass2.c (check_dir_block): Don't allow links to the root
752                 directory.  
753
754         * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
755                 since the inode is no longer used.
756
757 Tue Oct 15 00:06:49 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
758
759         * e2fsck.c (main): If the superblock magic number is wrong, or the
760                 block group fails a sanity check, then automatically
761                 restart trying to use the backup superblocks.
762
763         * pass1.c (mark_table_blocks): Make the inode tables ahead of
764                 everything else; in the case where a bitmap block overlays
765                 the inode table, the inode table should take precedence.
766
767         * pass2.c (maybe_clear_entry): Make the deleted/unused error
768                 message fit on one line, since the error can happen during
769                 a preen pass.  (We eventually need to revamp the whole
770                 e2fsck error reporting and prompting system, but that's a
771                 job for another day.)
772
773 Mon Oct 14 22:29:49 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
774
775         * e2fsck.c (main): Read in the list badblocks into fs->badblocks
776                 for the benefit of the inode scan functions. 
777
778         * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
779                 indicating that an inode is in a bad block, mark that
780                 inode as being used, as well as in the inode "bb" map.
781
782         * pass2.c (maybe_clear_entry): New function which generalizes the
783                 error cases when a directory entry needs to be cleared.
784                 (check_dir_block): If an inode is in the "bb" map, offer
785                 to clear the directory entry, since the inode is in a bad
786                 block.
787
788         * pass4.c (pass4): If an inode is marked as used, but is is marked
789                 in the "bb" map, don't process it as a disconnected inode.
790
791 Tue Oct  8 02:02:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
792
793         * Release of E2fsprogs version 1.06
794
795 Mon Oct  7 00:45:30 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
796
797         * e2fsck.c (main): Print out the version number of the shared
798                 library when using the -V option.
799
800         * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
801                 consistency's sake.
802
803         * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
804                 out the backup superblocks when we know we have a valid
805                 filesystem.
806
807 Tue Oct  1 22:00:29 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
808
809         * util.c (preenhalt): Make it explicit on preenhalt that running
810                 e2fsck manually means without the -a or -p flag.
811
812 Fri Sep 27 14:41:08 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
813
814         * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
815                 (Linux/FT actually sets the mode bits, so we have to
816                 handle it specially.)
817
818         * e2fsck.c (check_if_skip): Print a message if the filesystem is
819                 just dirty, so that the user knows that it's about to be
820                 checked (since this will take a while).
821
822 Mon Sep 16 17:00:01 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
823
824         * pass4.c: If a disconnected inode is zero-length, prompt to
825                 delete it instead of connecting it to lost+found.
826
827 Thu Sep 12 15:23:07 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
828
829         * Release of E2fsprogs version 1.05
830
831 Fri Aug 30 20:24:30 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
832
833         * pass4.c (pass4): If the user refuses to connect an unattached
834                 inode to lost+found, don't try to set i_links_count.  This
835                 is bad, since if the user says yes, the inode will be
836                 marked as unused, which is not necessarily the right
837                 thing, especially since the rest of the cleanup doesn't
838                 happen here.
839
840         * pass2.c (deallocate_inode): Set inode_link_info[ino] when
841                 dellocating an inode.  (Not strictly necessary, but...)
842
843         * pass4.c (pass4): Add "bonehead" explanation to the "programming
844                 error" message.
845
846 Tue Aug 27 11:26:32 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
847
848         * e2fsck.c (PRS,main): Added new options -s and -S.  -s will
849                 byte-swap the filesystem so that it is normalized.  -S
850                 will byte-swap the filesystem regardless of its current
851                 byte-order.
852
853         * swapfs.c: New file, which will byte-swap a filesystem.
854
855 Tue Aug 20 09:41:37 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
856
857         * pass1.c (pass1): Change handling on files with non-zero dtime
858                 and non-zero i_link_count; before we treated them as
859                 deleted file per botched ext2 0.3c kernel behavior.  We
860                 now clear dtime instead.
861
862 Mon Aug 19 23:33:57 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
863
864         * e2fsck.c (main): If e2fsck sets the clean bit, even if
865                 nothing else is changed, make sure FSCK_NONDESTRUCT is
866                 set (since after all having the filesystem set to
867                 invalid is an error.  :-)
868
869 Fri Aug  9 10:25:13 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
870
871         * pass1.c (process_block): Make sure that meta data doesn't get
872                 accidentally set in the dir_blocks array (which could
873                 happen in some error condtions).
874         
875         * pass1.c (pass1): 
876         * pass2.c (process_bad_inode): Check for fragments in a
877                 OS-independent fashion.
878
879 Thu Aug  8 15:20:54 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
880
881         * e2fsck.c (check_if_skip): Close the filesystem when skipping the
882                 cleanup for the filesystem.
883
884 Mon Jul 22 22:03:28 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
885
886         * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
887
888 Thu May 16 11:12:30 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
889
890         * Release of E2fsprogs version 1.04
891
892 Wed May 15 21:41:29 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
893
894         * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
895                 try "e2fsck -b 8193" before allowing e2fsck to relocate
896                 inode table blocks.
897
898         * Makefile.in (e2fsck): Build e2fsck statically or dynamically
899                 depending on the option to configure.  Added targets for
900                 e2fsck.static and e2fsck.shared for people who want to
901                 build a static or shared variant manually.
902
903 Wed Mar 27 00:33:40 1996    <tytso@rsts-11.mit.edu>
904
905         * Release of E2fsprogs version 1.03
906
907 Tue Mar 26 12:03:42 1996    <tytso@rsts-11.mit.edu>
908
909         * e2fsck.c (show_stats): Don't use floating point to display
910                 percentage of non-contiguous files, as different libc
911                 handle result truncation differently, and this causes the
912                 test suite to bomb out depending on which libc you are
913                 using.
914
915         * util.c (allocate_memory): Fix error message to omit extraneous
916                 %%s.
917
918 Tue Mar  5 03:50:40 1996    <tytso@rsts-11.mit.edu>
919
920         * pass4.c (pass4): 
921         * pass2.c (check_dir_block): 
922         * pass1.c (pass1): Add support for dynamic first inode revision.
923
924 Wed Feb 14 16:27:30 1996    <tytso@rsts-11.mit.edu>
925
926         * pass3.c (check_root): Fix spelling typo
927
928 Mon Feb  5 22:30:30 1996    <tytso@rsts-11.mit.edu>
929
930         * e2fsck.c (check_super_block): If the superblock fails certain
931                 internal consistency checks, exit with a fatal error after
932                 printing the "superblock is corrupt message".
933
934 Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
935
936         * Release of E2fsprogs version 1.02
937
938 Wed Dec 15 21:24:26 1996    <tytso@rsts-11.mit.edu>
939
940         * pass1.c (process_block): Check to see if a file is "fragmented".
941                 i.e., non-contiguous.  Note that any file which is larger
942                 than the block group is guaranteed to be non-contiguous.
943                 We may want to use a different hueristic for deciding
944                 whether or not a file is "fragmented".
945
946         * e2fsck.c (show_stats): Print statistics of how many
947                 non-contiguous files are on the system.
948
949 Fri Dec 15 19:19:47 1995    <tytso@rsts-11.mit.edu>
950
951         * badblocks.c (read_bad_blocks_file, test_disk): Fold
952                 functionality of test_disk() (which runs badblocks) into
953                 read_bad_blocks_file(); test_disk() now calls
954                 read_bad_blocks_file() with a NULL bad_blocks_file
955                 argument.
956
957 Mon Nov 20 18:30:10 1995    <tytso@rsts-11.mit.edu>
958
959         * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
960                 #if defined(linux).  The latter won't work if we're
961                 compiling -ansi.
962
963 Mon Oct 30 20:31:17 1995    <tytso@rsts-11.mit.edu>
964
965         * e2fsck.c (check_mount): For Linux systems, the check to see if
966                 the root is mounted read-only has to be done for all
967                 filesystems, not just for the root filesystem, due to the
968                 way that some /etc/rc scripts are set up.
969
970 Thu Oct 26 12:05:30 1995    <tytso@rsts-11.mit.edu>
971
972         * Makefile.in (install): Strip programs when they are installed.
973                 (e2fsck): Build e2fsck statically.
974
975 Wed Oct 25 21:18:16 1995    <tytso@rsts-11.mit.edu>
976
977         * util.c (preenhalt): Preenhalt now takes an argument, which is an
978                 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
979                 flag in the superblock in cases where preenhalt is called.
980                 All calls to preenhalt() were changed to either
981                 preenhalt(fs) or preenhalt(NULL) in a few cases where the
982                 fs pointer was not available.  (Most notable, for block
983                 read/write errors.)
984
985 Mon Sep  4 21:41:03 1995  Remy Card  <card@bbj>
986
987         * ehandler.c:
988           util.c: Include <sys/time.h> before <sys/resource.h>.  BSD needs it.
989
990 Mon Sep  4 10:14:49 1995    <tytso@rsts-11.mit.edu>
991
992         * e2fsck.c (show_stats): Show statistics about how many inodes
993                 have indirect, doubly indirect, and triply indirect
994                 blocks.  Allow up to 8 digits for statistics, instead of
995                 merely 6, so things look pretty for large filesystems.
996
997         * pass1.c (pass1): Keep statistics about indirect, doubly
998                 indirect, and triply indirect blocks.
999
1000         * pass1.c (unwind_pass1): Clear the above statistics when unwinding
1001                 pass 1.
1002
1003 Fri Aug 18 15:17:10 1995  Theodore Y. Ts'o  <tytso@dcl>
1004
1005         * util.c, ehandler.c: Move #include of <sys/resource.h> after
1006                 #include of "e2fsck.h", since sys/resource.h may depend on
1007                 sys/time.h, which is #included in e2fsck.h.
1008
1009 Thu Aug 17 22:33:37 1995    <tytso@rsts-11.mit.edu>
1010
1011         * e2fsck.c (check_mount):  Use the new ext2fs_check_if_mounted()
1012                 function to determine if the device is mounted.
1013
1014         * e2fsck.c (main):  Add better error messages if ext2fs_open()
1015                 fails. 
1016
1017 Wed Aug 16 16:25:02 1995    <tytso@rsts-11.mit.edu>
1018
1019         * pass1.c (check_blocks): If we're clearing a directory, clear
1020                 pb.is_dir so we don't do the following check of making
1021                 sure the directory size matches; this is pointless, since
1022                 we've already cleared the inode.
1023
1024 Fri Aug 11 09:08:54 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
1025
1026         * pass1.c (bad_primary_block): New function, called by
1027                 process_bad_block, which explains the facts of life to the
1028                 user when a block in the primary superblock or primary
1029                 group descriptors is bad.
1030
1031         * pass2.c (check_dot): Handle the case where the first directory
1032                 entry is used, but not ".".
1033
1034         * pass2.c (check_dotdot): Handle the case where the second directory
1035                 entry is used, but is not "..".
1036
1037 Thu Aug 10 10:05:10 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
1038
1039         * e2fsck.c (check_super_block): Get the size of the physical
1040                 device and if it is smaller than the reported size of the
1041                 filesystem, report an error.
1042
1043 Sat Aug 12 03:39:18 1995  Remy Card  <card@bbj>
1044
1045         * e2fsck.c (check_if_skip): Print the number of allocated files and
1046                 blocks on clean filesystems.
1047
1048 Fri Aug 11 14:15:36 1995  Remy Card  <card@bbj>
1049
1050         * e2fsck.8: Updated date and version number.
1051
1052 Thu Aug 10 14:26:01 1995  Remy Card  <card@bbj>
1053
1054         * pass1.c (check_blocks): Check that directory size matches *exactly*
1055                 the count of allocated blocks.
1056
1057 Wed Aug  9 21:21:24 1995  Theodore Y. Ts'o  <tytso@dcl>
1058
1059         * pass1b.c (pass1d): Free the shared[] array when we're done with
1060                 it to avoid a memory leak.
1061
1062         * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
1063                 block_dup_map.
1064
1065         * pass2.c (process_bad_inode): When clearing the inode, make sure
1066                 the pathname is freed, to prevent a memory leak.
1067
1068         * pass5.c (check_inode_bitmaps): Free free_array and dir_array
1069                 when we're finished with them.
1070                 (check_block_bitmaps): Free free_array when we're finished
1071                 with them.
1072
1073         * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
1074                 linking the executable.
1075
1076         * pass2.c (process_bad_inode): Even on OS's that don't support the
1077                 fragment fields, make sure the Linux equivalent fields are
1078                 set to zero.  If an OS wants to reuse these fields, which
1079                 is probably a bad idea (although we may get desperate in
1080                 the future) this code will have to be changed.
1081
1082         * pass1.c (dir_block_cmp): If the block numbers are equal, compare
1083                 on the inode field, and then blockcnt field.  This is just
1084                 to keep the ordering of dir_blocks the same on all
1085                 platforms when there are more than on missing directory
1086                 blocks, which are indicated directories with holes, which
1087                 are indicated with the block number being set to zero.
1088
1089 Sun Aug  6 15:40:58 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
1090
1091         * pass1.c (check_blocks, process_block): check_blocks() modified
1092                 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
1093                 the inode is a directory.  process_block() now checks to
1094                 see if a directory has a "hole", or missing block.  If so,
1095                 this fact is recorded in the directory block list so that
1096                 the problem can be resolved in pass #2.
1097
1098         * pass2.c (allocate_dir_block): Added allocate_dir_block() to
1099                 allocate new blocks for directories with "holes".  Called
1100                 out of check_dir_block if a block in the directory block
1101                 list is zero.
1102
1103         * pass3.c (get_lost_and_found): Move location of free(block) to
1104                 prevent possible memory leak.
1105
1106 Sat Aug  5 12:42:22 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
1107
1108         * pass2.c (check_dir_block): Use a automatic, fixed-saize array
1109                 instead of alloca() --- alloca is not portable!  Check to
1110                 make sure the filename is not longer than EXT2_NAME_LEN,
1111                 and offer to fix it by truncating it, since it should
1112                 never happen.
1113
1114         * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
1115                 not portable!!  In any case putenv() in some systems must
1116                 take a static character array or malloc()'ed memory;
1117                 passing memory allocated using alloca() to putenv() is not
1118                 advisable.
1119
1120         * pass2.c (check_dot, check_dotdot): Use malloc() instead of
1121                 alloca() --- alloca() is not portable!!!
1122
1123 Tue Jul 18 20:04:02 1995    <tytso@rsx-11.mit.edu>
1124
1125         * pass1b.c (pass1c): 
1126         * pass3.c (check_root, get_lost_and_found): 
1127         * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
1128                 to read/write the directory block.
1129
1130 Mon Jul 17 04:00:56 1995    <tytso@rsx-11.mit.edu>
1131
1132         * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
1133                 make sure VMIN and VTIME are set correct.
1134
1135 Fri Jul 14 19:26:29 1995    <tytso@rsx-11.mit.edu>
1136
1137         * pass1.c (mark_block_used): Change to be an inline function.
1138                 Assume that the block validity checks are already done,
1139                 and use the fast variant of the bitmap functions.
1140
1141 Thu Jul 13 08:10:55 1995    <tytso@rsx-11.mit.edu>
1142
1143         * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
1144                 bounds of the bitmaps in advance, and then use the fast
1145                 variant of e2fs_test_{block,inode}_bitmap.
1146
1147         * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
1148                 the bounds checking has already been done earlier.
1149
1150 Wed Jul 12 02:22:46 1995    <tytso@rsx-11.mit.edu>
1151
1152         * pass1.c (pass1): Allocate and free the block_illegal_map, which
1153                 is used for shortcut processing in process_block.
1154                 (mark_table_blocks): Initialize block_illegal_map with the
1155                 filesystem blocks.
1156                 (describe_illegal_block): New helper function that
1157                 describes why a block is illegal.
1158                 (process_block): Use block_illegal_map as a shortcut
1159                 to determine whether a block is bad.  Use
1160                 describe_illegal_block to print out why the block is illegal.
1161
1162 Mon Jun 12 19:11:06 1995  Theodore Y. Ts'o  (tytso@dcl)
1163
1164         * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
1165
1166         * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
1167                 <mntent.h> if they don't exist.  (Mostly so that "make
1168                 depend" works.)
1169
1170         * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
1171                 it exists).
1172
1173         * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
1174                 exist. 
1175
1176 Mon Jun 12 08:37:49 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
1177
1178         * pass2.c (process_bad_inode, check_for_zero_long,
1179                 check_for_zero_char):  Change long to u32, and char to u8.
1180
1181 Sun Jun 11 15:05:57 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
1182
1183         * util.c (inode_has_valid_blocks): 
1184         * pass2.c (process_bad_inode): 
1185         * pass1.c (pass1, check_blocks, pass1_check_directory): Use
1186                 LINUX_S_IS* instead of S_IS*.
1187
1188         * e2fsck.h: Don't #include <sys/stat.h>
1189
1190         * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl.  (Although
1191                 this program is pretty much useless if BLKFLSBUF isn't
1192                 supported.)
1193
1194         * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
1195                 used.
1196
1197 Thu Jun  8 12:31:19 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>
1198
1199         * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
1200         to allocate space for file names instead of using fixed size buffers.
1201         (process_bad_inode): Only check inode frag fields if
1202         HAVE_EXT2_FRAGS is defined (by configure).
1203         * pass1.c (pass1): Only check the inode frag fields if
1204         HAVE_EXT2_FRAGS is defined (by configure).
1205
1206         * e2fsck.c (check_mount): Only check for a mounted filesystem if
1207         HAVE_MNTENT_H is defined (by configure).
1208         (PRS): Use alloca to allocate the new path string, instead of
1209         having a fixed size buffer (which was the wrong size anyway).
1210         (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
1211         is defined.
1212
1213         * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
1214         defined (by configure).
1215
1216         * Makefile.in: Rewritten to conform to GNU coding standards and
1217         support separate compilation directories.
1218
1219 Thu Apr  6 15:04:36 1995  Remy Card  <card@bbj.ibp.fr>
1220
1221         * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
1222
1223 Sat Mar 11 13:12:16 1995  Theodore Y. Ts'o  <tytso@localhost>
1224
1225         * pass1.c (unwind_pass1): Clear the file type statistics counter
1226                 when pass 1 needs to be restarted from scratch.
1227
1228         * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
1229                 being reallocated to blocks in the next block group,
1230                 instead of the current block grup.
1231
1232         * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
1233                 inode.i_links_count is set.
1234
1235 Tue Feb 14 01:38:04 1995  Theodore Y. Ts'o  (tytso@rt-11)
1236
1237         * pass1.c (process_block): Add checks for if the block is
1238                 trepassing on a superblock or group descriptor table.
1239
1240 Sat Dec 31 00:52:11 1994    <tytso@rsx-11.mit.edu>
1241
1242         * main.c (corrupt_msg): Extend the message which is printed out
1243                 when the superblock is corrupt, to include the suggestion
1244                 of using the -b option to specify an alternate superblock.
1245
1246 Thu Nov 24 09:29:58 1994  Theodore Y. Ts'o  (tytso@rt-11)
1247
1248         * badblocks.c (read_bad_blocks_file): If we are adding or
1249                 replacing bad blocks in the bad blocks inode, sanity check
1250                 the bad block inode first, and clear out any illegal blocks.
1251
1252         * pass2.c (check_name): Don't bomb out if the attempt to get the
1253                 pathname of the containing directory returns an error; the
1254                 directory may be too badly damaged to expect that
1255                 ext2fs_get_pathname will always succeed.  Use "???" if the
1256                 pathname can't be obtained (it's only for a printf to the
1257                 user anyway).
1258
1259                 The name of the containing directory and the bad filename
1260                 were incorrectly interchanged in the user message.  Fixed.
1261
1262         * pass2.c (check_name, check_dir_block): Use a common static
1263                 string for the unknown pathname.
1264
1265 Mon Nov  7 22:30:54 1994  Remy Card  <card@bbj>
1266
1267         * Fixed lots of printf formats to make sure that block and inode
1268         numbers are printed as unsigned integers.
1269
1270 Mon Oct 24 14:10:46 1994    (tytso@rsx-11)
1271
1272         * pass5.c (check_block_end): Fix calculation of how the last block
1273                 in the block bitmap should be calculated.
1274
1275 Wed Sep  7 10:01:13 1994    (tytso@rsx-11)
1276
1277         * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
1278                 be an ext2fs_inode_bitmap, and free it properly.
1279
1280         * e2fsck.h
1281         * e2fsck.c (main): Folded in Remy Card's changes to add a revision
1282         level to the superblock.
1283
1284 Wed Aug 17 22:00:20 1994  Remy Card  (card@bbj)
1285
1286         * e2fsck.c (usage): Fixed bogus usage message.
1287
1288 Wed Aug 17 11:21:45 1994  Theodore Y. Ts'o  (tytso@rt-11)
1289
1290         * pass1.c (process_bad_block): Fixed bug so that blocks in the
1291         backup superblocks and group descriptors are handled gracefully.
1292