blob: 1c7159b9489933ddfd4c29c0c3deeead917f364b [file] [log] [blame]
Theodore Ts'ofb707752001-09-04 15:00:37 -040012001-09-02 Theodore Tso <tytso@thunk.org>
2
3 * Release of E2fsprogs 1.24a
4
Theodore Ts'o109624a2001-08-31 00:59:55 -040052001-08-30 Theodore Tso <tytso@thunk.org>
6
7 * Release of E2fsprogs 1.24
8
Theodore Ts'ob1f204f2001-08-30 16:42:09 -040092001-08-30 Theodore Tso <tytso@valinux.com>
10
11 * pass1.c (e2fsck_pass1): For EXT2_RESIZE_INO, allow its i_mode to
12 either be zero or a regular file (for compatibility with
13 Andreas's on-line resizing programs).
14
Theodore Ts'o53abed02001-08-27 12:18:16 -0400152001-08-27 Theodore Tso <tytso@valinux.com>
16
Theodore Ts'o0f8973f2001-08-27 12:44:23 -040017 * unix.c (main): Remove EXT2FS_VERSION from the version display,
18 since it only confuses people.
19
Theodore Ts'o53abed02001-08-27 12:18:16 -040020 * pass1.c (strnlen): Provide strnlen if libc doesn't.
21
Theodore Ts'o943ed872001-08-27 12:29:22 -0400222001-08-15 Theodore Tso <tytso@valinux.com>
23
24 * Release of E2fsprogs 1.23
25
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400262001-08-13 Theodore Tso <tytso@valinux.com>
27
Theodore Ts'oeb4ab512001-08-13 10:58:41 -040028 * super.c (release_orphan_inodes): If the filesystem contains
29 errors, don't run the orphan * list, since the orphan list
30 can't be trusted.
31
Theodore Ts'o85645a6f2001-08-13 06:11:39 -040032 * pass1.c (check_size): Fix logic in check_size; the previous code
33 only offered to clear the inode size fields if both size
34 and i_size_high were zero.
Theodore Ts'oa40ecbb2001-08-13 06:15:36 -040035 (e2fsck_pass1_check_device_inode): If i_blocks is
36 non-zero, then assume that the device/socket/fifo inode
37 is bogus.
Theodore Ts'o85645a6f2001-08-13 06:11:39 -040038
Theodore Ts'o2b94c652001-08-09 04:08:52 -0400392001-08-09 Theodore Tso <tytso@valinux.com>
40
Theodore Ts'oa4742692001-08-09 04:14:04 -040041 * pass1.c, pass2.c, problem.c, problem.h: Fix bug introduced by
42 Andreas's symlink code; check_blocks() was unconditionally
43 testing inode_bad_map without checking to see if it
44 existed first. Fixed problem a different way; we now no
45 longer check inode_bad_map at all, since the file might
46 not get deleted in pass 2 anyway. We move the large file
47 feature reconciliation code to to e2fsck_pass2(), and in
48 deallocate_inode() in pass2.c, we decrement the large
49 files counter if we're about to delete a large file.
50
Theodore Ts'o2b94c652001-08-09 04:08:52 -040051 * unix.c (show_stats): Print the number of large files in verbose
52 mode.
53
Theodore Ts'oc0a083f2001-08-07 10:17:41 -0400542001-08-07 Theodore Tso <tytso@valinux.com>
55
56 * journal.c (recover_ext3_journal): If s_errno is set in the
57 journal superblock, set the EXT2_ERROR_FS flag in the
58 filesystem superblock after the journal is run.
59
Theodore Ts'obd512b62001-08-04 21:33:03 -0400602001-08-04 Andreas Dilger <root@lynx.adilger.int>
61
62 * message.c: Change comments for %D and %d expansion in e2fsck
63 problem codes. It was not consistent which was for dirent
64 expansion, and which was for directory number expansion.
65
66 * problem.c (PR_2_FINAL_RECLEN, PR_2_BAD_FILETYPE): Fix problem
67 codes which got caught by the confusion between %D and %d.
68
Theodore Ts'od007cb42001-08-04 20:39:39 -0400692001-08-04 Theodore Tso <tytso@valinux.com>
70
71 * problem.c (PR_2_SYMLINK_SIZE): Change description to make it
72 more clear (and remove %s expansion). Also add missing
73 periods to the end of a number of problem descriptions.
74
75 * pass2.c (e2fsck_process_bad_inode): Remove unneeded problem
76 context string set now that the problem description for
77 PR_2_SYMLINK_SIZE has been changed.
78
79 * pass1.c (e2fsck_pass1_check_symlink): Consolidate some checks,
80 and check the validity of the symlink block here (so that
81 we detect this case here instead of later). Also use
82 sizeof(inode->i_block) instead EXT2_LINK_DIR.
83
Theodore Ts'o83e6ac82001-07-30 16:29:52 -0400842001-07-30 Theodore Tso <tytso@valinux.com>
85
86 * unix.c (check_mount): Remove the code which tested for the root
87 filesystem being mounted read-only, and depend on the
88 results flags from ext2fs_check_if_mounted.
89
Theodore Ts'o1e165262001-07-29 11:48:10 -0400902001-07-29 Theodore Tso <tytso@valinux.com>
91
Theodore Ts'o6d222f32001-07-29 12:06:58 -040092 * unix.c (check_if_skip): Free the e2fsck context structure on a
93 normal clean filesystem exit, to make it easier to find
94 real memory leaks.
95 (PRS): Only update the path to include /sbin at the
96 beginning if the -c option is given, again to make it
97 easier to find memory leaks.
Theodore Ts'o0628ae32001-07-29 12:26:46 -040098 (main): Move the final print_resource_track call after the
99 filesystem and the context are freed.
Theodore Ts'o6d222f32001-07-29 12:06:58 -0400100
101 * journal.c (e2fsck_journal_init_dev): Avoid memory leak if we
102 need to search for the journal device.
103 (e2fsck_journal_release): Free the journal IO channel when
104 we release the journal handle, to avoid a memory leak.
105
Theodore Ts'o1e165262001-07-29 11:48:10 -0400106 * e2fsck.c (e2fsck_reset_context): Fix bug; only close the io
107 channel if it is *different* from the filesystem io
108 channel.
109
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -04001102001-07-27 Theodore Tso <tytso@valinux.com>
111
Theodore Ts'oa092c562001-07-27 22:40:09 -0400112 * problem.c (PR_1_SET_IMMUTABLE): Clarify problem message.
113
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -0400114 * pass1.c (e2fsck_pass1): Check for symlinks that have the
115 immutable flag set (and offer to clear them).
116
Theodore Ts'o24ceb242001-07-26 09:02:56 -04001172001-07-26 Theodore Tso <tytso@valinux.com>
118
119 * pass1.c (e2fsck_pass1): Free ctx->block_ea_map at the end of
120 pass 1.
121
Theodore Ts'o14fe1c32001-07-25 19:48:24 -04001222001-07-25 Theodore Tso <tytso@valinux.com>
123
124 * pass1.c (check_ext_attr): Skip zero-length EA entries.
125
126 * problem.c: PR_1_EA_ALLOC_COLLISION shouldn't abort, but should
127 prompt to clear the EA block.
128
Theodore Ts'oadee8d72001-07-23 00:17:49 -04001292001-07-22 Theodore Tso <tytso@valinux.com>
130
131 * journal.c (ll_rw_block): Use ctx->journal_io instead of the
132 filesystem's io_channel.
133 (e2fsck_journal_init_dev): New function which supports
134 initialization of the external journal.
135 (e2fsck_get_journal): Remove code which flagged an error
136 if the superblock reported the use of an external journal.
137 (ext3_journal_via_mount): Remove unsued, #ifdefed out function.
138
139 * problem.c, problem.h: Removed error codes no longer used
140 (PR_0_JOURNAL_UNSUPP_DEV, PR_0_JOURNAL_BAD_DEV,
141 PR_0_JOURNAL_UNSUPP_UUID) and replace them with new error
142 codes related with failures in loading the external
143 journal (PR_0_JOURNAL_UNSUPP_MULTIFS,
144 PR_0_CANT_FIND_JOURNAL, PR_0_EXT_JOURNAL_BAD_SUPER).
145 Also changed the text assocated with PR_0_JOURNAL_BAD_UUID
146 to reflect the case where the external journal isn't
147 correct for this filesystem.
148
149 * unix.c (PRS), e2fsck.8.in: Add new option -j which allows
150 the user to specify the pathname to find the external journal.
151
152 * e2fsck.c (e2fsck_reset_context): Close journal_io if it isn't
153 the same as the filesystem io_channel.
154
155 * e2fsck.h: Add new fields (journal_io and journal_name) in the
156 context structure to support external journals.
157
Theodore Ts'od3124012001-07-20 14:13:49 -04001582001-07-20 Theodore Tso <tytso@valinux.com>
159
160 * unix.c (main): Add an explicit warning when the filesystem is
161 left not completely fixed when e2fsck exits. (Addresses
162 Debian bug #104502.)
163
Theodore Ts'o55fd07e2001-07-19 16:31:25 -04001642001-07-19 Theodore Tso <tytso@valinux.com>
165
166 * pass1.c (check_ext_attr): The entire EA block is now checked to
167 make sure that parts of the EA block aren't being used for
168 multiple purposes.
169
170 * Makefile.in e2fsck.h, region.c: New file which is used to detect
171 collisions in extended attribute block.
172
173 * problem.h, problem.c (PR_1_EA_MULTI_BLOCK, PR_1_EA_ALLOC_REGION,
174 PR_1_EA_ALLOC_COLLISION, PR_1_EA_BAD_NAME,
175 PR_1_EA_BAD_VALUE): Add new problem codes.
176
Theodore Ts'o3c6b8972001-07-10 14:27:58 -04001772001-07-10 Theodore Tso <tytso@valinux.com>
178
179 * journal.c (e2fsck_run_ext3_journal): Only call ext3_flush() if
180 the superblock is dirty.
181
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -04001822001-07-07 Theodore Tso <tytso@valinux.com>
183
Theodore Ts'o7b63fff2001-07-07 23:01:31 -0400184 * pass1b.c (pass1b, process_pass1b_block): Change the num_bad
185 field calculation so that it only counts EA block entries
186 as a single multiply claimed block (since once we clone
187 the EA blocks for one inode, we fix the problem for all of
188 the other inodes). Also, I moved the num_bad calculation
189 from process_pass1b_block to the end of pass1b. This
190 fixes a *significant* performance bug in pass1b which hit
191 people who had to had a lot of multiply claimed blocks.
192 (Can you say O(n**3) boys and girls? I knew you could...
193 Fortunately, this case didn't happen that much in actual
194 practice.)
195
196 * pass1.c (e2fsck_pass1): Defer inodes which have an extended
197 attribute block for later processing to avoid extra seeks
198 across the disk.
199 (process_inode_cmp): If there is no indirect block, sort
200 by the extended attribute (i_file_acl) block.
201
Theodore Ts'o7abb2bd2001-07-07 13:20:34 -0400202 * pass1b.c (clone_file_block): Fix bugs when cloning extended
203 attribute blocks. Moved free of block_buf to after the
204 code which clones the extattr block, and fixed logic for
205 changing pointers to the extended attribute field in the
206 inodes which were affected.
207 (decrement_badcount): New function which is used whenever
208 we need to decrement the number of files which claim a
209 particular bad block. Fixed bug where delete_file wasn't
210 checking check_if_fs_block() before clearing the entry in
211 block_dup_map. This could cause a block which was claimed
212 by multiple files as well as the filesystem metadata to
213 not be completely fixed.
214
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -0400215 * pass1.c (adjust_extattr_refcount): Add new function which
216 adjusts the reference counts of extended attribute blocks
217 if needed, both up and down.
218 (e2fsck_pass1): If the refcount or refcount_extra
219 structure are present, call adjust_extattr_refcount(),
220 and free it afterwards.
221
222 * problem.h, problem.c (PR_1_EXTATTR_READ_ABORT,
223 PR_1_EXTATTR_REFCOUNT, PR_1_EXTATTR_WRITE): Add new
224 problem codes.
225
Theodore Ts'o342d8472001-07-02 11:54:09 -04002262001-07-02 Theodore Tso <tytso@valinux.com>
227
228 * pass1.c (e2fsck_pass1, check_ext_attr, check_blocks): Add
229 initial support for scanning extended attribute blocks.
230
231 * e2fsck.c (e2fsck_reset_context): free extended attribute
232 refcount structure.
233
234 * e2fsck.h: Add new fields for accounting for the extended
235 attribute blocks.
236
237 * Makefile.in, ea_refcount.c, e2fsck.h: Add new file which
238 implements a reference count abstraction.
239
240 * problem.c, problem.h: Add new problem codes PR_1_ALLOCATE_REFCOUNT,
241 PR_1_READ_EA_BLOCK, PR_1_BAD_EA_BLOCK, PR_2_FILE_ACL_BAD
242
243 * message.c: Add "@a" as an abbreviation for "extended attribute"
244
245 * pass1b.c (clone_file): Add code which handles cloning an
246 extended attribute block.
247
248 * pass1b.c (delete_file):
249 * pass2.c (deallocate_inode): If the inode contains an extended
250 attribute block in the file_acl field, clear it and
251 deallocate the block.
252
2532001-06-28 Theodore Tso <tytso@valinux.com>
254
255 * pass2.c (e2fsck_process_bad_inode): Deal with inodes which are
256 marked bad because of an invalid file_acl (either because
257 EXT2_FEATURE_COMPAT_EXT_ATTR is not set, or because the
258 block number in file_acl is bad.
259
Theodore Ts'o636a9542001-06-29 17:57:26 -04002602001-06-29 Theodore Tso <tytso@valinux.com>
261
262 * unix.c (show_stats): Use long long to calculate the percentage
263 of the number of blocks in use in the filesystem.
264
Theodore Ts'o67960132001-06-23 00:16:37 -04002652001-06-23 Theodore Tso <tytso@valinux.com>
266
267 * Release of E2fsprogs 1.22
268
Theodore Ts'od90f3492001-06-22 21:01:17 -04002692001-06-22 Theodore Tso <tytso@valinux.com>
270
271 * flushb.c: Use platform independent method of defining the
272 BLKFLSBUF ioctl. Also include sys/mount.h since on newer
273 platforms BLKFLSBUF is defined there.
274
Theodore Ts'o42475e22001-06-22 20:35:38 -04002752001-06-19 Theodore Tso <tytso@valinux.com>
276
277 * super.c (release_inode_blocks): Don't try to release the blocks
278 if the orphaned inode is a device file, symlink, or some
279 other kind of special file that doesn't have a block list.
280
Theodore Ts'of4f75ba2001-06-16 01:14:28 +00002812001-06-15 Theodore Tso <tytso@valinux.com>
282
283 * Release of E2fsprogs 1.21
284
Theodore Ts'ob6a08072001-06-14 01:16:17 +00002852001-06-13 Theodore Tso <tytso@valinux.com>
286
287 * unix.c (check_if_skip): Adapted patch from Andreas Dilger which
288 prints the number of mounts or days elapsed since the last
289 check when e2fsck is forced to check an otherwise clean
290 filesystem.
291
Theodore Ts'ocbbf0312001-06-13 00:12:04 +00002922001-06-12 Theodore Tso <tytso@valinux.com>
293
294 * badblocks.c: Stop using the compatibility badblocks function,
295 and use the ext2fs_badblocks_* functions instead.
296
Theodore Ts'o5df55d72001-06-11 07:00:04 +00002972001-06-11 Theodore Tso <tytso@valinux.com>
298
Theodore Ts'o3034f622001-06-11 15:17:45 +0000299 * unix.c (PRS): Fix bug introduced in 1.20 which broke the -F
300 flag.
301
Theodore Ts'o5df55d72001-06-11 07:00:04 +0000302 * Makefile.in: Add message.c and swapfs.c to the list of source
303 files to build the make depend.
304
305 * swapfs.c, unix.c: Only support the -s and -S options to e2fsck
306 if ENABLE_SWAPFS is defined.
307
Theodore Ts'o725c4742001-06-08 11:55:44 +00003082001-06-08 Theodore Tso <tytso@valinux.com>
309
310 * recover.c, revoke.c: Synchronize with ext3 0.7a
311
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00003122001-06-02 Theodore Tso <tytso@valinux.com>
313
Theodore Ts'oa479fe62001-06-02 04:50:14 +0000314 * recovery.c (scan_revoke_records): Fix bug in recovery code;
315 missing byte order conversion.
316
Theodore Ts'ofdbdea02001-06-02 04:26:26 +0000317 * pass1.c (mark_inode_bad): Replace alloc_bad_map with a function
318 which sets the bit in the bad inode bitmap.
319 (e2fsck_pass1): Check for fast symlinks with an invalid
320 size, and set the bad inode map in that case.
Theodore Ts'o62b6d472001-06-02 04:37:02 +0000321 (check_size): Check i_size_high for special files and
322 prompt to clear it along with i_size if non-zero.
Theodore Ts'ofdbdea02001-06-02 04:26:26 +0000323
324 * pass2.c (e2fsck_process_bad_inode): Check for fast symlinks with
325 an invalid size and prompt the user if the inode should be
326 cleared.
327
328 * problem.h, problem.c (PR_2_SYMLINK_SIZE): Added new problem code.
329
Theodore Ts'o71d521c2001-06-01 19:29:36 +00003302001-06-01 Theodore Tso <tytso@valinux.com>
331
Theodore Ts'o2f686ac2001-06-02 00:38:40 +0000332 * problem.c, problem.h: Change PR_0_JOURNAL_UNSUPP_INCOMPAT and
333 PR_0_JOURNAL_UNSUPP_ROCOMPAT so they aren't fatal errors,
334 but prompt to see if the user should abort. Removed the
335 PR_0_JOURNAL_RESET_COMPAT problem code.
336
337 * journal.c (e2fsck_journal_load): If there are incompatible
338 journal flags, just return an error code.
339 (e2fsck_check_ext3_journal): If e2fsck_journal_load
340 returns an error code indicating that there are
341 incompatible journal flag, check to see if we should
342 abort, and then offer to clear the journal.
Theodore Ts'oe3338452001-06-14 07:11:33 +0000343 (Addresses Debian bug #98527.)
Theodore Ts'o2f686ac2001-06-02 00:38:40 +0000344
Theodore Ts'o797f5ef2001-06-01 23:49:46 +0000345 * Makefile.in: Move include/asm/types.h.in to
Theodore Ts'o36a23e12001-06-02 00:54:10 +0000346 lib/ext2fs/ext2_types.h.in.
Theodore Ts'o797f5ef2001-06-01 23:49:46 +0000347
3482001-06-01 Theodore Tso <tytso@valinux.com>
349
Theodore Ts'o71d521c2001-06-01 19:29:36 +0000350 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
351 pass1_check_directory): Add a safety check to make sure
352 ctx->stashed_inode is non-zero.
353
354 * pass1b.c (pass1b): Use e2fsck_use_inode_shortcuts() to disable
355 the inode shortcut processing, instead of manually
356 clearing only half of the function pointers that needed to
357 be NULL'ed out. This caused nasty bugs if the last inode
358 in the filesystem needed dup block processing.
359
360 * pass1b.c (clone_file_block): When cloning a directory's metadata
361 block, don't try to update the directory block list
362 database, since indirect blocks aren't stored in the
363 database and the resulting error will abort the file clone
364 operation.
365
Theodore Ts'o561cd4d2001-05-25 16:40:56 +00003662001-05-25 Theodore Tso <tytso@valinux.com>
367
Theodore Ts'obb185862001-05-25 17:35:00 +0000368 * Release of E2fsprogs 1.20
369
3702001-05-25 Theodore Tso <tytso@valinux.com>
371
Theodore Ts'o561cd4d2001-05-25 16:40:56 +0000372 * journal.c (e2fsck_journal_reset_super): Remove extraneous line
373
Theodore Ts'oc7f23362001-05-23 22:19:47 +00003742001-05-23 Theodore Tso <tytso@valinux.com>
375
376 * journal.c (e2fsck_journal_reset_super): Fix bug; the reset
377 journal wasn't getting written out to disk since the dirty
378 bit wasn't being set on the buffer.
379 (e2fsck_journal_load): Don't print an error message if the
380 journal version number is wrong; just return a error code
381 reflecting this fact. If the block type in the journal
382 superblcok is obviously not a version number, report the
383 journal is corrupted.
384 (e2fsck_check_ext3_journal): On an unsupported journal
385 version, prompt to abort by default, but then offer a
386 chance to clear the journal as corrupt.
387
388 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_VERSION): Added new
389 problem code.
390
Theodore Ts'o424cd2b2001-05-14 04:06:56 +00003912001-05-14 Theodore Tso <tytso@valinux.com>
392
Theodore Ts'o21afac02001-05-14 12:47:41 +0000393 * pass1.c: Treat inodes with a low dtime (that were from a
394 corrupted orphan list) specially.
395
396 * problem.c, problem.h: Add new problem codes PR_1_LOW_DTIME and
397 PR_1_ORPHAN_LIST_REFUGEES, and a new latch group,
398 PR_LATCH_LOW_DTIME.
399
400 * problemP.h: Expand the size of the problem flag to be an int
401 instead of a short. Expand space in the flag word which
402 is reserved for problem latch flags from 3 bits to 8 bits.
403
Theodore Ts'o54c637d2001-05-14 11:45:38 +0000404 * e2fsck.h, scantest.c: Change location of ext2_fs.h to be
405 ext2fs/ext2_fs.h
406
Theodore Ts'o424cd2b2001-05-14 04:06:56 +0000407 * super.c (check_super_block): Be more strict on checking
408 s_r_blocks_count superblock field.
409
4102001-05-13 Theodore Tso <tytso@valinux.com>
411
412 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_ROCOMPAT,
413 PR_0_JOURNAL_UNSUPP_INCOMPAT, PR_0_JOURNAL_RESET_COMPAT):
414 New problem codes.
415
416 * journal.c (e2fsck_journal_load): Use a problem code to
417 report unsupported feature flags. There is code to
418 clear unsupported flags, but since this is dangerous,
419 it's not allowed in the problem code table.
420
4212001-05-11 Andreas Dilger <adilger@turbolinux.com>
422
423 * journal.c (e2fsck_journal_reset_super): initialize the journal
424 sequence number to a random value to avoid recovering
425 bad transactions from a corrupt journal.
426
Theodore Ts'o328a5ce2001-05-13 20:21:25 +00004272001-05-13 Theodore Tso <tytso@valinux.com>
428
429 * journal.c: Code cleanup; initialize journal_enable_debug using
430 an initializer.
431
Theodore Ts'ofc9a69c2001-05-12 13:43:46 +00004322001-05-12 Theodore Tso <tytso@valinux.com>
433
434 * unix.c (PRS): Skip validation of -C's file descriptor if it is
435 zero, since that is special case.
436
Theodore Ts'of0b8c872001-05-09 06:03:58 +00004372001-05-09 Theodore Tso <tytso@valinux.com>
438
439 * super.c (release_orphan_inodes): Add gettext quoting around
440 "Truncating" and "Clearing" for i18n.
441
Theodore Ts'ob9852cd2001-05-05 05:14:59 +00004422001-05-05 Theodore Tso <tytso@valinux.com>
443
Theodore Ts'oe39ac922001-05-05 06:47:24 +0000444 * util.c (fatal_error): Use the correct magic number when checking
445 the magic number for the io_channel data structure. Also
446 remove extraneous call to io_channel_flush() that was left
447 over from an editing session.
448
Theodore Ts'ob9852cd2001-05-05 05:14:59 +0000449 * pass2.c (check_dir_block): Ignore EXT2_ET_DIR_CORRUPTED errors
450 from ext2fs_read_dir_block().
451
Theodore Ts'o5f629b72001-05-01 20:01:08 +00004522001-05-01 Theodore Tso <tytso@valinux.com>
453
Theodore Ts'oae8160e2001-05-01 21:13:37 +0000454 * unix.c (PRS): Validate the completion information file
455 descriptor so that the completion bar won't get
456 accidentally written onto the disk.
457
Theodore Ts'o5f629b72001-05-01 20:01:08 +0000458 * e2fsck.8.in: Add explanation that you can use mke2fs -n -b
459 blocksize to printout alternate superblock locations.
460
Theodore Ts'obc57f152001-04-26 04:11:46 +00004612001-04-26 Theodore Tso <tytso@valinux.com>
462
463 * unix.c (check_if_skip): If the max_mount_count is zero, treat it
464 as having no count set.
465
Theodore Ts'oef059872001-04-17 00:40:02 +00004662001-04-16 Theodore Tso <tytso@valinux.com>
467
468 * super.c (check_super_block): Fix bad calculation of
469 inodes_per_block, and tighten min/max checks to be a bit
470 more paranoid. Thanks to Andreas Dilger for pointing out
471 this bug.
472
Theodore Ts'o1f735032001-03-29 19:00:50 +00004732001-03-29 Theodore Tso <tytso@valinux.com>
474
Theodore Ts'o15986f72001-03-29 19:22:16 +0000475 * journal.c (mark_buffer_uptodate): Add emulation of kernel
476 function mark_buffer_uptodate.
477
Theodore Ts'o1f735032001-03-29 19:00:50 +0000478 * recovery.c, revoke.c: Synchronize with 0.6b ext3 files.
479
Theodore Ts'od0515212001-02-13 04:32:53 +00004802001-02-12 Theodore Tso <tytso@valinux.com>
481
482 * journal.c (e2fsck_run_ext3_journal): Force a flush of the
483 filesystem and io_channel before replaying the journal.
484
Theodore Ts'oa5c33f22001-01-18 02:34:03 +00004852001-01-17 Theodore Ts'o <tytso@valinux.com>
486
487 * pass1.c (check_blocks): Fix large file checking code so that
488 files > 2GB are considered large files, and restrict
489 directories from being > 2GB.
490
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +00004912001-01-12 Theodore Ts'o <tytso@valinux.com>
492
Theodore Ts'oa9ca2012001-01-12 21:53:25 +0000493 * journal.c (e2fsck_journal_fix_unsupported_super): Remove unused
494 function. Add FIXME notes to e2fsck_get_journal(), from
495 Andreas Dilger.
496
497 * pass1.c (e2fsck_pass1): Cap the maximum legal size of a file by
498 the limit caused by the fact that i_blocks is in 512 byte
499 units, and that the Linux buffer cache also fundamentally
500 assumes 512 byte sectors.
501 Make sure that the journal inode is a regular file, and
502 when clearing an unused journal inode, make sure the
503 icount db is updated.
504
505 * problem.c, problem.h (PR_1_JOURNAL_BAD_MODE): Add new problem code.
506
Theodore Ts'o37b6b292001-01-12 21:16:13 +0000507 * problem.c: For PR_1_RESERVED_BAD_MODE, print a description of
508 the reserved inode. In PR_0_JOURNAL_HAS_JOURNAL, prompt
509 to clear the journal, rather than deleting it (which is
510 more accurate). (From Andreas Dilger.)
511
Theodore Ts'o6a6d3d42001-01-12 21:11:24 +0000512 * journal.c: Make sure all functions which return an error code
513 use the errcode_t return type, and not "int"
514 (e2fsck_journal_release): Add new parameter, "drop",
515 which is used when we just want to deallocate the journal
516 without trying to write out any changes.
517 (mark_buffer_clean): New function
518 (e2fsck_check_ext3_journal): If we fail loading the
519 journal, make sure we free all memory associated with it.
520 (recover_ext3_journal): If we fail to load the journal or
521 initialize the revoke data structures, make sure we free all
522 memory associated with the journal.
523
Theodore Ts'o721edd02001-01-12 21:05:57 +0000524 * message.c (special_inode_name): Add more special inode names
525 (From Andreas Dilger)
526
Theodore Ts'o58a75172001-01-12 20:59:19 +0000527 * util.c (fatal_error): Check to make sure the io_manager data
528 structure is sane before trying to flush the io_channel.
529 (From Andreas Dilger)
530
Theodore Ts'o721edd02001-01-12 21:05:57 +0000531 * mtrace.h, super.c, pass2.c: Minor whitespace cleanups, from
532 Andreas Dilger.
Theodore Ts'o4035f402001-01-12 20:25:50 +0000533
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +0000534 * journal.c (e2fsck_journal_fix_bad_inode): Set pctx->ino to the
535 bad journal number.
536
537 * problem.c (PR_0_JOURNAL_BAD_INODE): Use pctx->ino instead of
538 pctx->num when printing the bad journal inode number.
539
Theodore Ts'o86c627e2001-01-11 15:12:14 +00005402001-01-11 <tytso@snap.thunk.org>
541
Theodore Ts'o5ba23cb2001-01-11 19:15:02 +0000542 * pass1.c (process_block): Remove dead code which was never
543 getting executed.
544
545 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
546 ext2fs_sync_device() instead of using BLKFLSBUF.
547
548 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
549
Theodore Ts'o86c627e2001-01-11 15:12:14 +0000550 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
551 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
552 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
553 ino_t to ext2_ino_t.
554
Theodore Ts'o95a5bc92001-01-11 04:58:21 +00005552001-01-09 <tytso@snap.thunk.org>
556
557 * problem.c: Fix another broken @F vs @f problem.
558
Theodore Ts'o53ef44c2001-01-06 05:55:58 +00005592001-01-06 <tytso@snap.thunk.org>
560
561 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
562 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
563
564 * jfs_user.h: Use more sophisticated inline handling to allow
565 building with --enable-gcc-wall
566
Theodore Ts'od3f35b62001-01-03 13:00:43 +00005672001-01-03 <tytso@snap.thunk.org>
568
Theodore Ts'of18996c2001-01-03 16:57:24 +0000569 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
570 own block; if the journal inode is not in use, and it
571 contains data, offer to clear it.
572
573 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
574 problem code.
575
576 * problem.c: Modified problem table to use a new abbreviations.
577
Theodore Ts'od74edf42001-01-03 19:38:04 +0000578 * message.c: Add @j abbreviation for journal, and @v abbreviation
Theodore Ts'oe9044062001-01-03 15:39:37 +0000579 for device.
Theodore Ts'o1ce64532001-01-03 15:34:20 +0000580
Theodore Ts'occ7067b2001-01-03 13:24:06 +0000581 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
582
Theodore Ts'od3f35b62001-01-03 13:00:43 +0000583 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
584 the journal stored on a reserved inode. Also force a fsck
585 if the journal appears to exist while !NEEDS_RECOVERY, and
586 we forcibly reset the journal.
587
Theodore Ts'of5ae75e2001-01-01 14:52:52 +00005882001-01-01 <tytso@snap.thunk.org>
589
Theodore Ts'o5dd8f962001-01-01 15:51:50 +0000590 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
591 ext2fs_sb with struct ext2_super_block.
592
Theodore Ts'of5ae75e2001-01-01 14:52:52 +0000593 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
594
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +00005952000-12-31 <tytso@snap.thunk.org>
596
597 * jfs_compat.h: Remove uneeded header file.
598
Theodore Ts'ob2f93192000-12-30 20:33:42 +00005992000-12-30 <tytso@snap.thunk.org>
600
Theodore Ts'oc59a7042000-12-31 01:52:03 +0000601 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
602 conflicts with the system header file.
603
Theodore Ts'ob2f93192000-12-30 20:33:42 +0000604 * problem.h: Fixed numbering of pass1 error messages; an extra 0
605 had slipped into some of the numbers. (Pointed out by
606 Andreas Dilger)
607
608 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
609 unnecessary automatic variable. Add explanatory comment
610 about the kernel emulation routines. (Suggested by
611 Andreas Dilger)
612
Theodore Ts'o060b5fb2000-12-13 18:07:23 +00006132000-12-13 Theodore Ts'o <tytso@valinux.com>
614
Theodore Ts'o9b565752000-12-13 18:50:22 +0000615 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
616 journal fields are consistent if any of the superblock
617 fields are set. (Backs out erroneous change made by sct,
618 pointed out by Andreas.)
619
620 * unix.c (main): Clarify coments (no code changes)
621
622 * super.c (release_orphan_inodes): Fix spelling typo in error message.
623
Theodore Ts'o8188c9e2000-12-13 18:39:14 +0000624 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
625 level if we need to set large files flag. Patch from
626 Andreas Dilger.
627
Theodore Ts'o7b59f1e2000-12-13 18:11:44 +0000628 * super.c (check_super_block): If we have any of the compatibility
629 flags set, we need to have a revision 1 filesystem. Most
630 kernels will not check the flags on a rev 0 filesystem
631 and we may have corruption issues because of the
632 incompatible changes to the filesystem. Patch from Andreas
633 Dilger.
634
Theodore Ts'o060b5fb2000-12-13 18:07:23 +0000635 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
636 new problem codes.
637
Theodore Ts'o0e8a9562000-12-09 06:41:25 +00006382000-12-09 <tytso@snap.thunk.org>
639
Theodore Ts'obf2d4992000-12-09 14:46:20 +0000640 * flushb.c: Fix flushb so that it does something other than waste
641 disk space when built on systems with modern header files
642 and add a non-subtle Copyright Licensing restriction so
643 Yann will remove it from the Debian Distribution. (Now
644 violates the Debian Free Software Guidelines, on purpose.)
645
Theodore Ts'of43650c2000-12-09 06:47:56 +0000646 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
647 at the top level, set the JFS debuging level to 2.
648
Theodore Ts'o0e8a9562000-12-09 06:41:25 +0000649 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
650 has been moved to the include/linux directory.
651
652 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
653 support the V2 superblock and revoke processing. The
654 journal.c and revoke.c files are copies from the ext3
655 kernel source.
656
657 * Makefile.in: Added revoke.c to the list of source/object files.
658
Theodore Ts'o133a56d2000-11-17 05:40:49 +00006592000-11-16 Theodore Ts'o <tytso@valinux.com>
660
661 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
662 reporting problems rather than using com_err directly.
663
664 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
665
666 * message.c (expand_percent_expression): Add safety check. If
667 ctx->str is NULL, print "NULL" instead of dereferencing
668 the null pointer.
669
670 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
671 to ext2fs_block_iterate2, to support 64-bit filesizes and
672 to speed things up slightly by avoiding the use of the
673 ext2fs_block_iterate's compatibility shim layer.
674
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +00006752000-10-30 <tytso@snap.thunk.org>
676
677 * util.c (get_backup_sb): Calculate backup superblock correctly
678 when the blocksize is > 1k.
679
Theodore Ts'o241f2242000-10-26 20:42:07 +00006802000-10-26 <tytso@snap.thunk.org>
681
682 * jfs.h, jfs_compat.h, journal.c: Updated to include the
683 definition of the new journal superblock format; still
684 only supports V1 superblocks for now. (From sct)
685
Theodore Ts'ob09a4b02000-10-24 21:16:09 +00006862000-10-24 <tytso@snap.thunk.org>
687
Theodore Ts'o83949022000-10-25 01:38:50 +0000688 * super.c (release_inode_block, release_inode_blocks,
689 release_orphan_inodes): Add code to deal with truncating
690 inodes which are still in use (but which are on the orphan
691 list because they need truncation).
692
693 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
694 PR_0_ORPHAN_CLEAR_INODE, and remove
695 PR_0_ORPHAN_INODE_INUSE.
696
697 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
698 a message when the journal is being recovered.
699
Theodore Ts'ob09a4b02000-10-24 21:16:09 +0000700 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
701 journal inode, if it is in use.
702
Theodore Ts'oadfca562000-09-12 21:24:36 +00007032000-09-12 <tytso@valinux.com>
704
705 * extend.c:
706 * flushb.c: Add include of nls-enable.h which is necessary so that
707 they can compile correctly.
708
Theodore Ts'occ96b2b2000-08-22 21:30:11 +00007092000-08-22 <tytso@valinux.com>
710
Theodore Ts'o2575fb02000-08-22 21:50:04 +0000711 * unix.c (main): If we're doing a read-only check, skip the
712 journal playback, but don't abort the e2fsck run.
713
Theodore Ts'o99a2cc92000-08-22 21:41:52 +0000714 * super.c (release_orphan_inodes): Fix typo; should do bounds
715 checking on next_ino instead of ino.
716
717 * jfs_compat.h (J_ASSERT):
718 * journal.c (e2fsck_run_ext3_journal):
719 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
720
Theodore Ts'o243dc312000-08-22 21:37:47 +0000721 * unix.c: Use fatal_error() instead of exit() whenever possible.
722 Also fix the fsck exit codes so that we use FSCK_USAGE
723 when it is appropriate. Rename global_signal_ctx to
724 e2fsck_global_ctx and let it be exported globally.
725
Theodore Ts'occ96b2b2000-08-22 21:30:11 +0000726 * util.c (fatal_error): Try to flush the I/O manager before
727 forcing an exit.
728
Theodore Ts'oecf1b772000-08-20 22:06:31 +00007292000-08-20 <tytso@valinux.com>
730
731 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
732 e2fsck_check_ext3_journal to smash the journal because
733 journal->j_transaction_sequence wasn't getting
734 initialized.
735
736 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
737 call to e2fsck_clear_recover from recover_ext3_journal to
738 after the filesystem has been closed and reopened.
739 Otherwise, the superblock in the filesystem handle will
740 probably be stale, and will overwrite the newer version of
741 the superblock written by the log recovery.
742
743 * message.c (expand_inode_expression): Add support for %Iu and %Ig
744
745 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
746
747 * super.c (release_orphan_inodes, release_inode_block,
748 release_inode_blocks): Update the block group descriptor
749 counts when freeing the orphan inode. Use
750 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
751
752 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
753 attempted to reopen the filesystem using the device name
754 instead of the filesystem name.
755
Theodore Ts'o80bfaa32000-08-18 15:08:37 +00007562000-08-18 <tytso@valinux.com>
757
758 * Makefile.in: Update the make dependencies
759
760 * problem.c, problem.h: Add the problem codes:
761 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
762 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
763 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
764 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
765
766 * super.c (release_inode_blocks, release_orphan_inodes,
767 check_super_block): Add support for clearing orphaned
768 inodes from the unmounted filesystem.
769
770 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
771 check; this is now handled in check_super_block ---
772 non-journaled filesystems can use the orphan list in the
773 future. Also, move the the re-opening of the filesystem
774 to e2fsck_run_ext3_journal().
775
Theodore Ts'o3b5386d2000-08-14 14:25:19 +00007762000-07-12 Andreas Dilger <adilger@turbolinux.com>
777
778 * journal.c: implement loading of ext3 journal for recovery code
779
780 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
781 Add journal problems.
782
783 * recovery.c (journal_recover): user-space ext3 journal recovery code
784
785 * unix.c (main) : check journal and do recovery in separate steps
786
Theodore Ts'ob8d164c2000-08-08 03:17:04 +00007872000-08-07 <tytso@snap.thunk.org>
788
789 * unix.c (calc_percent): Make sure that we don't take a floating
790 exception if the max value is zero. (should normally
791 never happen, but...)
792
Theodore Ts'of9e67062000-07-13 23:25:54 +00007932000-07-13 <tytso@valinux.com>
794
795 * Release of E2fsprogs 1.19
796
Theodore Ts'o17390c02000-07-07 04:13:21 +00007972000-07-06 Theodore Ts'o <tytso@valinux.com>
798
799 * unix.c (check_if_skip): Modify algorithm for checking
800 s_max_mnt_count to match with the kernel. (If
801 s_max_mnt_count is negative, ignore the mnt_count check.)
802
803 * unix.c (e2fsck_update_progress): Adjust the width of the
804 progress bar dynamically, based on the filesystem name
805 that we need to display.
806
807 * unix.c (main): If the ext3 needs_recovery flag is set, call
808 e2fsck_run_ext3_journal() and then restart the e2fsck run.
809
810 * journal.c (e2fsck_run_ext3_journal): New file which contains
811 logic to recover the ext3 journal. This version relies on
812 the kernel being able to mount the filesystem in order to
813 run the journal.
814
Theodore Ts'o92269042000-07-05 18:25:59 +00008152000-07-05 Theodore Ts'o <tytso@valinux.com>
816
817 * unix.c (e2fsck_update_progress): Only save and check the last
818 percentage after multiplying it by 10, nor 1000, since we
819 only need to save values to a tenth of a percent (and the
820 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +0000821 Also, re-arrange the logic so that we do the time
822 check only after doing the percentage check, and we
823 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +0000824
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +00008252000-07-04 Theodore Ts'o <tytso@valinux.com>
826
827 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
828 field is set; if so, clear it, so that ext3 mounting code
829 won't get confused by the fact that we've cleared out the
830 orphaned inodes.
831
Theodore Ts'obbd47d72000-06-10 19:21:33 +00008322000-06-10 Theodore Ts'o <tytso@valinux.com>
833
834 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
835 checking for a "should never happen case".
836
837 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
838 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
839
Theodore Ts'od647a1e2000-05-27 14:40:09 +00008402000-05-27 Theodore Ts'o <tytso@valinux.com>
841
842 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
843 (cw@foof.org) which checks to see if special devices have
844 a non-zero size, and deals with it.
845
846 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
847
Theodore Ts'o1d279212000-05-19 02:38:14 +00008482000-05-18 Theodore Ts'o <tytso@valinux.com>
849
850 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
851 well.
852
Theodore Ts'o4ea0a112000-05-08 13:33:17 +00008532000-05-08 Theodore Ts'o <tytso@valinux.com>
854
855 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
856 code.
857
858 * super.c (check_super_block): If the OS type in the superblock is
859 the Hurd, check to see if the filetype feature is set, and
860 offer to clear it if so. This needs to be done since the
861 Hurd doesn't properly support the filetype feature.
862 (And since the hurd allows the transmogrification of files
863 to special files and vice versa --- for no good reason
864 that I can understand --- it can't support the filetype
865 feature for the forseeable future, either.)
866
Theodore Ts'o373b8332000-04-03 16:22:35 +00008672000-04-03 Theodore Ts'o <tytso@valinux.com>
868
869 * unix.c: For platforms that don't define optarg.h, manually
870 define optarg and optind.
871
Theodore Ts'o01fbc702000-04-03 13:57:21 +00008722000-03-20 Theodore Ts'o <tytso@valinux.com>
873
874 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
875 Check for the append-only as well as the immutable flag.
876
877 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
878 append-only flag. Fix comment for compression flag.
879
Theodore Ts'o06012322000-02-12 20:12:43 +00008802000-02-12 <tytso@snap.thunk.org>
881
882 * unix.c (e2fsck_update_progress): Limit the number of updates to
883 the progress bars to 8 times a second. This allows a 9600
884 baud console link to keep up.
885
Theodore Ts'o19178752000-02-11 15:55:07 +00008862000-02-11 <tytso@snap.thunk.org>
887
888 * unix.c (main): If compression is enabled on the filesystem,
889 print a warning message (for now).
890
891 * message.c: Add new compression shortcut: @c == compress
892
893 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
894
895 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
896 set, check to see if the filesystem supports compression.
897 If it does pass this information down to process_block()
898 so it can treat the compressed block flag words
899 correctly. If not, offer to clear the flag, since it
900 shouldn't be set.
901 (process_block): If an inode has the compressed inode flag
902 set, allow EXT2FS_COMPRESSED_BLKADDR.
903
904 * pass1b.c (process_pass1b_block, delete_file_block,
905 clone_file_block):
906 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
907 see if the block can be skipped.
908
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00009092000-02-08 <tytso@snap.thunk.org>
910
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +0000911 * util.c: Make resource tracking message more concise.
912
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +0000913 * e2fsck.h:
914 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
915 ctx->block_illegal_map, since it's not needed by pass1,
916 and pass1b has been modified to calculate it manually if
917 needed. This reduces the memory footprint needed by e2fsck.
918
919 * pass1b.c (check_if_fs_block): New static function which returns
920 whether or not a block overlaps with filesystem metadata.
921 This replaces consulting the block_illegal_map bitmap.
922
Theodore Ts'o28ffafb2000-02-08 19:14:02 +0000923 * Makefile.in: Call sync after finishing building all in this
924 directory.
925
926 * unix.c (PRS): sync the filesystem before trying to use
927 BLKFLSBUF, to minimize the chance of causing dirty blocks
928 to get dropped.
929
930 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
931 a Linux/i386 system.
932
933 * pass3.c (check_directory): Only do the loop detection algorithm
934 if we've searched over 2048 parent directories and haven't
935 found the end yet. This means that in the common case, we
936 don't allocate or clear the inode_loop_detection bitmap,
937 which for large systems, merely clearing the bitmap for
938 each directory was turning out to be quite expensive.
939 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
940 identifying this problem.
941
Theodore Ts'o0c4a0722000-02-07 03:11:03 +00009422000-02-06 Theodore Ts'o <tytso@valinux.com>
943
944 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
945 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
946 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
947 unix.c, util.c: Add Internationalization support as
948 suggested by Marco d'Itri <md@linux.it>.
949
Theodore Ts'o80e808f2000-02-02 16:19:59 +00009502000-02-02 Theodore Ts'o <tytso@valinux.com>
951
952 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
953 linux/fs.h
954
Theodore Ts'o894edb22000-01-18 21:27:12 +00009552000-01-18 Theodore Ts'o <tytso@valinux.com>
956
957 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
958 we need a separate DEPLIBUUID that can be used in
959 Makefile's dependency rules.
960
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +00009611999-11-23 <tytso@valinux.com>
962
963 * e2fsck.8.in: Update language about where to find a backup
964 superblock.
965
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00009661999-11-19 <tytso@valinux.com>
967
Theodore Ts'o86a63e91999-11-23 13:52:48 +0000968 * pass1.c (process_inodes): Add shortcut handling; if
969 process_inodes_count is zero, return right away, to avoid
970 calling qsort with a non-positive count.
971
Theodore Ts'oec8d2c31999-11-19 18:52:36 +0000972 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
973 to print Delete as ^?
974
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +0000975 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
976 the source directory.
977
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00009781999-11-10 <tytso@valinux.com>
979
Theodore Ts'ocd086361999-11-10 16:00:39 +0000980 * Release of E2fsprogs 1.18
981
9821999-11-10 <tytso@valinux.com>
983
Theodore Ts'oa846d2f1999-11-10 15:50:24 +0000984 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
985 means the answer is assumed to be no in preen mode. This
986 is now used in the PR_1_SET_IMMUTABLE code, so that in
987 preen mode we ignore these inodes and just print a warning
988 message.
989
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +00009901999-11-09 <tytso@valinux.com>
991
992 * pass1.c (e2fsck_pass1): If the filesystem does not support
993 imagic inodes, if an inode has the imagic flag set, offer
994 to clear the imagic flag. If a valid device/fifo/socket
995 has the immutable flag set, call the new helper function
996 check_immutable() to offerto clear the immutable flag.
997
998 * pass2.c (check_filetype): Use the new ext2_file_type() helper
999 function instead of calculating the file_type information
1000 manually.
1001
1002 * pass3.c (e2fsck_reconnect_file): When adding a link to
1003 lost+found, calculate the filetype information so that
1004 ext2fs_link() can use the information if applicable.
1005 (get_lost_and_found): Create the /lost+found directory
1006 with the correct filetype information if applicable.
1007
1008 * util.c (ext2_file_type), e2fsck.h: New function which returns
1009 the directory entry file type information given the
1010 inode's mode bits.
1011
1012 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
1013 and PR_1_SET_IMMUTABLE.
1014
Theodore Ts'o7142db01999-11-08 18:46:54 +000010151999-11-07 <tytso@valinux.com>
1016
1017 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
1018 to prevent it from getting freed twice.
1019
10201999-11-06 <tytso@valinux.com>
1021
1022 * unix.c (main): Close the filesystem before freeing the context,
1023 so that in the event of a free()-related segmentation
1024 violation, the filesystem is properly closed and written
1025 out.
1026
10271999-10-27 <tytso@valinux.com>
1028
1029 * e2fsck.c (e2fsck_reset_context): When freeing
1030 ctx->inode_reg_map, we weren't zero'ing
1031 ctx->inode_reg_map, which could cause a segfault later on
1032 in the e2fsck run.
1033
10341999-10-26 <tytso@valinux.com>
1035
1036 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
1037 matches the standard convention).
1038
Theodore Ts'of68aa411999-10-26 14:20:22 +000010391999-10-26 <tytso@valinux.com>
1040
Theodore Ts'o28e11941999-10-26 18:17:20 +00001041 * Release of E2fsprogs 1.17
1042
10431999-10-26 <tytso@valinux.com>
1044
Theodore Ts'of68aa411999-10-26 14:20:22 +00001045 * message.c (safe_print): Make safe_print take an char instead of
1046 an unsigned char to fix gcc warnings.
1047
Theodore Ts'oc40db6d1999-10-25 21:03:34 +000010481999-10-25 <tytso@valinux.com>
1049
Theodore Ts'oe6597041999-10-26 02:30:16 +00001050 * util.c: For NT portability, don't redefine getchar(), since
1051 stdio defines that. Instead we introduce a new
1052 abstract macro read_a_char() which is #defined to the
1053 right function as necessary.
1054
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00001055 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
1056
1057 * pass2.c (check_dir_block): Require that the length of the
1058 directory entry be at least 12 bytes. Check to see if the
1059 filename is zero-length, and flag that as an error.
1060
Theodore Ts'o7847c1d1999-10-22 15:11:42 +000010611999-10-22 <tytso@valinux.com>
1062
Theodore Ts'o614fdfd1999-10-23 03:19:51 +00001063 * Release of E2fsprogs 1.16
1064
10651999-10-22 <tytso@valinux.com>
1066
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00001067 * pass2.c (check_filetype): If the filetype filesystem feature is
1068 not set, and a directory entry has a dirent feature, offer
1069 to clear it (since 2.0 kernels will do complain will
1070 interpret it as a very large name length field).
1071
1072 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
1073
Theodore Ts'oaa4115a1999-10-21 19:33:18 +000010741999-10-21 <tytso@valinux.com>
1075
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +00001076 * e2fsck.8.in: Update man page to use a more standard format (bold
1077 option flags and italicized variables), as suggested by
1078 Andreas Dilger (adilger@enel.ucalgary.ca)
1079
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00001080 * pass4.c (e2fsck_pass4): If an inode is set in the
1081 inode_imagic_map bitmap, don't check to see if it is
1082 disconnected from the inode tree (because it almost
1083 certainly will be). Free inode_imagic_map at the end of
1084 pass 4.
1085
1086 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
1087 feature is set, check the directory entry's filetype
1088 information field, and fix/set it if necessary.
1089 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
1090 of pass 2.
1091
1092 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
1093 information for inode_reg_map and inode_imagic_map, which
1094 indicates which inodes are regular files and AFS inodes,
1095 respectively.
1096 Since only the master superblock is written during a
1097 restart, force that superblock to be used after a restart;
1098 otherwise changes to the block group descriptors end up
1099 getting ignored.
1100
1101 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
1102 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
1103 which supresses the problem message if e2fsck is run with
1104 the -n option.
1105
1106 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
1107 new problem codes.
1108
1109 * message.c (expand_dirent_expression): Add support for %dt which
1110 prints the dirent type information.
1111
1112 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
1113 and inode_imagic_map).
1114
1115 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
1116 to the context structure.
1117
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +000011181999-09-24 <tytso@valinux.com>
1119
1120 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
1121 e2fsprogs easier to port to non-Unix platforms.
1122
11231999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00001124
1125 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
1126 internal and external inode counts in sync when we
1127 decremented an inode whose link count was already zero.
1128 Now we skip incrementing or decrementing both link counts
1129 if we would cause an overflow condition.
1130 (expand_dir, expand_dir_proc): Change where we update the
1131 inode block count and size files so that the block count
1132 field is updated correctly when we create an indirect block.
1133
Theodore Ts'o78cf0541999-10-20 18:29:18 +000011341999-08-05 <tytso@valinux.com>
1135
1136 * super.c (check_super_block): Check to see whether the
1137 inodes_per_group value in the superblock is insanely too
1138 high.
1139
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +000011401999-08-02 <tytso@valinux.com>
1141
1142 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
1143 the block also shares data with the fs metadata when
1144 the count drops to 1, since the block should still be
1145 cloned, as fs metadata isn't included in the count.
1146
11471999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +00001148
1149 * Release of E2fsprogs 1.15
1150
Theodore Ts'ob55199e1999-07-19 15:37:46 +000011511999-07-19 <tytso@valinux.com>
1152
1153 * unix.c (usage): Add minimalist emergency help to the usage
1154 message.
1155
Theodore Ts'o5596def1999-07-19 15:27:37 +000011561999-07-18 <tytso@valinux.com>
1157
1158 * unix.c: Add support for calculating a progress bar if the -C0
1159 option is given. The function e2fsck_clear_progbar()
1160 clears the progress bar and must be called before any
1161 message is issued. SIGUSR1 will enable the progress bar,
1162 and SIGUSR2 will disable the progress bar. This is used
1163 by fsck to handle parallel filesystem checks. Also, set
1164 the device_name from the filesystem label if it is
1165 available.
1166
1167 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
1168 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
1169 structure which contains the last tenth of a percent
1170 printed for the user.
1171
1172 * message.c (print_e2fsck_message): Add call to
1173 e2fsck_clear_progbar().
1174
1175 * pass1.c (e2fsck_pass1):
1176 * pass2.c (e2fsck_pass2):
1177 * pass3.c (e2fsck_pass3):
1178 * pass4.c (e2fsck_pass4):
1179 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
1180 printing the resource tracking information.
1181
1182 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
1183 an error in the bitmaps, suppress printing the progress
1184 bar using the suppression flag for the remainder of the
1185 check, in order to clean up the display.
1186
Theodore Ts'o74033351999-07-01 03:00:47 +000011871999-06-30 <tytso@valinux.com>
1188
1189 * unix.c (check_mount): Clean up the abort message displayed when
1190 the filesystem is mounted and either stdout or stdin isn't
1191 a tty.
1192
11931999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +00001194
1195 * e2fsck.h:
1196 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
1197 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
1198 pass1_* be private static functions, and create new
1199 function e2fsck_use_inode_shortcuts which sets and clears
1200 the inode shortcut functions in the fs structure.
1201
1202 * e2fsck.h:
1203 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
1204 exported function.
1205
1206 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
1207 if a disconnected inode has any problems before
1208 connecting it to /lost+found. Bug and suggested fix by
1209 Pavel Machek <pavel@bug.ucw.cz>
1210
12111999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +00001212
1213 * unix.c (main): Add missing space in the disk write-protected
1214 message.
1215
Theodore Ts'od4b0ce01999-06-18 01:09:29 +000012161999-05-22 <tytso@rsts-11.mit.edu>
1217
1218 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
1219 code.
1220
1221 * super.c (check_super_block): Add check to make sure the total
1222 number of inodes is sane, since this can be calculated
1223 from the number of groups times the number of inodes per
1224 group. Offer to correct it if it is incorrect.
1225
Theodore Ts'oe79d1b21999-06-18 01:06:59 +000012261999-03-19 <tytso@rsts-11.mit.edu>
1227
1228 * pass5.c (check_block_end): Fix fencepost condition where when
1229 clearing the block padding we were missing the last position
1230 in the bitmap.
1231
Theodore Ts'o75d83be1999-05-18 03:16:36 +000012321999-05-17 <tytso@rsts-11.mit.edu>
1233
1234 * unix.c (reserve_stdio_fds): Add safety check in case
1235 reserve_stdio_fds couldn't open /dev/null.
1236
Theodore Ts'o4a9f5931999-03-16 19:32:52 +000012371999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
1238
1239 * util.c (print_resource_track): Use mallinfo if present to get
1240 more accurate malloc statistics.
1241
1242 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +00001243 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00001244
1245 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
1246
12471999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1248
1249 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
1250 that the block group number is printed. Add new prompt,
1251 PROMPT_UNLINK.
1252
12531999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1254
1255 * Release of E2fsprogs 1.14
1256
Theodore Ts'o9e51eca1999-01-09 16:32:31 +000012571999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1258
1259 * message.c (safe_print): New function which prints strings,
1260 converting non-printable characters using the '^' and
1261 M-notation. This function is now used to print directory
1262 name entries and pathnames.
1263
Theodore Ts'o73f17cf1999-01-04 07:35:45 +00001264Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
1265
1266 * unix.c (main): Reset the context before calling ext2fs_close(),
1267 to avoid referencing already freed memory.
1268
Theodore Ts'o556ad131998-12-19 08:10:58 +000012691998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
1270
1271 * Release of E2fsprogs 1.13
1272
Theodore Ts'o5a679c81998-12-03 16:40:38 +000012731998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
1274
1275 * Makefile.in: Updated dependencies.
1276
12771998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
1278
1279 * pass3.c (get_lost_and_found): If the filesystem is not opened
1280 read-only, then force /lost+found to be created if it is
1281 not present.
1282
1283 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
1284 operation.
1285
Theodore Ts'o1dde43f1998-11-14 04:18:28 +000012861998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1287
1288 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
1289 since e2fsck_free_context may reference data in ctx->fs.
1290
1291 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
1292 before checking ctx->fs->dblist.
1293
12941998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1295
1296 * pass1.c (e2fsck_pass1): Use the device check subroutine on
1297 FIFO's and Socket's, so that we catch bogus immutable inodes.
1298
1299 * pass2.c (process_bad_inode): Process bad socket and fifo's.
1300
1301 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
1302 PR_2_BAD_SOCKET.
1303
Theodore Ts'o7f813ba1998-09-03 01:26:03 +000013041998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
1305
1306 * problem.c: Add PR_3_NO_DIRINFO error code.
1307
1308 * super.c (check_super_value): Rename min and max to min_val and
1309 max_val to avoid possible cpp macro conflicts.
1310
1311 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
1312 possible cpp macro conflicts.
1313
1314 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
1315 cpp macro conflicts.
1316 (check_directory): Fix logic to avoid possible core dump
1317 in the case of ext2fs_get_dir_info returning NULL. (By
1318 the time we get here, it should never happen, but...).
1319 Also simply/streamline the control flow of the function.
1320
Theodore Ts'o24fc5031998-08-26 15:23:31 +000013211998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
1322
1323 * unix.c (check_if_skip): Move the "not cleanly mounted" check
1324 ahead of the maximal mount and too long since checked tests.
1325 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
1326 open, so that we don't open the filesystem using the same
1327 file descriptor as stdout or stderr.
1328
Theodore Ts'of75c28d1998-08-01 04:18:06 +000013291998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
1330
1331 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
1332 get to 100%.
1333
1334 * pass3.c (e2fsck_pass3): Change progress accounting to be
1335 consistent with the other e2fsck passes.
1336
1337 * e2fsck.c (e2fsck_run): At the end of each pass, call the
1338 progress function with the pass number set to zero.
1339
1340 * unix.c (e2fsck_update_progress): If the pass number is zero,
1341 ignore the call, since that indicates that we just want to
1342 deallocate any progress structures.
1343
Theodore Ts'o8144d671998-07-09 05:33:18 +000013441998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1345
Theodore Ts'o4a5fa191998-07-09 05:42:45 +00001346 * Release of E2fsprogs 1.12
1347
13481998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1349
Theodore Ts'o8144d671998-07-09 05:33:18 +00001350 * unix.c (main): Fix typo in checking the incompat feature set; it
1351 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
1352
Theodore Ts'o1fad9041998-07-07 05:44:43 +000013531998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
1354
1355 * badblocks.c (test_disk): Don't clear the existing bad blocks
1356 list when using e2fsck -c, since it may cause blocks with
1357 marginal errors to be dropped from the bad blocks list.
1358
Theodore Ts'o874b4d21998-07-06 14:33:12 +00001359Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
1360
1361 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
1362 compatibility with older kernels.
1363
Theodore Ts'o818180c1998-06-27 05:11:14 +000013641998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
1365
1366 * unix.c (e2fsck_update_progress): Remove unused variables.
1367
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +000013681998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
1369
1370 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
1371 collision with LFS API.
1372
1373 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
1374 properly initialized.
1375 (e2fsck_pass1): Don't allow the the boot loader inode to
1376 be a directory (clear the inode mode field if so).
1377
Theodore Ts'oefac9a11998-05-07 05:02:00 +000013781998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
1379
1380 * unix.c (PRS): Added new option -C, which causes e2fsck to print
1381 progress updates so that callers can keep track of the
1382 completion progress of e2fsck. Designed for use by
1383 progress, except for -C 0, which prints a spinning report
1384 which may be useful for some users.
1385
1386 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
1387 scheme (useful for larger filesystems).
1388
1389 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
1390 progress reporting functions.
1391
Theodore Ts'o4c77fe51998-04-30 17:35:59 +000013921998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1393
1394 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
1395 appropriate return type for comparison functions for qsort.
1396
1397 * e2fsck.h: Add #ifdef protection for unistd.h
1398
1399 * super.c: Remove header files already included by e2fsck.h
1400
Theodore Ts'o76f875d1998-04-27 01:41:13 +000014011998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
1402
1403 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
1404 size of the memory to be resized to ext2fs_resize_mem().
1405
Theodore Ts'o7e44f241998-04-01 03:16:29 +000014061998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
1407
1408 * Makefile.in: Change to use new installation directory variables
1409 convention. Fix uninstall rules to take $(DESTDIR) into
1410 account. Remove cat8dir from the installdirs target,
1411 since modern man package don't necessarily put the cat
1412 directory in /usr/man/cat?.
1413
Theodore Ts'o17dba281998-03-30 01:16:26 +000014141998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
1415
1416 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
1417 extern in e2fsck.h to prevent -Wall warnings.
1418
1419 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
1420
14211998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1422
1423 * super.c (check_super_block): Fix broken superblock sanity check
1424 when calculating blocks_per_group if s_log_frag_size !=
1425 s_log_block_size. Since we don't support fragments, this
1426 isn't a bug deal, but it's good to get it fixed.
1427
Theodore Ts'o246501c1998-03-24 16:22:38 +000014281998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
1429
1430 * unix.c: Fix bug in check of feature set, to make sure we can
1431 really fix this filesystem.
1432
1433 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
1434 num field be a 64 bit type. Add the problem code
1435 PR_1_FEATURE_LARGE_FILES
1436
1437 * problem.c: Add table entry for the problem code
1438 PR_1_FEATURE_LARGE_FILES.
1439
1440 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
1441 a problem for directory inodes. (Since it is also
1442 i_size_high now.) If there are no large_files, then
1443 clear the LARGE_FLAG feature flag. If there are
1444 large_files, but the LARGE_FLAG feature flag is not set,
1445 complain and offer to fix it.
1446 (check_blocks): Add support to deal with non-directory
1447 inodes that have i_size_high set (i.e., large_files).
1448 Don't give an error if a directory has preallocated
1449 blocks, to support the DIR_PREALLOC feature.
1450 (process_block, process_bad_block): The blockcnt variable
1451 is a type of blkcnt_t, for conversion to the new
1452 block_iterate2.
1453
1454 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
1455 a problem for directory inodes. (Since it is also
1456 i_size_high now.)
1457
1458 * message.c (expand_inode_expression): Print a 64-bits of the
1459 inode size for non-directory inodes. (Directory inodes
1460 can only use a 32-bit directory acl size, since
1461 i_size_high is shared with i_dir_acl.) Add sanity check
1462 so that trying to print out the directory acl on a
1463 non-directory inode will print zero.
1464 (expand_percent_expression): %B and %N, which print
1465 pctx->blkcount and pctx->num, can now be 64 bit
1466 variables. Print them using the "%lld" format if
1467 EXT2_NO_64_TYPE is not defined.
1468
1469 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
1470
1471 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
1472 field.
1473
Theodore Ts'ob6f79831998-03-09 13:10:37 +00001474Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1475
1476 * pass3.c (fix_dotdot_proc):
1477 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
1478 * message.c (expand_dirent_expression): Mask off the high eight
1479 bits of the directory entry's name_len field, so that it
1480 can be used for other purposes.
1481
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +00001482Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1483
1484 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
1485 include EXT2_FLAG_RESTART anymore, we need to adjust this
1486 routine so that it *does* return in the case of it seeing
1487 EXT2_FLAG_RESTART.
1488
1489 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
1490 done callback function, which may set context abort
1491 flags. So we need to test the context abort flags after
1492 we call ext2_get_next_inode().
1493 (process_inodes): If we abort due out of process_inodes,
1494 do a clean exit by breaking out of the for loop instead of
1495 just returning.
1496
1497 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
1498 considered a SIGNAL mask (i.e., requiring an immediate
1499 abort of processing to restart). FLAG_RESTART just means
1500 that we want to restart once pass 1 is complete.
1501
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +00001502Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1503
1504 * Change the progress function to return an integer; if returns 1,
1505 then the progress function is expected to have set the
1506 e2fsck context flag signalling a user abort, and the
1507 caller should also initiate a user abort.
1508
Theodore Ts'o63c49691998-02-20 05:24:59 +00001509Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1510
1511 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
1512 end_problem_latch() unless there was actually a problem
1513 latched. Simplifies semantics of the latch processing.
1514
Theodore Ts'o43139321998-02-16 22:34:46 +00001515Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1516
1517 * e2fsck.h: Add new field, priv_data to the e2fsck context
1518 structure. It should be used by callers of the e2fsck
1519 functions only, and not by anything in e2fsck itself.
1520
1521Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1522
1523 * super.c: Instead of call ext2fs_get_device_size(), define and call
1524 e2fsck_get_device_size(). (This function may be stubbed
1525 out in special versions of e2fsck.)
1526
1527 * pass3.c, pass4.c: Remove extra calls to the progress function
1528 that weren't needed.
1529
1530 * mke2fs.8.in: Update man page to note that the format of the bad
1531 block file is the same as the one generated by badblocks.
1532
Theodore Ts'o54be2cc1998-02-01 12:58:48 +00001533Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1534
1535 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
1536
1537 * e2fsck.h: Include <time.h> since it is needed
1538
1539 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
1540 processing.
1541
Theodore Ts'o24dd4021998-02-01 00:16:40 +00001542Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1543
1544 * unix.c (main): In the case where the filesystem revision is too
1545 high, print the message about the superblock possibly
1546 being corrupt.
1547
1548 * e2fsck.8.in: Add expanded comments about how the -b option
1549 works.
1550
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +00001551Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1552
1553 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
1554 the ext2-specific header files are in a flat directory.
1555
1556 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
1557 super.c, swapfs.c, unix.c: Explicitly cast all assignments
1558 from void * to be compatible with C++.
1559
1560Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1561
1562 * unix.c (sync_disk): Remove sync_disk and calls to that function,
1563 since ext2fs_close() now takes care of this.
1564
1565Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1566
1567 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
1568 ehandler.c, unix.c: Change use of private to be priv_data,
1569 to avoid C++ reserved name clash.
1570
Theodore Ts'o5be8dc21997-12-01 18:24:10 +00001571Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1572
1573 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
1574 of e2fsck_get_num_dirs, which has been removed.
1575
1576Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1577
1578 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
1579 to compile and install flushb.
1580
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +00001581Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1582
1583 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
1584 to make sure the extra i_blocks in a device are cleared if
1585 the immutable flag is set.
1586
1587 * util.c (print_resource_track): Fix typo which caused the
1588 time/resource tracking to print "Pass 1 :" instead of
1589 "Pass 1: ".
1590
Theodore Ts'ob8647fa1997-11-20 21:52:43 +00001591Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1592
1593 * pass3.c (expand_directory): Fix bug which could cause core dump
1594 when expanding the directory, and the bitmaps hadn't yet
1595 been read in. Also, only use ext2fs_write_dir_block when
1596 writing a directory block, not when writing out a fresh
1597 indirect block.
1598
Theodore Ts'o8039c481997-11-19 21:39:13 +00001599Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1600
1601 * pass1.c (process_bad_block): Fix bug where first_block wasn't
1602 getting incremented, which caused user to get a
1603 "Programming error?" warning if there was a bad block in a
1604 non-primary superblock/group_descriptor. Also fixed
1605 another bug so that ext2fs_bg_has_super() is consulted, to
1606 avoid problems when using a filesystem with the
1607 sparse_groups option set and there are bad blocks at the
1608 beginning of a group which doesn't have a superblock.
1609
Theodore Ts'of8188ff1997-11-14 05:23:04 +00001610Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1611
1612 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
1613 progress indicator function.
1614
1615 * pass1.c (scan_callback): Add call to the progress feedback
1616 function (if it exists).
1617
1618Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1619
1620 * super.c (check_super_block): Skip the device size check if the
1621 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
1622
1623 * iscan.c (main): Don't use fatal_error() anymore.
1624
1625 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
1626 calling fatal_error(0).
1627
1628 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
1629 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
1630
1631 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
1632
1633 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
1634
1635 * problemP.h: New file which separates out the private fix_problem
1636 data structures.
1637
1638 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
1639 swapfs.c util.c: allocate_memory() now takes a e2fsck
1640 context as its first argument, and rename it to be
1641 e2fsck_allocate_memory().
1642
Theodore Ts'o08b21301997-11-03 19:42:40 +00001643Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1644
Theodore Ts'o68227541997-11-04 04:25:22 +00001645 * unix.c (main): Add a special case check for the error code EROFS
1646 and display an appropriate error message for this case.
1647
Theodore Ts'o08b21301997-11-03 19:42:40 +00001648 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
1649 to take the e2fsck context as their first argument.
1650 Change dir_info.c routines to take an e2fsck_context,
1651 renamed them to start with e2fsck_ to avoid namespace
1652 issues, and changed them to store the directory
1653 information inside the e2fsck context.
1654 Added e2fsck_run() which calls all of the e2fsck passes in
1655 the correct order, and which handles the return of abort
1656 codes. Added abort processing, both via setjmp/longjmp
1657 and via flags in the e2fsck context. Use a flag in the
1658 e2fsck context instead of the restart_e2fsck global
1659 variable. Change uses of free and malloc to
1660 ext2fs_free_mem and ext2fs_get_mem.
1661
Theodore Ts'o291c9041997-10-31 06:17:08 +00001662Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1663
1664 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
1665 consistency.
1666
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00001667Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1668
1669 * pass3.c (get_lost_and_found): Check error return of
1670 EXT2_FILE_NOT_FOUND instead of ENOTDIR
1671
1672 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
1673 instead of ENOTDIR
1674
Theodore Ts'o622f5f21997-10-24 04:18:21 +00001675Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1676
Theodore Ts'o519149f1997-10-25 03:49:49 +00001677 * unix.c (PRS): Make the variable which getopt returns into be
1678 an int, so that it won't lose on platforms where char is
1679 unsigned.
1680
Theodore Ts'o622f5f21997-10-24 04:18:21 +00001681 * pass1b.c (clone_file): Fix bug in error reporting in the case
1682 where cs.errcode is non-zero.
1683
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00001684Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1685
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00001686 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
1687 RESOURCE_TRACK around code which uses init_resource_track
1688 and print_resource_track. (Not all systems have timeval)
1689
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00001690 * super.c: Remove excess #includes which are not necessary.
1691
1692 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
1693
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00001694Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1695
1696 * pass*.c, super.c: Massive changes to avoid using printf and
1697 com_err routines. All diagnostic messages are now routed
1698 through the fix_problem interface.
1699
1700Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1701
1702 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
1703 entries.
1704
1705 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
1706 PR_2_DUP_DOT_DOT.
1707
1708Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1709
1710 * problem.c: Added new problem codes for some of the
1711 superblock corruption checks, and for the pass header
1712 messages. ("Pass 1: xxxxx")
1713
1714 * util.c (print_resource_track): Now takes a description
1715 argument.
1716
1717Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1718
1719 * super.c, unix.c, e2fsck.c: New files to separate out the
1720 operating-specific operations out from e2fsck.c.
1721 e2fsck.c now contains the global e2fsck context management
1722 routines, and super.c contains the "pass 0" initial
1723 validation of the superblock and global block group
1724 descriptors.
1725
1726 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
1727 (nearly) all global variables and moved them to the e2fsck
1728 context structure.
1729
1730 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
1731 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
1732 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
1733
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00001734Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1735
1736 * message.c: Add compression for the word "Illegal"
1737
1738 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
1739 PR_2_BAD_BLOCK_DEV
1740
1741Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1742
1743 * pass1.c (pass1, check_device_inode), pass2.c
1744 (process_bad_inode): Use a more stringent test for a valid
1745 device.
1746
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00001747Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1748
1749 * e2fsck.c (check_mount): Add stronger warning message about the
1750 perils of running e2fsck on a mounted filesystem.
1751
Theodore Ts'o024996c1997-06-17 05:38:35 +00001752Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1753
1754 * Release of E2fsprogs 1.11
1755
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00001756Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1757
1758 * pass1.c (mark_table_blocks): Mark the superblock and group
1759 descriptor blocks first, so that any conflicts between
1760 these and the bitmap or inode table blocks is noticed.
1761
1762 * problem.c: Fix message printed out when a block or inode bitmap
1763 conflicts with other fs data, has the correct group number
1764 in it.
1765
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00001766Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1767
1768 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
1769
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001770Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1771
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00001772 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
1773 Hawes (whawes@star.net).
1774
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001775 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
1776 bad blocks command so that all of the filesystem gets
1777 tested in the case where the blocksize 2048 or 4096.
1778
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00001779Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
1780
1781 * Release of E2fsprogs version 1.10
1782
1783Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1784
1785 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
1786 where ext2fs_get_next_inode returns the
1787 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
1788
1789Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1790
1791 * Release of E2fsprogs version 1.09
1792
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00001793Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1794
1795 * Release of E2fsprogs version 1.08
1796
Theodore Ts'o521e3681997-04-29 17:48:10 +00001797Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1798
1799 * pass1b.c (clone_file_block): If we clone a directory, we need to
1800 update the dblist entry so that we check (and correct) the
1801 right directory block.
1802
1803Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1804
1805 * pass1.c (process_block): Don't clear blocks references to
1806 filesystem metadata; let pass 1B handle this case.
1807
1808 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
1809
1810 * pass1b.c (pass1d): Deal with a block which is shared with
1811 filesystem metadata.
1812
1813 * e2fsck.h: Make block_illegal_map be a global variable
1814
1815Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1816
1817 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
1818 feature.
1819 (get_backup_sb): New function which attempts to obtain the
1820 correct backup superblock (if possible).
1821
1822Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1823
1824 * e2fsck.c (main): Check the version of the library, and warn if
1825 the library is out of date; this happens generally due to
1826 users who manually install e2fsprogs.
1827
1828 * pass1.c (pass1_get_blocks): If the passed in inode number for
1829 get_blocks isn't what we're expecting pass back
1830 EXT2_ET_CALLBACK_NOT_HANDLED.
1831
Theodore Ts'o21c84b71997-04-29 16:15:03 +00001832Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
1833
1834 * Release of E2fsprogs version 1.07
1835
1836Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1837
1838 * icount.c: New file which implements an inode count abstraction.
1839 This significantly reduces amount of memory needed to
1840 check really large filesystems.
1841
1842 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
1843 abstraction.
1844
1845Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1846
1847 * dirinfo.c (dir_info_iter): New function which allows iteration
1848 over the directories in the dir_info map.
1849
1850 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
1851 over all directories in the dir_info structure, instead of
1852 iterating all inodes looking for directories, and then
1853 looking up the directories using get_dir_info().
1854
1855Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1856
1857 * pass1.c (pass1, process_block):
1858 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
1859 manual code to manage the directory block list information.
1860
1861 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
1862 (deallocate_inode): Call the ext2 library routine
1863 ext2_inode_has_valid_blocks() instead of
1864 inode_has_valid_blocks().
1865
1866 * swapfs.c (swap_inodes): Add check so that we don't try to call
1867 swap_inode_blocks unless the inode has valid blocks.
1868 (Otherwise a long fast symlink might cause
1869 swap_inode_blocks to erroneously get called.)
1870
1871Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1872
1873 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
1874 PR_2_DOT_DOT_NULL_TERM.
1875
1876 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
1877 .. entries are null-terminated, since the 2.0 kernel
1878 requires this (for no good reason).
1879
1880Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1881
1882 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
1883 that we can recover from missing inode tables.
1884
1885 * dirinfo.c (get_dir_info): If there are no directories in the
1886 dir_info abstraction, don't core dump (because dir_info is
1887 NULL).
1888
1889 * e2fsck.c (main): Don't try using the backup superblocks if there
1890 aren't any.
1891 (check_super_block): If there are illegal inode table or
1892 bitmaps, set the filesystem as being in error.
1893
1894Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1895
1896 * pass2.c (check_dir_block): Added check to make sure that rec_len
1897 is a a multiple of 4 (so that the directory entries are
1898 4-byte aligned).
1899
1900Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1901
1902 * Makefile.in (uninstall): Uninstall all programs in the PROGS
1903 line.
1904 (PROGS): Don't build and install the extend program by
1905 default.
1906
1907
1908Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1909
1910 * pass1.c (process_inodes): Make sure the stashed_ino variable is
1911 saved and restored as well.
1912 (pass1): For fast sym links, skip the check_blocks
1913 processing step altogether.
1914
1915Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1916
1917 * problem.c, message.c: New files, to completely refurbish how
1918 filesystem problems are reported to the user. The
1919 diagnostic messages are now encoded out in an easily
1920 customizable, extensible format. The messages printed out
1921 in preen mode are all on one line, and contain the device
1922 name.
1923
1924Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1925
1926 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
1927 deleted files.
1928
1929 * pass1.c (pass1): Ignore missing inode table errors during the
1930 scan, and just skip past those inodes.
1931
1932 * pass3.c (check_root): Remove root_ino argument, and assume that
1933 the root inode must be EXT2_ROOT_INO. Move responsibility
1934 of setting the parent of the root inode in the directory
1935 inode structure to pass2().
1936
1937 * pass2.c (check_dir_block): Don't allow links to the root
1938 directory.
1939
1940 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
1941 since the inode is no longer used.
1942
1943Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1944
1945 * e2fsck.c (main): If the superblock magic number is wrong, or the
1946 block group fails a sanity check, then automatically
1947 restart trying to use the backup superblocks.
1948
1949 * pass1.c (mark_table_blocks): Make the inode tables ahead of
1950 everything else; in the case where a bitmap block overlays
1951 the inode table, the inode table should take precedence.
1952
1953 * pass2.c (maybe_clear_entry): Make the deleted/unused error
1954 message fit on one line, since the error can happen during
1955 a preen pass. (We eventually need to revamp the whole
1956 e2fsck error reporting and prompting system, but that's a
1957 job for another day.)
1958
1959Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1960
1961 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
1962 for the benefit of the inode scan functions.
1963
1964 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
1965 indicating that an inode is in a bad block, mark that
1966 inode as being used, as well as in the inode "bb" map.
1967
1968 * pass2.c (maybe_clear_entry): New function which generalizes the
1969 error cases when a directory entry needs to be cleared.
1970 (check_dir_block): If an inode is in the "bb" map, offer
1971 to clear the directory entry, since the inode is in a bad
1972 block.
1973
1974 * pass4.c (pass4): If an inode is marked as used, but is is marked
1975 in the "bb" map, don't process it as a disconnected inode.
1976
1977Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1978
1979 * Release of E2fsprogs version 1.06
1980
Theodore Ts'o5c576471997-04-29 15:29:49 +00001981Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1982
1983 * e2fsck.c (main): Print out the version number of the shared
1984 library when using the -V option.
1985
1986 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
1987 consistency's sake.
1988
1989 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
1990 out the backup superblocks when we know we have a valid
1991 filesystem.
1992
1993Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1994
1995 * util.c (preenhalt): Make it explicit on preenhalt that running
1996 e2fsck manually means without the -a or -p flag.
1997
1998Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1999
2000 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
2001 (Linux/FT actually sets the mode bits, so we have to
2002 handle it specially.)
2003
2004 * e2fsck.c (check_if_skip): Print a message if the filesystem is
2005 just dirty, so that the user knows that it's about to be
2006 checked (since this will take a while).
2007
2008Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2009
2010 * pass4.c: If a disconnected inode is zero-length, prompt to
2011 delete it instead of connecting it to lost+found.
2012
2013Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2014
2015 * Release of E2fsprogs version 1.05
2016
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00002017Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2018
2019 * pass4.c (pass4): If the user refuses to connect an unattached
2020 inode to lost+found, don't try to set i_links_count. This
2021 is bad, since if the user says yes, the inode will be
2022 marked as unused, which is not necessarily the right
2023 thing, especially since the rest of the cleanup doesn't
2024 happen here.
2025
2026 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
2027 dellocating an inode. (Not strictly necessary, but...)
2028
2029 * pass4.c (pass4): Add "bonehead" explanation to the "programming
2030 error" message.
2031
2032Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2033
2034 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
2035 byte-swap the filesystem so that it is normalized. -S
2036 will byte-swap the filesystem regardless of its current
2037 byte-order.
2038
2039 * swapfs.c: New file, which will byte-swap a filesystem.
2040
2041Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2042
2043 * pass1.c (pass1): Change handling on files with non-zero dtime
2044 and non-zero i_link_count; before we treated them as
2045 deleted file per botched ext2 0.3c kernel behavior. We
2046 now clear dtime instead.
2047
2048Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2049
2050 * e2fsck.c (main): If e2fsck sets the clean bit, even if
2051 nothing else is changed, make sure FSCK_NONDESTRUCT is
2052 set (since after all having the filesystem set to
2053 invalid is an error. :-)
2054
2055Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2056
2057 * pass1.c (process_block): Make sure that meta data doesn't get
2058 accidentally set in the dir_blocks array (which could
2059 happen in some error condtions).
2060
2061 * pass1.c (pass1):
2062 * pass2.c (process_bad_inode): Check for fragments in a
2063 OS-independent fashion.
2064
2065Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2066
2067 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
2068 cleanup for the filesystem.
2069
2070Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2071
2072 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
2073
Theodore Ts'o62c06f71997-04-29 14:34:47 +00002074Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2075
2076 * Release of E2fsprogs version 1.04
2077
2078Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2079
2080 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
2081 try "e2fsck -b 8193" before allowing e2fsck to relocate
2082 inode table blocks.
2083
2084 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
2085 depending on the option to configure. Added targets for
2086 e2fsck.static and e2fsck.shared for people who want to
2087 build a static or shared variant manually.
2088
Theodore Ts'o7f88b041997-04-26 14:48:50 +00002089Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
2090
2091 * Release of E2fsprogs version 1.03
2092
2093Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
2094
2095 * e2fsck.c (show_stats): Don't use floating point to display
2096 percentage of non-contiguous files, as different libc
2097 handle result truncation differently, and this causes the
2098 test suite to bomb out depending on which libc you are
2099 using.
2100
2101 * util.c (allocate_memory): Fix error message to omit extraneous
2102 %%s.
2103
2104Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
2105
2106 * pass4.c (pass4):
2107 * pass2.c (check_dir_block):
2108 * pass1.c (pass1): Add support for dynamic first inode revision.
2109
2110Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
2111
2112 * pass3.c (check_root): Fix spelling typo
2113
2114Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
2115
2116 * e2fsck.c (check_super_block): If the superblock fails certain
2117 internal consistency checks, exit with a fatal error after
2118 printing the "superblock is corrupt message".
2119
Theodore Ts'o74becf31997-04-26 14:37:06 +00002120Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
2121
2122 * Release of E2fsprogs version 1.02
2123
2124Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
2125
2126 * pass1.c (process_block): Check to see if a file is "fragmented".
2127 i.e., non-contiguous. Note that any file which is larger
2128 than the block group is guaranteed to be non-contiguous.
2129 We may want to use a different hueristic for deciding
2130 whether or not a file is "fragmented".
2131
2132 * e2fsck.c (show_stats): Print statistics of how many
2133 non-contiguous files are on the system.
2134
2135Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
2136
2137 * badblocks.c (read_bad_blocks_file, test_disk): Fold
2138 functionality of test_disk() (which runs badblocks) into
2139 read_bad_blocks_file(); test_disk() now calls
2140 read_bad_blocks_file() with a NULL bad_blocks_file
2141 argument.
2142
2143Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
2144
2145 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
2146 #if defined(linux). The latter won't work if we're
2147 compiling -ansi.
2148
Theodore Ts'o297f47a1997-04-26 14:25:20 +00002149Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
2150
2151 * e2fsck.c (check_mount): For Linux systems, the check to see if
2152 the root is mounted read-only has to be done for all
2153 filesystems, not just for the root filesystem, due to the
2154 way that some /etc/rc scripts are set up.
2155
Theodore Ts'o50e1e101997-04-26 13:58:21 +00002156Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
2157
2158 * Makefile.in (install): Strip programs when they are installed.
2159 (e2fsck): Build e2fsck statically.
2160
2161Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
2162
2163 * util.c (preenhalt): Preenhalt now takes an argument, which is an
2164 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
2165 flag in the superblock in cases where preenhalt is called.
2166 All calls to preenhalt() were changed to either
2167 preenhalt(fs) or preenhalt(NULL) in a few cases where the
2168 fs pointer was not available. (Most notable, for block
2169 read/write errors.)
2170
2171Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
2172
2173 * ehandler.c:
2174 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
2175
2176Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
2177
2178 * e2fsck.c (show_stats): Show statistics about how many inodes
2179 have indirect, doubly indirect, and triply indirect
2180 blocks. Allow up to 8 digits for statistics, instead of
2181 merely 6, so things look pretty for large filesystems.
2182
2183 * pass1.c (pass1): Keep statistics about indirect, doubly
2184 indirect, and triply indirect blocks.
2185
2186 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
2187 pass 1.
2188
2189Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
2190
2191 * util.c, ehandler.c: Move #include of <sys/resource.h> after
2192 #include of "e2fsck.h", since sys/resource.h may depend on
2193 sys/time.h, which is #included in e2fsck.h.
2194
2195Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
2196
2197 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
2198 function to determine if the device is mounted.
2199
2200 * e2fsck.c (main): Add better error messages if ext2fs_open()
2201 fails.
2202
2203Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
2204
2205 * pass1.c (check_blocks): If we're clearing a directory, clear
2206 pb.is_dir so we don't do the following check of making
2207 sure the directory size matches; this is pointless, since
2208 we've already cleared the inode.
2209
2210Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2211
2212 * pass1.c (bad_primary_block): New function, called by
2213 process_bad_block, which explains the facts of life to the
2214 user when a block in the primary superblock or primary
2215 group descriptors is bad.
2216
2217 * pass2.c (check_dot): Handle the case where the first directory
2218 entry is used, but not ".".
2219
2220 * pass2.c (check_dotdot): Handle the case where the second directory
2221 entry is used, but is not "..".
2222
2223Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2224
2225 * e2fsck.c (check_super_block): Get the size of the physical
2226 device and if it is smaller than the reported size of the
2227 filesystem, report an error.
2228
2229Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
2230
2231 * e2fsck.c (check_if_skip): Print the number of allocated files and
2232 blocks on clean filesystems.
2233
2234Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
2235
2236 * e2fsck.8: Updated date and version number.
2237
2238Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
2239
2240 * pass1.c (check_blocks): Check that directory size matches *exactly*
2241 the count of allocated blocks.
2242
2243Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
2244
2245 * pass1b.c (pass1d): Free the shared[] array when we're done with
2246 it to avoid a memory leak.
2247
2248 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
2249 block_dup_map.
2250
2251 * pass2.c (process_bad_inode): When clearing the inode, make sure
2252 the pathname is freed, to prevent a memory leak.
2253
2254 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
2255 when we're finished with them.
2256 (check_block_bitmaps): Free free_array when we're finished
2257 with them.
2258
2259 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
2260 linking the executable.
2261
2262 * pass2.c (process_bad_inode): Even on OS's that don't support the
2263 fragment fields, make sure the Linux equivalent fields are
2264 set to zero. If an OS wants to reuse these fields, which
2265 is probably a bad idea (although we may get desperate in
2266 the future) this code will have to be changed.
2267
2268 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
2269 on the inode field, and then blockcnt field. This is just
2270 to keep the ordering of dir_blocks the same on all
2271 platforms when there are more than on missing directory
2272 blocks, which are indicated directories with holes, which
2273 are indicated with the block number being set to zero.
2274
2275Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2276
2277 * pass1.c (check_blocks, process_block): check_blocks() modified
2278 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
2279 the inode is a directory. process_block() now checks to
2280 see if a directory has a "hole", or missing block. If so,
2281 this fact is recorded in the directory block list so that
2282 the problem can be resolved in pass #2.
2283
2284 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
2285 allocate new blocks for directories with "holes". Called
2286 out of check_dir_block if a block in the directory block
2287 list is zero.
2288
2289 * pass3.c (get_lost_and_found): Move location of free(block) to
2290 prevent possible memory leak.
2291
2292Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2293
2294 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
2295 instead of alloca() --- alloca is not portable! Check to
2296 make sure the filename is not longer than EXT2_NAME_LEN,
2297 and offer to fix it by truncating it, since it should
2298 never happen.
2299
2300 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
2301 not portable!! In any case putenv() in some systems must
2302 take a static character array or malloc()'ed memory;
2303 passing memory allocated using alloca() to putenv() is not
2304 advisable.
2305
2306 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
2307 alloca() --- alloca() is not portable!!!
2308
2309Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
2310
2311 * pass1b.c (pass1c):
2312 * pass3.c (check_root, get_lost_and_found):
2313 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
2314 to read/write the directory block.
2315
2316Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
2317
2318 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
2319 make sure VMIN and VTIME are set correct.
2320
2321Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
2322
2323 * pass1.c (mark_block_used): Change to be an inline function.
2324 Assume that the block validity checks are already done,
2325 and use the fast variant of the bitmap functions.
2326
2327Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
2328
2329 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
2330 bounds of the bitmaps in advance, and then use the fast
2331 variant of e2fs_test_{block,inode}_bitmap.
2332
2333 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
2334 the bounds checking has already been done earlier.
2335
2336Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
2337
2338 * pass1.c (pass1): Allocate and free the block_illegal_map, which
2339 is used for shortcut processing in process_block.
2340 (mark_table_blocks): Initialize block_illegal_map with the
2341 filesystem blocks.
2342 (describe_illegal_block): New helper function that
2343 describes why a block is illegal.
2344 (process_block): Use block_illegal_map as a shortcut
2345 to determine whether a block is bad. Use
2346 describe_illegal_block to print out why the block is illegal.
2347
2348Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
2349
2350 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
2351
2352 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
2353 <mntent.h> if they don't exist. (Mostly so that "make
2354 depend" works.)
2355
2356 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
2357 it exists).
2358
2359 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
2360 exist.
2361
2362Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2363
2364 * pass2.c (process_bad_inode, check_for_zero_long,
2365 check_for_zero_char): Change long to u32, and char to u8.
2366
2367Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2368
2369 * util.c (inode_has_valid_blocks):
2370 * pass2.c (process_bad_inode):
2371 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
2372 LINUX_S_IS* instead of S_IS*.
2373
2374 * e2fsck.h: Don't #include <sys/stat.h>
2375
2376 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
2377 this program is pretty much useless if BLKFLSBUF isn't
2378 supported.)
2379
2380 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
2381 used.
2382
2383Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
2384
2385 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
2386 to allocate space for file names instead of using fixed size buffers.
2387 (process_bad_inode): Only check inode frag fields if
2388 HAVE_EXT2_FRAGS is defined (by configure).
2389 * pass1.c (pass1): Only check the inode frag fields if
2390 HAVE_EXT2_FRAGS is defined (by configure).
2391
2392 * e2fsck.c (check_mount): Only check for a mounted filesystem if
2393 HAVE_MNTENT_H is defined (by configure).
2394 (PRS): Use alloca to allocate the new path string, instead of
2395 having a fixed size buffer (which was the wrong size anyway).
2396 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
2397 is defined.
2398
2399 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
2400 defined (by configure).
2401
2402 * Makefile.in: Rewritten to conform to GNU coding standards and
2403 support separate compilation directories.
2404
2405Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
2406
2407 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
2408
Theodore Ts'of3db3561997-04-26 13:34:30 +00002409Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
2410
2411 * pass1.c (unwind_pass1): Clear the file type statistics counter
2412 when pass 1 needs to be restarted from scratch.
2413
2414 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
2415 being reallocated to blocks in the next block group,
2416 instead of the current block grup.
2417
2418 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
2419 inode.i_links_count is set.
2420
2421Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
2422
2423 * pass1.c (process_block): Add checks for if the block is
2424 trepassing on a superblock or group descriptor table.
2425
2426Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
2427
2428 * main.c (corrupt_msg): Extend the message which is printed out
2429 when the superblock is corrupt, to include the suggestion
2430 of using the -b option to specify an alternate superblock.
2431
2432Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
2433
2434 * badblocks.c (read_bad_blocks_file): If we are adding or
2435 replacing bad blocks in the bad blocks inode, sanity check
2436 the bad block inode first, and clear out any illegal blocks.
2437
2438 * pass2.c (check_name): Don't bomb out if the attempt to get the
2439 pathname of the containing directory returns an error; the
2440 directory may be too badly damaged to expect that
2441 ext2fs_get_pathname will always succeed. Use "???" if the
2442 pathname can't be obtained (it's only for a printf to the
2443 user anyway).
2444
2445 The name of the containing directory and the bad filename
2446 were incorrectly interchanged in the user message. Fixed.
2447
2448 * pass2.c (check_name, check_dir_block): Use a common static
2449 string for the unknown pathname.
2450
2451Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
2452
2453 * Fixed lots of printf formats to make sure that block and inode
2454 numbers are printed as unsigned integers.
2455
2456Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
2457
2458 * pass5.c (check_block_end): Fix calculation of how the last block
2459 in the block bitmap should be calculated.
2460
2461Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
2462
2463 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
2464 be an ext2fs_inode_bitmap, and free it properly.
2465
2466 * e2fsck.h
2467 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
2468 level to the superblock.
2469
2470Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
2471
2472 * e2fsck.c (usage): Fixed bogus usage message.
2473
2474Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
2475
2476 * pass1.c (process_bad_block): Fixed bug so that blocks in the
2477 backup superblocks and group descriptors are handled gracefully.
2478