blob: 1fe6cc5bb1fa755442d008a02a646381698f22f0 [file] [log] [blame]
Theodore Ts'obe93ef02002-10-31 18:38:55 -050012002-10-31 Theodore Ts'o <tytso@mit.edu>
2
Theodore Ts'ob40ffd72002-10-31 19:30:24 -05003 * unix.c (usage), e2fsck.8.in: Add the -D option to the usage and
4 command synopsis. (Addresses Debian bug #167108)
5
Theodore Ts'obe93ef02002-10-31 18:38:55 -05006 * pass1.c (e2fsck_pass1): Check the superblock write time to see
7 whether or not we can safely do the LOW_DTIME checks.
8 (Addresses Sourceforge bug #620980)
9
Theodore Ts'o76dd5e52002-10-30 23:07:21 -0500102002-10-30 Theodore Ts'o <tytso@mit.edu>
11
Theodore Ts'o482afc42002-10-31 03:32:34 -050012 * Makefile.in (install): Search all compression extensions when
13 deleting old man pages.
14
Theodore Ts'o76dd5e52002-10-30 23:07:21 -050015 * pass1.c (mark_table_blocks): Fix bug in meta_bg support; only
16 mark blocks legacy group descriptor blocks up to
17 s_first_meta_bg.
18
Theodore Ts'oa49929b2002-10-20 00:58:08 -0400192002-10-20 Theodore Ts'o <tytso@valinux.com>
20
21 * pass1.c (mark_table_blocks): Add support for the meta_blockgroup
22 filesystem format.
23
Theodore Ts'o3e699062002-10-13 23:56:28 -0400242002-10-13 Theodore Ts'o <tytso@mit.edu>
25
26 * pass3.c (e2fsck_get_lost_and_found): Pass in mode 700 to
27 ext2fs_new_inode().
28
29 * unix.c (show_stats): Fix format bug if NLS is in use.
30
31 * journal.c, pass1.c, revoke.c, util.c: Fix gcc -Wall nits.
32
Theodore Ts'o64aecc42002-10-11 17:44:12 -0400332002-10-08 Theodore Ts'o <tytso@mit.edu>
34
35 * pass3.c (e2fsck_get_lost_and_found): Create the lost+found
36 directory with mode 0700.
37
Theodore Ts'o8132d842002-10-02 22:07:17 -0400382002-10-02 Theodore Y. Ts'o <tytso@mit.edu>
39
40 * pass2.c (parse_int_node, check_dir_block): Add byte-swap
41 functions around the htree code, so that it works on
42 big-endian machines.
43
44 * swapfs.c (swap_filesys): For PPC machines, byte-swap the bitmap,
45 since PPC big-endian filesystems were historically wierd.
46 This is just for the regression test, since no one
47 actually uses them anymore...
48
Theodore Ts'oad4fa462002-09-30 11:19:19 -0400492002-09-30 Theodore Ts'o <tytso@mit.edu>
50
51 * problem.c, problem.h (PR_2_HTREE_BAD_LIMIT,
52 PR_2_HTREE_BAD_COUNT, PR_2_HTREE_HASH_ORDER,
53 PR_2_HTREE_BAD_DEPTH): Add new problem codes.
54
55 * pass2.c (salvage_directory, check_dir_block): Avoid counting
56 directory entries twice during a directory salvage. Make
57 the salvaging algorithm smarter about directory entry size
58 overruns.
59 (parse_int_node): Add check to make sure the limit and
60 count fields in the node headers are sane. Also check
61 to make sure the hash table in ascending order.
62 (pass2, htree_depth): For all leaf nodes, determine their
63 depth in the tree, and make sure it matches with the depth
64 in the htree root information.
65
Theodore Ts'ofe5b72d2002-09-29 19:05:26 -0400662002-09-29 Theodore Ts'o <tytso@mit.edu>
67
Theodore Ts'oe8254bf2002-09-29 19:30:28 -040068 * pass2.c (check_dir_block): Do a more paranoid check when trying
69 to determine whether or not a directory entry is a
70 completely empty leaf block or leaf node. Otherwise
71 e2fsck might get confused into thinking that a valid dxdir
72 was corrupted.
73
Theodore Ts'ofe5b72d2002-09-29 19:05:26 -040074 * rehash.c (e2fsck_rehash_dir): Apply patch from Christopher Li
75 which avoids creating an empty directory entry at the end
76 of the directory block. This screws up earlier versions
77 of the indexed directory patch.
78
Theodore Ts'oe70ae992002-09-28 09:16:28 -0400792002-09-28 Theodore Ts'o <tytso@mit.edu>
80
81 * rehash.c (write_directory): Clear the index flag if by
82 reoptimizing the directory, we bring it back into a
83 non-indexed state.
84 (e2fsck_rehash_dir): Allow directories that contain two
85 blocks to be indexed. Otherwise when they grow, they
86 never will be indexed by the kernel.
87
88 * unix.c (main): Only update the master superblock; there's no
89 point updating the backup superblocks, and it speeds up
90 fsck slightly.
91
92 * pass2.c (salvage_directory): New function called by
93 check_dir_block() which is much more sophisticated about
94 how it salvages corrupted filesystems.
95
Theodore Ts'oc6633052002-09-24 01:26:50 -0400962001-09-24 Theodore Tso <tytso@mit.edu>
97
98 * Release of E2fsprogs 1.29
99
Theodore Ts'ocf3909e2002-09-06 10:14:12 -04001002002-09-06 Theodore Ts'o <tytso@mit.edu>
101
102 * rehash.c (copy_dir_entries): Fix bug which caused corrupted
103 directories if there are 4 or 8 bytes left over in a
104 directory page when optimizing/reindexing a directory.
105
Theodore Ts'o87ee8dc2002-08-31 03:02:57 -04001062001-08-31 Theodore Tso <tytso@thunk.org>
107
108 * Release of E2fsprogs 1.28
109
Theodore Ts'oceecbc72002-08-31 02:35:35 -04001102002-08-31 Theodore Ts'o <tytso@mit.edu>
111
112 * ehandler.c (e2fsck_handle_read_error): If the user asks to
113 ignore the error, offer to try forcing a write of the
114 block to the disk; sometimes this will cause the drive to
115 remap the bad block.
116
Theodore Ts'oea1959f2002-08-31 02:32:41 -04001172002-08-31 Theodore Ts'o <tytso@valinux.com>
118
119 * pass2.c (e2fsck_pass2): If this is a HTREE directory, sort the
120 dblist so that the first block of all of the directories
121 is handled first so we can read the hash version
122 information.
123 (check_dir_block): Examine the root node for correctness,
124 and offer to clear it if it is not correct. Also copy the
125 hash version to the dx_dir structure, so that the proper
126 hash function can be used for other blocks in the
127 directory.
128
129 * problem.c, problem.h (PR_2_HTREE_BAD_ROOT): Add new problem code.
130
Theodore Ts'oa3da9d12002-08-21 12:52:03 -04001312002-08-21 Theodore Ts'o <tytso@mit.edu>
132
133 * problem.c: Fix PR_1_RELOC_BLOCK_ALLOCATE message to explain that
134 it is necessary to find contiguous blocks in a particular
135 block group.
136
Theodore Ts'o0684a4f2002-08-17 10:19:44 -04001372002-08-17 Theodore Ts'o <tytso@mit.edu>
138
Theodore Ts'of044b4d2002-08-17 13:32:21 -0400139 * e2fsck.8.in: Add clarifying text describing how e2fsck works
140 with ext3 filesytems. (Addresses Debian bug #145044).
141
142 * pass1.c (handle_htree): Add support for EXT2_HASH_TEA
143
Theodore Ts'o0684a4f2002-08-17 10:19:44 -0400144 * e2fsck.h, e2fsck.c (e2fsck_allocate_context): Add new field to
145 the e2fsck context, ext_attr_ver, which specifies the EA
146 format version.
147
148 * unix.c (usage, parse_extended_opts, PRS), e2fsck.8.in: Add new
149 option -E, which allows the users to specify extended
150 options. Added ea_ver extended option.
151
152 * pass1.c (e2fsck_pass1_check_device_inode): Add ext2_filsys
153 argument to this function, so we can account for the
154 presence of extended attribute blocks attached to device
155 inodes.
156 (e2fsck_pass1_check_symlink, e2fsck_pass1): Take into
157 account the fact that symlinks can also have extended
158 attribute blocks.
159 (check_ext_attr): Don't be flexible about the EA format
160 version. Check against the version number in
161 ctx->ext_attr_ver.
162 (check_blocks): Check all inodes, so that we account for
163 extended attribute blocks belonging to special files.
164 Clean up i_size checks.
165
166 * pass1b.c (pass1b): Check all inodes, so that we account for
167 extended attribute blocks belonging to special files.
168 (delete_file_block): Use ext2fs_alloc_block_stats() to
169 update the filesystem statistics.
170 (delete_file): Attempt to decrement the extended
171 attribute refcount, and free the EA block if the count
172 hits zero.
173 (clone_file): Fixed bugs in EA handling. Don't call
174 block_iterate on inodes that don't have a valid i_block[]
175 array. Reread the base inode since it may have been
176 changed by ext2fs_block_iterate. When updating inodes as
177 part of cloning an EA block, write out the correct inode
178 structure.
179
180 * pass2.c (deallocate_inode_block, deallocate_inode): Use standard
181 ext2fs_alloc_*_stats functions to update the filesystem
182 statistics.
183 (deallocate_inode): Attempt to decrement the extended
184 attribute refcount, and free the EA block if the count
185 hits zero.
186 (e2fsck_process_bad_inode): Add extra argument to calls
187 to e2fsck_pass1_check_device_inode ().
188
189 * pass3.c (e2fsck_get_lost_and_found): Use standard
190 ext2fs_alloc_*_stats functions to update the filesystem.
191 statistics when creating /lost+found.
192 (adjust_inode_count): Remove debugging code that can never
193 be triggered.
194
195 * pass4.c (disconnect_inode): Add explanation about why we only
196 clear inodes that have no data blocks and no EA blocks.
197 Use ext2fs_inode_alloc_stats2 function to update the
198 filesystem statistics when clearing a zero-length inode.
199
200 * problem.c, problem.h (PR_1B_ADJ_EA_REFCOUNT,
201 PR_2_ADJ_EA_REFCOUNT): Add new problem codes.
202
203 * super.c (release_inode_block), (release_orphan_inodes): Use the
204 standard ext2fs_alloc_*_stats functions to update the
205 filesystem statistics.
206 (release_inode_blocks): Attempt to decrement the extended
207 attribute refcount, and free the EA block if the count
208 hits zero.
209
Theodore Ts'o838e7732002-08-01 12:37:00 -04002102002-08-01 Theodore Ts'o <tytso@mit.edu>
211
212 * dict.c, dict.h: New file from kazlib 1.20 which implements a
213 red-black tree
214
215 * pass1b.c: Massive changes to take advantage of dict.c. This
216 removes several O(n**2) algorithms from the rare case
217 where there are a large number of blocks claimed by
218 multiple inodes.
219
Theodore Ts'o542867f2002-07-24 07:42:02 -04002202002-07-24 Theodore Ts'o <tytso@mit.edu>
221
Theodore Ts'o850d05e2002-07-25 00:00:08 -0400222 * e2fsck.8.in, e2fsck.h, pass3.c (e2fsck_pass3), unix.c, rehash.c:
223 Add new option -D, which requests e2fsck to optimize all
224 directories. Rehash.c will also compress and sort
225 non-indexed directories.
226
227 * problem.c, problem.h: Rename PR_3A_REHASH_* to PR_3A_OPTIMIZE_*
228
229 * unix.c (PRS): Make sure the signal_cancel is registered without
230 SA_RESTART.
231
232 * rehash.c (e2fsck_rehash_dir, copy_dir_entries, calculate_tree):
233 Restructured code in e2fsck_rehash_dir into two new
234 subroutines to make the code more understandable/maintainable.
235 (set_root_node): Fixed bug which caused the root node to
236 be invalid on non-FILETYPE filesystems due to an
237 unitialized variable.
238 (calculate_tree): Fix bug where pointers which might get
239 invalidated if realloc() moves outdir->buf around.
240 (e2fsck_rehash_dir): Fix memory leak bug.
241
242 * pass3.c (e2fsck_get_lost_and_found), e2fsck.h, e2fsck.c:
243 Exported as a public interface a function for finding the
244 lost and found directory. Cache the location of the lost
245 and found directory in the e2fsck context structure.
246
Theodore Ts'o542867f2002-07-24 07:42:02 -0400247 * util.c (ask_yn, read_a_char): Note when the user has typed ^C,
248 and abort processing by longjmp'ing to ctx->abort_loc.
249
Theodore Ts'o3214a452002-07-23 12:00:00 -04002502002-07-23 Theodore Ts'o <tytso@mit.edu>
251
252 * pass1.c (e2fsck_pass1): If e2fsck is run with -n, don't create
253 the dirs_to_hash list, since we don't want to reindex
254 directories if the filesystem is opened read-only.
255
Theodore Ts'o4cae0452002-07-21 14:14:03 -04002562002-07-21 Theodore Ts'o <tytso@mit.edu>
257
258 * e2fsck.8.in: Document new exit code FSCK_CANCELED
259
260 * unix.c (PRS, signal_cancel): Capture SIGINT and SIGTERM signals
261 and set a flag in the e2fsck context indicating that
262 cancellation has been requested, so that e2fsck will exit
263 only at safe points.
264 (main): Change the exit handling so that if a cancellation
265 is requested, return FSCK_CANCELED (a new exit code 32).
266 e2fsck can now return more than one exit code as part of a
267 bitmask (as had been documented in the man page).
268
269 * pass2.c (e2fsck_pass2, check_dir_block), pass3.c (e2fsck_pass3),
270 pass4.c (e2fsck_pass4): Check to see if a cancellation was
271 requested, and abort processing if necessary.
272
Theodore Ts'ob7a00562002-07-20 00:28:07 -04002732002-07-19 Theodore Ts'o <tytso@mit.edu>
274
275 * rehash.c, Makefile.in: New file which rewrites directories using
276 the htree format.
277
278 * problem.c (fix_problem), problemP.h (PR_PREEN_NOHDR): Add option
279 which suppresses the header printed when in preen mode.
280
281 * pass3.c (e2fsck_pass3): If there are entries on the dirs_to_hash
282 list, call e2fsck_rehash_directories to reindex those
283 directories.
284 (e2fsck_expand_directory): Generalize the old
285 expand_dirctory() function so it can expand a directory to
286 a guaranteed minimum size.
287
288 * e2fsck.h (struct e2fsck_struct): Add the dirs_to_hash list. Add
289 new function prototypes for rehash.c and for
290 e2fsck_expand_directory().
291
292 * e2fsck.c (e2fsck_reset_context): Free the dirs_to_hash list.
293
294 * pass1.c (e2fsck_pass1): Initialize the dirs_to_hash list if the
295 htree feature is present in the filesystem.
296 (check_blocks): If a non-htree directory has more than 2
297 blocks, put it on the dirs_to_hash list.
298
299 * pass2.c (clear_htree): Add corrupt htree directories to the
300 dirs_to_hash list.
301
302 * problem.h, problem.c (PR_3A_PASS_HEADER, PR_3A_REHASH_ITER,
303 PR_3A_REHASH_DIR_ERR, PR_3A_REHASH_DIR_HEADER,
304 PR_3A_REHASH_DIR, PR_3A_REHASH_DIR_END): Add new problem codes
305
306 * pass2.c (parse_int_node), problem.c (PR_2_HTREE_BADBLK): Fix
307 problem display.
308
Theodore Ts'o62acaa12002-07-15 16:54:42 -04003092002-07-15 Theodore Ts'o <tytso@mit.edu>
310
311 * pass2.c (e2fsck_pass2): Use dx_dir->numblocks instead of
312 dx_dir->ino to indicate that a bad inode was cleared.
313
Theodore Ts'o503f9e72002-06-26 16:52:10 -04003142002-06-26 Theodore Ts'o <tytso@mit.edu>
315
316 * pass1.c (check_blocks): Move htree handling to handle_htree().
317 Factor out calls to ext2fs_write_inode so that it happens
318 if dirty_inode is non-zero.
319 (handle_htree): Add checks for invalid htree root, invalid
320 hash version, invalid hash version, and htree depth too deep.
321
322 * problem.h, problem.c (PR_1_HTREE_NODIR, PR_1_HTREE_BADROOT,
323 PR_1_HTREE_HASHV, PR_1_HTREE_INCOMPAT, PR_1_HTREE_DEPTH):
324 Add new problem codes.
325
326 * pass2.c (parse_int_node): Fix silly typo.
327 (check_dir_block): Change to use new ext2fs_dirhash()
328 function prototype.
329 (pass2): Fixed two minor bugs discovered by the test case:
330 Don't stop checking dxdir's after clearing a bad inode.
331 If there is a bad max hash, make sure the bad_dir flag
332 is set to make sure we try to clear inode.
333
Theodore Ts'o8fdc9982002-06-25 23:26:34 -04003342002-06-25 Theodore Ts'o <tytso@mit.edu>
335
336 * e2fsck.c (e2fsck_reset_context): Free the dx_dirinfo structure.
337
338 * message.c: Add new abbrevations @h and @p, "HTREE directory
339 inode" and "problem in".
340
341 * pass1.c (check_blocks): If the inode has the INDEX_FL flag,
342 register the block into the indexed directory data
343 structures. Or if the filesystem doesn't have the
344 DIR_INDEX flag, offer to clear the INDEX_FL.
345
346 * pass2.c (e2fsck_pass2, parse_int_node): Add support check htree
347 directories (we don't check all possible corruptions yet).
348
349 * problem.h, problem.h (PR_1_HTREE_SET, PR_2_HTREE_NOTREF,
350 PR_2_HTREE_DUPREF, PR_2_HTREE_MIN_HASH, PR_2_HTREE_MAX_HASH,
351 PR_2_HTREE_CLEAR, PR_2_HTREE_FCLR, PR_2_HTREE_BADBLK): Add
352 new problem codes.
353
354 * unix.c (main): If ENABLE_HTREE is not defined, complain if the
355 filesystem has the dir_index feature.
356
357 * Makefile.in, e2fsck.h, dx_dirinfo.c: New file (and group of
358 functions) which keeps track of blocks in HTREE directory
359 blocks.
360
Andreas Dilgerb21bf262002-06-10 11:05:56 -06003612002-05-22 Andreas Dilger <adilger@clusterfs.com>
362
363 * super.c (check_superblock): Check that the number of inodes and
364 blocks in a group is less than 2^16, so that the free inode
365 and block counts for a group fit into the group descriptor
366 table fields. Any more than that would need a COMPAT flag.
367
Theodore Ts'o0d634672002-05-22 00:22:38 -04003682002-05-22 Theodore Ts'o <tytso@mit.edu>
369
370 * pass1.c (check_ext_attr): Update to support the V2 Bestbits EA
371 format. We automatically determine from the first EA
372 block we visit whether we are using the V1 or V2 format.
373
Theodore Ts'oda307042002-05-21 21:19:14 -04003742002-05-21 Theodore Ts'o <tytso@mit.edu>
375
376 * pass1.c (process_block): If an inode has too many blocks or
377 is too big, then offer to truncate the inode.
378 (check_blocks): Don't bother checking the size to see if
379 it's too big, since that's just a symptom, not the disease
380 (which we're now appropriately checking in process_block).
381
382 * problem.c, problem.h: Add new problem codes PR_1_INODE_TOOBIG,
383 PR_1_TOOBIG_DIR, PR_1_TOOBIG_REG, PR_1_TOOBIG_SYMLINK, and
384 add the latch code PR_LATCH_TOOBIG.
385
Theodore Ts'obcf9c5d2002-05-21 09:14:17 -04003862002-05-20 Theodore Ts'o <tytso@mit.edu>
387
388 * e2fsck.h, pass1.c (e2fsck_pass1_check_symlink), pass2.c
389 (e2fsck_process_bad_inode): Add an extra
390 argument so a scratch buffer can be passed into the
391 function.
392
393 * pass1.c (e2fsck_pass1_check_device_inode,
394 e2fsck_pass1_check_symlink): If the EXT2_INDEX_FL flag is
395 set, then the device/FIFO is invalid.
396 (check_immutable): Don't check for EXT2_INDEX_FL; we take
397 care of that elsewhere now.
398 (e2fsck_pass1): Check to see if the symlink is valid
399 before we offer to clear any immutable bits. This matches
400 the order in which we check other special files.
401
402 * pass2.c (e2fsck_pass2): Allocate a bigger scratch buffer so we
403 can pass part of it to e2fsck_process_bad_inode.
404
405 * pass4.c (e2fsck_pass4): If we need to call
406 e2fsck_process_bad_inode(), allocate the necessary scratch
407 buffer.
408
409 * problem.h, problem.c: Change PR_2_SYMLINK_SIZE to be
410 PR_2_INVALID_SYMLINK, and change the text
411 accordingly. Revert the text change for PR_1_SET_IMMUTABLE
412 since we no longer check for EXT2_INDEX_FL in
413 check_immutable().
414
4152002-05-18 Andreas Dilger <adilger@clusterfs.com>
416
417 * pass1.c (e2fsck_pass1_check_symlink): Remove checks of
418 immutable/append-only checks, since this is handled by
419 check_immutable. For non-fast symlinks, read in the
420 data block and check the length to make sure it
421 matches with the inode size.
422 (check_immutable): Generalize to also check for the
423 EXT2_INDEX_FL flag.
424 (check_blocks): For non-regular files, signal a bad inode
425 size if i_size_high is non-zero.
426
427 * pass2.c: Only count large files if they are regular files
428 (not just if they aren't directories).
429
430 * problem.c, problem.h: Change comment for PR_2_SYMLINK_SIZE
431 to indicate that it can be triggered by any symlink,
432 not fast symlink. Change text for PR_1_SET_IMMUTABLE
433 to indicate that it the EXT2_INDEX_FL was set.
434
Theodore Ts'o31e29a12002-05-17 10:53:07 -04004352002-05-17 Theodore Ts'o <tytso@mit.edu>
436
437 * pass1.c (e2fsck_pass1): When calculating max_sizes, omit capping
438 this value by the calculated value of max_sect_sizes.
439 The inode may be a sparse inode, and the limit of
440 max_sect_sizes assumed a non-sparse inode and a limit
441 based on a 32-bit i_blocks field measured in 512 sectors.
442
443 * super.c (check_super_block): Fix check for s_log_block_size so
444 that takes into account fact that there is an offset of
445 EXT2_MIN_BLOCK_LOG_SIZE.
446
447 * pass1.c: Allocate max_sizes array to be big enough to support
448 the larger block sizes.
449
4502002-05-16 Andreas Dilger <adilger@clusterfs.com>
451
452 * unix.c (main), util.c (get_backup_sb): Use EXT2_MAX_BLOCK_SIZE
453 instead of using a hardcoded value of 4096.
454
455 * super.c (check_super_block): Change checks for s_log_block_size
456 s_log_frag_size so they support the larger block sizes.
457
458 * pass1.c (e2fsck_pass1): Calculate max_sizes array for block
459 sizes up to EXT2_MAX_BLOCK_SIZE (to support block sizes
460 greater than 4k).
461
Theodore Ts'oa8e77242002-03-08 03:12:14 -05004622002-03-08 Theodore Tso <tytso@mit.edu>
463
464 * Release of E2fsprogs 1.27
465
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05004662002-03-07 Theodore Tso <tytso@mit.edu>
467
468 * journal.c, pass5.c, revoke.c: Fix gcc -Wall complaints
469
4702002-03-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'of2d5c932002-03-07 03:13:07 -0500471
472 * unix.c (main): Don't close the filesystem before calling
473 fatal_error(); this just causes a needless warning about a
474 bad I/O manager magic number.
475
476 * journal.c (e2fsck_check_ext3_journal): Offer to clear the inode
477 in case the journal is too small, or the inode number in
478 the superblock doesn't appear to be random.
479
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05004802002-03-06 Theodore Tso <tytso@mit.edu>
Theodore Ts'of1226322002-03-07 02:47:07 -0500481
482 * problem.h, problem.c: PR_5_BLOCK_RANGE_UNUSED,
483 PR_5_BLOCK_RANGE_USED, PR_5_INODE_RANGE_UNUSED,
484 PR_5_INODE_RANGE_USED: Add new problem codes.
485
486 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Collapse
487 reporting of adjacent blocks and inodes into a range.
488
Theodore Ts'o14308a52002-03-05 03:26:52 -05004892002-03-04 Philipp Thomas <pthomas@suse.de>
490
491 * unix.c (main): Newer libintl needs LC_CTYPE to be set in
492 addition to LC_MESSAGES.
493
Theodore Ts'o57173d02002-02-26 14:59:39 -05004942002-02-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'ob9f40922002-02-24 03:08:57 -0500495
496 * Makefile.in (install): Install hard links for man pages for
497 fsck.ext2 and fsck.ext3. Remove any compressed man
498 pages before installing the man pages.
499
Theodore Ts'o57173d02002-02-26 14:59:39 -05005002002-02-22 Theodore Tso <tytso@mit.edu>
Theodore Ts'od1a21822002-02-22 00:17:59 -0500501
502 * journal.c: Improve code maintainability and reduce code size by
503 moving common code paths in e2fsck_journal_init_dev() and
504 e2fsck_journal_init_inode() into e2fsck_get_journal().
505 Also fixed a memory leak in recover_ext3_journal().
506
507 * super.c (release_orphan_inodes): Fix memory leak.
508
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005092002-02-03 Theodore Tso <tytso@thunk.org>
510
511 * Release of E2fsprogs 1.26
512
5132001-12-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o3ed57c22001-12-24 15:01:59 -0500514
515 * unix.c (PRS): Don't allow the -c and -l/-L options to be
516 specified at the same time.
517
518 * e2fsck.h (E2F_OPT_WRITECHECK), unix.c (PRS),
519 badblocks.c (read_bad_blocks_file): If two -c options are
520 specified, then perform a non-destructive read/write scan
521 of the disk.
522
523 * e2fsck.8.in: Document the double -c option; also encourage users
524 to use -c instead of the -l/-L options since it's too hard
525 for users to get things like the blocksize parameter correct.
526
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005272001-12-23 Theodore Tso <tytso@mit.edu>
Theodore Ts'o19007e52001-12-23 19:33:51 -0500528
Theodore Ts'of1a17612001-12-23 22:27:52 -0500529 * util.c (get_backup_sb): This function now searches for the
530 backup superblock by iterating over possible blocksizes
531 instead of defaulting a guess of 8193 if the superblock
532 isn't available.
533
534 * message.c (expand_percent_expression), unix.c (main): Pass in
535 new parameters to get_backup_sb. Also, in unix.c, use the
536 blocksize paramter in the e2fsck context structure instead
537 of using a static variable, since get_backup_sb wants to
538 be able to set the blocksize paramter.
539
540 * e2fsck.h: Update function prototype for get_backup_sb; also add
541 the blocksize parameter to the e2fsck context structure.
542
Theodore Ts'o19007e52001-12-23 19:33:51 -0500543 * Makefile.in, jfs_user.h: Move linux/jbd.h to
544 ext2fs/kernel-jbd.h, to avoid using the system header
545 file version of hbd.h when using diet glibc (since it
546 forcibly adds /usr/include to the beginning of the
547 include search path.)
548
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005492001-12-21 Theodore Tso <tytso@mit.edu>
Theodore Ts'od37066a2001-12-21 23:28:54 -0500550
Theodore Ts'o6a50c5e2001-12-21 23:29:35 -0500551 * problem.c (fix_problem): Use ctx->filesystem_name if the
552 ctx->device_name is NULL.
553
Theodore Ts'od37066a2001-12-21 23:28:54 -0500554 * journal.c (e2fsck_check_ext3_journal): Give the opportunity to
555 run the journal even if recovery flag is cleared. If
556 we're using a backup superblock, run the journal by
557 default.
558
559 * e2fsck.h (E2F_OPT_FORCE), unix.c (PRS, check_if_skip): Use a
560 bitfield in the e2fsck context flags word to indicate
561 whether or not a check should be forced. This allows the
562 journal code to set the option if necessary to force a
563 filesystem check.
564
565 * problem.h, problem.c: Remove PR_0_JOURNAL_RESET_JOURNAL, and add
566 PR_0_JOURNAL_RUN and PR_0_JOURNAL_RUN_DEFAULT. Update
567 problem decription texts.
568
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005692001-12-16 Theodore Tso <tytso@mit.edu>
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500570
Theodore Ts'o4ea7bd02001-12-16 23:23:37 -0500571 * e2fsck.h (ext2fs_get_refcount_size), unix.c (check_mount, PRS),
572 pass1.c (adjust_extattr_refcount),
573 ea_refcount.c (ea_refcount_create): Fix gcc -Wall nits.
574
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500575 * recovery.c, revoke.c: Update to versions from 2.4.17-pre8.
576
577 * journal.c, jfs_user.h: Update support code for new version of
578 recover.c and revoke.c. Fix support for filesystems with
579 external journals.
580
Gabriel Paubertb3b3d462001-11-30 13:45:28 +01005812001-11-30 Gabriel Paubert <paubert@iram.es>
582
583 * journal.c (e2fsck_journal_load): Fix an endianness bug.
584
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005852001-11-26 Theodore Tso <tytso@mit.edu>
Theodore Ts'o24bfb442001-11-26 15:51:14 -0500586
587 * super.c (check_super_block): Make sure that if the inode table
588 or allocation bitmap is zero, that it is marked as
589 invalid, so that in pass #1, a new bitmap/inode table gets
590 properly allocated. (Addresses Debian Bug #116975)
591
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005922001-11-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o1e9a7e02001-11-24 16:40:57 -0500593
594 * e2fsck.8.in: Fix minor typo in man page and clarify device
595 specification.
596
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005972001-10-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'o62e3e7f2001-10-07 02:13:30 -0400598
599 * journal.c (clear_v2_journal_fields, e2fsck_journal_load): If the
600 V2 fields are set on a V1 journal superblock, or an
601 internal V2 journal has s_nr_users is non-zero, clear the
602 entire journal superblock beyond the V1 superblock. This
603 fixes botched V1->V2 updates.
604
605 * problem.c, problem.h (PR_0_CLEAR_V2_JOURNAL): Add new problem code.
606
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05006072001-09-20 Theodore Tso <tytso@mit.edu>
Theodore Ts'o773fd8a2001-10-06 21:26:27 -0400608
609 * e2fsck.h, journal.c (e2fsck_move_ext3_journal): Add new function
610 which will automatically relocate the ext3 journal from a
611 visible file to an invisible journal file if the
612 filesystem has been opened read/write.
613
614 * super.c (check_super_block): Add call to e2fsck_move_ext3_journal
615
616 * problem.c, problem.h (PR_0_MOVE_JOURNAL, PR_0_ERR_MOVE_JOURNAL):
617 Add new problem codes.
618
Theodore Ts'ofbf91112001-09-20 10:47:47 -04006192001-09-20 Theodore Tso <tytso@thunk.org>
620
621 * Release of E2fsprogs 1.25
622
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05006232001-09-19 Theodore Tso <tytso@mit.edu>
Theodore Ts'oae6cdcf2001-09-19 15:17:25 -0400624
625 * unix.c (main): If a superblock is specified explicitly by the
626 user, don't try to automatically fall back to an
627 alternate superblock.
628
Theodore Ts'ofb707752001-09-04 15:00:37 -04006292001-09-02 Theodore Tso <tytso@thunk.org>
630
631 * Release of E2fsprogs 1.24a
632
Theodore Ts'o109624a2001-08-31 00:59:55 -04006332001-08-30 Theodore Tso <tytso@thunk.org>
634
635 * Release of E2fsprogs 1.24
636
Theodore Ts'ob1f204f2001-08-30 16:42:09 -04006372001-08-30 Theodore Tso <tytso@valinux.com>
638
639 * pass1.c (e2fsck_pass1): For EXT2_RESIZE_INO, allow its i_mode to
640 either be zero or a regular file (for compatibility with
641 Andreas's on-line resizing programs).
642
Theodore Ts'o53abed02001-08-27 12:18:16 -04006432001-08-27 Theodore Tso <tytso@valinux.com>
644
Theodore Ts'o0f8973f2001-08-27 12:44:23 -0400645 * unix.c (main): Remove EXT2FS_VERSION from the version display,
646 since it only confuses people.
647
Theodore Ts'o53abed02001-08-27 12:18:16 -0400648 * pass1.c (strnlen): Provide strnlen if libc doesn't.
649
Theodore Ts'o943ed872001-08-27 12:29:22 -04006502001-08-15 Theodore Tso <tytso@valinux.com>
651
652 * Release of E2fsprogs 1.23
653
Theodore Ts'o85645a6f2001-08-13 06:11:39 -04006542001-08-13 Theodore Tso <tytso@valinux.com>
655
Theodore Ts'oeb4ab512001-08-13 10:58:41 -0400656 * super.c (release_orphan_inodes): If the filesystem contains
657 errors, don't run the orphan * list, since the orphan list
658 can't be trusted.
659
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400660 * pass1.c (check_size): Fix logic in check_size; the previous code
661 only offered to clear the inode size fields if both size
662 and i_size_high were zero.
Theodore Ts'oa40ecbb2001-08-13 06:15:36 -0400663 (e2fsck_pass1_check_device_inode): If i_blocks is
664 non-zero, then assume that the device/socket/fifo inode
665 is bogus.
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400666
Theodore Ts'o2b94c652001-08-09 04:08:52 -04006672001-08-09 Theodore Tso <tytso@valinux.com>
668
Theodore Ts'oa4742692001-08-09 04:14:04 -0400669 * pass1.c, pass2.c, problem.c, problem.h: Fix bug introduced by
670 Andreas's symlink code; check_blocks() was unconditionally
671 testing inode_bad_map without checking to see if it
672 existed first. Fixed problem a different way; we now no
673 longer check inode_bad_map at all, since the file might
674 not get deleted in pass 2 anyway. We move the large file
675 feature reconciliation code to to e2fsck_pass2(), and in
676 deallocate_inode() in pass2.c, we decrement the large
677 files counter if we're about to delete a large file.
678
Theodore Ts'o2b94c652001-08-09 04:08:52 -0400679 * unix.c (show_stats): Print the number of large files in verbose
680 mode.
681
Theodore Ts'oc0a083f2001-08-07 10:17:41 -04006822001-08-07 Theodore Tso <tytso@valinux.com>
683
684 * journal.c (recover_ext3_journal): If s_errno is set in the
685 journal superblock, set the EXT2_ERROR_FS flag in the
686 filesystem superblock after the journal is run.
687
Theodore Ts'obd512b62001-08-04 21:33:03 -04006882001-08-04 Andreas Dilger <root@lynx.adilger.int>
689
690 * message.c: Change comments for %D and %d expansion in e2fsck
691 problem codes. It was not consistent which was for dirent
692 expansion, and which was for directory number expansion.
693
694 * problem.c (PR_2_FINAL_RECLEN, PR_2_BAD_FILETYPE): Fix problem
695 codes which got caught by the confusion between %D and %d.
696
Theodore Ts'od007cb42001-08-04 20:39:39 -04006972001-08-04 Theodore Tso <tytso@valinux.com>
698
699 * problem.c (PR_2_SYMLINK_SIZE): Change description to make it
700 more clear (and remove %s expansion). Also add missing
701 periods to the end of a number of problem descriptions.
702
703 * pass2.c (e2fsck_process_bad_inode): Remove unneeded problem
704 context string set now that the problem description for
705 PR_2_SYMLINK_SIZE has been changed.
706
707 * pass1.c (e2fsck_pass1_check_symlink): Consolidate some checks,
708 and check the validity of the symlink block here (so that
709 we detect this case here instead of later). Also use
710 sizeof(inode->i_block) instead EXT2_LINK_DIR.
711
Theodore Ts'o83e6ac82001-07-30 16:29:52 -04007122001-07-30 Theodore Tso <tytso@valinux.com>
713
714 * unix.c (check_mount): Remove the code which tested for the root
715 filesystem being mounted read-only, and depend on the
716 results flags from ext2fs_check_if_mounted.
717
Theodore Ts'o1e165262001-07-29 11:48:10 -04007182001-07-29 Theodore Tso <tytso@valinux.com>
719
Theodore Ts'o6d222f32001-07-29 12:06:58 -0400720 * unix.c (check_if_skip): Free the e2fsck context structure on a
721 normal clean filesystem exit, to make it easier to find
722 real memory leaks.
723 (PRS): Only update the path to include /sbin at the
724 beginning if the -c option is given, again to make it
725 easier to find memory leaks.
Theodore Ts'o0628ae32001-07-29 12:26:46 -0400726 (main): Move the final print_resource_track call after the
727 filesystem and the context are freed.
Theodore Ts'o6d222f32001-07-29 12:06:58 -0400728
729 * journal.c (e2fsck_journal_init_dev): Avoid memory leak if we
730 need to search for the journal device.
731 (e2fsck_journal_release): Free the journal IO channel when
732 we release the journal handle, to avoid a memory leak.
733
Theodore Ts'o1e165262001-07-29 11:48:10 -0400734 * e2fsck.c (e2fsck_reset_context): Fix bug; only close the io
735 channel if it is *different* from the filesystem io
736 channel.
737
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -04007382001-07-27 Theodore Tso <tytso@valinux.com>
739
Theodore Ts'oa092c562001-07-27 22:40:09 -0400740 * problem.c (PR_1_SET_IMMUTABLE): Clarify problem message.
741
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -0400742 * pass1.c (e2fsck_pass1): Check for symlinks that have the
743 immutable flag set (and offer to clear them).
744
Theodore Ts'o24ceb242001-07-26 09:02:56 -04007452001-07-26 Theodore Tso <tytso@valinux.com>
746
747 * pass1.c (e2fsck_pass1): Free ctx->block_ea_map at the end of
748 pass 1.
749
Theodore Ts'o14fe1c32001-07-25 19:48:24 -04007502001-07-25 Theodore Tso <tytso@valinux.com>
751
752 * pass1.c (check_ext_attr): Skip zero-length EA entries.
753
754 * problem.c: PR_1_EA_ALLOC_COLLISION shouldn't abort, but should
755 prompt to clear the EA block.
756
Theodore Ts'oadee8d72001-07-23 00:17:49 -04007572001-07-22 Theodore Tso <tytso@valinux.com>
758
759 * journal.c (ll_rw_block): Use ctx->journal_io instead of the
760 filesystem's io_channel.
761 (e2fsck_journal_init_dev): New function which supports
762 initialization of the external journal.
763 (e2fsck_get_journal): Remove code which flagged an error
764 if the superblock reported the use of an external journal.
765 (ext3_journal_via_mount): Remove unsued, #ifdefed out function.
766
767 * problem.c, problem.h: Removed error codes no longer used
768 (PR_0_JOURNAL_UNSUPP_DEV, PR_0_JOURNAL_BAD_DEV,
769 PR_0_JOURNAL_UNSUPP_UUID) and replace them with new error
770 codes related with failures in loading the external
771 journal (PR_0_JOURNAL_UNSUPP_MULTIFS,
772 PR_0_CANT_FIND_JOURNAL, PR_0_EXT_JOURNAL_BAD_SUPER).
773 Also changed the text assocated with PR_0_JOURNAL_BAD_UUID
774 to reflect the case where the external journal isn't
775 correct for this filesystem.
776
777 * unix.c (PRS), e2fsck.8.in: Add new option -j which allows
778 the user to specify the pathname to find the external journal.
779
780 * e2fsck.c (e2fsck_reset_context): Close journal_io if it isn't
781 the same as the filesystem io_channel.
782
783 * e2fsck.h: Add new fields (journal_io and journal_name) in the
784 context structure to support external journals.
785
Theodore Ts'od3124012001-07-20 14:13:49 -04007862001-07-20 Theodore Tso <tytso@valinux.com>
787
788 * unix.c (main): Add an explicit warning when the filesystem is
789 left not completely fixed when e2fsck exits. (Addresses
790 Debian bug #104502.)
791
Theodore Ts'o55fd07e2001-07-19 16:31:25 -04007922001-07-19 Theodore Tso <tytso@valinux.com>
793
794 * pass1.c (check_ext_attr): The entire EA block is now checked to
795 make sure that parts of the EA block aren't being used for
796 multiple purposes.
797
798 * Makefile.in e2fsck.h, region.c: New file which is used to detect
799 collisions in extended attribute block.
800
801 * problem.h, problem.c (PR_1_EA_MULTI_BLOCK, PR_1_EA_ALLOC_REGION,
802 PR_1_EA_ALLOC_COLLISION, PR_1_EA_BAD_NAME,
803 PR_1_EA_BAD_VALUE): Add new problem codes.
804
Theodore Ts'o3c6b8972001-07-10 14:27:58 -04008052001-07-10 Theodore Tso <tytso@valinux.com>
806
807 * journal.c (e2fsck_run_ext3_journal): Only call ext3_flush() if
808 the superblock is dirty.
809
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -04008102001-07-07 Theodore Tso <tytso@valinux.com>
811
Theodore Ts'o7b63fff2001-07-07 23:01:31 -0400812 * pass1b.c (pass1b, process_pass1b_block): Change the num_bad
813 field calculation so that it only counts EA block entries
814 as a single multiply claimed block (since once we clone
815 the EA blocks for one inode, we fix the problem for all of
816 the other inodes). Also, I moved the num_bad calculation
817 from process_pass1b_block to the end of pass1b. This
818 fixes a *significant* performance bug in pass1b which hit
819 people who had to had a lot of multiply claimed blocks.
820 (Can you say O(n**3) boys and girls? I knew you could...
821 Fortunately, this case didn't happen that much in actual
822 practice.)
823
824 * pass1.c (e2fsck_pass1): Defer inodes which have an extended
825 attribute block for later processing to avoid extra seeks
826 across the disk.
827 (process_inode_cmp): If there is no indirect block, sort
828 by the extended attribute (i_file_acl) block.
829
Theodore Ts'o7abb2bd2001-07-07 13:20:34 -0400830 * pass1b.c (clone_file_block): Fix bugs when cloning extended
831 attribute blocks. Moved free of block_buf to after the
832 code which clones the extattr block, and fixed logic for
833 changing pointers to the extended attribute field in the
834 inodes which were affected.
835 (decrement_badcount): New function which is used whenever
836 we need to decrement the number of files which claim a
837 particular bad block. Fixed bug where delete_file wasn't
838 checking check_if_fs_block() before clearing the entry in
839 block_dup_map. This could cause a block which was claimed
840 by multiple files as well as the filesystem metadata to
841 not be completely fixed.
842
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -0400843 * pass1.c (adjust_extattr_refcount): Add new function which
844 adjusts the reference counts of extended attribute blocks
845 if needed, both up and down.
846 (e2fsck_pass1): If the refcount or refcount_extra
847 structure are present, call adjust_extattr_refcount(),
848 and free it afterwards.
849
850 * problem.h, problem.c (PR_1_EXTATTR_READ_ABORT,
851 PR_1_EXTATTR_REFCOUNT, PR_1_EXTATTR_WRITE): Add new
852 problem codes.
853
Theodore Ts'o342d8472001-07-02 11:54:09 -04008542001-07-02 Theodore Tso <tytso@valinux.com>
855
856 * pass1.c (e2fsck_pass1, check_ext_attr, check_blocks): Add
857 initial support for scanning extended attribute blocks.
858
859 * e2fsck.c (e2fsck_reset_context): free extended attribute
860 refcount structure.
861
862 * e2fsck.h: Add new fields for accounting for the extended
863 attribute blocks.
864
865 * Makefile.in, ea_refcount.c, e2fsck.h: Add new file which
866 implements a reference count abstraction.
867
868 * problem.c, problem.h: Add new problem codes PR_1_ALLOCATE_REFCOUNT,
869 PR_1_READ_EA_BLOCK, PR_1_BAD_EA_BLOCK, PR_2_FILE_ACL_BAD
870
871 * message.c: Add "@a" as an abbreviation for "extended attribute"
872
873 * pass1b.c (clone_file): Add code which handles cloning an
874 extended attribute block.
875
876 * pass1b.c (delete_file):
877 * pass2.c (deallocate_inode): If the inode contains an extended
878 attribute block in the file_acl field, clear it and
879 deallocate the block.
880
8812001-06-28 Theodore Tso <tytso@valinux.com>
882
883 * pass2.c (e2fsck_process_bad_inode): Deal with inodes which are
884 marked bad because of an invalid file_acl (either because
885 EXT2_FEATURE_COMPAT_EXT_ATTR is not set, or because the
886 block number in file_acl is bad.
887
Theodore Ts'o636a9542001-06-29 17:57:26 -04008882001-06-29 Theodore Tso <tytso@valinux.com>
889
890 * unix.c (show_stats): Use long long to calculate the percentage
891 of the number of blocks in use in the filesystem.
892
Theodore Ts'o67960132001-06-23 00:16:37 -04008932001-06-23 Theodore Tso <tytso@valinux.com>
894
895 * Release of E2fsprogs 1.22
896
Theodore Ts'od90f3492001-06-22 21:01:17 -04008972001-06-22 Theodore Tso <tytso@valinux.com>
898
899 * flushb.c: Use platform independent method of defining the
900 BLKFLSBUF ioctl. Also include sys/mount.h since on newer
901 platforms BLKFLSBUF is defined there.
902
Theodore Ts'o42475e22001-06-22 20:35:38 -04009032001-06-19 Theodore Tso <tytso@valinux.com>
904
905 * super.c (release_inode_blocks): Don't try to release the blocks
906 if the orphaned inode is a device file, symlink, or some
907 other kind of special file that doesn't have a block list.
908
Theodore Ts'of4f75ba2001-06-16 01:14:28 +00009092001-06-15 Theodore Tso <tytso@valinux.com>
910
911 * Release of E2fsprogs 1.21
912
Theodore Ts'ob6a08072001-06-14 01:16:17 +00009132001-06-13 Theodore Tso <tytso@valinux.com>
914
915 * unix.c (check_if_skip): Adapted patch from Andreas Dilger which
916 prints the number of mounts or days elapsed since the last
917 check when e2fsck is forced to check an otherwise clean
918 filesystem.
919
Theodore Ts'ocbbf0312001-06-13 00:12:04 +00009202001-06-12 Theodore Tso <tytso@valinux.com>
921
922 * badblocks.c: Stop using the compatibility badblocks function,
923 and use the ext2fs_badblocks_* functions instead.
924
Theodore Ts'o5df55d72001-06-11 07:00:04 +00009252001-06-11 Theodore Tso <tytso@valinux.com>
926
Theodore Ts'o3034f622001-06-11 15:17:45 +0000927 * unix.c (PRS): Fix bug introduced in 1.20 which broke the -F
928 flag.
929
Theodore Ts'o5df55d72001-06-11 07:00:04 +0000930 * Makefile.in: Add message.c and swapfs.c to the list of source
931 files to build the make depend.
932
933 * swapfs.c, unix.c: Only support the -s and -S options to e2fsck
934 if ENABLE_SWAPFS is defined.
935
Theodore Ts'o725c4742001-06-08 11:55:44 +00009362001-06-08 Theodore Tso <tytso@valinux.com>
937
938 * recover.c, revoke.c: Synchronize with ext3 0.7a
939
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00009402001-06-02 Theodore Tso <tytso@valinux.com>
941
Theodore Ts'oa479fe62001-06-02 04:50:14 +0000942 * recovery.c (scan_revoke_records): Fix bug in recovery code;
943 missing byte order conversion.
944
Theodore Ts'ofdbdea02001-06-02 04:26:26 +0000945 * pass1.c (mark_inode_bad): Replace alloc_bad_map with a function
946 which sets the bit in the bad inode bitmap.
947 (e2fsck_pass1): Check for fast symlinks with an invalid
948 size, and set the bad inode map in that case.
Theodore Ts'o62b6d472001-06-02 04:37:02 +0000949 (check_size): Check i_size_high for special files and
950 prompt to clear it along with i_size if non-zero.
Theodore Ts'ofdbdea02001-06-02 04:26:26 +0000951
952 * pass2.c (e2fsck_process_bad_inode): Check for fast symlinks with
953 an invalid size and prompt the user if the inode should be
954 cleared.
955
956 * problem.h, problem.c (PR_2_SYMLINK_SIZE): Added new problem code.
957
Theodore Ts'o71d521c2001-06-01 19:29:36 +00009582001-06-01 Theodore Tso <tytso@valinux.com>
959
Theodore Ts'o2f686ac2001-06-02 00:38:40 +0000960 * problem.c, problem.h: Change PR_0_JOURNAL_UNSUPP_INCOMPAT and
961 PR_0_JOURNAL_UNSUPP_ROCOMPAT so they aren't fatal errors,
962 but prompt to see if the user should abort. Removed the
963 PR_0_JOURNAL_RESET_COMPAT problem code.
964
965 * journal.c (e2fsck_journal_load): If there are incompatible
966 journal flags, just return an error code.
967 (e2fsck_check_ext3_journal): If e2fsck_journal_load
968 returns an error code indicating that there are
969 incompatible journal flag, check to see if we should
970 abort, and then offer to clear the journal.
Theodore Ts'oe3338452001-06-14 07:11:33 +0000971 (Addresses Debian bug #98527.)
Theodore Ts'o2f686ac2001-06-02 00:38:40 +0000972
Theodore Ts'o797f5ef2001-06-01 23:49:46 +0000973 * Makefile.in: Move include/asm/types.h.in to
Theodore Ts'o36a23e12001-06-02 00:54:10 +0000974 lib/ext2fs/ext2_types.h.in.
Theodore Ts'o797f5ef2001-06-01 23:49:46 +0000975
9762001-06-01 Theodore Tso <tytso@valinux.com>
977
Theodore Ts'o71d521c2001-06-01 19:29:36 +0000978 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
979 pass1_check_directory): Add a safety check to make sure
980 ctx->stashed_inode is non-zero.
981
982 * pass1b.c (pass1b): Use e2fsck_use_inode_shortcuts() to disable
983 the inode shortcut processing, instead of manually
984 clearing only half of the function pointers that needed to
985 be NULL'ed out. This caused nasty bugs if the last inode
986 in the filesystem needed dup block processing.
987
988 * pass1b.c (clone_file_block): When cloning a directory's metadata
989 block, don't try to update the directory block list
990 database, since indirect blocks aren't stored in the
991 database and the resulting error will abort the file clone
992 operation.
993
Theodore Ts'o561cd4d2001-05-25 16:40:56 +00009942001-05-25 Theodore Tso <tytso@valinux.com>
995
Theodore Ts'obb185862001-05-25 17:35:00 +0000996 * Release of E2fsprogs 1.20
997
9982001-05-25 Theodore Tso <tytso@valinux.com>
999
Theodore Ts'o561cd4d2001-05-25 16:40:56 +00001000 * journal.c (e2fsck_journal_reset_super): Remove extraneous line
1001
Theodore Ts'oc7f23362001-05-23 22:19:47 +000010022001-05-23 Theodore Tso <tytso@valinux.com>
1003
1004 * journal.c (e2fsck_journal_reset_super): Fix bug; the reset
1005 journal wasn't getting written out to disk since the dirty
1006 bit wasn't being set on the buffer.
1007 (e2fsck_journal_load): Don't print an error message if the
1008 journal version number is wrong; just return a error code
1009 reflecting this fact. If the block type in the journal
1010 superblcok is obviously not a version number, report the
1011 journal is corrupted.
1012 (e2fsck_check_ext3_journal): On an unsupported journal
1013 version, prompt to abort by default, but then offer a
1014 chance to clear the journal as corrupt.
1015
1016 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_VERSION): Added new
1017 problem code.
1018
Theodore Ts'o424cd2b2001-05-14 04:06:56 +000010192001-05-14 Theodore Tso <tytso@valinux.com>
1020
Theodore Ts'o21afac02001-05-14 12:47:41 +00001021 * pass1.c: Treat inodes with a low dtime (that were from a
1022 corrupted orphan list) specially.
1023
1024 * problem.c, problem.h: Add new problem codes PR_1_LOW_DTIME and
1025 PR_1_ORPHAN_LIST_REFUGEES, and a new latch group,
1026 PR_LATCH_LOW_DTIME.
1027
1028 * problemP.h: Expand the size of the problem flag to be an int
1029 instead of a short. Expand space in the flag word which
1030 is reserved for problem latch flags from 3 bits to 8 bits.
1031
Theodore Ts'o54c637d2001-05-14 11:45:38 +00001032 * e2fsck.h, scantest.c: Change location of ext2_fs.h to be
1033 ext2fs/ext2_fs.h
1034
Theodore Ts'o424cd2b2001-05-14 04:06:56 +00001035 * super.c (check_super_block): Be more strict on checking
1036 s_r_blocks_count superblock field.
1037
10382001-05-13 Theodore Tso <tytso@valinux.com>
1039
1040 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_ROCOMPAT,
1041 PR_0_JOURNAL_UNSUPP_INCOMPAT, PR_0_JOURNAL_RESET_COMPAT):
1042 New problem codes.
1043
1044 * journal.c (e2fsck_journal_load): Use a problem code to
1045 report unsupported feature flags. There is code to
1046 clear unsupported flags, but since this is dangerous,
1047 it's not allowed in the problem code table.
1048
10492001-05-11 Andreas Dilger <adilger@turbolinux.com>
1050
1051 * journal.c (e2fsck_journal_reset_super): initialize the journal
1052 sequence number to a random value to avoid recovering
1053 bad transactions from a corrupt journal.
1054
Theodore Ts'o328a5ce2001-05-13 20:21:25 +000010552001-05-13 Theodore Tso <tytso@valinux.com>
1056
1057 * journal.c: Code cleanup; initialize journal_enable_debug using
1058 an initializer.
1059
Theodore Ts'ofc9a69c2001-05-12 13:43:46 +000010602001-05-12 Theodore Tso <tytso@valinux.com>
1061
1062 * unix.c (PRS): Skip validation of -C's file descriptor if it is
1063 zero, since that is special case.
1064
Theodore Ts'of0b8c872001-05-09 06:03:58 +000010652001-05-09 Theodore Tso <tytso@valinux.com>
1066
1067 * super.c (release_orphan_inodes): Add gettext quoting around
1068 "Truncating" and "Clearing" for i18n.
1069
Theodore Ts'ob9852cd2001-05-05 05:14:59 +000010702001-05-05 Theodore Tso <tytso@valinux.com>
1071
Theodore Ts'oe39ac922001-05-05 06:47:24 +00001072 * util.c (fatal_error): Use the correct magic number when checking
1073 the magic number for the io_channel data structure. Also
1074 remove extraneous call to io_channel_flush() that was left
1075 over from an editing session.
1076
Theodore Ts'ob9852cd2001-05-05 05:14:59 +00001077 * pass2.c (check_dir_block): Ignore EXT2_ET_DIR_CORRUPTED errors
1078 from ext2fs_read_dir_block().
1079
Theodore Ts'o5f629b72001-05-01 20:01:08 +000010802001-05-01 Theodore Tso <tytso@valinux.com>
1081
Theodore Ts'oae8160e2001-05-01 21:13:37 +00001082 * unix.c (PRS): Validate the completion information file
1083 descriptor so that the completion bar won't get
1084 accidentally written onto the disk.
1085
Theodore Ts'o5f629b72001-05-01 20:01:08 +00001086 * e2fsck.8.in: Add explanation that you can use mke2fs -n -b
1087 blocksize to printout alternate superblock locations.
1088
Theodore Ts'obc57f152001-04-26 04:11:46 +000010892001-04-26 Theodore Tso <tytso@valinux.com>
1090
1091 * unix.c (check_if_skip): If the max_mount_count is zero, treat it
1092 as having no count set.
1093
Theodore Ts'oef059872001-04-17 00:40:02 +000010942001-04-16 Theodore Tso <tytso@valinux.com>
1095
1096 * super.c (check_super_block): Fix bad calculation of
1097 inodes_per_block, and tighten min/max checks to be a bit
1098 more paranoid. Thanks to Andreas Dilger for pointing out
1099 this bug.
1100
Theodore Ts'o1f735032001-03-29 19:00:50 +000011012001-03-29 Theodore Tso <tytso@valinux.com>
1102
Theodore Ts'o15986f72001-03-29 19:22:16 +00001103 * journal.c (mark_buffer_uptodate): Add emulation of kernel
1104 function mark_buffer_uptodate.
1105
Theodore Ts'o1f735032001-03-29 19:00:50 +00001106 * recovery.c, revoke.c: Synchronize with 0.6b ext3 files.
1107
Theodore Ts'od0515212001-02-13 04:32:53 +000011082001-02-12 Theodore Tso <tytso@valinux.com>
1109
1110 * journal.c (e2fsck_run_ext3_journal): Force a flush of the
1111 filesystem and io_channel before replaying the journal.
1112
Theodore Ts'oa5c33f22001-01-18 02:34:03 +000011132001-01-17 Theodore Ts'o <tytso@valinux.com>
1114
1115 * pass1.c (check_blocks): Fix large file checking code so that
1116 files > 2GB are considered large files, and restrict
1117 directories from being > 2GB.
1118
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +000011192001-01-12 Theodore Ts'o <tytso@valinux.com>
1120
Theodore Ts'oa9ca2012001-01-12 21:53:25 +00001121 * journal.c (e2fsck_journal_fix_unsupported_super): Remove unused
1122 function. Add FIXME notes to e2fsck_get_journal(), from
1123 Andreas Dilger.
1124
1125 * pass1.c (e2fsck_pass1): Cap the maximum legal size of a file by
1126 the limit caused by the fact that i_blocks is in 512 byte
1127 units, and that the Linux buffer cache also fundamentally
1128 assumes 512 byte sectors.
1129 Make sure that the journal inode is a regular file, and
1130 when clearing an unused journal inode, make sure the
1131 icount db is updated.
1132
1133 * problem.c, problem.h (PR_1_JOURNAL_BAD_MODE): Add new problem code.
1134
Theodore Ts'o37b6b292001-01-12 21:16:13 +00001135 * problem.c: For PR_1_RESERVED_BAD_MODE, print a description of
1136 the reserved inode. In PR_0_JOURNAL_HAS_JOURNAL, prompt
1137 to clear the journal, rather than deleting it (which is
1138 more accurate). (From Andreas Dilger.)
1139
Theodore Ts'o6a6d3d42001-01-12 21:11:24 +00001140 * journal.c: Make sure all functions which return an error code
1141 use the errcode_t return type, and not "int"
1142 (e2fsck_journal_release): Add new parameter, "drop",
1143 which is used when we just want to deallocate the journal
1144 without trying to write out any changes.
1145 (mark_buffer_clean): New function
1146 (e2fsck_check_ext3_journal): If we fail loading the
1147 journal, make sure we free all memory associated with it.
1148 (recover_ext3_journal): If we fail to load the journal or
1149 initialize the revoke data structures, make sure we free all
1150 memory associated with the journal.
1151
Theodore Ts'o721edd02001-01-12 21:05:57 +00001152 * message.c (special_inode_name): Add more special inode names
1153 (From Andreas Dilger)
1154
Theodore Ts'o58a75172001-01-12 20:59:19 +00001155 * util.c (fatal_error): Check to make sure the io_manager data
1156 structure is sane before trying to flush the io_channel.
1157 (From Andreas Dilger)
1158
Theodore Ts'o721edd02001-01-12 21:05:57 +00001159 * mtrace.h, super.c, pass2.c: Minor whitespace cleanups, from
1160 Andreas Dilger.
Theodore Ts'o4035f402001-01-12 20:25:50 +00001161
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +00001162 * journal.c (e2fsck_journal_fix_bad_inode): Set pctx->ino to the
1163 bad journal number.
1164
1165 * problem.c (PR_0_JOURNAL_BAD_INODE): Use pctx->ino instead of
1166 pctx->num when printing the bad journal inode number.
1167
Theodore Ts'o86c627e2001-01-11 15:12:14 +000011682001-01-11 <tytso@snap.thunk.org>
1169
Theodore Ts'o5ba23cb2001-01-11 19:15:02 +00001170 * pass1.c (process_block): Remove dead code which was never
1171 getting executed.
1172
1173 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
1174 ext2fs_sync_device() instead of using BLKFLSBUF.
1175
1176 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
1177
Theodore Ts'o86c627e2001-01-11 15:12:14 +00001178 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
1179 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
1180 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
1181 ino_t to ext2_ino_t.
1182
Theodore Ts'o95a5bc92001-01-11 04:58:21 +000011832001-01-09 <tytso@snap.thunk.org>
1184
1185 * problem.c: Fix another broken @F vs @f problem.
1186
Theodore Ts'o53ef44c2001-01-06 05:55:58 +000011872001-01-06 <tytso@snap.thunk.org>
1188
1189 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
1190 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
1191
1192 * jfs_user.h: Use more sophisticated inline handling to allow
1193 building with --enable-gcc-wall
1194
Theodore Ts'od3f35b62001-01-03 13:00:43 +000011952001-01-03 <tytso@snap.thunk.org>
1196
Theodore Ts'of18996c2001-01-03 16:57:24 +00001197 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
1198 own block; if the journal inode is not in use, and it
1199 contains data, offer to clear it.
1200
1201 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
1202 problem code.
1203
1204 * problem.c: Modified problem table to use a new abbreviations.
1205
Theodore Ts'od74edf42001-01-03 19:38:04 +00001206 * message.c: Add @j abbreviation for journal, and @v abbreviation
Theodore Ts'oe9044062001-01-03 15:39:37 +00001207 for device.
Theodore Ts'o1ce64532001-01-03 15:34:20 +00001208
Theodore Ts'occ7067b2001-01-03 13:24:06 +00001209 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
1210
Theodore Ts'od3f35b62001-01-03 13:00:43 +00001211 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
1212 the journal stored on a reserved inode. Also force a fsck
1213 if the journal appears to exist while !NEEDS_RECOVERY, and
1214 we forcibly reset the journal.
1215
Theodore Ts'of5ae75e2001-01-01 14:52:52 +000012162001-01-01 <tytso@snap.thunk.org>
1217
Theodore Ts'o5dd8f962001-01-01 15:51:50 +00001218 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
1219 ext2fs_sb with struct ext2_super_block.
1220
Theodore Ts'of5ae75e2001-01-01 14:52:52 +00001221 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
1222
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +000012232000-12-31 <tytso@snap.thunk.org>
1224
1225 * jfs_compat.h: Remove uneeded header file.
1226
Theodore Ts'ob2f93192000-12-30 20:33:42 +000012272000-12-30 <tytso@snap.thunk.org>
1228
Theodore Ts'oc59a7042000-12-31 01:52:03 +00001229 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
1230 conflicts with the system header file.
1231
Theodore Ts'ob2f93192000-12-30 20:33:42 +00001232 * problem.h: Fixed numbering of pass1 error messages; an extra 0
1233 had slipped into some of the numbers. (Pointed out by
1234 Andreas Dilger)
1235
1236 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
1237 unnecessary automatic variable. Add explanatory comment
1238 about the kernel emulation routines. (Suggested by
1239 Andreas Dilger)
1240
Theodore Ts'o060b5fb2000-12-13 18:07:23 +000012412000-12-13 Theodore Ts'o <tytso@valinux.com>
1242
Theodore Ts'o9b565752000-12-13 18:50:22 +00001243 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
1244 journal fields are consistent if any of the superblock
1245 fields are set. (Backs out erroneous change made by sct,
1246 pointed out by Andreas.)
1247
1248 * unix.c (main): Clarify coments (no code changes)
1249
1250 * super.c (release_orphan_inodes): Fix spelling typo in error message.
1251
Theodore Ts'o8188c9e2000-12-13 18:39:14 +00001252 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
1253 level if we need to set large files flag. Patch from
1254 Andreas Dilger.
1255
Theodore Ts'o7b59f1e2000-12-13 18:11:44 +00001256 * super.c (check_super_block): If we have any of the compatibility
1257 flags set, we need to have a revision 1 filesystem. Most
1258 kernels will not check the flags on a rev 0 filesystem
1259 and we may have corruption issues because of the
1260 incompatible changes to the filesystem. Patch from Andreas
1261 Dilger.
1262
Theodore Ts'o060b5fb2000-12-13 18:07:23 +00001263 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
1264 new problem codes.
1265
Theodore Ts'o0e8a9562000-12-09 06:41:25 +000012662000-12-09 <tytso@snap.thunk.org>
1267
Theodore Ts'obf2d4992000-12-09 14:46:20 +00001268 * flushb.c: Fix flushb so that it does something other than waste
1269 disk space when built on systems with modern header files
1270 and add a non-subtle Copyright Licensing restriction so
1271 Yann will remove it from the Debian Distribution. (Now
1272 violates the Debian Free Software Guidelines, on purpose.)
1273
Theodore Ts'of43650c2000-12-09 06:47:56 +00001274 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
1275 at the top level, set the JFS debuging level to 2.
1276
Theodore Ts'o0e8a9562000-12-09 06:41:25 +00001277 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
1278 has been moved to the include/linux directory.
1279
1280 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
1281 support the V2 superblock and revoke processing. The
1282 journal.c and revoke.c files are copies from the ext3
1283 kernel source.
1284
1285 * Makefile.in: Added revoke.c to the list of source/object files.
1286
Theodore Ts'o133a56d2000-11-17 05:40:49 +000012872000-11-16 Theodore Ts'o <tytso@valinux.com>
1288
1289 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
1290 reporting problems rather than using com_err directly.
1291
1292 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
1293
1294 * message.c (expand_percent_expression): Add safety check. If
1295 ctx->str is NULL, print "NULL" instead of dereferencing
1296 the null pointer.
1297
1298 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
1299 to ext2fs_block_iterate2, to support 64-bit filesizes and
1300 to speed things up slightly by avoiding the use of the
1301 ext2fs_block_iterate's compatibility shim layer.
1302
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +000013032000-10-30 <tytso@snap.thunk.org>
1304
1305 * util.c (get_backup_sb): Calculate backup superblock correctly
1306 when the blocksize is > 1k.
1307
Theodore Ts'o241f2242000-10-26 20:42:07 +000013082000-10-26 <tytso@snap.thunk.org>
1309
1310 * jfs.h, jfs_compat.h, journal.c: Updated to include the
1311 definition of the new journal superblock format; still
1312 only supports V1 superblocks for now. (From sct)
1313
Theodore Ts'ob09a4b02000-10-24 21:16:09 +000013142000-10-24 <tytso@snap.thunk.org>
1315
Theodore Ts'o83949022000-10-25 01:38:50 +00001316 * super.c (release_inode_block, release_inode_blocks,
1317 release_orphan_inodes): Add code to deal with truncating
1318 inodes which are still in use (but which are on the orphan
1319 list because they need truncation).
1320
1321 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
1322 PR_0_ORPHAN_CLEAR_INODE, and remove
1323 PR_0_ORPHAN_INODE_INUSE.
1324
1325 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
1326 a message when the journal is being recovered.
1327
Theodore Ts'ob09a4b02000-10-24 21:16:09 +00001328 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
1329 journal inode, if it is in use.
1330
Theodore Ts'oadfca562000-09-12 21:24:36 +000013312000-09-12 <tytso@valinux.com>
1332
1333 * extend.c:
1334 * flushb.c: Add include of nls-enable.h which is necessary so that
1335 they can compile correctly.
1336
Theodore Ts'occ96b2b2000-08-22 21:30:11 +000013372000-08-22 <tytso@valinux.com>
1338
Theodore Ts'o2575fb02000-08-22 21:50:04 +00001339 * unix.c (main): If we're doing a read-only check, skip the
1340 journal playback, but don't abort the e2fsck run.
1341
Theodore Ts'o99a2cc92000-08-22 21:41:52 +00001342 * super.c (release_orphan_inodes): Fix typo; should do bounds
1343 checking on next_ino instead of ino.
1344
1345 * jfs_compat.h (J_ASSERT):
1346 * journal.c (e2fsck_run_ext3_journal):
1347 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
1348
Theodore Ts'o243dc312000-08-22 21:37:47 +00001349 * unix.c: Use fatal_error() instead of exit() whenever possible.
1350 Also fix the fsck exit codes so that we use FSCK_USAGE
1351 when it is appropriate. Rename global_signal_ctx to
1352 e2fsck_global_ctx and let it be exported globally.
1353
Theodore Ts'occ96b2b2000-08-22 21:30:11 +00001354 * util.c (fatal_error): Try to flush the I/O manager before
1355 forcing an exit.
1356
Theodore Ts'oecf1b772000-08-20 22:06:31 +000013572000-08-20 <tytso@valinux.com>
1358
1359 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
1360 e2fsck_check_ext3_journal to smash the journal because
1361 journal->j_transaction_sequence wasn't getting
1362 initialized.
1363
1364 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
1365 call to e2fsck_clear_recover from recover_ext3_journal to
1366 after the filesystem has been closed and reopened.
1367 Otherwise, the superblock in the filesystem handle will
1368 probably be stale, and will overwrite the newer version of
1369 the superblock written by the log recovery.
1370
1371 * message.c (expand_inode_expression): Add support for %Iu and %Ig
1372
1373 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
1374
1375 * super.c (release_orphan_inodes, release_inode_block,
1376 release_inode_blocks): Update the block group descriptor
1377 counts when freeing the orphan inode. Use
1378 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
1379
1380 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
1381 attempted to reopen the filesystem using the device name
1382 instead of the filesystem name.
1383
Theodore Ts'o80bfaa32000-08-18 15:08:37 +000013842000-08-18 <tytso@valinux.com>
1385
1386 * Makefile.in: Update the make dependencies
1387
1388 * problem.c, problem.h: Add the problem codes:
1389 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
1390 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
1391 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
1392 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
1393
1394 * super.c (release_inode_blocks, release_orphan_inodes,
1395 check_super_block): Add support for clearing orphaned
1396 inodes from the unmounted filesystem.
1397
1398 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
1399 check; this is now handled in check_super_block ---
1400 non-journaled filesystems can use the orphan list in the
1401 future. Also, move the the re-opening of the filesystem
1402 to e2fsck_run_ext3_journal().
1403
Theodore Ts'o3b5386d2000-08-14 14:25:19 +000014042000-07-12 Andreas Dilger <adilger@turbolinux.com>
1405
1406 * journal.c: implement loading of ext3 journal for recovery code
1407
1408 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
1409 Add journal problems.
1410
1411 * recovery.c (journal_recover): user-space ext3 journal recovery code
1412
1413 * unix.c (main) : check journal and do recovery in separate steps
1414
Theodore Ts'ob8d164c2000-08-08 03:17:04 +000014152000-08-07 <tytso@snap.thunk.org>
1416
1417 * unix.c (calc_percent): Make sure that we don't take a floating
1418 exception if the max value is zero. (should normally
1419 never happen, but...)
1420
Theodore Ts'of9e67062000-07-13 23:25:54 +000014212000-07-13 <tytso@valinux.com>
1422
1423 * Release of E2fsprogs 1.19
1424
Theodore Ts'o17390c02000-07-07 04:13:21 +000014252000-07-06 Theodore Ts'o <tytso@valinux.com>
1426
1427 * unix.c (check_if_skip): Modify algorithm for checking
1428 s_max_mnt_count to match with the kernel. (If
1429 s_max_mnt_count is negative, ignore the mnt_count check.)
1430
1431 * unix.c (e2fsck_update_progress): Adjust the width of the
1432 progress bar dynamically, based on the filesystem name
1433 that we need to display.
1434
1435 * unix.c (main): If the ext3 needs_recovery flag is set, call
1436 e2fsck_run_ext3_journal() and then restart the e2fsck run.
1437
1438 * journal.c (e2fsck_run_ext3_journal): New file which contains
1439 logic to recover the ext3 journal. This version relies on
1440 the kernel being able to mount the filesystem in order to
1441 run the journal.
1442
Theodore Ts'o92269042000-07-05 18:25:59 +000014432000-07-05 Theodore Ts'o <tytso@valinux.com>
1444
1445 * unix.c (e2fsck_update_progress): Only save and check the last
1446 percentage after multiplying it by 10, nor 1000, since we
1447 only need to save values to a tenth of a percent (and the
1448 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +00001449 Also, re-arrange the logic so that we do the time
1450 check only after doing the percentage check, and we
1451 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +00001452
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +000014532000-07-04 Theodore Ts'o <tytso@valinux.com>
1454
1455 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
1456 field is set; if so, clear it, so that ext3 mounting code
1457 won't get confused by the fact that we've cleared out the
1458 orphaned inodes.
1459
Theodore Ts'obbd47d72000-06-10 19:21:33 +000014602000-06-10 Theodore Ts'o <tytso@valinux.com>
1461
1462 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
1463 checking for a "should never happen case".
1464
1465 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
1466 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
1467
Theodore Ts'od647a1e2000-05-27 14:40:09 +000014682000-05-27 Theodore Ts'o <tytso@valinux.com>
1469
1470 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
1471 (cw@foof.org) which checks to see if special devices have
1472 a non-zero size, and deals with it.
1473
1474 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
1475
Theodore Ts'o1d279212000-05-19 02:38:14 +000014762000-05-18 Theodore Ts'o <tytso@valinux.com>
1477
1478 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
1479 well.
1480
Theodore Ts'o4ea0a112000-05-08 13:33:17 +000014812000-05-08 Theodore Ts'o <tytso@valinux.com>
1482
1483 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
1484 code.
1485
1486 * super.c (check_super_block): If the OS type in the superblock is
1487 the Hurd, check to see if the filetype feature is set, and
1488 offer to clear it if so. This needs to be done since the
1489 Hurd doesn't properly support the filetype feature.
1490 (And since the hurd allows the transmogrification of files
1491 to special files and vice versa --- for no good reason
1492 that I can understand --- it can't support the filetype
1493 feature for the forseeable future, either.)
1494
Theodore Ts'o373b8332000-04-03 16:22:35 +000014952000-04-03 Theodore Ts'o <tytso@valinux.com>
1496
1497 * unix.c: For platforms that don't define optarg.h, manually
1498 define optarg and optind.
1499
Theodore Ts'o01fbc702000-04-03 13:57:21 +000015002000-03-20 Theodore Ts'o <tytso@valinux.com>
1501
1502 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
1503 Check for the append-only as well as the immutable flag.
1504
1505 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
1506 append-only flag. Fix comment for compression flag.
1507
Theodore Ts'o06012322000-02-12 20:12:43 +000015082000-02-12 <tytso@snap.thunk.org>
1509
1510 * unix.c (e2fsck_update_progress): Limit the number of updates to
1511 the progress bars to 8 times a second. This allows a 9600
1512 baud console link to keep up.
1513
Theodore Ts'o19178752000-02-11 15:55:07 +000015142000-02-11 <tytso@snap.thunk.org>
1515
1516 * unix.c (main): If compression is enabled on the filesystem,
1517 print a warning message (for now).
1518
1519 * message.c: Add new compression shortcut: @c == compress
1520
1521 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
1522
1523 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
1524 set, check to see if the filesystem supports compression.
1525 If it does pass this information down to process_block()
1526 so it can treat the compressed block flag words
1527 correctly. If not, offer to clear the flag, since it
1528 shouldn't be set.
1529 (process_block): If an inode has the compressed inode flag
1530 set, allow EXT2FS_COMPRESSED_BLKADDR.
1531
1532 * pass1b.c (process_pass1b_block, delete_file_block,
1533 clone_file_block):
1534 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
1535 see if the block can be skipped.
1536
Theodore Ts'o28ffafb2000-02-08 19:14:02 +000015372000-02-08 <tytso@snap.thunk.org>
1538
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +00001539 * util.c: Make resource tracking message more concise.
1540
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +00001541 * e2fsck.h:
1542 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
1543 ctx->block_illegal_map, since it's not needed by pass1,
1544 and pass1b has been modified to calculate it manually if
1545 needed. This reduces the memory footprint needed by e2fsck.
1546
1547 * pass1b.c (check_if_fs_block): New static function which returns
1548 whether or not a block overlaps with filesystem metadata.
1549 This replaces consulting the block_illegal_map bitmap.
1550
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00001551 * Makefile.in: Call sync after finishing building all in this
1552 directory.
1553
1554 * unix.c (PRS): sync the filesystem before trying to use
1555 BLKFLSBUF, to minimize the chance of causing dirty blocks
1556 to get dropped.
1557
1558 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
1559 a Linux/i386 system.
1560
1561 * pass3.c (check_directory): Only do the loop detection algorithm
1562 if we've searched over 2048 parent directories and haven't
1563 found the end yet. This means that in the common case, we
1564 don't allocate or clear the inode_loop_detection bitmap,
1565 which for large systems, merely clearing the bitmap for
1566 each directory was turning out to be quite expensive.
1567 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
1568 identifying this problem.
1569
Theodore Ts'o0c4a0722000-02-07 03:11:03 +000015702000-02-06 Theodore Ts'o <tytso@valinux.com>
1571
1572 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
1573 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
1574 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
1575 unix.c, util.c: Add Internationalization support as
1576 suggested by Marco d'Itri <md@linux.it>.
1577
Theodore Ts'o80e808f2000-02-02 16:19:59 +000015782000-02-02 Theodore Ts'o <tytso@valinux.com>
1579
1580 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
1581 linux/fs.h
1582
Theodore Ts'o894edb22000-01-18 21:27:12 +000015832000-01-18 Theodore Ts'o <tytso@valinux.com>
1584
1585 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
1586 we need a separate DEPLIBUUID that can be used in
1587 Makefile's dependency rules.
1588
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +000015891999-11-23 <tytso@valinux.com>
1590
1591 * e2fsck.8.in: Update language about where to find a backup
1592 superblock.
1593
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +000015941999-11-19 <tytso@valinux.com>
1595
Theodore Ts'o86a63e91999-11-23 13:52:48 +00001596 * pass1.c (process_inodes): Add shortcut handling; if
1597 process_inodes_count is zero, return right away, to avoid
1598 calling qsort with a non-positive count.
1599
Theodore Ts'oec8d2c31999-11-19 18:52:36 +00001600 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
1601 to print Delete as ^?
1602
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00001603 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
1604 the source directory.
1605
Theodore Ts'oa846d2f1999-11-10 15:50:24 +000016061999-11-10 <tytso@valinux.com>
1607
Theodore Ts'ocd086361999-11-10 16:00:39 +00001608 * Release of E2fsprogs 1.18
1609
16101999-11-10 <tytso@valinux.com>
1611
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00001612 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
1613 means the answer is assumed to be no in preen mode. This
1614 is now used in the PR_1_SET_IMMUTABLE code, so that in
1615 preen mode we ignore these inodes and just print a warning
1616 message.
1617
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +000016181999-11-09 <tytso@valinux.com>
1619
1620 * pass1.c (e2fsck_pass1): If the filesystem does not support
1621 imagic inodes, if an inode has the imagic flag set, offer
1622 to clear the imagic flag. If a valid device/fifo/socket
1623 has the immutable flag set, call the new helper function
1624 check_immutable() to offerto clear the immutable flag.
1625
1626 * pass2.c (check_filetype): Use the new ext2_file_type() helper
1627 function instead of calculating the file_type information
1628 manually.
1629
1630 * pass3.c (e2fsck_reconnect_file): When adding a link to
1631 lost+found, calculate the filetype information so that
1632 ext2fs_link() can use the information if applicable.
1633 (get_lost_and_found): Create the /lost+found directory
1634 with the correct filetype information if applicable.
1635
1636 * util.c (ext2_file_type), e2fsck.h: New function which returns
1637 the directory entry file type information given the
1638 inode's mode bits.
1639
1640 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
1641 and PR_1_SET_IMMUTABLE.
1642
Theodore Ts'o7142db01999-11-08 18:46:54 +000016431999-11-07 <tytso@valinux.com>
1644
1645 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
1646 to prevent it from getting freed twice.
1647
16481999-11-06 <tytso@valinux.com>
1649
1650 * unix.c (main): Close the filesystem before freeing the context,
1651 so that in the event of a free()-related segmentation
1652 violation, the filesystem is properly closed and written
1653 out.
1654
16551999-10-27 <tytso@valinux.com>
1656
1657 * e2fsck.c (e2fsck_reset_context): When freeing
1658 ctx->inode_reg_map, we weren't zero'ing
1659 ctx->inode_reg_map, which could cause a segfault later on
1660 in the e2fsck run.
1661
16621999-10-26 <tytso@valinux.com>
1663
1664 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
1665 matches the standard convention).
1666
Theodore Ts'of68aa411999-10-26 14:20:22 +000016671999-10-26 <tytso@valinux.com>
1668
Theodore Ts'o28e11941999-10-26 18:17:20 +00001669 * Release of E2fsprogs 1.17
1670
16711999-10-26 <tytso@valinux.com>
1672
Theodore Ts'of68aa411999-10-26 14:20:22 +00001673 * message.c (safe_print): Make safe_print take an char instead of
1674 an unsigned char to fix gcc warnings.
1675
Theodore Ts'oc40db6d1999-10-25 21:03:34 +000016761999-10-25 <tytso@valinux.com>
1677
Theodore Ts'oe6597041999-10-26 02:30:16 +00001678 * util.c: For NT portability, don't redefine getchar(), since
1679 stdio defines that. Instead we introduce a new
1680 abstract macro read_a_char() which is #defined to the
1681 right function as necessary.
1682
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00001683 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
1684
1685 * pass2.c (check_dir_block): Require that the length of the
1686 directory entry be at least 12 bytes. Check to see if the
1687 filename is zero-length, and flag that as an error.
1688
Theodore Ts'o7847c1d1999-10-22 15:11:42 +000016891999-10-22 <tytso@valinux.com>
1690
Theodore Ts'o614fdfd1999-10-23 03:19:51 +00001691 * Release of E2fsprogs 1.16
1692
16931999-10-22 <tytso@valinux.com>
1694
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00001695 * pass2.c (check_filetype): If the filetype filesystem feature is
1696 not set, and a directory entry has a dirent feature, offer
1697 to clear it (since 2.0 kernels will do complain will
1698 interpret it as a very large name length field).
1699
1700 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
1701
Theodore Ts'oaa4115a1999-10-21 19:33:18 +000017021999-10-21 <tytso@valinux.com>
1703
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +00001704 * e2fsck.8.in: Update man page to use a more standard format (bold
1705 option flags and italicized variables), as suggested by
1706 Andreas Dilger (adilger@enel.ucalgary.ca)
1707
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00001708 * pass4.c (e2fsck_pass4): If an inode is set in the
1709 inode_imagic_map bitmap, don't check to see if it is
1710 disconnected from the inode tree (because it almost
1711 certainly will be). Free inode_imagic_map at the end of
1712 pass 4.
1713
1714 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
1715 feature is set, check the directory entry's filetype
1716 information field, and fix/set it if necessary.
1717 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
1718 of pass 2.
1719
1720 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
1721 information for inode_reg_map and inode_imagic_map, which
1722 indicates which inodes are regular files and AFS inodes,
1723 respectively.
1724 Since only the master superblock is written during a
1725 restart, force that superblock to be used after a restart;
1726 otherwise changes to the block group descriptors end up
1727 getting ignored.
1728
1729 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
1730 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
1731 which supresses the problem message if e2fsck is run with
1732 the -n option.
1733
1734 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
1735 new problem codes.
1736
1737 * message.c (expand_dirent_expression): Add support for %dt which
1738 prints the dirent type information.
1739
1740 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
1741 and inode_imagic_map).
1742
1743 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
1744 to the context structure.
1745
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +000017461999-09-24 <tytso@valinux.com>
1747
1748 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
1749 e2fsprogs easier to port to non-Unix platforms.
1750
17511999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00001752
1753 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
1754 internal and external inode counts in sync when we
1755 decremented an inode whose link count was already zero.
1756 Now we skip incrementing or decrementing both link counts
1757 if we would cause an overflow condition.
1758 (expand_dir, expand_dir_proc): Change where we update the
1759 inode block count and size files so that the block count
1760 field is updated correctly when we create an indirect block.
1761
Theodore Ts'o78cf0541999-10-20 18:29:18 +000017621999-08-05 <tytso@valinux.com>
1763
1764 * super.c (check_super_block): Check to see whether the
1765 inodes_per_group value in the superblock is insanely too
1766 high.
1767
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +000017681999-08-02 <tytso@valinux.com>
1769
1770 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
1771 the block also shares data with the fs metadata when
1772 the count drops to 1, since the block should still be
1773 cloned, as fs metadata isn't included in the count.
1774
17751999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +00001776
1777 * Release of E2fsprogs 1.15
1778
Theodore Ts'ob55199e1999-07-19 15:37:46 +000017791999-07-19 <tytso@valinux.com>
1780
1781 * unix.c (usage): Add minimalist emergency help to the usage
1782 message.
1783
Theodore Ts'o5596def1999-07-19 15:27:37 +000017841999-07-18 <tytso@valinux.com>
1785
1786 * unix.c: Add support for calculating a progress bar if the -C0
1787 option is given. The function e2fsck_clear_progbar()
1788 clears the progress bar and must be called before any
1789 message is issued. SIGUSR1 will enable the progress bar,
1790 and SIGUSR2 will disable the progress bar. This is used
1791 by fsck to handle parallel filesystem checks. Also, set
1792 the device_name from the filesystem label if it is
1793 available.
1794
1795 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
1796 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
1797 structure which contains the last tenth of a percent
1798 printed for the user.
1799
1800 * message.c (print_e2fsck_message): Add call to
1801 e2fsck_clear_progbar().
1802
1803 * pass1.c (e2fsck_pass1):
1804 * pass2.c (e2fsck_pass2):
1805 * pass3.c (e2fsck_pass3):
1806 * pass4.c (e2fsck_pass4):
1807 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
1808 printing the resource tracking information.
1809
1810 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
1811 an error in the bitmaps, suppress printing the progress
1812 bar using the suppression flag for the remainder of the
1813 check, in order to clean up the display.
1814
Theodore Ts'o74033351999-07-01 03:00:47 +000018151999-06-30 <tytso@valinux.com>
1816
1817 * unix.c (check_mount): Clean up the abort message displayed when
1818 the filesystem is mounted and either stdout or stdin isn't
1819 a tty.
1820
18211999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +00001822
1823 * e2fsck.h:
1824 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
1825 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
1826 pass1_* be private static functions, and create new
1827 function e2fsck_use_inode_shortcuts which sets and clears
1828 the inode shortcut functions in the fs structure.
1829
1830 * e2fsck.h:
1831 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
1832 exported function.
1833
1834 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
1835 if a disconnected inode has any problems before
1836 connecting it to /lost+found. Bug and suggested fix by
1837 Pavel Machek <pavel@bug.ucw.cz>
1838
18391999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +00001840
1841 * unix.c (main): Add missing space in the disk write-protected
1842 message.
1843
Theodore Ts'od4b0ce01999-06-18 01:09:29 +000018441999-05-22 <tytso@rsts-11.mit.edu>
1845
1846 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
1847 code.
1848
1849 * super.c (check_super_block): Add check to make sure the total
1850 number of inodes is sane, since this can be calculated
1851 from the number of groups times the number of inodes per
1852 group. Offer to correct it if it is incorrect.
1853
Theodore Ts'oe79d1b21999-06-18 01:06:59 +000018541999-03-19 <tytso@rsts-11.mit.edu>
1855
1856 * pass5.c (check_block_end): Fix fencepost condition where when
1857 clearing the block padding we were missing the last position
1858 in the bitmap.
1859
Theodore Ts'o75d83be1999-05-18 03:16:36 +000018601999-05-17 <tytso@rsts-11.mit.edu>
1861
1862 * unix.c (reserve_stdio_fds): Add safety check in case
1863 reserve_stdio_fds couldn't open /dev/null.
1864
Theodore Ts'o4a9f5931999-03-16 19:32:52 +000018651999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
1866
1867 * util.c (print_resource_track): Use mallinfo if present to get
1868 more accurate malloc statistics.
1869
1870 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +00001871 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00001872
1873 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
1874
18751999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1876
1877 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
1878 that the block group number is printed. Add new prompt,
1879 PROMPT_UNLINK.
1880
18811999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1882
1883 * Release of E2fsprogs 1.14
1884
Theodore Ts'o9e51eca1999-01-09 16:32:31 +000018851999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1886
1887 * message.c (safe_print): New function which prints strings,
1888 converting non-printable characters using the '^' and
1889 M-notation. This function is now used to print directory
1890 name entries and pathnames.
1891
Theodore Ts'o73f17cf1999-01-04 07:35:45 +00001892Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
1893
1894 * unix.c (main): Reset the context before calling ext2fs_close(),
1895 to avoid referencing already freed memory.
1896
Theodore Ts'o556ad131998-12-19 08:10:58 +000018971998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
1898
1899 * Release of E2fsprogs 1.13
1900
Theodore Ts'o5a679c81998-12-03 16:40:38 +000019011998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
1902
1903 * Makefile.in: Updated dependencies.
1904
19051998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
1906
1907 * pass3.c (get_lost_and_found): If the filesystem is not opened
1908 read-only, then force /lost+found to be created if it is
1909 not present.
1910
1911 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
1912 operation.
1913
Theodore Ts'o1dde43f1998-11-14 04:18:28 +000019141998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1915
1916 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
1917 since e2fsck_free_context may reference data in ctx->fs.
1918
1919 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
1920 before checking ctx->fs->dblist.
1921
19221998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1923
1924 * pass1.c (e2fsck_pass1): Use the device check subroutine on
1925 FIFO's and Socket's, so that we catch bogus immutable inodes.
1926
1927 * pass2.c (process_bad_inode): Process bad socket and fifo's.
1928
1929 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
1930 PR_2_BAD_SOCKET.
1931
Theodore Ts'o7f813ba1998-09-03 01:26:03 +000019321998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
1933
1934 * problem.c: Add PR_3_NO_DIRINFO error code.
1935
1936 * super.c (check_super_value): Rename min and max to min_val and
1937 max_val to avoid possible cpp macro conflicts.
1938
1939 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
1940 possible cpp macro conflicts.
1941
1942 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
1943 cpp macro conflicts.
1944 (check_directory): Fix logic to avoid possible core dump
1945 in the case of ext2fs_get_dir_info returning NULL. (By
1946 the time we get here, it should never happen, but...).
1947 Also simply/streamline the control flow of the function.
1948
Theodore Ts'o24fc5031998-08-26 15:23:31 +000019491998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
1950
1951 * unix.c (check_if_skip): Move the "not cleanly mounted" check
1952 ahead of the maximal mount and too long since checked tests.
1953 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
1954 open, so that we don't open the filesystem using the same
1955 file descriptor as stdout or stderr.
1956
Theodore Ts'of75c28d1998-08-01 04:18:06 +000019571998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
1958
1959 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
1960 get to 100%.
1961
1962 * pass3.c (e2fsck_pass3): Change progress accounting to be
1963 consistent with the other e2fsck passes.
1964
1965 * e2fsck.c (e2fsck_run): At the end of each pass, call the
1966 progress function with the pass number set to zero.
1967
1968 * unix.c (e2fsck_update_progress): If the pass number is zero,
1969 ignore the call, since that indicates that we just want to
1970 deallocate any progress structures.
1971
Theodore Ts'o8144d671998-07-09 05:33:18 +000019721998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1973
Theodore Ts'o4a5fa191998-07-09 05:42:45 +00001974 * Release of E2fsprogs 1.12
1975
19761998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1977
Theodore Ts'o8144d671998-07-09 05:33:18 +00001978 * unix.c (main): Fix typo in checking the incompat feature set; it
1979 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
1980
Theodore Ts'o1fad9041998-07-07 05:44:43 +000019811998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
1982
1983 * badblocks.c (test_disk): Don't clear the existing bad blocks
1984 list when using e2fsck -c, since it may cause blocks with
1985 marginal errors to be dropped from the bad blocks list.
1986
Theodore Ts'o874b4d21998-07-06 14:33:12 +00001987Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
1988
1989 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
1990 compatibility with older kernels.
1991
Theodore Ts'o818180c1998-06-27 05:11:14 +000019921998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
1993
1994 * unix.c (e2fsck_update_progress): Remove unused variables.
1995
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +000019961998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
1997
1998 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
1999 collision with LFS API.
2000
2001 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
2002 properly initialized.
2003 (e2fsck_pass1): Don't allow the the boot loader inode to
2004 be a directory (clear the inode mode field if so).
2005
Theodore Ts'oefac9a11998-05-07 05:02:00 +000020061998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
2007
2008 * unix.c (PRS): Added new option -C, which causes e2fsck to print
2009 progress updates so that callers can keep track of the
2010 completion progress of e2fsck. Designed for use by
2011 progress, except for -C 0, which prints a spinning report
2012 which may be useful for some users.
2013
2014 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
2015 scheme (useful for larger filesystems).
2016
2017 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
2018 progress reporting functions.
2019
Theodore Ts'o4c77fe51998-04-30 17:35:59 +000020201998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2021
2022 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
2023 appropriate return type for comparison functions for qsort.
2024
2025 * e2fsck.h: Add #ifdef protection for unistd.h
2026
2027 * super.c: Remove header files already included by e2fsck.h
2028
Theodore Ts'o76f875d1998-04-27 01:41:13 +000020291998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
2030
2031 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
2032 size of the memory to be resized to ext2fs_resize_mem().
2033
Theodore Ts'o7e44f241998-04-01 03:16:29 +000020341998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
2035
2036 * Makefile.in: Change to use new installation directory variables
2037 convention. Fix uninstall rules to take $(DESTDIR) into
2038 account. Remove cat8dir from the installdirs target,
2039 since modern man package don't necessarily put the cat
2040 directory in /usr/man/cat?.
2041
Theodore Ts'o17dba281998-03-30 01:16:26 +000020421998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
2043
2044 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
2045 extern in e2fsck.h to prevent -Wall warnings.
2046
2047 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
2048
20491998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2050
2051 * super.c (check_super_block): Fix broken superblock sanity check
2052 when calculating blocks_per_group if s_log_frag_size !=
2053 s_log_block_size. Since we don't support fragments, this
2054 isn't a bug deal, but it's good to get it fixed.
2055
Theodore Ts'o246501c1998-03-24 16:22:38 +000020561998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
2057
2058 * unix.c: Fix bug in check of feature set, to make sure we can
2059 really fix this filesystem.
2060
2061 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
2062 num field be a 64 bit type. Add the problem code
2063 PR_1_FEATURE_LARGE_FILES
2064
2065 * problem.c: Add table entry for the problem code
2066 PR_1_FEATURE_LARGE_FILES.
2067
2068 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
2069 a problem for directory inodes. (Since it is also
2070 i_size_high now.) If there are no large_files, then
2071 clear the LARGE_FLAG feature flag. If there are
2072 large_files, but the LARGE_FLAG feature flag is not set,
2073 complain and offer to fix it.
2074 (check_blocks): Add support to deal with non-directory
2075 inodes that have i_size_high set (i.e., large_files).
2076 Don't give an error if a directory has preallocated
2077 blocks, to support the DIR_PREALLOC feature.
2078 (process_block, process_bad_block): The blockcnt variable
2079 is a type of blkcnt_t, for conversion to the new
2080 block_iterate2.
2081
2082 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
2083 a problem for directory inodes. (Since it is also
2084 i_size_high now.)
2085
2086 * message.c (expand_inode_expression): Print a 64-bits of the
2087 inode size for non-directory inodes. (Directory inodes
2088 can only use a 32-bit directory acl size, since
2089 i_size_high is shared with i_dir_acl.) Add sanity check
2090 so that trying to print out the directory acl on a
2091 non-directory inode will print zero.
2092 (expand_percent_expression): %B and %N, which print
2093 pctx->blkcount and pctx->num, can now be 64 bit
2094 variables. Print them using the "%lld" format if
2095 EXT2_NO_64_TYPE is not defined.
2096
2097 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
2098
2099 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
2100 field.
2101
Theodore Ts'ob6f79831998-03-09 13:10:37 +00002102Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2103
2104 * pass3.c (fix_dotdot_proc):
2105 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
2106 * message.c (expand_dirent_expression): Mask off the high eight
2107 bits of the directory entry's name_len field, so that it
2108 can be used for other purposes.
2109
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +00002110Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2111
2112 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
2113 include EXT2_FLAG_RESTART anymore, we need to adjust this
2114 routine so that it *does* return in the case of it seeing
2115 EXT2_FLAG_RESTART.
2116
2117 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
2118 done callback function, which may set context abort
2119 flags. So we need to test the context abort flags after
2120 we call ext2_get_next_inode().
2121 (process_inodes): If we abort due out of process_inodes,
2122 do a clean exit by breaking out of the for loop instead of
2123 just returning.
2124
2125 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
2126 considered a SIGNAL mask (i.e., requiring an immediate
2127 abort of processing to restart). FLAG_RESTART just means
2128 that we want to restart once pass 1 is complete.
2129
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +00002130Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2131
2132 * Change the progress function to return an integer; if returns 1,
2133 then the progress function is expected to have set the
2134 e2fsck context flag signalling a user abort, and the
2135 caller should also initiate a user abort.
2136
Theodore Ts'o63c49691998-02-20 05:24:59 +00002137Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2138
2139 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
2140 end_problem_latch() unless there was actually a problem
2141 latched. Simplifies semantics of the latch processing.
2142
Theodore Ts'o43139321998-02-16 22:34:46 +00002143Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2144
2145 * e2fsck.h: Add new field, priv_data to the e2fsck context
2146 structure. It should be used by callers of the e2fsck
2147 functions only, and not by anything in e2fsck itself.
2148
2149Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2150
2151 * super.c: Instead of call ext2fs_get_device_size(), define and call
2152 e2fsck_get_device_size(). (This function may be stubbed
2153 out in special versions of e2fsck.)
2154
2155 * pass3.c, pass4.c: Remove extra calls to the progress function
2156 that weren't needed.
2157
2158 * mke2fs.8.in: Update man page to note that the format of the bad
2159 block file is the same as the one generated by badblocks.
2160
Theodore Ts'o54be2cc1998-02-01 12:58:48 +00002161Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2162
2163 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
2164
2165 * e2fsck.h: Include <time.h> since it is needed
2166
2167 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
2168 processing.
2169
Theodore Ts'o24dd4021998-02-01 00:16:40 +00002170Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2171
2172 * unix.c (main): In the case where the filesystem revision is too
2173 high, print the message about the superblock possibly
2174 being corrupt.
2175
2176 * e2fsck.8.in: Add expanded comments about how the -b option
2177 works.
2178
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +00002179Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2180
2181 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
2182 the ext2-specific header files are in a flat directory.
2183
2184 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
2185 super.c, swapfs.c, unix.c: Explicitly cast all assignments
2186 from void * to be compatible with C++.
2187
2188Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2189
2190 * unix.c (sync_disk): Remove sync_disk and calls to that function,
2191 since ext2fs_close() now takes care of this.
2192
2193Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2194
2195 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
2196 ehandler.c, unix.c: Change use of private to be priv_data,
2197 to avoid C++ reserved name clash.
2198
Theodore Ts'o5be8dc21997-12-01 18:24:10 +00002199Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2200
2201 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
2202 of e2fsck_get_num_dirs, which has been removed.
2203
2204Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2205
2206 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
2207 to compile and install flushb.
2208
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +00002209Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2210
2211 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
2212 to make sure the extra i_blocks in a device are cleared if
2213 the immutable flag is set.
2214
2215 * util.c (print_resource_track): Fix typo which caused the
2216 time/resource tracking to print "Pass 1 :" instead of
2217 "Pass 1: ".
2218
Theodore Ts'ob8647fa1997-11-20 21:52:43 +00002219Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2220
2221 * pass3.c (expand_directory): Fix bug which could cause core dump
2222 when expanding the directory, and the bitmaps hadn't yet
2223 been read in. Also, only use ext2fs_write_dir_block when
2224 writing a directory block, not when writing out a fresh
2225 indirect block.
2226
Theodore Ts'o8039c481997-11-19 21:39:13 +00002227Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2228
2229 * pass1.c (process_bad_block): Fix bug where first_block wasn't
2230 getting incremented, which caused user to get a
2231 "Programming error?" warning if there was a bad block in a
2232 non-primary superblock/group_descriptor. Also fixed
2233 another bug so that ext2fs_bg_has_super() is consulted, to
2234 avoid problems when using a filesystem with the
2235 sparse_groups option set and there are bad blocks at the
2236 beginning of a group which doesn't have a superblock.
2237
Theodore Ts'of8188ff1997-11-14 05:23:04 +00002238Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2239
2240 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
2241 progress indicator function.
2242
2243 * pass1.c (scan_callback): Add call to the progress feedback
2244 function (if it exists).
2245
2246Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2247
2248 * super.c (check_super_block): Skip the device size check if the
2249 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
2250
2251 * iscan.c (main): Don't use fatal_error() anymore.
2252
2253 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
2254 calling fatal_error(0).
2255
2256 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
2257 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
2258
2259 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
2260
2261 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
2262
2263 * problemP.h: New file which separates out the private fix_problem
2264 data structures.
2265
2266 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
2267 swapfs.c util.c: allocate_memory() now takes a e2fsck
2268 context as its first argument, and rename it to be
2269 e2fsck_allocate_memory().
2270
Theodore Ts'o08b21301997-11-03 19:42:40 +00002271Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2272
Theodore Ts'o68227541997-11-04 04:25:22 +00002273 * unix.c (main): Add a special case check for the error code EROFS
2274 and display an appropriate error message for this case.
2275
Theodore Ts'o08b21301997-11-03 19:42:40 +00002276 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
2277 to take the e2fsck context as their first argument.
2278 Change dir_info.c routines to take an e2fsck_context,
2279 renamed them to start with e2fsck_ to avoid namespace
2280 issues, and changed them to store the directory
2281 information inside the e2fsck context.
2282 Added e2fsck_run() which calls all of the e2fsck passes in
2283 the correct order, and which handles the return of abort
2284 codes. Added abort processing, both via setjmp/longjmp
2285 and via flags in the e2fsck context. Use a flag in the
2286 e2fsck context instead of the restart_e2fsck global
2287 variable. Change uses of free and malloc to
2288 ext2fs_free_mem and ext2fs_get_mem.
2289
Theodore Ts'o291c9041997-10-31 06:17:08 +00002290Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2291
2292 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
2293 consistency.
2294
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00002295Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2296
2297 * pass3.c (get_lost_and_found): Check error return of
2298 EXT2_FILE_NOT_FOUND instead of ENOTDIR
2299
2300 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
2301 instead of ENOTDIR
2302
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002303Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2304
Theodore Ts'o519149f1997-10-25 03:49:49 +00002305 * unix.c (PRS): Make the variable which getopt returns into be
2306 an int, so that it won't lose on platforms where char is
2307 unsigned.
2308
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002309 * pass1b.c (clone_file): Fix bug in error reporting in the case
2310 where cs.errcode is non-zero.
2311
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002312Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2313
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00002314 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
2315 RESOURCE_TRACK around code which uses init_resource_track
2316 and print_resource_track. (Not all systems have timeval)
2317
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002318 * super.c: Remove excess #includes which are not necessary.
2319
2320 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
2321
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00002322Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2323
2324 * pass*.c, super.c: Massive changes to avoid using printf and
2325 com_err routines. All diagnostic messages are now routed
2326 through the fix_problem interface.
2327
2328Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2329
2330 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
2331 entries.
2332
2333 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
2334 PR_2_DUP_DOT_DOT.
2335
2336Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2337
2338 * problem.c: Added new problem codes for some of the
2339 superblock corruption checks, and for the pass header
2340 messages. ("Pass 1: xxxxx")
2341
2342 * util.c (print_resource_track): Now takes a description
2343 argument.
2344
2345Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2346
2347 * super.c, unix.c, e2fsck.c: New files to separate out the
2348 operating-specific operations out from e2fsck.c.
2349 e2fsck.c now contains the global e2fsck context management
2350 routines, and super.c contains the "pass 0" initial
2351 validation of the superblock and global block group
2352 descriptors.
2353
2354 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
2355 (nearly) all global variables and moved them to the e2fsck
2356 context structure.
2357
2358 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
2359 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
2360 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
2361
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00002362Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2363
2364 * message.c: Add compression for the word "Illegal"
2365
2366 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
2367 PR_2_BAD_BLOCK_DEV
2368
2369Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2370
2371 * pass1.c (pass1, check_device_inode), pass2.c
2372 (process_bad_inode): Use a more stringent test for a valid
2373 device.
2374
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00002375Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2376
2377 * e2fsck.c (check_mount): Add stronger warning message about the
2378 perils of running e2fsck on a mounted filesystem.
2379
Theodore Ts'o024996c1997-06-17 05:38:35 +00002380Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2381
2382 * Release of E2fsprogs 1.11
2383
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00002384Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2385
2386 * pass1.c (mark_table_blocks): Mark the superblock and group
2387 descriptor blocks first, so that any conflicts between
2388 these and the bitmap or inode table blocks is noticed.
2389
2390 * problem.c: Fix message printed out when a block or inode bitmap
2391 conflicts with other fs data, has the correct group number
2392 in it.
2393
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00002394Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2395
2396 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
2397
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002398Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2399
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00002400 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
2401 Hawes (whawes@star.net).
2402
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002403 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
2404 bad blocks command so that all of the filesystem gets
2405 tested in the case where the blocksize 2048 or 4096.
2406
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00002407Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
2408
2409 * Release of E2fsprogs version 1.10
2410
2411Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2412
2413 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
2414 where ext2fs_get_next_inode returns the
2415 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
2416
2417Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2418
2419 * Release of E2fsprogs version 1.09
2420
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00002421Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2422
2423 * Release of E2fsprogs version 1.08
2424
Theodore Ts'o521e3681997-04-29 17:48:10 +00002425Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2426
2427 * pass1b.c (clone_file_block): If we clone a directory, we need to
2428 update the dblist entry so that we check (and correct) the
2429 right directory block.
2430
2431Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2432
2433 * pass1.c (process_block): Don't clear blocks references to
2434 filesystem metadata; let pass 1B handle this case.
2435
2436 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
2437
2438 * pass1b.c (pass1d): Deal with a block which is shared with
2439 filesystem metadata.
2440
2441 * e2fsck.h: Make block_illegal_map be a global variable
2442
2443Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2444
2445 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
2446 feature.
2447 (get_backup_sb): New function which attempts to obtain the
2448 correct backup superblock (if possible).
2449
2450Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2451
2452 * e2fsck.c (main): Check the version of the library, and warn if
2453 the library is out of date; this happens generally due to
2454 users who manually install e2fsprogs.
2455
2456 * pass1.c (pass1_get_blocks): If the passed in inode number for
2457 get_blocks isn't what we're expecting pass back
2458 EXT2_ET_CALLBACK_NOT_HANDLED.
2459
Theodore Ts'o21c84b71997-04-29 16:15:03 +00002460Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
2461
2462 * Release of E2fsprogs version 1.07
2463
2464Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2465
2466 * icount.c: New file which implements an inode count abstraction.
2467 This significantly reduces amount of memory needed to
2468 check really large filesystems.
2469
2470 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
2471 abstraction.
2472
2473Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2474
2475 * dirinfo.c (dir_info_iter): New function which allows iteration
2476 over the directories in the dir_info map.
2477
2478 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
2479 over all directories in the dir_info structure, instead of
2480 iterating all inodes looking for directories, and then
2481 looking up the directories using get_dir_info().
2482
2483Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2484
2485 * pass1.c (pass1, process_block):
2486 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
2487 manual code to manage the directory block list information.
2488
2489 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
2490 (deallocate_inode): Call the ext2 library routine
2491 ext2_inode_has_valid_blocks() instead of
2492 inode_has_valid_blocks().
2493
2494 * swapfs.c (swap_inodes): Add check so that we don't try to call
2495 swap_inode_blocks unless the inode has valid blocks.
2496 (Otherwise a long fast symlink might cause
2497 swap_inode_blocks to erroneously get called.)
2498
2499Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2500
2501 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
2502 PR_2_DOT_DOT_NULL_TERM.
2503
2504 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
2505 .. entries are null-terminated, since the 2.0 kernel
2506 requires this (for no good reason).
2507
2508Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2509
2510 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
2511 that we can recover from missing inode tables.
2512
2513 * dirinfo.c (get_dir_info): If there are no directories in the
2514 dir_info abstraction, don't core dump (because dir_info is
2515 NULL).
2516
2517 * e2fsck.c (main): Don't try using the backup superblocks if there
2518 aren't any.
2519 (check_super_block): If there are illegal inode table or
2520 bitmaps, set the filesystem as being in error.
2521
2522Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2523
2524 * pass2.c (check_dir_block): Added check to make sure that rec_len
2525 is a a multiple of 4 (so that the directory entries are
2526 4-byte aligned).
2527
2528Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2529
2530 * Makefile.in (uninstall): Uninstall all programs in the PROGS
2531 line.
2532 (PROGS): Don't build and install the extend program by
2533 default.
2534
2535
2536Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2537
2538 * pass1.c (process_inodes): Make sure the stashed_ino variable is
2539 saved and restored as well.
2540 (pass1): For fast sym links, skip the check_blocks
2541 processing step altogether.
2542
2543Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2544
2545 * problem.c, message.c: New files, to completely refurbish how
2546 filesystem problems are reported to the user. The
2547 diagnostic messages are now encoded out in an easily
2548 customizable, extensible format. The messages printed out
2549 in preen mode are all on one line, and contain the device
2550 name.
2551
2552Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2553
2554 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
2555 deleted files.
2556
2557 * pass1.c (pass1): Ignore missing inode table errors during the
2558 scan, and just skip past those inodes.
2559
2560 * pass3.c (check_root): Remove root_ino argument, and assume that
2561 the root inode must be EXT2_ROOT_INO. Move responsibility
2562 of setting the parent of the root inode in the directory
2563 inode structure to pass2().
2564
2565 * pass2.c (check_dir_block): Don't allow links to the root
2566 directory.
2567
2568 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
2569 since the inode is no longer used.
2570
2571Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2572
2573 * e2fsck.c (main): If the superblock magic number is wrong, or the
2574 block group fails a sanity check, then automatically
2575 restart trying to use the backup superblocks.
2576
2577 * pass1.c (mark_table_blocks): Make the inode tables ahead of
2578 everything else; in the case where a bitmap block overlays
2579 the inode table, the inode table should take precedence.
2580
2581 * pass2.c (maybe_clear_entry): Make the deleted/unused error
2582 message fit on one line, since the error can happen during
2583 a preen pass. (We eventually need to revamp the whole
2584 e2fsck error reporting and prompting system, but that's a
2585 job for another day.)
2586
2587Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2588
2589 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
2590 for the benefit of the inode scan functions.
2591
2592 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
2593 indicating that an inode is in a bad block, mark that
2594 inode as being used, as well as in the inode "bb" map.
2595
2596 * pass2.c (maybe_clear_entry): New function which generalizes the
2597 error cases when a directory entry needs to be cleared.
2598 (check_dir_block): If an inode is in the "bb" map, offer
2599 to clear the directory entry, since the inode is in a bad
2600 block.
2601
2602 * pass4.c (pass4): If an inode is marked as used, but is is marked
2603 in the "bb" map, don't process it as a disconnected inode.
2604
2605Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2606
2607 * Release of E2fsprogs version 1.06
2608
Theodore Ts'o5c576471997-04-29 15:29:49 +00002609Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2610
2611 * e2fsck.c (main): Print out the version number of the shared
2612 library when using the -V option.
2613
2614 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
2615 consistency's sake.
2616
2617 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
2618 out the backup superblocks when we know we have a valid
2619 filesystem.
2620
2621Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2622
2623 * util.c (preenhalt): Make it explicit on preenhalt that running
2624 e2fsck manually means without the -a or -p flag.
2625
2626Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2627
2628 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
2629 (Linux/FT actually sets the mode bits, so we have to
2630 handle it specially.)
2631
2632 * e2fsck.c (check_if_skip): Print a message if the filesystem is
2633 just dirty, so that the user knows that it's about to be
2634 checked (since this will take a while).
2635
2636Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2637
2638 * pass4.c: If a disconnected inode is zero-length, prompt to
2639 delete it instead of connecting it to lost+found.
2640
2641Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2642
2643 * Release of E2fsprogs version 1.05
2644
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00002645Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2646
2647 * pass4.c (pass4): If the user refuses to connect an unattached
2648 inode to lost+found, don't try to set i_links_count. This
2649 is bad, since if the user says yes, the inode will be
2650 marked as unused, which is not necessarily the right
2651 thing, especially since the rest of the cleanup doesn't
2652 happen here.
2653
2654 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
2655 dellocating an inode. (Not strictly necessary, but...)
2656
2657 * pass4.c (pass4): Add "bonehead" explanation to the "programming
2658 error" message.
2659
2660Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2661
2662 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
2663 byte-swap the filesystem so that it is normalized. -S
2664 will byte-swap the filesystem regardless of its current
2665 byte-order.
2666
2667 * swapfs.c: New file, which will byte-swap a filesystem.
2668
2669Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2670
2671 * pass1.c (pass1): Change handling on files with non-zero dtime
2672 and non-zero i_link_count; before we treated them as
2673 deleted file per botched ext2 0.3c kernel behavior. We
2674 now clear dtime instead.
2675
2676Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2677
2678 * e2fsck.c (main): If e2fsck sets the clean bit, even if
2679 nothing else is changed, make sure FSCK_NONDESTRUCT is
2680 set (since after all having the filesystem set to
2681 invalid is an error. :-)
2682
2683Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2684
2685 * pass1.c (process_block): Make sure that meta data doesn't get
2686 accidentally set in the dir_blocks array (which could
2687 happen in some error condtions).
2688
2689 * pass1.c (pass1):
2690 * pass2.c (process_bad_inode): Check for fragments in a
2691 OS-independent fashion.
2692
2693Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2694
2695 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
2696 cleanup for the filesystem.
2697
2698Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2699
2700 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
2701
Theodore Ts'o62c06f71997-04-29 14:34:47 +00002702Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2703
2704 * Release of E2fsprogs version 1.04
2705
2706Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2707
2708 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
2709 try "e2fsck -b 8193" before allowing e2fsck to relocate
2710 inode table blocks.
2711
2712 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
2713 depending on the option to configure. Added targets for
2714 e2fsck.static and e2fsck.shared for people who want to
2715 build a static or shared variant manually.
2716
Theodore Ts'o7f88b041997-04-26 14:48:50 +00002717Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
2718
2719 * Release of E2fsprogs version 1.03
2720
2721Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
2722
2723 * e2fsck.c (show_stats): Don't use floating point to display
2724 percentage of non-contiguous files, as different libc
2725 handle result truncation differently, and this causes the
2726 test suite to bomb out depending on which libc you are
2727 using.
2728
2729 * util.c (allocate_memory): Fix error message to omit extraneous
2730 %%s.
2731
2732Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
2733
2734 * pass4.c (pass4):
2735 * pass2.c (check_dir_block):
2736 * pass1.c (pass1): Add support for dynamic first inode revision.
2737
2738Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
2739
2740 * pass3.c (check_root): Fix spelling typo
2741
2742Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
2743
2744 * e2fsck.c (check_super_block): If the superblock fails certain
2745 internal consistency checks, exit with a fatal error after
2746 printing the "superblock is corrupt message".
2747
Theodore Ts'o74becf31997-04-26 14:37:06 +00002748Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
2749
2750 * Release of E2fsprogs version 1.02
2751
2752Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
2753
2754 * pass1.c (process_block): Check to see if a file is "fragmented".
2755 i.e., non-contiguous. Note that any file which is larger
2756 than the block group is guaranteed to be non-contiguous.
2757 We may want to use a different hueristic for deciding
2758 whether or not a file is "fragmented".
2759
2760 * e2fsck.c (show_stats): Print statistics of how many
2761 non-contiguous files are on the system.
2762
2763Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
2764
2765 * badblocks.c (read_bad_blocks_file, test_disk): Fold
2766 functionality of test_disk() (which runs badblocks) into
2767 read_bad_blocks_file(); test_disk() now calls
2768 read_bad_blocks_file() with a NULL bad_blocks_file
2769 argument.
2770
2771Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
2772
2773 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
2774 #if defined(linux). The latter won't work if we're
2775 compiling -ansi.
2776
Theodore Ts'o297f47a1997-04-26 14:25:20 +00002777Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
2778
2779 * e2fsck.c (check_mount): For Linux systems, the check to see if
2780 the root is mounted read-only has to be done for all
2781 filesystems, not just for the root filesystem, due to the
2782 way that some /etc/rc scripts are set up.
2783
Theodore Ts'o50e1e101997-04-26 13:58:21 +00002784Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
2785
2786 * Makefile.in (install): Strip programs when they are installed.
2787 (e2fsck): Build e2fsck statically.
2788
2789Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
2790
2791 * util.c (preenhalt): Preenhalt now takes an argument, which is an
2792 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
2793 flag in the superblock in cases where preenhalt is called.
2794 All calls to preenhalt() were changed to either
2795 preenhalt(fs) or preenhalt(NULL) in a few cases where the
2796 fs pointer was not available. (Most notable, for block
2797 read/write errors.)
2798
2799Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
2800
2801 * ehandler.c:
2802 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
2803
2804Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
2805
2806 * e2fsck.c (show_stats): Show statistics about how many inodes
2807 have indirect, doubly indirect, and triply indirect
2808 blocks. Allow up to 8 digits for statistics, instead of
2809 merely 6, so things look pretty for large filesystems.
2810
2811 * pass1.c (pass1): Keep statistics about indirect, doubly
2812 indirect, and triply indirect blocks.
2813
2814 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
2815 pass 1.
2816
2817Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
2818
2819 * util.c, ehandler.c: Move #include of <sys/resource.h> after
2820 #include of "e2fsck.h", since sys/resource.h may depend on
2821 sys/time.h, which is #included in e2fsck.h.
2822
2823Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
2824
2825 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
2826 function to determine if the device is mounted.
2827
2828 * e2fsck.c (main): Add better error messages if ext2fs_open()
2829 fails.
2830
2831Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
2832
2833 * pass1.c (check_blocks): If we're clearing a directory, clear
2834 pb.is_dir so we don't do the following check of making
2835 sure the directory size matches; this is pointless, since
2836 we've already cleared the inode.
2837
2838Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2839
2840 * pass1.c (bad_primary_block): New function, called by
2841 process_bad_block, which explains the facts of life to the
2842 user when a block in the primary superblock or primary
2843 group descriptors is bad.
2844
2845 * pass2.c (check_dot): Handle the case where the first directory
2846 entry is used, but not ".".
2847
2848 * pass2.c (check_dotdot): Handle the case where the second directory
2849 entry is used, but is not "..".
2850
2851Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2852
2853 * e2fsck.c (check_super_block): Get the size of the physical
2854 device and if it is smaller than the reported size of the
2855 filesystem, report an error.
2856
2857Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
2858
2859 * e2fsck.c (check_if_skip): Print the number of allocated files and
2860 blocks on clean filesystems.
2861
2862Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
2863
2864 * e2fsck.8: Updated date and version number.
2865
2866Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
2867
2868 * pass1.c (check_blocks): Check that directory size matches *exactly*
2869 the count of allocated blocks.
2870
2871Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
2872
2873 * pass1b.c (pass1d): Free the shared[] array when we're done with
2874 it to avoid a memory leak.
2875
2876 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
2877 block_dup_map.
2878
2879 * pass2.c (process_bad_inode): When clearing the inode, make sure
2880 the pathname is freed, to prevent a memory leak.
2881
2882 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
2883 when we're finished with them.
2884 (check_block_bitmaps): Free free_array when we're finished
2885 with them.
2886
2887 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
2888 linking the executable.
2889
2890 * pass2.c (process_bad_inode): Even on OS's that don't support the
2891 fragment fields, make sure the Linux equivalent fields are
2892 set to zero. If an OS wants to reuse these fields, which
2893 is probably a bad idea (although we may get desperate in
2894 the future) this code will have to be changed.
2895
2896 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
2897 on the inode field, and then blockcnt field. This is just
2898 to keep the ordering of dir_blocks the same on all
2899 platforms when there are more than on missing directory
2900 blocks, which are indicated directories with holes, which
2901 are indicated with the block number being set to zero.
2902
2903Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2904
2905 * pass1.c (check_blocks, process_block): check_blocks() modified
2906 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
2907 the inode is a directory. process_block() now checks to
2908 see if a directory has a "hole", or missing block. If so,
2909 this fact is recorded in the directory block list so that
2910 the problem can be resolved in pass #2.
2911
2912 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
2913 allocate new blocks for directories with "holes". Called
2914 out of check_dir_block if a block in the directory block
2915 list is zero.
2916
2917 * pass3.c (get_lost_and_found): Move location of free(block) to
2918 prevent possible memory leak.
2919
2920Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2921
2922 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
2923 instead of alloca() --- alloca is not portable! Check to
2924 make sure the filename is not longer than EXT2_NAME_LEN,
2925 and offer to fix it by truncating it, since it should
2926 never happen.
2927
2928 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
2929 not portable!! In any case putenv() in some systems must
2930 take a static character array or malloc()'ed memory;
2931 passing memory allocated using alloca() to putenv() is not
2932 advisable.
2933
2934 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
2935 alloca() --- alloca() is not portable!!!
2936
2937Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
2938
2939 * pass1b.c (pass1c):
2940 * pass3.c (check_root, get_lost_and_found):
2941 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
2942 to read/write the directory block.
2943
2944Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
2945
2946 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
2947 make sure VMIN and VTIME are set correct.
2948
2949Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
2950
2951 * pass1.c (mark_block_used): Change to be an inline function.
2952 Assume that the block validity checks are already done,
2953 and use the fast variant of the bitmap functions.
2954
2955Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
2956
2957 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
2958 bounds of the bitmaps in advance, and then use the fast
2959 variant of e2fs_test_{block,inode}_bitmap.
2960
2961 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
2962 the bounds checking has already been done earlier.
2963
2964Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
2965
2966 * pass1.c (pass1): Allocate and free the block_illegal_map, which
2967 is used for shortcut processing in process_block.
2968 (mark_table_blocks): Initialize block_illegal_map with the
2969 filesystem blocks.
2970 (describe_illegal_block): New helper function that
2971 describes why a block is illegal.
2972 (process_block): Use block_illegal_map as a shortcut
2973 to determine whether a block is bad. Use
2974 describe_illegal_block to print out why the block is illegal.
2975
2976Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
2977
2978 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
2979
2980 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
2981 <mntent.h> if they don't exist. (Mostly so that "make
2982 depend" works.)
2983
2984 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
2985 it exists).
2986
2987 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
2988 exist.
2989
2990Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2991
2992 * pass2.c (process_bad_inode, check_for_zero_long,
2993 check_for_zero_char): Change long to u32, and char to u8.
2994
2995Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2996
2997 * util.c (inode_has_valid_blocks):
2998 * pass2.c (process_bad_inode):
2999 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
3000 LINUX_S_IS* instead of S_IS*.
3001
3002 * e2fsck.h: Don't #include <sys/stat.h>
3003
3004 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
3005 this program is pretty much useless if BLKFLSBUF isn't
3006 supported.)
3007
3008 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
3009 used.
3010
3011Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
3012
3013 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
3014 to allocate space for file names instead of using fixed size buffers.
3015 (process_bad_inode): Only check inode frag fields if
3016 HAVE_EXT2_FRAGS is defined (by configure).
3017 * pass1.c (pass1): Only check the inode frag fields if
3018 HAVE_EXT2_FRAGS is defined (by configure).
3019
3020 * e2fsck.c (check_mount): Only check for a mounted filesystem if
3021 HAVE_MNTENT_H is defined (by configure).
3022 (PRS): Use alloca to allocate the new path string, instead of
3023 having a fixed size buffer (which was the wrong size anyway).
3024 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
3025 is defined.
3026
3027 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
3028 defined (by configure).
3029
3030 * Makefile.in: Rewritten to conform to GNU coding standards and
3031 support separate compilation directories.
3032
3033Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
3034
3035 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
3036
Theodore Ts'of3db3561997-04-26 13:34:30 +00003037Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
3038
3039 * pass1.c (unwind_pass1): Clear the file type statistics counter
3040 when pass 1 needs to be restarted from scratch.
3041
3042 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
3043 being reallocated to blocks in the next block group,
3044 instead of the current block grup.
3045
3046 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
3047 inode.i_links_count is set.
3048
3049Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
3050
3051 * pass1.c (process_block): Add checks for if the block is
3052 trepassing on a superblock or group descriptor table.
3053
3054Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
3055
3056 * main.c (corrupt_msg): Extend the message which is printed out
3057 when the superblock is corrupt, to include the suggestion
3058 of using the -b option to specify an alternate superblock.
3059
3060Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
3061
3062 * badblocks.c (read_bad_blocks_file): If we are adding or
3063 replacing bad blocks in the bad blocks inode, sanity check
3064 the bad block inode first, and clear out any illegal blocks.
3065
3066 * pass2.c (check_name): Don't bomb out if the attempt to get the
3067 pathname of the containing directory returns an error; the
3068 directory may be too badly damaged to expect that
3069 ext2fs_get_pathname will always succeed. Use "???" if the
3070 pathname can't be obtained (it's only for a printf to the
3071 user anyway).
3072
3073 The name of the containing directory and the bad filename
3074 were incorrectly interchanged in the user message. Fixed.
3075
3076 * pass2.c (check_name, check_dir_block): Use a common static
3077 string for the unknown pathname.
3078
3079Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
3080
3081 * Fixed lots of printf formats to make sure that block and inode
3082 numbers are printed as unsigned integers.
3083
3084Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
3085
3086 * pass5.c (check_block_end): Fix calculation of how the last block
3087 in the block bitmap should be calculated.
3088
3089Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
3090
3091 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
3092 be an ext2fs_inode_bitmap, and free it properly.
3093
3094 * e2fsck.h
3095 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
3096 level to the superblock.
3097
3098Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
3099
3100 * e2fsck.c (usage): Fixed bogus usage message.
3101
3102Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
3103
3104 * pass1.c (process_bad_block): Fixed bug so that blocks in the
3105 backup superblocks and group descriptors are handled gracefully.
3106