blob: 7fbc70f77da2b07a4ea7dc8b5709b6664f680b5b [file] [log] [blame]
Theodore Ts'oc6633052002-09-24 01:26:50 -040012001-09-24 Theodore Tso <tytso@mit.edu>
2
3 * Release of E2fsprogs 1.29
4
Theodore Ts'ocf3909e2002-09-06 10:14:12 -040052002-09-06 Theodore Ts'o <tytso@mit.edu>
6
7 * rehash.c (copy_dir_entries): Fix bug which caused corrupted
8 directories if there are 4 or 8 bytes left over in a
9 directory page when optimizing/reindexing a directory.
10
Theodore Ts'o87ee8dc2002-08-31 03:02:57 -0400112001-08-31 Theodore Tso <tytso@thunk.org>
12
13 * Release of E2fsprogs 1.28
14
Theodore Ts'oceecbc72002-08-31 02:35:35 -0400152002-08-31 Theodore Ts'o <tytso@mit.edu>
16
17 * ehandler.c (e2fsck_handle_read_error): If the user asks to
18 ignore the error, offer to try forcing a write of the
19 block to the disk; sometimes this will cause the drive to
20 remap the bad block.
21
Theodore Ts'oea1959f2002-08-31 02:32:41 -0400222002-08-31 Theodore Ts'o <tytso@valinux.com>
23
24 * pass2.c (e2fsck_pass2): If this is a HTREE directory, sort the
25 dblist so that the first block of all of the directories
26 is handled first so we can read the hash version
27 information.
28 (check_dir_block): Examine the root node for correctness,
29 and offer to clear it if it is not correct. Also copy the
30 hash version to the dx_dir structure, so that the proper
31 hash function can be used for other blocks in the
32 directory.
33
34 * problem.c, problem.h (PR_2_HTREE_BAD_ROOT): Add new problem code.
35
Theodore Ts'oa3da9d12002-08-21 12:52:03 -0400362002-08-21 Theodore Ts'o <tytso@mit.edu>
37
38 * problem.c: Fix PR_1_RELOC_BLOCK_ALLOCATE message to explain that
39 it is necessary to find contiguous blocks in a particular
40 block group.
41
Theodore Ts'o0684a4f2002-08-17 10:19:44 -0400422002-08-17 Theodore Ts'o <tytso@mit.edu>
43
Theodore Ts'of044b4d2002-08-17 13:32:21 -040044 * e2fsck.8.in: Add clarifying text describing how e2fsck works
45 with ext3 filesytems. (Addresses Debian bug #145044).
46
47 * pass1.c (handle_htree): Add support for EXT2_HASH_TEA
48
Theodore Ts'o0684a4f2002-08-17 10:19:44 -040049 * e2fsck.h, e2fsck.c (e2fsck_allocate_context): Add new field to
50 the e2fsck context, ext_attr_ver, which specifies the EA
51 format version.
52
53 * unix.c (usage, parse_extended_opts, PRS), e2fsck.8.in: Add new
54 option -E, which allows the users to specify extended
55 options. Added ea_ver extended option.
56
57 * pass1.c (e2fsck_pass1_check_device_inode): Add ext2_filsys
58 argument to this function, so we can account for the
59 presence of extended attribute blocks attached to device
60 inodes.
61 (e2fsck_pass1_check_symlink, e2fsck_pass1): Take into
62 account the fact that symlinks can also have extended
63 attribute blocks.
64 (check_ext_attr): Don't be flexible about the EA format
65 version. Check against the version number in
66 ctx->ext_attr_ver.
67 (check_blocks): Check all inodes, so that we account for
68 extended attribute blocks belonging to special files.
69 Clean up i_size checks.
70
71 * pass1b.c (pass1b): Check all inodes, so that we account for
72 extended attribute blocks belonging to special files.
73 (delete_file_block): Use ext2fs_alloc_block_stats() to
74 update the filesystem statistics.
75 (delete_file): Attempt to decrement the extended
76 attribute refcount, and free the EA block if the count
77 hits zero.
78 (clone_file): Fixed bugs in EA handling. Don't call
79 block_iterate on inodes that don't have a valid i_block[]
80 array. Reread the base inode since it may have been
81 changed by ext2fs_block_iterate. When updating inodes as
82 part of cloning an EA block, write out the correct inode
83 structure.
84
85 * pass2.c (deallocate_inode_block, deallocate_inode): Use standard
86 ext2fs_alloc_*_stats functions to update the filesystem
87 statistics.
88 (deallocate_inode): Attempt to decrement the extended
89 attribute refcount, and free the EA block if the count
90 hits zero.
91 (e2fsck_process_bad_inode): Add extra argument to calls
92 to e2fsck_pass1_check_device_inode ().
93
94 * pass3.c (e2fsck_get_lost_and_found): Use standard
95 ext2fs_alloc_*_stats functions to update the filesystem.
96 statistics when creating /lost+found.
97 (adjust_inode_count): Remove debugging code that can never
98 be triggered.
99
100 * pass4.c (disconnect_inode): Add explanation about why we only
101 clear inodes that have no data blocks and no EA blocks.
102 Use ext2fs_inode_alloc_stats2 function to update the
103 filesystem statistics when clearing a zero-length inode.
104
105 * problem.c, problem.h (PR_1B_ADJ_EA_REFCOUNT,
106 PR_2_ADJ_EA_REFCOUNT): Add new problem codes.
107
108 * super.c (release_inode_block), (release_orphan_inodes): Use the
109 standard ext2fs_alloc_*_stats functions to update the
110 filesystem statistics.
111 (release_inode_blocks): Attempt to decrement the extended
112 attribute refcount, and free the EA block if the count
113 hits zero.
114
Theodore Ts'o838e7732002-08-01 12:37:00 -04001152002-08-01 Theodore Ts'o <tytso@mit.edu>
116
117 * dict.c, dict.h: New file from kazlib 1.20 which implements a
118 red-black tree
119
120 * pass1b.c: Massive changes to take advantage of dict.c. This
121 removes several O(n**2) algorithms from the rare case
122 where there are a large number of blocks claimed by
123 multiple inodes.
124
Theodore Ts'o542867f2002-07-24 07:42:02 -04001252002-07-24 Theodore Ts'o <tytso@mit.edu>
126
Theodore Ts'o850d05e2002-07-25 00:00:08 -0400127 * e2fsck.8.in, e2fsck.h, pass3.c (e2fsck_pass3), unix.c, rehash.c:
128 Add new option -D, which requests e2fsck to optimize all
129 directories. Rehash.c will also compress and sort
130 non-indexed directories.
131
132 * problem.c, problem.h: Rename PR_3A_REHASH_* to PR_3A_OPTIMIZE_*
133
134 * unix.c (PRS): Make sure the signal_cancel is registered without
135 SA_RESTART.
136
137 * rehash.c (e2fsck_rehash_dir, copy_dir_entries, calculate_tree):
138 Restructured code in e2fsck_rehash_dir into two new
139 subroutines to make the code more understandable/maintainable.
140 (set_root_node): Fixed bug which caused the root node to
141 be invalid on non-FILETYPE filesystems due to an
142 unitialized variable.
143 (calculate_tree): Fix bug where pointers which might get
144 invalidated if realloc() moves outdir->buf around.
145 (e2fsck_rehash_dir): Fix memory leak bug.
146
147 * pass3.c (e2fsck_get_lost_and_found), e2fsck.h, e2fsck.c:
148 Exported as a public interface a function for finding the
149 lost and found directory. Cache the location of the lost
150 and found directory in the e2fsck context structure.
151
Theodore Ts'o542867f2002-07-24 07:42:02 -0400152 * util.c (ask_yn, read_a_char): Note when the user has typed ^C,
153 and abort processing by longjmp'ing to ctx->abort_loc.
154
Theodore Ts'o3214a452002-07-23 12:00:00 -04001552002-07-23 Theodore Ts'o <tytso@mit.edu>
156
157 * pass1.c (e2fsck_pass1): If e2fsck is run with -n, don't create
158 the dirs_to_hash list, since we don't want to reindex
159 directories if the filesystem is opened read-only.
160
Theodore Ts'o4cae0452002-07-21 14:14:03 -04001612002-07-21 Theodore Ts'o <tytso@mit.edu>
162
163 * e2fsck.8.in: Document new exit code FSCK_CANCELED
164
165 * unix.c (PRS, signal_cancel): Capture SIGINT and SIGTERM signals
166 and set a flag in the e2fsck context indicating that
167 cancellation has been requested, so that e2fsck will exit
168 only at safe points.
169 (main): Change the exit handling so that if a cancellation
170 is requested, return FSCK_CANCELED (a new exit code 32).
171 e2fsck can now return more than one exit code as part of a
172 bitmask (as had been documented in the man page).
173
174 * pass2.c (e2fsck_pass2, check_dir_block), pass3.c (e2fsck_pass3),
175 pass4.c (e2fsck_pass4): Check to see if a cancellation was
176 requested, and abort processing if necessary.
177
Theodore Ts'ob7a00562002-07-20 00:28:07 -04001782002-07-19 Theodore Ts'o <tytso@mit.edu>
179
180 * rehash.c, Makefile.in: New file which rewrites directories using
181 the htree format.
182
183 * problem.c (fix_problem), problemP.h (PR_PREEN_NOHDR): Add option
184 which suppresses the header printed when in preen mode.
185
186 * pass3.c (e2fsck_pass3): If there are entries on the dirs_to_hash
187 list, call e2fsck_rehash_directories to reindex those
188 directories.
189 (e2fsck_expand_directory): Generalize the old
190 expand_dirctory() function so it can expand a directory to
191 a guaranteed minimum size.
192
193 * e2fsck.h (struct e2fsck_struct): Add the dirs_to_hash list. Add
194 new function prototypes for rehash.c and for
195 e2fsck_expand_directory().
196
197 * e2fsck.c (e2fsck_reset_context): Free the dirs_to_hash list.
198
199 * pass1.c (e2fsck_pass1): Initialize the dirs_to_hash list if the
200 htree feature is present in the filesystem.
201 (check_blocks): If a non-htree directory has more than 2
202 blocks, put it on the dirs_to_hash list.
203
204 * pass2.c (clear_htree): Add corrupt htree directories to the
205 dirs_to_hash list.
206
207 * problem.h, problem.c (PR_3A_PASS_HEADER, PR_3A_REHASH_ITER,
208 PR_3A_REHASH_DIR_ERR, PR_3A_REHASH_DIR_HEADER,
209 PR_3A_REHASH_DIR, PR_3A_REHASH_DIR_END): Add new problem codes
210
211 * pass2.c (parse_int_node), problem.c (PR_2_HTREE_BADBLK): Fix
212 problem display.
213
Theodore Ts'o62acaa12002-07-15 16:54:42 -04002142002-07-15 Theodore Ts'o <tytso@mit.edu>
215
216 * pass2.c (e2fsck_pass2): Use dx_dir->numblocks instead of
217 dx_dir->ino to indicate that a bad inode was cleared.
218
Theodore Ts'o503f9e72002-06-26 16:52:10 -04002192002-06-26 Theodore Ts'o <tytso@mit.edu>
220
221 * pass1.c (check_blocks): Move htree handling to handle_htree().
222 Factor out calls to ext2fs_write_inode so that it happens
223 if dirty_inode is non-zero.
224 (handle_htree): Add checks for invalid htree root, invalid
225 hash version, invalid hash version, and htree depth too deep.
226
227 * problem.h, problem.c (PR_1_HTREE_NODIR, PR_1_HTREE_BADROOT,
228 PR_1_HTREE_HASHV, PR_1_HTREE_INCOMPAT, PR_1_HTREE_DEPTH):
229 Add new problem codes.
230
231 * pass2.c (parse_int_node): Fix silly typo.
232 (check_dir_block): Change to use new ext2fs_dirhash()
233 function prototype.
234 (pass2): Fixed two minor bugs discovered by the test case:
235 Don't stop checking dxdir's after clearing a bad inode.
236 If there is a bad max hash, make sure the bad_dir flag
237 is set to make sure we try to clear inode.
238
Theodore Ts'o8fdc9982002-06-25 23:26:34 -04002392002-06-25 Theodore Ts'o <tytso@mit.edu>
240
241 * e2fsck.c (e2fsck_reset_context): Free the dx_dirinfo structure.
242
243 * message.c: Add new abbrevations @h and @p, "HTREE directory
244 inode" and "problem in".
245
246 * pass1.c (check_blocks): If the inode has the INDEX_FL flag,
247 register the block into the indexed directory data
248 structures. Or if the filesystem doesn't have the
249 DIR_INDEX flag, offer to clear the INDEX_FL.
250
251 * pass2.c (e2fsck_pass2, parse_int_node): Add support check htree
252 directories (we don't check all possible corruptions yet).
253
254 * problem.h, problem.h (PR_1_HTREE_SET, PR_2_HTREE_NOTREF,
255 PR_2_HTREE_DUPREF, PR_2_HTREE_MIN_HASH, PR_2_HTREE_MAX_HASH,
256 PR_2_HTREE_CLEAR, PR_2_HTREE_FCLR, PR_2_HTREE_BADBLK): Add
257 new problem codes.
258
259 * unix.c (main): If ENABLE_HTREE is not defined, complain if the
260 filesystem has the dir_index feature.
261
262 * Makefile.in, e2fsck.h, dx_dirinfo.c: New file (and group of
263 functions) which keeps track of blocks in HTREE directory
264 blocks.
265
Andreas Dilgerb21bf262002-06-10 11:05:56 -06002662002-05-22 Andreas Dilger <adilger@clusterfs.com>
267
268 * super.c (check_superblock): Check that the number of inodes and
269 blocks in a group is less than 2^16, so that the free inode
270 and block counts for a group fit into the group descriptor
271 table fields. Any more than that would need a COMPAT flag.
272
Theodore Ts'o0d634672002-05-22 00:22:38 -04002732002-05-22 Theodore Ts'o <tytso@mit.edu>
274
275 * pass1.c (check_ext_attr): Update to support the V2 Bestbits EA
276 format. We automatically determine from the first EA
277 block we visit whether we are using the V1 or V2 format.
278
Theodore Ts'oda307042002-05-21 21:19:14 -04002792002-05-21 Theodore Ts'o <tytso@mit.edu>
280
281 * pass1.c (process_block): If an inode has too many blocks or
282 is too big, then offer to truncate the inode.
283 (check_blocks): Don't bother checking the size to see if
284 it's too big, since that's just a symptom, not the disease
285 (which we're now appropriately checking in process_block).
286
287 * problem.c, problem.h: Add new problem codes PR_1_INODE_TOOBIG,
288 PR_1_TOOBIG_DIR, PR_1_TOOBIG_REG, PR_1_TOOBIG_SYMLINK, and
289 add the latch code PR_LATCH_TOOBIG.
290
Theodore Ts'obcf9c5d2002-05-21 09:14:17 -04002912002-05-20 Theodore Ts'o <tytso@mit.edu>
292
293 * e2fsck.h, pass1.c (e2fsck_pass1_check_symlink), pass2.c
294 (e2fsck_process_bad_inode): Add an extra
295 argument so a scratch buffer can be passed into the
296 function.
297
298 * pass1.c (e2fsck_pass1_check_device_inode,
299 e2fsck_pass1_check_symlink): If the EXT2_INDEX_FL flag is
300 set, then the device/FIFO is invalid.
301 (check_immutable): Don't check for EXT2_INDEX_FL; we take
302 care of that elsewhere now.
303 (e2fsck_pass1): Check to see if the symlink is valid
304 before we offer to clear any immutable bits. This matches
305 the order in which we check other special files.
306
307 * pass2.c (e2fsck_pass2): Allocate a bigger scratch buffer so we
308 can pass part of it to e2fsck_process_bad_inode.
309
310 * pass4.c (e2fsck_pass4): If we need to call
311 e2fsck_process_bad_inode(), allocate the necessary scratch
312 buffer.
313
314 * problem.h, problem.c: Change PR_2_SYMLINK_SIZE to be
315 PR_2_INVALID_SYMLINK, and change the text
316 accordingly. Revert the text change for PR_1_SET_IMMUTABLE
317 since we no longer check for EXT2_INDEX_FL in
318 check_immutable().
319
3202002-05-18 Andreas Dilger <adilger@clusterfs.com>
321
322 * pass1.c (e2fsck_pass1_check_symlink): Remove checks of
323 immutable/append-only checks, since this is handled by
324 check_immutable. For non-fast symlinks, read in the
325 data block and check the length to make sure it
326 matches with the inode size.
327 (check_immutable): Generalize to also check for the
328 EXT2_INDEX_FL flag.
329 (check_blocks): For non-regular files, signal a bad inode
330 size if i_size_high is non-zero.
331
332 * pass2.c: Only count large files if they are regular files
333 (not just if they aren't directories).
334
335 * problem.c, problem.h: Change comment for PR_2_SYMLINK_SIZE
336 to indicate that it can be triggered by any symlink,
337 not fast symlink. Change text for PR_1_SET_IMMUTABLE
338 to indicate that it the EXT2_INDEX_FL was set.
339
Theodore Ts'o31e29a12002-05-17 10:53:07 -04003402002-05-17 Theodore Ts'o <tytso@mit.edu>
341
342 * pass1.c (e2fsck_pass1): When calculating max_sizes, omit capping
343 this value by the calculated value of max_sect_sizes.
344 The inode may be a sparse inode, and the limit of
345 max_sect_sizes assumed a non-sparse inode and a limit
346 based on a 32-bit i_blocks field measured in 512 sectors.
347
348 * super.c (check_super_block): Fix check for s_log_block_size so
349 that takes into account fact that there is an offset of
350 EXT2_MIN_BLOCK_LOG_SIZE.
351
352 * pass1.c: Allocate max_sizes array to be big enough to support
353 the larger block sizes.
354
3552002-05-16 Andreas Dilger <adilger@clusterfs.com>
356
357 * unix.c (main), util.c (get_backup_sb): Use EXT2_MAX_BLOCK_SIZE
358 instead of using a hardcoded value of 4096.
359
360 * super.c (check_super_block): Change checks for s_log_block_size
361 s_log_frag_size so they support the larger block sizes.
362
363 * pass1.c (e2fsck_pass1): Calculate max_sizes array for block
364 sizes up to EXT2_MAX_BLOCK_SIZE (to support block sizes
365 greater than 4k).
366
Theodore Ts'oa8e77242002-03-08 03:12:14 -05003672002-03-08 Theodore Tso <tytso@mit.edu>
368
369 * Release of E2fsprogs 1.27
370
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05003712002-03-07 Theodore Tso <tytso@mit.edu>
372
373 * journal.c, pass5.c, revoke.c: Fix gcc -Wall complaints
374
3752002-03-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'of2d5c932002-03-07 03:13:07 -0500376
377 * unix.c (main): Don't close the filesystem before calling
378 fatal_error(); this just causes a needless warning about a
379 bad I/O manager magic number.
380
381 * journal.c (e2fsck_check_ext3_journal): Offer to clear the inode
382 in case the journal is too small, or the inode number in
383 the superblock doesn't appear to be random.
384
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05003852002-03-06 Theodore Tso <tytso@mit.edu>
Theodore Ts'of1226322002-03-07 02:47:07 -0500386
387 * problem.h, problem.c: PR_5_BLOCK_RANGE_UNUSED,
388 PR_5_BLOCK_RANGE_USED, PR_5_INODE_RANGE_UNUSED,
389 PR_5_INODE_RANGE_USED: Add new problem codes.
390
391 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Collapse
392 reporting of adjacent blocks and inodes into a range.
393
Theodore Ts'o14308a52002-03-05 03:26:52 -05003942002-03-04 Philipp Thomas <pthomas@suse.de>
395
396 * unix.c (main): Newer libintl needs LC_CTYPE to be set in
397 addition to LC_MESSAGES.
398
Theodore Ts'o57173d02002-02-26 14:59:39 -05003992002-02-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'ob9f40922002-02-24 03:08:57 -0500400
401 * Makefile.in (install): Install hard links for man pages for
402 fsck.ext2 and fsck.ext3. Remove any compressed man
403 pages before installing the man pages.
404
Theodore Ts'o57173d02002-02-26 14:59:39 -05004052002-02-22 Theodore Tso <tytso@mit.edu>
Theodore Ts'od1a21822002-02-22 00:17:59 -0500406
407 * journal.c: Improve code maintainability and reduce code size by
408 moving common code paths in e2fsck_journal_init_dev() and
409 e2fsck_journal_init_inode() into e2fsck_get_journal().
410 Also fixed a memory leak in recover_ext3_journal().
411
412 * super.c (release_orphan_inodes): Fix memory leak.
413
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05004142002-02-03 Theodore Tso <tytso@thunk.org>
415
416 * Release of E2fsprogs 1.26
417
4182001-12-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o3ed57c22001-12-24 15:01:59 -0500419
420 * unix.c (PRS): Don't allow the -c and -l/-L options to be
421 specified at the same time.
422
423 * e2fsck.h (E2F_OPT_WRITECHECK), unix.c (PRS),
424 badblocks.c (read_bad_blocks_file): If two -c options are
425 specified, then perform a non-destructive read/write scan
426 of the disk.
427
428 * e2fsck.8.in: Document the double -c option; also encourage users
429 to use -c instead of the -l/-L options since it's too hard
430 for users to get things like the blocksize parameter correct.
431
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05004322001-12-23 Theodore Tso <tytso@mit.edu>
Theodore Ts'o19007e52001-12-23 19:33:51 -0500433
Theodore Ts'of1a17612001-12-23 22:27:52 -0500434 * util.c (get_backup_sb): This function now searches for the
435 backup superblock by iterating over possible blocksizes
436 instead of defaulting a guess of 8193 if the superblock
437 isn't available.
438
439 * message.c (expand_percent_expression), unix.c (main): Pass in
440 new parameters to get_backup_sb. Also, in unix.c, use the
441 blocksize paramter in the e2fsck context structure instead
442 of using a static variable, since get_backup_sb wants to
443 be able to set the blocksize paramter.
444
445 * e2fsck.h: Update function prototype for get_backup_sb; also add
446 the blocksize parameter to the e2fsck context structure.
447
Theodore Ts'o19007e52001-12-23 19:33:51 -0500448 * Makefile.in, jfs_user.h: Move linux/jbd.h to
449 ext2fs/kernel-jbd.h, to avoid using the system header
450 file version of hbd.h when using diet glibc (since it
451 forcibly adds /usr/include to the beginning of the
452 include search path.)
453
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05004542001-12-21 Theodore Tso <tytso@mit.edu>
Theodore Ts'od37066a2001-12-21 23:28:54 -0500455
Theodore Ts'o6a50c5e2001-12-21 23:29:35 -0500456 * problem.c (fix_problem): Use ctx->filesystem_name if the
457 ctx->device_name is NULL.
458
Theodore Ts'od37066a2001-12-21 23:28:54 -0500459 * journal.c (e2fsck_check_ext3_journal): Give the opportunity to
460 run the journal even if recovery flag is cleared. If
461 we're using a backup superblock, run the journal by
462 default.
463
464 * e2fsck.h (E2F_OPT_FORCE), unix.c (PRS, check_if_skip): Use a
465 bitfield in the e2fsck context flags word to indicate
466 whether or not a check should be forced. This allows the
467 journal code to set the option if necessary to force a
468 filesystem check.
469
470 * problem.h, problem.c: Remove PR_0_JOURNAL_RESET_JOURNAL, and add
471 PR_0_JOURNAL_RUN and PR_0_JOURNAL_RUN_DEFAULT. Update
472 problem decription texts.
473
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05004742001-12-16 Theodore Tso <tytso@mit.edu>
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500475
Theodore Ts'o4ea7bd02001-12-16 23:23:37 -0500476 * e2fsck.h (ext2fs_get_refcount_size), unix.c (check_mount, PRS),
477 pass1.c (adjust_extattr_refcount),
478 ea_refcount.c (ea_refcount_create): Fix gcc -Wall nits.
479
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500480 * recovery.c, revoke.c: Update to versions from 2.4.17-pre8.
481
482 * journal.c, jfs_user.h: Update support code for new version of
483 recover.c and revoke.c. Fix support for filesystems with
484 external journals.
485
Gabriel Paubertb3b3d462001-11-30 13:45:28 +01004862001-11-30 Gabriel Paubert <paubert@iram.es>
487
488 * journal.c (e2fsck_journal_load): Fix an endianness bug.
489
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05004902001-11-26 Theodore Tso <tytso@mit.edu>
Theodore Ts'o24bfb442001-11-26 15:51:14 -0500491
492 * super.c (check_super_block): Make sure that if the inode table
493 or allocation bitmap is zero, that it is marked as
494 invalid, so that in pass #1, a new bitmap/inode table gets
495 properly allocated. (Addresses Debian Bug #116975)
496
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05004972001-11-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o1e9a7e02001-11-24 16:40:57 -0500498
499 * e2fsck.8.in: Fix minor typo in man page and clarify device
500 specification.
501
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005022001-10-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'o62e3e7f2001-10-07 02:13:30 -0400503
504 * journal.c (clear_v2_journal_fields, e2fsck_journal_load): If the
505 V2 fields are set on a V1 journal superblock, or an
506 internal V2 journal has s_nr_users is non-zero, clear the
507 entire journal superblock beyond the V1 superblock. This
508 fixes botched V1->V2 updates.
509
510 * problem.c, problem.h (PR_0_CLEAR_V2_JOURNAL): Add new problem code.
511
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005122001-09-20 Theodore Tso <tytso@mit.edu>
Theodore Ts'o773fd8a2001-10-06 21:26:27 -0400513
514 * e2fsck.h, journal.c (e2fsck_move_ext3_journal): Add new function
515 which will automatically relocate the ext3 journal from a
516 visible file to an invisible journal file if the
517 filesystem has been opened read/write.
518
519 * super.c (check_super_block): Add call to e2fsck_move_ext3_journal
520
521 * problem.c, problem.h (PR_0_MOVE_JOURNAL, PR_0_ERR_MOVE_JOURNAL):
522 Add new problem codes.
523
Theodore Ts'ofbf91112001-09-20 10:47:47 -04005242001-09-20 Theodore Tso <tytso@thunk.org>
525
526 * Release of E2fsprogs 1.25
527
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05005282001-09-19 Theodore Tso <tytso@mit.edu>
Theodore Ts'oae6cdcf2001-09-19 15:17:25 -0400529
530 * unix.c (main): If a superblock is specified explicitly by the
531 user, don't try to automatically fall back to an
532 alternate superblock.
533
Theodore Ts'ofb707752001-09-04 15:00:37 -04005342001-09-02 Theodore Tso <tytso@thunk.org>
535
536 * Release of E2fsprogs 1.24a
537
Theodore Ts'o109624a2001-08-31 00:59:55 -04005382001-08-30 Theodore Tso <tytso@thunk.org>
539
540 * Release of E2fsprogs 1.24
541
Theodore Ts'ob1f204f2001-08-30 16:42:09 -04005422001-08-30 Theodore Tso <tytso@valinux.com>
543
544 * pass1.c (e2fsck_pass1): For EXT2_RESIZE_INO, allow its i_mode to
545 either be zero or a regular file (for compatibility with
546 Andreas's on-line resizing programs).
547
Theodore Ts'o53abed02001-08-27 12:18:16 -04005482001-08-27 Theodore Tso <tytso@valinux.com>
549
Theodore Ts'o0f8973f2001-08-27 12:44:23 -0400550 * unix.c (main): Remove EXT2FS_VERSION from the version display,
551 since it only confuses people.
552
Theodore Ts'o53abed02001-08-27 12:18:16 -0400553 * pass1.c (strnlen): Provide strnlen if libc doesn't.
554
Theodore Ts'o943ed872001-08-27 12:29:22 -04005552001-08-15 Theodore Tso <tytso@valinux.com>
556
557 * Release of E2fsprogs 1.23
558
Theodore Ts'o85645a6f2001-08-13 06:11:39 -04005592001-08-13 Theodore Tso <tytso@valinux.com>
560
Theodore Ts'oeb4ab512001-08-13 10:58:41 -0400561 * super.c (release_orphan_inodes): If the filesystem contains
562 errors, don't run the orphan * list, since the orphan list
563 can't be trusted.
564
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400565 * pass1.c (check_size): Fix logic in check_size; the previous code
566 only offered to clear the inode size fields if both size
567 and i_size_high were zero.
Theodore Ts'oa40ecbb2001-08-13 06:15:36 -0400568 (e2fsck_pass1_check_device_inode): If i_blocks is
569 non-zero, then assume that the device/socket/fifo inode
570 is bogus.
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400571
Theodore Ts'o2b94c652001-08-09 04:08:52 -04005722001-08-09 Theodore Tso <tytso@valinux.com>
573
Theodore Ts'oa4742692001-08-09 04:14:04 -0400574 * pass1.c, pass2.c, problem.c, problem.h: Fix bug introduced by
575 Andreas's symlink code; check_blocks() was unconditionally
576 testing inode_bad_map without checking to see if it
577 existed first. Fixed problem a different way; we now no
578 longer check inode_bad_map at all, since the file might
579 not get deleted in pass 2 anyway. We move the large file
580 feature reconciliation code to to e2fsck_pass2(), and in
581 deallocate_inode() in pass2.c, we decrement the large
582 files counter if we're about to delete a large file.
583
Theodore Ts'o2b94c652001-08-09 04:08:52 -0400584 * unix.c (show_stats): Print the number of large files in verbose
585 mode.
586
Theodore Ts'oc0a083f2001-08-07 10:17:41 -04005872001-08-07 Theodore Tso <tytso@valinux.com>
588
589 * journal.c (recover_ext3_journal): If s_errno is set in the
590 journal superblock, set the EXT2_ERROR_FS flag in the
591 filesystem superblock after the journal is run.
592
Theodore Ts'obd512b62001-08-04 21:33:03 -04005932001-08-04 Andreas Dilger <root@lynx.adilger.int>
594
595 * message.c: Change comments for %D and %d expansion in e2fsck
596 problem codes. It was not consistent which was for dirent
597 expansion, and which was for directory number expansion.
598
599 * problem.c (PR_2_FINAL_RECLEN, PR_2_BAD_FILETYPE): Fix problem
600 codes which got caught by the confusion between %D and %d.
601
Theodore Ts'od007cb42001-08-04 20:39:39 -04006022001-08-04 Theodore Tso <tytso@valinux.com>
603
604 * problem.c (PR_2_SYMLINK_SIZE): Change description to make it
605 more clear (and remove %s expansion). Also add missing
606 periods to the end of a number of problem descriptions.
607
608 * pass2.c (e2fsck_process_bad_inode): Remove unneeded problem
609 context string set now that the problem description for
610 PR_2_SYMLINK_SIZE has been changed.
611
612 * pass1.c (e2fsck_pass1_check_symlink): Consolidate some checks,
613 and check the validity of the symlink block here (so that
614 we detect this case here instead of later). Also use
615 sizeof(inode->i_block) instead EXT2_LINK_DIR.
616
Theodore Ts'o83e6ac82001-07-30 16:29:52 -04006172001-07-30 Theodore Tso <tytso@valinux.com>
618
619 * unix.c (check_mount): Remove the code which tested for the root
620 filesystem being mounted read-only, and depend on the
621 results flags from ext2fs_check_if_mounted.
622
Theodore Ts'o1e165262001-07-29 11:48:10 -04006232001-07-29 Theodore Tso <tytso@valinux.com>
624
Theodore Ts'o6d222f32001-07-29 12:06:58 -0400625 * unix.c (check_if_skip): Free the e2fsck context structure on a
626 normal clean filesystem exit, to make it easier to find
627 real memory leaks.
628 (PRS): Only update the path to include /sbin at the
629 beginning if the -c option is given, again to make it
630 easier to find memory leaks.
Theodore Ts'o0628ae32001-07-29 12:26:46 -0400631 (main): Move the final print_resource_track call after the
632 filesystem and the context are freed.
Theodore Ts'o6d222f32001-07-29 12:06:58 -0400633
634 * journal.c (e2fsck_journal_init_dev): Avoid memory leak if we
635 need to search for the journal device.
636 (e2fsck_journal_release): Free the journal IO channel when
637 we release the journal handle, to avoid a memory leak.
638
Theodore Ts'o1e165262001-07-29 11:48:10 -0400639 * e2fsck.c (e2fsck_reset_context): Fix bug; only close the io
640 channel if it is *different* from the filesystem io
641 channel.
642
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -04006432001-07-27 Theodore Tso <tytso@valinux.com>
644
Theodore Ts'oa092c562001-07-27 22:40:09 -0400645 * problem.c (PR_1_SET_IMMUTABLE): Clarify problem message.
646
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -0400647 * pass1.c (e2fsck_pass1): Check for symlinks that have the
648 immutable flag set (and offer to clear them).
649
Theodore Ts'o24ceb242001-07-26 09:02:56 -04006502001-07-26 Theodore Tso <tytso@valinux.com>
651
652 * pass1.c (e2fsck_pass1): Free ctx->block_ea_map at the end of
653 pass 1.
654
Theodore Ts'o14fe1c32001-07-25 19:48:24 -04006552001-07-25 Theodore Tso <tytso@valinux.com>
656
657 * pass1.c (check_ext_attr): Skip zero-length EA entries.
658
659 * problem.c: PR_1_EA_ALLOC_COLLISION shouldn't abort, but should
660 prompt to clear the EA block.
661
Theodore Ts'oadee8d72001-07-23 00:17:49 -04006622001-07-22 Theodore Tso <tytso@valinux.com>
663
664 * journal.c (ll_rw_block): Use ctx->journal_io instead of the
665 filesystem's io_channel.
666 (e2fsck_journal_init_dev): New function which supports
667 initialization of the external journal.
668 (e2fsck_get_journal): Remove code which flagged an error
669 if the superblock reported the use of an external journal.
670 (ext3_journal_via_mount): Remove unsued, #ifdefed out function.
671
672 * problem.c, problem.h: Removed error codes no longer used
673 (PR_0_JOURNAL_UNSUPP_DEV, PR_0_JOURNAL_BAD_DEV,
674 PR_0_JOURNAL_UNSUPP_UUID) and replace them with new error
675 codes related with failures in loading the external
676 journal (PR_0_JOURNAL_UNSUPP_MULTIFS,
677 PR_0_CANT_FIND_JOURNAL, PR_0_EXT_JOURNAL_BAD_SUPER).
678 Also changed the text assocated with PR_0_JOURNAL_BAD_UUID
679 to reflect the case where the external journal isn't
680 correct for this filesystem.
681
682 * unix.c (PRS), e2fsck.8.in: Add new option -j which allows
683 the user to specify the pathname to find the external journal.
684
685 * e2fsck.c (e2fsck_reset_context): Close journal_io if it isn't
686 the same as the filesystem io_channel.
687
688 * e2fsck.h: Add new fields (journal_io and journal_name) in the
689 context structure to support external journals.
690
Theodore Ts'od3124012001-07-20 14:13:49 -04006912001-07-20 Theodore Tso <tytso@valinux.com>
692
693 * unix.c (main): Add an explicit warning when the filesystem is
694 left not completely fixed when e2fsck exits. (Addresses
695 Debian bug #104502.)
696
Theodore Ts'o55fd07e2001-07-19 16:31:25 -04006972001-07-19 Theodore Tso <tytso@valinux.com>
698
699 * pass1.c (check_ext_attr): The entire EA block is now checked to
700 make sure that parts of the EA block aren't being used for
701 multiple purposes.
702
703 * Makefile.in e2fsck.h, region.c: New file which is used to detect
704 collisions in extended attribute block.
705
706 * problem.h, problem.c (PR_1_EA_MULTI_BLOCK, PR_1_EA_ALLOC_REGION,
707 PR_1_EA_ALLOC_COLLISION, PR_1_EA_BAD_NAME,
708 PR_1_EA_BAD_VALUE): Add new problem codes.
709
Theodore Ts'o3c6b8972001-07-10 14:27:58 -04007102001-07-10 Theodore Tso <tytso@valinux.com>
711
712 * journal.c (e2fsck_run_ext3_journal): Only call ext3_flush() if
713 the superblock is dirty.
714
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -04007152001-07-07 Theodore Tso <tytso@valinux.com>
716
Theodore Ts'o7b63fff2001-07-07 23:01:31 -0400717 * pass1b.c (pass1b, process_pass1b_block): Change the num_bad
718 field calculation so that it only counts EA block entries
719 as a single multiply claimed block (since once we clone
720 the EA blocks for one inode, we fix the problem for all of
721 the other inodes). Also, I moved the num_bad calculation
722 from process_pass1b_block to the end of pass1b. This
723 fixes a *significant* performance bug in pass1b which hit
724 people who had to had a lot of multiply claimed blocks.
725 (Can you say O(n**3) boys and girls? I knew you could...
726 Fortunately, this case didn't happen that much in actual
727 practice.)
728
729 * pass1.c (e2fsck_pass1): Defer inodes which have an extended
730 attribute block for later processing to avoid extra seeks
731 across the disk.
732 (process_inode_cmp): If there is no indirect block, sort
733 by the extended attribute (i_file_acl) block.
734
Theodore Ts'o7abb2bd2001-07-07 13:20:34 -0400735 * pass1b.c (clone_file_block): Fix bugs when cloning extended
736 attribute blocks. Moved free of block_buf to after the
737 code which clones the extattr block, and fixed logic for
738 changing pointers to the extended attribute field in the
739 inodes which were affected.
740 (decrement_badcount): New function which is used whenever
741 we need to decrement the number of files which claim a
742 particular bad block. Fixed bug where delete_file wasn't
743 checking check_if_fs_block() before clearing the entry in
744 block_dup_map. This could cause a block which was claimed
745 by multiple files as well as the filesystem metadata to
746 not be completely fixed.
747
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -0400748 * pass1.c (adjust_extattr_refcount): Add new function which
749 adjusts the reference counts of extended attribute blocks
750 if needed, both up and down.
751 (e2fsck_pass1): If the refcount or refcount_extra
752 structure are present, call adjust_extattr_refcount(),
753 and free it afterwards.
754
755 * problem.h, problem.c (PR_1_EXTATTR_READ_ABORT,
756 PR_1_EXTATTR_REFCOUNT, PR_1_EXTATTR_WRITE): Add new
757 problem codes.
758
Theodore Ts'o342d8472001-07-02 11:54:09 -04007592001-07-02 Theodore Tso <tytso@valinux.com>
760
761 * pass1.c (e2fsck_pass1, check_ext_attr, check_blocks): Add
762 initial support for scanning extended attribute blocks.
763
764 * e2fsck.c (e2fsck_reset_context): free extended attribute
765 refcount structure.
766
767 * e2fsck.h: Add new fields for accounting for the extended
768 attribute blocks.
769
770 * Makefile.in, ea_refcount.c, e2fsck.h: Add new file which
771 implements a reference count abstraction.
772
773 * problem.c, problem.h: Add new problem codes PR_1_ALLOCATE_REFCOUNT,
774 PR_1_READ_EA_BLOCK, PR_1_BAD_EA_BLOCK, PR_2_FILE_ACL_BAD
775
776 * message.c: Add "@a" as an abbreviation for "extended attribute"
777
778 * pass1b.c (clone_file): Add code which handles cloning an
779 extended attribute block.
780
781 * pass1b.c (delete_file):
782 * pass2.c (deallocate_inode): If the inode contains an extended
783 attribute block in the file_acl field, clear it and
784 deallocate the block.
785
7862001-06-28 Theodore Tso <tytso@valinux.com>
787
788 * pass2.c (e2fsck_process_bad_inode): Deal with inodes which are
789 marked bad because of an invalid file_acl (either because
790 EXT2_FEATURE_COMPAT_EXT_ATTR is not set, or because the
791 block number in file_acl is bad.
792
Theodore Ts'o636a9542001-06-29 17:57:26 -04007932001-06-29 Theodore Tso <tytso@valinux.com>
794
795 * unix.c (show_stats): Use long long to calculate the percentage
796 of the number of blocks in use in the filesystem.
797
Theodore Ts'o67960132001-06-23 00:16:37 -04007982001-06-23 Theodore Tso <tytso@valinux.com>
799
800 * Release of E2fsprogs 1.22
801
Theodore Ts'od90f3492001-06-22 21:01:17 -04008022001-06-22 Theodore Tso <tytso@valinux.com>
803
804 * flushb.c: Use platform independent method of defining the
805 BLKFLSBUF ioctl. Also include sys/mount.h since on newer
806 platforms BLKFLSBUF is defined there.
807
Theodore Ts'o42475e22001-06-22 20:35:38 -04008082001-06-19 Theodore Tso <tytso@valinux.com>
809
810 * super.c (release_inode_blocks): Don't try to release the blocks
811 if the orphaned inode is a device file, symlink, or some
812 other kind of special file that doesn't have a block list.
813
Theodore Ts'of4f75ba2001-06-16 01:14:28 +00008142001-06-15 Theodore Tso <tytso@valinux.com>
815
816 * Release of E2fsprogs 1.21
817
Theodore Ts'ob6a08072001-06-14 01:16:17 +00008182001-06-13 Theodore Tso <tytso@valinux.com>
819
820 * unix.c (check_if_skip): Adapted patch from Andreas Dilger which
821 prints the number of mounts or days elapsed since the last
822 check when e2fsck is forced to check an otherwise clean
823 filesystem.
824
Theodore Ts'ocbbf0312001-06-13 00:12:04 +00008252001-06-12 Theodore Tso <tytso@valinux.com>
826
827 * badblocks.c: Stop using the compatibility badblocks function,
828 and use the ext2fs_badblocks_* functions instead.
829
Theodore Ts'o5df55d72001-06-11 07:00:04 +00008302001-06-11 Theodore Tso <tytso@valinux.com>
831
Theodore Ts'o3034f622001-06-11 15:17:45 +0000832 * unix.c (PRS): Fix bug introduced in 1.20 which broke the -F
833 flag.
834
Theodore Ts'o5df55d72001-06-11 07:00:04 +0000835 * Makefile.in: Add message.c and swapfs.c to the list of source
836 files to build the make depend.
837
838 * swapfs.c, unix.c: Only support the -s and -S options to e2fsck
839 if ENABLE_SWAPFS is defined.
840
Theodore Ts'o725c4742001-06-08 11:55:44 +00008412001-06-08 Theodore Tso <tytso@valinux.com>
842
843 * recover.c, revoke.c: Synchronize with ext3 0.7a
844
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00008452001-06-02 Theodore Tso <tytso@valinux.com>
846
Theodore Ts'oa479fe62001-06-02 04:50:14 +0000847 * recovery.c (scan_revoke_records): Fix bug in recovery code;
848 missing byte order conversion.
849
Theodore Ts'ofdbdea02001-06-02 04:26:26 +0000850 * pass1.c (mark_inode_bad): Replace alloc_bad_map with a function
851 which sets the bit in the bad inode bitmap.
852 (e2fsck_pass1): Check for fast symlinks with an invalid
853 size, and set the bad inode map in that case.
Theodore Ts'o62b6d472001-06-02 04:37:02 +0000854 (check_size): Check i_size_high for special files and
855 prompt to clear it along with i_size if non-zero.
Theodore Ts'ofdbdea02001-06-02 04:26:26 +0000856
857 * pass2.c (e2fsck_process_bad_inode): Check for fast symlinks with
858 an invalid size and prompt the user if the inode should be
859 cleared.
860
861 * problem.h, problem.c (PR_2_SYMLINK_SIZE): Added new problem code.
862
Theodore Ts'o71d521c2001-06-01 19:29:36 +00008632001-06-01 Theodore Tso <tytso@valinux.com>
864
Theodore Ts'o2f686ac2001-06-02 00:38:40 +0000865 * problem.c, problem.h: Change PR_0_JOURNAL_UNSUPP_INCOMPAT and
866 PR_0_JOURNAL_UNSUPP_ROCOMPAT so they aren't fatal errors,
867 but prompt to see if the user should abort. Removed the
868 PR_0_JOURNAL_RESET_COMPAT problem code.
869
870 * journal.c (e2fsck_journal_load): If there are incompatible
871 journal flags, just return an error code.
872 (e2fsck_check_ext3_journal): If e2fsck_journal_load
873 returns an error code indicating that there are
874 incompatible journal flag, check to see if we should
875 abort, and then offer to clear the journal.
Theodore Ts'oe3338452001-06-14 07:11:33 +0000876 (Addresses Debian bug #98527.)
Theodore Ts'o2f686ac2001-06-02 00:38:40 +0000877
Theodore Ts'o797f5ef2001-06-01 23:49:46 +0000878 * Makefile.in: Move include/asm/types.h.in to
Theodore Ts'o36a23e12001-06-02 00:54:10 +0000879 lib/ext2fs/ext2_types.h.in.
Theodore Ts'o797f5ef2001-06-01 23:49:46 +0000880
8812001-06-01 Theodore Tso <tytso@valinux.com>
882
Theodore Ts'o71d521c2001-06-01 19:29:36 +0000883 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
884 pass1_check_directory): Add a safety check to make sure
885 ctx->stashed_inode is non-zero.
886
887 * pass1b.c (pass1b): Use e2fsck_use_inode_shortcuts() to disable
888 the inode shortcut processing, instead of manually
889 clearing only half of the function pointers that needed to
890 be NULL'ed out. This caused nasty bugs if the last inode
891 in the filesystem needed dup block processing.
892
893 * pass1b.c (clone_file_block): When cloning a directory's metadata
894 block, don't try to update the directory block list
895 database, since indirect blocks aren't stored in the
896 database and the resulting error will abort the file clone
897 operation.
898
Theodore Ts'o561cd4d2001-05-25 16:40:56 +00008992001-05-25 Theodore Tso <tytso@valinux.com>
900
Theodore Ts'obb185862001-05-25 17:35:00 +0000901 * Release of E2fsprogs 1.20
902
9032001-05-25 Theodore Tso <tytso@valinux.com>
904
Theodore Ts'o561cd4d2001-05-25 16:40:56 +0000905 * journal.c (e2fsck_journal_reset_super): Remove extraneous line
906
Theodore Ts'oc7f23362001-05-23 22:19:47 +00009072001-05-23 Theodore Tso <tytso@valinux.com>
908
909 * journal.c (e2fsck_journal_reset_super): Fix bug; the reset
910 journal wasn't getting written out to disk since the dirty
911 bit wasn't being set on the buffer.
912 (e2fsck_journal_load): Don't print an error message if the
913 journal version number is wrong; just return a error code
914 reflecting this fact. If the block type in the journal
915 superblcok is obviously not a version number, report the
916 journal is corrupted.
917 (e2fsck_check_ext3_journal): On an unsupported journal
918 version, prompt to abort by default, but then offer a
919 chance to clear the journal as corrupt.
920
921 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_VERSION): Added new
922 problem code.
923
Theodore Ts'o424cd2b2001-05-14 04:06:56 +00009242001-05-14 Theodore Tso <tytso@valinux.com>
925
Theodore Ts'o21afac02001-05-14 12:47:41 +0000926 * pass1.c: Treat inodes with a low dtime (that were from a
927 corrupted orphan list) specially.
928
929 * problem.c, problem.h: Add new problem codes PR_1_LOW_DTIME and
930 PR_1_ORPHAN_LIST_REFUGEES, and a new latch group,
931 PR_LATCH_LOW_DTIME.
932
933 * problemP.h: Expand the size of the problem flag to be an int
934 instead of a short. Expand space in the flag word which
935 is reserved for problem latch flags from 3 bits to 8 bits.
936
Theodore Ts'o54c637d2001-05-14 11:45:38 +0000937 * e2fsck.h, scantest.c: Change location of ext2_fs.h to be
938 ext2fs/ext2_fs.h
939
Theodore Ts'o424cd2b2001-05-14 04:06:56 +0000940 * super.c (check_super_block): Be more strict on checking
941 s_r_blocks_count superblock field.
942
9432001-05-13 Theodore Tso <tytso@valinux.com>
944
945 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_ROCOMPAT,
946 PR_0_JOURNAL_UNSUPP_INCOMPAT, PR_0_JOURNAL_RESET_COMPAT):
947 New problem codes.
948
949 * journal.c (e2fsck_journal_load): Use a problem code to
950 report unsupported feature flags. There is code to
951 clear unsupported flags, but since this is dangerous,
952 it's not allowed in the problem code table.
953
9542001-05-11 Andreas Dilger <adilger@turbolinux.com>
955
956 * journal.c (e2fsck_journal_reset_super): initialize the journal
957 sequence number to a random value to avoid recovering
958 bad transactions from a corrupt journal.
959
Theodore Ts'o328a5ce2001-05-13 20:21:25 +00009602001-05-13 Theodore Tso <tytso@valinux.com>
961
962 * journal.c: Code cleanup; initialize journal_enable_debug using
963 an initializer.
964
Theodore Ts'ofc9a69c2001-05-12 13:43:46 +00009652001-05-12 Theodore Tso <tytso@valinux.com>
966
967 * unix.c (PRS): Skip validation of -C's file descriptor if it is
968 zero, since that is special case.
969
Theodore Ts'of0b8c872001-05-09 06:03:58 +00009702001-05-09 Theodore Tso <tytso@valinux.com>
971
972 * super.c (release_orphan_inodes): Add gettext quoting around
973 "Truncating" and "Clearing" for i18n.
974
Theodore Ts'ob9852cd2001-05-05 05:14:59 +00009752001-05-05 Theodore Tso <tytso@valinux.com>
976
Theodore Ts'oe39ac922001-05-05 06:47:24 +0000977 * util.c (fatal_error): Use the correct magic number when checking
978 the magic number for the io_channel data structure. Also
979 remove extraneous call to io_channel_flush() that was left
980 over from an editing session.
981
Theodore Ts'ob9852cd2001-05-05 05:14:59 +0000982 * pass2.c (check_dir_block): Ignore EXT2_ET_DIR_CORRUPTED errors
983 from ext2fs_read_dir_block().
984
Theodore Ts'o5f629b72001-05-01 20:01:08 +00009852001-05-01 Theodore Tso <tytso@valinux.com>
986
Theodore Ts'oae8160e2001-05-01 21:13:37 +0000987 * unix.c (PRS): Validate the completion information file
988 descriptor so that the completion bar won't get
989 accidentally written onto the disk.
990
Theodore Ts'o5f629b72001-05-01 20:01:08 +0000991 * e2fsck.8.in: Add explanation that you can use mke2fs -n -b
992 blocksize to printout alternate superblock locations.
993
Theodore Ts'obc57f152001-04-26 04:11:46 +00009942001-04-26 Theodore Tso <tytso@valinux.com>
995
996 * unix.c (check_if_skip): If the max_mount_count is zero, treat it
997 as having no count set.
998
Theodore Ts'oef059872001-04-17 00:40:02 +00009992001-04-16 Theodore Tso <tytso@valinux.com>
1000
1001 * super.c (check_super_block): Fix bad calculation of
1002 inodes_per_block, and tighten min/max checks to be a bit
1003 more paranoid. Thanks to Andreas Dilger for pointing out
1004 this bug.
1005
Theodore Ts'o1f735032001-03-29 19:00:50 +000010062001-03-29 Theodore Tso <tytso@valinux.com>
1007
Theodore Ts'o15986f72001-03-29 19:22:16 +00001008 * journal.c (mark_buffer_uptodate): Add emulation of kernel
1009 function mark_buffer_uptodate.
1010
Theodore Ts'o1f735032001-03-29 19:00:50 +00001011 * recovery.c, revoke.c: Synchronize with 0.6b ext3 files.
1012
Theodore Ts'od0515212001-02-13 04:32:53 +000010132001-02-12 Theodore Tso <tytso@valinux.com>
1014
1015 * journal.c (e2fsck_run_ext3_journal): Force a flush of the
1016 filesystem and io_channel before replaying the journal.
1017
Theodore Ts'oa5c33f22001-01-18 02:34:03 +000010182001-01-17 Theodore Ts'o <tytso@valinux.com>
1019
1020 * pass1.c (check_blocks): Fix large file checking code so that
1021 files > 2GB are considered large files, and restrict
1022 directories from being > 2GB.
1023
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +000010242001-01-12 Theodore Ts'o <tytso@valinux.com>
1025
Theodore Ts'oa9ca2012001-01-12 21:53:25 +00001026 * journal.c (e2fsck_journal_fix_unsupported_super): Remove unused
1027 function. Add FIXME notes to e2fsck_get_journal(), from
1028 Andreas Dilger.
1029
1030 * pass1.c (e2fsck_pass1): Cap the maximum legal size of a file by
1031 the limit caused by the fact that i_blocks is in 512 byte
1032 units, and that the Linux buffer cache also fundamentally
1033 assumes 512 byte sectors.
1034 Make sure that the journal inode is a regular file, and
1035 when clearing an unused journal inode, make sure the
1036 icount db is updated.
1037
1038 * problem.c, problem.h (PR_1_JOURNAL_BAD_MODE): Add new problem code.
1039
Theodore Ts'o37b6b292001-01-12 21:16:13 +00001040 * problem.c: For PR_1_RESERVED_BAD_MODE, print a description of
1041 the reserved inode. In PR_0_JOURNAL_HAS_JOURNAL, prompt
1042 to clear the journal, rather than deleting it (which is
1043 more accurate). (From Andreas Dilger.)
1044
Theodore Ts'o6a6d3d42001-01-12 21:11:24 +00001045 * journal.c: Make sure all functions which return an error code
1046 use the errcode_t return type, and not "int"
1047 (e2fsck_journal_release): Add new parameter, "drop",
1048 which is used when we just want to deallocate the journal
1049 without trying to write out any changes.
1050 (mark_buffer_clean): New function
1051 (e2fsck_check_ext3_journal): If we fail loading the
1052 journal, make sure we free all memory associated with it.
1053 (recover_ext3_journal): If we fail to load the journal or
1054 initialize the revoke data structures, make sure we free all
1055 memory associated with the journal.
1056
Theodore Ts'o721edd02001-01-12 21:05:57 +00001057 * message.c (special_inode_name): Add more special inode names
1058 (From Andreas Dilger)
1059
Theodore Ts'o58a75172001-01-12 20:59:19 +00001060 * util.c (fatal_error): Check to make sure the io_manager data
1061 structure is sane before trying to flush the io_channel.
1062 (From Andreas Dilger)
1063
Theodore Ts'o721edd02001-01-12 21:05:57 +00001064 * mtrace.h, super.c, pass2.c: Minor whitespace cleanups, from
1065 Andreas Dilger.
Theodore Ts'o4035f402001-01-12 20:25:50 +00001066
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +00001067 * journal.c (e2fsck_journal_fix_bad_inode): Set pctx->ino to the
1068 bad journal number.
1069
1070 * problem.c (PR_0_JOURNAL_BAD_INODE): Use pctx->ino instead of
1071 pctx->num when printing the bad journal inode number.
1072
Theodore Ts'o86c627e2001-01-11 15:12:14 +000010732001-01-11 <tytso@snap.thunk.org>
1074
Theodore Ts'o5ba23cb2001-01-11 19:15:02 +00001075 * pass1.c (process_block): Remove dead code which was never
1076 getting executed.
1077
1078 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
1079 ext2fs_sync_device() instead of using BLKFLSBUF.
1080
1081 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
1082
Theodore Ts'o86c627e2001-01-11 15:12:14 +00001083 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
1084 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
1085 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
1086 ino_t to ext2_ino_t.
1087
Theodore Ts'o95a5bc92001-01-11 04:58:21 +000010882001-01-09 <tytso@snap.thunk.org>
1089
1090 * problem.c: Fix another broken @F vs @f problem.
1091
Theodore Ts'o53ef44c2001-01-06 05:55:58 +000010922001-01-06 <tytso@snap.thunk.org>
1093
1094 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
1095 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
1096
1097 * jfs_user.h: Use more sophisticated inline handling to allow
1098 building with --enable-gcc-wall
1099
Theodore Ts'od3f35b62001-01-03 13:00:43 +000011002001-01-03 <tytso@snap.thunk.org>
1101
Theodore Ts'of18996c2001-01-03 16:57:24 +00001102 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
1103 own block; if the journal inode is not in use, and it
1104 contains data, offer to clear it.
1105
1106 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
1107 problem code.
1108
1109 * problem.c: Modified problem table to use a new abbreviations.
1110
Theodore Ts'od74edf42001-01-03 19:38:04 +00001111 * message.c: Add @j abbreviation for journal, and @v abbreviation
Theodore Ts'oe9044062001-01-03 15:39:37 +00001112 for device.
Theodore Ts'o1ce64532001-01-03 15:34:20 +00001113
Theodore Ts'occ7067b2001-01-03 13:24:06 +00001114 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
1115
Theodore Ts'od3f35b62001-01-03 13:00:43 +00001116 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
1117 the journal stored on a reserved inode. Also force a fsck
1118 if the journal appears to exist while !NEEDS_RECOVERY, and
1119 we forcibly reset the journal.
1120
Theodore Ts'of5ae75e2001-01-01 14:52:52 +000011212001-01-01 <tytso@snap.thunk.org>
1122
Theodore Ts'o5dd8f962001-01-01 15:51:50 +00001123 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
1124 ext2fs_sb with struct ext2_super_block.
1125
Theodore Ts'of5ae75e2001-01-01 14:52:52 +00001126 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
1127
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +000011282000-12-31 <tytso@snap.thunk.org>
1129
1130 * jfs_compat.h: Remove uneeded header file.
1131
Theodore Ts'ob2f93192000-12-30 20:33:42 +000011322000-12-30 <tytso@snap.thunk.org>
1133
Theodore Ts'oc59a7042000-12-31 01:52:03 +00001134 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
1135 conflicts with the system header file.
1136
Theodore Ts'ob2f93192000-12-30 20:33:42 +00001137 * problem.h: Fixed numbering of pass1 error messages; an extra 0
1138 had slipped into some of the numbers. (Pointed out by
1139 Andreas Dilger)
1140
1141 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
1142 unnecessary automatic variable. Add explanatory comment
1143 about the kernel emulation routines. (Suggested by
1144 Andreas Dilger)
1145
Theodore Ts'o060b5fb2000-12-13 18:07:23 +000011462000-12-13 Theodore Ts'o <tytso@valinux.com>
1147
Theodore Ts'o9b565752000-12-13 18:50:22 +00001148 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
1149 journal fields are consistent if any of the superblock
1150 fields are set. (Backs out erroneous change made by sct,
1151 pointed out by Andreas.)
1152
1153 * unix.c (main): Clarify coments (no code changes)
1154
1155 * super.c (release_orphan_inodes): Fix spelling typo in error message.
1156
Theodore Ts'o8188c9e2000-12-13 18:39:14 +00001157 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
1158 level if we need to set large files flag. Patch from
1159 Andreas Dilger.
1160
Theodore Ts'o7b59f1e2000-12-13 18:11:44 +00001161 * super.c (check_super_block): If we have any of the compatibility
1162 flags set, we need to have a revision 1 filesystem. Most
1163 kernels will not check the flags on a rev 0 filesystem
1164 and we may have corruption issues because of the
1165 incompatible changes to the filesystem. Patch from Andreas
1166 Dilger.
1167
Theodore Ts'o060b5fb2000-12-13 18:07:23 +00001168 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
1169 new problem codes.
1170
Theodore Ts'o0e8a9562000-12-09 06:41:25 +000011712000-12-09 <tytso@snap.thunk.org>
1172
Theodore Ts'obf2d4992000-12-09 14:46:20 +00001173 * flushb.c: Fix flushb so that it does something other than waste
1174 disk space when built on systems with modern header files
1175 and add a non-subtle Copyright Licensing restriction so
1176 Yann will remove it from the Debian Distribution. (Now
1177 violates the Debian Free Software Guidelines, on purpose.)
1178
Theodore Ts'of43650c2000-12-09 06:47:56 +00001179 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
1180 at the top level, set the JFS debuging level to 2.
1181
Theodore Ts'o0e8a9562000-12-09 06:41:25 +00001182 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
1183 has been moved to the include/linux directory.
1184
1185 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
1186 support the V2 superblock and revoke processing. The
1187 journal.c and revoke.c files are copies from the ext3
1188 kernel source.
1189
1190 * Makefile.in: Added revoke.c to the list of source/object files.
1191
Theodore Ts'o133a56d2000-11-17 05:40:49 +000011922000-11-16 Theodore Ts'o <tytso@valinux.com>
1193
1194 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
1195 reporting problems rather than using com_err directly.
1196
1197 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
1198
1199 * message.c (expand_percent_expression): Add safety check. If
1200 ctx->str is NULL, print "NULL" instead of dereferencing
1201 the null pointer.
1202
1203 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
1204 to ext2fs_block_iterate2, to support 64-bit filesizes and
1205 to speed things up slightly by avoiding the use of the
1206 ext2fs_block_iterate's compatibility shim layer.
1207
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +000012082000-10-30 <tytso@snap.thunk.org>
1209
1210 * util.c (get_backup_sb): Calculate backup superblock correctly
1211 when the blocksize is > 1k.
1212
Theodore Ts'o241f2242000-10-26 20:42:07 +000012132000-10-26 <tytso@snap.thunk.org>
1214
1215 * jfs.h, jfs_compat.h, journal.c: Updated to include the
1216 definition of the new journal superblock format; still
1217 only supports V1 superblocks for now. (From sct)
1218
Theodore Ts'ob09a4b02000-10-24 21:16:09 +000012192000-10-24 <tytso@snap.thunk.org>
1220
Theodore Ts'o83949022000-10-25 01:38:50 +00001221 * super.c (release_inode_block, release_inode_blocks,
1222 release_orphan_inodes): Add code to deal with truncating
1223 inodes which are still in use (but which are on the orphan
1224 list because they need truncation).
1225
1226 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
1227 PR_0_ORPHAN_CLEAR_INODE, and remove
1228 PR_0_ORPHAN_INODE_INUSE.
1229
1230 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
1231 a message when the journal is being recovered.
1232
Theodore Ts'ob09a4b02000-10-24 21:16:09 +00001233 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
1234 journal inode, if it is in use.
1235
Theodore Ts'oadfca562000-09-12 21:24:36 +000012362000-09-12 <tytso@valinux.com>
1237
1238 * extend.c:
1239 * flushb.c: Add include of nls-enable.h which is necessary so that
1240 they can compile correctly.
1241
Theodore Ts'occ96b2b2000-08-22 21:30:11 +000012422000-08-22 <tytso@valinux.com>
1243
Theodore Ts'o2575fb02000-08-22 21:50:04 +00001244 * unix.c (main): If we're doing a read-only check, skip the
1245 journal playback, but don't abort the e2fsck run.
1246
Theodore Ts'o99a2cc92000-08-22 21:41:52 +00001247 * super.c (release_orphan_inodes): Fix typo; should do bounds
1248 checking on next_ino instead of ino.
1249
1250 * jfs_compat.h (J_ASSERT):
1251 * journal.c (e2fsck_run_ext3_journal):
1252 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
1253
Theodore Ts'o243dc312000-08-22 21:37:47 +00001254 * unix.c: Use fatal_error() instead of exit() whenever possible.
1255 Also fix the fsck exit codes so that we use FSCK_USAGE
1256 when it is appropriate. Rename global_signal_ctx to
1257 e2fsck_global_ctx and let it be exported globally.
1258
Theodore Ts'occ96b2b2000-08-22 21:30:11 +00001259 * util.c (fatal_error): Try to flush the I/O manager before
1260 forcing an exit.
1261
Theodore Ts'oecf1b772000-08-20 22:06:31 +000012622000-08-20 <tytso@valinux.com>
1263
1264 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
1265 e2fsck_check_ext3_journal to smash the journal because
1266 journal->j_transaction_sequence wasn't getting
1267 initialized.
1268
1269 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
1270 call to e2fsck_clear_recover from recover_ext3_journal to
1271 after the filesystem has been closed and reopened.
1272 Otherwise, the superblock in the filesystem handle will
1273 probably be stale, and will overwrite the newer version of
1274 the superblock written by the log recovery.
1275
1276 * message.c (expand_inode_expression): Add support for %Iu and %Ig
1277
1278 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
1279
1280 * super.c (release_orphan_inodes, release_inode_block,
1281 release_inode_blocks): Update the block group descriptor
1282 counts when freeing the orphan inode. Use
1283 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
1284
1285 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
1286 attempted to reopen the filesystem using the device name
1287 instead of the filesystem name.
1288
Theodore Ts'o80bfaa32000-08-18 15:08:37 +000012892000-08-18 <tytso@valinux.com>
1290
1291 * Makefile.in: Update the make dependencies
1292
1293 * problem.c, problem.h: Add the problem codes:
1294 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
1295 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
1296 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
1297 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
1298
1299 * super.c (release_inode_blocks, release_orphan_inodes,
1300 check_super_block): Add support for clearing orphaned
1301 inodes from the unmounted filesystem.
1302
1303 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
1304 check; this is now handled in check_super_block ---
1305 non-journaled filesystems can use the orphan list in the
1306 future. Also, move the the re-opening of the filesystem
1307 to e2fsck_run_ext3_journal().
1308
Theodore Ts'o3b5386d2000-08-14 14:25:19 +000013092000-07-12 Andreas Dilger <adilger@turbolinux.com>
1310
1311 * journal.c: implement loading of ext3 journal for recovery code
1312
1313 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
1314 Add journal problems.
1315
1316 * recovery.c (journal_recover): user-space ext3 journal recovery code
1317
1318 * unix.c (main) : check journal and do recovery in separate steps
1319
Theodore Ts'ob8d164c2000-08-08 03:17:04 +000013202000-08-07 <tytso@snap.thunk.org>
1321
1322 * unix.c (calc_percent): Make sure that we don't take a floating
1323 exception if the max value is zero. (should normally
1324 never happen, but...)
1325
Theodore Ts'of9e67062000-07-13 23:25:54 +000013262000-07-13 <tytso@valinux.com>
1327
1328 * Release of E2fsprogs 1.19
1329
Theodore Ts'o17390c02000-07-07 04:13:21 +000013302000-07-06 Theodore Ts'o <tytso@valinux.com>
1331
1332 * unix.c (check_if_skip): Modify algorithm for checking
1333 s_max_mnt_count to match with the kernel. (If
1334 s_max_mnt_count is negative, ignore the mnt_count check.)
1335
1336 * unix.c (e2fsck_update_progress): Adjust the width of the
1337 progress bar dynamically, based on the filesystem name
1338 that we need to display.
1339
1340 * unix.c (main): If the ext3 needs_recovery flag is set, call
1341 e2fsck_run_ext3_journal() and then restart the e2fsck run.
1342
1343 * journal.c (e2fsck_run_ext3_journal): New file which contains
1344 logic to recover the ext3 journal. This version relies on
1345 the kernel being able to mount the filesystem in order to
1346 run the journal.
1347
Theodore Ts'o92269042000-07-05 18:25:59 +000013482000-07-05 Theodore Ts'o <tytso@valinux.com>
1349
1350 * unix.c (e2fsck_update_progress): Only save and check the last
1351 percentage after multiplying it by 10, nor 1000, since we
1352 only need to save values to a tenth of a percent (and the
1353 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +00001354 Also, re-arrange the logic so that we do the time
1355 check only after doing the percentage check, and we
1356 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +00001357
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +000013582000-07-04 Theodore Ts'o <tytso@valinux.com>
1359
1360 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
1361 field is set; if so, clear it, so that ext3 mounting code
1362 won't get confused by the fact that we've cleared out the
1363 orphaned inodes.
1364
Theodore Ts'obbd47d72000-06-10 19:21:33 +000013652000-06-10 Theodore Ts'o <tytso@valinux.com>
1366
1367 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
1368 checking for a "should never happen case".
1369
1370 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
1371 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
1372
Theodore Ts'od647a1e2000-05-27 14:40:09 +000013732000-05-27 Theodore Ts'o <tytso@valinux.com>
1374
1375 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
1376 (cw@foof.org) which checks to see if special devices have
1377 a non-zero size, and deals with it.
1378
1379 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
1380
Theodore Ts'o1d279212000-05-19 02:38:14 +000013812000-05-18 Theodore Ts'o <tytso@valinux.com>
1382
1383 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
1384 well.
1385
Theodore Ts'o4ea0a112000-05-08 13:33:17 +000013862000-05-08 Theodore Ts'o <tytso@valinux.com>
1387
1388 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
1389 code.
1390
1391 * super.c (check_super_block): If the OS type in the superblock is
1392 the Hurd, check to see if the filetype feature is set, and
1393 offer to clear it if so. This needs to be done since the
1394 Hurd doesn't properly support the filetype feature.
1395 (And since the hurd allows the transmogrification of files
1396 to special files and vice versa --- for no good reason
1397 that I can understand --- it can't support the filetype
1398 feature for the forseeable future, either.)
1399
Theodore Ts'o373b8332000-04-03 16:22:35 +000014002000-04-03 Theodore Ts'o <tytso@valinux.com>
1401
1402 * unix.c: For platforms that don't define optarg.h, manually
1403 define optarg and optind.
1404
Theodore Ts'o01fbc702000-04-03 13:57:21 +000014052000-03-20 Theodore Ts'o <tytso@valinux.com>
1406
1407 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
1408 Check for the append-only as well as the immutable flag.
1409
1410 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
1411 append-only flag. Fix comment for compression flag.
1412
Theodore Ts'o06012322000-02-12 20:12:43 +000014132000-02-12 <tytso@snap.thunk.org>
1414
1415 * unix.c (e2fsck_update_progress): Limit the number of updates to
1416 the progress bars to 8 times a second. This allows a 9600
1417 baud console link to keep up.
1418
Theodore Ts'o19178752000-02-11 15:55:07 +000014192000-02-11 <tytso@snap.thunk.org>
1420
1421 * unix.c (main): If compression is enabled on the filesystem,
1422 print a warning message (for now).
1423
1424 * message.c: Add new compression shortcut: @c == compress
1425
1426 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
1427
1428 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
1429 set, check to see if the filesystem supports compression.
1430 If it does pass this information down to process_block()
1431 so it can treat the compressed block flag words
1432 correctly. If not, offer to clear the flag, since it
1433 shouldn't be set.
1434 (process_block): If an inode has the compressed inode flag
1435 set, allow EXT2FS_COMPRESSED_BLKADDR.
1436
1437 * pass1b.c (process_pass1b_block, delete_file_block,
1438 clone_file_block):
1439 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
1440 see if the block can be skipped.
1441
Theodore Ts'o28ffafb2000-02-08 19:14:02 +000014422000-02-08 <tytso@snap.thunk.org>
1443
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +00001444 * util.c: Make resource tracking message more concise.
1445
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +00001446 * e2fsck.h:
1447 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
1448 ctx->block_illegal_map, since it's not needed by pass1,
1449 and pass1b has been modified to calculate it manually if
1450 needed. This reduces the memory footprint needed by e2fsck.
1451
1452 * pass1b.c (check_if_fs_block): New static function which returns
1453 whether or not a block overlaps with filesystem metadata.
1454 This replaces consulting the block_illegal_map bitmap.
1455
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00001456 * Makefile.in: Call sync after finishing building all in this
1457 directory.
1458
1459 * unix.c (PRS): sync the filesystem before trying to use
1460 BLKFLSBUF, to minimize the chance of causing dirty blocks
1461 to get dropped.
1462
1463 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
1464 a Linux/i386 system.
1465
1466 * pass3.c (check_directory): Only do the loop detection algorithm
1467 if we've searched over 2048 parent directories and haven't
1468 found the end yet. This means that in the common case, we
1469 don't allocate or clear the inode_loop_detection bitmap,
1470 which for large systems, merely clearing the bitmap for
1471 each directory was turning out to be quite expensive.
1472 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
1473 identifying this problem.
1474
Theodore Ts'o0c4a0722000-02-07 03:11:03 +000014752000-02-06 Theodore Ts'o <tytso@valinux.com>
1476
1477 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
1478 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
1479 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
1480 unix.c, util.c: Add Internationalization support as
1481 suggested by Marco d'Itri <md@linux.it>.
1482
Theodore Ts'o80e808f2000-02-02 16:19:59 +000014832000-02-02 Theodore Ts'o <tytso@valinux.com>
1484
1485 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
1486 linux/fs.h
1487
Theodore Ts'o894edb22000-01-18 21:27:12 +000014882000-01-18 Theodore Ts'o <tytso@valinux.com>
1489
1490 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
1491 we need a separate DEPLIBUUID that can be used in
1492 Makefile's dependency rules.
1493
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +000014941999-11-23 <tytso@valinux.com>
1495
1496 * e2fsck.8.in: Update language about where to find a backup
1497 superblock.
1498
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +000014991999-11-19 <tytso@valinux.com>
1500
Theodore Ts'o86a63e91999-11-23 13:52:48 +00001501 * pass1.c (process_inodes): Add shortcut handling; if
1502 process_inodes_count is zero, return right away, to avoid
1503 calling qsort with a non-positive count.
1504
Theodore Ts'oec8d2c31999-11-19 18:52:36 +00001505 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
1506 to print Delete as ^?
1507
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00001508 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
1509 the source directory.
1510
Theodore Ts'oa846d2f1999-11-10 15:50:24 +000015111999-11-10 <tytso@valinux.com>
1512
Theodore Ts'ocd086361999-11-10 16:00:39 +00001513 * Release of E2fsprogs 1.18
1514
15151999-11-10 <tytso@valinux.com>
1516
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00001517 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
1518 means the answer is assumed to be no in preen mode. This
1519 is now used in the PR_1_SET_IMMUTABLE code, so that in
1520 preen mode we ignore these inodes and just print a warning
1521 message.
1522
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +000015231999-11-09 <tytso@valinux.com>
1524
1525 * pass1.c (e2fsck_pass1): If the filesystem does not support
1526 imagic inodes, if an inode has the imagic flag set, offer
1527 to clear the imagic flag. If a valid device/fifo/socket
1528 has the immutable flag set, call the new helper function
1529 check_immutable() to offerto clear the immutable flag.
1530
1531 * pass2.c (check_filetype): Use the new ext2_file_type() helper
1532 function instead of calculating the file_type information
1533 manually.
1534
1535 * pass3.c (e2fsck_reconnect_file): When adding a link to
1536 lost+found, calculate the filetype information so that
1537 ext2fs_link() can use the information if applicable.
1538 (get_lost_and_found): Create the /lost+found directory
1539 with the correct filetype information if applicable.
1540
1541 * util.c (ext2_file_type), e2fsck.h: New function which returns
1542 the directory entry file type information given the
1543 inode's mode bits.
1544
1545 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
1546 and PR_1_SET_IMMUTABLE.
1547
Theodore Ts'o7142db01999-11-08 18:46:54 +000015481999-11-07 <tytso@valinux.com>
1549
1550 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
1551 to prevent it from getting freed twice.
1552
15531999-11-06 <tytso@valinux.com>
1554
1555 * unix.c (main): Close the filesystem before freeing the context,
1556 so that in the event of a free()-related segmentation
1557 violation, the filesystem is properly closed and written
1558 out.
1559
15601999-10-27 <tytso@valinux.com>
1561
1562 * e2fsck.c (e2fsck_reset_context): When freeing
1563 ctx->inode_reg_map, we weren't zero'ing
1564 ctx->inode_reg_map, which could cause a segfault later on
1565 in the e2fsck run.
1566
15671999-10-26 <tytso@valinux.com>
1568
1569 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
1570 matches the standard convention).
1571
Theodore Ts'of68aa411999-10-26 14:20:22 +000015721999-10-26 <tytso@valinux.com>
1573
Theodore Ts'o28e11941999-10-26 18:17:20 +00001574 * Release of E2fsprogs 1.17
1575
15761999-10-26 <tytso@valinux.com>
1577
Theodore Ts'of68aa411999-10-26 14:20:22 +00001578 * message.c (safe_print): Make safe_print take an char instead of
1579 an unsigned char to fix gcc warnings.
1580
Theodore Ts'oc40db6d1999-10-25 21:03:34 +000015811999-10-25 <tytso@valinux.com>
1582
Theodore Ts'oe6597041999-10-26 02:30:16 +00001583 * util.c: For NT portability, don't redefine getchar(), since
1584 stdio defines that. Instead we introduce a new
1585 abstract macro read_a_char() which is #defined to the
1586 right function as necessary.
1587
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00001588 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
1589
1590 * pass2.c (check_dir_block): Require that the length of the
1591 directory entry be at least 12 bytes. Check to see if the
1592 filename is zero-length, and flag that as an error.
1593
Theodore Ts'o7847c1d1999-10-22 15:11:42 +000015941999-10-22 <tytso@valinux.com>
1595
Theodore Ts'o614fdfd1999-10-23 03:19:51 +00001596 * Release of E2fsprogs 1.16
1597
15981999-10-22 <tytso@valinux.com>
1599
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00001600 * pass2.c (check_filetype): If the filetype filesystem feature is
1601 not set, and a directory entry has a dirent feature, offer
1602 to clear it (since 2.0 kernels will do complain will
1603 interpret it as a very large name length field).
1604
1605 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
1606
Theodore Ts'oaa4115a1999-10-21 19:33:18 +000016071999-10-21 <tytso@valinux.com>
1608
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +00001609 * e2fsck.8.in: Update man page to use a more standard format (bold
1610 option flags and italicized variables), as suggested by
1611 Andreas Dilger (adilger@enel.ucalgary.ca)
1612
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00001613 * pass4.c (e2fsck_pass4): If an inode is set in the
1614 inode_imagic_map bitmap, don't check to see if it is
1615 disconnected from the inode tree (because it almost
1616 certainly will be). Free inode_imagic_map at the end of
1617 pass 4.
1618
1619 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
1620 feature is set, check the directory entry's filetype
1621 information field, and fix/set it if necessary.
1622 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
1623 of pass 2.
1624
1625 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
1626 information for inode_reg_map and inode_imagic_map, which
1627 indicates which inodes are regular files and AFS inodes,
1628 respectively.
1629 Since only the master superblock is written during a
1630 restart, force that superblock to be used after a restart;
1631 otherwise changes to the block group descriptors end up
1632 getting ignored.
1633
1634 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
1635 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
1636 which supresses the problem message if e2fsck is run with
1637 the -n option.
1638
1639 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
1640 new problem codes.
1641
1642 * message.c (expand_dirent_expression): Add support for %dt which
1643 prints the dirent type information.
1644
1645 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
1646 and inode_imagic_map).
1647
1648 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
1649 to the context structure.
1650
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +000016511999-09-24 <tytso@valinux.com>
1652
1653 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
1654 e2fsprogs easier to port to non-Unix platforms.
1655
16561999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00001657
1658 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
1659 internal and external inode counts in sync when we
1660 decremented an inode whose link count was already zero.
1661 Now we skip incrementing or decrementing both link counts
1662 if we would cause an overflow condition.
1663 (expand_dir, expand_dir_proc): Change where we update the
1664 inode block count and size files so that the block count
1665 field is updated correctly when we create an indirect block.
1666
Theodore Ts'o78cf0541999-10-20 18:29:18 +000016671999-08-05 <tytso@valinux.com>
1668
1669 * super.c (check_super_block): Check to see whether the
1670 inodes_per_group value in the superblock is insanely too
1671 high.
1672
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +000016731999-08-02 <tytso@valinux.com>
1674
1675 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
1676 the block also shares data with the fs metadata when
1677 the count drops to 1, since the block should still be
1678 cloned, as fs metadata isn't included in the count.
1679
16801999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +00001681
1682 * Release of E2fsprogs 1.15
1683
Theodore Ts'ob55199e1999-07-19 15:37:46 +000016841999-07-19 <tytso@valinux.com>
1685
1686 * unix.c (usage): Add minimalist emergency help to the usage
1687 message.
1688
Theodore Ts'o5596def1999-07-19 15:27:37 +000016891999-07-18 <tytso@valinux.com>
1690
1691 * unix.c: Add support for calculating a progress bar if the -C0
1692 option is given. The function e2fsck_clear_progbar()
1693 clears the progress bar and must be called before any
1694 message is issued. SIGUSR1 will enable the progress bar,
1695 and SIGUSR2 will disable the progress bar. This is used
1696 by fsck to handle parallel filesystem checks. Also, set
1697 the device_name from the filesystem label if it is
1698 available.
1699
1700 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
1701 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
1702 structure which contains the last tenth of a percent
1703 printed for the user.
1704
1705 * message.c (print_e2fsck_message): Add call to
1706 e2fsck_clear_progbar().
1707
1708 * pass1.c (e2fsck_pass1):
1709 * pass2.c (e2fsck_pass2):
1710 * pass3.c (e2fsck_pass3):
1711 * pass4.c (e2fsck_pass4):
1712 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
1713 printing the resource tracking information.
1714
1715 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
1716 an error in the bitmaps, suppress printing the progress
1717 bar using the suppression flag for the remainder of the
1718 check, in order to clean up the display.
1719
Theodore Ts'o74033351999-07-01 03:00:47 +000017201999-06-30 <tytso@valinux.com>
1721
1722 * unix.c (check_mount): Clean up the abort message displayed when
1723 the filesystem is mounted and either stdout or stdin isn't
1724 a tty.
1725
17261999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +00001727
1728 * e2fsck.h:
1729 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
1730 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
1731 pass1_* be private static functions, and create new
1732 function e2fsck_use_inode_shortcuts which sets and clears
1733 the inode shortcut functions in the fs structure.
1734
1735 * e2fsck.h:
1736 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
1737 exported function.
1738
1739 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
1740 if a disconnected inode has any problems before
1741 connecting it to /lost+found. Bug and suggested fix by
1742 Pavel Machek <pavel@bug.ucw.cz>
1743
17441999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +00001745
1746 * unix.c (main): Add missing space in the disk write-protected
1747 message.
1748
Theodore Ts'od4b0ce01999-06-18 01:09:29 +000017491999-05-22 <tytso@rsts-11.mit.edu>
1750
1751 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
1752 code.
1753
1754 * super.c (check_super_block): Add check to make sure the total
1755 number of inodes is sane, since this can be calculated
1756 from the number of groups times the number of inodes per
1757 group. Offer to correct it if it is incorrect.
1758
Theodore Ts'oe79d1b21999-06-18 01:06:59 +000017591999-03-19 <tytso@rsts-11.mit.edu>
1760
1761 * pass5.c (check_block_end): Fix fencepost condition where when
1762 clearing the block padding we were missing the last position
1763 in the bitmap.
1764
Theodore Ts'o75d83be1999-05-18 03:16:36 +000017651999-05-17 <tytso@rsts-11.mit.edu>
1766
1767 * unix.c (reserve_stdio_fds): Add safety check in case
1768 reserve_stdio_fds couldn't open /dev/null.
1769
Theodore Ts'o4a9f5931999-03-16 19:32:52 +000017701999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
1771
1772 * util.c (print_resource_track): Use mallinfo if present to get
1773 more accurate malloc statistics.
1774
1775 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +00001776 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00001777
1778 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
1779
17801999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1781
1782 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
1783 that the block group number is printed. Add new prompt,
1784 PROMPT_UNLINK.
1785
17861999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1787
1788 * Release of E2fsprogs 1.14
1789
Theodore Ts'o9e51eca1999-01-09 16:32:31 +000017901999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1791
1792 * message.c (safe_print): New function which prints strings,
1793 converting non-printable characters using the '^' and
1794 M-notation. This function is now used to print directory
1795 name entries and pathnames.
1796
Theodore Ts'o73f17cf1999-01-04 07:35:45 +00001797Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
1798
1799 * unix.c (main): Reset the context before calling ext2fs_close(),
1800 to avoid referencing already freed memory.
1801
Theodore Ts'o556ad131998-12-19 08:10:58 +000018021998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
1803
1804 * Release of E2fsprogs 1.13
1805
Theodore Ts'o5a679c81998-12-03 16:40:38 +000018061998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
1807
1808 * Makefile.in: Updated dependencies.
1809
18101998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
1811
1812 * pass3.c (get_lost_and_found): If the filesystem is not opened
1813 read-only, then force /lost+found to be created if it is
1814 not present.
1815
1816 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
1817 operation.
1818
Theodore Ts'o1dde43f1998-11-14 04:18:28 +000018191998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1820
1821 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
1822 since e2fsck_free_context may reference data in ctx->fs.
1823
1824 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
1825 before checking ctx->fs->dblist.
1826
18271998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1828
1829 * pass1.c (e2fsck_pass1): Use the device check subroutine on
1830 FIFO's and Socket's, so that we catch bogus immutable inodes.
1831
1832 * pass2.c (process_bad_inode): Process bad socket and fifo's.
1833
1834 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
1835 PR_2_BAD_SOCKET.
1836
Theodore Ts'o7f813ba1998-09-03 01:26:03 +000018371998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
1838
1839 * problem.c: Add PR_3_NO_DIRINFO error code.
1840
1841 * super.c (check_super_value): Rename min and max to min_val and
1842 max_val to avoid possible cpp macro conflicts.
1843
1844 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
1845 possible cpp macro conflicts.
1846
1847 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
1848 cpp macro conflicts.
1849 (check_directory): Fix logic to avoid possible core dump
1850 in the case of ext2fs_get_dir_info returning NULL. (By
1851 the time we get here, it should never happen, but...).
1852 Also simply/streamline the control flow of the function.
1853
Theodore Ts'o24fc5031998-08-26 15:23:31 +000018541998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
1855
1856 * unix.c (check_if_skip): Move the "not cleanly mounted" check
1857 ahead of the maximal mount and too long since checked tests.
1858 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
1859 open, so that we don't open the filesystem using the same
1860 file descriptor as stdout or stderr.
1861
Theodore Ts'of75c28d1998-08-01 04:18:06 +000018621998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
1863
1864 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
1865 get to 100%.
1866
1867 * pass3.c (e2fsck_pass3): Change progress accounting to be
1868 consistent with the other e2fsck passes.
1869
1870 * e2fsck.c (e2fsck_run): At the end of each pass, call the
1871 progress function with the pass number set to zero.
1872
1873 * unix.c (e2fsck_update_progress): If the pass number is zero,
1874 ignore the call, since that indicates that we just want to
1875 deallocate any progress structures.
1876
Theodore Ts'o8144d671998-07-09 05:33:18 +000018771998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1878
Theodore Ts'o4a5fa191998-07-09 05:42:45 +00001879 * Release of E2fsprogs 1.12
1880
18811998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1882
Theodore Ts'o8144d671998-07-09 05:33:18 +00001883 * unix.c (main): Fix typo in checking the incompat feature set; it
1884 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
1885
Theodore Ts'o1fad9041998-07-07 05:44:43 +000018861998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
1887
1888 * badblocks.c (test_disk): Don't clear the existing bad blocks
1889 list when using e2fsck -c, since it may cause blocks with
1890 marginal errors to be dropped from the bad blocks list.
1891
Theodore Ts'o874b4d21998-07-06 14:33:12 +00001892Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
1893
1894 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
1895 compatibility with older kernels.
1896
Theodore Ts'o818180c1998-06-27 05:11:14 +000018971998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
1898
1899 * unix.c (e2fsck_update_progress): Remove unused variables.
1900
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +000019011998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
1902
1903 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
1904 collision with LFS API.
1905
1906 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
1907 properly initialized.
1908 (e2fsck_pass1): Don't allow the the boot loader inode to
1909 be a directory (clear the inode mode field if so).
1910
Theodore Ts'oefac9a11998-05-07 05:02:00 +000019111998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
1912
1913 * unix.c (PRS): Added new option -C, which causes e2fsck to print
1914 progress updates so that callers can keep track of the
1915 completion progress of e2fsck. Designed for use by
1916 progress, except for -C 0, which prints a spinning report
1917 which may be useful for some users.
1918
1919 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
1920 scheme (useful for larger filesystems).
1921
1922 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
1923 progress reporting functions.
1924
Theodore Ts'o4c77fe51998-04-30 17:35:59 +000019251998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1926
1927 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
1928 appropriate return type for comparison functions for qsort.
1929
1930 * e2fsck.h: Add #ifdef protection for unistd.h
1931
1932 * super.c: Remove header files already included by e2fsck.h
1933
Theodore Ts'o76f875d1998-04-27 01:41:13 +000019341998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
1935
1936 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
1937 size of the memory to be resized to ext2fs_resize_mem().
1938
Theodore Ts'o7e44f241998-04-01 03:16:29 +000019391998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
1940
1941 * Makefile.in: Change to use new installation directory variables
1942 convention. Fix uninstall rules to take $(DESTDIR) into
1943 account. Remove cat8dir from the installdirs target,
1944 since modern man package don't necessarily put the cat
1945 directory in /usr/man/cat?.
1946
Theodore Ts'o17dba281998-03-30 01:16:26 +000019471998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
1948
1949 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
1950 extern in e2fsck.h to prevent -Wall warnings.
1951
1952 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
1953
19541998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1955
1956 * super.c (check_super_block): Fix broken superblock sanity check
1957 when calculating blocks_per_group if s_log_frag_size !=
1958 s_log_block_size. Since we don't support fragments, this
1959 isn't a bug deal, but it's good to get it fixed.
1960
Theodore Ts'o246501c1998-03-24 16:22:38 +000019611998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
1962
1963 * unix.c: Fix bug in check of feature set, to make sure we can
1964 really fix this filesystem.
1965
1966 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
1967 num field be a 64 bit type. Add the problem code
1968 PR_1_FEATURE_LARGE_FILES
1969
1970 * problem.c: Add table entry for the problem code
1971 PR_1_FEATURE_LARGE_FILES.
1972
1973 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
1974 a problem for directory inodes. (Since it is also
1975 i_size_high now.) If there are no large_files, then
1976 clear the LARGE_FLAG feature flag. If there are
1977 large_files, but the LARGE_FLAG feature flag is not set,
1978 complain and offer to fix it.
1979 (check_blocks): Add support to deal with non-directory
1980 inodes that have i_size_high set (i.e., large_files).
1981 Don't give an error if a directory has preallocated
1982 blocks, to support the DIR_PREALLOC feature.
1983 (process_block, process_bad_block): The blockcnt variable
1984 is a type of blkcnt_t, for conversion to the new
1985 block_iterate2.
1986
1987 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
1988 a problem for directory inodes. (Since it is also
1989 i_size_high now.)
1990
1991 * message.c (expand_inode_expression): Print a 64-bits of the
1992 inode size for non-directory inodes. (Directory inodes
1993 can only use a 32-bit directory acl size, since
1994 i_size_high is shared with i_dir_acl.) Add sanity check
1995 so that trying to print out the directory acl on a
1996 non-directory inode will print zero.
1997 (expand_percent_expression): %B and %N, which print
1998 pctx->blkcount and pctx->num, can now be 64 bit
1999 variables. Print them using the "%lld" format if
2000 EXT2_NO_64_TYPE is not defined.
2001
2002 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
2003
2004 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
2005 field.
2006
Theodore Ts'ob6f79831998-03-09 13:10:37 +00002007Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2008
2009 * pass3.c (fix_dotdot_proc):
2010 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
2011 * message.c (expand_dirent_expression): Mask off the high eight
2012 bits of the directory entry's name_len field, so that it
2013 can be used for other purposes.
2014
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +00002015Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2016
2017 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
2018 include EXT2_FLAG_RESTART anymore, we need to adjust this
2019 routine so that it *does* return in the case of it seeing
2020 EXT2_FLAG_RESTART.
2021
2022 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
2023 done callback function, which may set context abort
2024 flags. So we need to test the context abort flags after
2025 we call ext2_get_next_inode().
2026 (process_inodes): If we abort due out of process_inodes,
2027 do a clean exit by breaking out of the for loop instead of
2028 just returning.
2029
2030 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
2031 considered a SIGNAL mask (i.e., requiring an immediate
2032 abort of processing to restart). FLAG_RESTART just means
2033 that we want to restart once pass 1 is complete.
2034
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +00002035Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2036
2037 * Change the progress function to return an integer; if returns 1,
2038 then the progress function is expected to have set the
2039 e2fsck context flag signalling a user abort, and the
2040 caller should also initiate a user abort.
2041
Theodore Ts'o63c49691998-02-20 05:24:59 +00002042Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2043
2044 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
2045 end_problem_latch() unless there was actually a problem
2046 latched. Simplifies semantics of the latch processing.
2047
Theodore Ts'o43139321998-02-16 22:34:46 +00002048Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2049
2050 * e2fsck.h: Add new field, priv_data to the e2fsck context
2051 structure. It should be used by callers of the e2fsck
2052 functions only, and not by anything in e2fsck itself.
2053
2054Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2055
2056 * super.c: Instead of call ext2fs_get_device_size(), define and call
2057 e2fsck_get_device_size(). (This function may be stubbed
2058 out in special versions of e2fsck.)
2059
2060 * pass3.c, pass4.c: Remove extra calls to the progress function
2061 that weren't needed.
2062
2063 * mke2fs.8.in: Update man page to note that the format of the bad
2064 block file is the same as the one generated by badblocks.
2065
Theodore Ts'o54be2cc1998-02-01 12:58:48 +00002066Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2067
2068 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
2069
2070 * e2fsck.h: Include <time.h> since it is needed
2071
2072 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
2073 processing.
2074
Theodore Ts'o24dd4021998-02-01 00:16:40 +00002075Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2076
2077 * unix.c (main): In the case where the filesystem revision is too
2078 high, print the message about the superblock possibly
2079 being corrupt.
2080
2081 * e2fsck.8.in: Add expanded comments about how the -b option
2082 works.
2083
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +00002084Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2085
2086 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
2087 the ext2-specific header files are in a flat directory.
2088
2089 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
2090 super.c, swapfs.c, unix.c: Explicitly cast all assignments
2091 from void * to be compatible with C++.
2092
2093Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2094
2095 * unix.c (sync_disk): Remove sync_disk and calls to that function,
2096 since ext2fs_close() now takes care of this.
2097
2098Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2099
2100 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
2101 ehandler.c, unix.c: Change use of private to be priv_data,
2102 to avoid C++ reserved name clash.
2103
Theodore Ts'o5be8dc21997-12-01 18:24:10 +00002104Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2105
2106 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
2107 of e2fsck_get_num_dirs, which has been removed.
2108
2109Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2110
2111 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
2112 to compile and install flushb.
2113
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +00002114Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2115
2116 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
2117 to make sure the extra i_blocks in a device are cleared if
2118 the immutable flag is set.
2119
2120 * util.c (print_resource_track): Fix typo which caused the
2121 time/resource tracking to print "Pass 1 :" instead of
2122 "Pass 1: ".
2123
Theodore Ts'ob8647fa1997-11-20 21:52:43 +00002124Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2125
2126 * pass3.c (expand_directory): Fix bug which could cause core dump
2127 when expanding the directory, and the bitmaps hadn't yet
2128 been read in. Also, only use ext2fs_write_dir_block when
2129 writing a directory block, not when writing out a fresh
2130 indirect block.
2131
Theodore Ts'o8039c481997-11-19 21:39:13 +00002132Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2133
2134 * pass1.c (process_bad_block): Fix bug where first_block wasn't
2135 getting incremented, which caused user to get a
2136 "Programming error?" warning if there was a bad block in a
2137 non-primary superblock/group_descriptor. Also fixed
2138 another bug so that ext2fs_bg_has_super() is consulted, to
2139 avoid problems when using a filesystem with the
2140 sparse_groups option set and there are bad blocks at the
2141 beginning of a group which doesn't have a superblock.
2142
Theodore Ts'of8188ff1997-11-14 05:23:04 +00002143Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2144
2145 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
2146 progress indicator function.
2147
2148 * pass1.c (scan_callback): Add call to the progress feedback
2149 function (if it exists).
2150
2151Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2152
2153 * super.c (check_super_block): Skip the device size check if the
2154 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
2155
2156 * iscan.c (main): Don't use fatal_error() anymore.
2157
2158 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
2159 calling fatal_error(0).
2160
2161 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
2162 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
2163
2164 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
2165
2166 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
2167
2168 * problemP.h: New file which separates out the private fix_problem
2169 data structures.
2170
2171 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
2172 swapfs.c util.c: allocate_memory() now takes a e2fsck
2173 context as its first argument, and rename it to be
2174 e2fsck_allocate_memory().
2175
Theodore Ts'o08b21301997-11-03 19:42:40 +00002176Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2177
Theodore Ts'o68227541997-11-04 04:25:22 +00002178 * unix.c (main): Add a special case check for the error code EROFS
2179 and display an appropriate error message for this case.
2180
Theodore Ts'o08b21301997-11-03 19:42:40 +00002181 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
2182 to take the e2fsck context as their first argument.
2183 Change dir_info.c routines to take an e2fsck_context,
2184 renamed them to start with e2fsck_ to avoid namespace
2185 issues, and changed them to store the directory
2186 information inside the e2fsck context.
2187 Added e2fsck_run() which calls all of the e2fsck passes in
2188 the correct order, and which handles the return of abort
2189 codes. Added abort processing, both via setjmp/longjmp
2190 and via flags in the e2fsck context. Use a flag in the
2191 e2fsck context instead of the restart_e2fsck global
2192 variable. Change uses of free and malloc to
2193 ext2fs_free_mem and ext2fs_get_mem.
2194
Theodore Ts'o291c9041997-10-31 06:17:08 +00002195Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2196
2197 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
2198 consistency.
2199
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00002200Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2201
2202 * pass3.c (get_lost_and_found): Check error return of
2203 EXT2_FILE_NOT_FOUND instead of ENOTDIR
2204
2205 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
2206 instead of ENOTDIR
2207
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002208Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2209
Theodore Ts'o519149f1997-10-25 03:49:49 +00002210 * unix.c (PRS): Make the variable which getopt returns into be
2211 an int, so that it won't lose on platforms where char is
2212 unsigned.
2213
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002214 * pass1b.c (clone_file): Fix bug in error reporting in the case
2215 where cs.errcode is non-zero.
2216
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002217Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2218
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00002219 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
2220 RESOURCE_TRACK around code which uses init_resource_track
2221 and print_resource_track. (Not all systems have timeval)
2222
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002223 * super.c: Remove excess #includes which are not necessary.
2224
2225 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
2226
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00002227Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2228
2229 * pass*.c, super.c: Massive changes to avoid using printf and
2230 com_err routines. All diagnostic messages are now routed
2231 through the fix_problem interface.
2232
2233Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2234
2235 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
2236 entries.
2237
2238 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
2239 PR_2_DUP_DOT_DOT.
2240
2241Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2242
2243 * problem.c: Added new problem codes for some of the
2244 superblock corruption checks, and for the pass header
2245 messages. ("Pass 1: xxxxx")
2246
2247 * util.c (print_resource_track): Now takes a description
2248 argument.
2249
2250Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2251
2252 * super.c, unix.c, e2fsck.c: New files to separate out the
2253 operating-specific operations out from e2fsck.c.
2254 e2fsck.c now contains the global e2fsck context management
2255 routines, and super.c contains the "pass 0" initial
2256 validation of the superblock and global block group
2257 descriptors.
2258
2259 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
2260 (nearly) all global variables and moved them to the e2fsck
2261 context structure.
2262
2263 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
2264 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
2265 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
2266
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00002267Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2268
2269 * message.c: Add compression for the word "Illegal"
2270
2271 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
2272 PR_2_BAD_BLOCK_DEV
2273
2274Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2275
2276 * pass1.c (pass1, check_device_inode), pass2.c
2277 (process_bad_inode): Use a more stringent test for a valid
2278 device.
2279
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00002280Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2281
2282 * e2fsck.c (check_mount): Add stronger warning message about the
2283 perils of running e2fsck on a mounted filesystem.
2284
Theodore Ts'o024996c1997-06-17 05:38:35 +00002285Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2286
2287 * Release of E2fsprogs 1.11
2288
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00002289Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2290
2291 * pass1.c (mark_table_blocks): Mark the superblock and group
2292 descriptor blocks first, so that any conflicts between
2293 these and the bitmap or inode table blocks is noticed.
2294
2295 * problem.c: Fix message printed out when a block or inode bitmap
2296 conflicts with other fs data, has the correct group number
2297 in it.
2298
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00002299Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2300
2301 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
2302
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002303Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2304
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00002305 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
2306 Hawes (whawes@star.net).
2307
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002308 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
2309 bad blocks command so that all of the filesystem gets
2310 tested in the case where the blocksize 2048 or 4096.
2311
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00002312Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
2313
2314 * Release of E2fsprogs version 1.10
2315
2316Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2317
2318 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
2319 where ext2fs_get_next_inode returns the
2320 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
2321
2322Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2323
2324 * Release of E2fsprogs version 1.09
2325
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00002326Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2327
2328 * Release of E2fsprogs version 1.08
2329
Theodore Ts'o521e3681997-04-29 17:48:10 +00002330Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2331
2332 * pass1b.c (clone_file_block): If we clone a directory, we need to
2333 update the dblist entry so that we check (and correct) the
2334 right directory block.
2335
2336Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2337
2338 * pass1.c (process_block): Don't clear blocks references to
2339 filesystem metadata; let pass 1B handle this case.
2340
2341 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
2342
2343 * pass1b.c (pass1d): Deal with a block which is shared with
2344 filesystem metadata.
2345
2346 * e2fsck.h: Make block_illegal_map be a global variable
2347
2348Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2349
2350 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
2351 feature.
2352 (get_backup_sb): New function which attempts to obtain the
2353 correct backup superblock (if possible).
2354
2355Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2356
2357 * e2fsck.c (main): Check the version of the library, and warn if
2358 the library is out of date; this happens generally due to
2359 users who manually install e2fsprogs.
2360
2361 * pass1.c (pass1_get_blocks): If the passed in inode number for
2362 get_blocks isn't what we're expecting pass back
2363 EXT2_ET_CALLBACK_NOT_HANDLED.
2364
Theodore Ts'o21c84b71997-04-29 16:15:03 +00002365Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
2366
2367 * Release of E2fsprogs version 1.07
2368
2369Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2370
2371 * icount.c: New file which implements an inode count abstraction.
2372 This significantly reduces amount of memory needed to
2373 check really large filesystems.
2374
2375 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
2376 abstraction.
2377
2378Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2379
2380 * dirinfo.c (dir_info_iter): New function which allows iteration
2381 over the directories in the dir_info map.
2382
2383 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
2384 over all directories in the dir_info structure, instead of
2385 iterating all inodes looking for directories, and then
2386 looking up the directories using get_dir_info().
2387
2388Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2389
2390 * pass1.c (pass1, process_block):
2391 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
2392 manual code to manage the directory block list information.
2393
2394 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
2395 (deallocate_inode): Call the ext2 library routine
2396 ext2_inode_has_valid_blocks() instead of
2397 inode_has_valid_blocks().
2398
2399 * swapfs.c (swap_inodes): Add check so that we don't try to call
2400 swap_inode_blocks unless the inode has valid blocks.
2401 (Otherwise a long fast symlink might cause
2402 swap_inode_blocks to erroneously get called.)
2403
2404Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2405
2406 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
2407 PR_2_DOT_DOT_NULL_TERM.
2408
2409 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
2410 .. entries are null-terminated, since the 2.0 kernel
2411 requires this (for no good reason).
2412
2413Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2414
2415 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
2416 that we can recover from missing inode tables.
2417
2418 * dirinfo.c (get_dir_info): If there are no directories in the
2419 dir_info abstraction, don't core dump (because dir_info is
2420 NULL).
2421
2422 * e2fsck.c (main): Don't try using the backup superblocks if there
2423 aren't any.
2424 (check_super_block): If there are illegal inode table or
2425 bitmaps, set the filesystem as being in error.
2426
2427Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2428
2429 * pass2.c (check_dir_block): Added check to make sure that rec_len
2430 is a a multiple of 4 (so that the directory entries are
2431 4-byte aligned).
2432
2433Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2434
2435 * Makefile.in (uninstall): Uninstall all programs in the PROGS
2436 line.
2437 (PROGS): Don't build and install the extend program by
2438 default.
2439
2440
2441Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2442
2443 * pass1.c (process_inodes): Make sure the stashed_ino variable is
2444 saved and restored as well.
2445 (pass1): For fast sym links, skip the check_blocks
2446 processing step altogether.
2447
2448Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2449
2450 * problem.c, message.c: New files, to completely refurbish how
2451 filesystem problems are reported to the user. The
2452 diagnostic messages are now encoded out in an easily
2453 customizable, extensible format. The messages printed out
2454 in preen mode are all on one line, and contain the device
2455 name.
2456
2457Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2458
2459 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
2460 deleted files.
2461
2462 * pass1.c (pass1): Ignore missing inode table errors during the
2463 scan, and just skip past those inodes.
2464
2465 * pass3.c (check_root): Remove root_ino argument, and assume that
2466 the root inode must be EXT2_ROOT_INO. Move responsibility
2467 of setting the parent of the root inode in the directory
2468 inode structure to pass2().
2469
2470 * pass2.c (check_dir_block): Don't allow links to the root
2471 directory.
2472
2473 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
2474 since the inode is no longer used.
2475
2476Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2477
2478 * e2fsck.c (main): If the superblock magic number is wrong, or the
2479 block group fails a sanity check, then automatically
2480 restart trying to use the backup superblocks.
2481
2482 * pass1.c (mark_table_blocks): Make the inode tables ahead of
2483 everything else; in the case where a bitmap block overlays
2484 the inode table, the inode table should take precedence.
2485
2486 * pass2.c (maybe_clear_entry): Make the deleted/unused error
2487 message fit on one line, since the error can happen during
2488 a preen pass. (We eventually need to revamp the whole
2489 e2fsck error reporting and prompting system, but that's a
2490 job for another day.)
2491
2492Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2493
2494 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
2495 for the benefit of the inode scan functions.
2496
2497 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
2498 indicating that an inode is in a bad block, mark that
2499 inode as being used, as well as in the inode "bb" map.
2500
2501 * pass2.c (maybe_clear_entry): New function which generalizes the
2502 error cases when a directory entry needs to be cleared.
2503 (check_dir_block): If an inode is in the "bb" map, offer
2504 to clear the directory entry, since the inode is in a bad
2505 block.
2506
2507 * pass4.c (pass4): If an inode is marked as used, but is is marked
2508 in the "bb" map, don't process it as a disconnected inode.
2509
2510Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2511
2512 * Release of E2fsprogs version 1.06
2513
Theodore Ts'o5c576471997-04-29 15:29:49 +00002514Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2515
2516 * e2fsck.c (main): Print out the version number of the shared
2517 library when using the -V option.
2518
2519 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
2520 consistency's sake.
2521
2522 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
2523 out the backup superblocks when we know we have a valid
2524 filesystem.
2525
2526Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2527
2528 * util.c (preenhalt): Make it explicit on preenhalt that running
2529 e2fsck manually means without the -a or -p flag.
2530
2531Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2532
2533 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
2534 (Linux/FT actually sets the mode bits, so we have to
2535 handle it specially.)
2536
2537 * e2fsck.c (check_if_skip): Print a message if the filesystem is
2538 just dirty, so that the user knows that it's about to be
2539 checked (since this will take a while).
2540
2541Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2542
2543 * pass4.c: If a disconnected inode is zero-length, prompt to
2544 delete it instead of connecting it to lost+found.
2545
2546Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2547
2548 * Release of E2fsprogs version 1.05
2549
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00002550Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2551
2552 * pass4.c (pass4): If the user refuses to connect an unattached
2553 inode to lost+found, don't try to set i_links_count. This
2554 is bad, since if the user says yes, the inode will be
2555 marked as unused, which is not necessarily the right
2556 thing, especially since the rest of the cleanup doesn't
2557 happen here.
2558
2559 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
2560 dellocating an inode. (Not strictly necessary, but...)
2561
2562 * pass4.c (pass4): Add "bonehead" explanation to the "programming
2563 error" message.
2564
2565Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2566
2567 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
2568 byte-swap the filesystem so that it is normalized. -S
2569 will byte-swap the filesystem regardless of its current
2570 byte-order.
2571
2572 * swapfs.c: New file, which will byte-swap a filesystem.
2573
2574Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2575
2576 * pass1.c (pass1): Change handling on files with non-zero dtime
2577 and non-zero i_link_count; before we treated them as
2578 deleted file per botched ext2 0.3c kernel behavior. We
2579 now clear dtime instead.
2580
2581Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2582
2583 * e2fsck.c (main): If e2fsck sets the clean bit, even if
2584 nothing else is changed, make sure FSCK_NONDESTRUCT is
2585 set (since after all having the filesystem set to
2586 invalid is an error. :-)
2587
2588Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2589
2590 * pass1.c (process_block): Make sure that meta data doesn't get
2591 accidentally set in the dir_blocks array (which could
2592 happen in some error condtions).
2593
2594 * pass1.c (pass1):
2595 * pass2.c (process_bad_inode): Check for fragments in a
2596 OS-independent fashion.
2597
2598Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2599
2600 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
2601 cleanup for the filesystem.
2602
2603Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2604
2605 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
2606
Theodore Ts'o62c06f71997-04-29 14:34:47 +00002607Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2608
2609 * Release of E2fsprogs version 1.04
2610
2611Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2612
2613 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
2614 try "e2fsck -b 8193" before allowing e2fsck to relocate
2615 inode table blocks.
2616
2617 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
2618 depending on the option to configure. Added targets for
2619 e2fsck.static and e2fsck.shared for people who want to
2620 build a static or shared variant manually.
2621
Theodore Ts'o7f88b041997-04-26 14:48:50 +00002622Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
2623
2624 * Release of E2fsprogs version 1.03
2625
2626Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
2627
2628 * e2fsck.c (show_stats): Don't use floating point to display
2629 percentage of non-contiguous files, as different libc
2630 handle result truncation differently, and this causes the
2631 test suite to bomb out depending on which libc you are
2632 using.
2633
2634 * util.c (allocate_memory): Fix error message to omit extraneous
2635 %%s.
2636
2637Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
2638
2639 * pass4.c (pass4):
2640 * pass2.c (check_dir_block):
2641 * pass1.c (pass1): Add support for dynamic first inode revision.
2642
2643Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
2644
2645 * pass3.c (check_root): Fix spelling typo
2646
2647Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
2648
2649 * e2fsck.c (check_super_block): If the superblock fails certain
2650 internal consistency checks, exit with a fatal error after
2651 printing the "superblock is corrupt message".
2652
Theodore Ts'o74becf31997-04-26 14:37:06 +00002653Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
2654
2655 * Release of E2fsprogs version 1.02
2656
2657Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
2658
2659 * pass1.c (process_block): Check to see if a file is "fragmented".
2660 i.e., non-contiguous. Note that any file which is larger
2661 than the block group is guaranteed to be non-contiguous.
2662 We may want to use a different hueristic for deciding
2663 whether or not a file is "fragmented".
2664
2665 * e2fsck.c (show_stats): Print statistics of how many
2666 non-contiguous files are on the system.
2667
2668Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
2669
2670 * badblocks.c (read_bad_blocks_file, test_disk): Fold
2671 functionality of test_disk() (which runs badblocks) into
2672 read_bad_blocks_file(); test_disk() now calls
2673 read_bad_blocks_file() with a NULL bad_blocks_file
2674 argument.
2675
2676Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
2677
2678 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
2679 #if defined(linux). The latter won't work if we're
2680 compiling -ansi.
2681
Theodore Ts'o297f47a1997-04-26 14:25:20 +00002682Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
2683
2684 * e2fsck.c (check_mount): For Linux systems, the check to see if
2685 the root is mounted read-only has to be done for all
2686 filesystems, not just for the root filesystem, due to the
2687 way that some /etc/rc scripts are set up.
2688
Theodore Ts'o50e1e101997-04-26 13:58:21 +00002689Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
2690
2691 * Makefile.in (install): Strip programs when they are installed.
2692 (e2fsck): Build e2fsck statically.
2693
2694Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
2695
2696 * util.c (preenhalt): Preenhalt now takes an argument, which is an
2697 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
2698 flag in the superblock in cases where preenhalt is called.
2699 All calls to preenhalt() were changed to either
2700 preenhalt(fs) or preenhalt(NULL) in a few cases where the
2701 fs pointer was not available. (Most notable, for block
2702 read/write errors.)
2703
2704Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
2705
2706 * ehandler.c:
2707 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
2708
2709Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
2710
2711 * e2fsck.c (show_stats): Show statistics about how many inodes
2712 have indirect, doubly indirect, and triply indirect
2713 blocks. Allow up to 8 digits for statistics, instead of
2714 merely 6, so things look pretty for large filesystems.
2715
2716 * pass1.c (pass1): Keep statistics about indirect, doubly
2717 indirect, and triply indirect blocks.
2718
2719 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
2720 pass 1.
2721
2722Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
2723
2724 * util.c, ehandler.c: Move #include of <sys/resource.h> after
2725 #include of "e2fsck.h", since sys/resource.h may depend on
2726 sys/time.h, which is #included in e2fsck.h.
2727
2728Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
2729
2730 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
2731 function to determine if the device is mounted.
2732
2733 * e2fsck.c (main): Add better error messages if ext2fs_open()
2734 fails.
2735
2736Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
2737
2738 * pass1.c (check_blocks): If we're clearing a directory, clear
2739 pb.is_dir so we don't do the following check of making
2740 sure the directory size matches; this is pointless, since
2741 we've already cleared the inode.
2742
2743Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2744
2745 * pass1.c (bad_primary_block): New function, called by
2746 process_bad_block, which explains the facts of life to the
2747 user when a block in the primary superblock or primary
2748 group descriptors is bad.
2749
2750 * pass2.c (check_dot): Handle the case where the first directory
2751 entry is used, but not ".".
2752
2753 * pass2.c (check_dotdot): Handle the case where the second directory
2754 entry is used, but is not "..".
2755
2756Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2757
2758 * e2fsck.c (check_super_block): Get the size of the physical
2759 device and if it is smaller than the reported size of the
2760 filesystem, report an error.
2761
2762Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
2763
2764 * e2fsck.c (check_if_skip): Print the number of allocated files and
2765 blocks on clean filesystems.
2766
2767Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
2768
2769 * e2fsck.8: Updated date and version number.
2770
2771Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
2772
2773 * pass1.c (check_blocks): Check that directory size matches *exactly*
2774 the count of allocated blocks.
2775
2776Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
2777
2778 * pass1b.c (pass1d): Free the shared[] array when we're done with
2779 it to avoid a memory leak.
2780
2781 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
2782 block_dup_map.
2783
2784 * pass2.c (process_bad_inode): When clearing the inode, make sure
2785 the pathname is freed, to prevent a memory leak.
2786
2787 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
2788 when we're finished with them.
2789 (check_block_bitmaps): Free free_array when we're finished
2790 with them.
2791
2792 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
2793 linking the executable.
2794
2795 * pass2.c (process_bad_inode): Even on OS's that don't support the
2796 fragment fields, make sure the Linux equivalent fields are
2797 set to zero. If an OS wants to reuse these fields, which
2798 is probably a bad idea (although we may get desperate in
2799 the future) this code will have to be changed.
2800
2801 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
2802 on the inode field, and then blockcnt field. This is just
2803 to keep the ordering of dir_blocks the same on all
2804 platforms when there are more than on missing directory
2805 blocks, which are indicated directories with holes, which
2806 are indicated with the block number being set to zero.
2807
2808Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2809
2810 * pass1.c (check_blocks, process_block): check_blocks() modified
2811 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
2812 the inode is a directory. process_block() now checks to
2813 see if a directory has a "hole", or missing block. If so,
2814 this fact is recorded in the directory block list so that
2815 the problem can be resolved in pass #2.
2816
2817 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
2818 allocate new blocks for directories with "holes". Called
2819 out of check_dir_block if a block in the directory block
2820 list is zero.
2821
2822 * pass3.c (get_lost_and_found): Move location of free(block) to
2823 prevent possible memory leak.
2824
2825Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2826
2827 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
2828 instead of alloca() --- alloca is not portable! Check to
2829 make sure the filename is not longer than EXT2_NAME_LEN,
2830 and offer to fix it by truncating it, since it should
2831 never happen.
2832
2833 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
2834 not portable!! In any case putenv() in some systems must
2835 take a static character array or malloc()'ed memory;
2836 passing memory allocated using alloca() to putenv() is not
2837 advisable.
2838
2839 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
2840 alloca() --- alloca() is not portable!!!
2841
2842Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
2843
2844 * pass1b.c (pass1c):
2845 * pass3.c (check_root, get_lost_and_found):
2846 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
2847 to read/write the directory block.
2848
2849Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
2850
2851 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
2852 make sure VMIN and VTIME are set correct.
2853
2854Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
2855
2856 * pass1.c (mark_block_used): Change to be an inline function.
2857 Assume that the block validity checks are already done,
2858 and use the fast variant of the bitmap functions.
2859
2860Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
2861
2862 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
2863 bounds of the bitmaps in advance, and then use the fast
2864 variant of e2fs_test_{block,inode}_bitmap.
2865
2866 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
2867 the bounds checking has already been done earlier.
2868
2869Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
2870
2871 * pass1.c (pass1): Allocate and free the block_illegal_map, which
2872 is used for shortcut processing in process_block.
2873 (mark_table_blocks): Initialize block_illegal_map with the
2874 filesystem blocks.
2875 (describe_illegal_block): New helper function that
2876 describes why a block is illegal.
2877 (process_block): Use block_illegal_map as a shortcut
2878 to determine whether a block is bad. Use
2879 describe_illegal_block to print out why the block is illegal.
2880
2881Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
2882
2883 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
2884
2885 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
2886 <mntent.h> if they don't exist. (Mostly so that "make
2887 depend" works.)
2888
2889 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
2890 it exists).
2891
2892 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
2893 exist.
2894
2895Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2896
2897 * pass2.c (process_bad_inode, check_for_zero_long,
2898 check_for_zero_char): Change long to u32, and char to u8.
2899
2900Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2901
2902 * util.c (inode_has_valid_blocks):
2903 * pass2.c (process_bad_inode):
2904 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
2905 LINUX_S_IS* instead of S_IS*.
2906
2907 * e2fsck.h: Don't #include <sys/stat.h>
2908
2909 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
2910 this program is pretty much useless if BLKFLSBUF isn't
2911 supported.)
2912
2913 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
2914 used.
2915
2916Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
2917
2918 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
2919 to allocate space for file names instead of using fixed size buffers.
2920 (process_bad_inode): Only check inode frag fields if
2921 HAVE_EXT2_FRAGS is defined (by configure).
2922 * pass1.c (pass1): Only check the inode frag fields if
2923 HAVE_EXT2_FRAGS is defined (by configure).
2924
2925 * e2fsck.c (check_mount): Only check for a mounted filesystem if
2926 HAVE_MNTENT_H is defined (by configure).
2927 (PRS): Use alloca to allocate the new path string, instead of
2928 having a fixed size buffer (which was the wrong size anyway).
2929 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
2930 is defined.
2931
2932 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
2933 defined (by configure).
2934
2935 * Makefile.in: Rewritten to conform to GNU coding standards and
2936 support separate compilation directories.
2937
2938Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
2939
2940 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
2941
Theodore Ts'of3db3561997-04-26 13:34:30 +00002942Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
2943
2944 * pass1.c (unwind_pass1): Clear the file type statistics counter
2945 when pass 1 needs to be restarted from scratch.
2946
2947 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
2948 being reallocated to blocks in the next block group,
2949 instead of the current block grup.
2950
2951 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
2952 inode.i_links_count is set.
2953
2954Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
2955
2956 * pass1.c (process_block): Add checks for if the block is
2957 trepassing on a superblock or group descriptor table.
2958
2959Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
2960
2961 * main.c (corrupt_msg): Extend the message which is printed out
2962 when the superblock is corrupt, to include the suggestion
2963 of using the -b option to specify an alternate superblock.
2964
2965Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
2966
2967 * badblocks.c (read_bad_blocks_file): If we are adding or
2968 replacing bad blocks in the bad blocks inode, sanity check
2969 the bad block inode first, and clear out any illegal blocks.
2970
2971 * pass2.c (check_name): Don't bomb out if the attempt to get the
2972 pathname of the containing directory returns an error; the
2973 directory may be too badly damaged to expect that
2974 ext2fs_get_pathname will always succeed. Use "???" if the
2975 pathname can't be obtained (it's only for a printf to the
2976 user anyway).
2977
2978 The name of the containing directory and the bad filename
2979 were incorrectly interchanged in the user message. Fixed.
2980
2981 * pass2.c (check_name, check_dir_block): Use a common static
2982 string for the unknown pathname.
2983
2984Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
2985
2986 * Fixed lots of printf formats to make sure that block and inode
2987 numbers are printed as unsigned integers.
2988
2989Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
2990
2991 * pass5.c (check_block_end): Fix calculation of how the last block
2992 in the block bitmap should be calculated.
2993
2994Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
2995
2996 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
2997 be an ext2fs_inode_bitmap, and free it properly.
2998
2999 * e2fsck.h
3000 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
3001 level to the superblock.
3002
3003Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
3004
3005 * e2fsck.c (usage): Fixed bogus usage message.
3006
3007Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
3008
3009 * pass1.c (process_bad_block): Fixed bug so that blocks in the
3010 backup superblocks and group descriptors are handled gracefully.
3011