blob: 3f19a40afb381b18590865ad1aacb9b173c79cc6 [file] [log] [blame]
Theodore Ts'o8132d842002-10-02 22:07:17 -040012002-10-02 Theodore Y. Ts'o <tytso@mit.edu>
2
3 * pass2.c (parse_int_node, check_dir_block): Add byte-swap
4 functions around the htree code, so that it works on
5 big-endian machines.
6
7 * swapfs.c (swap_filesys): For PPC machines, byte-swap the bitmap,
8 since PPC big-endian filesystems were historically wierd.
9 This is just for the regression test, since no one
10 actually uses them anymore...
11
Theodore Ts'oad4fa462002-09-30 11:19:19 -0400122002-09-30 Theodore Ts'o <tytso@mit.edu>
13
14 * problem.c, problem.h (PR_2_HTREE_BAD_LIMIT,
15 PR_2_HTREE_BAD_COUNT, PR_2_HTREE_HASH_ORDER,
16 PR_2_HTREE_BAD_DEPTH): Add new problem codes.
17
18 * pass2.c (salvage_directory, check_dir_block): Avoid counting
19 directory entries twice during a directory salvage. Make
20 the salvaging algorithm smarter about directory entry size
21 overruns.
22 (parse_int_node): Add check to make sure the limit and
23 count fields in the node headers are sane. Also check
24 to make sure the hash table in ascending order.
25 (pass2, htree_depth): For all leaf nodes, determine their
26 depth in the tree, and make sure it matches with the depth
27 in the htree root information.
28
Theodore Ts'ofe5b72d2002-09-29 19:05:26 -0400292002-09-29 Theodore Ts'o <tytso@mit.edu>
30
Theodore Ts'oe8254bf2002-09-29 19:30:28 -040031 * pass2.c (check_dir_block): Do a more paranoid check when trying
32 to determine whether or not a directory entry is a
33 completely empty leaf block or leaf node. Otherwise
34 e2fsck might get confused into thinking that a valid dxdir
35 was corrupted.
36
Theodore Ts'ofe5b72d2002-09-29 19:05:26 -040037 * rehash.c (e2fsck_rehash_dir): Apply patch from Christopher Li
38 which avoids creating an empty directory entry at the end
39 of the directory block. This screws up earlier versions
40 of the indexed directory patch.
41
Theodore Ts'oe70ae992002-09-28 09:16:28 -0400422002-09-28 Theodore Ts'o <tytso@mit.edu>
43
44 * rehash.c (write_directory): Clear the index flag if by
45 reoptimizing the directory, we bring it back into a
46 non-indexed state.
47 (e2fsck_rehash_dir): Allow directories that contain two
48 blocks to be indexed. Otherwise when they grow, they
49 never will be indexed by the kernel.
50
51 * unix.c (main): Only update the master superblock; there's no
52 point updating the backup superblocks, and it speeds up
53 fsck slightly.
54
55 * pass2.c (salvage_directory): New function called by
56 check_dir_block() which is much more sophisticated about
57 how it salvages corrupted filesystems.
58
Theodore Ts'oc6633052002-09-24 01:26:50 -0400592001-09-24 Theodore Tso <tytso@mit.edu>
60
61 * Release of E2fsprogs 1.29
62
Theodore Ts'ocf3909e2002-09-06 10:14:12 -0400632002-09-06 Theodore Ts'o <tytso@mit.edu>
64
65 * rehash.c (copy_dir_entries): Fix bug which caused corrupted
66 directories if there are 4 or 8 bytes left over in a
67 directory page when optimizing/reindexing a directory.
68
Theodore Ts'o87ee8dc2002-08-31 03:02:57 -0400692001-08-31 Theodore Tso <tytso@thunk.org>
70
71 * Release of E2fsprogs 1.28
72
Theodore Ts'oceecbc72002-08-31 02:35:35 -0400732002-08-31 Theodore Ts'o <tytso@mit.edu>
74
75 * ehandler.c (e2fsck_handle_read_error): If the user asks to
76 ignore the error, offer to try forcing a write of the
77 block to the disk; sometimes this will cause the drive to
78 remap the bad block.
79
Theodore Ts'oea1959f2002-08-31 02:32:41 -0400802002-08-31 Theodore Ts'o <tytso@valinux.com>
81
82 * pass2.c (e2fsck_pass2): If this is a HTREE directory, sort the
83 dblist so that the first block of all of the directories
84 is handled first so we can read the hash version
85 information.
86 (check_dir_block): Examine the root node for correctness,
87 and offer to clear it if it is not correct. Also copy the
88 hash version to the dx_dir structure, so that the proper
89 hash function can be used for other blocks in the
90 directory.
91
92 * problem.c, problem.h (PR_2_HTREE_BAD_ROOT): Add new problem code.
93
Theodore Ts'oa3da9d12002-08-21 12:52:03 -0400942002-08-21 Theodore Ts'o <tytso@mit.edu>
95
96 * problem.c: Fix PR_1_RELOC_BLOCK_ALLOCATE message to explain that
97 it is necessary to find contiguous blocks in a particular
98 block group.
99
Theodore Ts'o0684a4f2002-08-17 10:19:44 -04001002002-08-17 Theodore Ts'o <tytso@mit.edu>
101
Theodore Ts'of044b4d2002-08-17 13:32:21 -0400102 * e2fsck.8.in: Add clarifying text describing how e2fsck works
103 with ext3 filesytems. (Addresses Debian bug #145044).
104
105 * pass1.c (handle_htree): Add support for EXT2_HASH_TEA
106
Theodore Ts'o0684a4f2002-08-17 10:19:44 -0400107 * e2fsck.h, e2fsck.c (e2fsck_allocate_context): Add new field to
108 the e2fsck context, ext_attr_ver, which specifies the EA
109 format version.
110
111 * unix.c (usage, parse_extended_opts, PRS), e2fsck.8.in: Add new
112 option -E, which allows the users to specify extended
113 options. Added ea_ver extended option.
114
115 * pass1.c (e2fsck_pass1_check_device_inode): Add ext2_filsys
116 argument to this function, so we can account for the
117 presence of extended attribute blocks attached to device
118 inodes.
119 (e2fsck_pass1_check_symlink, e2fsck_pass1): Take into
120 account the fact that symlinks can also have extended
121 attribute blocks.
122 (check_ext_attr): Don't be flexible about the EA format
123 version. Check against the version number in
124 ctx->ext_attr_ver.
125 (check_blocks): Check all inodes, so that we account for
126 extended attribute blocks belonging to special files.
127 Clean up i_size checks.
128
129 * pass1b.c (pass1b): Check all inodes, so that we account for
130 extended attribute blocks belonging to special files.
131 (delete_file_block): Use ext2fs_alloc_block_stats() to
132 update the filesystem statistics.
133 (delete_file): Attempt to decrement the extended
134 attribute refcount, and free the EA block if the count
135 hits zero.
136 (clone_file): Fixed bugs in EA handling. Don't call
137 block_iterate on inodes that don't have a valid i_block[]
138 array. Reread the base inode since it may have been
139 changed by ext2fs_block_iterate. When updating inodes as
140 part of cloning an EA block, write out the correct inode
141 structure.
142
143 * pass2.c (deallocate_inode_block, deallocate_inode): Use standard
144 ext2fs_alloc_*_stats functions to update the filesystem
145 statistics.
146 (deallocate_inode): Attempt to decrement the extended
147 attribute refcount, and free the EA block if the count
148 hits zero.
149 (e2fsck_process_bad_inode): Add extra argument to calls
150 to e2fsck_pass1_check_device_inode ().
151
152 * pass3.c (e2fsck_get_lost_and_found): Use standard
153 ext2fs_alloc_*_stats functions to update the filesystem.
154 statistics when creating /lost+found.
155 (adjust_inode_count): Remove debugging code that can never
156 be triggered.
157
158 * pass4.c (disconnect_inode): Add explanation about why we only
159 clear inodes that have no data blocks and no EA blocks.
160 Use ext2fs_inode_alloc_stats2 function to update the
161 filesystem statistics when clearing a zero-length inode.
162
163 * problem.c, problem.h (PR_1B_ADJ_EA_REFCOUNT,
164 PR_2_ADJ_EA_REFCOUNT): Add new problem codes.
165
166 * super.c (release_inode_block), (release_orphan_inodes): Use the
167 standard ext2fs_alloc_*_stats functions to update the
168 filesystem statistics.
169 (release_inode_blocks): Attempt to decrement the extended
170 attribute refcount, and free the EA block if the count
171 hits zero.
172
Theodore Ts'o838e7732002-08-01 12:37:00 -04001732002-08-01 Theodore Ts'o <tytso@mit.edu>
174
175 * dict.c, dict.h: New file from kazlib 1.20 which implements a
176 red-black tree
177
178 * pass1b.c: Massive changes to take advantage of dict.c. This
179 removes several O(n**2) algorithms from the rare case
180 where there are a large number of blocks claimed by
181 multiple inodes.
182
Theodore Ts'o542867f2002-07-24 07:42:02 -04001832002-07-24 Theodore Ts'o <tytso@mit.edu>
184
Theodore Ts'o850d05e2002-07-25 00:00:08 -0400185 * e2fsck.8.in, e2fsck.h, pass3.c (e2fsck_pass3), unix.c, rehash.c:
186 Add new option -D, which requests e2fsck to optimize all
187 directories. Rehash.c will also compress and sort
188 non-indexed directories.
189
190 * problem.c, problem.h: Rename PR_3A_REHASH_* to PR_3A_OPTIMIZE_*
191
192 * unix.c (PRS): Make sure the signal_cancel is registered without
193 SA_RESTART.
194
195 * rehash.c (e2fsck_rehash_dir, copy_dir_entries, calculate_tree):
196 Restructured code in e2fsck_rehash_dir into two new
197 subroutines to make the code more understandable/maintainable.
198 (set_root_node): Fixed bug which caused the root node to
199 be invalid on non-FILETYPE filesystems due to an
200 unitialized variable.
201 (calculate_tree): Fix bug where pointers which might get
202 invalidated if realloc() moves outdir->buf around.
203 (e2fsck_rehash_dir): Fix memory leak bug.
204
205 * pass3.c (e2fsck_get_lost_and_found), e2fsck.h, e2fsck.c:
206 Exported as a public interface a function for finding the
207 lost and found directory. Cache the location of the lost
208 and found directory in the e2fsck context structure.
209
Theodore Ts'o542867f2002-07-24 07:42:02 -0400210 * util.c (ask_yn, read_a_char): Note when the user has typed ^C,
211 and abort processing by longjmp'ing to ctx->abort_loc.
212
Theodore Ts'o3214a452002-07-23 12:00:00 -04002132002-07-23 Theodore Ts'o <tytso@mit.edu>
214
215 * pass1.c (e2fsck_pass1): If e2fsck is run with -n, don't create
216 the dirs_to_hash list, since we don't want to reindex
217 directories if the filesystem is opened read-only.
218
Theodore Ts'o4cae0452002-07-21 14:14:03 -04002192002-07-21 Theodore Ts'o <tytso@mit.edu>
220
221 * e2fsck.8.in: Document new exit code FSCK_CANCELED
222
223 * unix.c (PRS, signal_cancel): Capture SIGINT and SIGTERM signals
224 and set a flag in the e2fsck context indicating that
225 cancellation has been requested, so that e2fsck will exit
226 only at safe points.
227 (main): Change the exit handling so that if a cancellation
228 is requested, return FSCK_CANCELED (a new exit code 32).
229 e2fsck can now return more than one exit code as part of a
230 bitmask (as had been documented in the man page).
231
232 * pass2.c (e2fsck_pass2, check_dir_block), pass3.c (e2fsck_pass3),
233 pass4.c (e2fsck_pass4): Check to see if a cancellation was
234 requested, and abort processing if necessary.
235
Theodore Ts'ob7a00562002-07-20 00:28:07 -04002362002-07-19 Theodore Ts'o <tytso@mit.edu>
237
238 * rehash.c, Makefile.in: New file which rewrites directories using
239 the htree format.
240
241 * problem.c (fix_problem), problemP.h (PR_PREEN_NOHDR): Add option
242 which suppresses the header printed when in preen mode.
243
244 * pass3.c (e2fsck_pass3): If there are entries on the dirs_to_hash
245 list, call e2fsck_rehash_directories to reindex those
246 directories.
247 (e2fsck_expand_directory): Generalize the old
248 expand_dirctory() function so it can expand a directory to
249 a guaranteed minimum size.
250
251 * e2fsck.h (struct e2fsck_struct): Add the dirs_to_hash list. Add
252 new function prototypes for rehash.c and for
253 e2fsck_expand_directory().
254
255 * e2fsck.c (e2fsck_reset_context): Free the dirs_to_hash list.
256
257 * pass1.c (e2fsck_pass1): Initialize the dirs_to_hash list if the
258 htree feature is present in the filesystem.
259 (check_blocks): If a non-htree directory has more than 2
260 blocks, put it on the dirs_to_hash list.
261
262 * pass2.c (clear_htree): Add corrupt htree directories to the
263 dirs_to_hash list.
264
265 * problem.h, problem.c (PR_3A_PASS_HEADER, PR_3A_REHASH_ITER,
266 PR_3A_REHASH_DIR_ERR, PR_3A_REHASH_DIR_HEADER,
267 PR_3A_REHASH_DIR, PR_3A_REHASH_DIR_END): Add new problem codes
268
269 * pass2.c (parse_int_node), problem.c (PR_2_HTREE_BADBLK): Fix
270 problem display.
271
Theodore Ts'o62acaa12002-07-15 16:54:42 -04002722002-07-15 Theodore Ts'o <tytso@mit.edu>
273
274 * pass2.c (e2fsck_pass2): Use dx_dir->numblocks instead of
275 dx_dir->ino to indicate that a bad inode was cleared.
276
Theodore Ts'o503f9e72002-06-26 16:52:10 -04002772002-06-26 Theodore Ts'o <tytso@mit.edu>
278
279 * pass1.c (check_blocks): Move htree handling to handle_htree().
280 Factor out calls to ext2fs_write_inode so that it happens
281 if dirty_inode is non-zero.
282 (handle_htree): Add checks for invalid htree root, invalid
283 hash version, invalid hash version, and htree depth too deep.
284
285 * problem.h, problem.c (PR_1_HTREE_NODIR, PR_1_HTREE_BADROOT,
286 PR_1_HTREE_HASHV, PR_1_HTREE_INCOMPAT, PR_1_HTREE_DEPTH):
287 Add new problem codes.
288
289 * pass2.c (parse_int_node): Fix silly typo.
290 (check_dir_block): Change to use new ext2fs_dirhash()
291 function prototype.
292 (pass2): Fixed two minor bugs discovered by the test case:
293 Don't stop checking dxdir's after clearing a bad inode.
294 If there is a bad max hash, make sure the bad_dir flag
295 is set to make sure we try to clear inode.
296
Theodore Ts'o8fdc9982002-06-25 23:26:34 -04002972002-06-25 Theodore Ts'o <tytso@mit.edu>
298
299 * e2fsck.c (e2fsck_reset_context): Free the dx_dirinfo structure.
300
301 * message.c: Add new abbrevations @h and @p, "HTREE directory
302 inode" and "problem in".
303
304 * pass1.c (check_blocks): If the inode has the INDEX_FL flag,
305 register the block into the indexed directory data
306 structures. Or if the filesystem doesn't have the
307 DIR_INDEX flag, offer to clear the INDEX_FL.
308
309 * pass2.c (e2fsck_pass2, parse_int_node): Add support check htree
310 directories (we don't check all possible corruptions yet).
311
312 * problem.h, problem.h (PR_1_HTREE_SET, PR_2_HTREE_NOTREF,
313 PR_2_HTREE_DUPREF, PR_2_HTREE_MIN_HASH, PR_2_HTREE_MAX_HASH,
314 PR_2_HTREE_CLEAR, PR_2_HTREE_FCLR, PR_2_HTREE_BADBLK): Add
315 new problem codes.
316
317 * unix.c (main): If ENABLE_HTREE is not defined, complain if the
318 filesystem has the dir_index feature.
319
320 * Makefile.in, e2fsck.h, dx_dirinfo.c: New file (and group of
321 functions) which keeps track of blocks in HTREE directory
322 blocks.
323
Andreas Dilgerb21bf262002-06-10 11:05:56 -06003242002-05-22 Andreas Dilger <adilger@clusterfs.com>
325
326 * super.c (check_superblock): Check that the number of inodes and
327 blocks in a group is less than 2^16, so that the free inode
328 and block counts for a group fit into the group descriptor
329 table fields. Any more than that would need a COMPAT flag.
330
Theodore Ts'o0d634672002-05-22 00:22:38 -04003312002-05-22 Theodore Ts'o <tytso@mit.edu>
332
333 * pass1.c (check_ext_attr): Update to support the V2 Bestbits EA
334 format. We automatically determine from the first EA
335 block we visit whether we are using the V1 or V2 format.
336
Theodore Ts'oda307042002-05-21 21:19:14 -04003372002-05-21 Theodore Ts'o <tytso@mit.edu>
338
339 * pass1.c (process_block): If an inode has too many blocks or
340 is too big, then offer to truncate the inode.
341 (check_blocks): Don't bother checking the size to see if
342 it's too big, since that's just a symptom, not the disease
343 (which we're now appropriately checking in process_block).
344
345 * problem.c, problem.h: Add new problem codes PR_1_INODE_TOOBIG,
346 PR_1_TOOBIG_DIR, PR_1_TOOBIG_REG, PR_1_TOOBIG_SYMLINK, and
347 add the latch code PR_LATCH_TOOBIG.
348
Theodore Ts'obcf9c5d2002-05-21 09:14:17 -04003492002-05-20 Theodore Ts'o <tytso@mit.edu>
350
351 * e2fsck.h, pass1.c (e2fsck_pass1_check_symlink), pass2.c
352 (e2fsck_process_bad_inode): Add an extra
353 argument so a scratch buffer can be passed into the
354 function.
355
356 * pass1.c (e2fsck_pass1_check_device_inode,
357 e2fsck_pass1_check_symlink): If the EXT2_INDEX_FL flag is
358 set, then the device/FIFO is invalid.
359 (check_immutable): Don't check for EXT2_INDEX_FL; we take
360 care of that elsewhere now.
361 (e2fsck_pass1): Check to see if the symlink is valid
362 before we offer to clear any immutable bits. This matches
363 the order in which we check other special files.
364
365 * pass2.c (e2fsck_pass2): Allocate a bigger scratch buffer so we
366 can pass part of it to e2fsck_process_bad_inode.
367
368 * pass4.c (e2fsck_pass4): If we need to call
369 e2fsck_process_bad_inode(), allocate the necessary scratch
370 buffer.
371
372 * problem.h, problem.c: Change PR_2_SYMLINK_SIZE to be
373 PR_2_INVALID_SYMLINK, and change the text
374 accordingly. Revert the text change for PR_1_SET_IMMUTABLE
375 since we no longer check for EXT2_INDEX_FL in
376 check_immutable().
377
3782002-05-18 Andreas Dilger <adilger@clusterfs.com>
379
380 * pass1.c (e2fsck_pass1_check_symlink): Remove checks of
381 immutable/append-only checks, since this is handled by
382 check_immutable. For non-fast symlinks, read in the
383 data block and check the length to make sure it
384 matches with the inode size.
385 (check_immutable): Generalize to also check for the
386 EXT2_INDEX_FL flag.
387 (check_blocks): For non-regular files, signal a bad inode
388 size if i_size_high is non-zero.
389
390 * pass2.c: Only count large files if they are regular files
391 (not just if they aren't directories).
392
393 * problem.c, problem.h: Change comment for PR_2_SYMLINK_SIZE
394 to indicate that it can be triggered by any symlink,
395 not fast symlink. Change text for PR_1_SET_IMMUTABLE
396 to indicate that it the EXT2_INDEX_FL was set.
397
Theodore Ts'o31e29a12002-05-17 10:53:07 -04003982002-05-17 Theodore Ts'o <tytso@mit.edu>
399
400 * pass1.c (e2fsck_pass1): When calculating max_sizes, omit capping
401 this value by the calculated value of max_sect_sizes.
402 The inode may be a sparse inode, and the limit of
403 max_sect_sizes assumed a non-sparse inode and a limit
404 based on a 32-bit i_blocks field measured in 512 sectors.
405
406 * super.c (check_super_block): Fix check for s_log_block_size so
407 that takes into account fact that there is an offset of
408 EXT2_MIN_BLOCK_LOG_SIZE.
409
410 * pass1.c: Allocate max_sizes array to be big enough to support
411 the larger block sizes.
412
4132002-05-16 Andreas Dilger <adilger@clusterfs.com>
414
415 * unix.c (main), util.c (get_backup_sb): Use EXT2_MAX_BLOCK_SIZE
416 instead of using a hardcoded value of 4096.
417
418 * super.c (check_super_block): Change checks for s_log_block_size
419 s_log_frag_size so they support the larger block sizes.
420
421 * pass1.c (e2fsck_pass1): Calculate max_sizes array for block
422 sizes up to EXT2_MAX_BLOCK_SIZE (to support block sizes
423 greater than 4k).
424
Theodore Ts'oa8e77242002-03-08 03:12:14 -05004252002-03-08 Theodore Tso <tytso@mit.edu>
426
427 * Release of E2fsprogs 1.27
428
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05004292002-03-07 Theodore Tso <tytso@mit.edu>
430
431 * journal.c, pass5.c, revoke.c: Fix gcc -Wall complaints
432
4332002-03-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'of2d5c932002-03-07 03:13:07 -0500434
435 * unix.c (main): Don't close the filesystem before calling
436 fatal_error(); this just causes a needless warning about a
437 bad I/O manager magic number.
438
439 * journal.c (e2fsck_check_ext3_journal): Offer to clear the inode
440 in case the journal is too small, or the inode number in
441 the superblock doesn't appear to be random.
442
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05004432002-03-06 Theodore Tso <tytso@mit.edu>
Theodore Ts'of1226322002-03-07 02:47:07 -0500444
445 * problem.h, problem.c: PR_5_BLOCK_RANGE_UNUSED,
446 PR_5_BLOCK_RANGE_USED, PR_5_INODE_RANGE_UNUSED,
447 PR_5_INODE_RANGE_USED: Add new problem codes.
448
449 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Collapse
450 reporting of adjacent blocks and inodes into a range.
451
Theodore Ts'o14308a52002-03-05 03:26:52 -05004522002-03-04 Philipp Thomas <pthomas@suse.de>
453
454 * unix.c (main): Newer libintl needs LC_CTYPE to be set in
455 addition to LC_MESSAGES.
456
Theodore Ts'o57173d02002-02-26 14:59:39 -05004572002-02-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'ob9f40922002-02-24 03:08:57 -0500458
459 * Makefile.in (install): Install hard links for man pages for
460 fsck.ext2 and fsck.ext3. Remove any compressed man
461 pages before installing the man pages.
462
Theodore Ts'o57173d02002-02-26 14:59:39 -05004632002-02-22 Theodore Tso <tytso@mit.edu>
Theodore Ts'od1a21822002-02-22 00:17:59 -0500464
465 * journal.c: Improve code maintainability and reduce code size by
466 moving common code paths in e2fsck_journal_init_dev() and
467 e2fsck_journal_init_inode() into e2fsck_get_journal().
468 Also fixed a memory leak in recover_ext3_journal().
469
470 * super.c (release_orphan_inodes): Fix memory leak.
471
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05004722002-02-03 Theodore Tso <tytso@thunk.org>
473
474 * Release of E2fsprogs 1.26
475
4762001-12-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o3ed57c22001-12-24 15:01:59 -0500477
478 * unix.c (PRS): Don't allow the -c and -l/-L options to be
479 specified at the same time.
480
481 * e2fsck.h (E2F_OPT_WRITECHECK), unix.c (PRS),
482 badblocks.c (read_bad_blocks_file): If two -c options are
483 specified, then perform a non-destructive read/write scan
484 of the disk.
485
486 * e2fsck.8.in: Document the double -c option; also encourage users
487 to use -c instead of the -l/-L options since it's too hard
488 for users to get things like the blocksize parameter correct.
489
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05004902001-12-23 Theodore Tso <tytso@mit.edu>
Theodore Ts'o19007e52001-12-23 19:33:51 -0500491
Theodore Ts'of1a17612001-12-23 22:27:52 -0500492 * util.c (get_backup_sb): This function now searches for the
493 backup superblock by iterating over possible blocksizes
494 instead of defaulting a guess of 8193 if the superblock
495 isn't available.
496
497 * message.c (expand_percent_expression), unix.c (main): Pass in
498 new parameters to get_backup_sb. Also, in unix.c, use the
499 blocksize paramter in the e2fsck context structure instead
500 of using a static variable, since get_backup_sb wants to
501 be able to set the blocksize paramter.
502
503 * e2fsck.h: Update function prototype for get_backup_sb; also add
504 the blocksize parameter to the e2fsck context structure.
505
Theodore Ts'o19007e52001-12-23 19:33:51 -0500506 * Makefile.in, jfs_user.h: Move linux/jbd.h to
507 ext2fs/kernel-jbd.h, to avoid using the system header
508 file version of hbd.h when using diet glibc (since it
509 forcibly adds /usr/include to the beginning of the
510 include search path.)
511
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005122001-12-21 Theodore Tso <tytso@mit.edu>
Theodore Ts'od37066a2001-12-21 23:28:54 -0500513
Theodore Ts'o6a50c5e2001-12-21 23:29:35 -0500514 * problem.c (fix_problem): Use ctx->filesystem_name if the
515 ctx->device_name is NULL.
516
Theodore Ts'od37066a2001-12-21 23:28:54 -0500517 * journal.c (e2fsck_check_ext3_journal): Give the opportunity to
518 run the journal even if recovery flag is cleared. If
519 we're using a backup superblock, run the journal by
520 default.
521
522 * e2fsck.h (E2F_OPT_FORCE), unix.c (PRS, check_if_skip): Use a
523 bitfield in the e2fsck context flags word to indicate
524 whether or not a check should be forced. This allows the
525 journal code to set the option if necessary to force a
526 filesystem check.
527
528 * problem.h, problem.c: Remove PR_0_JOURNAL_RESET_JOURNAL, and add
529 PR_0_JOURNAL_RUN and PR_0_JOURNAL_RUN_DEFAULT. Update
530 problem decription texts.
531
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005322001-12-16 Theodore Tso <tytso@mit.edu>
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500533
Theodore Ts'o4ea7bd02001-12-16 23:23:37 -0500534 * e2fsck.h (ext2fs_get_refcount_size), unix.c (check_mount, PRS),
535 pass1.c (adjust_extattr_refcount),
536 ea_refcount.c (ea_refcount_create): Fix gcc -Wall nits.
537
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500538 * recovery.c, revoke.c: Update to versions from 2.4.17-pre8.
539
540 * journal.c, jfs_user.h: Update support code for new version of
541 recover.c and revoke.c. Fix support for filesystems with
542 external journals.
543
Gabriel Paubertb3b3d462001-11-30 13:45:28 +01005442001-11-30 Gabriel Paubert <paubert@iram.es>
545
546 * journal.c (e2fsck_journal_load): Fix an endianness bug.
547
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005482001-11-26 Theodore Tso <tytso@mit.edu>
Theodore Ts'o24bfb442001-11-26 15:51:14 -0500549
550 * super.c (check_super_block): Make sure that if the inode table
551 or allocation bitmap is zero, that it is marked as
552 invalid, so that in pass #1, a new bitmap/inode table gets
553 properly allocated. (Addresses Debian Bug #116975)
554
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005552001-11-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o1e9a7e02001-11-24 16:40:57 -0500556
557 * e2fsck.8.in: Fix minor typo in man page and clarify device
558 specification.
559
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005602001-10-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'o62e3e7f2001-10-07 02:13:30 -0400561
562 * journal.c (clear_v2_journal_fields, e2fsck_journal_load): If the
563 V2 fields are set on a V1 journal superblock, or an
564 internal V2 journal has s_nr_users is non-zero, clear the
565 entire journal superblock beyond the V1 superblock. This
566 fixes botched V1->V2 updates.
567
568 * problem.c, problem.h (PR_0_CLEAR_V2_JOURNAL): Add new problem code.
569
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005702001-09-20 Theodore Tso <tytso@mit.edu>
Theodore Ts'o773fd8a2001-10-06 21:26:27 -0400571
572 * e2fsck.h, journal.c (e2fsck_move_ext3_journal): Add new function
573 which will automatically relocate the ext3 journal from a
574 visible file to an invisible journal file if the
575 filesystem has been opened read/write.
576
577 * super.c (check_super_block): Add call to e2fsck_move_ext3_journal
578
579 * problem.c, problem.h (PR_0_MOVE_JOURNAL, PR_0_ERR_MOVE_JOURNAL):
580 Add new problem codes.
581
Theodore Ts'ofbf91112001-09-20 10:47:47 -04005822001-09-20 Theodore Tso <tytso@thunk.org>
583
584 * Release of E2fsprogs 1.25
585
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005862001-09-19 Theodore Tso <tytso@mit.edu>
Theodore Ts'oae6cdcf2001-09-19 15:17:25 -0400587
588 * unix.c (main): If a superblock is specified explicitly by the
589 user, don't try to automatically fall back to an
590 alternate superblock.
591
Theodore Ts'ofb707752001-09-04 15:00:37 -04005922001-09-02 Theodore Tso <tytso@thunk.org>
593
594 * Release of E2fsprogs 1.24a
595
Theodore Ts'o109624a2001-08-31 00:59:55 -04005962001-08-30 Theodore Tso <tytso@thunk.org>
597
598 * Release of E2fsprogs 1.24
599
Theodore Ts'ob1f204f2001-08-30 16:42:09 -04006002001-08-30 Theodore Tso <tytso@valinux.com>
601
602 * pass1.c (e2fsck_pass1): For EXT2_RESIZE_INO, allow its i_mode to
603 either be zero or a regular file (for compatibility with
604 Andreas's on-line resizing programs).
605
Theodore Ts'o53abed02001-08-27 12:18:16 -04006062001-08-27 Theodore Tso <tytso@valinux.com>
607
Theodore Ts'o0f8973f2001-08-27 12:44:23 -0400608 * unix.c (main): Remove EXT2FS_VERSION from the version display,
609 since it only confuses people.
610
Theodore Ts'o53abed02001-08-27 12:18:16 -0400611 * pass1.c (strnlen): Provide strnlen if libc doesn't.
612
Theodore Ts'o943ed872001-08-27 12:29:22 -04006132001-08-15 Theodore Tso <tytso@valinux.com>
614
615 * Release of E2fsprogs 1.23
616
Theodore Ts'o85645a6f2001-08-13 06:11:39 -04006172001-08-13 Theodore Tso <tytso@valinux.com>
618
Theodore Ts'oeb4ab512001-08-13 10:58:41 -0400619 * super.c (release_orphan_inodes): If the filesystem contains
620 errors, don't run the orphan * list, since the orphan list
621 can't be trusted.
622
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400623 * pass1.c (check_size): Fix logic in check_size; the previous code
624 only offered to clear the inode size fields if both size
625 and i_size_high were zero.
Theodore Ts'oa40ecbb2001-08-13 06:15:36 -0400626 (e2fsck_pass1_check_device_inode): If i_blocks is
627 non-zero, then assume that the device/socket/fifo inode
628 is bogus.
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400629
Theodore Ts'o2b94c652001-08-09 04:08:52 -04006302001-08-09 Theodore Tso <tytso@valinux.com>
631
Theodore Ts'oa4742692001-08-09 04:14:04 -0400632 * pass1.c, pass2.c, problem.c, problem.h: Fix bug introduced by
633 Andreas's symlink code; check_blocks() was unconditionally
634 testing inode_bad_map without checking to see if it
635 existed first. Fixed problem a different way; we now no
636 longer check inode_bad_map at all, since the file might
637 not get deleted in pass 2 anyway. We move the large file
638 feature reconciliation code to to e2fsck_pass2(), and in
639 deallocate_inode() in pass2.c, we decrement the large
640 files counter if we're about to delete a large file.
641
Theodore Ts'o2b94c652001-08-09 04:08:52 -0400642 * unix.c (show_stats): Print the number of large files in verbose
643 mode.
644
Theodore Ts'oc0a083f2001-08-07 10:17:41 -04006452001-08-07 Theodore Tso <tytso@valinux.com>
646
647 * journal.c (recover_ext3_journal): If s_errno is set in the
648 journal superblock, set the EXT2_ERROR_FS flag in the
649 filesystem superblock after the journal is run.
650
Theodore Ts'obd512b62001-08-04 21:33:03 -04006512001-08-04 Andreas Dilger <root@lynx.adilger.int>
652
653 * message.c: Change comments for %D and %d expansion in e2fsck
654 problem codes. It was not consistent which was for dirent
655 expansion, and which was for directory number expansion.
656
657 * problem.c (PR_2_FINAL_RECLEN, PR_2_BAD_FILETYPE): Fix problem
658 codes which got caught by the confusion between %D and %d.
659
Theodore Ts'od007cb42001-08-04 20:39:39 -04006602001-08-04 Theodore Tso <tytso@valinux.com>
661
662 * problem.c (PR_2_SYMLINK_SIZE): Change description to make it
663 more clear (and remove %s expansion). Also add missing
664 periods to the end of a number of problem descriptions.
665
666 * pass2.c (e2fsck_process_bad_inode): Remove unneeded problem
667 context string set now that the problem description for
668 PR_2_SYMLINK_SIZE has been changed.
669
670 * pass1.c (e2fsck_pass1_check_symlink): Consolidate some checks,
671 and check the validity of the symlink block here (so that
672 we detect this case here instead of later). Also use
673 sizeof(inode->i_block) instead EXT2_LINK_DIR.
674
Theodore Ts'o83e6ac82001-07-30 16:29:52 -04006752001-07-30 Theodore Tso <tytso@valinux.com>
676
677 * unix.c (check_mount): Remove the code which tested for the root
678 filesystem being mounted read-only, and depend on the
679 results flags from ext2fs_check_if_mounted.
680
Theodore Ts'o1e165262001-07-29 11:48:10 -04006812001-07-29 Theodore Tso <tytso@valinux.com>
682
Theodore Ts'o6d222f32001-07-29 12:06:58 -0400683 * unix.c (check_if_skip): Free the e2fsck context structure on a
684 normal clean filesystem exit, to make it easier to find
685 real memory leaks.
686 (PRS): Only update the path to include /sbin at the
687 beginning if the -c option is given, again to make it
688 easier to find memory leaks.
Theodore Ts'o0628ae32001-07-29 12:26:46 -0400689 (main): Move the final print_resource_track call after the
690 filesystem and the context are freed.
Theodore Ts'o6d222f32001-07-29 12:06:58 -0400691
692 * journal.c (e2fsck_journal_init_dev): Avoid memory leak if we
693 need to search for the journal device.
694 (e2fsck_journal_release): Free the journal IO channel when
695 we release the journal handle, to avoid a memory leak.
696
Theodore Ts'o1e165262001-07-29 11:48:10 -0400697 * e2fsck.c (e2fsck_reset_context): Fix bug; only close the io
698 channel if it is *different* from the filesystem io
699 channel.
700
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -04007012001-07-27 Theodore Tso <tytso@valinux.com>
702
Theodore Ts'oa092c562001-07-27 22:40:09 -0400703 * problem.c (PR_1_SET_IMMUTABLE): Clarify problem message.
704
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -0400705 * pass1.c (e2fsck_pass1): Check for symlinks that have the
706 immutable flag set (and offer to clear them).
707
Theodore Ts'o24ceb242001-07-26 09:02:56 -04007082001-07-26 Theodore Tso <tytso@valinux.com>
709
710 * pass1.c (e2fsck_pass1): Free ctx->block_ea_map at the end of
711 pass 1.
712
Theodore Ts'o14fe1c32001-07-25 19:48:24 -04007132001-07-25 Theodore Tso <tytso@valinux.com>
714
715 * pass1.c (check_ext_attr): Skip zero-length EA entries.
716
717 * problem.c: PR_1_EA_ALLOC_COLLISION shouldn't abort, but should
718 prompt to clear the EA block.
719
Theodore Ts'oadee8d72001-07-23 00:17:49 -04007202001-07-22 Theodore Tso <tytso@valinux.com>
721
722 * journal.c (ll_rw_block): Use ctx->journal_io instead of the
723 filesystem's io_channel.
724 (e2fsck_journal_init_dev): New function which supports
725 initialization of the external journal.
726 (e2fsck_get_journal): Remove code which flagged an error
727 if the superblock reported the use of an external journal.
728 (ext3_journal_via_mount): Remove unsued, #ifdefed out function.
729
730 * problem.c, problem.h: Removed error codes no longer used
731 (PR_0_JOURNAL_UNSUPP_DEV, PR_0_JOURNAL_BAD_DEV,
732 PR_0_JOURNAL_UNSUPP_UUID) and replace them with new error
733 codes related with failures in loading the external
734 journal (PR_0_JOURNAL_UNSUPP_MULTIFS,
735 PR_0_CANT_FIND_JOURNAL, PR_0_EXT_JOURNAL_BAD_SUPER).
736 Also changed the text assocated with PR_0_JOURNAL_BAD_UUID
737 to reflect the case where the external journal isn't
738 correct for this filesystem.
739
740 * unix.c (PRS), e2fsck.8.in: Add new option -j which allows
741 the user to specify the pathname to find the external journal.
742
743 * e2fsck.c (e2fsck_reset_context): Close journal_io if it isn't
744 the same as the filesystem io_channel.
745
746 * e2fsck.h: Add new fields (journal_io and journal_name) in the
747 context structure to support external journals.
748
Theodore Ts'od3124012001-07-20 14:13:49 -04007492001-07-20 Theodore Tso <tytso@valinux.com>
750
751 * unix.c (main): Add an explicit warning when the filesystem is
752 left not completely fixed when e2fsck exits. (Addresses
753 Debian bug #104502.)
754
Theodore Ts'o55fd07e2001-07-19 16:31:25 -04007552001-07-19 Theodore Tso <tytso@valinux.com>
756
757 * pass1.c (check_ext_attr): The entire EA block is now checked to
758 make sure that parts of the EA block aren't being used for
759 multiple purposes.
760
761 * Makefile.in e2fsck.h, region.c: New file which is used to detect
762 collisions in extended attribute block.
763
764 * problem.h, problem.c (PR_1_EA_MULTI_BLOCK, PR_1_EA_ALLOC_REGION,
765 PR_1_EA_ALLOC_COLLISION, PR_1_EA_BAD_NAME,
766 PR_1_EA_BAD_VALUE): Add new problem codes.
767
Theodore Ts'o3c6b8972001-07-10 14:27:58 -04007682001-07-10 Theodore Tso <tytso@valinux.com>
769
770 * journal.c (e2fsck_run_ext3_journal): Only call ext3_flush() if
771 the superblock is dirty.
772
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -04007732001-07-07 Theodore Tso <tytso@valinux.com>
774
Theodore Ts'o7b63fff2001-07-07 23:01:31 -0400775 * pass1b.c (pass1b, process_pass1b_block): Change the num_bad
776 field calculation so that it only counts EA block entries
777 as a single multiply claimed block (since once we clone
778 the EA blocks for one inode, we fix the problem for all of
779 the other inodes). Also, I moved the num_bad calculation
780 from process_pass1b_block to the end of pass1b. This
781 fixes a *significant* performance bug in pass1b which hit
782 people who had to had a lot of multiply claimed blocks.
783 (Can you say O(n**3) boys and girls? I knew you could...
784 Fortunately, this case didn't happen that much in actual
785 practice.)
786
787 * pass1.c (e2fsck_pass1): Defer inodes which have an extended
788 attribute block for later processing to avoid extra seeks
789 across the disk.
790 (process_inode_cmp): If there is no indirect block, sort
791 by the extended attribute (i_file_acl) block.
792
Theodore Ts'o7abb2bd2001-07-07 13:20:34 -0400793 * pass1b.c (clone_file_block): Fix bugs when cloning extended
794 attribute blocks. Moved free of block_buf to after the
795 code which clones the extattr block, and fixed logic for
796 changing pointers to the extended attribute field in the
797 inodes which were affected.
798 (decrement_badcount): New function which is used whenever
799 we need to decrement the number of files which claim a
800 particular bad block. Fixed bug where delete_file wasn't
801 checking check_if_fs_block() before clearing the entry in
802 block_dup_map. This could cause a block which was claimed
803 by multiple files as well as the filesystem metadata to
804 not be completely fixed.
805
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -0400806 * pass1.c (adjust_extattr_refcount): Add new function which
807 adjusts the reference counts of extended attribute blocks
808 if needed, both up and down.
809 (e2fsck_pass1): If the refcount or refcount_extra
810 structure are present, call adjust_extattr_refcount(),
811 and free it afterwards.
812
813 * problem.h, problem.c (PR_1_EXTATTR_READ_ABORT,
814 PR_1_EXTATTR_REFCOUNT, PR_1_EXTATTR_WRITE): Add new
815 problem codes.
816
Theodore Ts'o342d8472001-07-02 11:54:09 -04008172001-07-02 Theodore Tso <tytso@valinux.com>
818
819 * pass1.c (e2fsck_pass1, check_ext_attr, check_blocks): Add
820 initial support for scanning extended attribute blocks.
821
822 * e2fsck.c (e2fsck_reset_context): free extended attribute
823 refcount structure.
824
825 * e2fsck.h: Add new fields for accounting for the extended
826 attribute blocks.
827
828 * Makefile.in, ea_refcount.c, e2fsck.h: Add new file which
829 implements a reference count abstraction.
830
831 * problem.c, problem.h: Add new problem codes PR_1_ALLOCATE_REFCOUNT,
832 PR_1_READ_EA_BLOCK, PR_1_BAD_EA_BLOCK, PR_2_FILE_ACL_BAD
833
834 * message.c: Add "@a" as an abbreviation for "extended attribute"
835
836 * pass1b.c (clone_file): Add code which handles cloning an
837 extended attribute block.
838
839 * pass1b.c (delete_file):
840 * pass2.c (deallocate_inode): If the inode contains an extended
841 attribute block in the file_acl field, clear it and
842 deallocate the block.
843
8442001-06-28 Theodore Tso <tytso@valinux.com>
845
846 * pass2.c (e2fsck_process_bad_inode): Deal with inodes which are
847 marked bad because of an invalid file_acl (either because
848 EXT2_FEATURE_COMPAT_EXT_ATTR is not set, or because the
849 block number in file_acl is bad.
850
Theodore Ts'o636a9542001-06-29 17:57:26 -04008512001-06-29 Theodore Tso <tytso@valinux.com>
852
853 * unix.c (show_stats): Use long long to calculate the percentage
854 of the number of blocks in use in the filesystem.
855
Theodore Ts'o67960132001-06-23 00:16:37 -04008562001-06-23 Theodore Tso <tytso@valinux.com>
857
858 * Release of E2fsprogs 1.22
859
Theodore Ts'od90f3492001-06-22 21:01:17 -04008602001-06-22 Theodore Tso <tytso@valinux.com>
861
862 * flushb.c: Use platform independent method of defining the
863 BLKFLSBUF ioctl. Also include sys/mount.h since on newer
864 platforms BLKFLSBUF is defined there.
865
Theodore Ts'o42475e22001-06-22 20:35:38 -04008662001-06-19 Theodore Tso <tytso@valinux.com>
867
868 * super.c (release_inode_blocks): Don't try to release the blocks
869 if the orphaned inode is a device file, symlink, or some
870 other kind of special file that doesn't have a block list.
871
Theodore Ts'of4f75ba2001-06-16 01:14:28 +00008722001-06-15 Theodore Tso <tytso@valinux.com>
873
874 * Release of E2fsprogs 1.21
875
Theodore Ts'ob6a08072001-06-14 01:16:17 +00008762001-06-13 Theodore Tso <tytso@valinux.com>
877
878 * unix.c (check_if_skip): Adapted patch from Andreas Dilger which
879 prints the number of mounts or days elapsed since the last
880 check when e2fsck is forced to check an otherwise clean
881 filesystem.
882
Theodore Ts'ocbbf0312001-06-13 00:12:04 +00008832001-06-12 Theodore Tso <tytso@valinux.com>
884
885 * badblocks.c: Stop using the compatibility badblocks function,
886 and use the ext2fs_badblocks_* functions instead.
887
Theodore Ts'o5df55d72001-06-11 07:00:04 +00008882001-06-11 Theodore Tso <tytso@valinux.com>
889
Theodore Ts'o3034f622001-06-11 15:17:45 +0000890 * unix.c (PRS): Fix bug introduced in 1.20 which broke the -F
891 flag.
892
Theodore Ts'o5df55d72001-06-11 07:00:04 +0000893 * Makefile.in: Add message.c and swapfs.c to the list of source
894 files to build the make depend.
895
896 * swapfs.c, unix.c: Only support the -s and -S options to e2fsck
897 if ENABLE_SWAPFS is defined.
898
Theodore Ts'o725c4742001-06-08 11:55:44 +00008992001-06-08 Theodore Tso <tytso@valinux.com>
900
901 * recover.c, revoke.c: Synchronize with ext3 0.7a
902
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00009032001-06-02 Theodore Tso <tytso@valinux.com>
904
Theodore Ts'oa479fe62001-06-02 04:50:14 +0000905 * recovery.c (scan_revoke_records): Fix bug in recovery code;
906 missing byte order conversion.
907
Theodore Ts'ofdbdea02001-06-02 04:26:26 +0000908 * pass1.c (mark_inode_bad): Replace alloc_bad_map with a function
909 which sets the bit in the bad inode bitmap.
910 (e2fsck_pass1): Check for fast symlinks with an invalid
911 size, and set the bad inode map in that case.
Theodore Ts'o62b6d472001-06-02 04:37:02 +0000912 (check_size): Check i_size_high for special files and
913 prompt to clear it along with i_size if non-zero.
Theodore Ts'ofdbdea02001-06-02 04:26:26 +0000914
915 * pass2.c (e2fsck_process_bad_inode): Check for fast symlinks with
916 an invalid size and prompt the user if the inode should be
917 cleared.
918
919 * problem.h, problem.c (PR_2_SYMLINK_SIZE): Added new problem code.
920
Theodore Ts'o71d521c2001-06-01 19:29:36 +00009212001-06-01 Theodore Tso <tytso@valinux.com>
922
Theodore Ts'o2f686ac2001-06-02 00:38:40 +0000923 * problem.c, problem.h: Change PR_0_JOURNAL_UNSUPP_INCOMPAT and
924 PR_0_JOURNAL_UNSUPP_ROCOMPAT so they aren't fatal errors,
925 but prompt to see if the user should abort. Removed the
926 PR_0_JOURNAL_RESET_COMPAT problem code.
927
928 * journal.c (e2fsck_journal_load): If there are incompatible
929 journal flags, just return an error code.
930 (e2fsck_check_ext3_journal): If e2fsck_journal_load
931 returns an error code indicating that there are
932 incompatible journal flag, check to see if we should
933 abort, and then offer to clear the journal.
Theodore Ts'oe3338452001-06-14 07:11:33 +0000934 (Addresses Debian bug #98527.)
Theodore Ts'o2f686ac2001-06-02 00:38:40 +0000935
Theodore Ts'o797f5ef2001-06-01 23:49:46 +0000936 * Makefile.in: Move include/asm/types.h.in to
Theodore Ts'o36a23e12001-06-02 00:54:10 +0000937 lib/ext2fs/ext2_types.h.in.
Theodore Ts'o797f5ef2001-06-01 23:49:46 +0000938
9392001-06-01 Theodore Tso <tytso@valinux.com>
940
Theodore Ts'o71d521c2001-06-01 19:29:36 +0000941 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
942 pass1_check_directory): Add a safety check to make sure
943 ctx->stashed_inode is non-zero.
944
945 * pass1b.c (pass1b): Use e2fsck_use_inode_shortcuts() to disable
946 the inode shortcut processing, instead of manually
947 clearing only half of the function pointers that needed to
948 be NULL'ed out. This caused nasty bugs if the last inode
949 in the filesystem needed dup block processing.
950
951 * pass1b.c (clone_file_block): When cloning a directory's metadata
952 block, don't try to update the directory block list
953 database, since indirect blocks aren't stored in the
954 database and the resulting error will abort the file clone
955 operation.
956
Theodore Ts'o561cd4d2001-05-25 16:40:56 +00009572001-05-25 Theodore Tso <tytso@valinux.com>
958
Theodore Ts'obb185862001-05-25 17:35:00 +0000959 * Release of E2fsprogs 1.20
960
9612001-05-25 Theodore Tso <tytso@valinux.com>
962
Theodore Ts'o561cd4d2001-05-25 16:40:56 +0000963 * journal.c (e2fsck_journal_reset_super): Remove extraneous line
964
Theodore Ts'oc7f23362001-05-23 22:19:47 +00009652001-05-23 Theodore Tso <tytso@valinux.com>
966
967 * journal.c (e2fsck_journal_reset_super): Fix bug; the reset
968 journal wasn't getting written out to disk since the dirty
969 bit wasn't being set on the buffer.
970 (e2fsck_journal_load): Don't print an error message if the
971 journal version number is wrong; just return a error code
972 reflecting this fact. If the block type in the journal
973 superblcok is obviously not a version number, report the
974 journal is corrupted.
975 (e2fsck_check_ext3_journal): On an unsupported journal
976 version, prompt to abort by default, but then offer a
977 chance to clear the journal as corrupt.
978
979 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_VERSION): Added new
980 problem code.
981
Theodore Ts'o424cd2b2001-05-14 04:06:56 +00009822001-05-14 Theodore Tso <tytso@valinux.com>
983
Theodore Ts'o21afac02001-05-14 12:47:41 +0000984 * pass1.c: Treat inodes with a low dtime (that were from a
985 corrupted orphan list) specially.
986
987 * problem.c, problem.h: Add new problem codes PR_1_LOW_DTIME and
988 PR_1_ORPHAN_LIST_REFUGEES, and a new latch group,
989 PR_LATCH_LOW_DTIME.
990
991 * problemP.h: Expand the size of the problem flag to be an int
992 instead of a short. Expand space in the flag word which
993 is reserved for problem latch flags from 3 bits to 8 bits.
994
Theodore Ts'o54c637d2001-05-14 11:45:38 +0000995 * e2fsck.h, scantest.c: Change location of ext2_fs.h to be
996 ext2fs/ext2_fs.h
997
Theodore Ts'o424cd2b2001-05-14 04:06:56 +0000998 * super.c (check_super_block): Be more strict on checking
999 s_r_blocks_count superblock field.
1000
10012001-05-13 Theodore Tso <tytso@valinux.com>
1002
1003 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_ROCOMPAT,
1004 PR_0_JOURNAL_UNSUPP_INCOMPAT, PR_0_JOURNAL_RESET_COMPAT):
1005 New problem codes.
1006
1007 * journal.c (e2fsck_journal_load): Use a problem code to
1008 report unsupported feature flags. There is code to
1009 clear unsupported flags, but since this is dangerous,
1010 it's not allowed in the problem code table.
1011
10122001-05-11 Andreas Dilger <adilger@turbolinux.com>
1013
1014 * journal.c (e2fsck_journal_reset_super): initialize the journal
1015 sequence number to a random value to avoid recovering
1016 bad transactions from a corrupt journal.
1017
Theodore Ts'o328a5ce2001-05-13 20:21:25 +000010182001-05-13 Theodore Tso <tytso@valinux.com>
1019
1020 * journal.c: Code cleanup; initialize journal_enable_debug using
1021 an initializer.
1022
Theodore Ts'ofc9a69c2001-05-12 13:43:46 +000010232001-05-12 Theodore Tso <tytso@valinux.com>
1024
1025 * unix.c (PRS): Skip validation of -C's file descriptor if it is
1026 zero, since that is special case.
1027
Theodore Ts'of0b8c872001-05-09 06:03:58 +000010282001-05-09 Theodore Tso <tytso@valinux.com>
1029
1030 * super.c (release_orphan_inodes): Add gettext quoting around
1031 "Truncating" and "Clearing" for i18n.
1032
Theodore Ts'ob9852cd2001-05-05 05:14:59 +000010332001-05-05 Theodore Tso <tytso@valinux.com>
1034
Theodore Ts'oe39ac922001-05-05 06:47:24 +00001035 * util.c (fatal_error): Use the correct magic number when checking
1036 the magic number for the io_channel data structure. Also
1037 remove extraneous call to io_channel_flush() that was left
1038 over from an editing session.
1039
Theodore Ts'ob9852cd2001-05-05 05:14:59 +00001040 * pass2.c (check_dir_block): Ignore EXT2_ET_DIR_CORRUPTED errors
1041 from ext2fs_read_dir_block().
1042
Theodore Ts'o5f629b72001-05-01 20:01:08 +000010432001-05-01 Theodore Tso <tytso@valinux.com>
1044
Theodore Ts'oae8160e2001-05-01 21:13:37 +00001045 * unix.c (PRS): Validate the completion information file
1046 descriptor so that the completion bar won't get
1047 accidentally written onto the disk.
1048
Theodore Ts'o5f629b72001-05-01 20:01:08 +00001049 * e2fsck.8.in: Add explanation that you can use mke2fs -n -b
1050 blocksize to printout alternate superblock locations.
1051
Theodore Ts'obc57f152001-04-26 04:11:46 +000010522001-04-26 Theodore Tso <tytso@valinux.com>
1053
1054 * unix.c (check_if_skip): If the max_mount_count is zero, treat it
1055 as having no count set.
1056
Theodore Ts'oef059872001-04-17 00:40:02 +000010572001-04-16 Theodore Tso <tytso@valinux.com>
1058
1059 * super.c (check_super_block): Fix bad calculation of
1060 inodes_per_block, and tighten min/max checks to be a bit
1061 more paranoid. Thanks to Andreas Dilger for pointing out
1062 this bug.
1063
Theodore Ts'o1f735032001-03-29 19:00:50 +000010642001-03-29 Theodore Tso <tytso@valinux.com>
1065
Theodore Ts'o15986f72001-03-29 19:22:16 +00001066 * journal.c (mark_buffer_uptodate): Add emulation of kernel
1067 function mark_buffer_uptodate.
1068
Theodore Ts'o1f735032001-03-29 19:00:50 +00001069 * recovery.c, revoke.c: Synchronize with 0.6b ext3 files.
1070
Theodore Ts'od0515212001-02-13 04:32:53 +000010712001-02-12 Theodore Tso <tytso@valinux.com>
1072
1073 * journal.c (e2fsck_run_ext3_journal): Force a flush of the
1074 filesystem and io_channel before replaying the journal.
1075
Theodore Ts'oa5c33f22001-01-18 02:34:03 +000010762001-01-17 Theodore Ts'o <tytso@valinux.com>
1077
1078 * pass1.c (check_blocks): Fix large file checking code so that
1079 files > 2GB are considered large files, and restrict
1080 directories from being > 2GB.
1081
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +000010822001-01-12 Theodore Ts'o <tytso@valinux.com>
1083
Theodore Ts'oa9ca2012001-01-12 21:53:25 +00001084 * journal.c (e2fsck_journal_fix_unsupported_super): Remove unused
1085 function. Add FIXME notes to e2fsck_get_journal(), from
1086 Andreas Dilger.
1087
1088 * pass1.c (e2fsck_pass1): Cap the maximum legal size of a file by
1089 the limit caused by the fact that i_blocks is in 512 byte
1090 units, and that the Linux buffer cache also fundamentally
1091 assumes 512 byte sectors.
1092 Make sure that the journal inode is a regular file, and
1093 when clearing an unused journal inode, make sure the
1094 icount db is updated.
1095
1096 * problem.c, problem.h (PR_1_JOURNAL_BAD_MODE): Add new problem code.
1097
Theodore Ts'o37b6b292001-01-12 21:16:13 +00001098 * problem.c: For PR_1_RESERVED_BAD_MODE, print a description of
1099 the reserved inode. In PR_0_JOURNAL_HAS_JOURNAL, prompt
1100 to clear the journal, rather than deleting it (which is
1101 more accurate). (From Andreas Dilger.)
1102
Theodore Ts'o6a6d3d42001-01-12 21:11:24 +00001103 * journal.c: Make sure all functions which return an error code
1104 use the errcode_t return type, and not "int"
1105 (e2fsck_journal_release): Add new parameter, "drop",
1106 which is used when we just want to deallocate the journal
1107 without trying to write out any changes.
1108 (mark_buffer_clean): New function
1109 (e2fsck_check_ext3_journal): If we fail loading the
1110 journal, make sure we free all memory associated with it.
1111 (recover_ext3_journal): If we fail to load the journal or
1112 initialize the revoke data structures, make sure we free all
1113 memory associated with the journal.
1114
Theodore Ts'o721edd02001-01-12 21:05:57 +00001115 * message.c (special_inode_name): Add more special inode names
1116 (From Andreas Dilger)
1117
Theodore Ts'o58a75172001-01-12 20:59:19 +00001118 * util.c (fatal_error): Check to make sure the io_manager data
1119 structure is sane before trying to flush the io_channel.
1120 (From Andreas Dilger)
1121
Theodore Ts'o721edd02001-01-12 21:05:57 +00001122 * mtrace.h, super.c, pass2.c: Minor whitespace cleanups, from
1123 Andreas Dilger.
Theodore Ts'o4035f402001-01-12 20:25:50 +00001124
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +00001125 * journal.c (e2fsck_journal_fix_bad_inode): Set pctx->ino to the
1126 bad journal number.
1127
1128 * problem.c (PR_0_JOURNAL_BAD_INODE): Use pctx->ino instead of
1129 pctx->num when printing the bad journal inode number.
1130
Theodore Ts'o86c627e2001-01-11 15:12:14 +000011312001-01-11 <tytso@snap.thunk.org>
1132
Theodore Ts'o5ba23cb2001-01-11 19:15:02 +00001133 * pass1.c (process_block): Remove dead code which was never
1134 getting executed.
1135
1136 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
1137 ext2fs_sync_device() instead of using BLKFLSBUF.
1138
1139 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
1140
Theodore Ts'o86c627e2001-01-11 15:12:14 +00001141 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
1142 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
1143 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
1144 ino_t to ext2_ino_t.
1145
Theodore Ts'o95a5bc92001-01-11 04:58:21 +000011462001-01-09 <tytso@snap.thunk.org>
1147
1148 * problem.c: Fix another broken @F vs @f problem.
1149
Theodore Ts'o53ef44c2001-01-06 05:55:58 +000011502001-01-06 <tytso@snap.thunk.org>
1151
1152 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
1153 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
1154
1155 * jfs_user.h: Use more sophisticated inline handling to allow
1156 building with --enable-gcc-wall
1157
Theodore Ts'od3f35b62001-01-03 13:00:43 +000011582001-01-03 <tytso@snap.thunk.org>
1159
Theodore Ts'of18996c2001-01-03 16:57:24 +00001160 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
1161 own block; if the journal inode is not in use, and it
1162 contains data, offer to clear it.
1163
1164 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
1165 problem code.
1166
1167 * problem.c: Modified problem table to use a new abbreviations.
1168
Theodore Ts'od74edf42001-01-03 19:38:04 +00001169 * message.c: Add @j abbreviation for journal, and @v abbreviation
Theodore Ts'oe9044062001-01-03 15:39:37 +00001170 for device.
Theodore Ts'o1ce64532001-01-03 15:34:20 +00001171
Theodore Ts'occ7067b2001-01-03 13:24:06 +00001172 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
1173
Theodore Ts'od3f35b62001-01-03 13:00:43 +00001174 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
1175 the journal stored on a reserved inode. Also force a fsck
1176 if the journal appears to exist while !NEEDS_RECOVERY, and
1177 we forcibly reset the journal.
1178
Theodore Ts'of5ae75e2001-01-01 14:52:52 +000011792001-01-01 <tytso@snap.thunk.org>
1180
Theodore Ts'o5dd8f962001-01-01 15:51:50 +00001181 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
1182 ext2fs_sb with struct ext2_super_block.
1183
Theodore Ts'of5ae75e2001-01-01 14:52:52 +00001184 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
1185
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +000011862000-12-31 <tytso@snap.thunk.org>
1187
1188 * jfs_compat.h: Remove uneeded header file.
1189
Theodore Ts'ob2f93192000-12-30 20:33:42 +000011902000-12-30 <tytso@snap.thunk.org>
1191
Theodore Ts'oc59a7042000-12-31 01:52:03 +00001192 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
1193 conflicts with the system header file.
1194
Theodore Ts'ob2f93192000-12-30 20:33:42 +00001195 * problem.h: Fixed numbering of pass1 error messages; an extra 0
1196 had slipped into some of the numbers. (Pointed out by
1197 Andreas Dilger)
1198
1199 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
1200 unnecessary automatic variable. Add explanatory comment
1201 about the kernel emulation routines. (Suggested by
1202 Andreas Dilger)
1203
Theodore Ts'o060b5fb2000-12-13 18:07:23 +000012042000-12-13 Theodore Ts'o <tytso@valinux.com>
1205
Theodore Ts'o9b565752000-12-13 18:50:22 +00001206 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
1207 journal fields are consistent if any of the superblock
1208 fields are set. (Backs out erroneous change made by sct,
1209 pointed out by Andreas.)
1210
1211 * unix.c (main): Clarify coments (no code changes)
1212
1213 * super.c (release_orphan_inodes): Fix spelling typo in error message.
1214
Theodore Ts'o8188c9e2000-12-13 18:39:14 +00001215 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
1216 level if we need to set large files flag. Patch from
1217 Andreas Dilger.
1218
Theodore Ts'o7b59f1e2000-12-13 18:11:44 +00001219 * super.c (check_super_block): If we have any of the compatibility
1220 flags set, we need to have a revision 1 filesystem. Most
1221 kernels will not check the flags on a rev 0 filesystem
1222 and we may have corruption issues because of the
1223 incompatible changes to the filesystem. Patch from Andreas
1224 Dilger.
1225
Theodore Ts'o060b5fb2000-12-13 18:07:23 +00001226 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
1227 new problem codes.
1228
Theodore Ts'o0e8a9562000-12-09 06:41:25 +000012292000-12-09 <tytso@snap.thunk.org>
1230
Theodore Ts'obf2d4992000-12-09 14:46:20 +00001231 * flushb.c: Fix flushb so that it does something other than waste
1232 disk space when built on systems with modern header files
1233 and add a non-subtle Copyright Licensing restriction so
1234 Yann will remove it from the Debian Distribution. (Now
1235 violates the Debian Free Software Guidelines, on purpose.)
1236
Theodore Ts'of43650c2000-12-09 06:47:56 +00001237 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
1238 at the top level, set the JFS debuging level to 2.
1239
Theodore Ts'o0e8a9562000-12-09 06:41:25 +00001240 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
1241 has been moved to the include/linux directory.
1242
1243 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
1244 support the V2 superblock and revoke processing. The
1245 journal.c and revoke.c files are copies from the ext3
1246 kernel source.
1247
1248 * Makefile.in: Added revoke.c to the list of source/object files.
1249
Theodore Ts'o133a56d2000-11-17 05:40:49 +000012502000-11-16 Theodore Ts'o <tytso@valinux.com>
1251
1252 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
1253 reporting problems rather than using com_err directly.
1254
1255 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
1256
1257 * message.c (expand_percent_expression): Add safety check. If
1258 ctx->str is NULL, print "NULL" instead of dereferencing
1259 the null pointer.
1260
1261 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
1262 to ext2fs_block_iterate2, to support 64-bit filesizes and
1263 to speed things up slightly by avoiding the use of the
1264 ext2fs_block_iterate's compatibility shim layer.
1265
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +000012662000-10-30 <tytso@snap.thunk.org>
1267
1268 * util.c (get_backup_sb): Calculate backup superblock correctly
1269 when the blocksize is > 1k.
1270
Theodore Ts'o241f2242000-10-26 20:42:07 +000012712000-10-26 <tytso@snap.thunk.org>
1272
1273 * jfs.h, jfs_compat.h, journal.c: Updated to include the
1274 definition of the new journal superblock format; still
1275 only supports V1 superblocks for now. (From sct)
1276
Theodore Ts'ob09a4b02000-10-24 21:16:09 +000012772000-10-24 <tytso@snap.thunk.org>
1278
Theodore Ts'o83949022000-10-25 01:38:50 +00001279 * super.c (release_inode_block, release_inode_blocks,
1280 release_orphan_inodes): Add code to deal with truncating
1281 inodes which are still in use (but which are on the orphan
1282 list because they need truncation).
1283
1284 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
1285 PR_0_ORPHAN_CLEAR_INODE, and remove
1286 PR_0_ORPHAN_INODE_INUSE.
1287
1288 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
1289 a message when the journal is being recovered.
1290
Theodore Ts'ob09a4b02000-10-24 21:16:09 +00001291 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
1292 journal inode, if it is in use.
1293
Theodore Ts'oadfca562000-09-12 21:24:36 +000012942000-09-12 <tytso@valinux.com>
1295
1296 * extend.c:
1297 * flushb.c: Add include of nls-enable.h which is necessary so that
1298 they can compile correctly.
1299
Theodore Ts'occ96b2b2000-08-22 21:30:11 +000013002000-08-22 <tytso@valinux.com>
1301
Theodore Ts'o2575fb02000-08-22 21:50:04 +00001302 * unix.c (main): If we're doing a read-only check, skip the
1303 journal playback, but don't abort the e2fsck run.
1304
Theodore Ts'o99a2cc92000-08-22 21:41:52 +00001305 * super.c (release_orphan_inodes): Fix typo; should do bounds
1306 checking on next_ino instead of ino.
1307
1308 * jfs_compat.h (J_ASSERT):
1309 * journal.c (e2fsck_run_ext3_journal):
1310 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
1311
Theodore Ts'o243dc312000-08-22 21:37:47 +00001312 * unix.c: Use fatal_error() instead of exit() whenever possible.
1313 Also fix the fsck exit codes so that we use FSCK_USAGE
1314 when it is appropriate. Rename global_signal_ctx to
1315 e2fsck_global_ctx and let it be exported globally.
1316
Theodore Ts'occ96b2b2000-08-22 21:30:11 +00001317 * util.c (fatal_error): Try to flush the I/O manager before
1318 forcing an exit.
1319
Theodore Ts'oecf1b772000-08-20 22:06:31 +000013202000-08-20 <tytso@valinux.com>
1321
1322 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
1323 e2fsck_check_ext3_journal to smash the journal because
1324 journal->j_transaction_sequence wasn't getting
1325 initialized.
1326
1327 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
1328 call to e2fsck_clear_recover from recover_ext3_journal to
1329 after the filesystem has been closed and reopened.
1330 Otherwise, the superblock in the filesystem handle will
1331 probably be stale, and will overwrite the newer version of
1332 the superblock written by the log recovery.
1333
1334 * message.c (expand_inode_expression): Add support for %Iu and %Ig
1335
1336 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
1337
1338 * super.c (release_orphan_inodes, release_inode_block,
1339 release_inode_blocks): Update the block group descriptor
1340 counts when freeing the orphan inode. Use
1341 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
1342
1343 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
1344 attempted to reopen the filesystem using the device name
1345 instead of the filesystem name.
1346
Theodore Ts'o80bfaa32000-08-18 15:08:37 +000013472000-08-18 <tytso@valinux.com>
1348
1349 * Makefile.in: Update the make dependencies
1350
1351 * problem.c, problem.h: Add the problem codes:
1352 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
1353 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
1354 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
1355 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
1356
1357 * super.c (release_inode_blocks, release_orphan_inodes,
1358 check_super_block): Add support for clearing orphaned
1359 inodes from the unmounted filesystem.
1360
1361 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
1362 check; this is now handled in check_super_block ---
1363 non-journaled filesystems can use the orphan list in the
1364 future. Also, move the the re-opening of the filesystem
1365 to e2fsck_run_ext3_journal().
1366
Theodore Ts'o3b5386d2000-08-14 14:25:19 +000013672000-07-12 Andreas Dilger <adilger@turbolinux.com>
1368
1369 * journal.c: implement loading of ext3 journal for recovery code
1370
1371 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
1372 Add journal problems.
1373
1374 * recovery.c (journal_recover): user-space ext3 journal recovery code
1375
1376 * unix.c (main) : check journal and do recovery in separate steps
1377
Theodore Ts'ob8d164c2000-08-08 03:17:04 +000013782000-08-07 <tytso@snap.thunk.org>
1379
1380 * unix.c (calc_percent): Make sure that we don't take a floating
1381 exception if the max value is zero. (should normally
1382 never happen, but...)
1383
Theodore Ts'of9e67062000-07-13 23:25:54 +000013842000-07-13 <tytso@valinux.com>
1385
1386 * Release of E2fsprogs 1.19
1387
Theodore Ts'o17390c02000-07-07 04:13:21 +000013882000-07-06 Theodore Ts'o <tytso@valinux.com>
1389
1390 * unix.c (check_if_skip): Modify algorithm for checking
1391 s_max_mnt_count to match with the kernel. (If
1392 s_max_mnt_count is negative, ignore the mnt_count check.)
1393
1394 * unix.c (e2fsck_update_progress): Adjust the width of the
1395 progress bar dynamically, based on the filesystem name
1396 that we need to display.
1397
1398 * unix.c (main): If the ext3 needs_recovery flag is set, call
1399 e2fsck_run_ext3_journal() and then restart the e2fsck run.
1400
1401 * journal.c (e2fsck_run_ext3_journal): New file which contains
1402 logic to recover the ext3 journal. This version relies on
1403 the kernel being able to mount the filesystem in order to
1404 run the journal.
1405
Theodore Ts'o92269042000-07-05 18:25:59 +000014062000-07-05 Theodore Ts'o <tytso@valinux.com>
1407
1408 * unix.c (e2fsck_update_progress): Only save and check the last
1409 percentage after multiplying it by 10, nor 1000, since we
1410 only need to save values to a tenth of a percent (and the
1411 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +00001412 Also, re-arrange the logic so that we do the time
1413 check only after doing the percentage check, and we
1414 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +00001415
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +000014162000-07-04 Theodore Ts'o <tytso@valinux.com>
1417
1418 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
1419 field is set; if so, clear it, so that ext3 mounting code
1420 won't get confused by the fact that we've cleared out the
1421 orphaned inodes.
1422
Theodore Ts'obbd47d72000-06-10 19:21:33 +000014232000-06-10 Theodore Ts'o <tytso@valinux.com>
1424
1425 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
1426 checking for a "should never happen case".
1427
1428 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
1429 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
1430
Theodore Ts'od647a1e2000-05-27 14:40:09 +000014312000-05-27 Theodore Ts'o <tytso@valinux.com>
1432
1433 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
1434 (cw@foof.org) which checks to see if special devices have
1435 a non-zero size, and deals with it.
1436
1437 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
1438
Theodore Ts'o1d279212000-05-19 02:38:14 +000014392000-05-18 Theodore Ts'o <tytso@valinux.com>
1440
1441 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
1442 well.
1443
Theodore Ts'o4ea0a112000-05-08 13:33:17 +000014442000-05-08 Theodore Ts'o <tytso@valinux.com>
1445
1446 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
1447 code.
1448
1449 * super.c (check_super_block): If the OS type in the superblock is
1450 the Hurd, check to see if the filetype feature is set, and
1451 offer to clear it if so. This needs to be done since the
1452 Hurd doesn't properly support the filetype feature.
1453 (And since the hurd allows the transmogrification of files
1454 to special files and vice versa --- for no good reason
1455 that I can understand --- it can't support the filetype
1456 feature for the forseeable future, either.)
1457
Theodore Ts'o373b8332000-04-03 16:22:35 +000014582000-04-03 Theodore Ts'o <tytso@valinux.com>
1459
1460 * unix.c: For platforms that don't define optarg.h, manually
1461 define optarg and optind.
1462
Theodore Ts'o01fbc702000-04-03 13:57:21 +000014632000-03-20 Theodore Ts'o <tytso@valinux.com>
1464
1465 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
1466 Check for the append-only as well as the immutable flag.
1467
1468 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
1469 append-only flag. Fix comment for compression flag.
1470
Theodore Ts'o06012322000-02-12 20:12:43 +000014712000-02-12 <tytso@snap.thunk.org>
1472
1473 * unix.c (e2fsck_update_progress): Limit the number of updates to
1474 the progress bars to 8 times a second. This allows a 9600
1475 baud console link to keep up.
1476
Theodore Ts'o19178752000-02-11 15:55:07 +000014772000-02-11 <tytso@snap.thunk.org>
1478
1479 * unix.c (main): If compression is enabled on the filesystem,
1480 print a warning message (for now).
1481
1482 * message.c: Add new compression shortcut: @c == compress
1483
1484 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
1485
1486 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
1487 set, check to see if the filesystem supports compression.
1488 If it does pass this information down to process_block()
1489 so it can treat the compressed block flag words
1490 correctly. If not, offer to clear the flag, since it
1491 shouldn't be set.
1492 (process_block): If an inode has the compressed inode flag
1493 set, allow EXT2FS_COMPRESSED_BLKADDR.
1494
1495 * pass1b.c (process_pass1b_block, delete_file_block,
1496 clone_file_block):
1497 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
1498 see if the block can be skipped.
1499
Theodore Ts'o28ffafb2000-02-08 19:14:02 +000015002000-02-08 <tytso@snap.thunk.org>
1501
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +00001502 * util.c: Make resource tracking message more concise.
1503
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +00001504 * e2fsck.h:
1505 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
1506 ctx->block_illegal_map, since it's not needed by pass1,
1507 and pass1b has been modified to calculate it manually if
1508 needed. This reduces the memory footprint needed by e2fsck.
1509
1510 * pass1b.c (check_if_fs_block): New static function which returns
1511 whether or not a block overlaps with filesystem metadata.
1512 This replaces consulting the block_illegal_map bitmap.
1513
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00001514 * Makefile.in: Call sync after finishing building all in this
1515 directory.
1516
1517 * unix.c (PRS): sync the filesystem before trying to use
1518 BLKFLSBUF, to minimize the chance of causing dirty blocks
1519 to get dropped.
1520
1521 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
1522 a Linux/i386 system.
1523
1524 * pass3.c (check_directory): Only do the loop detection algorithm
1525 if we've searched over 2048 parent directories and haven't
1526 found the end yet. This means that in the common case, we
1527 don't allocate or clear the inode_loop_detection bitmap,
1528 which for large systems, merely clearing the bitmap for
1529 each directory was turning out to be quite expensive.
1530 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
1531 identifying this problem.
1532
Theodore Ts'o0c4a0722000-02-07 03:11:03 +000015332000-02-06 Theodore Ts'o <tytso@valinux.com>
1534
1535 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
1536 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
1537 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
1538 unix.c, util.c: Add Internationalization support as
1539 suggested by Marco d'Itri <md@linux.it>.
1540
Theodore Ts'o80e808f2000-02-02 16:19:59 +000015412000-02-02 Theodore Ts'o <tytso@valinux.com>
1542
1543 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
1544 linux/fs.h
1545
Theodore Ts'o894edb22000-01-18 21:27:12 +000015462000-01-18 Theodore Ts'o <tytso@valinux.com>
1547
1548 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
1549 we need a separate DEPLIBUUID that can be used in
1550 Makefile's dependency rules.
1551
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +000015521999-11-23 <tytso@valinux.com>
1553
1554 * e2fsck.8.in: Update language about where to find a backup
1555 superblock.
1556
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +000015571999-11-19 <tytso@valinux.com>
1558
Theodore Ts'o86a63e91999-11-23 13:52:48 +00001559 * pass1.c (process_inodes): Add shortcut handling; if
1560 process_inodes_count is zero, return right away, to avoid
1561 calling qsort with a non-positive count.
1562
Theodore Ts'oec8d2c31999-11-19 18:52:36 +00001563 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
1564 to print Delete as ^?
1565
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00001566 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
1567 the source directory.
1568
Theodore Ts'oa846d2f1999-11-10 15:50:24 +000015691999-11-10 <tytso@valinux.com>
1570
Theodore Ts'ocd086361999-11-10 16:00:39 +00001571 * Release of E2fsprogs 1.18
1572
15731999-11-10 <tytso@valinux.com>
1574
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00001575 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
1576 means the answer is assumed to be no in preen mode. This
1577 is now used in the PR_1_SET_IMMUTABLE code, so that in
1578 preen mode we ignore these inodes and just print a warning
1579 message.
1580
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +000015811999-11-09 <tytso@valinux.com>
1582
1583 * pass1.c (e2fsck_pass1): If the filesystem does not support
1584 imagic inodes, if an inode has the imagic flag set, offer
1585 to clear the imagic flag. If a valid device/fifo/socket
1586 has the immutable flag set, call the new helper function
1587 check_immutable() to offerto clear the immutable flag.
1588
1589 * pass2.c (check_filetype): Use the new ext2_file_type() helper
1590 function instead of calculating the file_type information
1591 manually.
1592
1593 * pass3.c (e2fsck_reconnect_file): When adding a link to
1594 lost+found, calculate the filetype information so that
1595 ext2fs_link() can use the information if applicable.
1596 (get_lost_and_found): Create the /lost+found directory
1597 with the correct filetype information if applicable.
1598
1599 * util.c (ext2_file_type), e2fsck.h: New function which returns
1600 the directory entry file type information given the
1601 inode's mode bits.
1602
1603 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
1604 and PR_1_SET_IMMUTABLE.
1605
Theodore Ts'o7142db01999-11-08 18:46:54 +000016061999-11-07 <tytso@valinux.com>
1607
1608 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
1609 to prevent it from getting freed twice.
1610
16111999-11-06 <tytso@valinux.com>
1612
1613 * unix.c (main): Close the filesystem before freeing the context,
1614 so that in the event of a free()-related segmentation
1615 violation, the filesystem is properly closed and written
1616 out.
1617
16181999-10-27 <tytso@valinux.com>
1619
1620 * e2fsck.c (e2fsck_reset_context): When freeing
1621 ctx->inode_reg_map, we weren't zero'ing
1622 ctx->inode_reg_map, which could cause a segfault later on
1623 in the e2fsck run.
1624
16251999-10-26 <tytso@valinux.com>
1626
1627 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
1628 matches the standard convention).
1629
Theodore Ts'of68aa411999-10-26 14:20:22 +000016301999-10-26 <tytso@valinux.com>
1631
Theodore Ts'o28e11941999-10-26 18:17:20 +00001632 * Release of E2fsprogs 1.17
1633
16341999-10-26 <tytso@valinux.com>
1635
Theodore Ts'of68aa411999-10-26 14:20:22 +00001636 * message.c (safe_print): Make safe_print take an char instead of
1637 an unsigned char to fix gcc warnings.
1638
Theodore Ts'oc40db6d1999-10-25 21:03:34 +000016391999-10-25 <tytso@valinux.com>
1640
Theodore Ts'oe6597041999-10-26 02:30:16 +00001641 * util.c: For NT portability, don't redefine getchar(), since
1642 stdio defines that. Instead we introduce a new
1643 abstract macro read_a_char() which is #defined to the
1644 right function as necessary.
1645
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00001646 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
1647
1648 * pass2.c (check_dir_block): Require that the length of the
1649 directory entry be at least 12 bytes. Check to see if the
1650 filename is zero-length, and flag that as an error.
1651
Theodore Ts'o7847c1d1999-10-22 15:11:42 +000016521999-10-22 <tytso@valinux.com>
1653
Theodore Ts'o614fdfd1999-10-23 03:19:51 +00001654 * Release of E2fsprogs 1.16
1655
16561999-10-22 <tytso@valinux.com>
1657
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00001658 * pass2.c (check_filetype): If the filetype filesystem feature is
1659 not set, and a directory entry has a dirent feature, offer
1660 to clear it (since 2.0 kernels will do complain will
1661 interpret it as a very large name length field).
1662
1663 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
1664
Theodore Ts'oaa4115a1999-10-21 19:33:18 +000016651999-10-21 <tytso@valinux.com>
1666
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +00001667 * e2fsck.8.in: Update man page to use a more standard format (bold
1668 option flags and italicized variables), as suggested by
1669 Andreas Dilger (adilger@enel.ucalgary.ca)
1670
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00001671 * pass4.c (e2fsck_pass4): If an inode is set in the
1672 inode_imagic_map bitmap, don't check to see if it is
1673 disconnected from the inode tree (because it almost
1674 certainly will be). Free inode_imagic_map at the end of
1675 pass 4.
1676
1677 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
1678 feature is set, check the directory entry's filetype
1679 information field, and fix/set it if necessary.
1680 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
1681 of pass 2.
1682
1683 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
1684 information for inode_reg_map and inode_imagic_map, which
1685 indicates which inodes are regular files and AFS inodes,
1686 respectively.
1687 Since only the master superblock is written during a
1688 restart, force that superblock to be used after a restart;
1689 otherwise changes to the block group descriptors end up
1690 getting ignored.
1691
1692 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
1693 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
1694 which supresses the problem message if e2fsck is run with
1695 the -n option.
1696
1697 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
1698 new problem codes.
1699
1700 * message.c (expand_dirent_expression): Add support for %dt which
1701 prints the dirent type information.
1702
1703 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
1704 and inode_imagic_map).
1705
1706 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
1707 to the context structure.
1708
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +000017091999-09-24 <tytso@valinux.com>
1710
1711 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
1712 e2fsprogs easier to port to non-Unix platforms.
1713
17141999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00001715
1716 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
1717 internal and external inode counts in sync when we
1718 decremented an inode whose link count was already zero.
1719 Now we skip incrementing or decrementing both link counts
1720 if we would cause an overflow condition.
1721 (expand_dir, expand_dir_proc): Change where we update the
1722 inode block count and size files so that the block count
1723 field is updated correctly when we create an indirect block.
1724
Theodore Ts'o78cf0541999-10-20 18:29:18 +000017251999-08-05 <tytso@valinux.com>
1726
1727 * super.c (check_super_block): Check to see whether the
1728 inodes_per_group value in the superblock is insanely too
1729 high.
1730
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +000017311999-08-02 <tytso@valinux.com>
1732
1733 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
1734 the block also shares data with the fs metadata when
1735 the count drops to 1, since the block should still be
1736 cloned, as fs metadata isn't included in the count.
1737
17381999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +00001739
1740 * Release of E2fsprogs 1.15
1741
Theodore Ts'ob55199e1999-07-19 15:37:46 +000017421999-07-19 <tytso@valinux.com>
1743
1744 * unix.c (usage): Add minimalist emergency help to the usage
1745 message.
1746
Theodore Ts'o5596def1999-07-19 15:27:37 +000017471999-07-18 <tytso@valinux.com>
1748
1749 * unix.c: Add support for calculating a progress bar if the -C0
1750 option is given. The function e2fsck_clear_progbar()
1751 clears the progress bar and must be called before any
1752 message is issued. SIGUSR1 will enable the progress bar,
1753 and SIGUSR2 will disable the progress bar. This is used
1754 by fsck to handle parallel filesystem checks. Also, set
1755 the device_name from the filesystem label if it is
1756 available.
1757
1758 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
1759 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
1760 structure which contains the last tenth of a percent
1761 printed for the user.
1762
1763 * message.c (print_e2fsck_message): Add call to
1764 e2fsck_clear_progbar().
1765
1766 * pass1.c (e2fsck_pass1):
1767 * pass2.c (e2fsck_pass2):
1768 * pass3.c (e2fsck_pass3):
1769 * pass4.c (e2fsck_pass4):
1770 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
1771 printing the resource tracking information.
1772
1773 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
1774 an error in the bitmaps, suppress printing the progress
1775 bar using the suppression flag for the remainder of the
1776 check, in order to clean up the display.
1777
Theodore Ts'o74033351999-07-01 03:00:47 +000017781999-06-30 <tytso@valinux.com>
1779
1780 * unix.c (check_mount): Clean up the abort message displayed when
1781 the filesystem is mounted and either stdout or stdin isn't
1782 a tty.
1783
17841999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +00001785
1786 * e2fsck.h:
1787 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
1788 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
1789 pass1_* be private static functions, and create new
1790 function e2fsck_use_inode_shortcuts which sets and clears
1791 the inode shortcut functions in the fs structure.
1792
1793 * e2fsck.h:
1794 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
1795 exported function.
1796
1797 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
1798 if a disconnected inode has any problems before
1799 connecting it to /lost+found. Bug and suggested fix by
1800 Pavel Machek <pavel@bug.ucw.cz>
1801
18021999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +00001803
1804 * unix.c (main): Add missing space in the disk write-protected
1805 message.
1806
Theodore Ts'od4b0ce01999-06-18 01:09:29 +000018071999-05-22 <tytso@rsts-11.mit.edu>
1808
1809 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
1810 code.
1811
1812 * super.c (check_super_block): Add check to make sure the total
1813 number of inodes is sane, since this can be calculated
1814 from the number of groups times the number of inodes per
1815 group. Offer to correct it if it is incorrect.
1816
Theodore Ts'oe79d1b21999-06-18 01:06:59 +000018171999-03-19 <tytso@rsts-11.mit.edu>
1818
1819 * pass5.c (check_block_end): Fix fencepost condition where when
1820 clearing the block padding we were missing the last position
1821 in the bitmap.
1822
Theodore Ts'o75d83be1999-05-18 03:16:36 +000018231999-05-17 <tytso@rsts-11.mit.edu>
1824
1825 * unix.c (reserve_stdio_fds): Add safety check in case
1826 reserve_stdio_fds couldn't open /dev/null.
1827
Theodore Ts'o4a9f5931999-03-16 19:32:52 +000018281999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
1829
1830 * util.c (print_resource_track): Use mallinfo if present to get
1831 more accurate malloc statistics.
1832
1833 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +00001834 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00001835
1836 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
1837
18381999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1839
1840 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
1841 that the block group number is printed. Add new prompt,
1842 PROMPT_UNLINK.
1843
18441999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1845
1846 * Release of E2fsprogs 1.14
1847
Theodore Ts'o9e51eca1999-01-09 16:32:31 +000018481999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1849
1850 * message.c (safe_print): New function which prints strings,
1851 converting non-printable characters using the '^' and
1852 M-notation. This function is now used to print directory
1853 name entries and pathnames.
1854
Theodore Ts'o73f17cf1999-01-04 07:35:45 +00001855Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
1856
1857 * unix.c (main): Reset the context before calling ext2fs_close(),
1858 to avoid referencing already freed memory.
1859
Theodore Ts'o556ad131998-12-19 08:10:58 +000018601998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
1861
1862 * Release of E2fsprogs 1.13
1863
Theodore Ts'o5a679c81998-12-03 16:40:38 +000018641998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
1865
1866 * Makefile.in: Updated dependencies.
1867
18681998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
1869
1870 * pass3.c (get_lost_and_found): If the filesystem is not opened
1871 read-only, then force /lost+found to be created if it is
1872 not present.
1873
1874 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
1875 operation.
1876
Theodore Ts'o1dde43f1998-11-14 04:18:28 +000018771998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1878
1879 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
1880 since e2fsck_free_context may reference data in ctx->fs.
1881
1882 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
1883 before checking ctx->fs->dblist.
1884
18851998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1886
1887 * pass1.c (e2fsck_pass1): Use the device check subroutine on
1888 FIFO's and Socket's, so that we catch bogus immutable inodes.
1889
1890 * pass2.c (process_bad_inode): Process bad socket and fifo's.
1891
1892 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
1893 PR_2_BAD_SOCKET.
1894
Theodore Ts'o7f813ba1998-09-03 01:26:03 +000018951998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
1896
1897 * problem.c: Add PR_3_NO_DIRINFO error code.
1898
1899 * super.c (check_super_value): Rename min and max to min_val and
1900 max_val to avoid possible cpp macro conflicts.
1901
1902 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
1903 possible cpp macro conflicts.
1904
1905 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
1906 cpp macro conflicts.
1907 (check_directory): Fix logic to avoid possible core dump
1908 in the case of ext2fs_get_dir_info returning NULL. (By
1909 the time we get here, it should never happen, but...).
1910 Also simply/streamline the control flow of the function.
1911
Theodore Ts'o24fc5031998-08-26 15:23:31 +000019121998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
1913
1914 * unix.c (check_if_skip): Move the "not cleanly mounted" check
1915 ahead of the maximal mount and too long since checked tests.
1916 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
1917 open, so that we don't open the filesystem using the same
1918 file descriptor as stdout or stderr.
1919
Theodore Ts'of75c28d1998-08-01 04:18:06 +000019201998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
1921
1922 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
1923 get to 100%.
1924
1925 * pass3.c (e2fsck_pass3): Change progress accounting to be
1926 consistent with the other e2fsck passes.
1927
1928 * e2fsck.c (e2fsck_run): At the end of each pass, call the
1929 progress function with the pass number set to zero.
1930
1931 * unix.c (e2fsck_update_progress): If the pass number is zero,
1932 ignore the call, since that indicates that we just want to
1933 deallocate any progress structures.
1934
Theodore Ts'o8144d671998-07-09 05:33:18 +000019351998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1936
Theodore Ts'o4a5fa191998-07-09 05:42:45 +00001937 * Release of E2fsprogs 1.12
1938
19391998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1940
Theodore Ts'o8144d671998-07-09 05:33:18 +00001941 * unix.c (main): Fix typo in checking the incompat feature set; it
1942 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
1943
Theodore Ts'o1fad9041998-07-07 05:44:43 +000019441998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
1945
1946 * badblocks.c (test_disk): Don't clear the existing bad blocks
1947 list when using e2fsck -c, since it may cause blocks with
1948 marginal errors to be dropped from the bad blocks list.
1949
Theodore Ts'o874b4d21998-07-06 14:33:12 +00001950Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
1951
1952 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
1953 compatibility with older kernels.
1954
Theodore Ts'o818180c1998-06-27 05:11:14 +000019551998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
1956
1957 * unix.c (e2fsck_update_progress): Remove unused variables.
1958
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +000019591998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
1960
1961 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
1962 collision with LFS API.
1963
1964 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
1965 properly initialized.
1966 (e2fsck_pass1): Don't allow the the boot loader inode to
1967 be a directory (clear the inode mode field if so).
1968
Theodore Ts'oefac9a11998-05-07 05:02:00 +000019691998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
1970
1971 * unix.c (PRS): Added new option -C, which causes e2fsck to print
1972 progress updates so that callers can keep track of the
1973 completion progress of e2fsck. Designed for use by
1974 progress, except for -C 0, which prints a spinning report
1975 which may be useful for some users.
1976
1977 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
1978 scheme (useful for larger filesystems).
1979
1980 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
1981 progress reporting functions.
1982
Theodore Ts'o4c77fe51998-04-30 17:35:59 +000019831998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1984
1985 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
1986 appropriate return type for comparison functions for qsort.
1987
1988 * e2fsck.h: Add #ifdef protection for unistd.h
1989
1990 * super.c: Remove header files already included by e2fsck.h
1991
Theodore Ts'o76f875d1998-04-27 01:41:13 +000019921998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
1993
1994 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
1995 size of the memory to be resized to ext2fs_resize_mem().
1996
Theodore Ts'o7e44f241998-04-01 03:16:29 +000019971998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
1998
1999 * Makefile.in: Change to use new installation directory variables
2000 convention. Fix uninstall rules to take $(DESTDIR) into
2001 account. Remove cat8dir from the installdirs target,
2002 since modern man package don't necessarily put the cat
2003 directory in /usr/man/cat?.
2004
Theodore Ts'o17dba281998-03-30 01:16:26 +000020051998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
2006
2007 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
2008 extern in e2fsck.h to prevent -Wall warnings.
2009
2010 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
2011
20121998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2013
2014 * super.c (check_super_block): Fix broken superblock sanity check
2015 when calculating blocks_per_group if s_log_frag_size !=
2016 s_log_block_size. Since we don't support fragments, this
2017 isn't a bug deal, but it's good to get it fixed.
2018
Theodore Ts'o246501c1998-03-24 16:22:38 +000020191998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
2020
2021 * unix.c: Fix bug in check of feature set, to make sure we can
2022 really fix this filesystem.
2023
2024 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
2025 num field be a 64 bit type. Add the problem code
2026 PR_1_FEATURE_LARGE_FILES
2027
2028 * problem.c: Add table entry for the problem code
2029 PR_1_FEATURE_LARGE_FILES.
2030
2031 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
2032 a problem for directory inodes. (Since it is also
2033 i_size_high now.) If there are no large_files, then
2034 clear the LARGE_FLAG feature flag. If there are
2035 large_files, but the LARGE_FLAG feature flag is not set,
2036 complain and offer to fix it.
2037 (check_blocks): Add support to deal with non-directory
2038 inodes that have i_size_high set (i.e., large_files).
2039 Don't give an error if a directory has preallocated
2040 blocks, to support the DIR_PREALLOC feature.
2041 (process_block, process_bad_block): The blockcnt variable
2042 is a type of blkcnt_t, for conversion to the new
2043 block_iterate2.
2044
2045 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
2046 a problem for directory inodes. (Since it is also
2047 i_size_high now.)
2048
2049 * message.c (expand_inode_expression): Print a 64-bits of the
2050 inode size for non-directory inodes. (Directory inodes
2051 can only use a 32-bit directory acl size, since
2052 i_size_high is shared with i_dir_acl.) Add sanity check
2053 so that trying to print out the directory acl on a
2054 non-directory inode will print zero.
2055 (expand_percent_expression): %B and %N, which print
2056 pctx->blkcount and pctx->num, can now be 64 bit
2057 variables. Print them using the "%lld" format if
2058 EXT2_NO_64_TYPE is not defined.
2059
2060 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
2061
2062 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
2063 field.
2064
Theodore Ts'ob6f79831998-03-09 13:10:37 +00002065Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2066
2067 * pass3.c (fix_dotdot_proc):
2068 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
2069 * message.c (expand_dirent_expression): Mask off the high eight
2070 bits of the directory entry's name_len field, so that it
2071 can be used for other purposes.
2072
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +00002073Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2074
2075 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
2076 include EXT2_FLAG_RESTART anymore, we need to adjust this
2077 routine so that it *does* return in the case of it seeing
2078 EXT2_FLAG_RESTART.
2079
2080 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
2081 done callback function, which may set context abort
2082 flags. So we need to test the context abort flags after
2083 we call ext2_get_next_inode().
2084 (process_inodes): If we abort due out of process_inodes,
2085 do a clean exit by breaking out of the for loop instead of
2086 just returning.
2087
2088 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
2089 considered a SIGNAL mask (i.e., requiring an immediate
2090 abort of processing to restart). FLAG_RESTART just means
2091 that we want to restart once pass 1 is complete.
2092
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +00002093Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2094
2095 * Change the progress function to return an integer; if returns 1,
2096 then the progress function is expected to have set the
2097 e2fsck context flag signalling a user abort, and the
2098 caller should also initiate a user abort.
2099
Theodore Ts'o63c49691998-02-20 05:24:59 +00002100Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2101
2102 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
2103 end_problem_latch() unless there was actually a problem
2104 latched. Simplifies semantics of the latch processing.
2105
Theodore Ts'o43139321998-02-16 22:34:46 +00002106Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2107
2108 * e2fsck.h: Add new field, priv_data to the e2fsck context
2109 structure. It should be used by callers of the e2fsck
2110 functions only, and not by anything in e2fsck itself.
2111
2112Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2113
2114 * super.c: Instead of call ext2fs_get_device_size(), define and call
2115 e2fsck_get_device_size(). (This function may be stubbed
2116 out in special versions of e2fsck.)
2117
2118 * pass3.c, pass4.c: Remove extra calls to the progress function
2119 that weren't needed.
2120
2121 * mke2fs.8.in: Update man page to note that the format of the bad
2122 block file is the same as the one generated by badblocks.
2123
Theodore Ts'o54be2cc1998-02-01 12:58:48 +00002124Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2125
2126 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
2127
2128 * e2fsck.h: Include <time.h> since it is needed
2129
2130 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
2131 processing.
2132
Theodore Ts'o24dd4021998-02-01 00:16:40 +00002133Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2134
2135 * unix.c (main): In the case where the filesystem revision is too
2136 high, print the message about the superblock possibly
2137 being corrupt.
2138
2139 * e2fsck.8.in: Add expanded comments about how the -b option
2140 works.
2141
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +00002142Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2143
2144 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
2145 the ext2-specific header files are in a flat directory.
2146
2147 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
2148 super.c, swapfs.c, unix.c: Explicitly cast all assignments
2149 from void * to be compatible with C++.
2150
2151Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2152
2153 * unix.c (sync_disk): Remove sync_disk and calls to that function,
2154 since ext2fs_close() now takes care of this.
2155
2156Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2157
2158 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
2159 ehandler.c, unix.c: Change use of private to be priv_data,
2160 to avoid C++ reserved name clash.
2161
Theodore Ts'o5be8dc21997-12-01 18:24:10 +00002162Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2163
2164 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
2165 of e2fsck_get_num_dirs, which has been removed.
2166
2167Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2168
2169 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
2170 to compile and install flushb.
2171
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +00002172Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2173
2174 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
2175 to make sure the extra i_blocks in a device are cleared if
2176 the immutable flag is set.
2177
2178 * util.c (print_resource_track): Fix typo which caused the
2179 time/resource tracking to print "Pass 1 :" instead of
2180 "Pass 1: ".
2181
Theodore Ts'ob8647fa1997-11-20 21:52:43 +00002182Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2183
2184 * pass3.c (expand_directory): Fix bug which could cause core dump
2185 when expanding the directory, and the bitmaps hadn't yet
2186 been read in. Also, only use ext2fs_write_dir_block when
2187 writing a directory block, not when writing out a fresh
2188 indirect block.
2189
Theodore Ts'o8039c481997-11-19 21:39:13 +00002190Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2191
2192 * pass1.c (process_bad_block): Fix bug where first_block wasn't
2193 getting incremented, which caused user to get a
2194 "Programming error?" warning if there was a bad block in a
2195 non-primary superblock/group_descriptor. Also fixed
2196 another bug so that ext2fs_bg_has_super() is consulted, to
2197 avoid problems when using a filesystem with the
2198 sparse_groups option set and there are bad blocks at the
2199 beginning of a group which doesn't have a superblock.
2200
Theodore Ts'of8188ff1997-11-14 05:23:04 +00002201Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2202
2203 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
2204 progress indicator function.
2205
2206 * pass1.c (scan_callback): Add call to the progress feedback
2207 function (if it exists).
2208
2209Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2210
2211 * super.c (check_super_block): Skip the device size check if the
2212 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
2213
2214 * iscan.c (main): Don't use fatal_error() anymore.
2215
2216 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
2217 calling fatal_error(0).
2218
2219 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
2220 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
2221
2222 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
2223
2224 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
2225
2226 * problemP.h: New file which separates out the private fix_problem
2227 data structures.
2228
2229 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
2230 swapfs.c util.c: allocate_memory() now takes a e2fsck
2231 context as its first argument, and rename it to be
2232 e2fsck_allocate_memory().
2233
Theodore Ts'o08b21301997-11-03 19:42:40 +00002234Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2235
Theodore Ts'o68227541997-11-04 04:25:22 +00002236 * unix.c (main): Add a special case check for the error code EROFS
2237 and display an appropriate error message for this case.
2238
Theodore Ts'o08b21301997-11-03 19:42:40 +00002239 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
2240 to take the e2fsck context as their first argument.
2241 Change dir_info.c routines to take an e2fsck_context,
2242 renamed them to start with e2fsck_ to avoid namespace
2243 issues, and changed them to store the directory
2244 information inside the e2fsck context.
2245 Added e2fsck_run() which calls all of the e2fsck passes in
2246 the correct order, and which handles the return of abort
2247 codes. Added abort processing, both via setjmp/longjmp
2248 and via flags in the e2fsck context. Use a flag in the
2249 e2fsck context instead of the restart_e2fsck global
2250 variable. Change uses of free and malloc to
2251 ext2fs_free_mem and ext2fs_get_mem.
2252
Theodore Ts'o291c9041997-10-31 06:17:08 +00002253Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2254
2255 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
2256 consistency.
2257
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00002258Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2259
2260 * pass3.c (get_lost_and_found): Check error return of
2261 EXT2_FILE_NOT_FOUND instead of ENOTDIR
2262
2263 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
2264 instead of ENOTDIR
2265
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002266Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2267
Theodore Ts'o519149f1997-10-25 03:49:49 +00002268 * unix.c (PRS): Make the variable which getopt returns into be
2269 an int, so that it won't lose on platforms where char is
2270 unsigned.
2271
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002272 * pass1b.c (clone_file): Fix bug in error reporting in the case
2273 where cs.errcode is non-zero.
2274
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002275Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2276
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00002277 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
2278 RESOURCE_TRACK around code which uses init_resource_track
2279 and print_resource_track. (Not all systems have timeval)
2280
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002281 * super.c: Remove excess #includes which are not necessary.
2282
2283 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
2284
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00002285Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2286
2287 * pass*.c, super.c: Massive changes to avoid using printf and
2288 com_err routines. All diagnostic messages are now routed
2289 through the fix_problem interface.
2290
2291Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2292
2293 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
2294 entries.
2295
2296 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
2297 PR_2_DUP_DOT_DOT.
2298
2299Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2300
2301 * problem.c: Added new problem codes for some of the
2302 superblock corruption checks, and for the pass header
2303 messages. ("Pass 1: xxxxx")
2304
2305 * util.c (print_resource_track): Now takes a description
2306 argument.
2307
2308Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2309
2310 * super.c, unix.c, e2fsck.c: New files to separate out the
2311 operating-specific operations out from e2fsck.c.
2312 e2fsck.c now contains the global e2fsck context management
2313 routines, and super.c contains the "pass 0" initial
2314 validation of the superblock and global block group
2315 descriptors.
2316
2317 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
2318 (nearly) all global variables and moved them to the e2fsck
2319 context structure.
2320
2321 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
2322 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
2323 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
2324
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00002325Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2326
2327 * message.c: Add compression for the word "Illegal"
2328
2329 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
2330 PR_2_BAD_BLOCK_DEV
2331
2332Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2333
2334 * pass1.c (pass1, check_device_inode), pass2.c
2335 (process_bad_inode): Use a more stringent test for a valid
2336 device.
2337
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00002338Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2339
2340 * e2fsck.c (check_mount): Add stronger warning message about the
2341 perils of running e2fsck on a mounted filesystem.
2342
Theodore Ts'o024996c1997-06-17 05:38:35 +00002343Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2344
2345 * Release of E2fsprogs 1.11
2346
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00002347Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2348
2349 * pass1.c (mark_table_blocks): Mark the superblock and group
2350 descriptor blocks first, so that any conflicts between
2351 these and the bitmap or inode table blocks is noticed.
2352
2353 * problem.c: Fix message printed out when a block or inode bitmap
2354 conflicts with other fs data, has the correct group number
2355 in it.
2356
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00002357Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2358
2359 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
2360
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002361Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2362
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00002363 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
2364 Hawes (whawes@star.net).
2365
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002366 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
2367 bad blocks command so that all of the filesystem gets
2368 tested in the case where the blocksize 2048 or 4096.
2369
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00002370Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
2371
2372 * Release of E2fsprogs version 1.10
2373
2374Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2375
2376 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
2377 where ext2fs_get_next_inode returns the
2378 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
2379
2380Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2381
2382 * Release of E2fsprogs version 1.09
2383
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00002384Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2385
2386 * Release of E2fsprogs version 1.08
2387
Theodore Ts'o521e3681997-04-29 17:48:10 +00002388Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2389
2390 * pass1b.c (clone_file_block): If we clone a directory, we need to
2391 update the dblist entry so that we check (and correct) the
2392 right directory block.
2393
2394Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2395
2396 * pass1.c (process_block): Don't clear blocks references to
2397 filesystem metadata; let pass 1B handle this case.
2398
2399 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
2400
2401 * pass1b.c (pass1d): Deal with a block which is shared with
2402 filesystem metadata.
2403
2404 * e2fsck.h: Make block_illegal_map be a global variable
2405
2406Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2407
2408 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
2409 feature.
2410 (get_backup_sb): New function which attempts to obtain the
2411 correct backup superblock (if possible).
2412
2413Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2414
2415 * e2fsck.c (main): Check the version of the library, and warn if
2416 the library is out of date; this happens generally due to
2417 users who manually install e2fsprogs.
2418
2419 * pass1.c (pass1_get_blocks): If the passed in inode number for
2420 get_blocks isn't what we're expecting pass back
2421 EXT2_ET_CALLBACK_NOT_HANDLED.
2422
Theodore Ts'o21c84b71997-04-29 16:15:03 +00002423Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
2424
2425 * Release of E2fsprogs version 1.07
2426
2427Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2428
2429 * icount.c: New file which implements an inode count abstraction.
2430 This significantly reduces amount of memory needed to
2431 check really large filesystems.
2432
2433 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
2434 abstraction.
2435
2436Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2437
2438 * dirinfo.c (dir_info_iter): New function which allows iteration
2439 over the directories in the dir_info map.
2440
2441 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
2442 over all directories in the dir_info structure, instead of
2443 iterating all inodes looking for directories, and then
2444 looking up the directories using get_dir_info().
2445
2446Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2447
2448 * pass1.c (pass1, process_block):
2449 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
2450 manual code to manage the directory block list information.
2451
2452 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
2453 (deallocate_inode): Call the ext2 library routine
2454 ext2_inode_has_valid_blocks() instead of
2455 inode_has_valid_blocks().
2456
2457 * swapfs.c (swap_inodes): Add check so that we don't try to call
2458 swap_inode_blocks unless the inode has valid blocks.
2459 (Otherwise a long fast symlink might cause
2460 swap_inode_blocks to erroneously get called.)
2461
2462Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2463
2464 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
2465 PR_2_DOT_DOT_NULL_TERM.
2466
2467 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
2468 .. entries are null-terminated, since the 2.0 kernel
2469 requires this (for no good reason).
2470
2471Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2472
2473 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
2474 that we can recover from missing inode tables.
2475
2476 * dirinfo.c (get_dir_info): If there are no directories in the
2477 dir_info abstraction, don't core dump (because dir_info is
2478 NULL).
2479
2480 * e2fsck.c (main): Don't try using the backup superblocks if there
2481 aren't any.
2482 (check_super_block): If there are illegal inode table or
2483 bitmaps, set the filesystem as being in error.
2484
2485Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2486
2487 * pass2.c (check_dir_block): Added check to make sure that rec_len
2488 is a a multiple of 4 (so that the directory entries are
2489 4-byte aligned).
2490
2491Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2492
2493 * Makefile.in (uninstall): Uninstall all programs in the PROGS
2494 line.
2495 (PROGS): Don't build and install the extend program by
2496 default.
2497
2498
2499Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2500
2501 * pass1.c (process_inodes): Make sure the stashed_ino variable is
2502 saved and restored as well.
2503 (pass1): For fast sym links, skip the check_blocks
2504 processing step altogether.
2505
2506Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2507
2508 * problem.c, message.c: New files, to completely refurbish how
2509 filesystem problems are reported to the user. The
2510 diagnostic messages are now encoded out in an easily
2511 customizable, extensible format. The messages printed out
2512 in preen mode are all on one line, and contain the device
2513 name.
2514
2515Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2516
2517 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
2518 deleted files.
2519
2520 * pass1.c (pass1): Ignore missing inode table errors during the
2521 scan, and just skip past those inodes.
2522
2523 * pass3.c (check_root): Remove root_ino argument, and assume that
2524 the root inode must be EXT2_ROOT_INO. Move responsibility
2525 of setting the parent of the root inode in the directory
2526 inode structure to pass2().
2527
2528 * pass2.c (check_dir_block): Don't allow links to the root
2529 directory.
2530
2531 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
2532 since the inode is no longer used.
2533
2534Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2535
2536 * e2fsck.c (main): If the superblock magic number is wrong, or the
2537 block group fails a sanity check, then automatically
2538 restart trying to use the backup superblocks.
2539
2540 * pass1.c (mark_table_blocks): Make the inode tables ahead of
2541 everything else; in the case where a bitmap block overlays
2542 the inode table, the inode table should take precedence.
2543
2544 * pass2.c (maybe_clear_entry): Make the deleted/unused error
2545 message fit on one line, since the error can happen during
2546 a preen pass. (We eventually need to revamp the whole
2547 e2fsck error reporting and prompting system, but that's a
2548 job for another day.)
2549
2550Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2551
2552 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
2553 for the benefit of the inode scan functions.
2554
2555 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
2556 indicating that an inode is in a bad block, mark that
2557 inode as being used, as well as in the inode "bb" map.
2558
2559 * pass2.c (maybe_clear_entry): New function which generalizes the
2560 error cases when a directory entry needs to be cleared.
2561 (check_dir_block): If an inode is in the "bb" map, offer
2562 to clear the directory entry, since the inode is in a bad
2563 block.
2564
2565 * pass4.c (pass4): If an inode is marked as used, but is is marked
2566 in the "bb" map, don't process it as a disconnected inode.
2567
2568Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2569
2570 * Release of E2fsprogs version 1.06
2571
Theodore Ts'o5c576471997-04-29 15:29:49 +00002572Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2573
2574 * e2fsck.c (main): Print out the version number of the shared
2575 library when using the -V option.
2576
2577 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
2578 consistency's sake.
2579
2580 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
2581 out the backup superblocks when we know we have a valid
2582 filesystem.
2583
2584Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2585
2586 * util.c (preenhalt): Make it explicit on preenhalt that running
2587 e2fsck manually means without the -a or -p flag.
2588
2589Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2590
2591 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
2592 (Linux/FT actually sets the mode bits, so we have to
2593 handle it specially.)
2594
2595 * e2fsck.c (check_if_skip): Print a message if the filesystem is
2596 just dirty, so that the user knows that it's about to be
2597 checked (since this will take a while).
2598
2599Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2600
2601 * pass4.c: If a disconnected inode is zero-length, prompt to
2602 delete it instead of connecting it to lost+found.
2603
2604Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2605
2606 * Release of E2fsprogs version 1.05
2607
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00002608Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2609
2610 * pass4.c (pass4): If the user refuses to connect an unattached
2611 inode to lost+found, don't try to set i_links_count. This
2612 is bad, since if the user says yes, the inode will be
2613 marked as unused, which is not necessarily the right
2614 thing, especially since the rest of the cleanup doesn't
2615 happen here.
2616
2617 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
2618 dellocating an inode. (Not strictly necessary, but...)
2619
2620 * pass4.c (pass4): Add "bonehead" explanation to the "programming
2621 error" message.
2622
2623Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2624
2625 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
2626 byte-swap the filesystem so that it is normalized. -S
2627 will byte-swap the filesystem regardless of its current
2628 byte-order.
2629
2630 * swapfs.c: New file, which will byte-swap a filesystem.
2631
2632Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2633
2634 * pass1.c (pass1): Change handling on files with non-zero dtime
2635 and non-zero i_link_count; before we treated them as
2636 deleted file per botched ext2 0.3c kernel behavior. We
2637 now clear dtime instead.
2638
2639Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2640
2641 * e2fsck.c (main): If e2fsck sets the clean bit, even if
2642 nothing else is changed, make sure FSCK_NONDESTRUCT is
2643 set (since after all having the filesystem set to
2644 invalid is an error. :-)
2645
2646Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2647
2648 * pass1.c (process_block): Make sure that meta data doesn't get
2649 accidentally set in the dir_blocks array (which could
2650 happen in some error condtions).
2651
2652 * pass1.c (pass1):
2653 * pass2.c (process_bad_inode): Check for fragments in a
2654 OS-independent fashion.
2655
2656Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2657
2658 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
2659 cleanup for the filesystem.
2660
2661Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2662
2663 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
2664
Theodore Ts'o62c06f71997-04-29 14:34:47 +00002665Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2666
2667 * Release of E2fsprogs version 1.04
2668
2669Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2670
2671 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
2672 try "e2fsck -b 8193" before allowing e2fsck to relocate
2673 inode table blocks.
2674
2675 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
2676 depending on the option to configure. Added targets for
2677 e2fsck.static and e2fsck.shared for people who want to
2678 build a static or shared variant manually.
2679
Theodore Ts'o7f88b041997-04-26 14:48:50 +00002680Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
2681
2682 * Release of E2fsprogs version 1.03
2683
2684Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
2685
2686 * e2fsck.c (show_stats): Don't use floating point to display
2687 percentage of non-contiguous files, as different libc
2688 handle result truncation differently, and this causes the
2689 test suite to bomb out depending on which libc you are
2690 using.
2691
2692 * util.c (allocate_memory): Fix error message to omit extraneous
2693 %%s.
2694
2695Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
2696
2697 * pass4.c (pass4):
2698 * pass2.c (check_dir_block):
2699 * pass1.c (pass1): Add support for dynamic first inode revision.
2700
2701Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
2702
2703 * pass3.c (check_root): Fix spelling typo
2704
2705Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
2706
2707 * e2fsck.c (check_super_block): If the superblock fails certain
2708 internal consistency checks, exit with a fatal error after
2709 printing the "superblock is corrupt message".
2710
Theodore Ts'o74becf31997-04-26 14:37:06 +00002711Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
2712
2713 * Release of E2fsprogs version 1.02
2714
2715Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
2716
2717 * pass1.c (process_block): Check to see if a file is "fragmented".
2718 i.e., non-contiguous. Note that any file which is larger
2719 than the block group is guaranteed to be non-contiguous.
2720 We may want to use a different hueristic for deciding
2721 whether or not a file is "fragmented".
2722
2723 * e2fsck.c (show_stats): Print statistics of how many
2724 non-contiguous files are on the system.
2725
2726Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
2727
2728 * badblocks.c (read_bad_blocks_file, test_disk): Fold
2729 functionality of test_disk() (which runs badblocks) into
2730 read_bad_blocks_file(); test_disk() now calls
2731 read_bad_blocks_file() with a NULL bad_blocks_file
2732 argument.
2733
2734Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
2735
2736 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
2737 #if defined(linux). The latter won't work if we're
2738 compiling -ansi.
2739
Theodore Ts'o297f47a1997-04-26 14:25:20 +00002740Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
2741
2742 * e2fsck.c (check_mount): For Linux systems, the check to see if
2743 the root is mounted read-only has to be done for all
2744 filesystems, not just for the root filesystem, due to the
2745 way that some /etc/rc scripts are set up.
2746
Theodore Ts'o50e1e101997-04-26 13:58:21 +00002747Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
2748
2749 * Makefile.in (install): Strip programs when they are installed.
2750 (e2fsck): Build e2fsck statically.
2751
2752Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
2753
2754 * util.c (preenhalt): Preenhalt now takes an argument, which is an
2755 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
2756 flag in the superblock in cases where preenhalt is called.
2757 All calls to preenhalt() were changed to either
2758 preenhalt(fs) or preenhalt(NULL) in a few cases where the
2759 fs pointer was not available. (Most notable, for block
2760 read/write errors.)
2761
2762Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
2763
2764 * ehandler.c:
2765 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
2766
2767Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
2768
2769 * e2fsck.c (show_stats): Show statistics about how many inodes
2770 have indirect, doubly indirect, and triply indirect
2771 blocks. Allow up to 8 digits for statistics, instead of
2772 merely 6, so things look pretty for large filesystems.
2773
2774 * pass1.c (pass1): Keep statistics about indirect, doubly
2775 indirect, and triply indirect blocks.
2776
2777 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
2778 pass 1.
2779
2780Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
2781
2782 * util.c, ehandler.c: Move #include of <sys/resource.h> after
2783 #include of "e2fsck.h", since sys/resource.h may depend on
2784 sys/time.h, which is #included in e2fsck.h.
2785
2786Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
2787
2788 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
2789 function to determine if the device is mounted.
2790
2791 * e2fsck.c (main): Add better error messages if ext2fs_open()
2792 fails.
2793
2794Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
2795
2796 * pass1.c (check_blocks): If we're clearing a directory, clear
2797 pb.is_dir so we don't do the following check of making
2798 sure the directory size matches; this is pointless, since
2799 we've already cleared the inode.
2800
2801Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2802
2803 * pass1.c (bad_primary_block): New function, called by
2804 process_bad_block, which explains the facts of life to the
2805 user when a block in the primary superblock or primary
2806 group descriptors is bad.
2807
2808 * pass2.c (check_dot): Handle the case where the first directory
2809 entry is used, but not ".".
2810
2811 * pass2.c (check_dotdot): Handle the case where the second directory
2812 entry is used, but is not "..".
2813
2814Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2815
2816 * e2fsck.c (check_super_block): Get the size of the physical
2817 device and if it is smaller than the reported size of the
2818 filesystem, report an error.
2819
2820Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
2821
2822 * e2fsck.c (check_if_skip): Print the number of allocated files and
2823 blocks on clean filesystems.
2824
2825Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
2826
2827 * e2fsck.8: Updated date and version number.
2828
2829Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
2830
2831 * pass1.c (check_blocks): Check that directory size matches *exactly*
2832 the count of allocated blocks.
2833
2834Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
2835
2836 * pass1b.c (pass1d): Free the shared[] array when we're done with
2837 it to avoid a memory leak.
2838
2839 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
2840 block_dup_map.
2841
2842 * pass2.c (process_bad_inode): When clearing the inode, make sure
2843 the pathname is freed, to prevent a memory leak.
2844
2845 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
2846 when we're finished with them.
2847 (check_block_bitmaps): Free free_array when we're finished
2848 with them.
2849
2850 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
2851 linking the executable.
2852
2853 * pass2.c (process_bad_inode): Even on OS's that don't support the
2854 fragment fields, make sure the Linux equivalent fields are
2855 set to zero. If an OS wants to reuse these fields, which
2856 is probably a bad idea (although we may get desperate in
2857 the future) this code will have to be changed.
2858
2859 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
2860 on the inode field, and then blockcnt field. This is just
2861 to keep the ordering of dir_blocks the same on all
2862 platforms when there are more than on missing directory
2863 blocks, which are indicated directories with holes, which
2864 are indicated with the block number being set to zero.
2865
2866Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2867
2868 * pass1.c (check_blocks, process_block): check_blocks() modified
2869 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
2870 the inode is a directory. process_block() now checks to
2871 see if a directory has a "hole", or missing block. If so,
2872 this fact is recorded in the directory block list so that
2873 the problem can be resolved in pass #2.
2874
2875 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
2876 allocate new blocks for directories with "holes". Called
2877 out of check_dir_block if a block in the directory block
2878 list is zero.
2879
2880 * pass3.c (get_lost_and_found): Move location of free(block) to
2881 prevent possible memory leak.
2882
2883Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2884
2885 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
2886 instead of alloca() --- alloca is not portable! Check to
2887 make sure the filename is not longer than EXT2_NAME_LEN,
2888 and offer to fix it by truncating it, since it should
2889 never happen.
2890
2891 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
2892 not portable!! In any case putenv() in some systems must
2893 take a static character array or malloc()'ed memory;
2894 passing memory allocated using alloca() to putenv() is not
2895 advisable.
2896
2897 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
2898 alloca() --- alloca() is not portable!!!
2899
2900Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
2901
2902 * pass1b.c (pass1c):
2903 * pass3.c (check_root, get_lost_and_found):
2904 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
2905 to read/write the directory block.
2906
2907Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
2908
2909 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
2910 make sure VMIN and VTIME are set correct.
2911
2912Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
2913
2914 * pass1.c (mark_block_used): Change to be an inline function.
2915 Assume that the block validity checks are already done,
2916 and use the fast variant of the bitmap functions.
2917
2918Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
2919
2920 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
2921 bounds of the bitmaps in advance, and then use the fast
2922 variant of e2fs_test_{block,inode}_bitmap.
2923
2924 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
2925 the bounds checking has already been done earlier.
2926
2927Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
2928
2929 * pass1.c (pass1): Allocate and free the block_illegal_map, which
2930 is used for shortcut processing in process_block.
2931 (mark_table_blocks): Initialize block_illegal_map with the
2932 filesystem blocks.
2933 (describe_illegal_block): New helper function that
2934 describes why a block is illegal.
2935 (process_block): Use block_illegal_map as a shortcut
2936 to determine whether a block is bad. Use
2937 describe_illegal_block to print out why the block is illegal.
2938
2939Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
2940
2941 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
2942
2943 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
2944 <mntent.h> if they don't exist. (Mostly so that "make
2945 depend" works.)
2946
2947 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
2948 it exists).
2949
2950 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
2951 exist.
2952
2953Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2954
2955 * pass2.c (process_bad_inode, check_for_zero_long,
2956 check_for_zero_char): Change long to u32, and char to u8.
2957
2958Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2959
2960 * util.c (inode_has_valid_blocks):
2961 * pass2.c (process_bad_inode):
2962 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
2963 LINUX_S_IS* instead of S_IS*.
2964
2965 * e2fsck.h: Don't #include <sys/stat.h>
2966
2967 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
2968 this program is pretty much useless if BLKFLSBUF isn't
2969 supported.)
2970
2971 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
2972 used.
2973
2974Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
2975
2976 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
2977 to allocate space for file names instead of using fixed size buffers.
2978 (process_bad_inode): Only check inode frag fields if
2979 HAVE_EXT2_FRAGS is defined (by configure).
2980 * pass1.c (pass1): Only check the inode frag fields if
2981 HAVE_EXT2_FRAGS is defined (by configure).
2982
2983 * e2fsck.c (check_mount): Only check for a mounted filesystem if
2984 HAVE_MNTENT_H is defined (by configure).
2985 (PRS): Use alloca to allocate the new path string, instead of
2986 having a fixed size buffer (which was the wrong size anyway).
2987 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
2988 is defined.
2989
2990 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
2991 defined (by configure).
2992
2993 * Makefile.in: Rewritten to conform to GNU coding standards and
2994 support separate compilation directories.
2995
2996Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
2997
2998 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
2999
Theodore Ts'of3db3561997-04-26 13:34:30 +00003000Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
3001
3002 * pass1.c (unwind_pass1): Clear the file type statistics counter
3003 when pass 1 needs to be restarted from scratch.
3004
3005 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
3006 being reallocated to blocks in the next block group,
3007 instead of the current block grup.
3008
3009 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
3010 inode.i_links_count is set.
3011
3012Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
3013
3014 * pass1.c (process_block): Add checks for if the block is
3015 trepassing on a superblock or group descriptor table.
3016
3017Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
3018
3019 * main.c (corrupt_msg): Extend the message which is printed out
3020 when the superblock is corrupt, to include the suggestion
3021 of using the -b option to specify an alternate superblock.
3022
3023Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
3024
3025 * badblocks.c (read_bad_blocks_file): If we are adding or
3026 replacing bad blocks in the bad blocks inode, sanity check
3027 the bad block inode first, and clear out any illegal blocks.
3028
3029 * pass2.c (check_name): Don't bomb out if the attempt to get the
3030 pathname of the containing directory returns an error; the
3031 directory may be too badly damaged to expect that
3032 ext2fs_get_pathname will always succeed. Use "???" if the
3033 pathname can't be obtained (it's only for a printf to the
3034 user anyway).
3035
3036 The name of the containing directory and the bad filename
3037 were incorrectly interchanged in the user message. Fixed.
3038
3039 * pass2.c (check_name, check_dir_block): Use a common static
3040 string for the unknown pathname.
3041
3042Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
3043
3044 * Fixed lots of printf formats to make sure that block and inode
3045 numbers are printed as unsigned integers.
3046
3047Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
3048
3049 * pass5.c (check_block_end): Fix calculation of how the last block
3050 in the block bitmap should be calculated.
3051
3052Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
3053
3054 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
3055 be an ext2fs_inode_bitmap, and free it properly.
3056
3057 * e2fsck.h
3058 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
3059 level to the superblock.
3060
3061Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
3062
3063 * e2fsck.c (usage): Fixed bogus usage message.
3064
3065Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
3066
3067 * pass1.c (process_bad_block): Fixed bug so that blocks in the
3068 backup superblocks and group descriptors are handled gracefully.
3069