blob: c5f4d16b8e8e6e8ddd8e677e7f930d639178c853 [file] [log] [blame]
Theodore Ts'o86c627e2001-01-11 15:12:14 +000012001-01-11 <tytso@snap.thunk.org>
2
Theodore Ts'o5ba23cb2001-01-11 19:15:02 +00003 * pass1.c (process_block): Remove dead code which was never
4 getting executed.
5
6 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
7 ext2fs_sync_device() instead of using BLKFLSBUF.
8
9 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
10
Theodore Ts'o86c627e2001-01-11 15:12:14 +000011 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
12 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
13 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
14 ino_t to ext2_ino_t.
15
Theodore Ts'o95a5bc92001-01-11 04:58:21 +0000162001-01-09 <tytso@snap.thunk.org>
17
18 * problem.c: Fix another broken @F vs @f problem.
19
Theodore Ts'o53ef44c2001-01-06 05:55:58 +0000202001-01-06 <tytso@snap.thunk.org>
21
22 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
23 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
24
25 * jfs_user.h: Use more sophisticated inline handling to allow
26 building with --enable-gcc-wall
27
Theodore Ts'od3f35b62001-01-03 13:00:43 +0000282001-01-03 <tytso@snap.thunk.org>
29
Theodore Ts'of18996c2001-01-03 16:57:24 +000030 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
31 own block; if the journal inode is not in use, and it
32 contains data, offer to clear it.
33
34 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
35 problem code.
36
37 * problem.c: Modified problem table to use a new abbreviations.
38
Theodore Ts'od74edf42001-01-03 19:38:04 +000039 * message.c: Add @j abbreviation for journal, and @v abbreviation
Theodore Ts'oe9044062001-01-03 15:39:37 +000040 for device.
Theodore Ts'o1ce64532001-01-03 15:34:20 +000041
Theodore Ts'occ7067b2001-01-03 13:24:06 +000042 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
43
Theodore Ts'od3f35b62001-01-03 13:00:43 +000044 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
45 the journal stored on a reserved inode. Also force a fsck
46 if the journal appears to exist while !NEEDS_RECOVERY, and
47 we forcibly reset the journal.
48
Theodore Ts'of5ae75e2001-01-01 14:52:52 +0000492001-01-01 <tytso@snap.thunk.org>
50
Theodore Ts'o5dd8f962001-01-01 15:51:50 +000051 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
52 ext2fs_sb with struct ext2_super_block.
53
Theodore Ts'of5ae75e2001-01-01 14:52:52 +000054 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
55
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +0000562000-12-31 <tytso@snap.thunk.org>
57
58 * jfs_compat.h: Remove uneeded header file.
59
Theodore Ts'ob2f93192000-12-30 20:33:42 +0000602000-12-30 <tytso@snap.thunk.org>
61
Theodore Ts'oc59a7042000-12-31 01:52:03 +000062 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
63 conflicts with the system header file.
64
Theodore Ts'ob2f93192000-12-30 20:33:42 +000065 * problem.h: Fixed numbering of pass1 error messages; an extra 0
66 had slipped into some of the numbers. (Pointed out by
67 Andreas Dilger)
68
69 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
70 unnecessary automatic variable. Add explanatory comment
71 about the kernel emulation routines. (Suggested by
72 Andreas Dilger)
73
Theodore Ts'o060b5fb2000-12-13 18:07:23 +0000742000-12-13 Theodore Ts'o <tytso@valinux.com>
75
Theodore Ts'o9b565752000-12-13 18:50:22 +000076 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
77 journal fields are consistent if any of the superblock
78 fields are set. (Backs out erroneous change made by sct,
79 pointed out by Andreas.)
80
81 * unix.c (main): Clarify coments (no code changes)
82
83 * super.c (release_orphan_inodes): Fix spelling typo in error message.
84
Theodore Ts'o8188c9e2000-12-13 18:39:14 +000085 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
86 level if we need to set large files flag. Patch from
87 Andreas Dilger.
88
Theodore Ts'o7b59f1e2000-12-13 18:11:44 +000089 * super.c (check_super_block): If we have any of the compatibility
90 flags set, we need to have a revision 1 filesystem. Most
91 kernels will not check the flags on a rev 0 filesystem
92 and we may have corruption issues because of the
93 incompatible changes to the filesystem. Patch from Andreas
94 Dilger.
95
Theodore Ts'o060b5fb2000-12-13 18:07:23 +000096 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
97 new problem codes.
98
Theodore Ts'o0e8a9562000-12-09 06:41:25 +0000992000-12-09 <tytso@snap.thunk.org>
100
Theodore Ts'obf2d4992000-12-09 14:46:20 +0000101 * flushb.c: Fix flushb so that it does something other than waste
102 disk space when built on systems with modern header files
103 and add a non-subtle Copyright Licensing restriction so
104 Yann will remove it from the Debian Distribution. (Now
105 violates the Debian Free Software Guidelines, on purpose.)
106
Theodore Ts'of43650c2000-12-09 06:47:56 +0000107 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
108 at the top level, set the JFS debuging level to 2.
109
Theodore Ts'o0e8a9562000-12-09 06:41:25 +0000110 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
111 has been moved to the include/linux directory.
112
113 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
114 support the V2 superblock and revoke processing. The
115 journal.c and revoke.c files are copies from the ext3
116 kernel source.
117
118 * Makefile.in: Added revoke.c to the list of source/object files.
119
Theodore Ts'o133a56d2000-11-17 05:40:49 +00001202000-11-16 Theodore Ts'o <tytso@valinux.com>
121
122 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
123 reporting problems rather than using com_err directly.
124
125 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
126
127 * message.c (expand_percent_expression): Add safety check. If
128 ctx->str is NULL, print "NULL" instead of dereferencing
129 the null pointer.
130
131 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
132 to ext2fs_block_iterate2, to support 64-bit filesizes and
133 to speed things up slightly by avoiding the use of the
134 ext2fs_block_iterate's compatibility shim layer.
135
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +00001362000-10-30 <tytso@snap.thunk.org>
137
138 * util.c (get_backup_sb): Calculate backup superblock correctly
139 when the blocksize is > 1k.
140
Theodore Ts'o241f2242000-10-26 20:42:07 +00001412000-10-26 <tytso@snap.thunk.org>
142
143 * jfs.h, jfs_compat.h, journal.c: Updated to include the
144 definition of the new journal superblock format; still
145 only supports V1 superblocks for now. (From sct)
146
Theodore Ts'ob09a4b02000-10-24 21:16:09 +00001472000-10-24 <tytso@snap.thunk.org>
148
Theodore Ts'o83949022000-10-25 01:38:50 +0000149 * super.c (release_inode_block, release_inode_blocks,
150 release_orphan_inodes): Add code to deal with truncating
151 inodes which are still in use (but which are on the orphan
152 list because they need truncation).
153
154 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
155 PR_0_ORPHAN_CLEAR_INODE, and remove
156 PR_0_ORPHAN_INODE_INUSE.
157
158 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
159 a message when the journal is being recovered.
160
Theodore Ts'ob09a4b02000-10-24 21:16:09 +0000161 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
162 journal inode, if it is in use.
163
Theodore Ts'oadfca562000-09-12 21:24:36 +00001642000-09-12 <tytso@valinux.com>
165
166 * extend.c:
167 * flushb.c: Add include of nls-enable.h which is necessary so that
168 they can compile correctly.
169
Theodore Ts'occ96b2b2000-08-22 21:30:11 +00001702000-08-22 <tytso@valinux.com>
171
Theodore Ts'o2575fb02000-08-22 21:50:04 +0000172 * unix.c (main): If we're doing a read-only check, skip the
173 journal playback, but don't abort the e2fsck run.
174
Theodore Ts'o99a2cc92000-08-22 21:41:52 +0000175 * super.c (release_orphan_inodes): Fix typo; should do bounds
176 checking on next_ino instead of ino.
177
178 * jfs_compat.h (J_ASSERT):
179 * journal.c (e2fsck_run_ext3_journal):
180 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
181
Theodore Ts'o243dc312000-08-22 21:37:47 +0000182 * unix.c: Use fatal_error() instead of exit() whenever possible.
183 Also fix the fsck exit codes so that we use FSCK_USAGE
184 when it is appropriate. Rename global_signal_ctx to
185 e2fsck_global_ctx and let it be exported globally.
186
Theodore Ts'occ96b2b2000-08-22 21:30:11 +0000187 * util.c (fatal_error): Try to flush the I/O manager before
188 forcing an exit.
189
Theodore Ts'oecf1b772000-08-20 22:06:31 +00001902000-08-20 <tytso@valinux.com>
191
192 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
193 e2fsck_check_ext3_journal to smash the journal because
194 journal->j_transaction_sequence wasn't getting
195 initialized.
196
197 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
198 call to e2fsck_clear_recover from recover_ext3_journal to
199 after the filesystem has been closed and reopened.
200 Otherwise, the superblock in the filesystem handle will
201 probably be stale, and will overwrite the newer version of
202 the superblock written by the log recovery.
203
204 * message.c (expand_inode_expression): Add support for %Iu and %Ig
205
206 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
207
208 * super.c (release_orphan_inodes, release_inode_block,
209 release_inode_blocks): Update the block group descriptor
210 counts when freeing the orphan inode. Use
211 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
212
213 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
214 attempted to reopen the filesystem using the device name
215 instead of the filesystem name.
216
Theodore Ts'o80bfaa32000-08-18 15:08:37 +00002172000-08-18 <tytso@valinux.com>
218
219 * Makefile.in: Update the make dependencies
220
221 * problem.c, problem.h: Add the problem codes:
222 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
223 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
224 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
225 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
226
227 * super.c (release_inode_blocks, release_orphan_inodes,
228 check_super_block): Add support for clearing orphaned
229 inodes from the unmounted filesystem.
230
231 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
232 check; this is now handled in check_super_block ---
233 non-journaled filesystems can use the orphan list in the
234 future. Also, move the the re-opening of the filesystem
235 to e2fsck_run_ext3_journal().
236
Theodore Ts'o3b5386d2000-08-14 14:25:19 +00002372000-07-12 Andreas Dilger <adilger@turbolinux.com>
238
239 * journal.c: implement loading of ext3 journal for recovery code
240
241 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
242 Add journal problems.
243
244 * recovery.c (journal_recover): user-space ext3 journal recovery code
245
246 * unix.c (main) : check journal and do recovery in separate steps
247
Theodore Ts'ob8d164c2000-08-08 03:17:04 +00002482000-08-07 <tytso@snap.thunk.org>
249
250 * unix.c (calc_percent): Make sure that we don't take a floating
251 exception if the max value is zero. (should normally
252 never happen, but...)
253
Theodore Ts'of9e67062000-07-13 23:25:54 +00002542000-07-13 <tytso@valinux.com>
255
256 * Release of E2fsprogs 1.19
257
Theodore Ts'o17390c02000-07-07 04:13:21 +00002582000-07-06 Theodore Ts'o <tytso@valinux.com>
259
260 * unix.c (check_if_skip): Modify algorithm for checking
261 s_max_mnt_count to match with the kernel. (If
262 s_max_mnt_count is negative, ignore the mnt_count check.)
263
264 * unix.c (e2fsck_update_progress): Adjust the width of the
265 progress bar dynamically, based on the filesystem name
266 that we need to display.
267
268 * unix.c (main): If the ext3 needs_recovery flag is set, call
269 e2fsck_run_ext3_journal() and then restart the e2fsck run.
270
271 * journal.c (e2fsck_run_ext3_journal): New file which contains
272 logic to recover the ext3 journal. This version relies on
273 the kernel being able to mount the filesystem in order to
274 run the journal.
275
Theodore Ts'o92269042000-07-05 18:25:59 +00002762000-07-05 Theodore Ts'o <tytso@valinux.com>
277
278 * unix.c (e2fsck_update_progress): Only save and check the last
279 percentage after multiplying it by 10, nor 1000, since we
280 only need to save values to a tenth of a percent (and the
281 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +0000282 Also, re-arrange the logic so that we do the time
283 check only after doing the percentage check, and we
284 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +0000285
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +00002862000-07-04 Theodore Ts'o <tytso@valinux.com>
287
288 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
289 field is set; if so, clear it, so that ext3 mounting code
290 won't get confused by the fact that we've cleared out the
291 orphaned inodes.
292
Theodore Ts'obbd47d72000-06-10 19:21:33 +00002932000-06-10 Theodore Ts'o <tytso@valinux.com>
294
295 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
296 checking for a "should never happen case".
297
298 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
299 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
300
Theodore Ts'od647a1e2000-05-27 14:40:09 +00003012000-05-27 Theodore Ts'o <tytso@valinux.com>
302
303 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
304 (cw@foof.org) which checks to see if special devices have
305 a non-zero size, and deals with it.
306
307 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
308
Theodore Ts'o1d279212000-05-19 02:38:14 +00003092000-05-18 Theodore Ts'o <tytso@valinux.com>
310
311 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
312 well.
313
Theodore Ts'o4ea0a112000-05-08 13:33:17 +00003142000-05-08 Theodore Ts'o <tytso@valinux.com>
315
316 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
317 code.
318
319 * super.c (check_super_block): If the OS type in the superblock is
320 the Hurd, check to see if the filetype feature is set, and
321 offer to clear it if so. This needs to be done since the
322 Hurd doesn't properly support the filetype feature.
323 (And since the hurd allows the transmogrification of files
324 to special files and vice versa --- for no good reason
325 that I can understand --- it can't support the filetype
326 feature for the forseeable future, either.)
327
Theodore Ts'o373b8332000-04-03 16:22:35 +00003282000-04-03 Theodore Ts'o <tytso@valinux.com>
329
330 * unix.c: For platforms that don't define optarg.h, manually
331 define optarg and optind.
332
Theodore Ts'o01fbc702000-04-03 13:57:21 +00003332000-03-20 Theodore Ts'o <tytso@valinux.com>
334
335 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
336 Check for the append-only as well as the immutable flag.
337
338 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
339 append-only flag. Fix comment for compression flag.
340
Theodore Ts'o06012322000-02-12 20:12:43 +00003412000-02-12 <tytso@snap.thunk.org>
342
343 * unix.c (e2fsck_update_progress): Limit the number of updates to
344 the progress bars to 8 times a second. This allows a 9600
345 baud console link to keep up.
346
Theodore Ts'o19178752000-02-11 15:55:07 +00003472000-02-11 <tytso@snap.thunk.org>
348
349 * unix.c (main): If compression is enabled on the filesystem,
350 print a warning message (for now).
351
352 * message.c: Add new compression shortcut: @c == compress
353
354 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
355
356 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
357 set, check to see if the filesystem supports compression.
358 If it does pass this information down to process_block()
359 so it can treat the compressed block flag words
360 correctly. If not, offer to clear the flag, since it
361 shouldn't be set.
362 (process_block): If an inode has the compressed inode flag
363 set, allow EXT2FS_COMPRESSED_BLKADDR.
364
365 * pass1b.c (process_pass1b_block, delete_file_block,
366 clone_file_block):
367 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
368 see if the block can be skipped.
369
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00003702000-02-08 <tytso@snap.thunk.org>
371
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +0000372 * util.c: Make resource tracking message more concise.
373
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +0000374 * e2fsck.h:
375 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
376 ctx->block_illegal_map, since it's not needed by pass1,
377 and pass1b has been modified to calculate it manually if
378 needed. This reduces the memory footprint needed by e2fsck.
379
380 * pass1b.c (check_if_fs_block): New static function which returns
381 whether or not a block overlaps with filesystem metadata.
382 This replaces consulting the block_illegal_map bitmap.
383
Theodore Ts'o28ffafb2000-02-08 19:14:02 +0000384 * Makefile.in: Call sync after finishing building all in this
385 directory.
386
387 * unix.c (PRS): sync the filesystem before trying to use
388 BLKFLSBUF, to minimize the chance of causing dirty blocks
389 to get dropped.
390
391 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
392 a Linux/i386 system.
393
394 * pass3.c (check_directory): Only do the loop detection algorithm
395 if we've searched over 2048 parent directories and haven't
396 found the end yet. This means that in the common case, we
397 don't allocate or clear the inode_loop_detection bitmap,
398 which for large systems, merely clearing the bitmap for
399 each directory was turning out to be quite expensive.
400 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
401 identifying this problem.
402
Theodore Ts'o0c4a0722000-02-07 03:11:03 +00004032000-02-06 Theodore Ts'o <tytso@valinux.com>
404
405 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
406 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
407 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
408 unix.c, util.c: Add Internationalization support as
409 suggested by Marco d'Itri <md@linux.it>.
410
Theodore Ts'o80e808f2000-02-02 16:19:59 +00004112000-02-02 Theodore Ts'o <tytso@valinux.com>
412
413 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
414 linux/fs.h
415
Theodore Ts'o894edb22000-01-18 21:27:12 +00004162000-01-18 Theodore Ts'o <tytso@valinux.com>
417
418 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
419 we need a separate DEPLIBUUID that can be used in
420 Makefile's dependency rules.
421
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +00004221999-11-23 <tytso@valinux.com>
423
424 * e2fsck.8.in: Update language about where to find a backup
425 superblock.
426
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00004271999-11-19 <tytso@valinux.com>
428
Theodore Ts'o86a63e91999-11-23 13:52:48 +0000429 * pass1.c (process_inodes): Add shortcut handling; if
430 process_inodes_count is zero, return right away, to avoid
431 calling qsort with a non-positive count.
432
Theodore Ts'oec8d2c31999-11-19 18:52:36 +0000433 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
434 to print Delete as ^?
435
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +0000436 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
437 the source directory.
438
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00004391999-11-10 <tytso@valinux.com>
440
Theodore Ts'ocd086361999-11-10 16:00:39 +0000441 * Release of E2fsprogs 1.18
442
4431999-11-10 <tytso@valinux.com>
444
Theodore Ts'oa846d2f1999-11-10 15:50:24 +0000445 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
446 means the answer is assumed to be no in preen mode. This
447 is now used in the PR_1_SET_IMMUTABLE code, so that in
448 preen mode we ignore these inodes and just print a warning
449 message.
450
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +00004511999-11-09 <tytso@valinux.com>
452
453 * pass1.c (e2fsck_pass1): If the filesystem does not support
454 imagic inodes, if an inode has the imagic flag set, offer
455 to clear the imagic flag. If a valid device/fifo/socket
456 has the immutable flag set, call the new helper function
457 check_immutable() to offerto clear the immutable flag.
458
459 * pass2.c (check_filetype): Use the new ext2_file_type() helper
460 function instead of calculating the file_type information
461 manually.
462
463 * pass3.c (e2fsck_reconnect_file): When adding a link to
464 lost+found, calculate the filetype information so that
465 ext2fs_link() can use the information if applicable.
466 (get_lost_and_found): Create the /lost+found directory
467 with the correct filetype information if applicable.
468
469 * util.c (ext2_file_type), e2fsck.h: New function which returns
470 the directory entry file type information given the
471 inode's mode bits.
472
473 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
474 and PR_1_SET_IMMUTABLE.
475
Theodore Ts'o7142db01999-11-08 18:46:54 +00004761999-11-07 <tytso@valinux.com>
477
478 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
479 to prevent it from getting freed twice.
480
4811999-11-06 <tytso@valinux.com>
482
483 * unix.c (main): Close the filesystem before freeing the context,
484 so that in the event of a free()-related segmentation
485 violation, the filesystem is properly closed and written
486 out.
487
4881999-10-27 <tytso@valinux.com>
489
490 * e2fsck.c (e2fsck_reset_context): When freeing
491 ctx->inode_reg_map, we weren't zero'ing
492 ctx->inode_reg_map, which could cause a segfault later on
493 in the e2fsck run.
494
4951999-10-26 <tytso@valinux.com>
496
497 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
498 matches the standard convention).
499
Theodore Ts'of68aa411999-10-26 14:20:22 +00005001999-10-26 <tytso@valinux.com>
501
Theodore Ts'o28e11941999-10-26 18:17:20 +0000502 * Release of E2fsprogs 1.17
503
5041999-10-26 <tytso@valinux.com>
505
Theodore Ts'of68aa411999-10-26 14:20:22 +0000506 * message.c (safe_print): Make safe_print take an char instead of
507 an unsigned char to fix gcc warnings.
508
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00005091999-10-25 <tytso@valinux.com>
510
Theodore Ts'oe6597041999-10-26 02:30:16 +0000511 * util.c: For NT portability, don't redefine getchar(), since
512 stdio defines that. Instead we introduce a new
513 abstract macro read_a_char() which is #defined to the
514 right function as necessary.
515
Theodore Ts'oc40db6d1999-10-25 21:03:34 +0000516 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
517
518 * pass2.c (check_dir_block): Require that the length of the
519 directory entry be at least 12 bytes. Check to see if the
520 filename is zero-length, and flag that as an error.
521
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00005221999-10-22 <tytso@valinux.com>
523
Theodore Ts'o614fdfd1999-10-23 03:19:51 +0000524 * Release of E2fsprogs 1.16
525
5261999-10-22 <tytso@valinux.com>
527
Theodore Ts'o7847c1d1999-10-22 15:11:42 +0000528 * pass2.c (check_filetype): If the filetype filesystem feature is
529 not set, and a directory entry has a dirent feature, offer
530 to clear it (since 2.0 kernels will do complain will
531 interpret it as a very large name length field).
532
533 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
534
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00005351999-10-21 <tytso@valinux.com>
536
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +0000537 * e2fsck.8.in: Update man page to use a more standard format (bold
538 option flags and italicized variables), as suggested by
539 Andreas Dilger (adilger@enel.ucalgary.ca)
540
Theodore Ts'oaa4115a1999-10-21 19:33:18 +0000541 * pass4.c (e2fsck_pass4): If an inode is set in the
542 inode_imagic_map bitmap, don't check to see if it is
543 disconnected from the inode tree (because it almost
544 certainly will be). Free inode_imagic_map at the end of
545 pass 4.
546
547 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
548 feature is set, check the directory entry's filetype
549 information field, and fix/set it if necessary.
550 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
551 of pass 2.
552
553 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
554 information for inode_reg_map and inode_imagic_map, which
555 indicates which inodes are regular files and AFS inodes,
556 respectively.
557 Since only the master superblock is written during a
558 restart, force that superblock to be used after a restart;
559 otherwise changes to the block group descriptors end up
560 getting ignored.
561
562 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
563 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
564 which supresses the problem message if e2fsck is run with
565 the -n option.
566
567 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
568 new problem codes.
569
570 * message.c (expand_dirent_expression): Add support for %dt which
571 prints the dirent type information.
572
573 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
574 and inode_imagic_map).
575
576 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
577 to the context structure.
578
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +00005791999-09-24 <tytso@valinux.com>
580
581 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
582 e2fsprogs easier to port to non-Unix platforms.
583
5841999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +0000585
586 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
587 internal and external inode counts in sync when we
588 decremented an inode whose link count was already zero.
589 Now we skip incrementing or decrementing both link counts
590 if we would cause an overflow condition.
591 (expand_dir, expand_dir_proc): Change where we update the
592 inode block count and size files so that the block count
593 field is updated correctly when we create an indirect block.
594
Theodore Ts'o78cf0541999-10-20 18:29:18 +00005951999-08-05 <tytso@valinux.com>
596
597 * super.c (check_super_block): Check to see whether the
598 inodes_per_group value in the superblock is insanely too
599 high.
600
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00006011999-08-02 <tytso@valinux.com>
602
603 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
604 the block also shares data with the fs metadata when
605 the count drops to 1, since the block should still be
606 cloned, as fs metadata isn't included in the count.
607
6081999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +0000609
610 * Release of E2fsprogs 1.15
611
Theodore Ts'ob55199e1999-07-19 15:37:46 +00006121999-07-19 <tytso@valinux.com>
613
614 * unix.c (usage): Add minimalist emergency help to the usage
615 message.
616
Theodore Ts'o5596def1999-07-19 15:27:37 +00006171999-07-18 <tytso@valinux.com>
618
619 * unix.c: Add support for calculating a progress bar if the -C0
620 option is given. The function e2fsck_clear_progbar()
621 clears the progress bar and must be called before any
622 message is issued. SIGUSR1 will enable the progress bar,
623 and SIGUSR2 will disable the progress bar. This is used
624 by fsck to handle parallel filesystem checks. Also, set
625 the device_name from the filesystem label if it is
626 available.
627
628 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
629 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
630 structure which contains the last tenth of a percent
631 printed for the user.
632
633 * message.c (print_e2fsck_message): Add call to
634 e2fsck_clear_progbar().
635
636 * pass1.c (e2fsck_pass1):
637 * pass2.c (e2fsck_pass2):
638 * pass3.c (e2fsck_pass3):
639 * pass4.c (e2fsck_pass4):
640 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
641 printing the resource tracking information.
642
643 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
644 an error in the bitmaps, suppress printing the progress
645 bar using the suppression flag for the remainder of the
646 check, in order to clean up the display.
647
Theodore Ts'o74033351999-07-01 03:00:47 +00006481999-06-30 <tytso@valinux.com>
649
650 * unix.c (check_mount): Clean up the abort message displayed when
651 the filesystem is mounted and either stdout or stdin isn't
652 a tty.
653
6541999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +0000655
656 * e2fsck.h:
657 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
658 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
659 pass1_* be private static functions, and create new
660 function e2fsck_use_inode_shortcuts which sets and clears
661 the inode shortcut functions in the fs structure.
662
663 * e2fsck.h:
664 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
665 exported function.
666
667 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
668 if a disconnected inode has any problems before
669 connecting it to /lost+found. Bug and suggested fix by
670 Pavel Machek <pavel@bug.ucw.cz>
671
6721999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +0000673
674 * unix.c (main): Add missing space in the disk write-protected
675 message.
676
Theodore Ts'od4b0ce01999-06-18 01:09:29 +00006771999-05-22 <tytso@rsts-11.mit.edu>
678
679 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
680 code.
681
682 * super.c (check_super_block): Add check to make sure the total
683 number of inodes is sane, since this can be calculated
684 from the number of groups times the number of inodes per
685 group. Offer to correct it if it is incorrect.
686
Theodore Ts'oe79d1b21999-06-18 01:06:59 +00006871999-03-19 <tytso@rsts-11.mit.edu>
688
689 * pass5.c (check_block_end): Fix fencepost condition where when
690 clearing the block padding we were missing the last position
691 in the bitmap.
692
Theodore Ts'o75d83be1999-05-18 03:16:36 +00006931999-05-17 <tytso@rsts-11.mit.edu>
694
695 * unix.c (reserve_stdio_fds): Add safety check in case
696 reserve_stdio_fds couldn't open /dev/null.
697
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00006981999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
699
700 * util.c (print_resource_track): Use mallinfo if present to get
701 more accurate malloc statistics.
702
703 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +0000704 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +0000705
706 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
707
7081999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
709
710 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
711 that the block group number is printed. Add new prompt,
712 PROMPT_UNLINK.
713
7141999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
715
716 * Release of E2fsprogs 1.14
717
Theodore Ts'o9e51eca1999-01-09 16:32:31 +00007181999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
719
720 * message.c (safe_print): New function which prints strings,
721 converting non-printable characters using the '^' and
722 M-notation. This function is now used to print directory
723 name entries and pathnames.
724
Theodore Ts'o73f17cf1999-01-04 07:35:45 +0000725Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
726
727 * unix.c (main): Reset the context before calling ext2fs_close(),
728 to avoid referencing already freed memory.
729
Theodore Ts'o556ad131998-12-19 08:10:58 +00007301998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
731
732 * Release of E2fsprogs 1.13
733
Theodore Ts'o5a679c81998-12-03 16:40:38 +00007341998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
735
736 * Makefile.in: Updated dependencies.
737
7381998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
739
740 * pass3.c (get_lost_and_found): If the filesystem is not opened
741 read-only, then force /lost+found to be created if it is
742 not present.
743
744 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
745 operation.
746
Theodore Ts'o1dde43f1998-11-14 04:18:28 +00007471998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
748
749 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
750 since e2fsck_free_context may reference data in ctx->fs.
751
752 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
753 before checking ctx->fs->dblist.
754
7551998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
756
757 * pass1.c (e2fsck_pass1): Use the device check subroutine on
758 FIFO's and Socket's, so that we catch bogus immutable inodes.
759
760 * pass2.c (process_bad_inode): Process bad socket and fifo's.
761
762 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
763 PR_2_BAD_SOCKET.
764
Theodore Ts'o7f813ba1998-09-03 01:26:03 +00007651998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
766
767 * problem.c: Add PR_3_NO_DIRINFO error code.
768
769 * super.c (check_super_value): Rename min and max to min_val and
770 max_val to avoid possible cpp macro conflicts.
771
772 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
773 possible cpp macro conflicts.
774
775 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
776 cpp macro conflicts.
777 (check_directory): Fix logic to avoid possible core dump
778 in the case of ext2fs_get_dir_info returning NULL. (By
779 the time we get here, it should never happen, but...).
780 Also simply/streamline the control flow of the function.
781
Theodore Ts'o24fc5031998-08-26 15:23:31 +00007821998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
783
784 * unix.c (check_if_skip): Move the "not cleanly mounted" check
785 ahead of the maximal mount and too long since checked tests.
786 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
787 open, so that we don't open the filesystem using the same
788 file descriptor as stdout or stderr.
789
Theodore Ts'of75c28d1998-08-01 04:18:06 +00007901998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
791
792 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
793 get to 100%.
794
795 * pass3.c (e2fsck_pass3): Change progress accounting to be
796 consistent with the other e2fsck passes.
797
798 * e2fsck.c (e2fsck_run): At the end of each pass, call the
799 progress function with the pass number set to zero.
800
801 * unix.c (e2fsck_update_progress): If the pass number is zero,
802 ignore the call, since that indicates that we just want to
803 deallocate any progress structures.
804
Theodore Ts'o8144d671998-07-09 05:33:18 +00008051998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
806
Theodore Ts'o4a5fa191998-07-09 05:42:45 +0000807 * Release of E2fsprogs 1.12
808
8091998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
810
Theodore Ts'o8144d671998-07-09 05:33:18 +0000811 * unix.c (main): Fix typo in checking the incompat feature set; it
812 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
813
Theodore Ts'o1fad9041998-07-07 05:44:43 +00008141998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
815
816 * badblocks.c (test_disk): Don't clear the existing bad blocks
817 list when using e2fsck -c, since it may cause blocks with
818 marginal errors to be dropped from the bad blocks list.
819
Theodore Ts'o874b4d21998-07-06 14:33:12 +0000820Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
821
822 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
823 compatibility with older kernels.
824
Theodore Ts'o818180c1998-06-27 05:11:14 +00008251998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
826
827 * unix.c (e2fsck_update_progress): Remove unused variables.
828
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +00008291998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
830
831 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
832 collision with LFS API.
833
834 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
835 properly initialized.
836 (e2fsck_pass1): Don't allow the the boot loader inode to
837 be a directory (clear the inode mode field if so).
838
Theodore Ts'oefac9a11998-05-07 05:02:00 +00008391998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
840
841 * unix.c (PRS): Added new option -C, which causes e2fsck to print
842 progress updates so that callers can keep track of the
843 completion progress of e2fsck. Designed for use by
844 progress, except for -C 0, which prints a spinning report
845 which may be useful for some users.
846
847 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
848 scheme (useful for larger filesystems).
849
850 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
851 progress reporting functions.
852
Theodore Ts'o4c77fe51998-04-30 17:35:59 +00008531998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
854
855 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
856 appropriate return type for comparison functions for qsort.
857
858 * e2fsck.h: Add #ifdef protection for unistd.h
859
860 * super.c: Remove header files already included by e2fsck.h
861
Theodore Ts'o76f875d1998-04-27 01:41:13 +00008621998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
863
864 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
865 size of the memory to be resized to ext2fs_resize_mem().
866
Theodore Ts'o7e44f241998-04-01 03:16:29 +00008671998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
868
869 * Makefile.in: Change to use new installation directory variables
870 convention. Fix uninstall rules to take $(DESTDIR) into
871 account. Remove cat8dir from the installdirs target,
872 since modern man package don't necessarily put the cat
873 directory in /usr/man/cat?.
874
Theodore Ts'o17dba281998-03-30 01:16:26 +00008751998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
876
877 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
878 extern in e2fsck.h to prevent -Wall warnings.
879
880 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
881
8821998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
883
884 * super.c (check_super_block): Fix broken superblock sanity check
885 when calculating blocks_per_group if s_log_frag_size !=
886 s_log_block_size. Since we don't support fragments, this
887 isn't a bug deal, but it's good to get it fixed.
888
Theodore Ts'o246501c1998-03-24 16:22:38 +00008891998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
890
891 * unix.c: Fix bug in check of feature set, to make sure we can
892 really fix this filesystem.
893
894 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
895 num field be a 64 bit type. Add the problem code
896 PR_1_FEATURE_LARGE_FILES
897
898 * problem.c: Add table entry for the problem code
899 PR_1_FEATURE_LARGE_FILES.
900
901 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
902 a problem for directory inodes. (Since it is also
903 i_size_high now.) If there are no large_files, then
904 clear the LARGE_FLAG feature flag. If there are
905 large_files, but the LARGE_FLAG feature flag is not set,
906 complain and offer to fix it.
907 (check_blocks): Add support to deal with non-directory
908 inodes that have i_size_high set (i.e., large_files).
909 Don't give an error if a directory has preallocated
910 blocks, to support the DIR_PREALLOC feature.
911 (process_block, process_bad_block): The blockcnt variable
912 is a type of blkcnt_t, for conversion to the new
913 block_iterate2.
914
915 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
916 a problem for directory inodes. (Since it is also
917 i_size_high now.)
918
919 * message.c (expand_inode_expression): Print a 64-bits of the
920 inode size for non-directory inodes. (Directory inodes
921 can only use a 32-bit directory acl size, since
922 i_size_high is shared with i_dir_acl.) Add sanity check
923 so that trying to print out the directory acl on a
924 non-directory inode will print zero.
925 (expand_percent_expression): %B and %N, which print
926 pctx->blkcount and pctx->num, can now be 64 bit
927 variables. Print them using the "%lld" format if
928 EXT2_NO_64_TYPE is not defined.
929
930 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
931
932 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
933 field.
934
Theodore Ts'ob6f79831998-03-09 13:10:37 +0000935Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
936
937 * pass3.c (fix_dotdot_proc):
938 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
939 * message.c (expand_dirent_expression): Mask off the high eight
940 bits of the directory entry's name_len field, so that it
941 can be used for other purposes.
942
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +0000943Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
944
945 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
946 include EXT2_FLAG_RESTART anymore, we need to adjust this
947 routine so that it *does* return in the case of it seeing
948 EXT2_FLAG_RESTART.
949
950 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
951 done callback function, which may set context abort
952 flags. So we need to test the context abort flags after
953 we call ext2_get_next_inode().
954 (process_inodes): If we abort due out of process_inodes,
955 do a clean exit by breaking out of the for loop instead of
956 just returning.
957
958 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
959 considered a SIGNAL mask (i.e., requiring an immediate
960 abort of processing to restart). FLAG_RESTART just means
961 that we want to restart once pass 1 is complete.
962
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +0000963Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
964
965 * Change the progress function to return an integer; if returns 1,
966 then the progress function is expected to have set the
967 e2fsck context flag signalling a user abort, and the
968 caller should also initiate a user abort.
969
Theodore Ts'o63c49691998-02-20 05:24:59 +0000970Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
971
972 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
973 end_problem_latch() unless there was actually a problem
974 latched. Simplifies semantics of the latch processing.
975
Theodore Ts'o43139321998-02-16 22:34:46 +0000976Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
977
978 * e2fsck.h: Add new field, priv_data to the e2fsck context
979 structure. It should be used by callers of the e2fsck
980 functions only, and not by anything in e2fsck itself.
981
982Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
983
984 * super.c: Instead of call ext2fs_get_device_size(), define and call
985 e2fsck_get_device_size(). (This function may be stubbed
986 out in special versions of e2fsck.)
987
988 * pass3.c, pass4.c: Remove extra calls to the progress function
989 that weren't needed.
990
991 * mke2fs.8.in: Update man page to note that the format of the bad
992 block file is the same as the one generated by badblocks.
993
Theodore Ts'o54be2cc1998-02-01 12:58:48 +0000994Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
995
996 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
997
998 * e2fsck.h: Include <time.h> since it is needed
999
1000 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
1001 processing.
1002
Theodore Ts'o24dd4021998-02-01 00:16:40 +00001003Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1004
1005 * unix.c (main): In the case where the filesystem revision is too
1006 high, print the message about the superblock possibly
1007 being corrupt.
1008
1009 * e2fsck.8.in: Add expanded comments about how the -b option
1010 works.
1011
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +00001012Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1013
1014 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
1015 the ext2-specific header files are in a flat directory.
1016
1017 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
1018 super.c, swapfs.c, unix.c: Explicitly cast all assignments
1019 from void * to be compatible with C++.
1020
1021Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1022
1023 * unix.c (sync_disk): Remove sync_disk and calls to that function,
1024 since ext2fs_close() now takes care of this.
1025
1026Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1027
1028 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
1029 ehandler.c, unix.c: Change use of private to be priv_data,
1030 to avoid C++ reserved name clash.
1031
Theodore Ts'o5be8dc21997-12-01 18:24:10 +00001032Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1033
1034 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
1035 of e2fsck_get_num_dirs, which has been removed.
1036
1037Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1038
1039 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
1040 to compile and install flushb.
1041
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +00001042Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1043
1044 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
1045 to make sure the extra i_blocks in a device are cleared if
1046 the immutable flag is set.
1047
1048 * util.c (print_resource_track): Fix typo which caused the
1049 time/resource tracking to print "Pass 1 :" instead of
1050 "Pass 1: ".
1051
Theodore Ts'ob8647fa1997-11-20 21:52:43 +00001052Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1053
1054 * pass3.c (expand_directory): Fix bug which could cause core dump
1055 when expanding the directory, and the bitmaps hadn't yet
1056 been read in. Also, only use ext2fs_write_dir_block when
1057 writing a directory block, not when writing out a fresh
1058 indirect block.
1059
Theodore Ts'o8039c481997-11-19 21:39:13 +00001060Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1061
1062 * pass1.c (process_bad_block): Fix bug where first_block wasn't
1063 getting incremented, which caused user to get a
1064 "Programming error?" warning if there was a bad block in a
1065 non-primary superblock/group_descriptor. Also fixed
1066 another bug so that ext2fs_bg_has_super() is consulted, to
1067 avoid problems when using a filesystem with the
1068 sparse_groups option set and there are bad blocks at the
1069 beginning of a group which doesn't have a superblock.
1070
Theodore Ts'of8188ff1997-11-14 05:23:04 +00001071Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1072
1073 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
1074 progress indicator function.
1075
1076 * pass1.c (scan_callback): Add call to the progress feedback
1077 function (if it exists).
1078
1079Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1080
1081 * super.c (check_super_block): Skip the device size check if the
1082 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
1083
1084 * iscan.c (main): Don't use fatal_error() anymore.
1085
1086 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
1087 calling fatal_error(0).
1088
1089 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
1090 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
1091
1092 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
1093
1094 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
1095
1096 * problemP.h: New file which separates out the private fix_problem
1097 data structures.
1098
1099 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
1100 swapfs.c util.c: allocate_memory() now takes a e2fsck
1101 context as its first argument, and rename it to be
1102 e2fsck_allocate_memory().
1103
Theodore Ts'o08b21301997-11-03 19:42:40 +00001104Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1105
Theodore Ts'o68227541997-11-04 04:25:22 +00001106 * unix.c (main): Add a special case check for the error code EROFS
1107 and display an appropriate error message for this case.
1108
Theodore Ts'o08b21301997-11-03 19:42:40 +00001109 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
1110 to take the e2fsck context as their first argument.
1111 Change dir_info.c routines to take an e2fsck_context,
1112 renamed them to start with e2fsck_ to avoid namespace
1113 issues, and changed them to store the directory
1114 information inside the e2fsck context.
1115 Added e2fsck_run() which calls all of the e2fsck passes in
1116 the correct order, and which handles the return of abort
1117 codes. Added abort processing, both via setjmp/longjmp
1118 and via flags in the e2fsck context. Use a flag in the
1119 e2fsck context instead of the restart_e2fsck global
1120 variable. Change uses of free and malloc to
1121 ext2fs_free_mem and ext2fs_get_mem.
1122
Theodore Ts'o291c9041997-10-31 06:17:08 +00001123Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1124
1125 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
1126 consistency.
1127
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00001128Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1129
1130 * pass3.c (get_lost_and_found): Check error return of
1131 EXT2_FILE_NOT_FOUND instead of ENOTDIR
1132
1133 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
1134 instead of ENOTDIR
1135
Theodore Ts'o622f5f21997-10-24 04:18:21 +00001136Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1137
Theodore Ts'o519149f1997-10-25 03:49:49 +00001138 * unix.c (PRS): Make the variable which getopt returns into be
1139 an int, so that it won't lose on platforms where char is
1140 unsigned.
1141
Theodore Ts'o622f5f21997-10-24 04:18:21 +00001142 * pass1b.c (clone_file): Fix bug in error reporting in the case
1143 where cs.errcode is non-zero.
1144
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00001145Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1146
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00001147 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
1148 RESOURCE_TRACK around code which uses init_resource_track
1149 and print_resource_track. (Not all systems have timeval)
1150
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00001151 * super.c: Remove excess #includes which are not necessary.
1152
1153 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
1154
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00001155Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1156
1157 * pass*.c, super.c: Massive changes to avoid using printf and
1158 com_err routines. All diagnostic messages are now routed
1159 through the fix_problem interface.
1160
1161Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1162
1163 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
1164 entries.
1165
1166 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
1167 PR_2_DUP_DOT_DOT.
1168
1169Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1170
1171 * problem.c: Added new problem codes for some of the
1172 superblock corruption checks, and for the pass header
1173 messages. ("Pass 1: xxxxx")
1174
1175 * util.c (print_resource_track): Now takes a description
1176 argument.
1177
1178Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1179
1180 * super.c, unix.c, e2fsck.c: New files to separate out the
1181 operating-specific operations out from e2fsck.c.
1182 e2fsck.c now contains the global e2fsck context management
1183 routines, and super.c contains the "pass 0" initial
1184 validation of the superblock and global block group
1185 descriptors.
1186
1187 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
1188 (nearly) all global variables and moved them to the e2fsck
1189 context structure.
1190
1191 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
1192 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
1193 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
1194
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00001195Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1196
1197 * message.c: Add compression for the word "Illegal"
1198
1199 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
1200 PR_2_BAD_BLOCK_DEV
1201
1202Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1203
1204 * pass1.c (pass1, check_device_inode), pass2.c
1205 (process_bad_inode): Use a more stringent test for a valid
1206 device.
1207
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00001208Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1209
1210 * e2fsck.c (check_mount): Add stronger warning message about the
1211 perils of running e2fsck on a mounted filesystem.
1212
Theodore Ts'o024996c1997-06-17 05:38:35 +00001213Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1214
1215 * Release of E2fsprogs 1.11
1216
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00001217Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1218
1219 * pass1.c (mark_table_blocks): Mark the superblock and group
1220 descriptor blocks first, so that any conflicts between
1221 these and the bitmap or inode table blocks is noticed.
1222
1223 * problem.c: Fix message printed out when a block or inode bitmap
1224 conflicts with other fs data, has the correct group number
1225 in it.
1226
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00001227Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1228
1229 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
1230
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001231Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1232
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00001233 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
1234 Hawes (whawes@star.net).
1235
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001236 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
1237 bad blocks command so that all of the filesystem gets
1238 tested in the case where the blocksize 2048 or 4096.
1239
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00001240Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
1241
1242 * Release of E2fsprogs version 1.10
1243
1244Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1245
1246 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
1247 where ext2fs_get_next_inode returns the
1248 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
1249
1250Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1251
1252 * Release of E2fsprogs version 1.09
1253
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00001254Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1255
1256 * Release of E2fsprogs version 1.08
1257
Theodore Ts'o521e3681997-04-29 17:48:10 +00001258Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1259
1260 * pass1b.c (clone_file_block): If we clone a directory, we need to
1261 update the dblist entry so that we check (and correct) the
1262 right directory block.
1263
1264Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1265
1266 * pass1.c (process_block): Don't clear blocks references to
1267 filesystem metadata; let pass 1B handle this case.
1268
1269 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
1270
1271 * pass1b.c (pass1d): Deal with a block which is shared with
1272 filesystem metadata.
1273
1274 * e2fsck.h: Make block_illegal_map be a global variable
1275
1276Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1277
1278 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
1279 feature.
1280 (get_backup_sb): New function which attempts to obtain the
1281 correct backup superblock (if possible).
1282
1283Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1284
1285 * e2fsck.c (main): Check the version of the library, and warn if
1286 the library is out of date; this happens generally due to
1287 users who manually install e2fsprogs.
1288
1289 * pass1.c (pass1_get_blocks): If the passed in inode number for
1290 get_blocks isn't what we're expecting pass back
1291 EXT2_ET_CALLBACK_NOT_HANDLED.
1292
Theodore Ts'o21c84b71997-04-29 16:15:03 +00001293Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
1294
1295 * Release of E2fsprogs version 1.07
1296
1297Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1298
1299 * icount.c: New file which implements an inode count abstraction.
1300 This significantly reduces amount of memory needed to
1301 check really large filesystems.
1302
1303 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
1304 abstraction.
1305
1306Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1307
1308 * dirinfo.c (dir_info_iter): New function which allows iteration
1309 over the directories in the dir_info map.
1310
1311 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
1312 over all directories in the dir_info structure, instead of
1313 iterating all inodes looking for directories, and then
1314 looking up the directories using get_dir_info().
1315
1316Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1317
1318 * pass1.c (pass1, process_block):
1319 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
1320 manual code to manage the directory block list information.
1321
1322 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
1323 (deallocate_inode): Call the ext2 library routine
1324 ext2_inode_has_valid_blocks() instead of
1325 inode_has_valid_blocks().
1326
1327 * swapfs.c (swap_inodes): Add check so that we don't try to call
1328 swap_inode_blocks unless the inode has valid blocks.
1329 (Otherwise a long fast symlink might cause
1330 swap_inode_blocks to erroneously get called.)
1331
1332Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1333
1334 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
1335 PR_2_DOT_DOT_NULL_TERM.
1336
1337 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
1338 .. entries are null-terminated, since the 2.0 kernel
1339 requires this (for no good reason).
1340
1341Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1342
1343 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
1344 that we can recover from missing inode tables.
1345
1346 * dirinfo.c (get_dir_info): If there are no directories in the
1347 dir_info abstraction, don't core dump (because dir_info is
1348 NULL).
1349
1350 * e2fsck.c (main): Don't try using the backup superblocks if there
1351 aren't any.
1352 (check_super_block): If there are illegal inode table or
1353 bitmaps, set the filesystem as being in error.
1354
1355Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1356
1357 * pass2.c (check_dir_block): Added check to make sure that rec_len
1358 is a a multiple of 4 (so that the directory entries are
1359 4-byte aligned).
1360
1361Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1362
1363 * Makefile.in (uninstall): Uninstall all programs in the PROGS
1364 line.
1365 (PROGS): Don't build and install the extend program by
1366 default.
1367
1368
1369Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1370
1371 * pass1.c (process_inodes): Make sure the stashed_ino variable is
1372 saved and restored as well.
1373 (pass1): For fast sym links, skip the check_blocks
1374 processing step altogether.
1375
1376Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1377
1378 * problem.c, message.c: New files, to completely refurbish how
1379 filesystem problems are reported to the user. The
1380 diagnostic messages are now encoded out in an easily
1381 customizable, extensible format. The messages printed out
1382 in preen mode are all on one line, and contain the device
1383 name.
1384
1385Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1386
1387 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
1388 deleted files.
1389
1390 * pass1.c (pass1): Ignore missing inode table errors during the
1391 scan, and just skip past those inodes.
1392
1393 * pass3.c (check_root): Remove root_ino argument, and assume that
1394 the root inode must be EXT2_ROOT_INO. Move responsibility
1395 of setting the parent of the root inode in the directory
1396 inode structure to pass2().
1397
1398 * pass2.c (check_dir_block): Don't allow links to the root
1399 directory.
1400
1401 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
1402 since the inode is no longer used.
1403
1404Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1405
1406 * e2fsck.c (main): If the superblock magic number is wrong, or the
1407 block group fails a sanity check, then automatically
1408 restart trying to use the backup superblocks.
1409
1410 * pass1.c (mark_table_blocks): Make the inode tables ahead of
1411 everything else; in the case where a bitmap block overlays
1412 the inode table, the inode table should take precedence.
1413
1414 * pass2.c (maybe_clear_entry): Make the deleted/unused error
1415 message fit on one line, since the error can happen during
1416 a preen pass. (We eventually need to revamp the whole
1417 e2fsck error reporting and prompting system, but that's a
1418 job for another day.)
1419
1420Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1421
1422 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
1423 for the benefit of the inode scan functions.
1424
1425 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
1426 indicating that an inode is in a bad block, mark that
1427 inode as being used, as well as in the inode "bb" map.
1428
1429 * pass2.c (maybe_clear_entry): New function which generalizes the
1430 error cases when a directory entry needs to be cleared.
1431 (check_dir_block): If an inode is in the "bb" map, offer
1432 to clear the directory entry, since the inode is in a bad
1433 block.
1434
1435 * pass4.c (pass4): If an inode is marked as used, but is is marked
1436 in the "bb" map, don't process it as a disconnected inode.
1437
1438Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1439
1440 * Release of E2fsprogs version 1.06
1441
Theodore Ts'o5c576471997-04-29 15:29:49 +00001442Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1443
1444 * e2fsck.c (main): Print out the version number of the shared
1445 library when using the -V option.
1446
1447 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
1448 consistency's sake.
1449
1450 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
1451 out the backup superblocks when we know we have a valid
1452 filesystem.
1453
1454Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1455
1456 * util.c (preenhalt): Make it explicit on preenhalt that running
1457 e2fsck manually means without the -a or -p flag.
1458
1459Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1460
1461 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
1462 (Linux/FT actually sets the mode bits, so we have to
1463 handle it specially.)
1464
1465 * e2fsck.c (check_if_skip): Print a message if the filesystem is
1466 just dirty, so that the user knows that it's about to be
1467 checked (since this will take a while).
1468
1469Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1470
1471 * pass4.c: If a disconnected inode is zero-length, prompt to
1472 delete it instead of connecting it to lost+found.
1473
1474Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1475
1476 * Release of E2fsprogs version 1.05
1477
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00001478Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1479
1480 * pass4.c (pass4): If the user refuses to connect an unattached
1481 inode to lost+found, don't try to set i_links_count. This
1482 is bad, since if the user says yes, the inode will be
1483 marked as unused, which is not necessarily the right
1484 thing, especially since the rest of the cleanup doesn't
1485 happen here.
1486
1487 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
1488 dellocating an inode. (Not strictly necessary, but...)
1489
1490 * pass4.c (pass4): Add "bonehead" explanation to the "programming
1491 error" message.
1492
1493Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1494
1495 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
1496 byte-swap the filesystem so that it is normalized. -S
1497 will byte-swap the filesystem regardless of its current
1498 byte-order.
1499
1500 * swapfs.c: New file, which will byte-swap a filesystem.
1501
1502Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1503
1504 * pass1.c (pass1): Change handling on files with non-zero dtime
1505 and non-zero i_link_count; before we treated them as
1506 deleted file per botched ext2 0.3c kernel behavior. We
1507 now clear dtime instead.
1508
1509Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1510
1511 * e2fsck.c (main): If e2fsck sets the clean bit, even if
1512 nothing else is changed, make sure FSCK_NONDESTRUCT is
1513 set (since after all having the filesystem set to
1514 invalid is an error. :-)
1515
1516Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1517
1518 * pass1.c (process_block): Make sure that meta data doesn't get
1519 accidentally set in the dir_blocks array (which could
1520 happen in some error condtions).
1521
1522 * pass1.c (pass1):
1523 * pass2.c (process_bad_inode): Check for fragments in a
1524 OS-independent fashion.
1525
1526Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1527
1528 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
1529 cleanup for the filesystem.
1530
1531Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1532
1533 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
1534
Theodore Ts'o62c06f71997-04-29 14:34:47 +00001535Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1536
1537 * Release of E2fsprogs version 1.04
1538
1539Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1540
1541 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
1542 try "e2fsck -b 8193" before allowing e2fsck to relocate
1543 inode table blocks.
1544
1545 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
1546 depending on the option to configure. Added targets for
1547 e2fsck.static and e2fsck.shared for people who want to
1548 build a static or shared variant manually.
1549
Theodore Ts'o7f88b041997-04-26 14:48:50 +00001550Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
1551
1552 * Release of E2fsprogs version 1.03
1553
1554Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
1555
1556 * e2fsck.c (show_stats): Don't use floating point to display
1557 percentage of non-contiguous files, as different libc
1558 handle result truncation differently, and this causes the
1559 test suite to bomb out depending on which libc you are
1560 using.
1561
1562 * util.c (allocate_memory): Fix error message to omit extraneous
1563 %%s.
1564
1565Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
1566
1567 * pass4.c (pass4):
1568 * pass2.c (check_dir_block):
1569 * pass1.c (pass1): Add support for dynamic first inode revision.
1570
1571Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
1572
1573 * pass3.c (check_root): Fix spelling typo
1574
1575Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
1576
1577 * e2fsck.c (check_super_block): If the superblock fails certain
1578 internal consistency checks, exit with a fatal error after
1579 printing the "superblock is corrupt message".
1580
Theodore Ts'o74becf31997-04-26 14:37:06 +00001581Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
1582
1583 * Release of E2fsprogs version 1.02
1584
1585Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
1586
1587 * pass1.c (process_block): Check to see if a file is "fragmented".
1588 i.e., non-contiguous. Note that any file which is larger
1589 than the block group is guaranteed to be non-contiguous.
1590 We may want to use a different hueristic for deciding
1591 whether or not a file is "fragmented".
1592
1593 * e2fsck.c (show_stats): Print statistics of how many
1594 non-contiguous files are on the system.
1595
1596Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
1597
1598 * badblocks.c (read_bad_blocks_file, test_disk): Fold
1599 functionality of test_disk() (which runs badblocks) into
1600 read_bad_blocks_file(); test_disk() now calls
1601 read_bad_blocks_file() with a NULL bad_blocks_file
1602 argument.
1603
1604Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
1605
1606 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
1607 #if defined(linux). The latter won't work if we're
1608 compiling -ansi.
1609
Theodore Ts'o297f47a1997-04-26 14:25:20 +00001610Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
1611
1612 * e2fsck.c (check_mount): For Linux systems, the check to see if
1613 the root is mounted read-only has to be done for all
1614 filesystems, not just for the root filesystem, due to the
1615 way that some /etc/rc scripts are set up.
1616
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001617Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
1618
1619 * Makefile.in (install): Strip programs when they are installed.
1620 (e2fsck): Build e2fsck statically.
1621
1622Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
1623
1624 * util.c (preenhalt): Preenhalt now takes an argument, which is an
1625 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
1626 flag in the superblock in cases where preenhalt is called.
1627 All calls to preenhalt() were changed to either
1628 preenhalt(fs) or preenhalt(NULL) in a few cases where the
1629 fs pointer was not available. (Most notable, for block
1630 read/write errors.)
1631
1632Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
1633
1634 * ehandler.c:
1635 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
1636
1637Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
1638
1639 * e2fsck.c (show_stats): Show statistics about how many inodes
1640 have indirect, doubly indirect, and triply indirect
1641 blocks. Allow up to 8 digits for statistics, instead of
1642 merely 6, so things look pretty for large filesystems.
1643
1644 * pass1.c (pass1): Keep statistics about indirect, doubly
1645 indirect, and triply indirect blocks.
1646
1647 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
1648 pass 1.
1649
1650Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
1651
1652 * util.c, ehandler.c: Move #include of <sys/resource.h> after
1653 #include of "e2fsck.h", since sys/resource.h may depend on
1654 sys/time.h, which is #included in e2fsck.h.
1655
1656Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
1657
1658 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
1659 function to determine if the device is mounted.
1660
1661 * e2fsck.c (main): Add better error messages if ext2fs_open()
1662 fails.
1663
1664Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
1665
1666 * pass1.c (check_blocks): If we're clearing a directory, clear
1667 pb.is_dir so we don't do the following check of making
1668 sure the directory size matches; this is pointless, since
1669 we've already cleared the inode.
1670
1671Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1672
1673 * pass1.c (bad_primary_block): New function, called by
1674 process_bad_block, which explains the facts of life to the
1675 user when a block in the primary superblock or primary
1676 group descriptors is bad.
1677
1678 * pass2.c (check_dot): Handle the case where the first directory
1679 entry is used, but not ".".
1680
1681 * pass2.c (check_dotdot): Handle the case where the second directory
1682 entry is used, but is not "..".
1683
1684Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1685
1686 * e2fsck.c (check_super_block): Get the size of the physical
1687 device and if it is smaller than the reported size of the
1688 filesystem, report an error.
1689
1690Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
1691
1692 * e2fsck.c (check_if_skip): Print the number of allocated files and
1693 blocks on clean filesystems.
1694
1695Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
1696
1697 * e2fsck.8: Updated date and version number.
1698
1699Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
1700
1701 * pass1.c (check_blocks): Check that directory size matches *exactly*
1702 the count of allocated blocks.
1703
1704Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
1705
1706 * pass1b.c (pass1d): Free the shared[] array when we're done with
1707 it to avoid a memory leak.
1708
1709 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
1710 block_dup_map.
1711
1712 * pass2.c (process_bad_inode): When clearing the inode, make sure
1713 the pathname is freed, to prevent a memory leak.
1714
1715 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
1716 when we're finished with them.
1717 (check_block_bitmaps): Free free_array when we're finished
1718 with them.
1719
1720 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
1721 linking the executable.
1722
1723 * pass2.c (process_bad_inode): Even on OS's that don't support the
1724 fragment fields, make sure the Linux equivalent fields are
1725 set to zero. If an OS wants to reuse these fields, which
1726 is probably a bad idea (although we may get desperate in
1727 the future) this code will have to be changed.
1728
1729 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
1730 on the inode field, and then blockcnt field. This is just
1731 to keep the ordering of dir_blocks the same on all
1732 platforms when there are more than on missing directory
1733 blocks, which are indicated directories with holes, which
1734 are indicated with the block number being set to zero.
1735
1736Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1737
1738 * pass1.c (check_blocks, process_block): check_blocks() modified
1739 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
1740 the inode is a directory. process_block() now checks to
1741 see if a directory has a "hole", or missing block. If so,
1742 this fact is recorded in the directory block list so that
1743 the problem can be resolved in pass #2.
1744
1745 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
1746 allocate new blocks for directories with "holes". Called
1747 out of check_dir_block if a block in the directory block
1748 list is zero.
1749
1750 * pass3.c (get_lost_and_found): Move location of free(block) to
1751 prevent possible memory leak.
1752
1753Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1754
1755 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
1756 instead of alloca() --- alloca is not portable! Check to
1757 make sure the filename is not longer than EXT2_NAME_LEN,
1758 and offer to fix it by truncating it, since it should
1759 never happen.
1760
1761 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
1762 not portable!! In any case putenv() in some systems must
1763 take a static character array or malloc()'ed memory;
1764 passing memory allocated using alloca() to putenv() is not
1765 advisable.
1766
1767 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
1768 alloca() --- alloca() is not portable!!!
1769
1770Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
1771
1772 * pass1b.c (pass1c):
1773 * pass3.c (check_root, get_lost_and_found):
1774 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
1775 to read/write the directory block.
1776
1777Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
1778
1779 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
1780 make sure VMIN and VTIME are set correct.
1781
1782Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
1783
1784 * pass1.c (mark_block_used): Change to be an inline function.
1785 Assume that the block validity checks are already done,
1786 and use the fast variant of the bitmap functions.
1787
1788Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
1789
1790 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
1791 bounds of the bitmaps in advance, and then use the fast
1792 variant of e2fs_test_{block,inode}_bitmap.
1793
1794 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
1795 the bounds checking has already been done earlier.
1796
1797Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
1798
1799 * pass1.c (pass1): Allocate and free the block_illegal_map, which
1800 is used for shortcut processing in process_block.
1801 (mark_table_blocks): Initialize block_illegal_map with the
1802 filesystem blocks.
1803 (describe_illegal_block): New helper function that
1804 describes why a block is illegal.
1805 (process_block): Use block_illegal_map as a shortcut
1806 to determine whether a block is bad. Use
1807 describe_illegal_block to print out why the block is illegal.
1808
1809Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
1810
1811 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
1812
1813 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
1814 <mntent.h> if they don't exist. (Mostly so that "make
1815 depend" works.)
1816
1817 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
1818 it exists).
1819
1820 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
1821 exist.
1822
1823Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1824
1825 * pass2.c (process_bad_inode, check_for_zero_long,
1826 check_for_zero_char): Change long to u32, and char to u8.
1827
1828Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1829
1830 * util.c (inode_has_valid_blocks):
1831 * pass2.c (process_bad_inode):
1832 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
1833 LINUX_S_IS* instead of S_IS*.
1834
1835 * e2fsck.h: Don't #include <sys/stat.h>
1836
1837 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
1838 this program is pretty much useless if BLKFLSBUF isn't
1839 supported.)
1840
1841 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
1842 used.
1843
1844Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
1845
1846 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
1847 to allocate space for file names instead of using fixed size buffers.
1848 (process_bad_inode): Only check inode frag fields if
1849 HAVE_EXT2_FRAGS is defined (by configure).
1850 * pass1.c (pass1): Only check the inode frag fields if
1851 HAVE_EXT2_FRAGS is defined (by configure).
1852
1853 * e2fsck.c (check_mount): Only check for a mounted filesystem if
1854 HAVE_MNTENT_H is defined (by configure).
1855 (PRS): Use alloca to allocate the new path string, instead of
1856 having a fixed size buffer (which was the wrong size anyway).
1857 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
1858 is defined.
1859
1860 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
1861 defined (by configure).
1862
1863 * Makefile.in: Rewritten to conform to GNU coding standards and
1864 support separate compilation directories.
1865
1866Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
1867
1868 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
1869
Theodore Ts'of3db3561997-04-26 13:34:30 +00001870Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
1871
1872 * pass1.c (unwind_pass1): Clear the file type statistics counter
1873 when pass 1 needs to be restarted from scratch.
1874
1875 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
1876 being reallocated to blocks in the next block group,
1877 instead of the current block grup.
1878
1879 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
1880 inode.i_links_count is set.
1881
1882Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
1883
1884 * pass1.c (process_block): Add checks for if the block is
1885 trepassing on a superblock or group descriptor table.
1886
1887Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
1888
1889 * main.c (corrupt_msg): Extend the message which is printed out
1890 when the superblock is corrupt, to include the suggestion
1891 of using the -b option to specify an alternate superblock.
1892
1893Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
1894
1895 * badblocks.c (read_bad_blocks_file): If we are adding or
1896 replacing bad blocks in the bad blocks inode, sanity check
1897 the bad block inode first, and clear out any illegal blocks.
1898
1899 * pass2.c (check_name): Don't bomb out if the attempt to get the
1900 pathname of the containing directory returns an error; the
1901 directory may be too badly damaged to expect that
1902 ext2fs_get_pathname will always succeed. Use "???" if the
1903 pathname can't be obtained (it's only for a printf to the
1904 user anyway).
1905
1906 The name of the containing directory and the bad filename
1907 were incorrectly interchanged in the user message. Fixed.
1908
1909 * pass2.c (check_name, check_dir_block): Use a common static
1910 string for the unknown pathname.
1911
1912Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
1913
1914 * Fixed lots of printf formats to make sure that block and inode
1915 numbers are printed as unsigned integers.
1916
1917Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
1918
1919 * pass5.c (check_block_end): Fix calculation of how the last block
1920 in the block bitmap should be calculated.
1921
1922Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
1923
1924 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
1925 be an ext2fs_inode_bitmap, and free it properly.
1926
1927 * e2fsck.h
1928 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
1929 level to the superblock.
1930
1931Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
1932
1933 * e2fsck.c (usage): Fixed bogus usage message.
1934
1935Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
1936
1937 * pass1.c (process_bad_block): Fixed bug so that blocks in the
1938 backup superblocks and group descriptors are handled gracefully.
1939