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