blob: 7190cb8a7c7a197049d7753a688995b4bbfa3f8b [file] [log] [blame]
Theodore Ts'ocbbf0312001-06-13 00:12:04 +000012001-06-12 Theodore Tso <tytso@valinux.com>
2
3 * badblocks.c: Stop using the compatibility badblocks function,
4 and use the ext2fs_badblocks_* functions instead.
5
Theodore Ts'o5df55d72001-06-11 07:00:04 +000062001-06-11 Theodore Tso <tytso@valinux.com>
7
Theodore Ts'o3034f622001-06-11 15:17:45 +00008 * unix.c (PRS): Fix bug introduced in 1.20 which broke the -F
9 flag.
10
Theodore Ts'o5df55d72001-06-11 07:00:04 +000011 * Makefile.in: Add message.c and swapfs.c to the list of source
12 files to build the make depend.
13
14 * swapfs.c, unix.c: Only support the -s and -S options to e2fsck
15 if ENABLE_SWAPFS is defined.
16
Theodore Ts'o725c4742001-06-08 11:55:44 +0000172001-06-08 Theodore Tso <tytso@valinux.com>
18
19 * recover.c, revoke.c: Synchronize with ext3 0.7a
20
Theodore Ts'ofdbdea02001-06-02 04:26:26 +0000212001-06-02 Theodore Tso <tytso@valinux.com>
22
Theodore Ts'oa479fe62001-06-02 04:50:14 +000023 * recovery.c (scan_revoke_records): Fix bug in recovery code;
24 missing byte order conversion.
25
Theodore Ts'ofdbdea02001-06-02 04:26:26 +000026 * pass1.c (mark_inode_bad): Replace alloc_bad_map with a function
27 which sets the bit in the bad inode bitmap.
28 (e2fsck_pass1): Check for fast symlinks with an invalid
29 size, and set the bad inode map in that case.
Theodore Ts'o62b6d472001-06-02 04:37:02 +000030 (check_size): Check i_size_high for special files and
31 prompt to clear it along with i_size if non-zero.
Theodore Ts'ofdbdea02001-06-02 04:26:26 +000032
33 * pass2.c (e2fsck_process_bad_inode): Check for fast symlinks with
34 an invalid size and prompt the user if the inode should be
35 cleared.
36
37 * problem.h, problem.c (PR_2_SYMLINK_SIZE): Added new problem code.
38
Theodore Ts'o71d521c2001-06-01 19:29:36 +0000392001-06-01 Theodore Tso <tytso@valinux.com>
40
Theodore Ts'o2f686ac2001-06-02 00:38:40 +000041 * problem.c, problem.h: Change PR_0_JOURNAL_UNSUPP_INCOMPAT and
42 PR_0_JOURNAL_UNSUPP_ROCOMPAT so they aren't fatal errors,
43 but prompt to see if the user should abort. Removed the
44 PR_0_JOURNAL_RESET_COMPAT problem code.
45
46 * journal.c (e2fsck_journal_load): If there are incompatible
47 journal flags, just return an error code.
48 (e2fsck_check_ext3_journal): If e2fsck_journal_load
49 returns an error code indicating that there are
50 incompatible journal flag, check to see if we should
51 abort, and then offer to clear the journal.
52
Theodore Ts'o797f5ef2001-06-01 23:49:46 +000053 * Makefile.in: Move include/asm/types.h.in to
Theodore Ts'o36a23e12001-06-02 00:54:10 +000054 lib/ext2fs/ext2_types.h.in.
Theodore Ts'o797f5ef2001-06-01 23:49:46 +000055
562001-06-01 Theodore Tso <tytso@valinux.com>
57
Theodore Ts'o71d521c2001-06-01 19:29:36 +000058 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
59 pass1_check_directory): Add a safety check to make sure
60 ctx->stashed_inode is non-zero.
61
62 * pass1b.c (pass1b): Use e2fsck_use_inode_shortcuts() to disable
63 the inode shortcut processing, instead of manually
64 clearing only half of the function pointers that needed to
65 be NULL'ed out. This caused nasty bugs if the last inode
66 in the filesystem needed dup block processing.
67
68 * pass1b.c (clone_file_block): When cloning a directory's metadata
69 block, don't try to update the directory block list
70 database, since indirect blocks aren't stored in the
71 database and the resulting error will abort the file clone
72 operation.
73
Theodore Ts'o561cd4d2001-05-25 16:40:56 +0000742001-05-25 Theodore Tso <tytso@valinux.com>
75
Theodore Ts'obb185862001-05-25 17:35:00 +000076 * Release of E2fsprogs 1.20
77
782001-05-25 Theodore Tso <tytso@valinux.com>
79
Theodore Ts'o561cd4d2001-05-25 16:40:56 +000080 * journal.c (e2fsck_journal_reset_super): Remove extraneous line
81
Theodore Ts'oc7f23362001-05-23 22:19:47 +0000822001-05-23 Theodore Tso <tytso@valinux.com>
83
84 * journal.c (e2fsck_journal_reset_super): Fix bug; the reset
85 journal wasn't getting written out to disk since the dirty
86 bit wasn't being set on the buffer.
87 (e2fsck_journal_load): Don't print an error message if the
88 journal version number is wrong; just return a error code
89 reflecting this fact. If the block type in the journal
90 superblcok is obviously not a version number, report the
91 journal is corrupted.
92 (e2fsck_check_ext3_journal): On an unsupported journal
93 version, prompt to abort by default, but then offer a
94 chance to clear the journal as corrupt.
95
96 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_VERSION): Added new
97 problem code.
98
Theodore Ts'o424cd2b2001-05-14 04:06:56 +0000992001-05-14 Theodore Tso <tytso@valinux.com>
100
Theodore Ts'o21afac02001-05-14 12:47:41 +0000101 * pass1.c: Treat inodes with a low dtime (that were from a
102 corrupted orphan list) specially.
103
104 * problem.c, problem.h: Add new problem codes PR_1_LOW_DTIME and
105 PR_1_ORPHAN_LIST_REFUGEES, and a new latch group,
106 PR_LATCH_LOW_DTIME.
107
108 * problemP.h: Expand the size of the problem flag to be an int
109 instead of a short. Expand space in the flag word which
110 is reserved for problem latch flags from 3 bits to 8 bits.
111
Theodore Ts'o54c637d2001-05-14 11:45:38 +0000112 * e2fsck.h, scantest.c: Change location of ext2_fs.h to be
113 ext2fs/ext2_fs.h
114
Theodore Ts'o424cd2b2001-05-14 04:06:56 +0000115 * super.c (check_super_block): Be more strict on checking
116 s_r_blocks_count superblock field.
117
1182001-05-13 Theodore Tso <tytso@valinux.com>
119
120 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_ROCOMPAT,
121 PR_0_JOURNAL_UNSUPP_INCOMPAT, PR_0_JOURNAL_RESET_COMPAT):
122 New problem codes.
123
124 * journal.c (e2fsck_journal_load): Use a problem code to
125 report unsupported feature flags. There is code to
126 clear unsupported flags, but since this is dangerous,
127 it's not allowed in the problem code table.
128
1292001-05-11 Andreas Dilger <adilger@turbolinux.com>
130
131 * journal.c (e2fsck_journal_reset_super): initialize the journal
132 sequence number to a random value to avoid recovering
133 bad transactions from a corrupt journal.
134
Theodore Ts'o328a5ce2001-05-13 20:21:25 +00001352001-05-13 Theodore Tso <tytso@valinux.com>
136
137 * journal.c: Code cleanup; initialize journal_enable_debug using
138 an initializer.
139
Theodore Ts'ofc9a69c2001-05-12 13:43:46 +00001402001-05-12 Theodore Tso <tytso@valinux.com>
141
142 * unix.c (PRS): Skip validation of -C's file descriptor if it is
143 zero, since that is special case.
144
Theodore Ts'of0b8c872001-05-09 06:03:58 +00001452001-05-09 Theodore Tso <tytso@valinux.com>
146
147 * super.c (release_orphan_inodes): Add gettext quoting around
148 "Truncating" and "Clearing" for i18n.
149
Theodore Ts'ob9852cd2001-05-05 05:14:59 +00001502001-05-05 Theodore Tso <tytso@valinux.com>
151
Theodore Ts'oe39ac922001-05-05 06:47:24 +0000152 * util.c (fatal_error): Use the correct magic number when checking
153 the magic number for the io_channel data structure. Also
154 remove extraneous call to io_channel_flush() that was left
155 over from an editing session.
156
Theodore Ts'ob9852cd2001-05-05 05:14:59 +0000157 * pass2.c (check_dir_block): Ignore EXT2_ET_DIR_CORRUPTED errors
158 from ext2fs_read_dir_block().
159
Theodore Ts'o5f629b72001-05-01 20:01:08 +00001602001-05-01 Theodore Tso <tytso@valinux.com>
161
Theodore Ts'oae8160e2001-05-01 21:13:37 +0000162 * unix.c (PRS): Validate the completion information file
163 descriptor so that the completion bar won't get
164 accidentally written onto the disk.
165
Theodore Ts'o5f629b72001-05-01 20:01:08 +0000166 * e2fsck.8.in: Add explanation that you can use mke2fs -n -b
167 blocksize to printout alternate superblock locations.
168
Theodore Ts'obc57f152001-04-26 04:11:46 +00001692001-04-26 Theodore Tso <tytso@valinux.com>
170
171 * unix.c (check_if_skip): If the max_mount_count is zero, treat it
172 as having no count set.
173
Theodore Ts'oef059872001-04-17 00:40:02 +00001742001-04-16 Theodore Tso <tytso@valinux.com>
175
176 * super.c (check_super_block): Fix bad calculation of
177 inodes_per_block, and tighten min/max checks to be a bit
178 more paranoid. Thanks to Andreas Dilger for pointing out
179 this bug.
180
Theodore Ts'o1f735032001-03-29 19:00:50 +00001812001-03-29 Theodore Tso <tytso@valinux.com>
182
Theodore Ts'o15986f72001-03-29 19:22:16 +0000183 * journal.c (mark_buffer_uptodate): Add emulation of kernel
184 function mark_buffer_uptodate.
185
Theodore Ts'o1f735032001-03-29 19:00:50 +0000186 * recovery.c, revoke.c: Synchronize with 0.6b ext3 files.
187
Theodore Ts'od0515212001-02-13 04:32:53 +00001882001-02-12 Theodore Tso <tytso@valinux.com>
189
190 * journal.c (e2fsck_run_ext3_journal): Force a flush of the
191 filesystem and io_channel before replaying the journal.
192
Theodore Ts'oa5c33f22001-01-18 02:34:03 +00001932001-01-17 Theodore Ts'o <tytso@valinux.com>
194
195 * pass1.c (check_blocks): Fix large file checking code so that
196 files > 2GB are considered large files, and restrict
197 directories from being > 2GB.
198
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +00001992001-01-12 Theodore Ts'o <tytso@valinux.com>
200
Theodore Ts'oa9ca2012001-01-12 21:53:25 +0000201 * journal.c (e2fsck_journal_fix_unsupported_super): Remove unused
202 function. Add FIXME notes to e2fsck_get_journal(), from
203 Andreas Dilger.
204
205 * pass1.c (e2fsck_pass1): Cap the maximum legal size of a file by
206 the limit caused by the fact that i_blocks is in 512 byte
207 units, and that the Linux buffer cache also fundamentally
208 assumes 512 byte sectors.
209 Make sure that the journal inode is a regular file, and
210 when clearing an unused journal inode, make sure the
211 icount db is updated.
212
213 * problem.c, problem.h (PR_1_JOURNAL_BAD_MODE): Add new problem code.
214
Theodore Ts'o37b6b292001-01-12 21:16:13 +0000215 * problem.c: For PR_1_RESERVED_BAD_MODE, print a description of
216 the reserved inode. In PR_0_JOURNAL_HAS_JOURNAL, prompt
217 to clear the journal, rather than deleting it (which is
218 more accurate). (From Andreas Dilger.)
219
Theodore Ts'o6a6d3d42001-01-12 21:11:24 +0000220 * journal.c: Make sure all functions which return an error code
221 use the errcode_t return type, and not "int"
222 (e2fsck_journal_release): Add new parameter, "drop",
223 which is used when we just want to deallocate the journal
224 without trying to write out any changes.
225 (mark_buffer_clean): New function
226 (e2fsck_check_ext3_journal): If we fail loading the
227 journal, make sure we free all memory associated with it.
228 (recover_ext3_journal): If we fail to load the journal or
229 initialize the revoke data structures, make sure we free all
230 memory associated with the journal.
231
Theodore Ts'o721edd02001-01-12 21:05:57 +0000232 * message.c (special_inode_name): Add more special inode names
233 (From Andreas Dilger)
234
Theodore Ts'o58a75172001-01-12 20:59:19 +0000235 * util.c (fatal_error): Check to make sure the io_manager data
236 structure is sane before trying to flush the io_channel.
237 (From Andreas Dilger)
238
Theodore Ts'o721edd02001-01-12 21:05:57 +0000239 * mtrace.h, super.c, pass2.c: Minor whitespace cleanups, from
240 Andreas Dilger.
Theodore Ts'o4035f402001-01-12 20:25:50 +0000241
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +0000242 * journal.c (e2fsck_journal_fix_bad_inode): Set pctx->ino to the
243 bad journal number.
244
245 * problem.c (PR_0_JOURNAL_BAD_INODE): Use pctx->ino instead of
246 pctx->num when printing the bad journal inode number.
247
Theodore Ts'o86c627e2001-01-11 15:12:14 +00002482001-01-11 <tytso@snap.thunk.org>
249
Theodore Ts'o5ba23cb2001-01-11 19:15:02 +0000250 * pass1.c (process_block): Remove dead code which was never
251 getting executed.
252
253 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
254 ext2fs_sync_device() instead of using BLKFLSBUF.
255
256 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
257
Theodore Ts'o86c627e2001-01-11 15:12:14 +0000258 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
259 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
260 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
261 ino_t to ext2_ino_t.
262
Theodore Ts'o95a5bc92001-01-11 04:58:21 +00002632001-01-09 <tytso@snap.thunk.org>
264
265 * problem.c: Fix another broken @F vs @f problem.
266
Theodore Ts'o53ef44c2001-01-06 05:55:58 +00002672001-01-06 <tytso@snap.thunk.org>
268
269 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
270 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
271
272 * jfs_user.h: Use more sophisticated inline handling to allow
273 building with --enable-gcc-wall
274
Theodore Ts'od3f35b62001-01-03 13:00:43 +00002752001-01-03 <tytso@snap.thunk.org>
276
Theodore Ts'of18996c2001-01-03 16:57:24 +0000277 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
278 own block; if the journal inode is not in use, and it
279 contains data, offer to clear it.
280
281 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
282 problem code.
283
284 * problem.c: Modified problem table to use a new abbreviations.
285
Theodore Ts'od74edf42001-01-03 19:38:04 +0000286 * message.c: Add @j abbreviation for journal, and @v abbreviation
Theodore Ts'oe9044062001-01-03 15:39:37 +0000287 for device.
Theodore Ts'o1ce64532001-01-03 15:34:20 +0000288
Theodore Ts'occ7067b2001-01-03 13:24:06 +0000289 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
290
Theodore Ts'od3f35b62001-01-03 13:00:43 +0000291 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
292 the journal stored on a reserved inode. Also force a fsck
293 if the journal appears to exist while !NEEDS_RECOVERY, and
294 we forcibly reset the journal.
295
Theodore Ts'of5ae75e2001-01-01 14:52:52 +00002962001-01-01 <tytso@snap.thunk.org>
297
Theodore Ts'o5dd8f962001-01-01 15:51:50 +0000298 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
299 ext2fs_sb with struct ext2_super_block.
300
Theodore Ts'of5ae75e2001-01-01 14:52:52 +0000301 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
302
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +00003032000-12-31 <tytso@snap.thunk.org>
304
305 * jfs_compat.h: Remove uneeded header file.
306
Theodore Ts'ob2f93192000-12-30 20:33:42 +00003072000-12-30 <tytso@snap.thunk.org>
308
Theodore Ts'oc59a7042000-12-31 01:52:03 +0000309 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
310 conflicts with the system header file.
311
Theodore Ts'ob2f93192000-12-30 20:33:42 +0000312 * problem.h: Fixed numbering of pass1 error messages; an extra 0
313 had slipped into some of the numbers. (Pointed out by
314 Andreas Dilger)
315
316 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
317 unnecessary automatic variable. Add explanatory comment
318 about the kernel emulation routines. (Suggested by
319 Andreas Dilger)
320
Theodore Ts'o060b5fb2000-12-13 18:07:23 +00003212000-12-13 Theodore Ts'o <tytso@valinux.com>
322
Theodore Ts'o9b565752000-12-13 18:50:22 +0000323 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
324 journal fields are consistent if any of the superblock
325 fields are set. (Backs out erroneous change made by sct,
326 pointed out by Andreas.)
327
328 * unix.c (main): Clarify coments (no code changes)
329
330 * super.c (release_orphan_inodes): Fix spelling typo in error message.
331
Theodore Ts'o8188c9e2000-12-13 18:39:14 +0000332 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
333 level if we need to set large files flag. Patch from
334 Andreas Dilger.
335
Theodore Ts'o7b59f1e2000-12-13 18:11:44 +0000336 * super.c (check_super_block): If we have any of the compatibility
337 flags set, we need to have a revision 1 filesystem. Most
338 kernels will not check the flags on a rev 0 filesystem
339 and we may have corruption issues because of the
340 incompatible changes to the filesystem. Patch from Andreas
341 Dilger.
342
Theodore Ts'o060b5fb2000-12-13 18:07:23 +0000343 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
344 new problem codes.
345
Theodore Ts'o0e8a9562000-12-09 06:41:25 +00003462000-12-09 <tytso@snap.thunk.org>
347
Theodore Ts'obf2d4992000-12-09 14:46:20 +0000348 * flushb.c: Fix flushb so that it does something other than waste
349 disk space when built on systems with modern header files
350 and add a non-subtle Copyright Licensing restriction so
351 Yann will remove it from the Debian Distribution. (Now
352 violates the Debian Free Software Guidelines, on purpose.)
353
Theodore Ts'of43650c2000-12-09 06:47:56 +0000354 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
355 at the top level, set the JFS debuging level to 2.
356
Theodore Ts'o0e8a9562000-12-09 06:41:25 +0000357 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
358 has been moved to the include/linux directory.
359
360 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
361 support the V2 superblock and revoke processing. The
362 journal.c and revoke.c files are copies from the ext3
363 kernel source.
364
365 * Makefile.in: Added revoke.c to the list of source/object files.
366
Theodore Ts'o133a56d2000-11-17 05:40:49 +00003672000-11-16 Theodore Ts'o <tytso@valinux.com>
368
369 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
370 reporting problems rather than using com_err directly.
371
372 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
373
374 * message.c (expand_percent_expression): Add safety check. If
375 ctx->str is NULL, print "NULL" instead of dereferencing
376 the null pointer.
377
378 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
379 to ext2fs_block_iterate2, to support 64-bit filesizes and
380 to speed things up slightly by avoiding the use of the
381 ext2fs_block_iterate's compatibility shim layer.
382
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +00003832000-10-30 <tytso@snap.thunk.org>
384
385 * util.c (get_backup_sb): Calculate backup superblock correctly
386 when the blocksize is > 1k.
387
Theodore Ts'o241f2242000-10-26 20:42:07 +00003882000-10-26 <tytso@snap.thunk.org>
389
390 * jfs.h, jfs_compat.h, journal.c: Updated to include the
391 definition of the new journal superblock format; still
392 only supports V1 superblocks for now. (From sct)
393
Theodore Ts'ob09a4b02000-10-24 21:16:09 +00003942000-10-24 <tytso@snap.thunk.org>
395
Theodore Ts'o83949022000-10-25 01:38:50 +0000396 * super.c (release_inode_block, release_inode_blocks,
397 release_orphan_inodes): Add code to deal with truncating
398 inodes which are still in use (but which are on the orphan
399 list because they need truncation).
400
401 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
402 PR_0_ORPHAN_CLEAR_INODE, and remove
403 PR_0_ORPHAN_INODE_INUSE.
404
405 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
406 a message when the journal is being recovered.
407
Theodore Ts'ob09a4b02000-10-24 21:16:09 +0000408 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
409 journal inode, if it is in use.
410
Theodore Ts'oadfca562000-09-12 21:24:36 +00004112000-09-12 <tytso@valinux.com>
412
413 * extend.c:
414 * flushb.c: Add include of nls-enable.h which is necessary so that
415 they can compile correctly.
416
Theodore Ts'occ96b2b2000-08-22 21:30:11 +00004172000-08-22 <tytso@valinux.com>
418
Theodore Ts'o2575fb02000-08-22 21:50:04 +0000419 * unix.c (main): If we're doing a read-only check, skip the
420 journal playback, but don't abort the e2fsck run.
421
Theodore Ts'o99a2cc92000-08-22 21:41:52 +0000422 * super.c (release_orphan_inodes): Fix typo; should do bounds
423 checking on next_ino instead of ino.
424
425 * jfs_compat.h (J_ASSERT):
426 * journal.c (e2fsck_run_ext3_journal):
427 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
428
Theodore Ts'o243dc312000-08-22 21:37:47 +0000429 * unix.c: Use fatal_error() instead of exit() whenever possible.
430 Also fix the fsck exit codes so that we use FSCK_USAGE
431 when it is appropriate. Rename global_signal_ctx to
432 e2fsck_global_ctx and let it be exported globally.
433
Theodore Ts'occ96b2b2000-08-22 21:30:11 +0000434 * util.c (fatal_error): Try to flush the I/O manager before
435 forcing an exit.
436
Theodore Ts'oecf1b772000-08-20 22:06:31 +00004372000-08-20 <tytso@valinux.com>
438
439 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
440 e2fsck_check_ext3_journal to smash the journal because
441 journal->j_transaction_sequence wasn't getting
442 initialized.
443
444 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
445 call to e2fsck_clear_recover from recover_ext3_journal to
446 after the filesystem has been closed and reopened.
447 Otherwise, the superblock in the filesystem handle will
448 probably be stale, and will overwrite the newer version of
449 the superblock written by the log recovery.
450
451 * message.c (expand_inode_expression): Add support for %Iu and %Ig
452
453 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
454
455 * super.c (release_orphan_inodes, release_inode_block,
456 release_inode_blocks): Update the block group descriptor
457 counts when freeing the orphan inode. Use
458 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
459
460 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
461 attempted to reopen the filesystem using the device name
462 instead of the filesystem name.
463
Theodore Ts'o80bfaa32000-08-18 15:08:37 +00004642000-08-18 <tytso@valinux.com>
465
466 * Makefile.in: Update the make dependencies
467
468 * problem.c, problem.h: Add the problem codes:
469 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
470 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
471 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
472 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
473
474 * super.c (release_inode_blocks, release_orphan_inodes,
475 check_super_block): Add support for clearing orphaned
476 inodes from the unmounted filesystem.
477
478 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
479 check; this is now handled in check_super_block ---
480 non-journaled filesystems can use the orphan list in the
481 future. Also, move the the re-opening of the filesystem
482 to e2fsck_run_ext3_journal().
483
Theodore Ts'o3b5386d2000-08-14 14:25:19 +00004842000-07-12 Andreas Dilger <adilger@turbolinux.com>
485
486 * journal.c: implement loading of ext3 journal for recovery code
487
488 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
489 Add journal problems.
490
491 * recovery.c (journal_recover): user-space ext3 journal recovery code
492
493 * unix.c (main) : check journal and do recovery in separate steps
494
Theodore Ts'ob8d164c2000-08-08 03:17:04 +00004952000-08-07 <tytso@snap.thunk.org>
496
497 * unix.c (calc_percent): Make sure that we don't take a floating
498 exception if the max value is zero. (should normally
499 never happen, but...)
500
Theodore Ts'of9e67062000-07-13 23:25:54 +00005012000-07-13 <tytso@valinux.com>
502
503 * Release of E2fsprogs 1.19
504
Theodore Ts'o17390c02000-07-07 04:13:21 +00005052000-07-06 Theodore Ts'o <tytso@valinux.com>
506
507 * unix.c (check_if_skip): Modify algorithm for checking
508 s_max_mnt_count to match with the kernel. (If
509 s_max_mnt_count is negative, ignore the mnt_count check.)
510
511 * unix.c (e2fsck_update_progress): Adjust the width of the
512 progress bar dynamically, based on the filesystem name
513 that we need to display.
514
515 * unix.c (main): If the ext3 needs_recovery flag is set, call
516 e2fsck_run_ext3_journal() and then restart the e2fsck run.
517
518 * journal.c (e2fsck_run_ext3_journal): New file which contains
519 logic to recover the ext3 journal. This version relies on
520 the kernel being able to mount the filesystem in order to
521 run the journal.
522
Theodore Ts'o92269042000-07-05 18:25:59 +00005232000-07-05 Theodore Ts'o <tytso@valinux.com>
524
525 * unix.c (e2fsck_update_progress): Only save and check the last
526 percentage after multiplying it by 10, nor 1000, since we
527 only need to save values to a tenth of a percent (and the
528 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +0000529 Also, re-arrange the logic so that we do the time
530 check only after doing the percentage check, and we
531 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +0000532
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +00005332000-07-04 Theodore Ts'o <tytso@valinux.com>
534
535 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
536 field is set; if so, clear it, so that ext3 mounting code
537 won't get confused by the fact that we've cleared out the
538 orphaned inodes.
539
Theodore Ts'obbd47d72000-06-10 19:21:33 +00005402000-06-10 Theodore Ts'o <tytso@valinux.com>
541
542 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
543 checking for a "should never happen case".
544
545 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
546 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
547
Theodore Ts'od647a1e2000-05-27 14:40:09 +00005482000-05-27 Theodore Ts'o <tytso@valinux.com>
549
550 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
551 (cw@foof.org) which checks to see if special devices have
552 a non-zero size, and deals with it.
553
554 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
555
Theodore Ts'o1d279212000-05-19 02:38:14 +00005562000-05-18 Theodore Ts'o <tytso@valinux.com>
557
558 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
559 well.
560
Theodore Ts'o4ea0a112000-05-08 13:33:17 +00005612000-05-08 Theodore Ts'o <tytso@valinux.com>
562
563 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
564 code.
565
566 * super.c (check_super_block): If the OS type in the superblock is
567 the Hurd, check to see if the filetype feature is set, and
568 offer to clear it if so. This needs to be done since the
569 Hurd doesn't properly support the filetype feature.
570 (And since the hurd allows the transmogrification of files
571 to special files and vice versa --- for no good reason
572 that I can understand --- it can't support the filetype
573 feature for the forseeable future, either.)
574
Theodore Ts'o373b8332000-04-03 16:22:35 +00005752000-04-03 Theodore Ts'o <tytso@valinux.com>
576
577 * unix.c: For platforms that don't define optarg.h, manually
578 define optarg and optind.
579
Theodore Ts'o01fbc702000-04-03 13:57:21 +00005802000-03-20 Theodore Ts'o <tytso@valinux.com>
581
582 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
583 Check for the append-only as well as the immutable flag.
584
585 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
586 append-only flag. Fix comment for compression flag.
587
Theodore Ts'o06012322000-02-12 20:12:43 +00005882000-02-12 <tytso@snap.thunk.org>
589
590 * unix.c (e2fsck_update_progress): Limit the number of updates to
591 the progress bars to 8 times a second. This allows a 9600
592 baud console link to keep up.
593
Theodore Ts'o19178752000-02-11 15:55:07 +00005942000-02-11 <tytso@snap.thunk.org>
595
596 * unix.c (main): If compression is enabled on the filesystem,
597 print a warning message (for now).
598
599 * message.c: Add new compression shortcut: @c == compress
600
601 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
602
603 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
604 set, check to see if the filesystem supports compression.
605 If it does pass this information down to process_block()
606 so it can treat the compressed block flag words
607 correctly. If not, offer to clear the flag, since it
608 shouldn't be set.
609 (process_block): If an inode has the compressed inode flag
610 set, allow EXT2FS_COMPRESSED_BLKADDR.
611
612 * pass1b.c (process_pass1b_block, delete_file_block,
613 clone_file_block):
614 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
615 see if the block can be skipped.
616
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00006172000-02-08 <tytso@snap.thunk.org>
618
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +0000619 * util.c: Make resource tracking message more concise.
620
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +0000621 * e2fsck.h:
622 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
623 ctx->block_illegal_map, since it's not needed by pass1,
624 and pass1b has been modified to calculate it manually if
625 needed. This reduces the memory footprint needed by e2fsck.
626
627 * pass1b.c (check_if_fs_block): New static function which returns
628 whether or not a block overlaps with filesystem metadata.
629 This replaces consulting the block_illegal_map bitmap.
630
Theodore Ts'o28ffafb2000-02-08 19:14:02 +0000631 * Makefile.in: Call sync after finishing building all in this
632 directory.
633
634 * unix.c (PRS): sync the filesystem before trying to use
635 BLKFLSBUF, to minimize the chance of causing dirty blocks
636 to get dropped.
637
638 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
639 a Linux/i386 system.
640
641 * pass3.c (check_directory): Only do the loop detection algorithm
642 if we've searched over 2048 parent directories and haven't
643 found the end yet. This means that in the common case, we
644 don't allocate or clear the inode_loop_detection bitmap,
645 which for large systems, merely clearing the bitmap for
646 each directory was turning out to be quite expensive.
647 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
648 identifying this problem.
649
Theodore Ts'o0c4a0722000-02-07 03:11:03 +00006502000-02-06 Theodore Ts'o <tytso@valinux.com>
651
652 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
653 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
654 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
655 unix.c, util.c: Add Internationalization support as
656 suggested by Marco d'Itri <md@linux.it>.
657
Theodore Ts'o80e808f2000-02-02 16:19:59 +00006582000-02-02 Theodore Ts'o <tytso@valinux.com>
659
660 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
661 linux/fs.h
662
Theodore Ts'o894edb22000-01-18 21:27:12 +00006632000-01-18 Theodore Ts'o <tytso@valinux.com>
664
665 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
666 we need a separate DEPLIBUUID that can be used in
667 Makefile's dependency rules.
668
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +00006691999-11-23 <tytso@valinux.com>
670
671 * e2fsck.8.in: Update language about where to find a backup
672 superblock.
673
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00006741999-11-19 <tytso@valinux.com>
675
Theodore Ts'o86a63e91999-11-23 13:52:48 +0000676 * pass1.c (process_inodes): Add shortcut handling; if
677 process_inodes_count is zero, return right away, to avoid
678 calling qsort with a non-positive count.
679
Theodore Ts'oec8d2c31999-11-19 18:52:36 +0000680 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
681 to print Delete as ^?
682
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +0000683 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
684 the source directory.
685
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00006861999-11-10 <tytso@valinux.com>
687
Theodore Ts'ocd086361999-11-10 16:00:39 +0000688 * Release of E2fsprogs 1.18
689
6901999-11-10 <tytso@valinux.com>
691
Theodore Ts'oa846d2f1999-11-10 15:50:24 +0000692 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
693 means the answer is assumed to be no in preen mode. This
694 is now used in the PR_1_SET_IMMUTABLE code, so that in
695 preen mode we ignore these inodes and just print a warning
696 message.
697
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +00006981999-11-09 <tytso@valinux.com>
699
700 * pass1.c (e2fsck_pass1): If the filesystem does not support
701 imagic inodes, if an inode has the imagic flag set, offer
702 to clear the imagic flag. If a valid device/fifo/socket
703 has the immutable flag set, call the new helper function
704 check_immutable() to offerto clear the immutable flag.
705
706 * pass2.c (check_filetype): Use the new ext2_file_type() helper
707 function instead of calculating the file_type information
708 manually.
709
710 * pass3.c (e2fsck_reconnect_file): When adding a link to
711 lost+found, calculate the filetype information so that
712 ext2fs_link() can use the information if applicable.
713 (get_lost_and_found): Create the /lost+found directory
714 with the correct filetype information if applicable.
715
716 * util.c (ext2_file_type), e2fsck.h: New function which returns
717 the directory entry file type information given the
718 inode's mode bits.
719
720 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
721 and PR_1_SET_IMMUTABLE.
722
Theodore Ts'o7142db01999-11-08 18:46:54 +00007231999-11-07 <tytso@valinux.com>
724
725 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
726 to prevent it from getting freed twice.
727
7281999-11-06 <tytso@valinux.com>
729
730 * unix.c (main): Close the filesystem before freeing the context,
731 so that in the event of a free()-related segmentation
732 violation, the filesystem is properly closed and written
733 out.
734
7351999-10-27 <tytso@valinux.com>
736
737 * e2fsck.c (e2fsck_reset_context): When freeing
738 ctx->inode_reg_map, we weren't zero'ing
739 ctx->inode_reg_map, which could cause a segfault later on
740 in the e2fsck run.
741
7421999-10-26 <tytso@valinux.com>
743
744 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
745 matches the standard convention).
746
Theodore Ts'of68aa411999-10-26 14:20:22 +00007471999-10-26 <tytso@valinux.com>
748
Theodore Ts'o28e11941999-10-26 18:17:20 +0000749 * Release of E2fsprogs 1.17
750
7511999-10-26 <tytso@valinux.com>
752
Theodore Ts'of68aa411999-10-26 14:20:22 +0000753 * message.c (safe_print): Make safe_print take an char instead of
754 an unsigned char to fix gcc warnings.
755
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00007561999-10-25 <tytso@valinux.com>
757
Theodore Ts'oe6597041999-10-26 02:30:16 +0000758 * util.c: For NT portability, don't redefine getchar(), since
759 stdio defines that. Instead we introduce a new
760 abstract macro read_a_char() which is #defined to the
761 right function as necessary.
762
Theodore Ts'oc40db6d1999-10-25 21:03:34 +0000763 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
764
765 * pass2.c (check_dir_block): Require that the length of the
766 directory entry be at least 12 bytes. Check to see if the
767 filename is zero-length, and flag that as an error.
768
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00007691999-10-22 <tytso@valinux.com>
770
Theodore Ts'o614fdfd1999-10-23 03:19:51 +0000771 * Release of E2fsprogs 1.16
772
7731999-10-22 <tytso@valinux.com>
774
Theodore Ts'o7847c1d1999-10-22 15:11:42 +0000775 * pass2.c (check_filetype): If the filetype filesystem feature is
776 not set, and a directory entry has a dirent feature, offer
777 to clear it (since 2.0 kernels will do complain will
778 interpret it as a very large name length field).
779
780 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
781
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00007821999-10-21 <tytso@valinux.com>
783
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +0000784 * e2fsck.8.in: Update man page to use a more standard format (bold
785 option flags and italicized variables), as suggested by
786 Andreas Dilger (adilger@enel.ucalgary.ca)
787
Theodore Ts'oaa4115a1999-10-21 19:33:18 +0000788 * pass4.c (e2fsck_pass4): If an inode is set in the
789 inode_imagic_map bitmap, don't check to see if it is
790 disconnected from the inode tree (because it almost
791 certainly will be). Free inode_imagic_map at the end of
792 pass 4.
793
794 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
795 feature is set, check the directory entry's filetype
796 information field, and fix/set it if necessary.
797 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
798 of pass 2.
799
800 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
801 information for inode_reg_map and inode_imagic_map, which
802 indicates which inodes are regular files and AFS inodes,
803 respectively.
804 Since only the master superblock is written during a
805 restart, force that superblock to be used after a restart;
806 otherwise changes to the block group descriptors end up
807 getting ignored.
808
809 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
810 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
811 which supresses the problem message if e2fsck is run with
812 the -n option.
813
814 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
815 new problem codes.
816
817 * message.c (expand_dirent_expression): Add support for %dt which
818 prints the dirent type information.
819
820 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
821 and inode_imagic_map).
822
823 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
824 to the context structure.
825
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +00008261999-09-24 <tytso@valinux.com>
827
828 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
829 e2fsprogs easier to port to non-Unix platforms.
830
8311999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +0000832
833 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
834 internal and external inode counts in sync when we
835 decremented an inode whose link count was already zero.
836 Now we skip incrementing or decrementing both link counts
837 if we would cause an overflow condition.
838 (expand_dir, expand_dir_proc): Change where we update the
839 inode block count and size files so that the block count
840 field is updated correctly when we create an indirect block.
841
Theodore Ts'o78cf0541999-10-20 18:29:18 +00008421999-08-05 <tytso@valinux.com>
843
844 * super.c (check_super_block): Check to see whether the
845 inodes_per_group value in the superblock is insanely too
846 high.
847
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00008481999-08-02 <tytso@valinux.com>
849
850 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
851 the block also shares data with the fs metadata when
852 the count drops to 1, since the block should still be
853 cloned, as fs metadata isn't included in the count.
854
8551999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +0000856
857 * Release of E2fsprogs 1.15
858
Theodore Ts'ob55199e1999-07-19 15:37:46 +00008591999-07-19 <tytso@valinux.com>
860
861 * unix.c (usage): Add minimalist emergency help to the usage
862 message.
863
Theodore Ts'o5596def1999-07-19 15:27:37 +00008641999-07-18 <tytso@valinux.com>
865
866 * unix.c: Add support for calculating a progress bar if the -C0
867 option is given. The function e2fsck_clear_progbar()
868 clears the progress bar and must be called before any
869 message is issued. SIGUSR1 will enable the progress bar,
870 and SIGUSR2 will disable the progress bar. This is used
871 by fsck to handle parallel filesystem checks. Also, set
872 the device_name from the filesystem label if it is
873 available.
874
875 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
876 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
877 structure which contains the last tenth of a percent
878 printed for the user.
879
880 * message.c (print_e2fsck_message): Add call to
881 e2fsck_clear_progbar().
882
883 * pass1.c (e2fsck_pass1):
884 * pass2.c (e2fsck_pass2):
885 * pass3.c (e2fsck_pass3):
886 * pass4.c (e2fsck_pass4):
887 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
888 printing the resource tracking information.
889
890 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
891 an error in the bitmaps, suppress printing the progress
892 bar using the suppression flag for the remainder of the
893 check, in order to clean up the display.
894
Theodore Ts'o74033351999-07-01 03:00:47 +00008951999-06-30 <tytso@valinux.com>
896
897 * unix.c (check_mount): Clean up the abort message displayed when
898 the filesystem is mounted and either stdout or stdin isn't
899 a tty.
900
9011999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +0000902
903 * e2fsck.h:
904 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
905 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
906 pass1_* be private static functions, and create new
907 function e2fsck_use_inode_shortcuts which sets and clears
908 the inode shortcut functions in the fs structure.
909
910 * e2fsck.h:
911 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
912 exported function.
913
914 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
915 if a disconnected inode has any problems before
916 connecting it to /lost+found. Bug and suggested fix by
917 Pavel Machek <pavel@bug.ucw.cz>
918
9191999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +0000920
921 * unix.c (main): Add missing space in the disk write-protected
922 message.
923
Theodore Ts'od4b0ce01999-06-18 01:09:29 +00009241999-05-22 <tytso@rsts-11.mit.edu>
925
926 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
927 code.
928
929 * super.c (check_super_block): Add check to make sure the total
930 number of inodes is sane, since this can be calculated
931 from the number of groups times the number of inodes per
932 group. Offer to correct it if it is incorrect.
933
Theodore Ts'oe79d1b21999-06-18 01:06:59 +00009341999-03-19 <tytso@rsts-11.mit.edu>
935
936 * pass5.c (check_block_end): Fix fencepost condition where when
937 clearing the block padding we were missing the last position
938 in the bitmap.
939
Theodore Ts'o75d83be1999-05-18 03:16:36 +00009401999-05-17 <tytso@rsts-11.mit.edu>
941
942 * unix.c (reserve_stdio_fds): Add safety check in case
943 reserve_stdio_fds couldn't open /dev/null.
944
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00009451999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
946
947 * util.c (print_resource_track): Use mallinfo if present to get
948 more accurate malloc statistics.
949
950 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +0000951 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +0000952
953 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
954
9551999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
956
957 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
958 that the block group number is printed. Add new prompt,
959 PROMPT_UNLINK.
960
9611999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
962
963 * Release of E2fsprogs 1.14
964
Theodore Ts'o9e51eca1999-01-09 16:32:31 +00009651999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
966
967 * message.c (safe_print): New function which prints strings,
968 converting non-printable characters using the '^' and
969 M-notation. This function is now used to print directory
970 name entries and pathnames.
971
Theodore Ts'o73f17cf1999-01-04 07:35:45 +0000972Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
973
974 * unix.c (main): Reset the context before calling ext2fs_close(),
975 to avoid referencing already freed memory.
976
Theodore Ts'o556ad131998-12-19 08:10:58 +00009771998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
978
979 * Release of E2fsprogs 1.13
980
Theodore Ts'o5a679c81998-12-03 16:40:38 +00009811998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
982
983 * Makefile.in: Updated dependencies.
984
9851998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
986
987 * pass3.c (get_lost_and_found): If the filesystem is not opened
988 read-only, then force /lost+found to be created if it is
989 not present.
990
991 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
992 operation.
993
Theodore Ts'o1dde43f1998-11-14 04:18:28 +00009941998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
995
996 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
997 since e2fsck_free_context may reference data in ctx->fs.
998
999 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
1000 before checking ctx->fs->dblist.
1001
10021998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1003
1004 * pass1.c (e2fsck_pass1): Use the device check subroutine on
1005 FIFO's and Socket's, so that we catch bogus immutable inodes.
1006
1007 * pass2.c (process_bad_inode): Process bad socket and fifo's.
1008
1009 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
1010 PR_2_BAD_SOCKET.
1011
Theodore Ts'o7f813ba1998-09-03 01:26:03 +000010121998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
1013
1014 * problem.c: Add PR_3_NO_DIRINFO error code.
1015
1016 * super.c (check_super_value): Rename min and max to min_val and
1017 max_val to avoid possible cpp macro conflicts.
1018
1019 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
1020 possible cpp macro conflicts.
1021
1022 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
1023 cpp macro conflicts.
1024 (check_directory): Fix logic to avoid possible core dump
1025 in the case of ext2fs_get_dir_info returning NULL. (By
1026 the time we get here, it should never happen, but...).
1027 Also simply/streamline the control flow of the function.
1028
Theodore Ts'o24fc5031998-08-26 15:23:31 +000010291998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
1030
1031 * unix.c (check_if_skip): Move the "not cleanly mounted" check
1032 ahead of the maximal mount and too long since checked tests.
1033 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
1034 open, so that we don't open the filesystem using the same
1035 file descriptor as stdout or stderr.
1036
Theodore Ts'of75c28d1998-08-01 04:18:06 +000010371998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
1038
1039 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
1040 get to 100%.
1041
1042 * pass3.c (e2fsck_pass3): Change progress accounting to be
1043 consistent with the other e2fsck passes.
1044
1045 * e2fsck.c (e2fsck_run): At the end of each pass, call the
1046 progress function with the pass number set to zero.
1047
1048 * unix.c (e2fsck_update_progress): If the pass number is zero,
1049 ignore the call, since that indicates that we just want to
1050 deallocate any progress structures.
1051
Theodore Ts'o8144d671998-07-09 05:33:18 +000010521998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1053
Theodore Ts'o4a5fa191998-07-09 05:42:45 +00001054 * Release of E2fsprogs 1.12
1055
10561998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1057
Theodore Ts'o8144d671998-07-09 05:33:18 +00001058 * unix.c (main): Fix typo in checking the incompat feature set; it
1059 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
1060
Theodore Ts'o1fad9041998-07-07 05:44:43 +000010611998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
1062
1063 * badblocks.c (test_disk): Don't clear the existing bad blocks
1064 list when using e2fsck -c, since it may cause blocks with
1065 marginal errors to be dropped from the bad blocks list.
1066
Theodore Ts'o874b4d21998-07-06 14:33:12 +00001067Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
1068
1069 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
1070 compatibility with older kernels.
1071
Theodore Ts'o818180c1998-06-27 05:11:14 +000010721998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
1073
1074 * unix.c (e2fsck_update_progress): Remove unused variables.
1075
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +000010761998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
1077
1078 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
1079 collision with LFS API.
1080
1081 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
1082 properly initialized.
1083 (e2fsck_pass1): Don't allow the the boot loader inode to
1084 be a directory (clear the inode mode field if so).
1085
Theodore Ts'oefac9a11998-05-07 05:02:00 +000010861998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
1087
1088 * unix.c (PRS): Added new option -C, which causes e2fsck to print
1089 progress updates so that callers can keep track of the
1090 completion progress of e2fsck. Designed for use by
1091 progress, except for -C 0, which prints a spinning report
1092 which may be useful for some users.
1093
1094 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
1095 scheme (useful for larger filesystems).
1096
1097 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
1098 progress reporting functions.
1099
Theodore Ts'o4c77fe51998-04-30 17:35:59 +000011001998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1101
1102 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
1103 appropriate return type for comparison functions for qsort.
1104
1105 * e2fsck.h: Add #ifdef protection for unistd.h
1106
1107 * super.c: Remove header files already included by e2fsck.h
1108
Theodore Ts'o76f875d1998-04-27 01:41:13 +000011091998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
1110
1111 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
1112 size of the memory to be resized to ext2fs_resize_mem().
1113
Theodore Ts'o7e44f241998-04-01 03:16:29 +000011141998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
1115
1116 * Makefile.in: Change to use new installation directory variables
1117 convention. Fix uninstall rules to take $(DESTDIR) into
1118 account. Remove cat8dir from the installdirs target,
1119 since modern man package don't necessarily put the cat
1120 directory in /usr/man/cat?.
1121
Theodore Ts'o17dba281998-03-30 01:16:26 +000011221998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
1123
1124 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
1125 extern in e2fsck.h to prevent -Wall warnings.
1126
1127 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
1128
11291998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1130
1131 * super.c (check_super_block): Fix broken superblock sanity check
1132 when calculating blocks_per_group if s_log_frag_size !=
1133 s_log_block_size. Since we don't support fragments, this
1134 isn't a bug deal, but it's good to get it fixed.
1135
Theodore Ts'o246501c1998-03-24 16:22:38 +000011361998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
1137
1138 * unix.c: Fix bug in check of feature set, to make sure we can
1139 really fix this filesystem.
1140
1141 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
1142 num field be a 64 bit type. Add the problem code
1143 PR_1_FEATURE_LARGE_FILES
1144
1145 * problem.c: Add table entry for the problem code
1146 PR_1_FEATURE_LARGE_FILES.
1147
1148 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
1149 a problem for directory inodes. (Since it is also
1150 i_size_high now.) If there are no large_files, then
1151 clear the LARGE_FLAG feature flag. If there are
1152 large_files, but the LARGE_FLAG feature flag is not set,
1153 complain and offer to fix it.
1154 (check_blocks): Add support to deal with non-directory
1155 inodes that have i_size_high set (i.e., large_files).
1156 Don't give an error if a directory has preallocated
1157 blocks, to support the DIR_PREALLOC feature.
1158 (process_block, process_bad_block): The blockcnt variable
1159 is a type of blkcnt_t, for conversion to the new
1160 block_iterate2.
1161
1162 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
1163 a problem for directory inodes. (Since it is also
1164 i_size_high now.)
1165
1166 * message.c (expand_inode_expression): Print a 64-bits of the
1167 inode size for non-directory inodes. (Directory inodes
1168 can only use a 32-bit directory acl size, since
1169 i_size_high is shared with i_dir_acl.) Add sanity check
1170 so that trying to print out the directory acl on a
1171 non-directory inode will print zero.
1172 (expand_percent_expression): %B and %N, which print
1173 pctx->blkcount and pctx->num, can now be 64 bit
1174 variables. Print them using the "%lld" format if
1175 EXT2_NO_64_TYPE is not defined.
1176
1177 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
1178
1179 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
1180 field.
1181
Theodore Ts'ob6f79831998-03-09 13:10:37 +00001182Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1183
1184 * pass3.c (fix_dotdot_proc):
1185 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
1186 * message.c (expand_dirent_expression): Mask off the high eight
1187 bits of the directory entry's name_len field, so that it
1188 can be used for other purposes.
1189
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +00001190Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1191
1192 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
1193 include EXT2_FLAG_RESTART anymore, we need to adjust this
1194 routine so that it *does* return in the case of it seeing
1195 EXT2_FLAG_RESTART.
1196
1197 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
1198 done callback function, which may set context abort
1199 flags. So we need to test the context abort flags after
1200 we call ext2_get_next_inode().
1201 (process_inodes): If we abort due out of process_inodes,
1202 do a clean exit by breaking out of the for loop instead of
1203 just returning.
1204
1205 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
1206 considered a SIGNAL mask (i.e., requiring an immediate
1207 abort of processing to restart). FLAG_RESTART just means
1208 that we want to restart once pass 1 is complete.
1209
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +00001210Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1211
1212 * Change the progress function to return an integer; if returns 1,
1213 then the progress function is expected to have set the
1214 e2fsck context flag signalling a user abort, and the
1215 caller should also initiate a user abort.
1216
Theodore Ts'o63c49691998-02-20 05:24:59 +00001217Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1218
1219 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
1220 end_problem_latch() unless there was actually a problem
1221 latched. Simplifies semantics of the latch processing.
1222
Theodore Ts'o43139321998-02-16 22:34:46 +00001223Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1224
1225 * e2fsck.h: Add new field, priv_data to the e2fsck context
1226 structure. It should be used by callers of the e2fsck
1227 functions only, and not by anything in e2fsck itself.
1228
1229Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1230
1231 * super.c: Instead of call ext2fs_get_device_size(), define and call
1232 e2fsck_get_device_size(). (This function may be stubbed
1233 out in special versions of e2fsck.)
1234
1235 * pass3.c, pass4.c: Remove extra calls to the progress function
1236 that weren't needed.
1237
1238 * mke2fs.8.in: Update man page to note that the format of the bad
1239 block file is the same as the one generated by badblocks.
1240
Theodore Ts'o54be2cc1998-02-01 12:58:48 +00001241Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1242
1243 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
1244
1245 * e2fsck.h: Include <time.h> since it is needed
1246
1247 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
1248 processing.
1249
Theodore Ts'o24dd4021998-02-01 00:16:40 +00001250Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1251
1252 * unix.c (main): In the case where the filesystem revision is too
1253 high, print the message about the superblock possibly
1254 being corrupt.
1255
1256 * e2fsck.8.in: Add expanded comments about how the -b option
1257 works.
1258
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +00001259Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1260
1261 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
1262 the ext2-specific header files are in a flat directory.
1263
1264 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
1265 super.c, swapfs.c, unix.c: Explicitly cast all assignments
1266 from void * to be compatible with C++.
1267
1268Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1269
1270 * unix.c (sync_disk): Remove sync_disk and calls to that function,
1271 since ext2fs_close() now takes care of this.
1272
1273Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1274
1275 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
1276 ehandler.c, unix.c: Change use of private to be priv_data,
1277 to avoid C++ reserved name clash.
1278
Theodore Ts'o5be8dc21997-12-01 18:24:10 +00001279Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1280
1281 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
1282 of e2fsck_get_num_dirs, which has been removed.
1283
1284Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1285
1286 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
1287 to compile and install flushb.
1288
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +00001289Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1290
1291 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
1292 to make sure the extra i_blocks in a device are cleared if
1293 the immutable flag is set.
1294
1295 * util.c (print_resource_track): Fix typo which caused the
1296 time/resource tracking to print "Pass 1 :" instead of
1297 "Pass 1: ".
1298
Theodore Ts'ob8647fa1997-11-20 21:52:43 +00001299Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1300
1301 * pass3.c (expand_directory): Fix bug which could cause core dump
1302 when expanding the directory, and the bitmaps hadn't yet
1303 been read in. Also, only use ext2fs_write_dir_block when
1304 writing a directory block, not when writing out a fresh
1305 indirect block.
1306
Theodore Ts'o8039c481997-11-19 21:39:13 +00001307Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1308
1309 * pass1.c (process_bad_block): Fix bug where first_block wasn't
1310 getting incremented, which caused user to get a
1311 "Programming error?" warning if there was a bad block in a
1312 non-primary superblock/group_descriptor. Also fixed
1313 another bug so that ext2fs_bg_has_super() is consulted, to
1314 avoid problems when using a filesystem with the
1315 sparse_groups option set and there are bad blocks at the
1316 beginning of a group which doesn't have a superblock.
1317
Theodore Ts'of8188ff1997-11-14 05:23:04 +00001318Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1319
1320 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
1321 progress indicator function.
1322
1323 * pass1.c (scan_callback): Add call to the progress feedback
1324 function (if it exists).
1325
1326Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1327
1328 * super.c (check_super_block): Skip the device size check if the
1329 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
1330
1331 * iscan.c (main): Don't use fatal_error() anymore.
1332
1333 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
1334 calling fatal_error(0).
1335
1336 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
1337 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
1338
1339 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
1340
1341 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
1342
1343 * problemP.h: New file which separates out the private fix_problem
1344 data structures.
1345
1346 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
1347 swapfs.c util.c: allocate_memory() now takes a e2fsck
1348 context as its first argument, and rename it to be
1349 e2fsck_allocate_memory().
1350
Theodore Ts'o08b21301997-11-03 19:42:40 +00001351Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1352
Theodore Ts'o68227541997-11-04 04:25:22 +00001353 * unix.c (main): Add a special case check for the error code EROFS
1354 and display an appropriate error message for this case.
1355
Theodore Ts'o08b21301997-11-03 19:42:40 +00001356 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
1357 to take the e2fsck context as their first argument.
1358 Change dir_info.c routines to take an e2fsck_context,
1359 renamed them to start with e2fsck_ to avoid namespace
1360 issues, and changed them to store the directory
1361 information inside the e2fsck context.
1362 Added e2fsck_run() which calls all of the e2fsck passes in
1363 the correct order, and which handles the return of abort
1364 codes. Added abort processing, both via setjmp/longjmp
1365 and via flags in the e2fsck context. Use a flag in the
1366 e2fsck context instead of the restart_e2fsck global
1367 variable. Change uses of free and malloc to
1368 ext2fs_free_mem and ext2fs_get_mem.
1369
Theodore Ts'o291c9041997-10-31 06:17:08 +00001370Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1371
1372 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
1373 consistency.
1374
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00001375Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1376
1377 * pass3.c (get_lost_and_found): Check error return of
1378 EXT2_FILE_NOT_FOUND instead of ENOTDIR
1379
1380 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
1381 instead of ENOTDIR
1382
Theodore Ts'o622f5f21997-10-24 04:18:21 +00001383Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1384
Theodore Ts'o519149f1997-10-25 03:49:49 +00001385 * unix.c (PRS): Make the variable which getopt returns into be
1386 an int, so that it won't lose on platforms where char is
1387 unsigned.
1388
Theodore Ts'o622f5f21997-10-24 04:18:21 +00001389 * pass1b.c (clone_file): Fix bug in error reporting in the case
1390 where cs.errcode is non-zero.
1391
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00001392Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1393
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00001394 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
1395 RESOURCE_TRACK around code which uses init_resource_track
1396 and print_resource_track. (Not all systems have timeval)
1397
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00001398 * super.c: Remove excess #includes which are not necessary.
1399
1400 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
1401
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00001402Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1403
1404 * pass*.c, super.c: Massive changes to avoid using printf and
1405 com_err routines. All diagnostic messages are now routed
1406 through the fix_problem interface.
1407
1408Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1409
1410 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
1411 entries.
1412
1413 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
1414 PR_2_DUP_DOT_DOT.
1415
1416Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1417
1418 * problem.c: Added new problem codes for some of the
1419 superblock corruption checks, and for the pass header
1420 messages. ("Pass 1: xxxxx")
1421
1422 * util.c (print_resource_track): Now takes a description
1423 argument.
1424
1425Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1426
1427 * super.c, unix.c, e2fsck.c: New files to separate out the
1428 operating-specific operations out from e2fsck.c.
1429 e2fsck.c now contains the global e2fsck context management
1430 routines, and super.c contains the "pass 0" initial
1431 validation of the superblock and global block group
1432 descriptors.
1433
1434 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
1435 (nearly) all global variables and moved them to the e2fsck
1436 context structure.
1437
1438 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
1439 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
1440 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
1441
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00001442Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1443
1444 * message.c: Add compression for the word "Illegal"
1445
1446 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
1447 PR_2_BAD_BLOCK_DEV
1448
1449Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1450
1451 * pass1.c (pass1, check_device_inode), pass2.c
1452 (process_bad_inode): Use a more stringent test for a valid
1453 device.
1454
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00001455Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1456
1457 * e2fsck.c (check_mount): Add stronger warning message about the
1458 perils of running e2fsck on a mounted filesystem.
1459
Theodore Ts'o024996c1997-06-17 05:38:35 +00001460Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1461
1462 * Release of E2fsprogs 1.11
1463
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00001464Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1465
1466 * pass1.c (mark_table_blocks): Mark the superblock and group
1467 descriptor blocks first, so that any conflicts between
1468 these and the bitmap or inode table blocks is noticed.
1469
1470 * problem.c: Fix message printed out when a block or inode bitmap
1471 conflicts with other fs data, has the correct group number
1472 in it.
1473
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00001474Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1475
1476 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
1477
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001478Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1479
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00001480 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
1481 Hawes (whawes@star.net).
1482
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001483 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
1484 bad blocks command so that all of the filesystem gets
1485 tested in the case where the blocksize 2048 or 4096.
1486
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00001487Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
1488
1489 * Release of E2fsprogs version 1.10
1490
1491Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1492
1493 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
1494 where ext2fs_get_next_inode returns the
1495 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
1496
1497Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1498
1499 * Release of E2fsprogs version 1.09
1500
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00001501Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1502
1503 * Release of E2fsprogs version 1.08
1504
Theodore Ts'o521e3681997-04-29 17:48:10 +00001505Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1506
1507 * pass1b.c (clone_file_block): If we clone a directory, we need to
1508 update the dblist entry so that we check (and correct) the
1509 right directory block.
1510
1511Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1512
1513 * pass1.c (process_block): Don't clear blocks references to
1514 filesystem metadata; let pass 1B handle this case.
1515
1516 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
1517
1518 * pass1b.c (pass1d): Deal with a block which is shared with
1519 filesystem metadata.
1520
1521 * e2fsck.h: Make block_illegal_map be a global variable
1522
1523Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1524
1525 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
1526 feature.
1527 (get_backup_sb): New function which attempts to obtain the
1528 correct backup superblock (if possible).
1529
1530Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1531
1532 * e2fsck.c (main): Check the version of the library, and warn if
1533 the library is out of date; this happens generally due to
1534 users who manually install e2fsprogs.
1535
1536 * pass1.c (pass1_get_blocks): If the passed in inode number for
1537 get_blocks isn't what we're expecting pass back
1538 EXT2_ET_CALLBACK_NOT_HANDLED.
1539
Theodore Ts'o21c84b71997-04-29 16:15:03 +00001540Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
1541
1542 * Release of E2fsprogs version 1.07
1543
1544Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1545
1546 * icount.c: New file which implements an inode count abstraction.
1547 This significantly reduces amount of memory needed to
1548 check really large filesystems.
1549
1550 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
1551 abstraction.
1552
1553Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1554
1555 * dirinfo.c (dir_info_iter): New function which allows iteration
1556 over the directories in the dir_info map.
1557
1558 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
1559 over all directories in the dir_info structure, instead of
1560 iterating all inodes looking for directories, and then
1561 looking up the directories using get_dir_info().
1562
1563Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1564
1565 * pass1.c (pass1, process_block):
1566 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
1567 manual code to manage the directory block list information.
1568
1569 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
1570 (deallocate_inode): Call the ext2 library routine
1571 ext2_inode_has_valid_blocks() instead of
1572 inode_has_valid_blocks().
1573
1574 * swapfs.c (swap_inodes): Add check so that we don't try to call
1575 swap_inode_blocks unless the inode has valid blocks.
1576 (Otherwise a long fast symlink might cause
1577 swap_inode_blocks to erroneously get called.)
1578
1579Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1580
1581 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
1582 PR_2_DOT_DOT_NULL_TERM.
1583
1584 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
1585 .. entries are null-terminated, since the 2.0 kernel
1586 requires this (for no good reason).
1587
1588Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1589
1590 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
1591 that we can recover from missing inode tables.
1592
1593 * dirinfo.c (get_dir_info): If there are no directories in the
1594 dir_info abstraction, don't core dump (because dir_info is
1595 NULL).
1596
1597 * e2fsck.c (main): Don't try using the backup superblocks if there
1598 aren't any.
1599 (check_super_block): If there are illegal inode table or
1600 bitmaps, set the filesystem as being in error.
1601
1602Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1603
1604 * pass2.c (check_dir_block): Added check to make sure that rec_len
1605 is a a multiple of 4 (so that the directory entries are
1606 4-byte aligned).
1607
1608Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1609
1610 * Makefile.in (uninstall): Uninstall all programs in the PROGS
1611 line.
1612 (PROGS): Don't build and install the extend program by
1613 default.
1614
1615
1616Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1617
1618 * pass1.c (process_inodes): Make sure the stashed_ino variable is
1619 saved and restored as well.
1620 (pass1): For fast sym links, skip the check_blocks
1621 processing step altogether.
1622
1623Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1624
1625 * problem.c, message.c: New files, to completely refurbish how
1626 filesystem problems are reported to the user. The
1627 diagnostic messages are now encoded out in an easily
1628 customizable, extensible format. The messages printed out
1629 in preen mode are all on one line, and contain the device
1630 name.
1631
1632Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1633
1634 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
1635 deleted files.
1636
1637 * pass1.c (pass1): Ignore missing inode table errors during the
1638 scan, and just skip past those inodes.
1639
1640 * pass3.c (check_root): Remove root_ino argument, and assume that
1641 the root inode must be EXT2_ROOT_INO. Move responsibility
1642 of setting the parent of the root inode in the directory
1643 inode structure to pass2().
1644
1645 * pass2.c (check_dir_block): Don't allow links to the root
1646 directory.
1647
1648 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
1649 since the inode is no longer used.
1650
1651Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1652
1653 * e2fsck.c (main): If the superblock magic number is wrong, or the
1654 block group fails a sanity check, then automatically
1655 restart trying to use the backup superblocks.
1656
1657 * pass1.c (mark_table_blocks): Make the inode tables ahead of
1658 everything else; in the case where a bitmap block overlays
1659 the inode table, the inode table should take precedence.
1660
1661 * pass2.c (maybe_clear_entry): Make the deleted/unused error
1662 message fit on one line, since the error can happen during
1663 a preen pass. (We eventually need to revamp the whole
1664 e2fsck error reporting and prompting system, but that's a
1665 job for another day.)
1666
1667Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1668
1669 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
1670 for the benefit of the inode scan functions.
1671
1672 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
1673 indicating that an inode is in a bad block, mark that
1674 inode as being used, as well as in the inode "bb" map.
1675
1676 * pass2.c (maybe_clear_entry): New function which generalizes the
1677 error cases when a directory entry needs to be cleared.
1678 (check_dir_block): If an inode is in the "bb" map, offer
1679 to clear the directory entry, since the inode is in a bad
1680 block.
1681
1682 * pass4.c (pass4): If an inode is marked as used, but is is marked
1683 in the "bb" map, don't process it as a disconnected inode.
1684
1685Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1686
1687 * Release of E2fsprogs version 1.06
1688
Theodore Ts'o5c576471997-04-29 15:29:49 +00001689Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1690
1691 * e2fsck.c (main): Print out the version number of the shared
1692 library when using the -V option.
1693
1694 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
1695 consistency's sake.
1696
1697 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
1698 out the backup superblocks when we know we have a valid
1699 filesystem.
1700
1701Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1702
1703 * util.c (preenhalt): Make it explicit on preenhalt that running
1704 e2fsck manually means without the -a or -p flag.
1705
1706Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1707
1708 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
1709 (Linux/FT actually sets the mode bits, so we have to
1710 handle it specially.)
1711
1712 * e2fsck.c (check_if_skip): Print a message if the filesystem is
1713 just dirty, so that the user knows that it's about to be
1714 checked (since this will take a while).
1715
1716Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1717
1718 * pass4.c: If a disconnected inode is zero-length, prompt to
1719 delete it instead of connecting it to lost+found.
1720
1721Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1722
1723 * Release of E2fsprogs version 1.05
1724
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00001725Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1726
1727 * pass4.c (pass4): If the user refuses to connect an unattached
1728 inode to lost+found, don't try to set i_links_count. This
1729 is bad, since if the user says yes, the inode will be
1730 marked as unused, which is not necessarily the right
1731 thing, especially since the rest of the cleanup doesn't
1732 happen here.
1733
1734 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
1735 dellocating an inode. (Not strictly necessary, but...)
1736
1737 * pass4.c (pass4): Add "bonehead" explanation to the "programming
1738 error" message.
1739
1740Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1741
1742 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
1743 byte-swap the filesystem so that it is normalized. -S
1744 will byte-swap the filesystem regardless of its current
1745 byte-order.
1746
1747 * swapfs.c: New file, which will byte-swap a filesystem.
1748
1749Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1750
1751 * pass1.c (pass1): Change handling on files with non-zero dtime
1752 and non-zero i_link_count; before we treated them as
1753 deleted file per botched ext2 0.3c kernel behavior. We
1754 now clear dtime instead.
1755
1756Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1757
1758 * e2fsck.c (main): If e2fsck sets the clean bit, even if
1759 nothing else is changed, make sure FSCK_NONDESTRUCT is
1760 set (since after all having the filesystem set to
1761 invalid is an error. :-)
1762
1763Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1764
1765 * pass1.c (process_block): Make sure that meta data doesn't get
1766 accidentally set in the dir_blocks array (which could
1767 happen in some error condtions).
1768
1769 * pass1.c (pass1):
1770 * pass2.c (process_bad_inode): Check for fragments in a
1771 OS-independent fashion.
1772
1773Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1774
1775 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
1776 cleanup for the filesystem.
1777
1778Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1779
1780 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
1781
Theodore Ts'o62c06f71997-04-29 14:34:47 +00001782Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1783
1784 * Release of E2fsprogs version 1.04
1785
1786Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1787
1788 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
1789 try "e2fsck -b 8193" before allowing e2fsck to relocate
1790 inode table blocks.
1791
1792 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
1793 depending on the option to configure. Added targets for
1794 e2fsck.static and e2fsck.shared for people who want to
1795 build a static or shared variant manually.
1796
Theodore Ts'o7f88b041997-04-26 14:48:50 +00001797Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
1798
1799 * Release of E2fsprogs version 1.03
1800
1801Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
1802
1803 * e2fsck.c (show_stats): Don't use floating point to display
1804 percentage of non-contiguous files, as different libc
1805 handle result truncation differently, and this causes the
1806 test suite to bomb out depending on which libc you are
1807 using.
1808
1809 * util.c (allocate_memory): Fix error message to omit extraneous
1810 %%s.
1811
1812Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
1813
1814 * pass4.c (pass4):
1815 * pass2.c (check_dir_block):
1816 * pass1.c (pass1): Add support for dynamic first inode revision.
1817
1818Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
1819
1820 * pass3.c (check_root): Fix spelling typo
1821
1822Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
1823
1824 * e2fsck.c (check_super_block): If the superblock fails certain
1825 internal consistency checks, exit with a fatal error after
1826 printing the "superblock is corrupt message".
1827
Theodore Ts'o74becf31997-04-26 14:37:06 +00001828Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
1829
1830 * Release of E2fsprogs version 1.02
1831
1832Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
1833
1834 * pass1.c (process_block): Check to see if a file is "fragmented".
1835 i.e., non-contiguous. Note that any file which is larger
1836 than the block group is guaranteed to be non-contiguous.
1837 We may want to use a different hueristic for deciding
1838 whether or not a file is "fragmented".
1839
1840 * e2fsck.c (show_stats): Print statistics of how many
1841 non-contiguous files are on the system.
1842
1843Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
1844
1845 * badblocks.c (read_bad_blocks_file, test_disk): Fold
1846 functionality of test_disk() (which runs badblocks) into
1847 read_bad_blocks_file(); test_disk() now calls
1848 read_bad_blocks_file() with a NULL bad_blocks_file
1849 argument.
1850
1851Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
1852
1853 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
1854 #if defined(linux). The latter won't work if we're
1855 compiling -ansi.
1856
Theodore Ts'o297f47a1997-04-26 14:25:20 +00001857Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
1858
1859 * e2fsck.c (check_mount): For Linux systems, the check to see if
1860 the root is mounted read-only has to be done for all
1861 filesystems, not just for the root filesystem, due to the
1862 way that some /etc/rc scripts are set up.
1863
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001864Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
1865
1866 * Makefile.in (install): Strip programs when they are installed.
1867 (e2fsck): Build e2fsck statically.
1868
1869Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
1870
1871 * util.c (preenhalt): Preenhalt now takes an argument, which is an
1872 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
1873 flag in the superblock in cases where preenhalt is called.
1874 All calls to preenhalt() were changed to either
1875 preenhalt(fs) or preenhalt(NULL) in a few cases where the
1876 fs pointer was not available. (Most notable, for block
1877 read/write errors.)
1878
1879Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
1880
1881 * ehandler.c:
1882 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
1883
1884Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
1885
1886 * e2fsck.c (show_stats): Show statistics about how many inodes
1887 have indirect, doubly indirect, and triply indirect
1888 blocks. Allow up to 8 digits for statistics, instead of
1889 merely 6, so things look pretty for large filesystems.
1890
1891 * pass1.c (pass1): Keep statistics about indirect, doubly
1892 indirect, and triply indirect blocks.
1893
1894 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
1895 pass 1.
1896
1897Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
1898
1899 * util.c, ehandler.c: Move #include of <sys/resource.h> after
1900 #include of "e2fsck.h", since sys/resource.h may depend on
1901 sys/time.h, which is #included in e2fsck.h.
1902
1903Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
1904
1905 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
1906 function to determine if the device is mounted.
1907
1908 * e2fsck.c (main): Add better error messages if ext2fs_open()
1909 fails.
1910
1911Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
1912
1913 * pass1.c (check_blocks): If we're clearing a directory, clear
1914 pb.is_dir so we don't do the following check of making
1915 sure the directory size matches; this is pointless, since
1916 we've already cleared the inode.
1917
1918Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1919
1920 * pass1.c (bad_primary_block): New function, called by
1921 process_bad_block, which explains the facts of life to the
1922 user when a block in the primary superblock or primary
1923 group descriptors is bad.
1924
1925 * pass2.c (check_dot): Handle the case where the first directory
1926 entry is used, but not ".".
1927
1928 * pass2.c (check_dotdot): Handle the case where the second directory
1929 entry is used, but is not "..".
1930
1931Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1932
1933 * e2fsck.c (check_super_block): Get the size of the physical
1934 device and if it is smaller than the reported size of the
1935 filesystem, report an error.
1936
1937Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
1938
1939 * e2fsck.c (check_if_skip): Print the number of allocated files and
1940 blocks on clean filesystems.
1941
1942Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
1943
1944 * e2fsck.8: Updated date and version number.
1945
1946Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
1947
1948 * pass1.c (check_blocks): Check that directory size matches *exactly*
1949 the count of allocated blocks.
1950
1951Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
1952
1953 * pass1b.c (pass1d): Free the shared[] array when we're done with
1954 it to avoid a memory leak.
1955
1956 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
1957 block_dup_map.
1958
1959 * pass2.c (process_bad_inode): When clearing the inode, make sure
1960 the pathname is freed, to prevent a memory leak.
1961
1962 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
1963 when we're finished with them.
1964 (check_block_bitmaps): Free free_array when we're finished
1965 with them.
1966
1967 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
1968 linking the executable.
1969
1970 * pass2.c (process_bad_inode): Even on OS's that don't support the
1971 fragment fields, make sure the Linux equivalent fields are
1972 set to zero. If an OS wants to reuse these fields, which
1973 is probably a bad idea (although we may get desperate in
1974 the future) this code will have to be changed.
1975
1976 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
1977 on the inode field, and then blockcnt field. This is just
1978 to keep the ordering of dir_blocks the same on all
1979 platforms when there are more than on missing directory
1980 blocks, which are indicated directories with holes, which
1981 are indicated with the block number being set to zero.
1982
1983Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1984
1985 * pass1.c (check_blocks, process_block): check_blocks() modified
1986 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
1987 the inode is a directory. process_block() now checks to
1988 see if a directory has a "hole", or missing block. If so,
1989 this fact is recorded in the directory block list so that
1990 the problem can be resolved in pass #2.
1991
1992 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
1993 allocate new blocks for directories with "holes". Called
1994 out of check_dir_block if a block in the directory block
1995 list is zero.
1996
1997 * pass3.c (get_lost_and_found): Move location of free(block) to
1998 prevent possible memory leak.
1999
2000Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2001
2002 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
2003 instead of alloca() --- alloca is not portable! Check to
2004 make sure the filename is not longer than EXT2_NAME_LEN,
2005 and offer to fix it by truncating it, since it should
2006 never happen.
2007
2008 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
2009 not portable!! In any case putenv() in some systems must
2010 take a static character array or malloc()'ed memory;
2011 passing memory allocated using alloca() to putenv() is not
2012 advisable.
2013
2014 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
2015 alloca() --- alloca() is not portable!!!
2016
2017Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
2018
2019 * pass1b.c (pass1c):
2020 * pass3.c (check_root, get_lost_and_found):
2021 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
2022 to read/write the directory block.
2023
2024Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
2025
2026 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
2027 make sure VMIN and VTIME are set correct.
2028
2029Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
2030
2031 * pass1.c (mark_block_used): Change to be an inline function.
2032 Assume that the block validity checks are already done,
2033 and use the fast variant of the bitmap functions.
2034
2035Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
2036
2037 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
2038 bounds of the bitmaps in advance, and then use the fast
2039 variant of e2fs_test_{block,inode}_bitmap.
2040
2041 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
2042 the bounds checking has already been done earlier.
2043
2044Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
2045
2046 * pass1.c (pass1): Allocate and free the block_illegal_map, which
2047 is used for shortcut processing in process_block.
2048 (mark_table_blocks): Initialize block_illegal_map with the
2049 filesystem blocks.
2050 (describe_illegal_block): New helper function that
2051 describes why a block is illegal.
2052 (process_block): Use block_illegal_map as a shortcut
2053 to determine whether a block is bad. Use
2054 describe_illegal_block to print out why the block is illegal.
2055
2056Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
2057
2058 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
2059
2060 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
2061 <mntent.h> if they don't exist. (Mostly so that "make
2062 depend" works.)
2063
2064 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
2065 it exists).
2066
2067 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
2068 exist.
2069
2070Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2071
2072 * pass2.c (process_bad_inode, check_for_zero_long,
2073 check_for_zero_char): Change long to u32, and char to u8.
2074
2075Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2076
2077 * util.c (inode_has_valid_blocks):
2078 * pass2.c (process_bad_inode):
2079 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
2080 LINUX_S_IS* instead of S_IS*.
2081
2082 * e2fsck.h: Don't #include <sys/stat.h>
2083
2084 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
2085 this program is pretty much useless if BLKFLSBUF isn't
2086 supported.)
2087
2088 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
2089 used.
2090
2091Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
2092
2093 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
2094 to allocate space for file names instead of using fixed size buffers.
2095 (process_bad_inode): Only check inode frag fields if
2096 HAVE_EXT2_FRAGS is defined (by configure).
2097 * pass1.c (pass1): Only check the inode frag fields if
2098 HAVE_EXT2_FRAGS is defined (by configure).
2099
2100 * e2fsck.c (check_mount): Only check for a mounted filesystem if
2101 HAVE_MNTENT_H is defined (by configure).
2102 (PRS): Use alloca to allocate the new path string, instead of
2103 having a fixed size buffer (which was the wrong size anyway).
2104 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
2105 is defined.
2106
2107 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
2108 defined (by configure).
2109
2110 * Makefile.in: Rewritten to conform to GNU coding standards and
2111 support separate compilation directories.
2112
2113Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
2114
2115 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
2116
Theodore Ts'of3db3561997-04-26 13:34:30 +00002117Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
2118
2119 * pass1.c (unwind_pass1): Clear the file type statistics counter
2120 when pass 1 needs to be restarted from scratch.
2121
2122 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
2123 being reallocated to blocks in the next block group,
2124 instead of the current block grup.
2125
2126 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
2127 inode.i_links_count is set.
2128
2129Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
2130
2131 * pass1.c (process_block): Add checks for if the block is
2132 trepassing on a superblock or group descriptor table.
2133
2134Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
2135
2136 * main.c (corrupt_msg): Extend the message which is printed out
2137 when the superblock is corrupt, to include the suggestion
2138 of using the -b option to specify an alternate superblock.
2139
2140Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
2141
2142 * badblocks.c (read_bad_blocks_file): If we are adding or
2143 replacing bad blocks in the bad blocks inode, sanity check
2144 the bad block inode first, and clear out any illegal blocks.
2145
2146 * pass2.c (check_name): Don't bomb out if the attempt to get the
2147 pathname of the containing directory returns an error; the
2148 directory may be too badly damaged to expect that
2149 ext2fs_get_pathname will always succeed. Use "???" if the
2150 pathname can't be obtained (it's only for a printf to the
2151 user anyway).
2152
2153 The name of the containing directory and the bad filename
2154 were incorrectly interchanged in the user message. Fixed.
2155
2156 * pass2.c (check_name, check_dir_block): Use a common static
2157 string for the unknown pathname.
2158
2159Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
2160
2161 * Fixed lots of printf formats to make sure that block and inode
2162 numbers are printed as unsigned integers.
2163
2164Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
2165
2166 * pass5.c (check_block_end): Fix calculation of how the last block
2167 in the block bitmap should be calculated.
2168
2169Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
2170
2171 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
2172 be an ext2fs_inode_bitmap, and free it properly.
2173
2174 * e2fsck.h
2175 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
2176 level to the superblock.
2177
2178Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
2179
2180 * e2fsck.c (usage): Fixed bogus usage message.
2181
2182Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
2183
2184 * pass1.c (process_bad_block): Fixed bug so that blocks in the
2185 backup superblocks and group descriptors are handled gracefully.
2186