blob: a8d0da7340961e4bb7a6891766e719bebdab3b24 [file] [log] [blame]
Theodore Ts'o55fd07e2001-07-19 16:31:25 -040012001-07-19 Theodore Tso <tytso@valinux.com>
2
3 * pass1.c (check_ext_attr): The entire EA block is now checked to
4 make sure that parts of the EA block aren't being used for
5 multiple purposes.
6
7 * Makefile.in e2fsck.h, region.c: New file which is used to detect
8 collisions in extended attribute block.
9
10 * problem.h, problem.c (PR_1_EA_MULTI_BLOCK, PR_1_EA_ALLOC_REGION,
11 PR_1_EA_ALLOC_COLLISION, PR_1_EA_BAD_NAME,
12 PR_1_EA_BAD_VALUE): Add new problem codes.
13
Theodore Ts'o3c6b8972001-07-10 14:27:58 -0400142001-07-10 Theodore Tso <tytso@valinux.com>
15
16 * journal.c (e2fsck_run_ext3_journal): Only call ext3_flush() if
17 the superblock is dirty.
18
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -0400192001-07-07 Theodore Tso <tytso@valinux.com>
20
Theodore Ts'o7b63fff2001-07-07 23:01:31 -040021 * pass1b.c (pass1b, process_pass1b_block): Change the num_bad
22 field calculation so that it only counts EA block entries
23 as a single multiply claimed block (since once we clone
24 the EA blocks for one inode, we fix the problem for all of
25 the other inodes). Also, I moved the num_bad calculation
26 from process_pass1b_block to the end of pass1b. This
27 fixes a *significant* performance bug in pass1b which hit
28 people who had to had a lot of multiply claimed blocks.
29 (Can you say O(n**3) boys and girls? I knew you could...
30 Fortunately, this case didn't happen that much in actual
31 practice.)
32
33 * pass1.c (e2fsck_pass1): Defer inodes which have an extended
34 attribute block for later processing to avoid extra seeks
35 across the disk.
36 (process_inode_cmp): If there is no indirect block, sort
37 by the extended attribute (i_file_acl) block.
38
Theodore Ts'o7abb2bd2001-07-07 13:20:34 -040039 * pass1b.c (clone_file_block): Fix bugs when cloning extended
40 attribute blocks. Moved free of block_buf to after the
41 code which clones the extattr block, and fixed logic for
42 changing pointers to the extended attribute field in the
43 inodes which were affected.
44 (decrement_badcount): New function which is used whenever
45 we need to decrement the number of files which claim a
46 particular bad block. Fixed bug where delete_file wasn't
47 checking check_if_fs_block() before clearing the entry in
48 block_dup_map. This could cause a block which was claimed
49 by multiple files as well as the filesystem metadata to
50 not be completely fixed.
51
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -040052 * pass1.c (adjust_extattr_refcount): Add new function which
53 adjusts the reference counts of extended attribute blocks
54 if needed, both up and down.
55 (e2fsck_pass1): If the refcount or refcount_extra
56 structure are present, call adjust_extattr_refcount(),
57 and free it afterwards.
58
59 * problem.h, problem.c (PR_1_EXTATTR_READ_ABORT,
60 PR_1_EXTATTR_REFCOUNT, PR_1_EXTATTR_WRITE): Add new
61 problem codes.
62
Theodore Ts'o342d8472001-07-02 11:54:09 -0400632001-07-02 Theodore Tso <tytso@valinux.com>
64
65 * pass1.c (e2fsck_pass1, check_ext_attr, check_blocks): Add
66 initial support for scanning extended attribute blocks.
67
68 * e2fsck.c (e2fsck_reset_context): free extended attribute
69 refcount structure.
70
71 * e2fsck.h: Add new fields for accounting for the extended
72 attribute blocks.
73
74 * Makefile.in, ea_refcount.c, e2fsck.h: Add new file which
75 implements a reference count abstraction.
76
77 * problem.c, problem.h: Add new problem codes PR_1_ALLOCATE_REFCOUNT,
78 PR_1_READ_EA_BLOCK, PR_1_BAD_EA_BLOCK, PR_2_FILE_ACL_BAD
79
80 * message.c: Add "@a" as an abbreviation for "extended attribute"
81
82 * pass1b.c (clone_file): Add code which handles cloning an
83 extended attribute block.
84
85 * pass1b.c (delete_file):
86 * pass2.c (deallocate_inode): If the inode contains an extended
87 attribute block in the file_acl field, clear it and
88 deallocate the block.
89
902001-06-28 Theodore Tso <tytso@valinux.com>
91
92 * pass2.c (e2fsck_process_bad_inode): Deal with inodes which are
93 marked bad because of an invalid file_acl (either because
94 EXT2_FEATURE_COMPAT_EXT_ATTR is not set, or because the
95 block number in file_acl is bad.
96
Theodore Ts'o636a9542001-06-29 17:57:26 -0400972001-06-29 Theodore Tso <tytso@valinux.com>
98
99 * unix.c (show_stats): Use long long to calculate the percentage
100 of the number of blocks in use in the filesystem.
101
Theodore Ts'o67960132001-06-23 00:16:37 -04001022001-06-23 Theodore Tso <tytso@valinux.com>
103
104 * Release of E2fsprogs 1.22
105
Theodore Ts'od90f3492001-06-22 21:01:17 -04001062001-06-22 Theodore Tso <tytso@valinux.com>
107
108 * flushb.c: Use platform independent method of defining the
109 BLKFLSBUF ioctl. Also include sys/mount.h since on newer
110 platforms BLKFLSBUF is defined there.
111
Theodore Ts'o42475e22001-06-22 20:35:38 -04001122001-06-19 Theodore Tso <tytso@valinux.com>
113
114 * super.c (release_inode_blocks): Don't try to release the blocks
115 if the orphaned inode is a device file, symlink, or some
116 other kind of special file that doesn't have a block list.
117
Theodore Ts'of4f75ba2001-06-16 01:14:28 +00001182001-06-15 Theodore Tso <tytso@valinux.com>
119
120 * Release of E2fsprogs 1.21
121
Theodore Ts'ob6a08072001-06-14 01:16:17 +00001222001-06-13 Theodore Tso <tytso@valinux.com>
123
124 * unix.c (check_if_skip): Adapted patch from Andreas Dilger which
125 prints the number of mounts or days elapsed since the last
126 check when e2fsck is forced to check an otherwise clean
127 filesystem.
128
Theodore Ts'ocbbf0312001-06-13 00:12:04 +00001292001-06-12 Theodore Tso <tytso@valinux.com>
130
131 * badblocks.c: Stop using the compatibility badblocks function,
132 and use the ext2fs_badblocks_* functions instead.
133
Theodore Ts'o5df55d72001-06-11 07:00:04 +00001342001-06-11 Theodore Tso <tytso@valinux.com>
135
Theodore Ts'o3034f622001-06-11 15:17:45 +0000136 * unix.c (PRS): Fix bug introduced in 1.20 which broke the -F
137 flag.
138
Theodore Ts'o5df55d72001-06-11 07:00:04 +0000139 * Makefile.in: Add message.c and swapfs.c to the list of source
140 files to build the make depend.
141
142 * swapfs.c, unix.c: Only support the -s and -S options to e2fsck
143 if ENABLE_SWAPFS is defined.
144
Theodore Ts'o725c4742001-06-08 11:55:44 +00001452001-06-08 Theodore Tso <tytso@valinux.com>
146
147 * recover.c, revoke.c: Synchronize with ext3 0.7a
148
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00001492001-06-02 Theodore Tso <tytso@valinux.com>
150
Theodore Ts'oa479fe62001-06-02 04:50:14 +0000151 * recovery.c (scan_revoke_records): Fix bug in recovery code;
152 missing byte order conversion.
153
Theodore Ts'ofdbdea02001-06-02 04:26:26 +0000154 * pass1.c (mark_inode_bad): Replace alloc_bad_map with a function
155 which sets the bit in the bad inode bitmap.
156 (e2fsck_pass1): Check for fast symlinks with an invalid
157 size, and set the bad inode map in that case.
Theodore Ts'o62b6d472001-06-02 04:37:02 +0000158 (check_size): Check i_size_high for special files and
159 prompt to clear it along with i_size if non-zero.
Theodore Ts'ofdbdea02001-06-02 04:26:26 +0000160
161 * pass2.c (e2fsck_process_bad_inode): Check for fast symlinks with
162 an invalid size and prompt the user if the inode should be
163 cleared.
164
165 * problem.h, problem.c (PR_2_SYMLINK_SIZE): Added new problem code.
166
Theodore Ts'o71d521c2001-06-01 19:29:36 +00001672001-06-01 Theodore Tso <tytso@valinux.com>
168
Theodore Ts'o2f686ac2001-06-02 00:38:40 +0000169 * problem.c, problem.h: Change PR_0_JOURNAL_UNSUPP_INCOMPAT and
170 PR_0_JOURNAL_UNSUPP_ROCOMPAT so they aren't fatal errors,
171 but prompt to see if the user should abort. Removed the
172 PR_0_JOURNAL_RESET_COMPAT problem code.
173
174 * journal.c (e2fsck_journal_load): If there are incompatible
175 journal flags, just return an error code.
176 (e2fsck_check_ext3_journal): If e2fsck_journal_load
177 returns an error code indicating that there are
178 incompatible journal flag, check to see if we should
179 abort, and then offer to clear the journal.
Theodore Ts'oe3338452001-06-14 07:11:33 +0000180 (Addresses Debian bug #98527.)
Theodore Ts'o2f686ac2001-06-02 00:38:40 +0000181
Theodore Ts'o797f5ef2001-06-01 23:49:46 +0000182 * Makefile.in: Move include/asm/types.h.in to
Theodore Ts'o36a23e12001-06-02 00:54:10 +0000183 lib/ext2fs/ext2_types.h.in.
Theodore Ts'o797f5ef2001-06-01 23:49:46 +0000184
1852001-06-01 Theodore Tso <tytso@valinux.com>
186
Theodore Ts'o71d521c2001-06-01 19:29:36 +0000187 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
188 pass1_check_directory): Add a safety check to make sure
189 ctx->stashed_inode is non-zero.
190
191 * pass1b.c (pass1b): Use e2fsck_use_inode_shortcuts() to disable
192 the inode shortcut processing, instead of manually
193 clearing only half of the function pointers that needed to
194 be NULL'ed out. This caused nasty bugs if the last inode
195 in the filesystem needed dup block processing.
196
197 * pass1b.c (clone_file_block): When cloning a directory's metadata
198 block, don't try to update the directory block list
199 database, since indirect blocks aren't stored in the
200 database and the resulting error will abort the file clone
201 operation.
202
Theodore Ts'o561cd4d2001-05-25 16:40:56 +00002032001-05-25 Theodore Tso <tytso@valinux.com>
204
Theodore Ts'obb185862001-05-25 17:35:00 +0000205 * Release of E2fsprogs 1.20
206
2072001-05-25 Theodore Tso <tytso@valinux.com>
208
Theodore Ts'o561cd4d2001-05-25 16:40:56 +0000209 * journal.c (e2fsck_journal_reset_super): Remove extraneous line
210
Theodore Ts'oc7f23362001-05-23 22:19:47 +00002112001-05-23 Theodore Tso <tytso@valinux.com>
212
213 * journal.c (e2fsck_journal_reset_super): Fix bug; the reset
214 journal wasn't getting written out to disk since the dirty
215 bit wasn't being set on the buffer.
216 (e2fsck_journal_load): Don't print an error message if the
217 journal version number is wrong; just return a error code
218 reflecting this fact. If the block type in the journal
219 superblcok is obviously not a version number, report the
220 journal is corrupted.
221 (e2fsck_check_ext3_journal): On an unsupported journal
222 version, prompt to abort by default, but then offer a
223 chance to clear the journal as corrupt.
224
225 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_VERSION): Added new
226 problem code.
227
Theodore Ts'o424cd2b2001-05-14 04:06:56 +00002282001-05-14 Theodore Tso <tytso@valinux.com>
229
Theodore Ts'o21afac02001-05-14 12:47:41 +0000230 * pass1.c: Treat inodes with a low dtime (that were from a
231 corrupted orphan list) specially.
232
233 * problem.c, problem.h: Add new problem codes PR_1_LOW_DTIME and
234 PR_1_ORPHAN_LIST_REFUGEES, and a new latch group,
235 PR_LATCH_LOW_DTIME.
236
237 * problemP.h: Expand the size of the problem flag to be an int
238 instead of a short. Expand space in the flag word which
239 is reserved for problem latch flags from 3 bits to 8 bits.
240
Theodore Ts'o54c637d2001-05-14 11:45:38 +0000241 * e2fsck.h, scantest.c: Change location of ext2_fs.h to be
242 ext2fs/ext2_fs.h
243
Theodore Ts'o424cd2b2001-05-14 04:06:56 +0000244 * super.c (check_super_block): Be more strict on checking
245 s_r_blocks_count superblock field.
246
2472001-05-13 Theodore Tso <tytso@valinux.com>
248
249 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_ROCOMPAT,
250 PR_0_JOURNAL_UNSUPP_INCOMPAT, PR_0_JOURNAL_RESET_COMPAT):
251 New problem codes.
252
253 * journal.c (e2fsck_journal_load): Use a problem code to
254 report unsupported feature flags. There is code to
255 clear unsupported flags, but since this is dangerous,
256 it's not allowed in the problem code table.
257
2582001-05-11 Andreas Dilger <adilger@turbolinux.com>
259
260 * journal.c (e2fsck_journal_reset_super): initialize the journal
261 sequence number to a random value to avoid recovering
262 bad transactions from a corrupt journal.
263
Theodore Ts'o328a5ce2001-05-13 20:21:25 +00002642001-05-13 Theodore Tso <tytso@valinux.com>
265
266 * journal.c: Code cleanup; initialize journal_enable_debug using
267 an initializer.
268
Theodore Ts'ofc9a69c2001-05-12 13:43:46 +00002692001-05-12 Theodore Tso <tytso@valinux.com>
270
271 * unix.c (PRS): Skip validation of -C's file descriptor if it is
272 zero, since that is special case.
273
Theodore Ts'of0b8c872001-05-09 06:03:58 +00002742001-05-09 Theodore Tso <tytso@valinux.com>
275
276 * super.c (release_orphan_inodes): Add gettext quoting around
277 "Truncating" and "Clearing" for i18n.
278
Theodore Ts'ob9852cd2001-05-05 05:14:59 +00002792001-05-05 Theodore Tso <tytso@valinux.com>
280
Theodore Ts'oe39ac922001-05-05 06:47:24 +0000281 * util.c (fatal_error): Use the correct magic number when checking
282 the magic number for the io_channel data structure. Also
283 remove extraneous call to io_channel_flush() that was left
284 over from an editing session.
285
Theodore Ts'ob9852cd2001-05-05 05:14:59 +0000286 * pass2.c (check_dir_block): Ignore EXT2_ET_DIR_CORRUPTED errors
287 from ext2fs_read_dir_block().
288
Theodore Ts'o5f629b72001-05-01 20:01:08 +00002892001-05-01 Theodore Tso <tytso@valinux.com>
290
Theodore Ts'oae8160e2001-05-01 21:13:37 +0000291 * unix.c (PRS): Validate the completion information file
292 descriptor so that the completion bar won't get
293 accidentally written onto the disk.
294
Theodore Ts'o5f629b72001-05-01 20:01:08 +0000295 * e2fsck.8.in: Add explanation that you can use mke2fs -n -b
296 blocksize to printout alternate superblock locations.
297
Theodore Ts'obc57f152001-04-26 04:11:46 +00002982001-04-26 Theodore Tso <tytso@valinux.com>
299
300 * unix.c (check_if_skip): If the max_mount_count is zero, treat it
301 as having no count set.
302
Theodore Ts'oef059872001-04-17 00:40:02 +00003032001-04-16 Theodore Tso <tytso@valinux.com>
304
305 * super.c (check_super_block): Fix bad calculation of
306 inodes_per_block, and tighten min/max checks to be a bit
307 more paranoid. Thanks to Andreas Dilger for pointing out
308 this bug.
309
Theodore Ts'o1f735032001-03-29 19:00:50 +00003102001-03-29 Theodore Tso <tytso@valinux.com>
311
Theodore Ts'o15986f72001-03-29 19:22:16 +0000312 * journal.c (mark_buffer_uptodate): Add emulation of kernel
313 function mark_buffer_uptodate.
314
Theodore Ts'o1f735032001-03-29 19:00:50 +0000315 * recovery.c, revoke.c: Synchronize with 0.6b ext3 files.
316
Theodore Ts'od0515212001-02-13 04:32:53 +00003172001-02-12 Theodore Tso <tytso@valinux.com>
318
319 * journal.c (e2fsck_run_ext3_journal): Force a flush of the
320 filesystem and io_channel before replaying the journal.
321
Theodore Ts'oa5c33f22001-01-18 02:34:03 +00003222001-01-17 Theodore Ts'o <tytso@valinux.com>
323
324 * pass1.c (check_blocks): Fix large file checking code so that
325 files > 2GB are considered large files, and restrict
326 directories from being > 2GB.
327
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +00003282001-01-12 Theodore Ts'o <tytso@valinux.com>
329
Theodore Ts'oa9ca2012001-01-12 21:53:25 +0000330 * journal.c (e2fsck_journal_fix_unsupported_super): Remove unused
331 function. Add FIXME notes to e2fsck_get_journal(), from
332 Andreas Dilger.
333
334 * pass1.c (e2fsck_pass1): Cap the maximum legal size of a file by
335 the limit caused by the fact that i_blocks is in 512 byte
336 units, and that the Linux buffer cache also fundamentally
337 assumes 512 byte sectors.
338 Make sure that the journal inode is a regular file, and
339 when clearing an unused journal inode, make sure the
340 icount db is updated.
341
342 * problem.c, problem.h (PR_1_JOURNAL_BAD_MODE): Add new problem code.
343
Theodore Ts'o37b6b292001-01-12 21:16:13 +0000344 * problem.c: For PR_1_RESERVED_BAD_MODE, print a description of
345 the reserved inode. In PR_0_JOURNAL_HAS_JOURNAL, prompt
346 to clear the journal, rather than deleting it (which is
347 more accurate). (From Andreas Dilger.)
348
Theodore Ts'o6a6d3d42001-01-12 21:11:24 +0000349 * journal.c: Make sure all functions which return an error code
350 use the errcode_t return type, and not "int"
351 (e2fsck_journal_release): Add new parameter, "drop",
352 which is used when we just want to deallocate the journal
353 without trying to write out any changes.
354 (mark_buffer_clean): New function
355 (e2fsck_check_ext3_journal): If we fail loading the
356 journal, make sure we free all memory associated with it.
357 (recover_ext3_journal): If we fail to load the journal or
358 initialize the revoke data structures, make sure we free all
359 memory associated with the journal.
360
Theodore Ts'o721edd02001-01-12 21:05:57 +0000361 * message.c (special_inode_name): Add more special inode names
362 (From Andreas Dilger)
363
Theodore Ts'o58a75172001-01-12 20:59:19 +0000364 * util.c (fatal_error): Check to make sure the io_manager data
365 structure is sane before trying to flush the io_channel.
366 (From Andreas Dilger)
367
Theodore Ts'o721edd02001-01-12 21:05:57 +0000368 * mtrace.h, super.c, pass2.c: Minor whitespace cleanups, from
369 Andreas Dilger.
Theodore Ts'o4035f402001-01-12 20:25:50 +0000370
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +0000371 * journal.c (e2fsck_journal_fix_bad_inode): Set pctx->ino to the
372 bad journal number.
373
374 * problem.c (PR_0_JOURNAL_BAD_INODE): Use pctx->ino instead of
375 pctx->num when printing the bad journal inode number.
376
Theodore Ts'o86c627e2001-01-11 15:12:14 +00003772001-01-11 <tytso@snap.thunk.org>
378
Theodore Ts'o5ba23cb2001-01-11 19:15:02 +0000379 * pass1.c (process_block): Remove dead code which was never
380 getting executed.
381
382 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
383 ext2fs_sync_device() instead of using BLKFLSBUF.
384
385 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
386
Theodore Ts'o86c627e2001-01-11 15:12:14 +0000387 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
388 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
389 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
390 ino_t to ext2_ino_t.
391
Theodore Ts'o95a5bc92001-01-11 04:58:21 +00003922001-01-09 <tytso@snap.thunk.org>
393
394 * problem.c: Fix another broken @F vs @f problem.
395
Theodore Ts'o53ef44c2001-01-06 05:55:58 +00003962001-01-06 <tytso@snap.thunk.org>
397
398 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
399 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
400
401 * jfs_user.h: Use more sophisticated inline handling to allow
402 building with --enable-gcc-wall
403
Theodore Ts'od3f35b62001-01-03 13:00:43 +00004042001-01-03 <tytso@snap.thunk.org>
405
Theodore Ts'of18996c2001-01-03 16:57:24 +0000406 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
407 own block; if the journal inode is not in use, and it
408 contains data, offer to clear it.
409
410 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
411 problem code.
412
413 * problem.c: Modified problem table to use a new abbreviations.
414
Theodore Ts'od74edf42001-01-03 19:38:04 +0000415 * message.c: Add @j abbreviation for journal, and @v abbreviation
Theodore Ts'oe9044062001-01-03 15:39:37 +0000416 for device.
Theodore Ts'o1ce64532001-01-03 15:34:20 +0000417
Theodore Ts'occ7067b2001-01-03 13:24:06 +0000418 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
419
Theodore Ts'od3f35b62001-01-03 13:00:43 +0000420 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
421 the journal stored on a reserved inode. Also force a fsck
422 if the journal appears to exist while !NEEDS_RECOVERY, and
423 we forcibly reset the journal.
424
Theodore Ts'of5ae75e2001-01-01 14:52:52 +00004252001-01-01 <tytso@snap.thunk.org>
426
Theodore Ts'o5dd8f962001-01-01 15:51:50 +0000427 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
428 ext2fs_sb with struct ext2_super_block.
429
Theodore Ts'of5ae75e2001-01-01 14:52:52 +0000430 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
431
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +00004322000-12-31 <tytso@snap.thunk.org>
433
434 * jfs_compat.h: Remove uneeded header file.
435
Theodore Ts'ob2f93192000-12-30 20:33:42 +00004362000-12-30 <tytso@snap.thunk.org>
437
Theodore Ts'oc59a7042000-12-31 01:52:03 +0000438 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
439 conflicts with the system header file.
440
Theodore Ts'ob2f93192000-12-30 20:33:42 +0000441 * problem.h: Fixed numbering of pass1 error messages; an extra 0
442 had slipped into some of the numbers. (Pointed out by
443 Andreas Dilger)
444
445 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
446 unnecessary automatic variable. Add explanatory comment
447 about the kernel emulation routines. (Suggested by
448 Andreas Dilger)
449
Theodore Ts'o060b5fb2000-12-13 18:07:23 +00004502000-12-13 Theodore Ts'o <tytso@valinux.com>
451
Theodore Ts'o9b565752000-12-13 18:50:22 +0000452 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
453 journal fields are consistent if any of the superblock
454 fields are set. (Backs out erroneous change made by sct,
455 pointed out by Andreas.)
456
457 * unix.c (main): Clarify coments (no code changes)
458
459 * super.c (release_orphan_inodes): Fix spelling typo in error message.
460
Theodore Ts'o8188c9e2000-12-13 18:39:14 +0000461 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
462 level if we need to set large files flag. Patch from
463 Andreas Dilger.
464
Theodore Ts'o7b59f1e2000-12-13 18:11:44 +0000465 * super.c (check_super_block): If we have any of the compatibility
466 flags set, we need to have a revision 1 filesystem. Most
467 kernels will not check the flags on a rev 0 filesystem
468 and we may have corruption issues because of the
469 incompatible changes to the filesystem. Patch from Andreas
470 Dilger.
471
Theodore Ts'o060b5fb2000-12-13 18:07:23 +0000472 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
473 new problem codes.
474
Theodore Ts'o0e8a9562000-12-09 06:41:25 +00004752000-12-09 <tytso@snap.thunk.org>
476
Theodore Ts'obf2d4992000-12-09 14:46:20 +0000477 * flushb.c: Fix flushb so that it does something other than waste
478 disk space when built on systems with modern header files
479 and add a non-subtle Copyright Licensing restriction so
480 Yann will remove it from the Debian Distribution. (Now
481 violates the Debian Free Software Guidelines, on purpose.)
482
Theodore Ts'of43650c2000-12-09 06:47:56 +0000483 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
484 at the top level, set the JFS debuging level to 2.
485
Theodore Ts'o0e8a9562000-12-09 06:41:25 +0000486 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
487 has been moved to the include/linux directory.
488
489 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
490 support the V2 superblock and revoke processing. The
491 journal.c and revoke.c files are copies from the ext3
492 kernel source.
493
494 * Makefile.in: Added revoke.c to the list of source/object files.
495
Theodore Ts'o133a56d2000-11-17 05:40:49 +00004962000-11-16 Theodore Ts'o <tytso@valinux.com>
497
498 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
499 reporting problems rather than using com_err directly.
500
501 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
502
503 * message.c (expand_percent_expression): Add safety check. If
504 ctx->str is NULL, print "NULL" instead of dereferencing
505 the null pointer.
506
507 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
508 to ext2fs_block_iterate2, to support 64-bit filesizes and
509 to speed things up slightly by avoiding the use of the
510 ext2fs_block_iterate's compatibility shim layer.
511
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +00005122000-10-30 <tytso@snap.thunk.org>
513
514 * util.c (get_backup_sb): Calculate backup superblock correctly
515 when the blocksize is > 1k.
516
Theodore Ts'o241f2242000-10-26 20:42:07 +00005172000-10-26 <tytso@snap.thunk.org>
518
519 * jfs.h, jfs_compat.h, journal.c: Updated to include the
520 definition of the new journal superblock format; still
521 only supports V1 superblocks for now. (From sct)
522
Theodore Ts'ob09a4b02000-10-24 21:16:09 +00005232000-10-24 <tytso@snap.thunk.org>
524
Theodore Ts'o83949022000-10-25 01:38:50 +0000525 * super.c (release_inode_block, release_inode_blocks,
526 release_orphan_inodes): Add code to deal with truncating
527 inodes which are still in use (but which are on the orphan
528 list because they need truncation).
529
530 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
531 PR_0_ORPHAN_CLEAR_INODE, and remove
532 PR_0_ORPHAN_INODE_INUSE.
533
534 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
535 a message when the journal is being recovered.
536
Theodore Ts'ob09a4b02000-10-24 21:16:09 +0000537 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
538 journal inode, if it is in use.
539
Theodore Ts'oadfca562000-09-12 21:24:36 +00005402000-09-12 <tytso@valinux.com>
541
542 * extend.c:
543 * flushb.c: Add include of nls-enable.h which is necessary so that
544 they can compile correctly.
545
Theodore Ts'occ96b2b2000-08-22 21:30:11 +00005462000-08-22 <tytso@valinux.com>
547
Theodore Ts'o2575fb02000-08-22 21:50:04 +0000548 * unix.c (main): If we're doing a read-only check, skip the
549 journal playback, but don't abort the e2fsck run.
550
Theodore Ts'o99a2cc92000-08-22 21:41:52 +0000551 * super.c (release_orphan_inodes): Fix typo; should do bounds
552 checking on next_ino instead of ino.
553
554 * jfs_compat.h (J_ASSERT):
555 * journal.c (e2fsck_run_ext3_journal):
556 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
557
Theodore Ts'o243dc312000-08-22 21:37:47 +0000558 * unix.c: Use fatal_error() instead of exit() whenever possible.
559 Also fix the fsck exit codes so that we use FSCK_USAGE
560 when it is appropriate. Rename global_signal_ctx to
561 e2fsck_global_ctx and let it be exported globally.
562
Theodore Ts'occ96b2b2000-08-22 21:30:11 +0000563 * util.c (fatal_error): Try to flush the I/O manager before
564 forcing an exit.
565
Theodore Ts'oecf1b772000-08-20 22:06:31 +00005662000-08-20 <tytso@valinux.com>
567
568 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
569 e2fsck_check_ext3_journal to smash the journal because
570 journal->j_transaction_sequence wasn't getting
571 initialized.
572
573 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
574 call to e2fsck_clear_recover from recover_ext3_journal to
575 after the filesystem has been closed and reopened.
576 Otherwise, the superblock in the filesystem handle will
577 probably be stale, and will overwrite the newer version of
578 the superblock written by the log recovery.
579
580 * message.c (expand_inode_expression): Add support for %Iu and %Ig
581
582 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
583
584 * super.c (release_orphan_inodes, release_inode_block,
585 release_inode_blocks): Update the block group descriptor
586 counts when freeing the orphan inode. Use
587 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
588
589 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
590 attempted to reopen the filesystem using the device name
591 instead of the filesystem name.
592
Theodore Ts'o80bfaa32000-08-18 15:08:37 +00005932000-08-18 <tytso@valinux.com>
594
595 * Makefile.in: Update the make dependencies
596
597 * problem.c, problem.h: Add the problem codes:
598 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
599 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
600 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
601 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
602
603 * super.c (release_inode_blocks, release_orphan_inodes,
604 check_super_block): Add support for clearing orphaned
605 inodes from the unmounted filesystem.
606
607 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
608 check; this is now handled in check_super_block ---
609 non-journaled filesystems can use the orphan list in the
610 future. Also, move the the re-opening of the filesystem
611 to e2fsck_run_ext3_journal().
612
Theodore Ts'o3b5386d2000-08-14 14:25:19 +00006132000-07-12 Andreas Dilger <adilger@turbolinux.com>
614
615 * journal.c: implement loading of ext3 journal for recovery code
616
617 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
618 Add journal problems.
619
620 * recovery.c (journal_recover): user-space ext3 journal recovery code
621
622 * unix.c (main) : check journal and do recovery in separate steps
623
Theodore Ts'ob8d164c2000-08-08 03:17:04 +00006242000-08-07 <tytso@snap.thunk.org>
625
626 * unix.c (calc_percent): Make sure that we don't take a floating
627 exception if the max value is zero. (should normally
628 never happen, but...)
629
Theodore Ts'of9e67062000-07-13 23:25:54 +00006302000-07-13 <tytso@valinux.com>
631
632 * Release of E2fsprogs 1.19
633
Theodore Ts'o17390c02000-07-07 04:13:21 +00006342000-07-06 Theodore Ts'o <tytso@valinux.com>
635
636 * unix.c (check_if_skip): Modify algorithm for checking
637 s_max_mnt_count to match with the kernel. (If
638 s_max_mnt_count is negative, ignore the mnt_count check.)
639
640 * unix.c (e2fsck_update_progress): Adjust the width of the
641 progress bar dynamically, based on the filesystem name
642 that we need to display.
643
644 * unix.c (main): If the ext3 needs_recovery flag is set, call
645 e2fsck_run_ext3_journal() and then restart the e2fsck run.
646
647 * journal.c (e2fsck_run_ext3_journal): New file which contains
648 logic to recover the ext3 journal. This version relies on
649 the kernel being able to mount the filesystem in order to
650 run the journal.
651
Theodore Ts'o92269042000-07-05 18:25:59 +00006522000-07-05 Theodore Ts'o <tytso@valinux.com>
653
654 * unix.c (e2fsck_update_progress): Only save and check the last
655 percentage after multiplying it by 10, nor 1000, since we
656 only need to save values to a tenth of a percent (and the
657 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +0000658 Also, re-arrange the logic so that we do the time
659 check only after doing the percentage check, and we
660 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +0000661
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +00006622000-07-04 Theodore Ts'o <tytso@valinux.com>
663
664 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
665 field is set; if so, clear it, so that ext3 mounting code
666 won't get confused by the fact that we've cleared out the
667 orphaned inodes.
668
Theodore Ts'obbd47d72000-06-10 19:21:33 +00006692000-06-10 Theodore Ts'o <tytso@valinux.com>
670
671 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
672 checking for a "should never happen case".
673
674 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
675 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
676
Theodore Ts'od647a1e2000-05-27 14:40:09 +00006772000-05-27 Theodore Ts'o <tytso@valinux.com>
678
679 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
680 (cw@foof.org) which checks to see if special devices have
681 a non-zero size, and deals with it.
682
683 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
684
Theodore Ts'o1d279212000-05-19 02:38:14 +00006852000-05-18 Theodore Ts'o <tytso@valinux.com>
686
687 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
688 well.
689
Theodore Ts'o4ea0a112000-05-08 13:33:17 +00006902000-05-08 Theodore Ts'o <tytso@valinux.com>
691
692 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
693 code.
694
695 * super.c (check_super_block): If the OS type in the superblock is
696 the Hurd, check to see if the filetype feature is set, and
697 offer to clear it if so. This needs to be done since the
698 Hurd doesn't properly support the filetype feature.
699 (And since the hurd allows the transmogrification of files
700 to special files and vice versa --- for no good reason
701 that I can understand --- it can't support the filetype
702 feature for the forseeable future, either.)
703
Theodore Ts'o373b8332000-04-03 16:22:35 +00007042000-04-03 Theodore Ts'o <tytso@valinux.com>
705
706 * unix.c: For platforms that don't define optarg.h, manually
707 define optarg and optind.
708
Theodore Ts'o01fbc702000-04-03 13:57:21 +00007092000-03-20 Theodore Ts'o <tytso@valinux.com>
710
711 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
712 Check for the append-only as well as the immutable flag.
713
714 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
715 append-only flag. Fix comment for compression flag.
716
Theodore Ts'o06012322000-02-12 20:12:43 +00007172000-02-12 <tytso@snap.thunk.org>
718
719 * unix.c (e2fsck_update_progress): Limit the number of updates to
720 the progress bars to 8 times a second. This allows a 9600
721 baud console link to keep up.
722
Theodore Ts'o19178752000-02-11 15:55:07 +00007232000-02-11 <tytso@snap.thunk.org>
724
725 * unix.c (main): If compression is enabled on the filesystem,
726 print a warning message (for now).
727
728 * message.c: Add new compression shortcut: @c == compress
729
730 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
731
732 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
733 set, check to see if the filesystem supports compression.
734 If it does pass this information down to process_block()
735 so it can treat the compressed block flag words
736 correctly. If not, offer to clear the flag, since it
737 shouldn't be set.
738 (process_block): If an inode has the compressed inode flag
739 set, allow EXT2FS_COMPRESSED_BLKADDR.
740
741 * pass1b.c (process_pass1b_block, delete_file_block,
742 clone_file_block):
743 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
744 see if the block can be skipped.
745
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00007462000-02-08 <tytso@snap.thunk.org>
747
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +0000748 * util.c: Make resource tracking message more concise.
749
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +0000750 * e2fsck.h:
751 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
752 ctx->block_illegal_map, since it's not needed by pass1,
753 and pass1b has been modified to calculate it manually if
754 needed. This reduces the memory footprint needed by e2fsck.
755
756 * pass1b.c (check_if_fs_block): New static function which returns
757 whether or not a block overlaps with filesystem metadata.
758 This replaces consulting the block_illegal_map bitmap.
759
Theodore Ts'o28ffafb2000-02-08 19:14:02 +0000760 * Makefile.in: Call sync after finishing building all in this
761 directory.
762
763 * unix.c (PRS): sync the filesystem before trying to use
764 BLKFLSBUF, to minimize the chance of causing dirty blocks
765 to get dropped.
766
767 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
768 a Linux/i386 system.
769
770 * pass3.c (check_directory): Only do the loop detection algorithm
771 if we've searched over 2048 parent directories and haven't
772 found the end yet. This means that in the common case, we
773 don't allocate or clear the inode_loop_detection bitmap,
774 which for large systems, merely clearing the bitmap for
775 each directory was turning out to be quite expensive.
776 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
777 identifying this problem.
778
Theodore Ts'o0c4a0722000-02-07 03:11:03 +00007792000-02-06 Theodore Ts'o <tytso@valinux.com>
780
781 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
782 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
783 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
784 unix.c, util.c: Add Internationalization support as
785 suggested by Marco d'Itri <md@linux.it>.
786
Theodore Ts'o80e808f2000-02-02 16:19:59 +00007872000-02-02 Theodore Ts'o <tytso@valinux.com>
788
789 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
790 linux/fs.h
791
Theodore Ts'o894edb22000-01-18 21:27:12 +00007922000-01-18 Theodore Ts'o <tytso@valinux.com>
793
794 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
795 we need a separate DEPLIBUUID that can be used in
796 Makefile's dependency rules.
797
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +00007981999-11-23 <tytso@valinux.com>
799
800 * e2fsck.8.in: Update language about where to find a backup
801 superblock.
802
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00008031999-11-19 <tytso@valinux.com>
804
Theodore Ts'o86a63e91999-11-23 13:52:48 +0000805 * pass1.c (process_inodes): Add shortcut handling; if
806 process_inodes_count is zero, return right away, to avoid
807 calling qsort with a non-positive count.
808
Theodore Ts'oec8d2c31999-11-19 18:52:36 +0000809 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
810 to print Delete as ^?
811
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +0000812 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
813 the source directory.
814
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00008151999-11-10 <tytso@valinux.com>
816
Theodore Ts'ocd086361999-11-10 16:00:39 +0000817 * Release of E2fsprogs 1.18
818
8191999-11-10 <tytso@valinux.com>
820
Theodore Ts'oa846d2f1999-11-10 15:50:24 +0000821 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
822 means the answer is assumed to be no in preen mode. This
823 is now used in the PR_1_SET_IMMUTABLE code, so that in
824 preen mode we ignore these inodes and just print a warning
825 message.
826
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +00008271999-11-09 <tytso@valinux.com>
828
829 * pass1.c (e2fsck_pass1): If the filesystem does not support
830 imagic inodes, if an inode has the imagic flag set, offer
831 to clear the imagic flag. If a valid device/fifo/socket
832 has the immutable flag set, call the new helper function
833 check_immutable() to offerto clear the immutable flag.
834
835 * pass2.c (check_filetype): Use the new ext2_file_type() helper
836 function instead of calculating the file_type information
837 manually.
838
839 * pass3.c (e2fsck_reconnect_file): When adding a link to
840 lost+found, calculate the filetype information so that
841 ext2fs_link() can use the information if applicable.
842 (get_lost_and_found): Create the /lost+found directory
843 with the correct filetype information if applicable.
844
845 * util.c (ext2_file_type), e2fsck.h: New function which returns
846 the directory entry file type information given the
847 inode's mode bits.
848
849 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
850 and PR_1_SET_IMMUTABLE.
851
Theodore Ts'o7142db01999-11-08 18:46:54 +00008521999-11-07 <tytso@valinux.com>
853
854 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
855 to prevent it from getting freed twice.
856
8571999-11-06 <tytso@valinux.com>
858
859 * unix.c (main): Close the filesystem before freeing the context,
860 so that in the event of a free()-related segmentation
861 violation, the filesystem is properly closed and written
862 out.
863
8641999-10-27 <tytso@valinux.com>
865
866 * e2fsck.c (e2fsck_reset_context): When freeing
867 ctx->inode_reg_map, we weren't zero'ing
868 ctx->inode_reg_map, which could cause a segfault later on
869 in the e2fsck run.
870
8711999-10-26 <tytso@valinux.com>
872
873 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
874 matches the standard convention).
875
Theodore Ts'of68aa411999-10-26 14:20:22 +00008761999-10-26 <tytso@valinux.com>
877
Theodore Ts'o28e11941999-10-26 18:17:20 +0000878 * Release of E2fsprogs 1.17
879
8801999-10-26 <tytso@valinux.com>
881
Theodore Ts'of68aa411999-10-26 14:20:22 +0000882 * message.c (safe_print): Make safe_print take an char instead of
883 an unsigned char to fix gcc warnings.
884
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00008851999-10-25 <tytso@valinux.com>
886
Theodore Ts'oe6597041999-10-26 02:30:16 +0000887 * util.c: For NT portability, don't redefine getchar(), since
888 stdio defines that. Instead we introduce a new
889 abstract macro read_a_char() which is #defined to the
890 right function as necessary.
891
Theodore Ts'oc40db6d1999-10-25 21:03:34 +0000892 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
893
894 * pass2.c (check_dir_block): Require that the length of the
895 directory entry be at least 12 bytes. Check to see if the
896 filename is zero-length, and flag that as an error.
897
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00008981999-10-22 <tytso@valinux.com>
899
Theodore Ts'o614fdfd1999-10-23 03:19:51 +0000900 * Release of E2fsprogs 1.16
901
9021999-10-22 <tytso@valinux.com>
903
Theodore Ts'o7847c1d1999-10-22 15:11:42 +0000904 * pass2.c (check_filetype): If the filetype filesystem feature is
905 not set, and a directory entry has a dirent feature, offer
906 to clear it (since 2.0 kernels will do complain will
907 interpret it as a very large name length field).
908
909 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
910
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00009111999-10-21 <tytso@valinux.com>
912
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +0000913 * e2fsck.8.in: Update man page to use a more standard format (bold
914 option flags and italicized variables), as suggested by
915 Andreas Dilger (adilger@enel.ucalgary.ca)
916
Theodore Ts'oaa4115a1999-10-21 19:33:18 +0000917 * pass4.c (e2fsck_pass4): If an inode is set in the
918 inode_imagic_map bitmap, don't check to see if it is
919 disconnected from the inode tree (because it almost
920 certainly will be). Free inode_imagic_map at the end of
921 pass 4.
922
923 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
924 feature is set, check the directory entry's filetype
925 information field, and fix/set it if necessary.
926 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
927 of pass 2.
928
929 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
930 information for inode_reg_map and inode_imagic_map, which
931 indicates which inodes are regular files and AFS inodes,
932 respectively.
933 Since only the master superblock is written during a
934 restart, force that superblock to be used after a restart;
935 otherwise changes to the block group descriptors end up
936 getting ignored.
937
938 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
939 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
940 which supresses the problem message if e2fsck is run with
941 the -n option.
942
943 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
944 new problem codes.
945
946 * message.c (expand_dirent_expression): Add support for %dt which
947 prints the dirent type information.
948
949 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
950 and inode_imagic_map).
951
952 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
953 to the context structure.
954
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +00009551999-09-24 <tytso@valinux.com>
956
957 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
958 e2fsprogs easier to port to non-Unix platforms.
959
9601999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +0000961
962 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
963 internal and external inode counts in sync when we
964 decremented an inode whose link count was already zero.
965 Now we skip incrementing or decrementing both link counts
966 if we would cause an overflow condition.
967 (expand_dir, expand_dir_proc): Change where we update the
968 inode block count and size files so that the block count
969 field is updated correctly when we create an indirect block.
970
Theodore Ts'o78cf0541999-10-20 18:29:18 +00009711999-08-05 <tytso@valinux.com>
972
973 * super.c (check_super_block): Check to see whether the
974 inodes_per_group value in the superblock is insanely too
975 high.
976
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00009771999-08-02 <tytso@valinux.com>
978
979 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
980 the block also shares data with the fs metadata when
981 the count drops to 1, since the block should still be
982 cloned, as fs metadata isn't included in the count.
983
9841999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +0000985
986 * Release of E2fsprogs 1.15
987
Theodore Ts'ob55199e1999-07-19 15:37:46 +00009881999-07-19 <tytso@valinux.com>
989
990 * unix.c (usage): Add minimalist emergency help to the usage
991 message.
992
Theodore Ts'o5596def1999-07-19 15:27:37 +00009931999-07-18 <tytso@valinux.com>
994
995 * unix.c: Add support for calculating a progress bar if the -C0
996 option is given. The function e2fsck_clear_progbar()
997 clears the progress bar and must be called before any
998 message is issued. SIGUSR1 will enable the progress bar,
999 and SIGUSR2 will disable the progress bar. This is used
1000 by fsck to handle parallel filesystem checks. Also, set
1001 the device_name from the filesystem label if it is
1002 available.
1003
1004 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
1005 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
1006 structure which contains the last tenth of a percent
1007 printed for the user.
1008
1009 * message.c (print_e2fsck_message): Add call to
1010 e2fsck_clear_progbar().
1011
1012 * pass1.c (e2fsck_pass1):
1013 * pass2.c (e2fsck_pass2):
1014 * pass3.c (e2fsck_pass3):
1015 * pass4.c (e2fsck_pass4):
1016 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
1017 printing the resource tracking information.
1018
1019 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
1020 an error in the bitmaps, suppress printing the progress
1021 bar using the suppression flag for the remainder of the
1022 check, in order to clean up the display.
1023
Theodore Ts'o74033351999-07-01 03:00:47 +000010241999-06-30 <tytso@valinux.com>
1025
1026 * unix.c (check_mount): Clean up the abort message displayed when
1027 the filesystem is mounted and either stdout or stdin isn't
1028 a tty.
1029
10301999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +00001031
1032 * e2fsck.h:
1033 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
1034 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
1035 pass1_* be private static functions, and create new
1036 function e2fsck_use_inode_shortcuts which sets and clears
1037 the inode shortcut functions in the fs structure.
1038
1039 * e2fsck.h:
1040 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
1041 exported function.
1042
1043 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
1044 if a disconnected inode has any problems before
1045 connecting it to /lost+found. Bug and suggested fix by
1046 Pavel Machek <pavel@bug.ucw.cz>
1047
10481999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +00001049
1050 * unix.c (main): Add missing space in the disk write-protected
1051 message.
1052
Theodore Ts'od4b0ce01999-06-18 01:09:29 +000010531999-05-22 <tytso@rsts-11.mit.edu>
1054
1055 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
1056 code.
1057
1058 * super.c (check_super_block): Add check to make sure the total
1059 number of inodes is sane, since this can be calculated
1060 from the number of groups times the number of inodes per
1061 group. Offer to correct it if it is incorrect.
1062
Theodore Ts'oe79d1b21999-06-18 01:06:59 +000010631999-03-19 <tytso@rsts-11.mit.edu>
1064
1065 * pass5.c (check_block_end): Fix fencepost condition where when
1066 clearing the block padding we were missing the last position
1067 in the bitmap.
1068
Theodore Ts'o75d83be1999-05-18 03:16:36 +000010691999-05-17 <tytso@rsts-11.mit.edu>
1070
1071 * unix.c (reserve_stdio_fds): Add safety check in case
1072 reserve_stdio_fds couldn't open /dev/null.
1073
Theodore Ts'o4a9f5931999-03-16 19:32:52 +000010741999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
1075
1076 * util.c (print_resource_track): Use mallinfo if present to get
1077 more accurate malloc statistics.
1078
1079 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +00001080 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00001081
1082 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
1083
10841999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1085
1086 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
1087 that the block group number is printed. Add new prompt,
1088 PROMPT_UNLINK.
1089
10901999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1091
1092 * Release of E2fsprogs 1.14
1093
Theodore Ts'o9e51eca1999-01-09 16:32:31 +000010941999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1095
1096 * message.c (safe_print): New function which prints strings,
1097 converting non-printable characters using the '^' and
1098 M-notation. This function is now used to print directory
1099 name entries and pathnames.
1100
Theodore Ts'o73f17cf1999-01-04 07:35:45 +00001101Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
1102
1103 * unix.c (main): Reset the context before calling ext2fs_close(),
1104 to avoid referencing already freed memory.
1105
Theodore Ts'o556ad131998-12-19 08:10:58 +000011061998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
1107
1108 * Release of E2fsprogs 1.13
1109
Theodore Ts'o5a679c81998-12-03 16:40:38 +000011101998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
1111
1112 * Makefile.in: Updated dependencies.
1113
11141998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
1115
1116 * pass3.c (get_lost_and_found): If the filesystem is not opened
1117 read-only, then force /lost+found to be created if it is
1118 not present.
1119
1120 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
1121 operation.
1122
Theodore Ts'o1dde43f1998-11-14 04:18:28 +000011231998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1124
1125 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
1126 since e2fsck_free_context may reference data in ctx->fs.
1127
1128 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
1129 before checking ctx->fs->dblist.
1130
11311998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1132
1133 * pass1.c (e2fsck_pass1): Use the device check subroutine on
1134 FIFO's and Socket's, so that we catch bogus immutable inodes.
1135
1136 * pass2.c (process_bad_inode): Process bad socket and fifo's.
1137
1138 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
1139 PR_2_BAD_SOCKET.
1140
Theodore Ts'o7f813ba1998-09-03 01:26:03 +000011411998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
1142
1143 * problem.c: Add PR_3_NO_DIRINFO error code.
1144
1145 * super.c (check_super_value): Rename min and max to min_val and
1146 max_val to avoid possible cpp macro conflicts.
1147
1148 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
1149 possible cpp macro conflicts.
1150
1151 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
1152 cpp macro conflicts.
1153 (check_directory): Fix logic to avoid possible core dump
1154 in the case of ext2fs_get_dir_info returning NULL. (By
1155 the time we get here, it should never happen, but...).
1156 Also simply/streamline the control flow of the function.
1157
Theodore Ts'o24fc5031998-08-26 15:23:31 +000011581998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
1159
1160 * unix.c (check_if_skip): Move the "not cleanly mounted" check
1161 ahead of the maximal mount and too long since checked tests.
1162 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
1163 open, so that we don't open the filesystem using the same
1164 file descriptor as stdout or stderr.
1165
Theodore Ts'of75c28d1998-08-01 04:18:06 +000011661998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
1167
1168 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
1169 get to 100%.
1170
1171 * pass3.c (e2fsck_pass3): Change progress accounting to be
1172 consistent with the other e2fsck passes.
1173
1174 * e2fsck.c (e2fsck_run): At the end of each pass, call the
1175 progress function with the pass number set to zero.
1176
1177 * unix.c (e2fsck_update_progress): If the pass number is zero,
1178 ignore the call, since that indicates that we just want to
1179 deallocate any progress structures.
1180
Theodore Ts'o8144d671998-07-09 05:33:18 +000011811998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1182
Theodore Ts'o4a5fa191998-07-09 05:42:45 +00001183 * Release of E2fsprogs 1.12
1184
11851998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1186
Theodore Ts'o8144d671998-07-09 05:33:18 +00001187 * unix.c (main): Fix typo in checking the incompat feature set; it
1188 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
1189
Theodore Ts'o1fad9041998-07-07 05:44:43 +000011901998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
1191
1192 * badblocks.c (test_disk): Don't clear the existing bad blocks
1193 list when using e2fsck -c, since it may cause blocks with
1194 marginal errors to be dropped from the bad blocks list.
1195
Theodore Ts'o874b4d21998-07-06 14:33:12 +00001196Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
1197
1198 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
1199 compatibility with older kernels.
1200
Theodore Ts'o818180c1998-06-27 05:11:14 +000012011998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
1202
1203 * unix.c (e2fsck_update_progress): Remove unused variables.
1204
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +000012051998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
1206
1207 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
1208 collision with LFS API.
1209
1210 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
1211 properly initialized.
1212 (e2fsck_pass1): Don't allow the the boot loader inode to
1213 be a directory (clear the inode mode field if so).
1214
Theodore Ts'oefac9a11998-05-07 05:02:00 +000012151998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
1216
1217 * unix.c (PRS): Added new option -C, which causes e2fsck to print
1218 progress updates so that callers can keep track of the
1219 completion progress of e2fsck. Designed for use by
1220 progress, except for -C 0, which prints a spinning report
1221 which may be useful for some users.
1222
1223 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
1224 scheme (useful for larger filesystems).
1225
1226 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
1227 progress reporting functions.
1228
Theodore Ts'o4c77fe51998-04-30 17:35:59 +000012291998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1230
1231 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
1232 appropriate return type for comparison functions for qsort.
1233
1234 * e2fsck.h: Add #ifdef protection for unistd.h
1235
1236 * super.c: Remove header files already included by e2fsck.h
1237
Theodore Ts'o76f875d1998-04-27 01:41:13 +000012381998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
1239
1240 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
1241 size of the memory to be resized to ext2fs_resize_mem().
1242
Theodore Ts'o7e44f241998-04-01 03:16:29 +000012431998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
1244
1245 * Makefile.in: Change to use new installation directory variables
1246 convention. Fix uninstall rules to take $(DESTDIR) into
1247 account. Remove cat8dir from the installdirs target,
1248 since modern man package don't necessarily put the cat
1249 directory in /usr/man/cat?.
1250
Theodore Ts'o17dba281998-03-30 01:16:26 +000012511998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
1252
1253 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
1254 extern in e2fsck.h to prevent -Wall warnings.
1255
1256 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
1257
12581998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1259
1260 * super.c (check_super_block): Fix broken superblock sanity check
1261 when calculating blocks_per_group if s_log_frag_size !=
1262 s_log_block_size. Since we don't support fragments, this
1263 isn't a bug deal, but it's good to get it fixed.
1264
Theodore Ts'o246501c1998-03-24 16:22:38 +000012651998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
1266
1267 * unix.c: Fix bug in check of feature set, to make sure we can
1268 really fix this filesystem.
1269
1270 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
1271 num field be a 64 bit type. Add the problem code
1272 PR_1_FEATURE_LARGE_FILES
1273
1274 * problem.c: Add table entry for the problem code
1275 PR_1_FEATURE_LARGE_FILES.
1276
1277 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
1278 a problem for directory inodes. (Since it is also
1279 i_size_high now.) If there are no large_files, then
1280 clear the LARGE_FLAG feature flag. If there are
1281 large_files, but the LARGE_FLAG feature flag is not set,
1282 complain and offer to fix it.
1283 (check_blocks): Add support to deal with non-directory
1284 inodes that have i_size_high set (i.e., large_files).
1285 Don't give an error if a directory has preallocated
1286 blocks, to support the DIR_PREALLOC feature.
1287 (process_block, process_bad_block): The blockcnt variable
1288 is a type of blkcnt_t, for conversion to the new
1289 block_iterate2.
1290
1291 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
1292 a problem for directory inodes. (Since it is also
1293 i_size_high now.)
1294
1295 * message.c (expand_inode_expression): Print a 64-bits of the
1296 inode size for non-directory inodes. (Directory inodes
1297 can only use a 32-bit directory acl size, since
1298 i_size_high is shared with i_dir_acl.) Add sanity check
1299 so that trying to print out the directory acl on a
1300 non-directory inode will print zero.
1301 (expand_percent_expression): %B and %N, which print
1302 pctx->blkcount and pctx->num, can now be 64 bit
1303 variables. Print them using the "%lld" format if
1304 EXT2_NO_64_TYPE is not defined.
1305
1306 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
1307
1308 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
1309 field.
1310
Theodore Ts'ob6f79831998-03-09 13:10:37 +00001311Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1312
1313 * pass3.c (fix_dotdot_proc):
1314 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
1315 * message.c (expand_dirent_expression): Mask off the high eight
1316 bits of the directory entry's name_len field, so that it
1317 can be used for other purposes.
1318
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +00001319Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1320
1321 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
1322 include EXT2_FLAG_RESTART anymore, we need to adjust this
1323 routine so that it *does* return in the case of it seeing
1324 EXT2_FLAG_RESTART.
1325
1326 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
1327 done callback function, which may set context abort
1328 flags. So we need to test the context abort flags after
1329 we call ext2_get_next_inode().
1330 (process_inodes): If we abort due out of process_inodes,
1331 do a clean exit by breaking out of the for loop instead of
1332 just returning.
1333
1334 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
1335 considered a SIGNAL mask (i.e., requiring an immediate
1336 abort of processing to restart). FLAG_RESTART just means
1337 that we want to restart once pass 1 is complete.
1338
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +00001339Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1340
1341 * Change the progress function to return an integer; if returns 1,
1342 then the progress function is expected to have set the
1343 e2fsck context flag signalling a user abort, and the
1344 caller should also initiate a user abort.
1345
Theodore Ts'o63c49691998-02-20 05:24:59 +00001346Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1347
1348 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
1349 end_problem_latch() unless there was actually a problem
1350 latched. Simplifies semantics of the latch processing.
1351
Theodore Ts'o43139321998-02-16 22:34:46 +00001352Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1353
1354 * e2fsck.h: Add new field, priv_data to the e2fsck context
1355 structure. It should be used by callers of the e2fsck
1356 functions only, and not by anything in e2fsck itself.
1357
1358Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1359
1360 * super.c: Instead of call ext2fs_get_device_size(), define and call
1361 e2fsck_get_device_size(). (This function may be stubbed
1362 out in special versions of e2fsck.)
1363
1364 * pass3.c, pass4.c: Remove extra calls to the progress function
1365 that weren't needed.
1366
1367 * mke2fs.8.in: Update man page to note that the format of the bad
1368 block file is the same as the one generated by badblocks.
1369
Theodore Ts'o54be2cc1998-02-01 12:58:48 +00001370Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1371
1372 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
1373
1374 * e2fsck.h: Include <time.h> since it is needed
1375
1376 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
1377 processing.
1378
Theodore Ts'o24dd4021998-02-01 00:16:40 +00001379Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1380
1381 * unix.c (main): In the case where the filesystem revision is too
1382 high, print the message about the superblock possibly
1383 being corrupt.
1384
1385 * e2fsck.8.in: Add expanded comments about how the -b option
1386 works.
1387
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +00001388Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1389
1390 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
1391 the ext2-specific header files are in a flat directory.
1392
1393 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
1394 super.c, swapfs.c, unix.c: Explicitly cast all assignments
1395 from void * to be compatible with C++.
1396
1397Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1398
1399 * unix.c (sync_disk): Remove sync_disk and calls to that function,
1400 since ext2fs_close() now takes care of this.
1401
1402Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1403
1404 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
1405 ehandler.c, unix.c: Change use of private to be priv_data,
1406 to avoid C++ reserved name clash.
1407
Theodore Ts'o5be8dc21997-12-01 18:24:10 +00001408Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1409
1410 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
1411 of e2fsck_get_num_dirs, which has been removed.
1412
1413Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1414
1415 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
1416 to compile and install flushb.
1417
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +00001418Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1419
1420 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
1421 to make sure the extra i_blocks in a device are cleared if
1422 the immutable flag is set.
1423
1424 * util.c (print_resource_track): Fix typo which caused the
1425 time/resource tracking to print "Pass 1 :" instead of
1426 "Pass 1: ".
1427
Theodore Ts'ob8647fa1997-11-20 21:52:43 +00001428Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1429
1430 * pass3.c (expand_directory): Fix bug which could cause core dump
1431 when expanding the directory, and the bitmaps hadn't yet
1432 been read in. Also, only use ext2fs_write_dir_block when
1433 writing a directory block, not when writing out a fresh
1434 indirect block.
1435
Theodore Ts'o8039c481997-11-19 21:39:13 +00001436Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1437
1438 * pass1.c (process_bad_block): Fix bug where first_block wasn't
1439 getting incremented, which caused user to get a
1440 "Programming error?" warning if there was a bad block in a
1441 non-primary superblock/group_descriptor. Also fixed
1442 another bug so that ext2fs_bg_has_super() is consulted, to
1443 avoid problems when using a filesystem with the
1444 sparse_groups option set and there are bad blocks at the
1445 beginning of a group which doesn't have a superblock.
1446
Theodore Ts'of8188ff1997-11-14 05:23:04 +00001447Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1448
1449 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
1450 progress indicator function.
1451
1452 * pass1.c (scan_callback): Add call to the progress feedback
1453 function (if it exists).
1454
1455Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1456
1457 * super.c (check_super_block): Skip the device size check if the
1458 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
1459
1460 * iscan.c (main): Don't use fatal_error() anymore.
1461
1462 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
1463 calling fatal_error(0).
1464
1465 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
1466 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
1467
1468 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
1469
1470 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
1471
1472 * problemP.h: New file which separates out the private fix_problem
1473 data structures.
1474
1475 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
1476 swapfs.c util.c: allocate_memory() now takes a e2fsck
1477 context as its first argument, and rename it to be
1478 e2fsck_allocate_memory().
1479
Theodore Ts'o08b21301997-11-03 19:42:40 +00001480Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1481
Theodore Ts'o68227541997-11-04 04:25:22 +00001482 * unix.c (main): Add a special case check for the error code EROFS
1483 and display an appropriate error message for this case.
1484
Theodore Ts'o08b21301997-11-03 19:42:40 +00001485 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
1486 to take the e2fsck context as their first argument.
1487 Change dir_info.c routines to take an e2fsck_context,
1488 renamed them to start with e2fsck_ to avoid namespace
1489 issues, and changed them to store the directory
1490 information inside the e2fsck context.
1491 Added e2fsck_run() which calls all of the e2fsck passes in
1492 the correct order, and which handles the return of abort
1493 codes. Added abort processing, both via setjmp/longjmp
1494 and via flags in the e2fsck context. Use a flag in the
1495 e2fsck context instead of the restart_e2fsck global
1496 variable. Change uses of free and malloc to
1497 ext2fs_free_mem and ext2fs_get_mem.
1498
Theodore Ts'o291c9041997-10-31 06:17:08 +00001499Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1500
1501 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
1502 consistency.
1503
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00001504Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1505
1506 * pass3.c (get_lost_and_found): Check error return of
1507 EXT2_FILE_NOT_FOUND instead of ENOTDIR
1508
1509 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
1510 instead of ENOTDIR
1511
Theodore Ts'o622f5f21997-10-24 04:18:21 +00001512Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1513
Theodore Ts'o519149f1997-10-25 03:49:49 +00001514 * unix.c (PRS): Make the variable which getopt returns into be
1515 an int, so that it won't lose on platforms where char is
1516 unsigned.
1517
Theodore Ts'o622f5f21997-10-24 04:18:21 +00001518 * pass1b.c (clone_file): Fix bug in error reporting in the case
1519 where cs.errcode is non-zero.
1520
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00001521Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1522
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00001523 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
1524 RESOURCE_TRACK around code which uses init_resource_track
1525 and print_resource_track. (Not all systems have timeval)
1526
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00001527 * super.c: Remove excess #includes which are not necessary.
1528
1529 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
1530
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00001531Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1532
1533 * pass*.c, super.c: Massive changes to avoid using printf and
1534 com_err routines. All diagnostic messages are now routed
1535 through the fix_problem interface.
1536
1537Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1538
1539 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
1540 entries.
1541
1542 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
1543 PR_2_DUP_DOT_DOT.
1544
1545Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1546
1547 * problem.c: Added new problem codes for some of the
1548 superblock corruption checks, and for the pass header
1549 messages. ("Pass 1: xxxxx")
1550
1551 * util.c (print_resource_track): Now takes a description
1552 argument.
1553
1554Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1555
1556 * super.c, unix.c, e2fsck.c: New files to separate out the
1557 operating-specific operations out from e2fsck.c.
1558 e2fsck.c now contains the global e2fsck context management
1559 routines, and super.c contains the "pass 0" initial
1560 validation of the superblock and global block group
1561 descriptors.
1562
1563 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
1564 (nearly) all global variables and moved them to the e2fsck
1565 context structure.
1566
1567 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
1568 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
1569 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
1570
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00001571Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1572
1573 * message.c: Add compression for the word "Illegal"
1574
1575 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
1576 PR_2_BAD_BLOCK_DEV
1577
1578Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1579
1580 * pass1.c (pass1, check_device_inode), pass2.c
1581 (process_bad_inode): Use a more stringent test for a valid
1582 device.
1583
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00001584Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1585
1586 * e2fsck.c (check_mount): Add stronger warning message about the
1587 perils of running e2fsck on a mounted filesystem.
1588
Theodore Ts'o024996c1997-06-17 05:38:35 +00001589Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1590
1591 * Release of E2fsprogs 1.11
1592
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00001593Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1594
1595 * pass1.c (mark_table_blocks): Mark the superblock and group
1596 descriptor blocks first, so that any conflicts between
1597 these and the bitmap or inode table blocks is noticed.
1598
1599 * problem.c: Fix message printed out when a block or inode bitmap
1600 conflicts with other fs data, has the correct group number
1601 in it.
1602
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00001603Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1604
1605 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
1606
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001607Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1608
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00001609 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
1610 Hawes (whawes@star.net).
1611
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001612 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
1613 bad blocks command so that all of the filesystem gets
1614 tested in the case where the blocksize 2048 or 4096.
1615
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00001616Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
1617
1618 * Release of E2fsprogs version 1.10
1619
1620Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1621
1622 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
1623 where ext2fs_get_next_inode returns the
1624 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
1625
1626Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1627
1628 * Release of E2fsprogs version 1.09
1629
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00001630Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1631
1632 * Release of E2fsprogs version 1.08
1633
Theodore Ts'o521e3681997-04-29 17:48:10 +00001634Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1635
1636 * pass1b.c (clone_file_block): If we clone a directory, we need to
1637 update the dblist entry so that we check (and correct) the
1638 right directory block.
1639
1640Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1641
1642 * pass1.c (process_block): Don't clear blocks references to
1643 filesystem metadata; let pass 1B handle this case.
1644
1645 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
1646
1647 * pass1b.c (pass1d): Deal with a block which is shared with
1648 filesystem metadata.
1649
1650 * e2fsck.h: Make block_illegal_map be a global variable
1651
1652Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1653
1654 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
1655 feature.
1656 (get_backup_sb): New function which attempts to obtain the
1657 correct backup superblock (if possible).
1658
1659Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1660
1661 * e2fsck.c (main): Check the version of the library, and warn if
1662 the library is out of date; this happens generally due to
1663 users who manually install e2fsprogs.
1664
1665 * pass1.c (pass1_get_blocks): If the passed in inode number for
1666 get_blocks isn't what we're expecting pass back
1667 EXT2_ET_CALLBACK_NOT_HANDLED.
1668
Theodore Ts'o21c84b71997-04-29 16:15:03 +00001669Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
1670
1671 * Release of E2fsprogs version 1.07
1672
1673Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1674
1675 * icount.c: New file which implements an inode count abstraction.
1676 This significantly reduces amount of memory needed to
1677 check really large filesystems.
1678
1679 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
1680 abstraction.
1681
1682Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1683
1684 * dirinfo.c (dir_info_iter): New function which allows iteration
1685 over the directories in the dir_info map.
1686
1687 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
1688 over all directories in the dir_info structure, instead of
1689 iterating all inodes looking for directories, and then
1690 looking up the directories using get_dir_info().
1691
1692Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1693
1694 * pass1.c (pass1, process_block):
1695 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
1696 manual code to manage the directory block list information.
1697
1698 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
1699 (deallocate_inode): Call the ext2 library routine
1700 ext2_inode_has_valid_blocks() instead of
1701 inode_has_valid_blocks().
1702
1703 * swapfs.c (swap_inodes): Add check so that we don't try to call
1704 swap_inode_blocks unless the inode has valid blocks.
1705 (Otherwise a long fast symlink might cause
1706 swap_inode_blocks to erroneously get called.)
1707
1708Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1709
1710 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
1711 PR_2_DOT_DOT_NULL_TERM.
1712
1713 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
1714 .. entries are null-terminated, since the 2.0 kernel
1715 requires this (for no good reason).
1716
1717Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1718
1719 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
1720 that we can recover from missing inode tables.
1721
1722 * dirinfo.c (get_dir_info): If there are no directories in the
1723 dir_info abstraction, don't core dump (because dir_info is
1724 NULL).
1725
1726 * e2fsck.c (main): Don't try using the backup superblocks if there
1727 aren't any.
1728 (check_super_block): If there are illegal inode table or
1729 bitmaps, set the filesystem as being in error.
1730
1731Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1732
1733 * pass2.c (check_dir_block): Added check to make sure that rec_len
1734 is a a multiple of 4 (so that the directory entries are
1735 4-byte aligned).
1736
1737Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1738
1739 * Makefile.in (uninstall): Uninstall all programs in the PROGS
1740 line.
1741 (PROGS): Don't build and install the extend program by
1742 default.
1743
1744
1745Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1746
1747 * pass1.c (process_inodes): Make sure the stashed_ino variable is
1748 saved and restored as well.
1749 (pass1): For fast sym links, skip the check_blocks
1750 processing step altogether.
1751
1752Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1753
1754 * problem.c, message.c: New files, to completely refurbish how
1755 filesystem problems are reported to the user. The
1756 diagnostic messages are now encoded out in an easily
1757 customizable, extensible format. The messages printed out
1758 in preen mode are all on one line, and contain the device
1759 name.
1760
1761Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1762
1763 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
1764 deleted files.
1765
1766 * pass1.c (pass1): Ignore missing inode table errors during the
1767 scan, and just skip past those inodes.
1768
1769 * pass3.c (check_root): Remove root_ino argument, and assume that
1770 the root inode must be EXT2_ROOT_INO. Move responsibility
1771 of setting the parent of the root inode in the directory
1772 inode structure to pass2().
1773
1774 * pass2.c (check_dir_block): Don't allow links to the root
1775 directory.
1776
1777 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
1778 since the inode is no longer used.
1779
1780Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1781
1782 * e2fsck.c (main): If the superblock magic number is wrong, or the
1783 block group fails a sanity check, then automatically
1784 restart trying to use the backup superblocks.
1785
1786 * pass1.c (mark_table_blocks): Make the inode tables ahead of
1787 everything else; in the case where a bitmap block overlays
1788 the inode table, the inode table should take precedence.
1789
1790 * pass2.c (maybe_clear_entry): Make the deleted/unused error
1791 message fit on one line, since the error can happen during
1792 a preen pass. (We eventually need to revamp the whole
1793 e2fsck error reporting and prompting system, but that's a
1794 job for another day.)
1795
1796Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1797
1798 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
1799 for the benefit of the inode scan functions.
1800
1801 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
1802 indicating that an inode is in a bad block, mark that
1803 inode as being used, as well as in the inode "bb" map.
1804
1805 * pass2.c (maybe_clear_entry): New function which generalizes the
1806 error cases when a directory entry needs to be cleared.
1807 (check_dir_block): If an inode is in the "bb" map, offer
1808 to clear the directory entry, since the inode is in a bad
1809 block.
1810
1811 * pass4.c (pass4): If an inode is marked as used, but is is marked
1812 in the "bb" map, don't process it as a disconnected inode.
1813
1814Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1815
1816 * Release of E2fsprogs version 1.06
1817
Theodore Ts'o5c576471997-04-29 15:29:49 +00001818Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1819
1820 * e2fsck.c (main): Print out the version number of the shared
1821 library when using the -V option.
1822
1823 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
1824 consistency's sake.
1825
1826 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
1827 out the backup superblocks when we know we have a valid
1828 filesystem.
1829
1830Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1831
1832 * util.c (preenhalt): Make it explicit on preenhalt that running
1833 e2fsck manually means without the -a or -p flag.
1834
1835Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1836
1837 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
1838 (Linux/FT actually sets the mode bits, so we have to
1839 handle it specially.)
1840
1841 * e2fsck.c (check_if_skip): Print a message if the filesystem is
1842 just dirty, so that the user knows that it's about to be
1843 checked (since this will take a while).
1844
1845Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1846
1847 * pass4.c: If a disconnected inode is zero-length, prompt to
1848 delete it instead of connecting it to lost+found.
1849
1850Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1851
1852 * Release of E2fsprogs version 1.05
1853
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00001854Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1855
1856 * pass4.c (pass4): If the user refuses to connect an unattached
1857 inode to lost+found, don't try to set i_links_count. This
1858 is bad, since if the user says yes, the inode will be
1859 marked as unused, which is not necessarily the right
1860 thing, especially since the rest of the cleanup doesn't
1861 happen here.
1862
1863 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
1864 dellocating an inode. (Not strictly necessary, but...)
1865
1866 * pass4.c (pass4): Add "bonehead" explanation to the "programming
1867 error" message.
1868
1869Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1870
1871 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
1872 byte-swap the filesystem so that it is normalized. -S
1873 will byte-swap the filesystem regardless of its current
1874 byte-order.
1875
1876 * swapfs.c: New file, which will byte-swap a filesystem.
1877
1878Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1879
1880 * pass1.c (pass1): Change handling on files with non-zero dtime
1881 and non-zero i_link_count; before we treated them as
1882 deleted file per botched ext2 0.3c kernel behavior. We
1883 now clear dtime instead.
1884
1885Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1886
1887 * e2fsck.c (main): If e2fsck sets the clean bit, even if
1888 nothing else is changed, make sure FSCK_NONDESTRUCT is
1889 set (since after all having the filesystem set to
1890 invalid is an error. :-)
1891
1892Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1893
1894 * pass1.c (process_block): Make sure that meta data doesn't get
1895 accidentally set in the dir_blocks array (which could
1896 happen in some error condtions).
1897
1898 * pass1.c (pass1):
1899 * pass2.c (process_bad_inode): Check for fragments in a
1900 OS-independent fashion.
1901
1902Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1903
1904 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
1905 cleanup for the filesystem.
1906
1907Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1908
1909 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
1910
Theodore Ts'o62c06f71997-04-29 14:34:47 +00001911Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1912
1913 * Release of E2fsprogs version 1.04
1914
1915Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1916
1917 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
1918 try "e2fsck -b 8193" before allowing e2fsck to relocate
1919 inode table blocks.
1920
1921 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
1922 depending on the option to configure. Added targets for
1923 e2fsck.static and e2fsck.shared for people who want to
1924 build a static or shared variant manually.
1925
Theodore Ts'o7f88b041997-04-26 14:48:50 +00001926Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
1927
1928 * Release of E2fsprogs version 1.03
1929
1930Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
1931
1932 * e2fsck.c (show_stats): Don't use floating point to display
1933 percentage of non-contiguous files, as different libc
1934 handle result truncation differently, and this causes the
1935 test suite to bomb out depending on which libc you are
1936 using.
1937
1938 * util.c (allocate_memory): Fix error message to omit extraneous
1939 %%s.
1940
1941Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
1942
1943 * pass4.c (pass4):
1944 * pass2.c (check_dir_block):
1945 * pass1.c (pass1): Add support for dynamic first inode revision.
1946
1947Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
1948
1949 * pass3.c (check_root): Fix spelling typo
1950
1951Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
1952
1953 * e2fsck.c (check_super_block): If the superblock fails certain
1954 internal consistency checks, exit with a fatal error after
1955 printing the "superblock is corrupt message".
1956
Theodore Ts'o74becf31997-04-26 14:37:06 +00001957Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
1958
1959 * Release of E2fsprogs version 1.02
1960
1961Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
1962
1963 * pass1.c (process_block): Check to see if a file is "fragmented".
1964 i.e., non-contiguous. Note that any file which is larger
1965 than the block group is guaranteed to be non-contiguous.
1966 We may want to use a different hueristic for deciding
1967 whether or not a file is "fragmented".
1968
1969 * e2fsck.c (show_stats): Print statistics of how many
1970 non-contiguous files are on the system.
1971
1972Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
1973
1974 * badblocks.c (read_bad_blocks_file, test_disk): Fold
1975 functionality of test_disk() (which runs badblocks) into
1976 read_bad_blocks_file(); test_disk() now calls
1977 read_bad_blocks_file() with a NULL bad_blocks_file
1978 argument.
1979
1980Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
1981
1982 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
1983 #if defined(linux). The latter won't work if we're
1984 compiling -ansi.
1985
Theodore Ts'o297f47a1997-04-26 14:25:20 +00001986Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
1987
1988 * e2fsck.c (check_mount): For Linux systems, the check to see if
1989 the root is mounted read-only has to be done for all
1990 filesystems, not just for the root filesystem, due to the
1991 way that some /etc/rc scripts are set up.
1992
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001993Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
1994
1995 * Makefile.in (install): Strip programs when they are installed.
1996 (e2fsck): Build e2fsck statically.
1997
1998Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
1999
2000 * util.c (preenhalt): Preenhalt now takes an argument, which is an
2001 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
2002 flag in the superblock in cases where preenhalt is called.
2003 All calls to preenhalt() were changed to either
2004 preenhalt(fs) or preenhalt(NULL) in a few cases where the
2005 fs pointer was not available. (Most notable, for block
2006 read/write errors.)
2007
2008Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
2009
2010 * ehandler.c:
2011 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
2012
2013Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
2014
2015 * e2fsck.c (show_stats): Show statistics about how many inodes
2016 have indirect, doubly indirect, and triply indirect
2017 blocks. Allow up to 8 digits for statistics, instead of
2018 merely 6, so things look pretty for large filesystems.
2019
2020 * pass1.c (pass1): Keep statistics about indirect, doubly
2021 indirect, and triply indirect blocks.
2022
2023 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
2024 pass 1.
2025
2026Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
2027
2028 * util.c, ehandler.c: Move #include of <sys/resource.h> after
2029 #include of "e2fsck.h", since sys/resource.h may depend on
2030 sys/time.h, which is #included in e2fsck.h.
2031
2032Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
2033
2034 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
2035 function to determine if the device is mounted.
2036
2037 * e2fsck.c (main): Add better error messages if ext2fs_open()
2038 fails.
2039
2040Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
2041
2042 * pass1.c (check_blocks): If we're clearing a directory, clear
2043 pb.is_dir so we don't do the following check of making
2044 sure the directory size matches; this is pointless, since
2045 we've already cleared the inode.
2046
2047Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2048
2049 * pass1.c (bad_primary_block): New function, called by
2050 process_bad_block, which explains the facts of life to the
2051 user when a block in the primary superblock or primary
2052 group descriptors is bad.
2053
2054 * pass2.c (check_dot): Handle the case where the first directory
2055 entry is used, but not ".".
2056
2057 * pass2.c (check_dotdot): Handle the case where the second directory
2058 entry is used, but is not "..".
2059
2060Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2061
2062 * e2fsck.c (check_super_block): Get the size of the physical
2063 device and if it is smaller than the reported size of the
2064 filesystem, report an error.
2065
2066Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
2067
2068 * e2fsck.c (check_if_skip): Print the number of allocated files and
2069 blocks on clean filesystems.
2070
2071Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
2072
2073 * e2fsck.8: Updated date and version number.
2074
2075Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
2076
2077 * pass1.c (check_blocks): Check that directory size matches *exactly*
2078 the count of allocated blocks.
2079
2080Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
2081
2082 * pass1b.c (pass1d): Free the shared[] array when we're done with
2083 it to avoid a memory leak.
2084
2085 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
2086 block_dup_map.
2087
2088 * pass2.c (process_bad_inode): When clearing the inode, make sure
2089 the pathname is freed, to prevent a memory leak.
2090
2091 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
2092 when we're finished with them.
2093 (check_block_bitmaps): Free free_array when we're finished
2094 with them.
2095
2096 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
2097 linking the executable.
2098
2099 * pass2.c (process_bad_inode): Even on OS's that don't support the
2100 fragment fields, make sure the Linux equivalent fields are
2101 set to zero. If an OS wants to reuse these fields, which
2102 is probably a bad idea (although we may get desperate in
2103 the future) this code will have to be changed.
2104
2105 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
2106 on the inode field, and then blockcnt field. This is just
2107 to keep the ordering of dir_blocks the same on all
2108 platforms when there are more than on missing directory
2109 blocks, which are indicated directories with holes, which
2110 are indicated with the block number being set to zero.
2111
2112Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2113
2114 * pass1.c (check_blocks, process_block): check_blocks() modified
2115 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
2116 the inode is a directory. process_block() now checks to
2117 see if a directory has a "hole", or missing block. If so,
2118 this fact is recorded in the directory block list so that
2119 the problem can be resolved in pass #2.
2120
2121 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
2122 allocate new blocks for directories with "holes". Called
2123 out of check_dir_block if a block in the directory block
2124 list is zero.
2125
2126 * pass3.c (get_lost_and_found): Move location of free(block) to
2127 prevent possible memory leak.
2128
2129Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2130
2131 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
2132 instead of alloca() --- alloca is not portable! Check to
2133 make sure the filename is not longer than EXT2_NAME_LEN,
2134 and offer to fix it by truncating it, since it should
2135 never happen.
2136
2137 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
2138 not portable!! In any case putenv() in some systems must
2139 take a static character array or malloc()'ed memory;
2140 passing memory allocated using alloca() to putenv() is not
2141 advisable.
2142
2143 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
2144 alloca() --- alloca() is not portable!!!
2145
2146Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
2147
2148 * pass1b.c (pass1c):
2149 * pass3.c (check_root, get_lost_and_found):
2150 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
2151 to read/write the directory block.
2152
2153Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
2154
2155 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
2156 make sure VMIN and VTIME are set correct.
2157
2158Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
2159
2160 * pass1.c (mark_block_used): Change to be an inline function.
2161 Assume that the block validity checks are already done,
2162 and use the fast variant of the bitmap functions.
2163
2164Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
2165
2166 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
2167 bounds of the bitmaps in advance, and then use the fast
2168 variant of e2fs_test_{block,inode}_bitmap.
2169
2170 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
2171 the bounds checking has already been done earlier.
2172
2173Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
2174
2175 * pass1.c (pass1): Allocate and free the block_illegal_map, which
2176 is used for shortcut processing in process_block.
2177 (mark_table_blocks): Initialize block_illegal_map with the
2178 filesystem blocks.
2179 (describe_illegal_block): New helper function that
2180 describes why a block is illegal.
2181 (process_block): Use block_illegal_map as a shortcut
2182 to determine whether a block is bad. Use
2183 describe_illegal_block to print out why the block is illegal.
2184
2185Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
2186
2187 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
2188
2189 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
2190 <mntent.h> if they don't exist. (Mostly so that "make
2191 depend" works.)
2192
2193 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
2194 it exists).
2195
2196 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
2197 exist.
2198
2199Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2200
2201 * pass2.c (process_bad_inode, check_for_zero_long,
2202 check_for_zero_char): Change long to u32, and char to u8.
2203
2204Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2205
2206 * util.c (inode_has_valid_blocks):
2207 * pass2.c (process_bad_inode):
2208 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
2209 LINUX_S_IS* instead of S_IS*.
2210
2211 * e2fsck.h: Don't #include <sys/stat.h>
2212
2213 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
2214 this program is pretty much useless if BLKFLSBUF isn't
2215 supported.)
2216
2217 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
2218 used.
2219
2220Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
2221
2222 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
2223 to allocate space for file names instead of using fixed size buffers.
2224 (process_bad_inode): Only check inode frag fields if
2225 HAVE_EXT2_FRAGS is defined (by configure).
2226 * pass1.c (pass1): Only check the inode frag fields if
2227 HAVE_EXT2_FRAGS is defined (by configure).
2228
2229 * e2fsck.c (check_mount): Only check for a mounted filesystem if
2230 HAVE_MNTENT_H is defined (by configure).
2231 (PRS): Use alloca to allocate the new path string, instead of
2232 having a fixed size buffer (which was the wrong size anyway).
2233 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
2234 is defined.
2235
2236 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
2237 defined (by configure).
2238
2239 * Makefile.in: Rewritten to conform to GNU coding standards and
2240 support separate compilation directories.
2241
2242Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
2243
2244 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
2245
Theodore Ts'of3db3561997-04-26 13:34:30 +00002246Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
2247
2248 * pass1.c (unwind_pass1): Clear the file type statistics counter
2249 when pass 1 needs to be restarted from scratch.
2250
2251 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
2252 being reallocated to blocks in the next block group,
2253 instead of the current block grup.
2254
2255 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
2256 inode.i_links_count is set.
2257
2258Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
2259
2260 * pass1.c (process_block): Add checks for if the block is
2261 trepassing on a superblock or group descriptor table.
2262
2263Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
2264
2265 * main.c (corrupt_msg): Extend the message which is printed out
2266 when the superblock is corrupt, to include the suggestion
2267 of using the -b option to specify an alternate superblock.
2268
2269Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
2270
2271 * badblocks.c (read_bad_blocks_file): If we are adding or
2272 replacing bad blocks in the bad blocks inode, sanity check
2273 the bad block inode first, and clear out any illegal blocks.
2274
2275 * pass2.c (check_name): Don't bomb out if the attempt to get the
2276 pathname of the containing directory returns an error; the
2277 directory may be too badly damaged to expect that
2278 ext2fs_get_pathname will always succeed. Use "???" if the
2279 pathname can't be obtained (it's only for a printf to the
2280 user anyway).
2281
2282 The name of the containing directory and the bad filename
2283 were incorrectly interchanged in the user message. Fixed.
2284
2285 * pass2.c (check_name, check_dir_block): Use a common static
2286 string for the unknown pathname.
2287
2288Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
2289
2290 * Fixed lots of printf formats to make sure that block and inode
2291 numbers are printed as unsigned integers.
2292
2293Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
2294
2295 * pass5.c (check_block_end): Fix calculation of how the last block
2296 in the block bitmap should be calculated.
2297
2298Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
2299
2300 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
2301 be an ext2fs_inode_bitmap, and free it properly.
2302
2303 * e2fsck.h
2304 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
2305 level to the superblock.
2306
2307Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
2308
2309 * e2fsck.c (usage): Fixed bogus usage message.
2310
2311Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
2312
2313 * pass1.c (process_bad_block): Fixed bug so that blocks in the
2314 backup superblocks and group descriptors are handled gracefully.
2315