blob: 9b7f0af25f28c46b4852dcb884be2b54cd774a64 [file] [log] [blame]
Theodore Ts'o83e6ac82001-07-30 16:29:52 -040012001-07-30 Theodore Tso <tytso@valinux.com>
2
3 * unix.c (check_mount): Remove the code which tested for the root
4 filesystem being mounted read-only, and depend on the
5 results flags from ext2fs_check_if_mounted.
6
Theodore Ts'o1e165262001-07-29 11:48:10 -040072001-07-29 Theodore Tso <tytso@valinux.com>
8
Theodore Ts'o6d222f32001-07-29 12:06:58 -04009 * unix.c (check_if_skip): Free the e2fsck context structure on a
10 normal clean filesystem exit, to make it easier to find
11 real memory leaks.
12 (PRS): Only update the path to include /sbin at the
13 beginning if the -c option is given, again to make it
14 easier to find memory leaks.
Theodore Ts'o0628ae32001-07-29 12:26:46 -040015 (main): Move the final print_resource_track call after the
16 filesystem and the context are freed.
Theodore Ts'o6d222f32001-07-29 12:06:58 -040017
18 * journal.c (e2fsck_journal_init_dev): Avoid memory leak if we
19 need to search for the journal device.
20 (e2fsck_journal_release): Free the journal IO channel when
21 we release the journal handle, to avoid a memory leak.
22
Theodore Ts'o1e165262001-07-29 11:48:10 -040023 * e2fsck.c (e2fsck_reset_context): Fix bug; only close the io
24 channel if it is *different* from the filesystem io
25 channel.
26
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -0400272001-07-27 Theodore Tso <tytso@valinux.com>
28
Theodore Ts'oa092c562001-07-27 22:40:09 -040029 * problem.c (PR_1_SET_IMMUTABLE): Clarify problem message.
30
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -040031 * pass1.c (e2fsck_pass1): Check for symlinks that have the
32 immutable flag set (and offer to clear them).
33
Theodore Ts'o24ceb242001-07-26 09:02:56 -0400342001-07-26 Theodore Tso <tytso@valinux.com>
35
36 * pass1.c (e2fsck_pass1): Free ctx->block_ea_map at the end of
37 pass 1.
38
Theodore Ts'o14fe1c32001-07-25 19:48:24 -0400392001-07-25 Theodore Tso <tytso@valinux.com>
40
41 * pass1.c (check_ext_attr): Skip zero-length EA entries.
42
43 * problem.c: PR_1_EA_ALLOC_COLLISION shouldn't abort, but should
44 prompt to clear the EA block.
45
Theodore Ts'oadee8d72001-07-23 00:17:49 -0400462001-07-22 Theodore Tso <tytso@valinux.com>
47
48 * journal.c (ll_rw_block): Use ctx->journal_io instead of the
49 filesystem's io_channel.
50 (e2fsck_journal_init_dev): New function which supports
51 initialization of the external journal.
52 (e2fsck_get_journal): Remove code which flagged an error
53 if the superblock reported the use of an external journal.
54 (ext3_journal_via_mount): Remove unsued, #ifdefed out function.
55
56 * problem.c, problem.h: Removed error codes no longer used
57 (PR_0_JOURNAL_UNSUPP_DEV, PR_0_JOURNAL_BAD_DEV,
58 PR_0_JOURNAL_UNSUPP_UUID) and replace them with new error
59 codes related with failures in loading the external
60 journal (PR_0_JOURNAL_UNSUPP_MULTIFS,
61 PR_0_CANT_FIND_JOURNAL, PR_0_EXT_JOURNAL_BAD_SUPER).
62 Also changed the text assocated with PR_0_JOURNAL_BAD_UUID
63 to reflect the case where the external journal isn't
64 correct for this filesystem.
65
66 * unix.c (PRS), e2fsck.8.in: Add new option -j which allows
67 the user to specify the pathname to find the external journal.
68
69 * e2fsck.c (e2fsck_reset_context): Close journal_io if it isn't
70 the same as the filesystem io_channel.
71
72 * e2fsck.h: Add new fields (journal_io and journal_name) in the
73 context structure to support external journals.
74
Theodore Ts'od3124012001-07-20 14:13:49 -0400752001-07-20 Theodore Tso <tytso@valinux.com>
76
77 * unix.c (main): Add an explicit warning when the filesystem is
78 left not completely fixed when e2fsck exits. (Addresses
79 Debian bug #104502.)
80
Theodore Ts'o55fd07e2001-07-19 16:31:25 -0400812001-07-19 Theodore Tso <tytso@valinux.com>
82
83 * pass1.c (check_ext_attr): The entire EA block is now checked to
84 make sure that parts of the EA block aren't being used for
85 multiple purposes.
86
87 * Makefile.in e2fsck.h, region.c: New file which is used to detect
88 collisions in extended attribute block.
89
90 * problem.h, problem.c (PR_1_EA_MULTI_BLOCK, PR_1_EA_ALLOC_REGION,
91 PR_1_EA_ALLOC_COLLISION, PR_1_EA_BAD_NAME,
92 PR_1_EA_BAD_VALUE): Add new problem codes.
93
Theodore Ts'o3c6b8972001-07-10 14:27:58 -0400942001-07-10 Theodore Tso <tytso@valinux.com>
95
96 * journal.c (e2fsck_run_ext3_journal): Only call ext3_flush() if
97 the superblock is dirty.
98
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -0400992001-07-07 Theodore Tso <tytso@valinux.com>
100
Theodore Ts'o7b63fff2001-07-07 23:01:31 -0400101 * pass1b.c (pass1b, process_pass1b_block): Change the num_bad
102 field calculation so that it only counts EA block entries
103 as a single multiply claimed block (since once we clone
104 the EA blocks for one inode, we fix the problem for all of
105 the other inodes). Also, I moved the num_bad calculation
106 from process_pass1b_block to the end of pass1b. This
107 fixes a *significant* performance bug in pass1b which hit
108 people who had to had a lot of multiply claimed blocks.
109 (Can you say O(n**3) boys and girls? I knew you could...
110 Fortunately, this case didn't happen that much in actual
111 practice.)
112
113 * pass1.c (e2fsck_pass1): Defer inodes which have an extended
114 attribute block for later processing to avoid extra seeks
115 across the disk.
116 (process_inode_cmp): If there is no indirect block, sort
117 by the extended attribute (i_file_acl) block.
118
Theodore Ts'o7abb2bd2001-07-07 13:20:34 -0400119 * pass1b.c (clone_file_block): Fix bugs when cloning extended
120 attribute blocks. Moved free of block_buf to after the
121 code which clones the extattr block, and fixed logic for
122 changing pointers to the extended attribute field in the
123 inodes which were affected.
124 (decrement_badcount): New function which is used whenever
125 we need to decrement the number of files which claim a
126 particular bad block. Fixed bug where delete_file wasn't
127 checking check_if_fs_block() before clearing the entry in
128 block_dup_map. This could cause a block which was claimed
129 by multiple files as well as the filesystem metadata to
130 not be completely fixed.
131
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -0400132 * pass1.c (adjust_extattr_refcount): Add new function which
133 adjusts the reference counts of extended attribute blocks
134 if needed, both up and down.
135 (e2fsck_pass1): If the refcount or refcount_extra
136 structure are present, call adjust_extattr_refcount(),
137 and free it afterwards.
138
139 * problem.h, problem.c (PR_1_EXTATTR_READ_ABORT,
140 PR_1_EXTATTR_REFCOUNT, PR_1_EXTATTR_WRITE): Add new
141 problem codes.
142
Theodore Ts'o342d8472001-07-02 11:54:09 -04001432001-07-02 Theodore Tso <tytso@valinux.com>
144
145 * pass1.c (e2fsck_pass1, check_ext_attr, check_blocks): Add
146 initial support for scanning extended attribute blocks.
147
148 * e2fsck.c (e2fsck_reset_context): free extended attribute
149 refcount structure.
150
151 * e2fsck.h: Add new fields for accounting for the extended
152 attribute blocks.
153
154 * Makefile.in, ea_refcount.c, e2fsck.h: Add new file which
155 implements a reference count abstraction.
156
157 * problem.c, problem.h: Add new problem codes PR_1_ALLOCATE_REFCOUNT,
158 PR_1_READ_EA_BLOCK, PR_1_BAD_EA_BLOCK, PR_2_FILE_ACL_BAD
159
160 * message.c: Add "@a" as an abbreviation for "extended attribute"
161
162 * pass1b.c (clone_file): Add code which handles cloning an
163 extended attribute block.
164
165 * pass1b.c (delete_file):
166 * pass2.c (deallocate_inode): If the inode contains an extended
167 attribute block in the file_acl field, clear it and
168 deallocate the block.
169
1702001-06-28 Theodore Tso <tytso@valinux.com>
171
172 * pass2.c (e2fsck_process_bad_inode): Deal with inodes which are
173 marked bad because of an invalid file_acl (either because
174 EXT2_FEATURE_COMPAT_EXT_ATTR is not set, or because the
175 block number in file_acl is bad.
176
Theodore Ts'o636a9542001-06-29 17:57:26 -04001772001-06-29 Theodore Tso <tytso@valinux.com>
178
179 * unix.c (show_stats): Use long long to calculate the percentage
180 of the number of blocks in use in the filesystem.
181
Theodore Ts'o67960132001-06-23 00:16:37 -04001822001-06-23 Theodore Tso <tytso@valinux.com>
183
184 * Release of E2fsprogs 1.22
185
Theodore Ts'od90f3492001-06-22 21:01:17 -04001862001-06-22 Theodore Tso <tytso@valinux.com>
187
188 * flushb.c: Use platform independent method of defining the
189 BLKFLSBUF ioctl. Also include sys/mount.h since on newer
190 platforms BLKFLSBUF is defined there.
191
Theodore Ts'o42475e22001-06-22 20:35:38 -04001922001-06-19 Theodore Tso <tytso@valinux.com>
193
194 * super.c (release_inode_blocks): Don't try to release the blocks
195 if the orphaned inode is a device file, symlink, or some
196 other kind of special file that doesn't have a block list.
197
Theodore Ts'of4f75ba2001-06-16 01:14:28 +00001982001-06-15 Theodore Tso <tytso@valinux.com>
199
200 * Release of E2fsprogs 1.21
201
Theodore Ts'ob6a08072001-06-14 01:16:17 +00002022001-06-13 Theodore Tso <tytso@valinux.com>
203
204 * unix.c (check_if_skip): Adapted patch from Andreas Dilger which
205 prints the number of mounts or days elapsed since the last
206 check when e2fsck is forced to check an otherwise clean
207 filesystem.
208
Theodore Ts'ocbbf0312001-06-13 00:12:04 +00002092001-06-12 Theodore Tso <tytso@valinux.com>
210
211 * badblocks.c: Stop using the compatibility badblocks function,
212 and use the ext2fs_badblocks_* functions instead.
213
Theodore Ts'o5df55d72001-06-11 07:00:04 +00002142001-06-11 Theodore Tso <tytso@valinux.com>
215
Theodore Ts'o3034f622001-06-11 15:17:45 +0000216 * unix.c (PRS): Fix bug introduced in 1.20 which broke the -F
217 flag.
218
Theodore Ts'o5df55d72001-06-11 07:00:04 +0000219 * Makefile.in: Add message.c and swapfs.c to the list of source
220 files to build the make depend.
221
222 * swapfs.c, unix.c: Only support the -s and -S options to e2fsck
223 if ENABLE_SWAPFS is defined.
224
Theodore Ts'o725c4742001-06-08 11:55:44 +00002252001-06-08 Theodore Tso <tytso@valinux.com>
226
227 * recover.c, revoke.c: Synchronize with ext3 0.7a
228
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00002292001-06-02 Theodore Tso <tytso@valinux.com>
230
Theodore Ts'oa479fe62001-06-02 04:50:14 +0000231 * recovery.c (scan_revoke_records): Fix bug in recovery code;
232 missing byte order conversion.
233
Theodore Ts'ofdbdea02001-06-02 04:26:26 +0000234 * pass1.c (mark_inode_bad): Replace alloc_bad_map with a function
235 which sets the bit in the bad inode bitmap.
236 (e2fsck_pass1): Check for fast symlinks with an invalid
237 size, and set the bad inode map in that case.
Theodore Ts'o62b6d472001-06-02 04:37:02 +0000238 (check_size): Check i_size_high for special files and
239 prompt to clear it along with i_size if non-zero.
Theodore Ts'ofdbdea02001-06-02 04:26:26 +0000240
241 * pass2.c (e2fsck_process_bad_inode): Check for fast symlinks with
242 an invalid size and prompt the user if the inode should be
243 cleared.
244
245 * problem.h, problem.c (PR_2_SYMLINK_SIZE): Added new problem code.
246
Theodore Ts'o71d521c2001-06-01 19:29:36 +00002472001-06-01 Theodore Tso <tytso@valinux.com>
248
Theodore Ts'o2f686ac2001-06-02 00:38:40 +0000249 * problem.c, problem.h: Change PR_0_JOURNAL_UNSUPP_INCOMPAT and
250 PR_0_JOURNAL_UNSUPP_ROCOMPAT so they aren't fatal errors,
251 but prompt to see if the user should abort. Removed the
252 PR_0_JOURNAL_RESET_COMPAT problem code.
253
254 * journal.c (e2fsck_journal_load): If there are incompatible
255 journal flags, just return an error code.
256 (e2fsck_check_ext3_journal): If e2fsck_journal_load
257 returns an error code indicating that there are
258 incompatible journal flag, check to see if we should
259 abort, and then offer to clear the journal.
Theodore Ts'oe3338452001-06-14 07:11:33 +0000260 (Addresses Debian bug #98527.)
Theodore Ts'o2f686ac2001-06-02 00:38:40 +0000261
Theodore Ts'o797f5ef2001-06-01 23:49:46 +0000262 * Makefile.in: Move include/asm/types.h.in to
Theodore Ts'o36a23e12001-06-02 00:54:10 +0000263 lib/ext2fs/ext2_types.h.in.
Theodore Ts'o797f5ef2001-06-01 23:49:46 +0000264
2652001-06-01 Theodore Tso <tytso@valinux.com>
266
Theodore Ts'o71d521c2001-06-01 19:29:36 +0000267 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
268 pass1_check_directory): Add a safety check to make sure
269 ctx->stashed_inode is non-zero.
270
271 * pass1b.c (pass1b): Use e2fsck_use_inode_shortcuts() to disable
272 the inode shortcut processing, instead of manually
273 clearing only half of the function pointers that needed to
274 be NULL'ed out. This caused nasty bugs if the last inode
275 in the filesystem needed dup block processing.
276
277 * pass1b.c (clone_file_block): When cloning a directory's metadata
278 block, don't try to update the directory block list
279 database, since indirect blocks aren't stored in the
280 database and the resulting error will abort the file clone
281 operation.
282
Theodore Ts'o561cd4d2001-05-25 16:40:56 +00002832001-05-25 Theodore Tso <tytso@valinux.com>
284
Theodore Ts'obb185862001-05-25 17:35:00 +0000285 * Release of E2fsprogs 1.20
286
2872001-05-25 Theodore Tso <tytso@valinux.com>
288
Theodore Ts'o561cd4d2001-05-25 16:40:56 +0000289 * journal.c (e2fsck_journal_reset_super): Remove extraneous line
290
Theodore Ts'oc7f23362001-05-23 22:19:47 +00002912001-05-23 Theodore Tso <tytso@valinux.com>
292
293 * journal.c (e2fsck_journal_reset_super): Fix bug; the reset
294 journal wasn't getting written out to disk since the dirty
295 bit wasn't being set on the buffer.
296 (e2fsck_journal_load): Don't print an error message if the
297 journal version number is wrong; just return a error code
298 reflecting this fact. If the block type in the journal
299 superblcok is obviously not a version number, report the
300 journal is corrupted.
301 (e2fsck_check_ext3_journal): On an unsupported journal
302 version, prompt to abort by default, but then offer a
303 chance to clear the journal as corrupt.
304
305 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_VERSION): Added new
306 problem code.
307
Theodore Ts'o424cd2b2001-05-14 04:06:56 +00003082001-05-14 Theodore Tso <tytso@valinux.com>
309
Theodore Ts'o21afac02001-05-14 12:47:41 +0000310 * pass1.c: Treat inodes with a low dtime (that were from a
311 corrupted orphan list) specially.
312
313 * problem.c, problem.h: Add new problem codes PR_1_LOW_DTIME and
314 PR_1_ORPHAN_LIST_REFUGEES, and a new latch group,
315 PR_LATCH_LOW_DTIME.
316
317 * problemP.h: Expand the size of the problem flag to be an int
318 instead of a short. Expand space in the flag word which
319 is reserved for problem latch flags from 3 bits to 8 bits.
320
Theodore Ts'o54c637d2001-05-14 11:45:38 +0000321 * e2fsck.h, scantest.c: Change location of ext2_fs.h to be
322 ext2fs/ext2_fs.h
323
Theodore Ts'o424cd2b2001-05-14 04:06:56 +0000324 * super.c (check_super_block): Be more strict on checking
325 s_r_blocks_count superblock field.
326
3272001-05-13 Theodore Tso <tytso@valinux.com>
328
329 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_ROCOMPAT,
330 PR_0_JOURNAL_UNSUPP_INCOMPAT, PR_0_JOURNAL_RESET_COMPAT):
331 New problem codes.
332
333 * journal.c (e2fsck_journal_load): Use a problem code to
334 report unsupported feature flags. There is code to
335 clear unsupported flags, but since this is dangerous,
336 it's not allowed in the problem code table.
337
3382001-05-11 Andreas Dilger <adilger@turbolinux.com>
339
340 * journal.c (e2fsck_journal_reset_super): initialize the journal
341 sequence number to a random value to avoid recovering
342 bad transactions from a corrupt journal.
343
Theodore Ts'o328a5ce2001-05-13 20:21:25 +00003442001-05-13 Theodore Tso <tytso@valinux.com>
345
346 * journal.c: Code cleanup; initialize journal_enable_debug using
347 an initializer.
348
Theodore Ts'ofc9a69c2001-05-12 13:43:46 +00003492001-05-12 Theodore Tso <tytso@valinux.com>
350
351 * unix.c (PRS): Skip validation of -C's file descriptor if it is
352 zero, since that is special case.
353
Theodore Ts'of0b8c872001-05-09 06:03:58 +00003542001-05-09 Theodore Tso <tytso@valinux.com>
355
356 * super.c (release_orphan_inodes): Add gettext quoting around
357 "Truncating" and "Clearing" for i18n.
358
Theodore Ts'ob9852cd2001-05-05 05:14:59 +00003592001-05-05 Theodore Tso <tytso@valinux.com>
360
Theodore Ts'oe39ac922001-05-05 06:47:24 +0000361 * util.c (fatal_error): Use the correct magic number when checking
362 the magic number for the io_channel data structure. Also
363 remove extraneous call to io_channel_flush() that was left
364 over from an editing session.
365
Theodore Ts'ob9852cd2001-05-05 05:14:59 +0000366 * pass2.c (check_dir_block): Ignore EXT2_ET_DIR_CORRUPTED errors
367 from ext2fs_read_dir_block().
368
Theodore Ts'o5f629b72001-05-01 20:01:08 +00003692001-05-01 Theodore Tso <tytso@valinux.com>
370
Theodore Ts'oae8160e2001-05-01 21:13:37 +0000371 * unix.c (PRS): Validate the completion information file
372 descriptor so that the completion bar won't get
373 accidentally written onto the disk.
374
Theodore Ts'o5f629b72001-05-01 20:01:08 +0000375 * e2fsck.8.in: Add explanation that you can use mke2fs -n -b
376 blocksize to printout alternate superblock locations.
377
Theodore Ts'obc57f152001-04-26 04:11:46 +00003782001-04-26 Theodore Tso <tytso@valinux.com>
379
380 * unix.c (check_if_skip): If the max_mount_count is zero, treat it
381 as having no count set.
382
Theodore Ts'oef059872001-04-17 00:40:02 +00003832001-04-16 Theodore Tso <tytso@valinux.com>
384
385 * super.c (check_super_block): Fix bad calculation of
386 inodes_per_block, and tighten min/max checks to be a bit
387 more paranoid. Thanks to Andreas Dilger for pointing out
388 this bug.
389
Theodore Ts'o1f735032001-03-29 19:00:50 +00003902001-03-29 Theodore Tso <tytso@valinux.com>
391
Theodore Ts'o15986f72001-03-29 19:22:16 +0000392 * journal.c (mark_buffer_uptodate): Add emulation of kernel
393 function mark_buffer_uptodate.
394
Theodore Ts'o1f735032001-03-29 19:00:50 +0000395 * recovery.c, revoke.c: Synchronize with 0.6b ext3 files.
396
Theodore Ts'od0515212001-02-13 04:32:53 +00003972001-02-12 Theodore Tso <tytso@valinux.com>
398
399 * journal.c (e2fsck_run_ext3_journal): Force a flush of the
400 filesystem and io_channel before replaying the journal.
401
Theodore Ts'oa5c33f22001-01-18 02:34:03 +00004022001-01-17 Theodore Ts'o <tytso@valinux.com>
403
404 * pass1.c (check_blocks): Fix large file checking code so that
405 files > 2GB are considered large files, and restrict
406 directories from being > 2GB.
407
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +00004082001-01-12 Theodore Ts'o <tytso@valinux.com>
409
Theodore Ts'oa9ca2012001-01-12 21:53:25 +0000410 * journal.c (e2fsck_journal_fix_unsupported_super): Remove unused
411 function. Add FIXME notes to e2fsck_get_journal(), from
412 Andreas Dilger.
413
414 * pass1.c (e2fsck_pass1): Cap the maximum legal size of a file by
415 the limit caused by the fact that i_blocks is in 512 byte
416 units, and that the Linux buffer cache also fundamentally
417 assumes 512 byte sectors.
418 Make sure that the journal inode is a regular file, and
419 when clearing an unused journal inode, make sure the
420 icount db is updated.
421
422 * problem.c, problem.h (PR_1_JOURNAL_BAD_MODE): Add new problem code.
423
Theodore Ts'o37b6b292001-01-12 21:16:13 +0000424 * problem.c: For PR_1_RESERVED_BAD_MODE, print a description of
425 the reserved inode. In PR_0_JOURNAL_HAS_JOURNAL, prompt
426 to clear the journal, rather than deleting it (which is
427 more accurate). (From Andreas Dilger.)
428
Theodore Ts'o6a6d3d42001-01-12 21:11:24 +0000429 * journal.c: Make sure all functions which return an error code
430 use the errcode_t return type, and not "int"
431 (e2fsck_journal_release): Add new parameter, "drop",
432 which is used when we just want to deallocate the journal
433 without trying to write out any changes.
434 (mark_buffer_clean): New function
435 (e2fsck_check_ext3_journal): If we fail loading the
436 journal, make sure we free all memory associated with it.
437 (recover_ext3_journal): If we fail to load the journal or
438 initialize the revoke data structures, make sure we free all
439 memory associated with the journal.
440
Theodore Ts'o721edd02001-01-12 21:05:57 +0000441 * message.c (special_inode_name): Add more special inode names
442 (From Andreas Dilger)
443
Theodore Ts'o58a75172001-01-12 20:59:19 +0000444 * util.c (fatal_error): Check to make sure the io_manager data
445 structure is sane before trying to flush the io_channel.
446 (From Andreas Dilger)
447
Theodore Ts'o721edd02001-01-12 21:05:57 +0000448 * mtrace.h, super.c, pass2.c: Minor whitespace cleanups, from
449 Andreas Dilger.
Theodore Ts'o4035f402001-01-12 20:25:50 +0000450
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +0000451 * journal.c (e2fsck_journal_fix_bad_inode): Set pctx->ino to the
452 bad journal number.
453
454 * problem.c (PR_0_JOURNAL_BAD_INODE): Use pctx->ino instead of
455 pctx->num when printing the bad journal inode number.
456
Theodore Ts'o86c627e2001-01-11 15:12:14 +00004572001-01-11 <tytso@snap.thunk.org>
458
Theodore Ts'o5ba23cb2001-01-11 19:15:02 +0000459 * pass1.c (process_block): Remove dead code which was never
460 getting executed.
461
462 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
463 ext2fs_sync_device() instead of using BLKFLSBUF.
464
465 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
466
Theodore Ts'o86c627e2001-01-11 15:12:14 +0000467 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
468 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
469 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
470 ino_t to ext2_ino_t.
471
Theodore Ts'o95a5bc92001-01-11 04:58:21 +00004722001-01-09 <tytso@snap.thunk.org>
473
474 * problem.c: Fix another broken @F vs @f problem.
475
Theodore Ts'o53ef44c2001-01-06 05:55:58 +00004762001-01-06 <tytso@snap.thunk.org>
477
478 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
479 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
480
481 * jfs_user.h: Use more sophisticated inline handling to allow
482 building with --enable-gcc-wall
483
Theodore Ts'od3f35b62001-01-03 13:00:43 +00004842001-01-03 <tytso@snap.thunk.org>
485
Theodore Ts'of18996c2001-01-03 16:57:24 +0000486 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
487 own block; if the journal inode is not in use, and it
488 contains data, offer to clear it.
489
490 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
491 problem code.
492
493 * problem.c: Modified problem table to use a new abbreviations.
494
Theodore Ts'od74edf42001-01-03 19:38:04 +0000495 * message.c: Add @j abbreviation for journal, and @v abbreviation
Theodore Ts'oe9044062001-01-03 15:39:37 +0000496 for device.
Theodore Ts'o1ce64532001-01-03 15:34:20 +0000497
Theodore Ts'occ7067b2001-01-03 13:24:06 +0000498 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
499
Theodore Ts'od3f35b62001-01-03 13:00:43 +0000500 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
501 the journal stored on a reserved inode. Also force a fsck
502 if the journal appears to exist while !NEEDS_RECOVERY, and
503 we forcibly reset the journal.
504
Theodore Ts'of5ae75e2001-01-01 14:52:52 +00005052001-01-01 <tytso@snap.thunk.org>
506
Theodore Ts'o5dd8f962001-01-01 15:51:50 +0000507 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
508 ext2fs_sb with struct ext2_super_block.
509
Theodore Ts'of5ae75e2001-01-01 14:52:52 +0000510 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
511
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +00005122000-12-31 <tytso@snap.thunk.org>
513
514 * jfs_compat.h: Remove uneeded header file.
515
Theodore Ts'ob2f93192000-12-30 20:33:42 +00005162000-12-30 <tytso@snap.thunk.org>
517
Theodore Ts'oc59a7042000-12-31 01:52:03 +0000518 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
519 conflicts with the system header file.
520
Theodore Ts'ob2f93192000-12-30 20:33:42 +0000521 * problem.h: Fixed numbering of pass1 error messages; an extra 0
522 had slipped into some of the numbers. (Pointed out by
523 Andreas Dilger)
524
525 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
526 unnecessary automatic variable. Add explanatory comment
527 about the kernel emulation routines. (Suggested by
528 Andreas Dilger)
529
Theodore Ts'o060b5fb2000-12-13 18:07:23 +00005302000-12-13 Theodore Ts'o <tytso@valinux.com>
531
Theodore Ts'o9b565752000-12-13 18:50:22 +0000532 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
533 journal fields are consistent if any of the superblock
534 fields are set. (Backs out erroneous change made by sct,
535 pointed out by Andreas.)
536
537 * unix.c (main): Clarify coments (no code changes)
538
539 * super.c (release_orphan_inodes): Fix spelling typo in error message.
540
Theodore Ts'o8188c9e2000-12-13 18:39:14 +0000541 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
542 level if we need to set large files flag. Patch from
543 Andreas Dilger.
544
Theodore Ts'o7b59f1e2000-12-13 18:11:44 +0000545 * super.c (check_super_block): If we have any of the compatibility
546 flags set, we need to have a revision 1 filesystem. Most
547 kernels will not check the flags on a rev 0 filesystem
548 and we may have corruption issues because of the
549 incompatible changes to the filesystem. Patch from Andreas
550 Dilger.
551
Theodore Ts'o060b5fb2000-12-13 18:07:23 +0000552 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
553 new problem codes.
554
Theodore Ts'o0e8a9562000-12-09 06:41:25 +00005552000-12-09 <tytso@snap.thunk.org>
556
Theodore Ts'obf2d4992000-12-09 14:46:20 +0000557 * flushb.c: Fix flushb so that it does something other than waste
558 disk space when built on systems with modern header files
559 and add a non-subtle Copyright Licensing restriction so
560 Yann will remove it from the Debian Distribution. (Now
561 violates the Debian Free Software Guidelines, on purpose.)
562
Theodore Ts'of43650c2000-12-09 06:47:56 +0000563 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
564 at the top level, set the JFS debuging level to 2.
565
Theodore Ts'o0e8a9562000-12-09 06:41:25 +0000566 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
567 has been moved to the include/linux directory.
568
569 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
570 support the V2 superblock and revoke processing. The
571 journal.c and revoke.c files are copies from the ext3
572 kernel source.
573
574 * Makefile.in: Added revoke.c to the list of source/object files.
575
Theodore Ts'o133a56d2000-11-17 05:40:49 +00005762000-11-16 Theodore Ts'o <tytso@valinux.com>
577
578 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
579 reporting problems rather than using com_err directly.
580
581 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
582
583 * message.c (expand_percent_expression): Add safety check. If
584 ctx->str is NULL, print "NULL" instead of dereferencing
585 the null pointer.
586
587 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
588 to ext2fs_block_iterate2, to support 64-bit filesizes and
589 to speed things up slightly by avoiding the use of the
590 ext2fs_block_iterate's compatibility shim layer.
591
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +00005922000-10-30 <tytso@snap.thunk.org>
593
594 * util.c (get_backup_sb): Calculate backup superblock correctly
595 when the blocksize is > 1k.
596
Theodore Ts'o241f2242000-10-26 20:42:07 +00005972000-10-26 <tytso@snap.thunk.org>
598
599 * jfs.h, jfs_compat.h, journal.c: Updated to include the
600 definition of the new journal superblock format; still
601 only supports V1 superblocks for now. (From sct)
602
Theodore Ts'ob09a4b02000-10-24 21:16:09 +00006032000-10-24 <tytso@snap.thunk.org>
604
Theodore Ts'o83949022000-10-25 01:38:50 +0000605 * super.c (release_inode_block, release_inode_blocks,
606 release_orphan_inodes): Add code to deal with truncating
607 inodes which are still in use (but which are on the orphan
608 list because they need truncation).
609
610 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
611 PR_0_ORPHAN_CLEAR_INODE, and remove
612 PR_0_ORPHAN_INODE_INUSE.
613
614 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
615 a message when the journal is being recovered.
616
Theodore Ts'ob09a4b02000-10-24 21:16:09 +0000617 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
618 journal inode, if it is in use.
619
Theodore Ts'oadfca562000-09-12 21:24:36 +00006202000-09-12 <tytso@valinux.com>
621
622 * extend.c:
623 * flushb.c: Add include of nls-enable.h which is necessary so that
624 they can compile correctly.
625
Theodore Ts'occ96b2b2000-08-22 21:30:11 +00006262000-08-22 <tytso@valinux.com>
627
Theodore Ts'o2575fb02000-08-22 21:50:04 +0000628 * unix.c (main): If we're doing a read-only check, skip the
629 journal playback, but don't abort the e2fsck run.
630
Theodore Ts'o99a2cc92000-08-22 21:41:52 +0000631 * super.c (release_orphan_inodes): Fix typo; should do bounds
632 checking on next_ino instead of ino.
633
634 * jfs_compat.h (J_ASSERT):
635 * journal.c (e2fsck_run_ext3_journal):
636 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
637
Theodore Ts'o243dc312000-08-22 21:37:47 +0000638 * unix.c: Use fatal_error() instead of exit() whenever possible.
639 Also fix the fsck exit codes so that we use FSCK_USAGE
640 when it is appropriate. Rename global_signal_ctx to
641 e2fsck_global_ctx and let it be exported globally.
642
Theodore Ts'occ96b2b2000-08-22 21:30:11 +0000643 * util.c (fatal_error): Try to flush the I/O manager before
644 forcing an exit.
645
Theodore Ts'oecf1b772000-08-20 22:06:31 +00006462000-08-20 <tytso@valinux.com>
647
648 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
649 e2fsck_check_ext3_journal to smash the journal because
650 journal->j_transaction_sequence wasn't getting
651 initialized.
652
653 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
654 call to e2fsck_clear_recover from recover_ext3_journal to
655 after the filesystem has been closed and reopened.
656 Otherwise, the superblock in the filesystem handle will
657 probably be stale, and will overwrite the newer version of
658 the superblock written by the log recovery.
659
660 * message.c (expand_inode_expression): Add support for %Iu and %Ig
661
662 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
663
664 * super.c (release_orphan_inodes, release_inode_block,
665 release_inode_blocks): Update the block group descriptor
666 counts when freeing the orphan inode. Use
667 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
668
669 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
670 attempted to reopen the filesystem using the device name
671 instead of the filesystem name.
672
Theodore Ts'o80bfaa32000-08-18 15:08:37 +00006732000-08-18 <tytso@valinux.com>
674
675 * Makefile.in: Update the make dependencies
676
677 * problem.c, problem.h: Add the problem codes:
678 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
679 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
680 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
681 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
682
683 * super.c (release_inode_blocks, release_orphan_inodes,
684 check_super_block): Add support for clearing orphaned
685 inodes from the unmounted filesystem.
686
687 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
688 check; this is now handled in check_super_block ---
689 non-journaled filesystems can use the orphan list in the
690 future. Also, move the the re-opening of the filesystem
691 to e2fsck_run_ext3_journal().
692
Theodore Ts'o3b5386d2000-08-14 14:25:19 +00006932000-07-12 Andreas Dilger <adilger@turbolinux.com>
694
695 * journal.c: implement loading of ext3 journal for recovery code
696
697 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
698 Add journal problems.
699
700 * recovery.c (journal_recover): user-space ext3 journal recovery code
701
702 * unix.c (main) : check journal and do recovery in separate steps
703
Theodore Ts'ob8d164c2000-08-08 03:17:04 +00007042000-08-07 <tytso@snap.thunk.org>
705
706 * unix.c (calc_percent): Make sure that we don't take a floating
707 exception if the max value is zero. (should normally
708 never happen, but...)
709
Theodore Ts'of9e67062000-07-13 23:25:54 +00007102000-07-13 <tytso@valinux.com>
711
712 * Release of E2fsprogs 1.19
713
Theodore Ts'o17390c02000-07-07 04:13:21 +00007142000-07-06 Theodore Ts'o <tytso@valinux.com>
715
716 * unix.c (check_if_skip): Modify algorithm for checking
717 s_max_mnt_count to match with the kernel. (If
718 s_max_mnt_count is negative, ignore the mnt_count check.)
719
720 * unix.c (e2fsck_update_progress): Adjust the width of the
721 progress bar dynamically, based on the filesystem name
722 that we need to display.
723
724 * unix.c (main): If the ext3 needs_recovery flag is set, call
725 e2fsck_run_ext3_journal() and then restart the e2fsck run.
726
727 * journal.c (e2fsck_run_ext3_journal): New file which contains
728 logic to recover the ext3 journal. This version relies on
729 the kernel being able to mount the filesystem in order to
730 run the journal.
731
Theodore Ts'o92269042000-07-05 18:25:59 +00007322000-07-05 Theodore Ts'o <tytso@valinux.com>
733
734 * unix.c (e2fsck_update_progress): Only save and check the last
735 percentage after multiplying it by 10, nor 1000, since we
736 only need to save values to a tenth of a percent (and the
737 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +0000738 Also, re-arrange the logic so that we do the time
739 check only after doing the percentage check, and we
740 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +0000741
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +00007422000-07-04 Theodore Ts'o <tytso@valinux.com>
743
744 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
745 field is set; if so, clear it, so that ext3 mounting code
746 won't get confused by the fact that we've cleared out the
747 orphaned inodes.
748
Theodore Ts'obbd47d72000-06-10 19:21:33 +00007492000-06-10 Theodore Ts'o <tytso@valinux.com>
750
751 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
752 checking for a "should never happen case".
753
754 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
755 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
756
Theodore Ts'od647a1e2000-05-27 14:40:09 +00007572000-05-27 Theodore Ts'o <tytso@valinux.com>
758
759 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
760 (cw@foof.org) which checks to see if special devices have
761 a non-zero size, and deals with it.
762
763 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
764
Theodore Ts'o1d279212000-05-19 02:38:14 +00007652000-05-18 Theodore Ts'o <tytso@valinux.com>
766
767 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
768 well.
769
Theodore Ts'o4ea0a112000-05-08 13:33:17 +00007702000-05-08 Theodore Ts'o <tytso@valinux.com>
771
772 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
773 code.
774
775 * super.c (check_super_block): If the OS type in the superblock is
776 the Hurd, check to see if the filetype feature is set, and
777 offer to clear it if so. This needs to be done since the
778 Hurd doesn't properly support the filetype feature.
779 (And since the hurd allows the transmogrification of files
780 to special files and vice versa --- for no good reason
781 that I can understand --- it can't support the filetype
782 feature for the forseeable future, either.)
783
Theodore Ts'o373b8332000-04-03 16:22:35 +00007842000-04-03 Theodore Ts'o <tytso@valinux.com>
785
786 * unix.c: For platforms that don't define optarg.h, manually
787 define optarg and optind.
788
Theodore Ts'o01fbc702000-04-03 13:57:21 +00007892000-03-20 Theodore Ts'o <tytso@valinux.com>
790
791 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
792 Check for the append-only as well as the immutable flag.
793
794 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
795 append-only flag. Fix comment for compression flag.
796
Theodore Ts'o06012322000-02-12 20:12:43 +00007972000-02-12 <tytso@snap.thunk.org>
798
799 * unix.c (e2fsck_update_progress): Limit the number of updates to
800 the progress bars to 8 times a second. This allows a 9600
801 baud console link to keep up.
802
Theodore Ts'o19178752000-02-11 15:55:07 +00008032000-02-11 <tytso@snap.thunk.org>
804
805 * unix.c (main): If compression is enabled on the filesystem,
806 print a warning message (for now).
807
808 * message.c: Add new compression shortcut: @c == compress
809
810 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
811
812 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
813 set, check to see if the filesystem supports compression.
814 If it does pass this information down to process_block()
815 so it can treat the compressed block flag words
816 correctly. If not, offer to clear the flag, since it
817 shouldn't be set.
818 (process_block): If an inode has the compressed inode flag
819 set, allow EXT2FS_COMPRESSED_BLKADDR.
820
821 * pass1b.c (process_pass1b_block, delete_file_block,
822 clone_file_block):
823 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
824 see if the block can be skipped.
825
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00008262000-02-08 <tytso@snap.thunk.org>
827
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +0000828 * util.c: Make resource tracking message more concise.
829
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +0000830 * e2fsck.h:
831 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
832 ctx->block_illegal_map, since it's not needed by pass1,
833 and pass1b has been modified to calculate it manually if
834 needed. This reduces the memory footprint needed by e2fsck.
835
836 * pass1b.c (check_if_fs_block): New static function which returns
837 whether or not a block overlaps with filesystem metadata.
838 This replaces consulting the block_illegal_map bitmap.
839
Theodore Ts'o28ffafb2000-02-08 19:14:02 +0000840 * Makefile.in: Call sync after finishing building all in this
841 directory.
842
843 * unix.c (PRS): sync the filesystem before trying to use
844 BLKFLSBUF, to minimize the chance of causing dirty blocks
845 to get dropped.
846
847 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
848 a Linux/i386 system.
849
850 * pass3.c (check_directory): Only do the loop detection algorithm
851 if we've searched over 2048 parent directories and haven't
852 found the end yet. This means that in the common case, we
853 don't allocate or clear the inode_loop_detection bitmap,
854 which for large systems, merely clearing the bitmap for
855 each directory was turning out to be quite expensive.
856 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
857 identifying this problem.
858
Theodore Ts'o0c4a0722000-02-07 03:11:03 +00008592000-02-06 Theodore Ts'o <tytso@valinux.com>
860
861 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
862 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
863 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
864 unix.c, util.c: Add Internationalization support as
865 suggested by Marco d'Itri <md@linux.it>.
866
Theodore Ts'o80e808f2000-02-02 16:19:59 +00008672000-02-02 Theodore Ts'o <tytso@valinux.com>
868
869 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
870 linux/fs.h
871
Theodore Ts'o894edb22000-01-18 21:27:12 +00008722000-01-18 Theodore Ts'o <tytso@valinux.com>
873
874 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
875 we need a separate DEPLIBUUID that can be used in
876 Makefile's dependency rules.
877
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +00008781999-11-23 <tytso@valinux.com>
879
880 * e2fsck.8.in: Update language about where to find a backup
881 superblock.
882
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00008831999-11-19 <tytso@valinux.com>
884
Theodore Ts'o86a63e91999-11-23 13:52:48 +0000885 * pass1.c (process_inodes): Add shortcut handling; if
886 process_inodes_count is zero, return right away, to avoid
887 calling qsort with a non-positive count.
888
Theodore Ts'oec8d2c31999-11-19 18:52:36 +0000889 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
890 to print Delete as ^?
891
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +0000892 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
893 the source directory.
894
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00008951999-11-10 <tytso@valinux.com>
896
Theodore Ts'ocd086361999-11-10 16:00:39 +0000897 * Release of E2fsprogs 1.18
898
8991999-11-10 <tytso@valinux.com>
900
Theodore Ts'oa846d2f1999-11-10 15:50:24 +0000901 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
902 means the answer is assumed to be no in preen mode. This
903 is now used in the PR_1_SET_IMMUTABLE code, so that in
904 preen mode we ignore these inodes and just print a warning
905 message.
906
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +00009071999-11-09 <tytso@valinux.com>
908
909 * pass1.c (e2fsck_pass1): If the filesystem does not support
910 imagic inodes, if an inode has the imagic flag set, offer
911 to clear the imagic flag. If a valid device/fifo/socket
912 has the immutable flag set, call the new helper function
913 check_immutable() to offerto clear the immutable flag.
914
915 * pass2.c (check_filetype): Use the new ext2_file_type() helper
916 function instead of calculating the file_type information
917 manually.
918
919 * pass3.c (e2fsck_reconnect_file): When adding a link to
920 lost+found, calculate the filetype information so that
921 ext2fs_link() can use the information if applicable.
922 (get_lost_and_found): Create the /lost+found directory
923 with the correct filetype information if applicable.
924
925 * util.c (ext2_file_type), e2fsck.h: New function which returns
926 the directory entry file type information given the
927 inode's mode bits.
928
929 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
930 and PR_1_SET_IMMUTABLE.
931
Theodore Ts'o7142db01999-11-08 18:46:54 +00009321999-11-07 <tytso@valinux.com>
933
934 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
935 to prevent it from getting freed twice.
936
9371999-11-06 <tytso@valinux.com>
938
939 * unix.c (main): Close the filesystem before freeing the context,
940 so that in the event of a free()-related segmentation
941 violation, the filesystem is properly closed and written
942 out.
943
9441999-10-27 <tytso@valinux.com>
945
946 * e2fsck.c (e2fsck_reset_context): When freeing
947 ctx->inode_reg_map, we weren't zero'ing
948 ctx->inode_reg_map, which could cause a segfault later on
949 in the e2fsck run.
950
9511999-10-26 <tytso@valinux.com>
952
953 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
954 matches the standard convention).
955
Theodore Ts'of68aa411999-10-26 14:20:22 +00009561999-10-26 <tytso@valinux.com>
957
Theodore Ts'o28e11941999-10-26 18:17:20 +0000958 * Release of E2fsprogs 1.17
959
9601999-10-26 <tytso@valinux.com>
961
Theodore Ts'of68aa411999-10-26 14:20:22 +0000962 * message.c (safe_print): Make safe_print take an char instead of
963 an unsigned char to fix gcc warnings.
964
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00009651999-10-25 <tytso@valinux.com>
966
Theodore Ts'oe6597041999-10-26 02:30:16 +0000967 * util.c: For NT portability, don't redefine getchar(), since
968 stdio defines that. Instead we introduce a new
969 abstract macro read_a_char() which is #defined to the
970 right function as necessary.
971
Theodore Ts'oc40db6d1999-10-25 21:03:34 +0000972 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
973
974 * pass2.c (check_dir_block): Require that the length of the
975 directory entry be at least 12 bytes. Check to see if the
976 filename is zero-length, and flag that as an error.
977
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00009781999-10-22 <tytso@valinux.com>
979
Theodore Ts'o614fdfd1999-10-23 03:19:51 +0000980 * Release of E2fsprogs 1.16
981
9821999-10-22 <tytso@valinux.com>
983
Theodore Ts'o7847c1d1999-10-22 15:11:42 +0000984 * pass2.c (check_filetype): If the filetype filesystem feature is
985 not set, and a directory entry has a dirent feature, offer
986 to clear it (since 2.0 kernels will do complain will
987 interpret it as a very large name length field).
988
989 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
990
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00009911999-10-21 <tytso@valinux.com>
992
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +0000993 * e2fsck.8.in: Update man page to use a more standard format (bold
994 option flags and italicized variables), as suggested by
995 Andreas Dilger (adilger@enel.ucalgary.ca)
996
Theodore Ts'oaa4115a1999-10-21 19:33:18 +0000997 * pass4.c (e2fsck_pass4): If an inode is set in the
998 inode_imagic_map bitmap, don't check to see if it is
999 disconnected from the inode tree (because it almost
1000 certainly will be). Free inode_imagic_map at the end of
1001 pass 4.
1002
1003 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
1004 feature is set, check the directory entry's filetype
1005 information field, and fix/set it if necessary.
1006 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
1007 of pass 2.
1008
1009 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
1010 information for inode_reg_map and inode_imagic_map, which
1011 indicates which inodes are regular files and AFS inodes,
1012 respectively.
1013 Since only the master superblock is written during a
1014 restart, force that superblock to be used after a restart;
1015 otherwise changes to the block group descriptors end up
1016 getting ignored.
1017
1018 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
1019 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
1020 which supresses the problem message if e2fsck is run with
1021 the -n option.
1022
1023 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
1024 new problem codes.
1025
1026 * message.c (expand_dirent_expression): Add support for %dt which
1027 prints the dirent type information.
1028
1029 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
1030 and inode_imagic_map).
1031
1032 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
1033 to the context structure.
1034
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +000010351999-09-24 <tytso@valinux.com>
1036
1037 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
1038 e2fsprogs easier to port to non-Unix platforms.
1039
10401999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00001041
1042 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
1043 internal and external inode counts in sync when we
1044 decremented an inode whose link count was already zero.
1045 Now we skip incrementing or decrementing both link counts
1046 if we would cause an overflow condition.
1047 (expand_dir, expand_dir_proc): Change where we update the
1048 inode block count and size files so that the block count
1049 field is updated correctly when we create an indirect block.
1050
Theodore Ts'o78cf0541999-10-20 18:29:18 +000010511999-08-05 <tytso@valinux.com>
1052
1053 * super.c (check_super_block): Check to see whether the
1054 inodes_per_group value in the superblock is insanely too
1055 high.
1056
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +000010571999-08-02 <tytso@valinux.com>
1058
1059 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
1060 the block also shares data with the fs metadata when
1061 the count drops to 1, since the block should still be
1062 cloned, as fs metadata isn't included in the count.
1063
10641999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +00001065
1066 * Release of E2fsprogs 1.15
1067
Theodore Ts'ob55199e1999-07-19 15:37:46 +000010681999-07-19 <tytso@valinux.com>
1069
1070 * unix.c (usage): Add minimalist emergency help to the usage
1071 message.
1072
Theodore Ts'o5596def1999-07-19 15:27:37 +000010731999-07-18 <tytso@valinux.com>
1074
1075 * unix.c: Add support for calculating a progress bar if the -C0
1076 option is given. The function e2fsck_clear_progbar()
1077 clears the progress bar and must be called before any
1078 message is issued. SIGUSR1 will enable the progress bar,
1079 and SIGUSR2 will disable the progress bar. This is used
1080 by fsck to handle parallel filesystem checks. Also, set
1081 the device_name from the filesystem label if it is
1082 available.
1083
1084 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
1085 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
1086 structure which contains the last tenth of a percent
1087 printed for the user.
1088
1089 * message.c (print_e2fsck_message): Add call to
1090 e2fsck_clear_progbar().
1091
1092 * pass1.c (e2fsck_pass1):
1093 * pass2.c (e2fsck_pass2):
1094 * pass3.c (e2fsck_pass3):
1095 * pass4.c (e2fsck_pass4):
1096 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
1097 printing the resource tracking information.
1098
1099 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
1100 an error in the bitmaps, suppress printing the progress
1101 bar using the suppression flag for the remainder of the
1102 check, in order to clean up the display.
1103
Theodore Ts'o74033351999-07-01 03:00:47 +000011041999-06-30 <tytso@valinux.com>
1105
1106 * unix.c (check_mount): Clean up the abort message displayed when
1107 the filesystem is mounted and either stdout or stdin isn't
1108 a tty.
1109
11101999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +00001111
1112 * e2fsck.h:
1113 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
1114 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
1115 pass1_* be private static functions, and create new
1116 function e2fsck_use_inode_shortcuts which sets and clears
1117 the inode shortcut functions in the fs structure.
1118
1119 * e2fsck.h:
1120 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
1121 exported function.
1122
1123 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
1124 if a disconnected inode has any problems before
1125 connecting it to /lost+found. Bug and suggested fix by
1126 Pavel Machek <pavel@bug.ucw.cz>
1127
11281999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +00001129
1130 * unix.c (main): Add missing space in the disk write-protected
1131 message.
1132
Theodore Ts'od4b0ce01999-06-18 01:09:29 +000011331999-05-22 <tytso@rsts-11.mit.edu>
1134
1135 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
1136 code.
1137
1138 * super.c (check_super_block): Add check to make sure the total
1139 number of inodes is sane, since this can be calculated
1140 from the number of groups times the number of inodes per
1141 group. Offer to correct it if it is incorrect.
1142
Theodore Ts'oe79d1b21999-06-18 01:06:59 +000011431999-03-19 <tytso@rsts-11.mit.edu>
1144
1145 * pass5.c (check_block_end): Fix fencepost condition where when
1146 clearing the block padding we were missing the last position
1147 in the bitmap.
1148
Theodore Ts'o75d83be1999-05-18 03:16:36 +000011491999-05-17 <tytso@rsts-11.mit.edu>
1150
1151 * unix.c (reserve_stdio_fds): Add safety check in case
1152 reserve_stdio_fds couldn't open /dev/null.
1153
Theodore Ts'o4a9f5931999-03-16 19:32:52 +000011541999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
1155
1156 * util.c (print_resource_track): Use mallinfo if present to get
1157 more accurate malloc statistics.
1158
1159 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +00001160 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00001161
1162 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
1163
11641999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1165
1166 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
1167 that the block group number is printed. Add new prompt,
1168 PROMPT_UNLINK.
1169
11701999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1171
1172 * Release of E2fsprogs 1.14
1173
Theodore Ts'o9e51eca1999-01-09 16:32:31 +000011741999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1175
1176 * message.c (safe_print): New function which prints strings,
1177 converting non-printable characters using the '^' and
1178 M-notation. This function is now used to print directory
1179 name entries and pathnames.
1180
Theodore Ts'o73f17cf1999-01-04 07:35:45 +00001181Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
1182
1183 * unix.c (main): Reset the context before calling ext2fs_close(),
1184 to avoid referencing already freed memory.
1185
Theodore Ts'o556ad131998-12-19 08:10:58 +000011861998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
1187
1188 * Release of E2fsprogs 1.13
1189
Theodore Ts'o5a679c81998-12-03 16:40:38 +000011901998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
1191
1192 * Makefile.in: Updated dependencies.
1193
11941998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
1195
1196 * pass3.c (get_lost_and_found): If the filesystem is not opened
1197 read-only, then force /lost+found to be created if it is
1198 not present.
1199
1200 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
1201 operation.
1202
Theodore Ts'o1dde43f1998-11-14 04:18:28 +000012031998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1204
1205 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
1206 since e2fsck_free_context may reference data in ctx->fs.
1207
1208 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
1209 before checking ctx->fs->dblist.
1210
12111998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1212
1213 * pass1.c (e2fsck_pass1): Use the device check subroutine on
1214 FIFO's and Socket's, so that we catch bogus immutable inodes.
1215
1216 * pass2.c (process_bad_inode): Process bad socket and fifo's.
1217
1218 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
1219 PR_2_BAD_SOCKET.
1220
Theodore Ts'o7f813ba1998-09-03 01:26:03 +000012211998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
1222
1223 * problem.c: Add PR_3_NO_DIRINFO error code.
1224
1225 * super.c (check_super_value): Rename min and max to min_val and
1226 max_val to avoid possible cpp macro conflicts.
1227
1228 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
1229 possible cpp macro conflicts.
1230
1231 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
1232 cpp macro conflicts.
1233 (check_directory): Fix logic to avoid possible core dump
1234 in the case of ext2fs_get_dir_info returning NULL. (By
1235 the time we get here, it should never happen, but...).
1236 Also simply/streamline the control flow of the function.
1237
Theodore Ts'o24fc5031998-08-26 15:23:31 +000012381998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
1239
1240 * unix.c (check_if_skip): Move the "not cleanly mounted" check
1241 ahead of the maximal mount and too long since checked tests.
1242 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
1243 open, so that we don't open the filesystem using the same
1244 file descriptor as stdout or stderr.
1245
Theodore Ts'of75c28d1998-08-01 04:18:06 +000012461998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
1247
1248 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
1249 get to 100%.
1250
1251 * pass3.c (e2fsck_pass3): Change progress accounting to be
1252 consistent with the other e2fsck passes.
1253
1254 * e2fsck.c (e2fsck_run): At the end of each pass, call the
1255 progress function with the pass number set to zero.
1256
1257 * unix.c (e2fsck_update_progress): If the pass number is zero,
1258 ignore the call, since that indicates that we just want to
1259 deallocate any progress structures.
1260
Theodore Ts'o8144d671998-07-09 05:33:18 +000012611998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1262
Theodore Ts'o4a5fa191998-07-09 05:42:45 +00001263 * Release of E2fsprogs 1.12
1264
12651998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1266
Theodore Ts'o8144d671998-07-09 05:33:18 +00001267 * unix.c (main): Fix typo in checking the incompat feature set; it
1268 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
1269
Theodore Ts'o1fad9041998-07-07 05:44:43 +000012701998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
1271
1272 * badblocks.c (test_disk): Don't clear the existing bad blocks
1273 list when using e2fsck -c, since it may cause blocks with
1274 marginal errors to be dropped from the bad blocks list.
1275
Theodore Ts'o874b4d21998-07-06 14:33:12 +00001276Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
1277
1278 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
1279 compatibility with older kernels.
1280
Theodore Ts'o818180c1998-06-27 05:11:14 +000012811998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
1282
1283 * unix.c (e2fsck_update_progress): Remove unused variables.
1284
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +000012851998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
1286
1287 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
1288 collision with LFS API.
1289
1290 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
1291 properly initialized.
1292 (e2fsck_pass1): Don't allow the the boot loader inode to
1293 be a directory (clear the inode mode field if so).
1294
Theodore Ts'oefac9a11998-05-07 05:02:00 +000012951998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
1296
1297 * unix.c (PRS): Added new option -C, which causes e2fsck to print
1298 progress updates so that callers can keep track of the
1299 completion progress of e2fsck. Designed for use by
1300 progress, except for -C 0, which prints a spinning report
1301 which may be useful for some users.
1302
1303 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
1304 scheme (useful for larger filesystems).
1305
1306 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
1307 progress reporting functions.
1308
Theodore Ts'o4c77fe51998-04-30 17:35:59 +000013091998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1310
1311 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
1312 appropriate return type for comparison functions for qsort.
1313
1314 * e2fsck.h: Add #ifdef protection for unistd.h
1315
1316 * super.c: Remove header files already included by e2fsck.h
1317
Theodore Ts'o76f875d1998-04-27 01:41:13 +000013181998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
1319
1320 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
1321 size of the memory to be resized to ext2fs_resize_mem().
1322
Theodore Ts'o7e44f241998-04-01 03:16:29 +000013231998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
1324
1325 * Makefile.in: Change to use new installation directory variables
1326 convention. Fix uninstall rules to take $(DESTDIR) into
1327 account. Remove cat8dir from the installdirs target,
1328 since modern man package don't necessarily put the cat
1329 directory in /usr/man/cat?.
1330
Theodore Ts'o17dba281998-03-30 01:16:26 +000013311998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
1332
1333 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
1334 extern in e2fsck.h to prevent -Wall warnings.
1335
1336 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
1337
13381998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1339
1340 * super.c (check_super_block): Fix broken superblock sanity check
1341 when calculating blocks_per_group if s_log_frag_size !=
1342 s_log_block_size. Since we don't support fragments, this
1343 isn't a bug deal, but it's good to get it fixed.
1344
Theodore Ts'o246501c1998-03-24 16:22:38 +000013451998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
1346
1347 * unix.c: Fix bug in check of feature set, to make sure we can
1348 really fix this filesystem.
1349
1350 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
1351 num field be a 64 bit type. Add the problem code
1352 PR_1_FEATURE_LARGE_FILES
1353
1354 * problem.c: Add table entry for the problem code
1355 PR_1_FEATURE_LARGE_FILES.
1356
1357 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
1358 a problem for directory inodes. (Since it is also
1359 i_size_high now.) If there are no large_files, then
1360 clear the LARGE_FLAG feature flag. If there are
1361 large_files, but the LARGE_FLAG feature flag is not set,
1362 complain and offer to fix it.
1363 (check_blocks): Add support to deal with non-directory
1364 inodes that have i_size_high set (i.e., large_files).
1365 Don't give an error if a directory has preallocated
1366 blocks, to support the DIR_PREALLOC feature.
1367 (process_block, process_bad_block): The blockcnt variable
1368 is a type of blkcnt_t, for conversion to the new
1369 block_iterate2.
1370
1371 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
1372 a problem for directory inodes. (Since it is also
1373 i_size_high now.)
1374
1375 * message.c (expand_inode_expression): Print a 64-bits of the
1376 inode size for non-directory inodes. (Directory inodes
1377 can only use a 32-bit directory acl size, since
1378 i_size_high is shared with i_dir_acl.) Add sanity check
1379 so that trying to print out the directory acl on a
1380 non-directory inode will print zero.
1381 (expand_percent_expression): %B and %N, which print
1382 pctx->blkcount and pctx->num, can now be 64 bit
1383 variables. Print them using the "%lld" format if
1384 EXT2_NO_64_TYPE is not defined.
1385
1386 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
1387
1388 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
1389 field.
1390
Theodore Ts'ob6f79831998-03-09 13:10:37 +00001391Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1392
1393 * pass3.c (fix_dotdot_proc):
1394 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
1395 * message.c (expand_dirent_expression): Mask off the high eight
1396 bits of the directory entry's name_len field, so that it
1397 can be used for other purposes.
1398
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +00001399Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1400
1401 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
1402 include EXT2_FLAG_RESTART anymore, we need to adjust this
1403 routine so that it *does* return in the case of it seeing
1404 EXT2_FLAG_RESTART.
1405
1406 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
1407 done callback function, which may set context abort
1408 flags. So we need to test the context abort flags after
1409 we call ext2_get_next_inode().
1410 (process_inodes): If we abort due out of process_inodes,
1411 do a clean exit by breaking out of the for loop instead of
1412 just returning.
1413
1414 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
1415 considered a SIGNAL mask (i.e., requiring an immediate
1416 abort of processing to restart). FLAG_RESTART just means
1417 that we want to restart once pass 1 is complete.
1418
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +00001419Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1420
1421 * Change the progress function to return an integer; if returns 1,
1422 then the progress function is expected to have set the
1423 e2fsck context flag signalling a user abort, and the
1424 caller should also initiate a user abort.
1425
Theodore Ts'o63c49691998-02-20 05:24:59 +00001426Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1427
1428 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
1429 end_problem_latch() unless there was actually a problem
1430 latched. Simplifies semantics of the latch processing.
1431
Theodore Ts'o43139321998-02-16 22:34:46 +00001432Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1433
1434 * e2fsck.h: Add new field, priv_data to the e2fsck context
1435 structure. It should be used by callers of the e2fsck
1436 functions only, and not by anything in e2fsck itself.
1437
1438Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1439
1440 * super.c: Instead of call ext2fs_get_device_size(), define and call
1441 e2fsck_get_device_size(). (This function may be stubbed
1442 out in special versions of e2fsck.)
1443
1444 * pass3.c, pass4.c: Remove extra calls to the progress function
1445 that weren't needed.
1446
1447 * mke2fs.8.in: Update man page to note that the format of the bad
1448 block file is the same as the one generated by badblocks.
1449
Theodore Ts'o54be2cc1998-02-01 12:58:48 +00001450Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1451
1452 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
1453
1454 * e2fsck.h: Include <time.h> since it is needed
1455
1456 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
1457 processing.
1458
Theodore Ts'o24dd4021998-02-01 00:16:40 +00001459Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1460
1461 * unix.c (main): In the case where the filesystem revision is too
1462 high, print the message about the superblock possibly
1463 being corrupt.
1464
1465 * e2fsck.8.in: Add expanded comments about how the -b option
1466 works.
1467
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +00001468Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1469
1470 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
1471 the ext2-specific header files are in a flat directory.
1472
1473 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
1474 super.c, swapfs.c, unix.c: Explicitly cast all assignments
1475 from void * to be compatible with C++.
1476
1477Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1478
1479 * unix.c (sync_disk): Remove sync_disk and calls to that function,
1480 since ext2fs_close() now takes care of this.
1481
1482Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1483
1484 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
1485 ehandler.c, unix.c: Change use of private to be priv_data,
1486 to avoid C++ reserved name clash.
1487
Theodore Ts'o5be8dc21997-12-01 18:24:10 +00001488Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1489
1490 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
1491 of e2fsck_get_num_dirs, which has been removed.
1492
1493Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1494
1495 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
1496 to compile and install flushb.
1497
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +00001498Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1499
1500 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
1501 to make sure the extra i_blocks in a device are cleared if
1502 the immutable flag is set.
1503
1504 * util.c (print_resource_track): Fix typo which caused the
1505 time/resource tracking to print "Pass 1 :" instead of
1506 "Pass 1: ".
1507
Theodore Ts'ob8647fa1997-11-20 21:52:43 +00001508Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1509
1510 * pass3.c (expand_directory): Fix bug which could cause core dump
1511 when expanding the directory, and the bitmaps hadn't yet
1512 been read in. Also, only use ext2fs_write_dir_block when
1513 writing a directory block, not when writing out a fresh
1514 indirect block.
1515
Theodore Ts'o8039c481997-11-19 21:39:13 +00001516Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1517
1518 * pass1.c (process_bad_block): Fix bug where first_block wasn't
1519 getting incremented, which caused user to get a
1520 "Programming error?" warning if there was a bad block in a
1521 non-primary superblock/group_descriptor. Also fixed
1522 another bug so that ext2fs_bg_has_super() is consulted, to
1523 avoid problems when using a filesystem with the
1524 sparse_groups option set and there are bad blocks at the
1525 beginning of a group which doesn't have a superblock.
1526
Theodore Ts'of8188ff1997-11-14 05:23:04 +00001527Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1528
1529 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
1530 progress indicator function.
1531
1532 * pass1.c (scan_callback): Add call to the progress feedback
1533 function (if it exists).
1534
1535Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1536
1537 * super.c (check_super_block): Skip the device size check if the
1538 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
1539
1540 * iscan.c (main): Don't use fatal_error() anymore.
1541
1542 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
1543 calling fatal_error(0).
1544
1545 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
1546 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
1547
1548 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
1549
1550 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
1551
1552 * problemP.h: New file which separates out the private fix_problem
1553 data structures.
1554
1555 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
1556 swapfs.c util.c: allocate_memory() now takes a e2fsck
1557 context as its first argument, and rename it to be
1558 e2fsck_allocate_memory().
1559
Theodore Ts'o08b21301997-11-03 19:42:40 +00001560Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1561
Theodore Ts'o68227541997-11-04 04:25:22 +00001562 * unix.c (main): Add a special case check for the error code EROFS
1563 and display an appropriate error message for this case.
1564
Theodore Ts'o08b21301997-11-03 19:42:40 +00001565 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
1566 to take the e2fsck context as their first argument.
1567 Change dir_info.c routines to take an e2fsck_context,
1568 renamed them to start with e2fsck_ to avoid namespace
1569 issues, and changed them to store the directory
1570 information inside the e2fsck context.
1571 Added e2fsck_run() which calls all of the e2fsck passes in
1572 the correct order, and which handles the return of abort
1573 codes. Added abort processing, both via setjmp/longjmp
1574 and via flags in the e2fsck context. Use a flag in the
1575 e2fsck context instead of the restart_e2fsck global
1576 variable. Change uses of free and malloc to
1577 ext2fs_free_mem and ext2fs_get_mem.
1578
Theodore Ts'o291c9041997-10-31 06:17:08 +00001579Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1580
1581 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
1582 consistency.
1583
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00001584Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1585
1586 * pass3.c (get_lost_and_found): Check error return of
1587 EXT2_FILE_NOT_FOUND instead of ENOTDIR
1588
1589 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
1590 instead of ENOTDIR
1591
Theodore Ts'o622f5f21997-10-24 04:18:21 +00001592Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1593
Theodore Ts'o519149f1997-10-25 03:49:49 +00001594 * unix.c (PRS): Make the variable which getopt returns into be
1595 an int, so that it won't lose on platforms where char is
1596 unsigned.
1597
Theodore Ts'o622f5f21997-10-24 04:18:21 +00001598 * pass1b.c (clone_file): Fix bug in error reporting in the case
1599 where cs.errcode is non-zero.
1600
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00001601Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1602
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00001603 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
1604 RESOURCE_TRACK around code which uses init_resource_track
1605 and print_resource_track. (Not all systems have timeval)
1606
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00001607 * super.c: Remove excess #includes which are not necessary.
1608
1609 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
1610
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00001611Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1612
1613 * pass*.c, super.c: Massive changes to avoid using printf and
1614 com_err routines. All diagnostic messages are now routed
1615 through the fix_problem interface.
1616
1617Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1618
1619 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
1620 entries.
1621
1622 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
1623 PR_2_DUP_DOT_DOT.
1624
1625Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1626
1627 * problem.c: Added new problem codes for some of the
1628 superblock corruption checks, and for the pass header
1629 messages. ("Pass 1: xxxxx")
1630
1631 * util.c (print_resource_track): Now takes a description
1632 argument.
1633
1634Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1635
1636 * super.c, unix.c, e2fsck.c: New files to separate out the
1637 operating-specific operations out from e2fsck.c.
1638 e2fsck.c now contains the global e2fsck context management
1639 routines, and super.c contains the "pass 0" initial
1640 validation of the superblock and global block group
1641 descriptors.
1642
1643 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
1644 (nearly) all global variables and moved them to the e2fsck
1645 context structure.
1646
1647 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
1648 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
1649 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
1650
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00001651Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1652
1653 * message.c: Add compression for the word "Illegal"
1654
1655 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
1656 PR_2_BAD_BLOCK_DEV
1657
1658Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1659
1660 * pass1.c (pass1, check_device_inode), pass2.c
1661 (process_bad_inode): Use a more stringent test for a valid
1662 device.
1663
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00001664Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1665
1666 * e2fsck.c (check_mount): Add stronger warning message about the
1667 perils of running e2fsck on a mounted filesystem.
1668
Theodore Ts'o024996c1997-06-17 05:38:35 +00001669Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1670
1671 * Release of E2fsprogs 1.11
1672
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00001673Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1674
1675 * pass1.c (mark_table_blocks): Mark the superblock and group
1676 descriptor blocks first, so that any conflicts between
1677 these and the bitmap or inode table blocks is noticed.
1678
1679 * problem.c: Fix message printed out when a block or inode bitmap
1680 conflicts with other fs data, has the correct group number
1681 in it.
1682
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00001683Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1684
1685 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
1686
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001687Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1688
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00001689 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
1690 Hawes (whawes@star.net).
1691
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001692 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
1693 bad blocks command so that all of the filesystem gets
1694 tested in the case where the blocksize 2048 or 4096.
1695
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00001696Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
1697
1698 * Release of E2fsprogs version 1.10
1699
1700Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1701
1702 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
1703 where ext2fs_get_next_inode returns the
1704 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
1705
1706Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1707
1708 * Release of E2fsprogs version 1.09
1709
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00001710Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1711
1712 * Release of E2fsprogs version 1.08
1713
Theodore Ts'o521e3681997-04-29 17:48:10 +00001714Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1715
1716 * pass1b.c (clone_file_block): If we clone a directory, we need to
1717 update the dblist entry so that we check (and correct) the
1718 right directory block.
1719
1720Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1721
1722 * pass1.c (process_block): Don't clear blocks references to
1723 filesystem metadata; let pass 1B handle this case.
1724
1725 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
1726
1727 * pass1b.c (pass1d): Deal with a block which is shared with
1728 filesystem metadata.
1729
1730 * e2fsck.h: Make block_illegal_map be a global variable
1731
1732Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1733
1734 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
1735 feature.
1736 (get_backup_sb): New function which attempts to obtain the
1737 correct backup superblock (if possible).
1738
1739Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1740
1741 * e2fsck.c (main): Check the version of the library, and warn if
1742 the library is out of date; this happens generally due to
1743 users who manually install e2fsprogs.
1744
1745 * pass1.c (pass1_get_blocks): If the passed in inode number for
1746 get_blocks isn't what we're expecting pass back
1747 EXT2_ET_CALLBACK_NOT_HANDLED.
1748
Theodore Ts'o21c84b71997-04-29 16:15:03 +00001749Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
1750
1751 * Release of E2fsprogs version 1.07
1752
1753Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1754
1755 * icount.c: New file which implements an inode count abstraction.
1756 This significantly reduces amount of memory needed to
1757 check really large filesystems.
1758
1759 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
1760 abstraction.
1761
1762Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1763
1764 * dirinfo.c (dir_info_iter): New function which allows iteration
1765 over the directories in the dir_info map.
1766
1767 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
1768 over all directories in the dir_info structure, instead of
1769 iterating all inodes looking for directories, and then
1770 looking up the directories using get_dir_info().
1771
1772Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1773
1774 * pass1.c (pass1, process_block):
1775 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
1776 manual code to manage the directory block list information.
1777
1778 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
1779 (deallocate_inode): Call the ext2 library routine
1780 ext2_inode_has_valid_blocks() instead of
1781 inode_has_valid_blocks().
1782
1783 * swapfs.c (swap_inodes): Add check so that we don't try to call
1784 swap_inode_blocks unless the inode has valid blocks.
1785 (Otherwise a long fast symlink might cause
1786 swap_inode_blocks to erroneously get called.)
1787
1788Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1789
1790 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
1791 PR_2_DOT_DOT_NULL_TERM.
1792
1793 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
1794 .. entries are null-terminated, since the 2.0 kernel
1795 requires this (for no good reason).
1796
1797Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1798
1799 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
1800 that we can recover from missing inode tables.
1801
1802 * dirinfo.c (get_dir_info): If there are no directories in the
1803 dir_info abstraction, don't core dump (because dir_info is
1804 NULL).
1805
1806 * e2fsck.c (main): Don't try using the backup superblocks if there
1807 aren't any.
1808 (check_super_block): If there are illegal inode table or
1809 bitmaps, set the filesystem as being in error.
1810
1811Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1812
1813 * pass2.c (check_dir_block): Added check to make sure that rec_len
1814 is a a multiple of 4 (so that the directory entries are
1815 4-byte aligned).
1816
1817Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1818
1819 * Makefile.in (uninstall): Uninstall all programs in the PROGS
1820 line.
1821 (PROGS): Don't build and install the extend program by
1822 default.
1823
1824
1825Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1826
1827 * pass1.c (process_inodes): Make sure the stashed_ino variable is
1828 saved and restored as well.
1829 (pass1): For fast sym links, skip the check_blocks
1830 processing step altogether.
1831
1832Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1833
1834 * problem.c, message.c: New files, to completely refurbish how
1835 filesystem problems are reported to the user. The
1836 diagnostic messages are now encoded out in an easily
1837 customizable, extensible format. The messages printed out
1838 in preen mode are all on one line, and contain the device
1839 name.
1840
1841Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1842
1843 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
1844 deleted files.
1845
1846 * pass1.c (pass1): Ignore missing inode table errors during the
1847 scan, and just skip past those inodes.
1848
1849 * pass3.c (check_root): Remove root_ino argument, and assume that
1850 the root inode must be EXT2_ROOT_INO. Move responsibility
1851 of setting the parent of the root inode in the directory
1852 inode structure to pass2().
1853
1854 * pass2.c (check_dir_block): Don't allow links to the root
1855 directory.
1856
1857 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
1858 since the inode is no longer used.
1859
1860Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1861
1862 * e2fsck.c (main): If the superblock magic number is wrong, or the
1863 block group fails a sanity check, then automatically
1864 restart trying to use the backup superblocks.
1865
1866 * pass1.c (mark_table_blocks): Make the inode tables ahead of
1867 everything else; in the case where a bitmap block overlays
1868 the inode table, the inode table should take precedence.
1869
1870 * pass2.c (maybe_clear_entry): Make the deleted/unused error
1871 message fit on one line, since the error can happen during
1872 a preen pass. (We eventually need to revamp the whole
1873 e2fsck error reporting and prompting system, but that's a
1874 job for another day.)
1875
1876Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1877
1878 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
1879 for the benefit of the inode scan functions.
1880
1881 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
1882 indicating that an inode is in a bad block, mark that
1883 inode as being used, as well as in the inode "bb" map.
1884
1885 * pass2.c (maybe_clear_entry): New function which generalizes the
1886 error cases when a directory entry needs to be cleared.
1887 (check_dir_block): If an inode is in the "bb" map, offer
1888 to clear the directory entry, since the inode is in a bad
1889 block.
1890
1891 * pass4.c (pass4): If an inode is marked as used, but is is marked
1892 in the "bb" map, don't process it as a disconnected inode.
1893
1894Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1895
1896 * Release of E2fsprogs version 1.06
1897
Theodore Ts'o5c576471997-04-29 15:29:49 +00001898Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1899
1900 * e2fsck.c (main): Print out the version number of the shared
1901 library when using the -V option.
1902
1903 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
1904 consistency's sake.
1905
1906 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
1907 out the backup superblocks when we know we have a valid
1908 filesystem.
1909
1910Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1911
1912 * util.c (preenhalt): Make it explicit on preenhalt that running
1913 e2fsck manually means without the -a or -p flag.
1914
1915Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1916
1917 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
1918 (Linux/FT actually sets the mode bits, so we have to
1919 handle it specially.)
1920
1921 * e2fsck.c (check_if_skip): Print a message if the filesystem is
1922 just dirty, so that the user knows that it's about to be
1923 checked (since this will take a while).
1924
1925Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1926
1927 * pass4.c: If a disconnected inode is zero-length, prompt to
1928 delete it instead of connecting it to lost+found.
1929
1930Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1931
1932 * Release of E2fsprogs version 1.05
1933
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00001934Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1935
1936 * pass4.c (pass4): If the user refuses to connect an unattached
1937 inode to lost+found, don't try to set i_links_count. This
1938 is bad, since if the user says yes, the inode will be
1939 marked as unused, which is not necessarily the right
1940 thing, especially since the rest of the cleanup doesn't
1941 happen here.
1942
1943 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
1944 dellocating an inode. (Not strictly necessary, but...)
1945
1946 * pass4.c (pass4): Add "bonehead" explanation to the "programming
1947 error" message.
1948
1949Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1950
1951 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
1952 byte-swap the filesystem so that it is normalized. -S
1953 will byte-swap the filesystem regardless of its current
1954 byte-order.
1955
1956 * swapfs.c: New file, which will byte-swap a filesystem.
1957
1958Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1959
1960 * pass1.c (pass1): Change handling on files with non-zero dtime
1961 and non-zero i_link_count; before we treated them as
1962 deleted file per botched ext2 0.3c kernel behavior. We
1963 now clear dtime instead.
1964
1965Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1966
1967 * e2fsck.c (main): If e2fsck sets the clean bit, even if
1968 nothing else is changed, make sure FSCK_NONDESTRUCT is
1969 set (since after all having the filesystem set to
1970 invalid is an error. :-)
1971
1972Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1973
1974 * pass1.c (process_block): Make sure that meta data doesn't get
1975 accidentally set in the dir_blocks array (which could
1976 happen in some error condtions).
1977
1978 * pass1.c (pass1):
1979 * pass2.c (process_bad_inode): Check for fragments in a
1980 OS-independent fashion.
1981
1982Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1983
1984 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
1985 cleanup for the filesystem.
1986
1987Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1988
1989 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
1990
Theodore Ts'o62c06f71997-04-29 14:34:47 +00001991Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1992
1993 * Release of E2fsprogs version 1.04
1994
1995Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1996
1997 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
1998 try "e2fsck -b 8193" before allowing e2fsck to relocate
1999 inode table blocks.
2000
2001 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
2002 depending on the option to configure. Added targets for
2003 e2fsck.static and e2fsck.shared for people who want to
2004 build a static or shared variant manually.
2005
Theodore Ts'o7f88b041997-04-26 14:48:50 +00002006Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
2007
2008 * Release of E2fsprogs version 1.03
2009
2010Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
2011
2012 * e2fsck.c (show_stats): Don't use floating point to display
2013 percentage of non-contiguous files, as different libc
2014 handle result truncation differently, and this causes the
2015 test suite to bomb out depending on which libc you are
2016 using.
2017
2018 * util.c (allocate_memory): Fix error message to omit extraneous
2019 %%s.
2020
2021Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
2022
2023 * pass4.c (pass4):
2024 * pass2.c (check_dir_block):
2025 * pass1.c (pass1): Add support for dynamic first inode revision.
2026
2027Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
2028
2029 * pass3.c (check_root): Fix spelling typo
2030
2031Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
2032
2033 * e2fsck.c (check_super_block): If the superblock fails certain
2034 internal consistency checks, exit with a fatal error after
2035 printing the "superblock is corrupt message".
2036
Theodore Ts'o74becf31997-04-26 14:37:06 +00002037Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
2038
2039 * Release of E2fsprogs version 1.02
2040
2041Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
2042
2043 * pass1.c (process_block): Check to see if a file is "fragmented".
2044 i.e., non-contiguous. Note that any file which is larger
2045 than the block group is guaranteed to be non-contiguous.
2046 We may want to use a different hueristic for deciding
2047 whether or not a file is "fragmented".
2048
2049 * e2fsck.c (show_stats): Print statistics of how many
2050 non-contiguous files are on the system.
2051
2052Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
2053
2054 * badblocks.c (read_bad_blocks_file, test_disk): Fold
2055 functionality of test_disk() (which runs badblocks) into
2056 read_bad_blocks_file(); test_disk() now calls
2057 read_bad_blocks_file() with a NULL bad_blocks_file
2058 argument.
2059
2060Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
2061
2062 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
2063 #if defined(linux). The latter won't work if we're
2064 compiling -ansi.
2065
Theodore Ts'o297f47a1997-04-26 14:25:20 +00002066Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
2067
2068 * e2fsck.c (check_mount): For Linux systems, the check to see if
2069 the root is mounted read-only has to be done for all
2070 filesystems, not just for the root filesystem, due to the
2071 way that some /etc/rc scripts are set up.
2072
Theodore Ts'o50e1e101997-04-26 13:58:21 +00002073Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
2074
2075 * Makefile.in (install): Strip programs when they are installed.
2076 (e2fsck): Build e2fsck statically.
2077
2078Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
2079
2080 * util.c (preenhalt): Preenhalt now takes an argument, which is an
2081 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
2082 flag in the superblock in cases where preenhalt is called.
2083 All calls to preenhalt() were changed to either
2084 preenhalt(fs) or preenhalt(NULL) in a few cases where the
2085 fs pointer was not available. (Most notable, for block
2086 read/write errors.)
2087
2088Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
2089
2090 * ehandler.c:
2091 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
2092
2093Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
2094
2095 * e2fsck.c (show_stats): Show statistics about how many inodes
2096 have indirect, doubly indirect, and triply indirect
2097 blocks. Allow up to 8 digits for statistics, instead of
2098 merely 6, so things look pretty for large filesystems.
2099
2100 * pass1.c (pass1): Keep statistics about indirect, doubly
2101 indirect, and triply indirect blocks.
2102
2103 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
2104 pass 1.
2105
2106Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
2107
2108 * util.c, ehandler.c: Move #include of <sys/resource.h> after
2109 #include of "e2fsck.h", since sys/resource.h may depend on
2110 sys/time.h, which is #included in e2fsck.h.
2111
2112Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
2113
2114 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
2115 function to determine if the device is mounted.
2116
2117 * e2fsck.c (main): Add better error messages if ext2fs_open()
2118 fails.
2119
2120Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
2121
2122 * pass1.c (check_blocks): If we're clearing a directory, clear
2123 pb.is_dir so we don't do the following check of making
2124 sure the directory size matches; this is pointless, since
2125 we've already cleared the inode.
2126
2127Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2128
2129 * pass1.c (bad_primary_block): New function, called by
2130 process_bad_block, which explains the facts of life to the
2131 user when a block in the primary superblock or primary
2132 group descriptors is bad.
2133
2134 * pass2.c (check_dot): Handle the case where the first directory
2135 entry is used, but not ".".
2136
2137 * pass2.c (check_dotdot): Handle the case where the second directory
2138 entry is used, but is not "..".
2139
2140Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2141
2142 * e2fsck.c (check_super_block): Get the size of the physical
2143 device and if it is smaller than the reported size of the
2144 filesystem, report an error.
2145
2146Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
2147
2148 * e2fsck.c (check_if_skip): Print the number of allocated files and
2149 blocks on clean filesystems.
2150
2151Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
2152
2153 * e2fsck.8: Updated date and version number.
2154
2155Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
2156
2157 * pass1.c (check_blocks): Check that directory size matches *exactly*
2158 the count of allocated blocks.
2159
2160Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
2161
2162 * pass1b.c (pass1d): Free the shared[] array when we're done with
2163 it to avoid a memory leak.
2164
2165 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
2166 block_dup_map.
2167
2168 * pass2.c (process_bad_inode): When clearing the inode, make sure
2169 the pathname is freed, to prevent a memory leak.
2170
2171 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
2172 when we're finished with them.
2173 (check_block_bitmaps): Free free_array when we're finished
2174 with them.
2175
2176 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
2177 linking the executable.
2178
2179 * pass2.c (process_bad_inode): Even on OS's that don't support the
2180 fragment fields, make sure the Linux equivalent fields are
2181 set to zero. If an OS wants to reuse these fields, which
2182 is probably a bad idea (although we may get desperate in
2183 the future) this code will have to be changed.
2184
2185 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
2186 on the inode field, and then blockcnt field. This is just
2187 to keep the ordering of dir_blocks the same on all
2188 platforms when there are more than on missing directory
2189 blocks, which are indicated directories with holes, which
2190 are indicated with the block number being set to zero.
2191
2192Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2193
2194 * pass1.c (check_blocks, process_block): check_blocks() modified
2195 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
2196 the inode is a directory. process_block() now checks to
2197 see if a directory has a "hole", or missing block. If so,
2198 this fact is recorded in the directory block list so that
2199 the problem can be resolved in pass #2.
2200
2201 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
2202 allocate new blocks for directories with "holes". Called
2203 out of check_dir_block if a block in the directory block
2204 list is zero.
2205
2206 * pass3.c (get_lost_and_found): Move location of free(block) to
2207 prevent possible memory leak.
2208
2209Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2210
2211 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
2212 instead of alloca() --- alloca is not portable! Check to
2213 make sure the filename is not longer than EXT2_NAME_LEN,
2214 and offer to fix it by truncating it, since it should
2215 never happen.
2216
2217 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
2218 not portable!! In any case putenv() in some systems must
2219 take a static character array or malloc()'ed memory;
2220 passing memory allocated using alloca() to putenv() is not
2221 advisable.
2222
2223 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
2224 alloca() --- alloca() is not portable!!!
2225
2226Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
2227
2228 * pass1b.c (pass1c):
2229 * pass3.c (check_root, get_lost_and_found):
2230 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
2231 to read/write the directory block.
2232
2233Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
2234
2235 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
2236 make sure VMIN and VTIME are set correct.
2237
2238Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
2239
2240 * pass1.c (mark_block_used): Change to be an inline function.
2241 Assume that the block validity checks are already done,
2242 and use the fast variant of the bitmap functions.
2243
2244Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
2245
2246 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
2247 bounds of the bitmaps in advance, and then use the fast
2248 variant of e2fs_test_{block,inode}_bitmap.
2249
2250 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
2251 the bounds checking has already been done earlier.
2252
2253Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
2254
2255 * pass1.c (pass1): Allocate and free the block_illegal_map, which
2256 is used for shortcut processing in process_block.
2257 (mark_table_blocks): Initialize block_illegal_map with the
2258 filesystem blocks.
2259 (describe_illegal_block): New helper function that
2260 describes why a block is illegal.
2261 (process_block): Use block_illegal_map as a shortcut
2262 to determine whether a block is bad. Use
2263 describe_illegal_block to print out why the block is illegal.
2264
2265Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
2266
2267 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
2268
2269 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
2270 <mntent.h> if they don't exist. (Mostly so that "make
2271 depend" works.)
2272
2273 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
2274 it exists).
2275
2276 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
2277 exist.
2278
2279Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2280
2281 * pass2.c (process_bad_inode, check_for_zero_long,
2282 check_for_zero_char): Change long to u32, and char to u8.
2283
2284Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2285
2286 * util.c (inode_has_valid_blocks):
2287 * pass2.c (process_bad_inode):
2288 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
2289 LINUX_S_IS* instead of S_IS*.
2290
2291 * e2fsck.h: Don't #include <sys/stat.h>
2292
2293 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
2294 this program is pretty much useless if BLKFLSBUF isn't
2295 supported.)
2296
2297 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
2298 used.
2299
2300Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
2301
2302 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
2303 to allocate space for file names instead of using fixed size buffers.
2304 (process_bad_inode): Only check inode frag fields if
2305 HAVE_EXT2_FRAGS is defined (by configure).
2306 * pass1.c (pass1): Only check the inode frag fields if
2307 HAVE_EXT2_FRAGS is defined (by configure).
2308
2309 * e2fsck.c (check_mount): Only check for a mounted filesystem if
2310 HAVE_MNTENT_H is defined (by configure).
2311 (PRS): Use alloca to allocate the new path string, instead of
2312 having a fixed size buffer (which was the wrong size anyway).
2313 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
2314 is defined.
2315
2316 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
2317 defined (by configure).
2318
2319 * Makefile.in: Rewritten to conform to GNU coding standards and
2320 support separate compilation directories.
2321
2322Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
2323
2324 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
2325
Theodore Ts'of3db3561997-04-26 13:34:30 +00002326Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
2327
2328 * pass1.c (unwind_pass1): Clear the file type statistics counter
2329 when pass 1 needs to be restarted from scratch.
2330
2331 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
2332 being reallocated to blocks in the next block group,
2333 instead of the current block grup.
2334
2335 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
2336 inode.i_links_count is set.
2337
2338Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
2339
2340 * pass1.c (process_block): Add checks for if the block is
2341 trepassing on a superblock or group descriptor table.
2342
2343Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
2344
2345 * main.c (corrupt_msg): Extend the message which is printed out
2346 when the superblock is corrupt, to include the suggestion
2347 of using the -b option to specify an alternate superblock.
2348
2349Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
2350
2351 * badblocks.c (read_bad_blocks_file): If we are adding or
2352 replacing bad blocks in the bad blocks inode, sanity check
2353 the bad block inode first, and clear out any illegal blocks.
2354
2355 * pass2.c (check_name): Don't bomb out if the attempt to get the
2356 pathname of the containing directory returns an error; the
2357 directory may be too badly damaged to expect that
2358 ext2fs_get_pathname will always succeed. Use "???" if the
2359 pathname can't be obtained (it's only for a printf to the
2360 user anyway).
2361
2362 The name of the containing directory and the bad filename
2363 were incorrectly interchanged in the user message. Fixed.
2364
2365 * pass2.c (check_name, check_dir_block): Use a common static
2366 string for the unknown pathname.
2367
2368Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
2369
2370 * Fixed lots of printf formats to make sure that block and inode
2371 numbers are printed as unsigned integers.
2372
2373Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
2374
2375 * pass5.c (check_block_end): Fix calculation of how the last block
2376 in the block bitmap should be calculated.
2377
2378Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
2379
2380 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
2381 be an ext2fs_inode_bitmap, and free it properly.
2382
2383 * e2fsck.h
2384 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
2385 level to the superblock.
2386
2387Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
2388
2389 * e2fsck.c (usage): Fixed bogus usage message.
2390
2391Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
2392
2393 * pass1.c (process_bad_block): Fixed bug so that blocks in the
2394 backup superblocks and group descriptors are handled gracefully.
2395