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