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