blob: b7ad3f36d8c492c42bb190b4d32d3fddd5ed80e6 [file] [log] [blame]
Theodore Ts'o542867f2002-07-24 07:42:02 -040012002-07-24 Theodore Ts'o <tytso@mit.edu>
2
3 * util.c (ask_yn, read_a_char): Note when the user has typed ^C,
4 and abort processing by longjmp'ing to ctx->abort_loc.
5
Theodore Ts'o3214a452002-07-23 12:00:00 -040062002-07-23 Theodore Ts'o <tytso@mit.edu>
7
8 * pass1.c (e2fsck_pass1): If e2fsck is run with -n, don't create
9 the dirs_to_hash list, since we don't want to reindex
10 directories if the filesystem is opened read-only.
11
Theodore Ts'o4cae0452002-07-21 14:14:03 -0400122002-07-21 Theodore Ts'o <tytso@mit.edu>
13
14 * e2fsck.8.in: Document new exit code FSCK_CANCELED
15
16 * unix.c (PRS, signal_cancel): Capture SIGINT and SIGTERM signals
17 and set a flag in the e2fsck context indicating that
18 cancellation has been requested, so that e2fsck will exit
19 only at safe points.
20 (main): Change the exit handling so that if a cancellation
21 is requested, return FSCK_CANCELED (a new exit code 32).
22 e2fsck can now return more than one exit code as part of a
23 bitmask (as had been documented in the man page).
24
25 * pass2.c (e2fsck_pass2, check_dir_block), pass3.c (e2fsck_pass3),
26 pass4.c (e2fsck_pass4): Check to see if a cancellation was
27 requested, and abort processing if necessary.
28
Theodore Ts'ob7a00562002-07-20 00:28:07 -0400292002-07-19 Theodore Ts'o <tytso@mit.edu>
30
31 * rehash.c, Makefile.in: New file which rewrites directories using
32 the htree format.
33
34 * problem.c (fix_problem), problemP.h (PR_PREEN_NOHDR): Add option
35 which suppresses the header printed when in preen mode.
36
37 * pass3.c (e2fsck_pass3): If there are entries on the dirs_to_hash
38 list, call e2fsck_rehash_directories to reindex those
39 directories.
40 (e2fsck_expand_directory): Generalize the old
41 expand_dirctory() function so it can expand a directory to
42 a guaranteed minimum size.
43
44 * e2fsck.h (struct e2fsck_struct): Add the dirs_to_hash list. Add
45 new function prototypes for rehash.c and for
46 e2fsck_expand_directory().
47
48 * e2fsck.c (e2fsck_reset_context): Free the dirs_to_hash list.
49
50 * pass1.c (e2fsck_pass1): Initialize the dirs_to_hash list if the
51 htree feature is present in the filesystem.
52 (check_blocks): If a non-htree directory has more than 2
53 blocks, put it on the dirs_to_hash list.
54
55 * pass2.c (clear_htree): Add corrupt htree directories to the
56 dirs_to_hash list.
57
58 * problem.h, problem.c (PR_3A_PASS_HEADER, PR_3A_REHASH_ITER,
59 PR_3A_REHASH_DIR_ERR, PR_3A_REHASH_DIR_HEADER,
60 PR_3A_REHASH_DIR, PR_3A_REHASH_DIR_END): Add new problem codes
61
62 * pass2.c (parse_int_node), problem.c (PR_2_HTREE_BADBLK): Fix
63 problem display.
64
Theodore Ts'o62acaa12002-07-15 16:54:42 -0400652002-07-15 Theodore Ts'o <tytso@mit.edu>
66
67 * pass2.c (e2fsck_pass2): Use dx_dir->numblocks instead of
68 dx_dir->ino to indicate that a bad inode was cleared.
69
Theodore Ts'o503f9e72002-06-26 16:52:10 -0400702002-06-26 Theodore Ts'o <tytso@mit.edu>
71
72 * pass1.c (check_blocks): Move htree handling to handle_htree().
73 Factor out calls to ext2fs_write_inode so that it happens
74 if dirty_inode is non-zero.
75 (handle_htree): Add checks for invalid htree root, invalid
76 hash version, invalid hash version, and htree depth too deep.
77
78 * problem.h, problem.c (PR_1_HTREE_NODIR, PR_1_HTREE_BADROOT,
79 PR_1_HTREE_HASHV, PR_1_HTREE_INCOMPAT, PR_1_HTREE_DEPTH):
80 Add new problem codes.
81
82 * pass2.c (parse_int_node): Fix silly typo.
83 (check_dir_block): Change to use new ext2fs_dirhash()
84 function prototype.
85 (pass2): Fixed two minor bugs discovered by the test case:
86 Don't stop checking dxdir's after clearing a bad inode.
87 If there is a bad max hash, make sure the bad_dir flag
88 is set to make sure we try to clear inode.
89
Theodore Ts'o8fdc9982002-06-25 23:26:34 -0400902002-06-25 Theodore Ts'o <tytso@mit.edu>
91
92 * e2fsck.c (e2fsck_reset_context): Free the dx_dirinfo structure.
93
94 * message.c: Add new abbrevations @h and @p, "HTREE directory
95 inode" and "problem in".
96
97 * pass1.c (check_blocks): If the inode has the INDEX_FL flag,
98 register the block into the indexed directory data
99 structures. Or if the filesystem doesn't have the
100 DIR_INDEX flag, offer to clear the INDEX_FL.
101
102 * pass2.c (e2fsck_pass2, parse_int_node): Add support check htree
103 directories (we don't check all possible corruptions yet).
104
105 * problem.h, problem.h (PR_1_HTREE_SET, PR_2_HTREE_NOTREF,
106 PR_2_HTREE_DUPREF, PR_2_HTREE_MIN_HASH, PR_2_HTREE_MAX_HASH,
107 PR_2_HTREE_CLEAR, PR_2_HTREE_FCLR, PR_2_HTREE_BADBLK): Add
108 new problem codes.
109
110 * unix.c (main): If ENABLE_HTREE is not defined, complain if the
111 filesystem has the dir_index feature.
112
113 * Makefile.in, e2fsck.h, dx_dirinfo.c: New file (and group of
114 functions) which keeps track of blocks in HTREE directory
115 blocks.
116
Andreas Dilgerb21bf262002-06-10 11:05:56 -06001172002-05-22 Andreas Dilger <adilger@clusterfs.com>
118
119 * super.c (check_superblock): Check that the number of inodes and
120 blocks in a group is less than 2^16, so that the free inode
121 and block counts for a group fit into the group descriptor
122 table fields. Any more than that would need a COMPAT flag.
123
Theodore Ts'o0d634672002-05-22 00:22:38 -04001242002-05-22 Theodore Ts'o <tytso@mit.edu>
125
126 * pass1.c (check_ext_attr): Update to support the V2 Bestbits EA
127 format. We automatically determine from the first EA
128 block we visit whether we are using the V1 or V2 format.
129
Theodore Ts'oda307042002-05-21 21:19:14 -04001302002-05-21 Theodore Ts'o <tytso@mit.edu>
131
132 * pass1.c (process_block): If an inode has too many blocks or
133 is too big, then offer to truncate the inode.
134 (check_blocks): Don't bother checking the size to see if
135 it's too big, since that's just a symptom, not the disease
136 (which we're now appropriately checking in process_block).
137
138 * problem.c, problem.h: Add new problem codes PR_1_INODE_TOOBIG,
139 PR_1_TOOBIG_DIR, PR_1_TOOBIG_REG, PR_1_TOOBIG_SYMLINK, and
140 add the latch code PR_LATCH_TOOBIG.
141
Theodore Ts'obcf9c5d2002-05-21 09:14:17 -04001422002-05-20 Theodore Ts'o <tytso@mit.edu>
143
144 * e2fsck.h, pass1.c (e2fsck_pass1_check_symlink), pass2.c
145 (e2fsck_process_bad_inode): Add an extra
146 argument so a scratch buffer can be passed into the
147 function.
148
149 * pass1.c (e2fsck_pass1_check_device_inode,
150 e2fsck_pass1_check_symlink): If the EXT2_INDEX_FL flag is
151 set, then the device/FIFO is invalid.
152 (check_immutable): Don't check for EXT2_INDEX_FL; we take
153 care of that elsewhere now.
154 (e2fsck_pass1): Check to see if the symlink is valid
155 before we offer to clear any immutable bits. This matches
156 the order in which we check other special files.
157
158 * pass2.c (e2fsck_pass2): Allocate a bigger scratch buffer so we
159 can pass part of it to e2fsck_process_bad_inode.
160
161 * pass4.c (e2fsck_pass4): If we need to call
162 e2fsck_process_bad_inode(), allocate the necessary scratch
163 buffer.
164
165 * problem.h, problem.c: Change PR_2_SYMLINK_SIZE to be
166 PR_2_INVALID_SYMLINK, and change the text
167 accordingly. Revert the text change for PR_1_SET_IMMUTABLE
168 since we no longer check for EXT2_INDEX_FL in
169 check_immutable().
170
1712002-05-18 Andreas Dilger <adilger@clusterfs.com>
172
173 * pass1.c (e2fsck_pass1_check_symlink): Remove checks of
174 immutable/append-only checks, since this is handled by
175 check_immutable. For non-fast symlinks, read in the
176 data block and check the length to make sure it
177 matches with the inode size.
178 (check_immutable): Generalize to also check for the
179 EXT2_INDEX_FL flag.
180 (check_blocks): For non-regular files, signal a bad inode
181 size if i_size_high is non-zero.
182
183 * pass2.c: Only count large files if they are regular files
184 (not just if they aren't directories).
185
186 * problem.c, problem.h: Change comment for PR_2_SYMLINK_SIZE
187 to indicate that it can be triggered by any symlink,
188 not fast symlink. Change text for PR_1_SET_IMMUTABLE
189 to indicate that it the EXT2_INDEX_FL was set.
190
Theodore Ts'o31e29a12002-05-17 10:53:07 -04001912002-05-17 Theodore Ts'o <tytso@mit.edu>
192
193 * pass1.c (e2fsck_pass1): When calculating max_sizes, omit capping
194 this value by the calculated value of max_sect_sizes.
195 The inode may be a sparse inode, and the limit of
196 max_sect_sizes assumed a non-sparse inode and a limit
197 based on a 32-bit i_blocks field measured in 512 sectors.
198
199 * super.c (check_super_block): Fix check for s_log_block_size so
200 that takes into account fact that there is an offset of
201 EXT2_MIN_BLOCK_LOG_SIZE.
202
203 * pass1.c: Allocate max_sizes array to be big enough to support
204 the larger block sizes.
205
2062002-05-16 Andreas Dilger <adilger@clusterfs.com>
207
208 * unix.c (main), util.c (get_backup_sb): Use EXT2_MAX_BLOCK_SIZE
209 instead of using a hardcoded value of 4096.
210
211 * super.c (check_super_block): Change checks for s_log_block_size
212 s_log_frag_size so they support the larger block sizes.
213
214 * pass1.c (e2fsck_pass1): Calculate max_sizes array for block
215 sizes up to EXT2_MAX_BLOCK_SIZE (to support block sizes
216 greater than 4k).
217
Theodore Ts'oa8e77242002-03-08 03:12:14 -05002182002-03-08 Theodore Tso <tytso@mit.edu>
219
220 * Release of E2fsprogs 1.27
221
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05002222002-03-07 Theodore Tso <tytso@mit.edu>
223
224 * journal.c, pass5.c, revoke.c: Fix gcc -Wall complaints
225
2262002-03-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'of2d5c932002-03-07 03:13:07 -0500227
228 * unix.c (main): Don't close the filesystem before calling
229 fatal_error(); this just causes a needless warning about a
230 bad I/O manager magic number.
231
232 * journal.c (e2fsck_check_ext3_journal): Offer to clear the inode
233 in case the journal is too small, or the inode number in
234 the superblock doesn't appear to be random.
235
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05002362002-03-06 Theodore Tso <tytso@mit.edu>
Theodore Ts'of1226322002-03-07 02:47:07 -0500237
238 * problem.h, problem.c: PR_5_BLOCK_RANGE_UNUSED,
239 PR_5_BLOCK_RANGE_USED, PR_5_INODE_RANGE_UNUSED,
240 PR_5_INODE_RANGE_USED: Add new problem codes.
241
242 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Collapse
243 reporting of adjacent blocks and inodes into a range.
244
Theodore Ts'o14308a52002-03-05 03:26:52 -05002452002-03-04 Philipp Thomas <pthomas@suse.de>
246
247 * unix.c (main): Newer libintl needs LC_CTYPE to be set in
248 addition to LC_MESSAGES.
249
Theodore Ts'o57173d02002-02-26 14:59:39 -05002502002-02-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'ob9f40922002-02-24 03:08:57 -0500251
252 * Makefile.in (install): Install hard links for man pages for
253 fsck.ext2 and fsck.ext3. Remove any compressed man
254 pages before installing the man pages.
255
Theodore Ts'o57173d02002-02-26 14:59:39 -05002562002-02-22 Theodore Tso <tytso@mit.edu>
Theodore Ts'od1a21822002-02-22 00:17:59 -0500257
258 * journal.c: Improve code maintainability and reduce code size by
259 moving common code paths in e2fsck_journal_init_dev() and
260 e2fsck_journal_init_inode() into e2fsck_get_journal().
261 Also fixed a memory leak in recover_ext3_journal().
262
263 * super.c (release_orphan_inodes): Fix memory leak.
264
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05002652002-02-03 Theodore Tso <tytso@thunk.org>
266
267 * Release of E2fsprogs 1.26
268
2692001-12-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o3ed57c22001-12-24 15:01:59 -0500270
271 * unix.c (PRS): Don't allow the -c and -l/-L options to be
272 specified at the same time.
273
274 * e2fsck.h (E2F_OPT_WRITECHECK), unix.c (PRS),
275 badblocks.c (read_bad_blocks_file): If two -c options are
276 specified, then perform a non-destructive read/write scan
277 of the disk.
278
279 * e2fsck.8.in: Document the double -c option; also encourage users
280 to use -c instead of the -l/-L options since it's too hard
281 for users to get things like the blocksize parameter correct.
282
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05002832001-12-23 Theodore Tso <tytso@mit.edu>
Theodore Ts'o19007e52001-12-23 19:33:51 -0500284
Theodore Ts'of1a17612001-12-23 22:27:52 -0500285 * util.c (get_backup_sb): This function now searches for the
286 backup superblock by iterating over possible blocksizes
287 instead of defaulting a guess of 8193 if the superblock
288 isn't available.
289
290 * message.c (expand_percent_expression), unix.c (main): Pass in
291 new parameters to get_backup_sb. Also, in unix.c, use the
292 blocksize paramter in the e2fsck context structure instead
293 of using a static variable, since get_backup_sb wants to
294 be able to set the blocksize paramter.
295
296 * e2fsck.h: Update function prototype for get_backup_sb; also add
297 the blocksize parameter to the e2fsck context structure.
298
Theodore Ts'o19007e52001-12-23 19:33:51 -0500299 * Makefile.in, jfs_user.h: Move linux/jbd.h to
300 ext2fs/kernel-jbd.h, to avoid using the system header
301 file version of hbd.h when using diet glibc (since it
302 forcibly adds /usr/include to the beginning of the
303 include search path.)
304
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05003052001-12-21 Theodore Tso <tytso@mit.edu>
Theodore Ts'od37066a2001-12-21 23:28:54 -0500306
Theodore Ts'o6a50c5e2001-12-21 23:29:35 -0500307 * problem.c (fix_problem): Use ctx->filesystem_name if the
308 ctx->device_name is NULL.
309
Theodore Ts'od37066a2001-12-21 23:28:54 -0500310 * journal.c (e2fsck_check_ext3_journal): Give the opportunity to
311 run the journal even if recovery flag is cleared. If
312 we're using a backup superblock, run the journal by
313 default.
314
315 * e2fsck.h (E2F_OPT_FORCE), unix.c (PRS, check_if_skip): Use a
316 bitfield in the e2fsck context flags word to indicate
317 whether or not a check should be forced. This allows the
318 journal code to set the option if necessary to force a
319 filesystem check.
320
321 * problem.h, problem.c: Remove PR_0_JOURNAL_RESET_JOURNAL, and add
322 PR_0_JOURNAL_RUN and PR_0_JOURNAL_RUN_DEFAULT. Update
323 problem decription texts.
324
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05003252001-12-16 Theodore Tso <tytso@mit.edu>
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500326
Theodore Ts'o4ea7bd02001-12-16 23:23:37 -0500327 * e2fsck.h (ext2fs_get_refcount_size), unix.c (check_mount, PRS),
328 pass1.c (adjust_extattr_refcount),
329 ea_refcount.c (ea_refcount_create): Fix gcc -Wall nits.
330
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500331 * recovery.c, revoke.c: Update to versions from 2.4.17-pre8.
332
333 * journal.c, jfs_user.h: Update support code for new version of
334 recover.c and revoke.c. Fix support for filesystems with
335 external journals.
336
Gabriel Paubertb3b3d462001-11-30 13:45:28 +01003372001-11-30 Gabriel Paubert <paubert@iram.es>
338
339 * journal.c (e2fsck_journal_load): Fix an endianness bug.
340
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05003412001-11-26 Theodore Tso <tytso@mit.edu>
Theodore Ts'o24bfb442001-11-26 15:51:14 -0500342
343 * super.c (check_super_block): Make sure that if the inode table
344 or allocation bitmap is zero, that it is marked as
345 invalid, so that in pass #1, a new bitmap/inode table gets
346 properly allocated. (Addresses Debian Bug #116975)
347
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05003482001-11-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o1e9a7e02001-11-24 16:40:57 -0500349
350 * e2fsck.8.in: Fix minor typo in man page and clarify device
351 specification.
352
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05003532001-10-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'o62e3e7f2001-10-07 02:13:30 -0400354
355 * journal.c (clear_v2_journal_fields, e2fsck_journal_load): If the
356 V2 fields are set on a V1 journal superblock, or an
357 internal V2 journal has s_nr_users is non-zero, clear the
358 entire journal superblock beyond the V1 superblock. This
359 fixes botched V1->V2 updates.
360
361 * problem.c, problem.h (PR_0_CLEAR_V2_JOURNAL): Add new problem code.
362
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05003632001-09-20 Theodore Tso <tytso@mit.edu>
Theodore Ts'o773fd8a2001-10-06 21:26:27 -0400364
365 * e2fsck.h, journal.c (e2fsck_move_ext3_journal): Add new function
366 which will automatically relocate the ext3 journal from a
367 visible file to an invisible journal file if the
368 filesystem has been opened read/write.
369
370 * super.c (check_super_block): Add call to e2fsck_move_ext3_journal
371
372 * problem.c, problem.h (PR_0_MOVE_JOURNAL, PR_0_ERR_MOVE_JOURNAL):
373 Add new problem codes.
374
Theodore Ts'ofbf91112001-09-20 10:47:47 -04003752001-09-20 Theodore Tso <tytso@thunk.org>
376
377 * Release of E2fsprogs 1.25
378
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05003792001-09-19 Theodore Tso <tytso@mit.edu>
Theodore Ts'oae6cdcf2001-09-19 15:17:25 -0400380
381 * unix.c (main): If a superblock is specified explicitly by the
382 user, don't try to automatically fall back to an
383 alternate superblock.
384
Theodore Ts'ofb707752001-09-04 15:00:37 -04003852001-09-02 Theodore Tso <tytso@thunk.org>
386
387 * Release of E2fsprogs 1.24a
388
Theodore Ts'o109624a2001-08-31 00:59:55 -04003892001-08-30 Theodore Tso <tytso@thunk.org>
390
391 * Release of E2fsprogs 1.24
392
Theodore Ts'ob1f204f2001-08-30 16:42:09 -04003932001-08-30 Theodore Tso <tytso@valinux.com>
394
395 * pass1.c (e2fsck_pass1): For EXT2_RESIZE_INO, allow its i_mode to
396 either be zero or a regular file (for compatibility with
397 Andreas's on-line resizing programs).
398
Theodore Ts'o53abed02001-08-27 12:18:16 -04003992001-08-27 Theodore Tso <tytso@valinux.com>
400
Theodore Ts'o0f8973f2001-08-27 12:44:23 -0400401 * unix.c (main): Remove EXT2FS_VERSION from the version display,
402 since it only confuses people.
403
Theodore Ts'o53abed02001-08-27 12:18:16 -0400404 * pass1.c (strnlen): Provide strnlen if libc doesn't.
405
Theodore Ts'o943ed872001-08-27 12:29:22 -04004062001-08-15 Theodore Tso <tytso@valinux.com>
407
408 * Release of E2fsprogs 1.23
409
Theodore Ts'o85645a6f2001-08-13 06:11:39 -04004102001-08-13 Theodore Tso <tytso@valinux.com>
411
Theodore Ts'oeb4ab512001-08-13 10:58:41 -0400412 * super.c (release_orphan_inodes): If the filesystem contains
413 errors, don't run the orphan * list, since the orphan list
414 can't be trusted.
415
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400416 * pass1.c (check_size): Fix logic in check_size; the previous code
417 only offered to clear the inode size fields if both size
418 and i_size_high were zero.
Theodore Ts'oa40ecbb2001-08-13 06:15:36 -0400419 (e2fsck_pass1_check_device_inode): If i_blocks is
420 non-zero, then assume that the device/socket/fifo inode
421 is bogus.
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400422
Theodore Ts'o2b94c652001-08-09 04:08:52 -04004232001-08-09 Theodore Tso <tytso@valinux.com>
424
Theodore Ts'oa4742692001-08-09 04:14:04 -0400425 * pass1.c, pass2.c, problem.c, problem.h: Fix bug introduced by
426 Andreas's symlink code; check_blocks() was unconditionally
427 testing inode_bad_map without checking to see if it
428 existed first. Fixed problem a different way; we now no
429 longer check inode_bad_map at all, since the file might
430 not get deleted in pass 2 anyway. We move the large file
431 feature reconciliation code to to e2fsck_pass2(), and in
432 deallocate_inode() in pass2.c, we decrement the large
433 files counter if we're about to delete a large file.
434
Theodore Ts'o2b94c652001-08-09 04:08:52 -0400435 * unix.c (show_stats): Print the number of large files in verbose
436 mode.
437
Theodore Ts'oc0a083f2001-08-07 10:17:41 -04004382001-08-07 Theodore Tso <tytso@valinux.com>
439
440 * journal.c (recover_ext3_journal): If s_errno is set in the
441 journal superblock, set the EXT2_ERROR_FS flag in the
442 filesystem superblock after the journal is run.
443
Theodore Ts'obd512b62001-08-04 21:33:03 -04004442001-08-04 Andreas Dilger <root@lynx.adilger.int>
445
446 * message.c: Change comments for %D and %d expansion in e2fsck
447 problem codes. It was not consistent which was for dirent
448 expansion, and which was for directory number expansion.
449
450 * problem.c (PR_2_FINAL_RECLEN, PR_2_BAD_FILETYPE): Fix problem
451 codes which got caught by the confusion between %D and %d.
452
Theodore Ts'od007cb42001-08-04 20:39:39 -04004532001-08-04 Theodore Tso <tytso@valinux.com>
454
455 * problem.c (PR_2_SYMLINK_SIZE): Change description to make it
456 more clear (and remove %s expansion). Also add missing
457 periods to the end of a number of problem descriptions.
458
459 * pass2.c (e2fsck_process_bad_inode): Remove unneeded problem
460 context string set now that the problem description for
461 PR_2_SYMLINK_SIZE has been changed.
462
463 * pass1.c (e2fsck_pass1_check_symlink): Consolidate some checks,
464 and check the validity of the symlink block here (so that
465 we detect this case here instead of later). Also use
466 sizeof(inode->i_block) instead EXT2_LINK_DIR.
467
Theodore Ts'o83e6ac82001-07-30 16:29:52 -04004682001-07-30 Theodore Tso <tytso@valinux.com>
469
470 * unix.c (check_mount): Remove the code which tested for the root
471 filesystem being mounted read-only, and depend on the
472 results flags from ext2fs_check_if_mounted.
473
Theodore Ts'o1e165262001-07-29 11:48:10 -04004742001-07-29 Theodore Tso <tytso@valinux.com>
475
Theodore Ts'o6d222f32001-07-29 12:06:58 -0400476 * unix.c (check_if_skip): Free the e2fsck context structure on a
477 normal clean filesystem exit, to make it easier to find
478 real memory leaks.
479 (PRS): Only update the path to include /sbin at the
480 beginning if the -c option is given, again to make it
481 easier to find memory leaks.
Theodore Ts'o0628ae32001-07-29 12:26:46 -0400482 (main): Move the final print_resource_track call after the
483 filesystem and the context are freed.
Theodore Ts'o6d222f32001-07-29 12:06:58 -0400484
485 * journal.c (e2fsck_journal_init_dev): Avoid memory leak if we
486 need to search for the journal device.
487 (e2fsck_journal_release): Free the journal IO channel when
488 we release the journal handle, to avoid a memory leak.
489
Theodore Ts'o1e165262001-07-29 11:48:10 -0400490 * e2fsck.c (e2fsck_reset_context): Fix bug; only close the io
491 channel if it is *different* from the filesystem io
492 channel.
493
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -04004942001-07-27 Theodore Tso <tytso@valinux.com>
495
Theodore Ts'oa092c562001-07-27 22:40:09 -0400496 * problem.c (PR_1_SET_IMMUTABLE): Clarify problem message.
497
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -0400498 * pass1.c (e2fsck_pass1): Check for symlinks that have the
499 immutable flag set (and offer to clear them).
500
Theodore Ts'o24ceb242001-07-26 09:02:56 -04005012001-07-26 Theodore Tso <tytso@valinux.com>
502
503 * pass1.c (e2fsck_pass1): Free ctx->block_ea_map at the end of
504 pass 1.
505
Theodore Ts'o14fe1c32001-07-25 19:48:24 -04005062001-07-25 Theodore Tso <tytso@valinux.com>
507
508 * pass1.c (check_ext_attr): Skip zero-length EA entries.
509
510 * problem.c: PR_1_EA_ALLOC_COLLISION shouldn't abort, but should
511 prompt to clear the EA block.
512
Theodore Ts'oadee8d72001-07-23 00:17:49 -04005132001-07-22 Theodore Tso <tytso@valinux.com>
514
515 * journal.c (ll_rw_block): Use ctx->journal_io instead of the
516 filesystem's io_channel.
517 (e2fsck_journal_init_dev): New function which supports
518 initialization of the external journal.
519 (e2fsck_get_journal): Remove code which flagged an error
520 if the superblock reported the use of an external journal.
521 (ext3_journal_via_mount): Remove unsued, #ifdefed out function.
522
523 * problem.c, problem.h: Removed error codes no longer used
524 (PR_0_JOURNAL_UNSUPP_DEV, PR_0_JOURNAL_BAD_DEV,
525 PR_0_JOURNAL_UNSUPP_UUID) and replace them with new error
526 codes related with failures in loading the external
527 journal (PR_0_JOURNAL_UNSUPP_MULTIFS,
528 PR_0_CANT_FIND_JOURNAL, PR_0_EXT_JOURNAL_BAD_SUPER).
529 Also changed the text assocated with PR_0_JOURNAL_BAD_UUID
530 to reflect the case where the external journal isn't
531 correct for this filesystem.
532
533 * unix.c (PRS), e2fsck.8.in: Add new option -j which allows
534 the user to specify the pathname to find the external journal.
535
536 * e2fsck.c (e2fsck_reset_context): Close journal_io if it isn't
537 the same as the filesystem io_channel.
538
539 * e2fsck.h: Add new fields (journal_io and journal_name) in the
540 context structure to support external journals.
541
Theodore Ts'od3124012001-07-20 14:13:49 -04005422001-07-20 Theodore Tso <tytso@valinux.com>
543
544 * unix.c (main): Add an explicit warning when the filesystem is
545 left not completely fixed when e2fsck exits. (Addresses
546 Debian bug #104502.)
547
Theodore Ts'o55fd07e2001-07-19 16:31:25 -04005482001-07-19 Theodore Tso <tytso@valinux.com>
549
550 * pass1.c (check_ext_attr): The entire EA block is now checked to
551 make sure that parts of the EA block aren't being used for
552 multiple purposes.
553
554 * Makefile.in e2fsck.h, region.c: New file which is used to detect
555 collisions in extended attribute block.
556
557 * problem.h, problem.c (PR_1_EA_MULTI_BLOCK, PR_1_EA_ALLOC_REGION,
558 PR_1_EA_ALLOC_COLLISION, PR_1_EA_BAD_NAME,
559 PR_1_EA_BAD_VALUE): Add new problem codes.
560
Theodore Ts'o3c6b8972001-07-10 14:27:58 -04005612001-07-10 Theodore Tso <tytso@valinux.com>
562
563 * journal.c (e2fsck_run_ext3_journal): Only call ext3_flush() if
564 the superblock is dirty.
565
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -04005662001-07-07 Theodore Tso <tytso@valinux.com>
567
Theodore Ts'o7b63fff2001-07-07 23:01:31 -0400568 * pass1b.c (pass1b, process_pass1b_block): Change the num_bad
569 field calculation so that it only counts EA block entries
570 as a single multiply claimed block (since once we clone
571 the EA blocks for one inode, we fix the problem for all of
572 the other inodes). Also, I moved the num_bad calculation
573 from process_pass1b_block to the end of pass1b. This
574 fixes a *significant* performance bug in pass1b which hit
575 people who had to had a lot of multiply claimed blocks.
576 (Can you say O(n**3) boys and girls? I knew you could...
577 Fortunately, this case didn't happen that much in actual
578 practice.)
579
580 * pass1.c (e2fsck_pass1): Defer inodes which have an extended
581 attribute block for later processing to avoid extra seeks
582 across the disk.
583 (process_inode_cmp): If there is no indirect block, sort
584 by the extended attribute (i_file_acl) block.
585
Theodore Ts'o7abb2bd2001-07-07 13:20:34 -0400586 * pass1b.c (clone_file_block): Fix bugs when cloning extended
587 attribute blocks. Moved free of block_buf to after the
588 code which clones the extattr block, and fixed logic for
589 changing pointers to the extended attribute field in the
590 inodes which were affected.
591 (decrement_badcount): New function which is used whenever
592 we need to decrement the number of files which claim a
593 particular bad block. Fixed bug where delete_file wasn't
594 checking check_if_fs_block() before clearing the entry in
595 block_dup_map. This could cause a block which was claimed
596 by multiple files as well as the filesystem metadata to
597 not be completely fixed.
598
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -0400599 * pass1.c (adjust_extattr_refcount): Add new function which
600 adjusts the reference counts of extended attribute blocks
601 if needed, both up and down.
602 (e2fsck_pass1): If the refcount or refcount_extra
603 structure are present, call adjust_extattr_refcount(),
604 and free it afterwards.
605
606 * problem.h, problem.c (PR_1_EXTATTR_READ_ABORT,
607 PR_1_EXTATTR_REFCOUNT, PR_1_EXTATTR_WRITE): Add new
608 problem codes.
609
Theodore Ts'o342d8472001-07-02 11:54:09 -04006102001-07-02 Theodore Tso <tytso@valinux.com>
611
612 * pass1.c (e2fsck_pass1, check_ext_attr, check_blocks): Add
613 initial support for scanning extended attribute blocks.
614
615 * e2fsck.c (e2fsck_reset_context): free extended attribute
616 refcount structure.
617
618 * e2fsck.h: Add new fields for accounting for the extended
619 attribute blocks.
620
621 * Makefile.in, ea_refcount.c, e2fsck.h: Add new file which
622 implements a reference count abstraction.
623
624 * problem.c, problem.h: Add new problem codes PR_1_ALLOCATE_REFCOUNT,
625 PR_1_READ_EA_BLOCK, PR_1_BAD_EA_BLOCK, PR_2_FILE_ACL_BAD
626
627 * message.c: Add "@a" as an abbreviation for "extended attribute"
628
629 * pass1b.c (clone_file): Add code which handles cloning an
630 extended attribute block.
631
632 * pass1b.c (delete_file):
633 * pass2.c (deallocate_inode): If the inode contains an extended
634 attribute block in the file_acl field, clear it and
635 deallocate the block.
636
6372001-06-28 Theodore Tso <tytso@valinux.com>
638
639 * pass2.c (e2fsck_process_bad_inode): Deal with inodes which are
640 marked bad because of an invalid file_acl (either because
641 EXT2_FEATURE_COMPAT_EXT_ATTR is not set, or because the
642 block number in file_acl is bad.
643
Theodore Ts'o636a9542001-06-29 17:57:26 -04006442001-06-29 Theodore Tso <tytso@valinux.com>
645
646 * unix.c (show_stats): Use long long to calculate the percentage
647 of the number of blocks in use in the filesystem.
648
Theodore Ts'o67960132001-06-23 00:16:37 -04006492001-06-23 Theodore Tso <tytso@valinux.com>
650
651 * Release of E2fsprogs 1.22
652
Theodore Ts'od90f3492001-06-22 21:01:17 -04006532001-06-22 Theodore Tso <tytso@valinux.com>
654
655 * flushb.c: Use platform independent method of defining the
656 BLKFLSBUF ioctl. Also include sys/mount.h since on newer
657 platforms BLKFLSBUF is defined there.
658
Theodore Ts'o42475e22001-06-22 20:35:38 -04006592001-06-19 Theodore Tso <tytso@valinux.com>
660
661 * super.c (release_inode_blocks): Don't try to release the blocks
662 if the orphaned inode is a device file, symlink, or some
663 other kind of special file that doesn't have a block list.
664
Theodore Ts'of4f75ba2001-06-16 01:14:28 +00006652001-06-15 Theodore Tso <tytso@valinux.com>
666
667 * Release of E2fsprogs 1.21
668
Theodore Ts'ob6a08072001-06-14 01:16:17 +00006692001-06-13 Theodore Tso <tytso@valinux.com>
670
671 * unix.c (check_if_skip): Adapted patch from Andreas Dilger which
672 prints the number of mounts or days elapsed since the last
673 check when e2fsck is forced to check an otherwise clean
674 filesystem.
675
Theodore Ts'ocbbf0312001-06-13 00:12:04 +00006762001-06-12 Theodore Tso <tytso@valinux.com>
677
678 * badblocks.c: Stop using the compatibility badblocks function,
679 and use the ext2fs_badblocks_* functions instead.
680
Theodore Ts'o5df55d72001-06-11 07:00:04 +00006812001-06-11 Theodore Tso <tytso@valinux.com>
682
Theodore Ts'o3034f622001-06-11 15:17:45 +0000683 * unix.c (PRS): Fix bug introduced in 1.20 which broke the -F
684 flag.
685
Theodore Ts'o5df55d72001-06-11 07:00:04 +0000686 * Makefile.in: Add message.c and swapfs.c to the list of source
687 files to build the make depend.
688
689 * swapfs.c, unix.c: Only support the -s and -S options to e2fsck
690 if ENABLE_SWAPFS is defined.
691
Theodore Ts'o725c4742001-06-08 11:55:44 +00006922001-06-08 Theodore Tso <tytso@valinux.com>
693
694 * recover.c, revoke.c: Synchronize with ext3 0.7a
695
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00006962001-06-02 Theodore Tso <tytso@valinux.com>
697
Theodore Ts'oa479fe62001-06-02 04:50:14 +0000698 * recovery.c (scan_revoke_records): Fix bug in recovery code;
699 missing byte order conversion.
700
Theodore Ts'ofdbdea02001-06-02 04:26:26 +0000701 * pass1.c (mark_inode_bad): Replace alloc_bad_map with a function
702 which sets the bit in the bad inode bitmap.
703 (e2fsck_pass1): Check for fast symlinks with an invalid
704 size, and set the bad inode map in that case.
Theodore Ts'o62b6d472001-06-02 04:37:02 +0000705 (check_size): Check i_size_high for special files and
706 prompt to clear it along with i_size if non-zero.
Theodore Ts'ofdbdea02001-06-02 04:26:26 +0000707
708 * pass2.c (e2fsck_process_bad_inode): Check for fast symlinks with
709 an invalid size and prompt the user if the inode should be
710 cleared.
711
712 * problem.h, problem.c (PR_2_SYMLINK_SIZE): Added new problem code.
713
Theodore Ts'o71d521c2001-06-01 19:29:36 +00007142001-06-01 Theodore Tso <tytso@valinux.com>
715
Theodore Ts'o2f686ac2001-06-02 00:38:40 +0000716 * problem.c, problem.h: Change PR_0_JOURNAL_UNSUPP_INCOMPAT and
717 PR_0_JOURNAL_UNSUPP_ROCOMPAT so they aren't fatal errors,
718 but prompt to see if the user should abort. Removed the
719 PR_0_JOURNAL_RESET_COMPAT problem code.
720
721 * journal.c (e2fsck_journal_load): If there are incompatible
722 journal flags, just return an error code.
723 (e2fsck_check_ext3_journal): If e2fsck_journal_load
724 returns an error code indicating that there are
725 incompatible journal flag, check to see if we should
726 abort, and then offer to clear the journal.
Theodore Ts'oe3338452001-06-14 07:11:33 +0000727 (Addresses Debian bug #98527.)
Theodore Ts'o2f686ac2001-06-02 00:38:40 +0000728
Theodore Ts'o797f5ef2001-06-01 23:49:46 +0000729 * Makefile.in: Move include/asm/types.h.in to
Theodore Ts'o36a23e12001-06-02 00:54:10 +0000730 lib/ext2fs/ext2_types.h.in.
Theodore Ts'o797f5ef2001-06-01 23:49:46 +0000731
7322001-06-01 Theodore Tso <tytso@valinux.com>
733
Theodore Ts'o71d521c2001-06-01 19:29:36 +0000734 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
735 pass1_check_directory): Add a safety check to make sure
736 ctx->stashed_inode is non-zero.
737
738 * pass1b.c (pass1b): Use e2fsck_use_inode_shortcuts() to disable
739 the inode shortcut processing, instead of manually
740 clearing only half of the function pointers that needed to
741 be NULL'ed out. This caused nasty bugs if the last inode
742 in the filesystem needed dup block processing.
743
744 * pass1b.c (clone_file_block): When cloning a directory's metadata
745 block, don't try to update the directory block list
746 database, since indirect blocks aren't stored in the
747 database and the resulting error will abort the file clone
748 operation.
749
Theodore Ts'o561cd4d2001-05-25 16:40:56 +00007502001-05-25 Theodore Tso <tytso@valinux.com>
751
Theodore Ts'obb185862001-05-25 17:35:00 +0000752 * Release of E2fsprogs 1.20
753
7542001-05-25 Theodore Tso <tytso@valinux.com>
755
Theodore Ts'o561cd4d2001-05-25 16:40:56 +0000756 * journal.c (e2fsck_journal_reset_super): Remove extraneous line
757
Theodore Ts'oc7f23362001-05-23 22:19:47 +00007582001-05-23 Theodore Tso <tytso@valinux.com>
759
760 * journal.c (e2fsck_journal_reset_super): Fix bug; the reset
761 journal wasn't getting written out to disk since the dirty
762 bit wasn't being set on the buffer.
763 (e2fsck_journal_load): Don't print an error message if the
764 journal version number is wrong; just return a error code
765 reflecting this fact. If the block type in the journal
766 superblcok is obviously not a version number, report the
767 journal is corrupted.
768 (e2fsck_check_ext3_journal): On an unsupported journal
769 version, prompt to abort by default, but then offer a
770 chance to clear the journal as corrupt.
771
772 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_VERSION): Added new
773 problem code.
774
Theodore Ts'o424cd2b2001-05-14 04:06:56 +00007752001-05-14 Theodore Tso <tytso@valinux.com>
776
Theodore Ts'o21afac02001-05-14 12:47:41 +0000777 * pass1.c: Treat inodes with a low dtime (that were from a
778 corrupted orphan list) specially.
779
780 * problem.c, problem.h: Add new problem codes PR_1_LOW_DTIME and
781 PR_1_ORPHAN_LIST_REFUGEES, and a new latch group,
782 PR_LATCH_LOW_DTIME.
783
784 * problemP.h: Expand the size of the problem flag to be an int
785 instead of a short. Expand space in the flag word which
786 is reserved for problem latch flags from 3 bits to 8 bits.
787
Theodore Ts'o54c637d2001-05-14 11:45:38 +0000788 * e2fsck.h, scantest.c: Change location of ext2_fs.h to be
789 ext2fs/ext2_fs.h
790
Theodore Ts'o424cd2b2001-05-14 04:06:56 +0000791 * super.c (check_super_block): Be more strict on checking
792 s_r_blocks_count superblock field.
793
7942001-05-13 Theodore Tso <tytso@valinux.com>
795
796 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_ROCOMPAT,
797 PR_0_JOURNAL_UNSUPP_INCOMPAT, PR_0_JOURNAL_RESET_COMPAT):
798 New problem codes.
799
800 * journal.c (e2fsck_journal_load): Use a problem code to
801 report unsupported feature flags. There is code to
802 clear unsupported flags, but since this is dangerous,
803 it's not allowed in the problem code table.
804
8052001-05-11 Andreas Dilger <adilger@turbolinux.com>
806
807 * journal.c (e2fsck_journal_reset_super): initialize the journal
808 sequence number to a random value to avoid recovering
809 bad transactions from a corrupt journal.
810
Theodore Ts'o328a5ce2001-05-13 20:21:25 +00008112001-05-13 Theodore Tso <tytso@valinux.com>
812
813 * journal.c: Code cleanup; initialize journal_enable_debug using
814 an initializer.
815
Theodore Ts'ofc9a69c2001-05-12 13:43:46 +00008162001-05-12 Theodore Tso <tytso@valinux.com>
817
818 * unix.c (PRS): Skip validation of -C's file descriptor if it is
819 zero, since that is special case.
820
Theodore Ts'of0b8c872001-05-09 06:03:58 +00008212001-05-09 Theodore Tso <tytso@valinux.com>
822
823 * super.c (release_orphan_inodes): Add gettext quoting around
824 "Truncating" and "Clearing" for i18n.
825
Theodore Ts'ob9852cd2001-05-05 05:14:59 +00008262001-05-05 Theodore Tso <tytso@valinux.com>
827
Theodore Ts'oe39ac922001-05-05 06:47:24 +0000828 * util.c (fatal_error): Use the correct magic number when checking
829 the magic number for the io_channel data structure. Also
830 remove extraneous call to io_channel_flush() that was left
831 over from an editing session.
832
Theodore Ts'ob9852cd2001-05-05 05:14:59 +0000833 * pass2.c (check_dir_block): Ignore EXT2_ET_DIR_CORRUPTED errors
834 from ext2fs_read_dir_block().
835
Theodore Ts'o5f629b72001-05-01 20:01:08 +00008362001-05-01 Theodore Tso <tytso@valinux.com>
837
Theodore Ts'oae8160e2001-05-01 21:13:37 +0000838 * unix.c (PRS): Validate the completion information file
839 descriptor so that the completion bar won't get
840 accidentally written onto the disk.
841
Theodore Ts'o5f629b72001-05-01 20:01:08 +0000842 * e2fsck.8.in: Add explanation that you can use mke2fs -n -b
843 blocksize to printout alternate superblock locations.
844
Theodore Ts'obc57f152001-04-26 04:11:46 +00008452001-04-26 Theodore Tso <tytso@valinux.com>
846
847 * unix.c (check_if_skip): If the max_mount_count is zero, treat it
848 as having no count set.
849
Theodore Ts'oef059872001-04-17 00:40:02 +00008502001-04-16 Theodore Tso <tytso@valinux.com>
851
852 * super.c (check_super_block): Fix bad calculation of
853 inodes_per_block, and tighten min/max checks to be a bit
854 more paranoid. Thanks to Andreas Dilger for pointing out
855 this bug.
856
Theodore Ts'o1f735032001-03-29 19:00:50 +00008572001-03-29 Theodore Tso <tytso@valinux.com>
858
Theodore Ts'o15986f72001-03-29 19:22:16 +0000859 * journal.c (mark_buffer_uptodate): Add emulation of kernel
860 function mark_buffer_uptodate.
861
Theodore Ts'o1f735032001-03-29 19:00:50 +0000862 * recovery.c, revoke.c: Synchronize with 0.6b ext3 files.
863
Theodore Ts'od0515212001-02-13 04:32:53 +00008642001-02-12 Theodore Tso <tytso@valinux.com>
865
866 * journal.c (e2fsck_run_ext3_journal): Force a flush of the
867 filesystem and io_channel before replaying the journal.
868
Theodore Ts'oa5c33f22001-01-18 02:34:03 +00008692001-01-17 Theodore Ts'o <tytso@valinux.com>
870
871 * pass1.c (check_blocks): Fix large file checking code so that
872 files > 2GB are considered large files, and restrict
873 directories from being > 2GB.
874
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +00008752001-01-12 Theodore Ts'o <tytso@valinux.com>
876
Theodore Ts'oa9ca2012001-01-12 21:53:25 +0000877 * journal.c (e2fsck_journal_fix_unsupported_super): Remove unused
878 function. Add FIXME notes to e2fsck_get_journal(), from
879 Andreas Dilger.
880
881 * pass1.c (e2fsck_pass1): Cap the maximum legal size of a file by
882 the limit caused by the fact that i_blocks is in 512 byte
883 units, and that the Linux buffer cache also fundamentally
884 assumes 512 byte sectors.
885 Make sure that the journal inode is a regular file, and
886 when clearing an unused journal inode, make sure the
887 icount db is updated.
888
889 * problem.c, problem.h (PR_1_JOURNAL_BAD_MODE): Add new problem code.
890
Theodore Ts'o37b6b292001-01-12 21:16:13 +0000891 * problem.c: For PR_1_RESERVED_BAD_MODE, print a description of
892 the reserved inode. In PR_0_JOURNAL_HAS_JOURNAL, prompt
893 to clear the journal, rather than deleting it (which is
894 more accurate). (From Andreas Dilger.)
895
Theodore Ts'o6a6d3d42001-01-12 21:11:24 +0000896 * journal.c: Make sure all functions which return an error code
897 use the errcode_t return type, and not "int"
898 (e2fsck_journal_release): Add new parameter, "drop",
899 which is used when we just want to deallocate the journal
900 without trying to write out any changes.
901 (mark_buffer_clean): New function
902 (e2fsck_check_ext3_journal): If we fail loading the
903 journal, make sure we free all memory associated with it.
904 (recover_ext3_journal): If we fail to load the journal or
905 initialize the revoke data structures, make sure we free all
906 memory associated with the journal.
907
Theodore Ts'o721edd02001-01-12 21:05:57 +0000908 * message.c (special_inode_name): Add more special inode names
909 (From Andreas Dilger)
910
Theodore Ts'o58a75172001-01-12 20:59:19 +0000911 * util.c (fatal_error): Check to make sure the io_manager data
912 structure is sane before trying to flush the io_channel.
913 (From Andreas Dilger)
914
Theodore Ts'o721edd02001-01-12 21:05:57 +0000915 * mtrace.h, super.c, pass2.c: Minor whitespace cleanups, from
916 Andreas Dilger.
Theodore Ts'o4035f402001-01-12 20:25:50 +0000917
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +0000918 * journal.c (e2fsck_journal_fix_bad_inode): Set pctx->ino to the
919 bad journal number.
920
921 * problem.c (PR_0_JOURNAL_BAD_INODE): Use pctx->ino instead of
922 pctx->num when printing the bad journal inode number.
923
Theodore Ts'o86c627e2001-01-11 15:12:14 +00009242001-01-11 <tytso@snap.thunk.org>
925
Theodore Ts'o5ba23cb2001-01-11 19:15:02 +0000926 * pass1.c (process_block): Remove dead code which was never
927 getting executed.
928
929 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
930 ext2fs_sync_device() instead of using BLKFLSBUF.
931
932 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
933
Theodore Ts'o86c627e2001-01-11 15:12:14 +0000934 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
935 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
936 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
937 ino_t to ext2_ino_t.
938
Theodore Ts'o95a5bc92001-01-11 04:58:21 +00009392001-01-09 <tytso@snap.thunk.org>
940
941 * problem.c: Fix another broken @F vs @f problem.
942
Theodore Ts'o53ef44c2001-01-06 05:55:58 +00009432001-01-06 <tytso@snap.thunk.org>
944
945 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
946 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
947
948 * jfs_user.h: Use more sophisticated inline handling to allow
949 building with --enable-gcc-wall
950
Theodore Ts'od3f35b62001-01-03 13:00:43 +00009512001-01-03 <tytso@snap.thunk.org>
952
Theodore Ts'of18996c2001-01-03 16:57:24 +0000953 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
954 own block; if the journal inode is not in use, and it
955 contains data, offer to clear it.
956
957 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
958 problem code.
959
960 * problem.c: Modified problem table to use a new abbreviations.
961
Theodore Ts'od74edf42001-01-03 19:38:04 +0000962 * message.c: Add @j abbreviation for journal, and @v abbreviation
Theodore Ts'oe9044062001-01-03 15:39:37 +0000963 for device.
Theodore Ts'o1ce64532001-01-03 15:34:20 +0000964
Theodore Ts'occ7067b2001-01-03 13:24:06 +0000965 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
966
Theodore Ts'od3f35b62001-01-03 13:00:43 +0000967 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
968 the journal stored on a reserved inode. Also force a fsck
969 if the journal appears to exist while !NEEDS_RECOVERY, and
970 we forcibly reset the journal.
971
Theodore Ts'of5ae75e2001-01-01 14:52:52 +00009722001-01-01 <tytso@snap.thunk.org>
973
Theodore Ts'o5dd8f962001-01-01 15:51:50 +0000974 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
975 ext2fs_sb with struct ext2_super_block.
976
Theodore Ts'of5ae75e2001-01-01 14:52:52 +0000977 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
978
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +00009792000-12-31 <tytso@snap.thunk.org>
980
981 * jfs_compat.h: Remove uneeded header file.
982
Theodore Ts'ob2f93192000-12-30 20:33:42 +00009832000-12-30 <tytso@snap.thunk.org>
984
Theodore Ts'oc59a7042000-12-31 01:52:03 +0000985 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
986 conflicts with the system header file.
987
Theodore Ts'ob2f93192000-12-30 20:33:42 +0000988 * problem.h: Fixed numbering of pass1 error messages; an extra 0
989 had slipped into some of the numbers. (Pointed out by
990 Andreas Dilger)
991
992 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
993 unnecessary automatic variable. Add explanatory comment
994 about the kernel emulation routines. (Suggested by
995 Andreas Dilger)
996
Theodore Ts'o060b5fb2000-12-13 18:07:23 +00009972000-12-13 Theodore Ts'o <tytso@valinux.com>
998
Theodore Ts'o9b565752000-12-13 18:50:22 +0000999 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
1000 journal fields are consistent if any of the superblock
1001 fields are set. (Backs out erroneous change made by sct,
1002 pointed out by Andreas.)
1003
1004 * unix.c (main): Clarify coments (no code changes)
1005
1006 * super.c (release_orphan_inodes): Fix spelling typo in error message.
1007
Theodore Ts'o8188c9e2000-12-13 18:39:14 +00001008 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
1009 level if we need to set large files flag. Patch from
1010 Andreas Dilger.
1011
Theodore Ts'o7b59f1e2000-12-13 18:11:44 +00001012 * super.c (check_super_block): If we have any of the compatibility
1013 flags set, we need to have a revision 1 filesystem. Most
1014 kernels will not check the flags on a rev 0 filesystem
1015 and we may have corruption issues because of the
1016 incompatible changes to the filesystem. Patch from Andreas
1017 Dilger.
1018
Theodore Ts'o060b5fb2000-12-13 18:07:23 +00001019 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
1020 new problem codes.
1021
Theodore Ts'o0e8a9562000-12-09 06:41:25 +000010222000-12-09 <tytso@snap.thunk.org>
1023
Theodore Ts'obf2d4992000-12-09 14:46:20 +00001024 * flushb.c: Fix flushb so that it does something other than waste
1025 disk space when built on systems with modern header files
1026 and add a non-subtle Copyright Licensing restriction so
1027 Yann will remove it from the Debian Distribution. (Now
1028 violates the Debian Free Software Guidelines, on purpose.)
1029
Theodore Ts'of43650c2000-12-09 06:47:56 +00001030 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
1031 at the top level, set the JFS debuging level to 2.
1032
Theodore Ts'o0e8a9562000-12-09 06:41:25 +00001033 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
1034 has been moved to the include/linux directory.
1035
1036 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
1037 support the V2 superblock and revoke processing. The
1038 journal.c and revoke.c files are copies from the ext3
1039 kernel source.
1040
1041 * Makefile.in: Added revoke.c to the list of source/object files.
1042
Theodore Ts'o133a56d2000-11-17 05:40:49 +000010432000-11-16 Theodore Ts'o <tytso@valinux.com>
1044
1045 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
1046 reporting problems rather than using com_err directly.
1047
1048 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
1049
1050 * message.c (expand_percent_expression): Add safety check. If
1051 ctx->str is NULL, print "NULL" instead of dereferencing
1052 the null pointer.
1053
1054 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
1055 to ext2fs_block_iterate2, to support 64-bit filesizes and
1056 to speed things up slightly by avoiding the use of the
1057 ext2fs_block_iterate's compatibility shim layer.
1058
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +000010592000-10-30 <tytso@snap.thunk.org>
1060
1061 * util.c (get_backup_sb): Calculate backup superblock correctly
1062 when the blocksize is > 1k.
1063
Theodore Ts'o241f2242000-10-26 20:42:07 +000010642000-10-26 <tytso@snap.thunk.org>
1065
1066 * jfs.h, jfs_compat.h, journal.c: Updated to include the
1067 definition of the new journal superblock format; still
1068 only supports V1 superblocks for now. (From sct)
1069
Theodore Ts'ob09a4b02000-10-24 21:16:09 +000010702000-10-24 <tytso@snap.thunk.org>
1071
Theodore Ts'o83949022000-10-25 01:38:50 +00001072 * super.c (release_inode_block, release_inode_blocks,
1073 release_orphan_inodes): Add code to deal with truncating
1074 inodes which are still in use (but which are on the orphan
1075 list because they need truncation).
1076
1077 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
1078 PR_0_ORPHAN_CLEAR_INODE, and remove
1079 PR_0_ORPHAN_INODE_INUSE.
1080
1081 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
1082 a message when the journal is being recovered.
1083
Theodore Ts'ob09a4b02000-10-24 21:16:09 +00001084 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
1085 journal inode, if it is in use.
1086
Theodore Ts'oadfca562000-09-12 21:24:36 +000010872000-09-12 <tytso@valinux.com>
1088
1089 * extend.c:
1090 * flushb.c: Add include of nls-enable.h which is necessary so that
1091 they can compile correctly.
1092
Theodore Ts'occ96b2b2000-08-22 21:30:11 +000010932000-08-22 <tytso@valinux.com>
1094
Theodore Ts'o2575fb02000-08-22 21:50:04 +00001095 * unix.c (main): If we're doing a read-only check, skip the
1096 journal playback, but don't abort the e2fsck run.
1097
Theodore Ts'o99a2cc92000-08-22 21:41:52 +00001098 * super.c (release_orphan_inodes): Fix typo; should do bounds
1099 checking on next_ino instead of ino.
1100
1101 * jfs_compat.h (J_ASSERT):
1102 * journal.c (e2fsck_run_ext3_journal):
1103 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
1104
Theodore Ts'o243dc312000-08-22 21:37:47 +00001105 * unix.c: Use fatal_error() instead of exit() whenever possible.
1106 Also fix the fsck exit codes so that we use FSCK_USAGE
1107 when it is appropriate. Rename global_signal_ctx to
1108 e2fsck_global_ctx and let it be exported globally.
1109
Theodore Ts'occ96b2b2000-08-22 21:30:11 +00001110 * util.c (fatal_error): Try to flush the I/O manager before
1111 forcing an exit.
1112
Theodore Ts'oecf1b772000-08-20 22:06:31 +000011132000-08-20 <tytso@valinux.com>
1114
1115 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
1116 e2fsck_check_ext3_journal to smash the journal because
1117 journal->j_transaction_sequence wasn't getting
1118 initialized.
1119
1120 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
1121 call to e2fsck_clear_recover from recover_ext3_journal to
1122 after the filesystem has been closed and reopened.
1123 Otherwise, the superblock in the filesystem handle will
1124 probably be stale, and will overwrite the newer version of
1125 the superblock written by the log recovery.
1126
1127 * message.c (expand_inode_expression): Add support for %Iu and %Ig
1128
1129 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
1130
1131 * super.c (release_orphan_inodes, release_inode_block,
1132 release_inode_blocks): Update the block group descriptor
1133 counts when freeing the orphan inode. Use
1134 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
1135
1136 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
1137 attempted to reopen the filesystem using the device name
1138 instead of the filesystem name.
1139
Theodore Ts'o80bfaa32000-08-18 15:08:37 +000011402000-08-18 <tytso@valinux.com>
1141
1142 * Makefile.in: Update the make dependencies
1143
1144 * problem.c, problem.h: Add the problem codes:
1145 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
1146 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
1147 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
1148 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
1149
1150 * super.c (release_inode_blocks, release_orphan_inodes,
1151 check_super_block): Add support for clearing orphaned
1152 inodes from the unmounted filesystem.
1153
1154 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
1155 check; this is now handled in check_super_block ---
1156 non-journaled filesystems can use the orphan list in the
1157 future. Also, move the the re-opening of the filesystem
1158 to e2fsck_run_ext3_journal().
1159
Theodore Ts'o3b5386d2000-08-14 14:25:19 +000011602000-07-12 Andreas Dilger <adilger@turbolinux.com>
1161
1162 * journal.c: implement loading of ext3 journal for recovery code
1163
1164 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
1165 Add journal problems.
1166
1167 * recovery.c (journal_recover): user-space ext3 journal recovery code
1168
1169 * unix.c (main) : check journal and do recovery in separate steps
1170
Theodore Ts'ob8d164c2000-08-08 03:17:04 +000011712000-08-07 <tytso@snap.thunk.org>
1172
1173 * unix.c (calc_percent): Make sure that we don't take a floating
1174 exception if the max value is zero. (should normally
1175 never happen, but...)
1176
Theodore Ts'of9e67062000-07-13 23:25:54 +000011772000-07-13 <tytso@valinux.com>
1178
1179 * Release of E2fsprogs 1.19
1180
Theodore Ts'o17390c02000-07-07 04:13:21 +000011812000-07-06 Theodore Ts'o <tytso@valinux.com>
1182
1183 * unix.c (check_if_skip): Modify algorithm for checking
1184 s_max_mnt_count to match with the kernel. (If
1185 s_max_mnt_count is negative, ignore the mnt_count check.)
1186
1187 * unix.c (e2fsck_update_progress): Adjust the width of the
1188 progress bar dynamically, based on the filesystem name
1189 that we need to display.
1190
1191 * unix.c (main): If the ext3 needs_recovery flag is set, call
1192 e2fsck_run_ext3_journal() and then restart the e2fsck run.
1193
1194 * journal.c (e2fsck_run_ext3_journal): New file which contains
1195 logic to recover the ext3 journal. This version relies on
1196 the kernel being able to mount the filesystem in order to
1197 run the journal.
1198
Theodore Ts'o92269042000-07-05 18:25:59 +000011992000-07-05 Theodore Ts'o <tytso@valinux.com>
1200
1201 * unix.c (e2fsck_update_progress): Only save and check the last
1202 percentage after multiplying it by 10, nor 1000, since we
1203 only need to save values to a tenth of a percent (and the
1204 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +00001205 Also, re-arrange the logic so that we do the time
1206 check only after doing the percentage check, and we
1207 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +00001208
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +000012092000-07-04 Theodore Ts'o <tytso@valinux.com>
1210
1211 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
1212 field is set; if so, clear it, so that ext3 mounting code
1213 won't get confused by the fact that we've cleared out the
1214 orphaned inodes.
1215
Theodore Ts'obbd47d72000-06-10 19:21:33 +000012162000-06-10 Theodore Ts'o <tytso@valinux.com>
1217
1218 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
1219 checking for a "should never happen case".
1220
1221 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
1222 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
1223
Theodore Ts'od647a1e2000-05-27 14:40:09 +000012242000-05-27 Theodore Ts'o <tytso@valinux.com>
1225
1226 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
1227 (cw@foof.org) which checks to see if special devices have
1228 a non-zero size, and deals with it.
1229
1230 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
1231
Theodore Ts'o1d279212000-05-19 02:38:14 +000012322000-05-18 Theodore Ts'o <tytso@valinux.com>
1233
1234 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
1235 well.
1236
Theodore Ts'o4ea0a112000-05-08 13:33:17 +000012372000-05-08 Theodore Ts'o <tytso@valinux.com>
1238
1239 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
1240 code.
1241
1242 * super.c (check_super_block): If the OS type in the superblock is
1243 the Hurd, check to see if the filetype feature is set, and
1244 offer to clear it if so. This needs to be done since the
1245 Hurd doesn't properly support the filetype feature.
1246 (And since the hurd allows the transmogrification of files
1247 to special files and vice versa --- for no good reason
1248 that I can understand --- it can't support the filetype
1249 feature for the forseeable future, either.)
1250
Theodore Ts'o373b8332000-04-03 16:22:35 +000012512000-04-03 Theodore Ts'o <tytso@valinux.com>
1252
1253 * unix.c: For platforms that don't define optarg.h, manually
1254 define optarg and optind.
1255
Theodore Ts'o01fbc702000-04-03 13:57:21 +000012562000-03-20 Theodore Ts'o <tytso@valinux.com>
1257
1258 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
1259 Check for the append-only as well as the immutable flag.
1260
1261 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
1262 append-only flag. Fix comment for compression flag.
1263
Theodore Ts'o06012322000-02-12 20:12:43 +000012642000-02-12 <tytso@snap.thunk.org>
1265
1266 * unix.c (e2fsck_update_progress): Limit the number of updates to
1267 the progress bars to 8 times a second. This allows a 9600
1268 baud console link to keep up.
1269
Theodore Ts'o19178752000-02-11 15:55:07 +000012702000-02-11 <tytso@snap.thunk.org>
1271
1272 * unix.c (main): If compression is enabled on the filesystem,
1273 print a warning message (for now).
1274
1275 * message.c: Add new compression shortcut: @c == compress
1276
1277 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
1278
1279 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
1280 set, check to see if the filesystem supports compression.
1281 If it does pass this information down to process_block()
1282 so it can treat the compressed block flag words
1283 correctly. If not, offer to clear the flag, since it
1284 shouldn't be set.
1285 (process_block): If an inode has the compressed inode flag
1286 set, allow EXT2FS_COMPRESSED_BLKADDR.
1287
1288 * pass1b.c (process_pass1b_block, delete_file_block,
1289 clone_file_block):
1290 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
1291 see if the block can be skipped.
1292
Theodore Ts'o28ffafb2000-02-08 19:14:02 +000012932000-02-08 <tytso@snap.thunk.org>
1294
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +00001295 * util.c: Make resource tracking message more concise.
1296
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +00001297 * e2fsck.h:
1298 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
1299 ctx->block_illegal_map, since it's not needed by pass1,
1300 and pass1b has been modified to calculate it manually if
1301 needed. This reduces the memory footprint needed by e2fsck.
1302
1303 * pass1b.c (check_if_fs_block): New static function which returns
1304 whether or not a block overlaps with filesystem metadata.
1305 This replaces consulting the block_illegal_map bitmap.
1306
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00001307 * Makefile.in: Call sync after finishing building all in this
1308 directory.
1309
1310 * unix.c (PRS): sync the filesystem before trying to use
1311 BLKFLSBUF, to minimize the chance of causing dirty blocks
1312 to get dropped.
1313
1314 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
1315 a Linux/i386 system.
1316
1317 * pass3.c (check_directory): Only do the loop detection algorithm
1318 if we've searched over 2048 parent directories and haven't
1319 found the end yet. This means that in the common case, we
1320 don't allocate or clear the inode_loop_detection bitmap,
1321 which for large systems, merely clearing the bitmap for
1322 each directory was turning out to be quite expensive.
1323 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
1324 identifying this problem.
1325
Theodore Ts'o0c4a0722000-02-07 03:11:03 +000013262000-02-06 Theodore Ts'o <tytso@valinux.com>
1327
1328 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
1329 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
1330 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
1331 unix.c, util.c: Add Internationalization support as
1332 suggested by Marco d'Itri <md@linux.it>.
1333
Theodore Ts'o80e808f2000-02-02 16:19:59 +000013342000-02-02 Theodore Ts'o <tytso@valinux.com>
1335
1336 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
1337 linux/fs.h
1338
Theodore Ts'o894edb22000-01-18 21:27:12 +000013392000-01-18 Theodore Ts'o <tytso@valinux.com>
1340
1341 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
1342 we need a separate DEPLIBUUID that can be used in
1343 Makefile's dependency rules.
1344
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +000013451999-11-23 <tytso@valinux.com>
1346
1347 * e2fsck.8.in: Update language about where to find a backup
1348 superblock.
1349
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +000013501999-11-19 <tytso@valinux.com>
1351
Theodore Ts'o86a63e91999-11-23 13:52:48 +00001352 * pass1.c (process_inodes): Add shortcut handling; if
1353 process_inodes_count is zero, return right away, to avoid
1354 calling qsort with a non-positive count.
1355
Theodore Ts'oec8d2c31999-11-19 18:52:36 +00001356 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
1357 to print Delete as ^?
1358
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00001359 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
1360 the source directory.
1361
Theodore Ts'oa846d2f1999-11-10 15:50:24 +000013621999-11-10 <tytso@valinux.com>
1363
Theodore Ts'ocd086361999-11-10 16:00:39 +00001364 * Release of E2fsprogs 1.18
1365
13661999-11-10 <tytso@valinux.com>
1367
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00001368 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
1369 means the answer is assumed to be no in preen mode. This
1370 is now used in the PR_1_SET_IMMUTABLE code, so that in
1371 preen mode we ignore these inodes and just print a warning
1372 message.
1373
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +000013741999-11-09 <tytso@valinux.com>
1375
1376 * pass1.c (e2fsck_pass1): If the filesystem does not support
1377 imagic inodes, if an inode has the imagic flag set, offer
1378 to clear the imagic flag. If a valid device/fifo/socket
1379 has the immutable flag set, call the new helper function
1380 check_immutable() to offerto clear the immutable flag.
1381
1382 * pass2.c (check_filetype): Use the new ext2_file_type() helper
1383 function instead of calculating the file_type information
1384 manually.
1385
1386 * pass3.c (e2fsck_reconnect_file): When adding a link to
1387 lost+found, calculate the filetype information so that
1388 ext2fs_link() can use the information if applicable.
1389 (get_lost_and_found): Create the /lost+found directory
1390 with the correct filetype information if applicable.
1391
1392 * util.c (ext2_file_type), e2fsck.h: New function which returns
1393 the directory entry file type information given the
1394 inode's mode bits.
1395
1396 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
1397 and PR_1_SET_IMMUTABLE.
1398
Theodore Ts'o7142db01999-11-08 18:46:54 +000013991999-11-07 <tytso@valinux.com>
1400
1401 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
1402 to prevent it from getting freed twice.
1403
14041999-11-06 <tytso@valinux.com>
1405
1406 * unix.c (main): Close the filesystem before freeing the context,
1407 so that in the event of a free()-related segmentation
1408 violation, the filesystem is properly closed and written
1409 out.
1410
14111999-10-27 <tytso@valinux.com>
1412
1413 * e2fsck.c (e2fsck_reset_context): When freeing
1414 ctx->inode_reg_map, we weren't zero'ing
1415 ctx->inode_reg_map, which could cause a segfault later on
1416 in the e2fsck run.
1417
14181999-10-26 <tytso@valinux.com>
1419
1420 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
1421 matches the standard convention).
1422
Theodore Ts'of68aa411999-10-26 14:20:22 +000014231999-10-26 <tytso@valinux.com>
1424
Theodore Ts'o28e11941999-10-26 18:17:20 +00001425 * Release of E2fsprogs 1.17
1426
14271999-10-26 <tytso@valinux.com>
1428
Theodore Ts'of68aa411999-10-26 14:20:22 +00001429 * message.c (safe_print): Make safe_print take an char instead of
1430 an unsigned char to fix gcc warnings.
1431
Theodore Ts'oc40db6d1999-10-25 21:03:34 +000014321999-10-25 <tytso@valinux.com>
1433
Theodore Ts'oe6597041999-10-26 02:30:16 +00001434 * util.c: For NT portability, don't redefine getchar(), since
1435 stdio defines that. Instead we introduce a new
1436 abstract macro read_a_char() which is #defined to the
1437 right function as necessary.
1438
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00001439 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
1440
1441 * pass2.c (check_dir_block): Require that the length of the
1442 directory entry be at least 12 bytes. Check to see if the
1443 filename is zero-length, and flag that as an error.
1444
Theodore Ts'o7847c1d1999-10-22 15:11:42 +000014451999-10-22 <tytso@valinux.com>
1446
Theodore Ts'o614fdfd1999-10-23 03:19:51 +00001447 * Release of E2fsprogs 1.16
1448
14491999-10-22 <tytso@valinux.com>
1450
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00001451 * pass2.c (check_filetype): If the filetype filesystem feature is
1452 not set, and a directory entry has a dirent feature, offer
1453 to clear it (since 2.0 kernels will do complain will
1454 interpret it as a very large name length field).
1455
1456 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
1457
Theodore Ts'oaa4115a1999-10-21 19:33:18 +000014581999-10-21 <tytso@valinux.com>
1459
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +00001460 * e2fsck.8.in: Update man page to use a more standard format (bold
1461 option flags and italicized variables), as suggested by
1462 Andreas Dilger (adilger@enel.ucalgary.ca)
1463
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00001464 * pass4.c (e2fsck_pass4): If an inode is set in the
1465 inode_imagic_map bitmap, don't check to see if it is
1466 disconnected from the inode tree (because it almost
1467 certainly will be). Free inode_imagic_map at the end of
1468 pass 4.
1469
1470 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
1471 feature is set, check the directory entry's filetype
1472 information field, and fix/set it if necessary.
1473 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
1474 of pass 2.
1475
1476 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
1477 information for inode_reg_map and inode_imagic_map, which
1478 indicates which inodes are regular files and AFS inodes,
1479 respectively.
1480 Since only the master superblock is written during a
1481 restart, force that superblock to be used after a restart;
1482 otherwise changes to the block group descriptors end up
1483 getting ignored.
1484
1485 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
1486 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
1487 which supresses the problem message if e2fsck is run with
1488 the -n option.
1489
1490 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
1491 new problem codes.
1492
1493 * message.c (expand_dirent_expression): Add support for %dt which
1494 prints the dirent type information.
1495
1496 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
1497 and inode_imagic_map).
1498
1499 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
1500 to the context structure.
1501
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +000015021999-09-24 <tytso@valinux.com>
1503
1504 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
1505 e2fsprogs easier to port to non-Unix platforms.
1506
15071999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00001508
1509 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
1510 internal and external inode counts in sync when we
1511 decremented an inode whose link count was already zero.
1512 Now we skip incrementing or decrementing both link counts
1513 if we would cause an overflow condition.
1514 (expand_dir, expand_dir_proc): Change where we update the
1515 inode block count and size files so that the block count
1516 field is updated correctly when we create an indirect block.
1517
Theodore Ts'o78cf0541999-10-20 18:29:18 +000015181999-08-05 <tytso@valinux.com>
1519
1520 * super.c (check_super_block): Check to see whether the
1521 inodes_per_group value in the superblock is insanely too
1522 high.
1523
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +000015241999-08-02 <tytso@valinux.com>
1525
1526 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
1527 the block also shares data with the fs metadata when
1528 the count drops to 1, since the block should still be
1529 cloned, as fs metadata isn't included in the count.
1530
15311999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +00001532
1533 * Release of E2fsprogs 1.15
1534
Theodore Ts'ob55199e1999-07-19 15:37:46 +000015351999-07-19 <tytso@valinux.com>
1536
1537 * unix.c (usage): Add minimalist emergency help to the usage
1538 message.
1539
Theodore Ts'o5596def1999-07-19 15:27:37 +000015401999-07-18 <tytso@valinux.com>
1541
1542 * unix.c: Add support for calculating a progress bar if the -C0
1543 option is given. The function e2fsck_clear_progbar()
1544 clears the progress bar and must be called before any
1545 message is issued. SIGUSR1 will enable the progress bar,
1546 and SIGUSR2 will disable the progress bar. This is used
1547 by fsck to handle parallel filesystem checks. Also, set
1548 the device_name from the filesystem label if it is
1549 available.
1550
1551 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
1552 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
1553 structure which contains the last tenth of a percent
1554 printed for the user.
1555
1556 * message.c (print_e2fsck_message): Add call to
1557 e2fsck_clear_progbar().
1558
1559 * pass1.c (e2fsck_pass1):
1560 * pass2.c (e2fsck_pass2):
1561 * pass3.c (e2fsck_pass3):
1562 * pass4.c (e2fsck_pass4):
1563 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
1564 printing the resource tracking information.
1565
1566 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
1567 an error in the bitmaps, suppress printing the progress
1568 bar using the suppression flag for the remainder of the
1569 check, in order to clean up the display.
1570
Theodore Ts'o74033351999-07-01 03:00:47 +000015711999-06-30 <tytso@valinux.com>
1572
1573 * unix.c (check_mount): Clean up the abort message displayed when
1574 the filesystem is mounted and either stdout or stdin isn't
1575 a tty.
1576
15771999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +00001578
1579 * e2fsck.h:
1580 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
1581 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
1582 pass1_* be private static functions, and create new
1583 function e2fsck_use_inode_shortcuts which sets and clears
1584 the inode shortcut functions in the fs structure.
1585
1586 * e2fsck.h:
1587 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
1588 exported function.
1589
1590 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
1591 if a disconnected inode has any problems before
1592 connecting it to /lost+found. Bug and suggested fix by
1593 Pavel Machek <pavel@bug.ucw.cz>
1594
15951999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +00001596
1597 * unix.c (main): Add missing space in the disk write-protected
1598 message.
1599
Theodore Ts'od4b0ce01999-06-18 01:09:29 +000016001999-05-22 <tytso@rsts-11.mit.edu>
1601
1602 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
1603 code.
1604
1605 * super.c (check_super_block): Add check to make sure the total
1606 number of inodes is sane, since this can be calculated
1607 from the number of groups times the number of inodes per
1608 group. Offer to correct it if it is incorrect.
1609
Theodore Ts'oe79d1b21999-06-18 01:06:59 +000016101999-03-19 <tytso@rsts-11.mit.edu>
1611
1612 * pass5.c (check_block_end): Fix fencepost condition where when
1613 clearing the block padding we were missing the last position
1614 in the bitmap.
1615
Theodore Ts'o75d83be1999-05-18 03:16:36 +000016161999-05-17 <tytso@rsts-11.mit.edu>
1617
1618 * unix.c (reserve_stdio_fds): Add safety check in case
1619 reserve_stdio_fds couldn't open /dev/null.
1620
Theodore Ts'o4a9f5931999-03-16 19:32:52 +000016211999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
1622
1623 * util.c (print_resource_track): Use mallinfo if present to get
1624 more accurate malloc statistics.
1625
1626 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +00001627 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00001628
1629 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
1630
16311999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1632
1633 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
1634 that the block group number is printed. Add new prompt,
1635 PROMPT_UNLINK.
1636
16371999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1638
1639 * Release of E2fsprogs 1.14
1640
Theodore Ts'o9e51eca1999-01-09 16:32:31 +000016411999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1642
1643 * message.c (safe_print): New function which prints strings,
1644 converting non-printable characters using the '^' and
1645 M-notation. This function is now used to print directory
1646 name entries and pathnames.
1647
Theodore Ts'o73f17cf1999-01-04 07:35:45 +00001648Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
1649
1650 * unix.c (main): Reset the context before calling ext2fs_close(),
1651 to avoid referencing already freed memory.
1652
Theodore Ts'o556ad131998-12-19 08:10:58 +000016531998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
1654
1655 * Release of E2fsprogs 1.13
1656
Theodore Ts'o5a679c81998-12-03 16:40:38 +000016571998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
1658
1659 * Makefile.in: Updated dependencies.
1660
16611998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
1662
1663 * pass3.c (get_lost_and_found): If the filesystem is not opened
1664 read-only, then force /lost+found to be created if it is
1665 not present.
1666
1667 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
1668 operation.
1669
Theodore Ts'o1dde43f1998-11-14 04:18:28 +000016701998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1671
1672 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
1673 since e2fsck_free_context may reference data in ctx->fs.
1674
1675 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
1676 before checking ctx->fs->dblist.
1677
16781998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1679
1680 * pass1.c (e2fsck_pass1): Use the device check subroutine on
1681 FIFO's and Socket's, so that we catch bogus immutable inodes.
1682
1683 * pass2.c (process_bad_inode): Process bad socket and fifo's.
1684
1685 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
1686 PR_2_BAD_SOCKET.
1687
Theodore Ts'o7f813ba1998-09-03 01:26:03 +000016881998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
1689
1690 * problem.c: Add PR_3_NO_DIRINFO error code.
1691
1692 * super.c (check_super_value): Rename min and max to min_val and
1693 max_val to avoid possible cpp macro conflicts.
1694
1695 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
1696 possible cpp macro conflicts.
1697
1698 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
1699 cpp macro conflicts.
1700 (check_directory): Fix logic to avoid possible core dump
1701 in the case of ext2fs_get_dir_info returning NULL. (By
1702 the time we get here, it should never happen, but...).
1703 Also simply/streamline the control flow of the function.
1704
Theodore Ts'o24fc5031998-08-26 15:23:31 +000017051998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
1706
1707 * unix.c (check_if_skip): Move the "not cleanly mounted" check
1708 ahead of the maximal mount and too long since checked tests.
1709 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
1710 open, so that we don't open the filesystem using the same
1711 file descriptor as stdout or stderr.
1712
Theodore Ts'of75c28d1998-08-01 04:18:06 +000017131998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
1714
1715 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
1716 get to 100%.
1717
1718 * pass3.c (e2fsck_pass3): Change progress accounting to be
1719 consistent with the other e2fsck passes.
1720
1721 * e2fsck.c (e2fsck_run): At the end of each pass, call the
1722 progress function with the pass number set to zero.
1723
1724 * unix.c (e2fsck_update_progress): If the pass number is zero,
1725 ignore the call, since that indicates that we just want to
1726 deallocate any progress structures.
1727
Theodore Ts'o8144d671998-07-09 05:33:18 +000017281998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1729
Theodore Ts'o4a5fa191998-07-09 05:42:45 +00001730 * Release of E2fsprogs 1.12
1731
17321998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1733
Theodore Ts'o8144d671998-07-09 05:33:18 +00001734 * unix.c (main): Fix typo in checking the incompat feature set; it
1735 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
1736
Theodore Ts'o1fad9041998-07-07 05:44:43 +000017371998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
1738
1739 * badblocks.c (test_disk): Don't clear the existing bad blocks
1740 list when using e2fsck -c, since it may cause blocks with
1741 marginal errors to be dropped from the bad blocks list.
1742
Theodore Ts'o874b4d21998-07-06 14:33:12 +00001743Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
1744
1745 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
1746 compatibility with older kernels.
1747
Theodore Ts'o818180c1998-06-27 05:11:14 +000017481998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
1749
1750 * unix.c (e2fsck_update_progress): Remove unused variables.
1751
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +000017521998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
1753
1754 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
1755 collision with LFS API.
1756
1757 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
1758 properly initialized.
1759 (e2fsck_pass1): Don't allow the the boot loader inode to
1760 be a directory (clear the inode mode field if so).
1761
Theodore Ts'oefac9a11998-05-07 05:02:00 +000017621998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
1763
1764 * unix.c (PRS): Added new option -C, which causes e2fsck to print
1765 progress updates so that callers can keep track of the
1766 completion progress of e2fsck. Designed for use by
1767 progress, except for -C 0, which prints a spinning report
1768 which may be useful for some users.
1769
1770 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
1771 scheme (useful for larger filesystems).
1772
1773 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
1774 progress reporting functions.
1775
Theodore Ts'o4c77fe51998-04-30 17:35:59 +000017761998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1777
1778 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
1779 appropriate return type for comparison functions for qsort.
1780
1781 * e2fsck.h: Add #ifdef protection for unistd.h
1782
1783 * super.c: Remove header files already included by e2fsck.h
1784
Theodore Ts'o76f875d1998-04-27 01:41:13 +000017851998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
1786
1787 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
1788 size of the memory to be resized to ext2fs_resize_mem().
1789
Theodore Ts'o7e44f241998-04-01 03:16:29 +000017901998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
1791
1792 * Makefile.in: Change to use new installation directory variables
1793 convention. Fix uninstall rules to take $(DESTDIR) into
1794 account. Remove cat8dir from the installdirs target,
1795 since modern man package don't necessarily put the cat
1796 directory in /usr/man/cat?.
1797
Theodore Ts'o17dba281998-03-30 01:16:26 +000017981998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
1799
1800 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
1801 extern in e2fsck.h to prevent -Wall warnings.
1802
1803 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
1804
18051998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1806
1807 * super.c (check_super_block): Fix broken superblock sanity check
1808 when calculating blocks_per_group if s_log_frag_size !=
1809 s_log_block_size. Since we don't support fragments, this
1810 isn't a bug deal, but it's good to get it fixed.
1811
Theodore Ts'o246501c1998-03-24 16:22:38 +000018121998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
1813
1814 * unix.c: Fix bug in check of feature set, to make sure we can
1815 really fix this filesystem.
1816
1817 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
1818 num field be a 64 bit type. Add the problem code
1819 PR_1_FEATURE_LARGE_FILES
1820
1821 * problem.c: Add table entry for the problem code
1822 PR_1_FEATURE_LARGE_FILES.
1823
1824 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
1825 a problem for directory inodes. (Since it is also
1826 i_size_high now.) If there are no large_files, then
1827 clear the LARGE_FLAG feature flag. If there are
1828 large_files, but the LARGE_FLAG feature flag is not set,
1829 complain and offer to fix it.
1830 (check_blocks): Add support to deal with non-directory
1831 inodes that have i_size_high set (i.e., large_files).
1832 Don't give an error if a directory has preallocated
1833 blocks, to support the DIR_PREALLOC feature.
1834 (process_block, process_bad_block): The blockcnt variable
1835 is a type of blkcnt_t, for conversion to the new
1836 block_iterate2.
1837
1838 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
1839 a problem for directory inodes. (Since it is also
1840 i_size_high now.)
1841
1842 * message.c (expand_inode_expression): Print a 64-bits of the
1843 inode size for non-directory inodes. (Directory inodes
1844 can only use a 32-bit directory acl size, since
1845 i_size_high is shared with i_dir_acl.) Add sanity check
1846 so that trying to print out the directory acl on a
1847 non-directory inode will print zero.
1848 (expand_percent_expression): %B and %N, which print
1849 pctx->blkcount and pctx->num, can now be 64 bit
1850 variables. Print them using the "%lld" format if
1851 EXT2_NO_64_TYPE is not defined.
1852
1853 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
1854
1855 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
1856 field.
1857
Theodore Ts'ob6f79831998-03-09 13:10:37 +00001858Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1859
1860 * pass3.c (fix_dotdot_proc):
1861 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
1862 * message.c (expand_dirent_expression): Mask off the high eight
1863 bits of the directory entry's name_len field, so that it
1864 can be used for other purposes.
1865
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +00001866Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1867
1868 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
1869 include EXT2_FLAG_RESTART anymore, we need to adjust this
1870 routine so that it *does* return in the case of it seeing
1871 EXT2_FLAG_RESTART.
1872
1873 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
1874 done callback function, which may set context abort
1875 flags. So we need to test the context abort flags after
1876 we call ext2_get_next_inode().
1877 (process_inodes): If we abort due out of process_inodes,
1878 do a clean exit by breaking out of the for loop instead of
1879 just returning.
1880
1881 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
1882 considered a SIGNAL mask (i.e., requiring an immediate
1883 abort of processing to restart). FLAG_RESTART just means
1884 that we want to restart once pass 1 is complete.
1885
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +00001886Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1887
1888 * Change the progress function to return an integer; if returns 1,
1889 then the progress function is expected to have set the
1890 e2fsck context flag signalling a user abort, and the
1891 caller should also initiate a user abort.
1892
Theodore Ts'o63c49691998-02-20 05:24:59 +00001893Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1894
1895 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
1896 end_problem_latch() unless there was actually a problem
1897 latched. Simplifies semantics of the latch processing.
1898
Theodore Ts'o43139321998-02-16 22:34:46 +00001899Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1900
1901 * e2fsck.h: Add new field, priv_data to the e2fsck context
1902 structure. It should be used by callers of the e2fsck
1903 functions only, and not by anything in e2fsck itself.
1904
1905Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1906
1907 * super.c: Instead of call ext2fs_get_device_size(), define and call
1908 e2fsck_get_device_size(). (This function may be stubbed
1909 out in special versions of e2fsck.)
1910
1911 * pass3.c, pass4.c: Remove extra calls to the progress function
1912 that weren't needed.
1913
1914 * mke2fs.8.in: Update man page to note that the format of the bad
1915 block file is the same as the one generated by badblocks.
1916
Theodore Ts'o54be2cc1998-02-01 12:58:48 +00001917Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1918
1919 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
1920
1921 * e2fsck.h: Include <time.h> since it is needed
1922
1923 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
1924 processing.
1925
Theodore Ts'o24dd4021998-02-01 00:16:40 +00001926Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1927
1928 * unix.c (main): In the case where the filesystem revision is too
1929 high, print the message about the superblock possibly
1930 being corrupt.
1931
1932 * e2fsck.8.in: Add expanded comments about how the -b option
1933 works.
1934
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +00001935Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1936
1937 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
1938 the ext2-specific header files are in a flat directory.
1939
1940 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
1941 super.c, swapfs.c, unix.c: Explicitly cast all assignments
1942 from void * to be compatible with C++.
1943
1944Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1945
1946 * unix.c (sync_disk): Remove sync_disk and calls to that function,
1947 since ext2fs_close() now takes care of this.
1948
1949Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1950
1951 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
1952 ehandler.c, unix.c: Change use of private to be priv_data,
1953 to avoid C++ reserved name clash.
1954
Theodore Ts'o5be8dc21997-12-01 18:24:10 +00001955Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1956
1957 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
1958 of e2fsck_get_num_dirs, which has been removed.
1959
1960Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1961
1962 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
1963 to compile and install flushb.
1964
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +00001965Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1966
1967 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
1968 to make sure the extra i_blocks in a device are cleared if
1969 the immutable flag is set.
1970
1971 * util.c (print_resource_track): Fix typo which caused the
1972 time/resource tracking to print "Pass 1 :" instead of
1973 "Pass 1: ".
1974
Theodore Ts'ob8647fa1997-11-20 21:52:43 +00001975Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1976
1977 * pass3.c (expand_directory): Fix bug which could cause core dump
1978 when expanding the directory, and the bitmaps hadn't yet
1979 been read in. Also, only use ext2fs_write_dir_block when
1980 writing a directory block, not when writing out a fresh
1981 indirect block.
1982
Theodore Ts'o8039c481997-11-19 21:39:13 +00001983Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1984
1985 * pass1.c (process_bad_block): Fix bug where first_block wasn't
1986 getting incremented, which caused user to get a
1987 "Programming error?" warning if there was a bad block in a
1988 non-primary superblock/group_descriptor. Also fixed
1989 another bug so that ext2fs_bg_has_super() is consulted, to
1990 avoid problems when using a filesystem with the
1991 sparse_groups option set and there are bad blocks at the
1992 beginning of a group which doesn't have a superblock.
1993
Theodore Ts'of8188ff1997-11-14 05:23:04 +00001994Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1995
1996 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
1997 progress indicator function.
1998
1999 * pass1.c (scan_callback): Add call to the progress feedback
2000 function (if it exists).
2001
2002Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2003
2004 * super.c (check_super_block): Skip the device size check if the
2005 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
2006
2007 * iscan.c (main): Don't use fatal_error() anymore.
2008
2009 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
2010 calling fatal_error(0).
2011
2012 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
2013 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
2014
2015 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
2016
2017 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
2018
2019 * problemP.h: New file which separates out the private fix_problem
2020 data structures.
2021
2022 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
2023 swapfs.c util.c: allocate_memory() now takes a e2fsck
2024 context as its first argument, and rename it to be
2025 e2fsck_allocate_memory().
2026
Theodore Ts'o08b21301997-11-03 19:42:40 +00002027Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2028
Theodore Ts'o68227541997-11-04 04:25:22 +00002029 * unix.c (main): Add a special case check for the error code EROFS
2030 and display an appropriate error message for this case.
2031
Theodore Ts'o08b21301997-11-03 19:42:40 +00002032 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
2033 to take the e2fsck context as their first argument.
2034 Change dir_info.c routines to take an e2fsck_context,
2035 renamed them to start with e2fsck_ to avoid namespace
2036 issues, and changed them to store the directory
2037 information inside the e2fsck context.
2038 Added e2fsck_run() which calls all of the e2fsck passes in
2039 the correct order, and which handles the return of abort
2040 codes. Added abort processing, both via setjmp/longjmp
2041 and via flags in the e2fsck context. Use a flag in the
2042 e2fsck context instead of the restart_e2fsck global
2043 variable. Change uses of free and malloc to
2044 ext2fs_free_mem and ext2fs_get_mem.
2045
Theodore Ts'o291c9041997-10-31 06:17:08 +00002046Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2047
2048 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
2049 consistency.
2050
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00002051Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2052
2053 * pass3.c (get_lost_and_found): Check error return of
2054 EXT2_FILE_NOT_FOUND instead of ENOTDIR
2055
2056 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
2057 instead of ENOTDIR
2058
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002059Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2060
Theodore Ts'o519149f1997-10-25 03:49:49 +00002061 * unix.c (PRS): Make the variable which getopt returns into be
2062 an int, so that it won't lose on platforms where char is
2063 unsigned.
2064
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002065 * pass1b.c (clone_file): Fix bug in error reporting in the case
2066 where cs.errcode is non-zero.
2067
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002068Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2069
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00002070 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
2071 RESOURCE_TRACK around code which uses init_resource_track
2072 and print_resource_track. (Not all systems have timeval)
2073
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002074 * super.c: Remove excess #includes which are not necessary.
2075
2076 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
2077
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00002078Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2079
2080 * pass*.c, super.c: Massive changes to avoid using printf and
2081 com_err routines. All diagnostic messages are now routed
2082 through the fix_problem interface.
2083
2084Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2085
2086 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
2087 entries.
2088
2089 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
2090 PR_2_DUP_DOT_DOT.
2091
2092Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2093
2094 * problem.c: Added new problem codes for some of the
2095 superblock corruption checks, and for the pass header
2096 messages. ("Pass 1: xxxxx")
2097
2098 * util.c (print_resource_track): Now takes a description
2099 argument.
2100
2101Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2102
2103 * super.c, unix.c, e2fsck.c: New files to separate out the
2104 operating-specific operations out from e2fsck.c.
2105 e2fsck.c now contains the global e2fsck context management
2106 routines, and super.c contains the "pass 0" initial
2107 validation of the superblock and global block group
2108 descriptors.
2109
2110 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
2111 (nearly) all global variables and moved them to the e2fsck
2112 context structure.
2113
2114 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
2115 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
2116 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
2117
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00002118Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2119
2120 * message.c: Add compression for the word "Illegal"
2121
2122 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
2123 PR_2_BAD_BLOCK_DEV
2124
2125Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2126
2127 * pass1.c (pass1, check_device_inode), pass2.c
2128 (process_bad_inode): Use a more stringent test for a valid
2129 device.
2130
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00002131Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2132
2133 * e2fsck.c (check_mount): Add stronger warning message about the
2134 perils of running e2fsck on a mounted filesystem.
2135
Theodore Ts'o024996c1997-06-17 05:38:35 +00002136Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2137
2138 * Release of E2fsprogs 1.11
2139
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00002140Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2141
2142 * pass1.c (mark_table_blocks): Mark the superblock and group
2143 descriptor blocks first, so that any conflicts between
2144 these and the bitmap or inode table blocks is noticed.
2145
2146 * problem.c: Fix message printed out when a block or inode bitmap
2147 conflicts with other fs data, has the correct group number
2148 in it.
2149
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00002150Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2151
2152 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
2153
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002154Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2155
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00002156 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
2157 Hawes (whawes@star.net).
2158
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002159 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
2160 bad blocks command so that all of the filesystem gets
2161 tested in the case where the blocksize 2048 or 4096.
2162
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00002163Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
2164
2165 * Release of E2fsprogs version 1.10
2166
2167Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2168
2169 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
2170 where ext2fs_get_next_inode returns the
2171 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
2172
2173Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2174
2175 * Release of E2fsprogs version 1.09
2176
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00002177Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2178
2179 * Release of E2fsprogs version 1.08
2180
Theodore Ts'o521e3681997-04-29 17:48:10 +00002181Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2182
2183 * pass1b.c (clone_file_block): If we clone a directory, we need to
2184 update the dblist entry so that we check (and correct) the
2185 right directory block.
2186
2187Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2188
2189 * pass1.c (process_block): Don't clear blocks references to
2190 filesystem metadata; let pass 1B handle this case.
2191
2192 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
2193
2194 * pass1b.c (pass1d): Deal with a block which is shared with
2195 filesystem metadata.
2196
2197 * e2fsck.h: Make block_illegal_map be a global variable
2198
2199Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2200
2201 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
2202 feature.
2203 (get_backup_sb): New function which attempts to obtain the
2204 correct backup superblock (if possible).
2205
2206Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2207
2208 * e2fsck.c (main): Check the version of the library, and warn if
2209 the library is out of date; this happens generally due to
2210 users who manually install e2fsprogs.
2211
2212 * pass1.c (pass1_get_blocks): If the passed in inode number for
2213 get_blocks isn't what we're expecting pass back
2214 EXT2_ET_CALLBACK_NOT_HANDLED.
2215
Theodore Ts'o21c84b71997-04-29 16:15:03 +00002216Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
2217
2218 * Release of E2fsprogs version 1.07
2219
2220Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2221
2222 * icount.c: New file which implements an inode count abstraction.
2223 This significantly reduces amount of memory needed to
2224 check really large filesystems.
2225
2226 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
2227 abstraction.
2228
2229Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2230
2231 * dirinfo.c (dir_info_iter): New function which allows iteration
2232 over the directories in the dir_info map.
2233
2234 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
2235 over all directories in the dir_info structure, instead of
2236 iterating all inodes looking for directories, and then
2237 looking up the directories using get_dir_info().
2238
2239Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2240
2241 * pass1.c (pass1, process_block):
2242 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
2243 manual code to manage the directory block list information.
2244
2245 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
2246 (deallocate_inode): Call the ext2 library routine
2247 ext2_inode_has_valid_blocks() instead of
2248 inode_has_valid_blocks().
2249
2250 * swapfs.c (swap_inodes): Add check so that we don't try to call
2251 swap_inode_blocks unless the inode has valid blocks.
2252 (Otherwise a long fast symlink might cause
2253 swap_inode_blocks to erroneously get called.)
2254
2255Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2256
2257 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
2258 PR_2_DOT_DOT_NULL_TERM.
2259
2260 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
2261 .. entries are null-terminated, since the 2.0 kernel
2262 requires this (for no good reason).
2263
2264Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2265
2266 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
2267 that we can recover from missing inode tables.
2268
2269 * dirinfo.c (get_dir_info): If there are no directories in the
2270 dir_info abstraction, don't core dump (because dir_info is
2271 NULL).
2272
2273 * e2fsck.c (main): Don't try using the backup superblocks if there
2274 aren't any.
2275 (check_super_block): If there are illegal inode table or
2276 bitmaps, set the filesystem as being in error.
2277
2278Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2279
2280 * pass2.c (check_dir_block): Added check to make sure that rec_len
2281 is a a multiple of 4 (so that the directory entries are
2282 4-byte aligned).
2283
2284Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2285
2286 * Makefile.in (uninstall): Uninstall all programs in the PROGS
2287 line.
2288 (PROGS): Don't build and install the extend program by
2289 default.
2290
2291
2292Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2293
2294 * pass1.c (process_inodes): Make sure the stashed_ino variable is
2295 saved and restored as well.
2296 (pass1): For fast sym links, skip the check_blocks
2297 processing step altogether.
2298
2299Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2300
2301 * problem.c, message.c: New files, to completely refurbish how
2302 filesystem problems are reported to the user. The
2303 diagnostic messages are now encoded out in an easily
2304 customizable, extensible format. The messages printed out
2305 in preen mode are all on one line, and contain the device
2306 name.
2307
2308Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2309
2310 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
2311 deleted files.
2312
2313 * pass1.c (pass1): Ignore missing inode table errors during the
2314 scan, and just skip past those inodes.
2315
2316 * pass3.c (check_root): Remove root_ino argument, and assume that
2317 the root inode must be EXT2_ROOT_INO. Move responsibility
2318 of setting the parent of the root inode in the directory
2319 inode structure to pass2().
2320
2321 * pass2.c (check_dir_block): Don't allow links to the root
2322 directory.
2323
2324 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
2325 since the inode is no longer used.
2326
2327Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2328
2329 * e2fsck.c (main): If the superblock magic number is wrong, or the
2330 block group fails a sanity check, then automatically
2331 restart trying to use the backup superblocks.
2332
2333 * pass1.c (mark_table_blocks): Make the inode tables ahead of
2334 everything else; in the case where a bitmap block overlays
2335 the inode table, the inode table should take precedence.
2336
2337 * pass2.c (maybe_clear_entry): Make the deleted/unused error
2338 message fit on one line, since the error can happen during
2339 a preen pass. (We eventually need to revamp the whole
2340 e2fsck error reporting and prompting system, but that's a
2341 job for another day.)
2342
2343Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2344
2345 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
2346 for the benefit of the inode scan functions.
2347
2348 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
2349 indicating that an inode is in a bad block, mark that
2350 inode as being used, as well as in the inode "bb" map.
2351
2352 * pass2.c (maybe_clear_entry): New function which generalizes the
2353 error cases when a directory entry needs to be cleared.
2354 (check_dir_block): If an inode is in the "bb" map, offer
2355 to clear the directory entry, since the inode is in a bad
2356 block.
2357
2358 * pass4.c (pass4): If an inode is marked as used, but is is marked
2359 in the "bb" map, don't process it as a disconnected inode.
2360
2361Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2362
2363 * Release of E2fsprogs version 1.06
2364
Theodore Ts'o5c576471997-04-29 15:29:49 +00002365Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2366
2367 * e2fsck.c (main): Print out the version number of the shared
2368 library when using the -V option.
2369
2370 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
2371 consistency's sake.
2372
2373 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
2374 out the backup superblocks when we know we have a valid
2375 filesystem.
2376
2377Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2378
2379 * util.c (preenhalt): Make it explicit on preenhalt that running
2380 e2fsck manually means without the -a or -p flag.
2381
2382Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2383
2384 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
2385 (Linux/FT actually sets the mode bits, so we have to
2386 handle it specially.)
2387
2388 * e2fsck.c (check_if_skip): Print a message if the filesystem is
2389 just dirty, so that the user knows that it's about to be
2390 checked (since this will take a while).
2391
2392Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2393
2394 * pass4.c: If a disconnected inode is zero-length, prompt to
2395 delete it instead of connecting it to lost+found.
2396
2397Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2398
2399 * Release of E2fsprogs version 1.05
2400
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00002401Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2402
2403 * pass4.c (pass4): If the user refuses to connect an unattached
2404 inode to lost+found, don't try to set i_links_count. This
2405 is bad, since if the user says yes, the inode will be
2406 marked as unused, which is not necessarily the right
2407 thing, especially since the rest of the cleanup doesn't
2408 happen here.
2409
2410 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
2411 dellocating an inode. (Not strictly necessary, but...)
2412
2413 * pass4.c (pass4): Add "bonehead" explanation to the "programming
2414 error" message.
2415
2416Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2417
2418 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
2419 byte-swap the filesystem so that it is normalized. -S
2420 will byte-swap the filesystem regardless of its current
2421 byte-order.
2422
2423 * swapfs.c: New file, which will byte-swap a filesystem.
2424
2425Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2426
2427 * pass1.c (pass1): Change handling on files with non-zero dtime
2428 and non-zero i_link_count; before we treated them as
2429 deleted file per botched ext2 0.3c kernel behavior. We
2430 now clear dtime instead.
2431
2432Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2433
2434 * e2fsck.c (main): If e2fsck sets the clean bit, even if
2435 nothing else is changed, make sure FSCK_NONDESTRUCT is
2436 set (since after all having the filesystem set to
2437 invalid is an error. :-)
2438
2439Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2440
2441 * pass1.c (process_block): Make sure that meta data doesn't get
2442 accidentally set in the dir_blocks array (which could
2443 happen in some error condtions).
2444
2445 * pass1.c (pass1):
2446 * pass2.c (process_bad_inode): Check for fragments in a
2447 OS-independent fashion.
2448
2449Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2450
2451 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
2452 cleanup for the filesystem.
2453
2454Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2455
2456 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
2457
Theodore Ts'o62c06f71997-04-29 14:34:47 +00002458Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2459
2460 * Release of E2fsprogs version 1.04
2461
2462Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2463
2464 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
2465 try "e2fsck -b 8193" before allowing e2fsck to relocate
2466 inode table blocks.
2467
2468 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
2469 depending on the option to configure. Added targets for
2470 e2fsck.static and e2fsck.shared for people who want to
2471 build a static or shared variant manually.
2472
Theodore Ts'o7f88b041997-04-26 14:48:50 +00002473Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
2474
2475 * Release of E2fsprogs version 1.03
2476
2477Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
2478
2479 * e2fsck.c (show_stats): Don't use floating point to display
2480 percentage of non-contiguous files, as different libc
2481 handle result truncation differently, and this causes the
2482 test suite to bomb out depending on which libc you are
2483 using.
2484
2485 * util.c (allocate_memory): Fix error message to omit extraneous
2486 %%s.
2487
2488Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
2489
2490 * pass4.c (pass4):
2491 * pass2.c (check_dir_block):
2492 * pass1.c (pass1): Add support for dynamic first inode revision.
2493
2494Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
2495
2496 * pass3.c (check_root): Fix spelling typo
2497
2498Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
2499
2500 * e2fsck.c (check_super_block): If the superblock fails certain
2501 internal consistency checks, exit with a fatal error after
2502 printing the "superblock is corrupt message".
2503
Theodore Ts'o74becf31997-04-26 14:37:06 +00002504Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
2505
2506 * Release of E2fsprogs version 1.02
2507
2508Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
2509
2510 * pass1.c (process_block): Check to see if a file is "fragmented".
2511 i.e., non-contiguous. Note that any file which is larger
2512 than the block group is guaranteed to be non-contiguous.
2513 We may want to use a different hueristic for deciding
2514 whether or not a file is "fragmented".
2515
2516 * e2fsck.c (show_stats): Print statistics of how many
2517 non-contiguous files are on the system.
2518
2519Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
2520
2521 * badblocks.c (read_bad_blocks_file, test_disk): Fold
2522 functionality of test_disk() (which runs badblocks) into
2523 read_bad_blocks_file(); test_disk() now calls
2524 read_bad_blocks_file() with a NULL bad_blocks_file
2525 argument.
2526
2527Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
2528
2529 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
2530 #if defined(linux). The latter won't work if we're
2531 compiling -ansi.
2532
Theodore Ts'o297f47a1997-04-26 14:25:20 +00002533Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
2534
2535 * e2fsck.c (check_mount): For Linux systems, the check to see if
2536 the root is mounted read-only has to be done for all
2537 filesystems, not just for the root filesystem, due to the
2538 way that some /etc/rc scripts are set up.
2539
Theodore Ts'o50e1e101997-04-26 13:58:21 +00002540Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
2541
2542 * Makefile.in (install): Strip programs when they are installed.
2543 (e2fsck): Build e2fsck statically.
2544
2545Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
2546
2547 * util.c (preenhalt): Preenhalt now takes an argument, which is an
2548 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
2549 flag in the superblock in cases where preenhalt is called.
2550 All calls to preenhalt() were changed to either
2551 preenhalt(fs) or preenhalt(NULL) in a few cases where the
2552 fs pointer was not available. (Most notable, for block
2553 read/write errors.)
2554
2555Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
2556
2557 * ehandler.c:
2558 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
2559
2560Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
2561
2562 * e2fsck.c (show_stats): Show statistics about how many inodes
2563 have indirect, doubly indirect, and triply indirect
2564 blocks. Allow up to 8 digits for statistics, instead of
2565 merely 6, so things look pretty for large filesystems.
2566
2567 * pass1.c (pass1): Keep statistics about indirect, doubly
2568 indirect, and triply indirect blocks.
2569
2570 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
2571 pass 1.
2572
2573Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
2574
2575 * util.c, ehandler.c: Move #include of <sys/resource.h> after
2576 #include of "e2fsck.h", since sys/resource.h may depend on
2577 sys/time.h, which is #included in e2fsck.h.
2578
2579Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
2580
2581 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
2582 function to determine if the device is mounted.
2583
2584 * e2fsck.c (main): Add better error messages if ext2fs_open()
2585 fails.
2586
2587Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
2588
2589 * pass1.c (check_blocks): If we're clearing a directory, clear
2590 pb.is_dir so we don't do the following check of making
2591 sure the directory size matches; this is pointless, since
2592 we've already cleared the inode.
2593
2594Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2595
2596 * pass1.c (bad_primary_block): New function, called by
2597 process_bad_block, which explains the facts of life to the
2598 user when a block in the primary superblock or primary
2599 group descriptors is bad.
2600
2601 * pass2.c (check_dot): Handle the case where the first directory
2602 entry is used, but not ".".
2603
2604 * pass2.c (check_dotdot): Handle the case where the second directory
2605 entry is used, but is not "..".
2606
2607Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2608
2609 * e2fsck.c (check_super_block): Get the size of the physical
2610 device and if it is smaller than the reported size of the
2611 filesystem, report an error.
2612
2613Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
2614
2615 * e2fsck.c (check_if_skip): Print the number of allocated files and
2616 blocks on clean filesystems.
2617
2618Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
2619
2620 * e2fsck.8: Updated date and version number.
2621
2622Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
2623
2624 * pass1.c (check_blocks): Check that directory size matches *exactly*
2625 the count of allocated blocks.
2626
2627Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
2628
2629 * pass1b.c (pass1d): Free the shared[] array when we're done with
2630 it to avoid a memory leak.
2631
2632 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
2633 block_dup_map.
2634
2635 * pass2.c (process_bad_inode): When clearing the inode, make sure
2636 the pathname is freed, to prevent a memory leak.
2637
2638 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
2639 when we're finished with them.
2640 (check_block_bitmaps): Free free_array when we're finished
2641 with them.
2642
2643 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
2644 linking the executable.
2645
2646 * pass2.c (process_bad_inode): Even on OS's that don't support the
2647 fragment fields, make sure the Linux equivalent fields are
2648 set to zero. If an OS wants to reuse these fields, which
2649 is probably a bad idea (although we may get desperate in
2650 the future) this code will have to be changed.
2651
2652 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
2653 on the inode field, and then blockcnt field. This is just
2654 to keep the ordering of dir_blocks the same on all
2655 platforms when there are more than on missing directory
2656 blocks, which are indicated directories with holes, which
2657 are indicated with the block number being set to zero.
2658
2659Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2660
2661 * pass1.c (check_blocks, process_block): check_blocks() modified
2662 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
2663 the inode is a directory. process_block() now checks to
2664 see if a directory has a "hole", or missing block. If so,
2665 this fact is recorded in the directory block list so that
2666 the problem can be resolved in pass #2.
2667
2668 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
2669 allocate new blocks for directories with "holes". Called
2670 out of check_dir_block if a block in the directory block
2671 list is zero.
2672
2673 * pass3.c (get_lost_and_found): Move location of free(block) to
2674 prevent possible memory leak.
2675
2676Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2677
2678 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
2679 instead of alloca() --- alloca is not portable! Check to
2680 make sure the filename is not longer than EXT2_NAME_LEN,
2681 and offer to fix it by truncating it, since it should
2682 never happen.
2683
2684 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
2685 not portable!! In any case putenv() in some systems must
2686 take a static character array or malloc()'ed memory;
2687 passing memory allocated using alloca() to putenv() is not
2688 advisable.
2689
2690 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
2691 alloca() --- alloca() is not portable!!!
2692
2693Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
2694
2695 * pass1b.c (pass1c):
2696 * pass3.c (check_root, get_lost_and_found):
2697 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
2698 to read/write the directory block.
2699
2700Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
2701
2702 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
2703 make sure VMIN and VTIME are set correct.
2704
2705Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
2706
2707 * pass1.c (mark_block_used): Change to be an inline function.
2708 Assume that the block validity checks are already done,
2709 and use the fast variant of the bitmap functions.
2710
2711Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
2712
2713 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
2714 bounds of the bitmaps in advance, and then use the fast
2715 variant of e2fs_test_{block,inode}_bitmap.
2716
2717 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
2718 the bounds checking has already been done earlier.
2719
2720Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
2721
2722 * pass1.c (pass1): Allocate and free the block_illegal_map, which
2723 is used for shortcut processing in process_block.
2724 (mark_table_blocks): Initialize block_illegal_map with the
2725 filesystem blocks.
2726 (describe_illegal_block): New helper function that
2727 describes why a block is illegal.
2728 (process_block): Use block_illegal_map as a shortcut
2729 to determine whether a block is bad. Use
2730 describe_illegal_block to print out why the block is illegal.
2731
2732Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
2733
2734 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
2735
2736 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
2737 <mntent.h> if they don't exist. (Mostly so that "make
2738 depend" works.)
2739
2740 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
2741 it exists).
2742
2743 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
2744 exist.
2745
2746Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2747
2748 * pass2.c (process_bad_inode, check_for_zero_long,
2749 check_for_zero_char): Change long to u32, and char to u8.
2750
2751Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2752
2753 * util.c (inode_has_valid_blocks):
2754 * pass2.c (process_bad_inode):
2755 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
2756 LINUX_S_IS* instead of S_IS*.
2757
2758 * e2fsck.h: Don't #include <sys/stat.h>
2759
2760 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
2761 this program is pretty much useless if BLKFLSBUF isn't
2762 supported.)
2763
2764 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
2765 used.
2766
2767Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
2768
2769 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
2770 to allocate space for file names instead of using fixed size buffers.
2771 (process_bad_inode): Only check inode frag fields if
2772 HAVE_EXT2_FRAGS is defined (by configure).
2773 * pass1.c (pass1): Only check the inode frag fields if
2774 HAVE_EXT2_FRAGS is defined (by configure).
2775
2776 * e2fsck.c (check_mount): Only check for a mounted filesystem if
2777 HAVE_MNTENT_H is defined (by configure).
2778 (PRS): Use alloca to allocate the new path string, instead of
2779 having a fixed size buffer (which was the wrong size anyway).
2780 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
2781 is defined.
2782
2783 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
2784 defined (by configure).
2785
2786 * Makefile.in: Rewritten to conform to GNU coding standards and
2787 support separate compilation directories.
2788
2789Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
2790
2791 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
2792
Theodore Ts'of3db3561997-04-26 13:34:30 +00002793Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
2794
2795 * pass1.c (unwind_pass1): Clear the file type statistics counter
2796 when pass 1 needs to be restarted from scratch.
2797
2798 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
2799 being reallocated to blocks in the next block group,
2800 instead of the current block grup.
2801
2802 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
2803 inode.i_links_count is set.
2804
2805Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
2806
2807 * pass1.c (process_block): Add checks for if the block is
2808 trepassing on a superblock or group descriptor table.
2809
2810Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
2811
2812 * main.c (corrupt_msg): Extend the message which is printed out
2813 when the superblock is corrupt, to include the suggestion
2814 of using the -b option to specify an alternate superblock.
2815
2816Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
2817
2818 * badblocks.c (read_bad_blocks_file): If we are adding or
2819 replacing bad blocks in the bad blocks inode, sanity check
2820 the bad block inode first, and clear out any illegal blocks.
2821
2822 * pass2.c (check_name): Don't bomb out if the attempt to get the
2823 pathname of the containing directory returns an error; the
2824 directory may be too badly damaged to expect that
2825 ext2fs_get_pathname will always succeed. Use "???" if the
2826 pathname can't be obtained (it's only for a printf to the
2827 user anyway).
2828
2829 The name of the containing directory and the bad filename
2830 were incorrectly interchanged in the user message. Fixed.
2831
2832 * pass2.c (check_name, check_dir_block): Use a common static
2833 string for the unknown pathname.
2834
2835Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
2836
2837 * Fixed lots of printf formats to make sure that block and inode
2838 numbers are printed as unsigned integers.
2839
2840Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
2841
2842 * pass5.c (check_block_end): Fix calculation of how the last block
2843 in the block bitmap should be calculated.
2844
2845Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
2846
2847 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
2848 be an ext2fs_inode_bitmap, and free it properly.
2849
2850 * e2fsck.h
2851 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
2852 level to the superblock.
2853
2854Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
2855
2856 * e2fsck.c (usage): Fixed bogus usage message.
2857
2858Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
2859
2860 * pass1.c (process_bad_block): Fixed bug so that blocks in the
2861 backup superblocks and group descriptors are handled gracefully.
2862