blob: d39d458efd73265c1c3b2af94a56625e676b999d [file] [log] [blame]
Theodore Ts'o817e49e2003-11-21 09:10:29 -050012003-09-12 Theodore Ts'o <tytso@mit.edu>
2
3 * unix.c (PRS): Check the returned name from blkid_get_devname and
4 print an error if the requested LABEL/UUID does not exist.
5
Theodore Ts'oef344e12003-11-21 09:02:21 -050062003-09-03 Theodore Ts'o <tytso@mit.edu>
7
8 * pass1.c (mark_table_blocks): Use the new function
9 ext2fs_reserve_super_and_bgd to calculate the blocks to be
10 reserved.
11
Theodore Ts'oa7ac1df2003-08-24 17:56:41 -0400122003-08-24 Theodore Ts'o <tytso@mit.edu>
13
Theodore Ts'o557ddb22003-08-24 21:36:38 -040014 * util.c (get_backup_sb): Check to make sure the context is passed
15 in non-NULL before trying to dereference it. Otherwise we
16 might core dump when called to expand %S in a problem
17 description.
18
Theodore Ts'oa7ac1df2003-08-24 17:56:41 -040019 * e2fsck.8.in: Adjust description line so that apropos
20 "ext2" or "ext3" will find the man page. (Addresses
21 Debian Bug #206845)
22
Theodore Ts'o27479eb2003-08-21 08:59:38 -0400232003-08-21 Theodore Ts'o <tytso@mit.edu>
24
25 * journal.c (e2fsck_move_ext3_journal): When moving the journal or
26 backing up the journal inode, make sure it gets written to
27 all the superblocks.
28
Theodore Ts'oa435ec32003-08-21 00:40:26 -0400292003-08-20 Theodore Ts'o <tytso@mit.edu>
30
31 * journal.c (e2fsck_move_ext3_journal): If the superblock's backup
32 journal information is not set, copy the journal inode
33 information to the superblock.
34 (e2fsck_get_journal): If the journal inode is corrupted,
35 synthesize one from the backup information in the
36 superblock.
37
38 * problem.c, problem.h (PR_0_BACKUP_JNL): Add new problem code
39 which is used when we make a backup of the journal inode.
40
Theodore Ts'o54a31a32003-08-19 10:08:34 -0400412003-08-19 Theodore Ts'o <tytso@mit.edu>
42
43 * e2fsck.h, unix.c (PRS, e2fsck_clear_progbar,
44 e2fsck_simple_progress): Don't print the ^A and ^B
45 characters which bracket the progress bar when the e2fsck
46 program is talking directly to a tty, but only when it is
47 being piped to another program. (Addresses Debian bug
48 #204137)
49 * unix.c: Move some initialized variables to the BSS segment to
50 shrink the size of the e2fsck executable.
51
Theodore Ts'oc4e3d3f2003-08-01 09:41:07 -0400522003-08-01 Philipp Thomas <pthomas@suse.de>
53
Theodore Ts'o0c193f82003-08-01 14:26:23 -040054 * Include inttypes.h if present. New macros INT_TO_VOIDPTR and
55 VOIDPTR_TO_INT. Use them throughout for int<->void *
56 casts to fix 64-bit warnings.
57
Theodore Ts'oc4e3d3f2003-08-01 09:41:07 -040058 * dirinfo.c, dx_dirinfo.c, e2fsck.c, ea_refcount.c, journal.c,
59 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
60 pass5.c, super.c, swapfs.c: ext2fs_getmem(),
61 ext2fs_free_mem(), and ext2fs_resize_mem() all now take a
62 'void *' instead of a 'void **' in order to avoid pointer
63 aliasing problems with GCC 3.x.
64
Theodore Ts'o9c7ec172003-07-26 01:03:34 -0400652003-07-25 Theodore Ts'o <tytso@mit.edu>
66
67 * Release of E2fsprogs 1.34
68
Theodore Ts'o48e6e812003-07-06 00:36:48 -0400692003-07-06 Theodore Ts'o <tytso@mit.edu>
70
71 * pass2.c: Fix gcc -Wall nitpicks (missing #include <string.h>)
72
73 * dict.c, dict.h: Fix gcc -Wall nitpicks (indented cpp directives)
74
Theodore Ts'od3128cc2003-06-24 18:06:03 -0400752003-06-8 Theodore Ts'o <tytso@mit.edu>
76
77 * problem.c: Fix spelling error.
78
Theodore Ts'o113e4052003-05-17 21:00:46 -0400792003-05-17 Theodore Ts'o <tytso@mit.edu>
80
81 * unix.c (show_stats), e2fsck.h: Use ngettext (abbreivated with
82 the macro P_(str1, str2, n)) to simplify the statistics
83 reporting.
84
Theodore Ts'o2a29f132003-05-05 12:08:47 -0400852003-05-05 Theodore Ts'o <tytso@mit.edu>
86
87 * unix.c (main): If --enable-testio-debug is set, then use the
88 test_io manager so we can watch what e2fsck is doing.
89
Theodore Ts'oa04eba32003-05-03 16:35:17 -0400902003-05-03 Theodore Ts'o <tytso@mit.edu>
91
Theodore Ts'oddc32a02003-05-03 18:45:55 -040092 * unix.c (show_stats): Remove uneeded use of _() around string
93 under #ifndef NLS
94
95 * problem.c: Mark two strings (PR_1_RELOC_TO and
96 PR_2_NON_UNIQUE_FILE) as not being printf format strings.
97 Fix typo (doubled 'is') in PR_2_FILE_ACL_BAD.
98
Theodore Ts'oa04eba32003-05-03 16:35:17 -040099 * Makefile.in: Add $(LIBINTL) to the link line so we can support
100 using the internal gettext library.
101
102 * e2fsck.h: Add #ifndef protection around LOCALEDIR definition.
103
Theodore Ts'o6177c412003-04-27 17:34:14 -04001042003-04-27 Theodore Ts'o <tytso@mit.edu>
105
106 * message.c (expand_at_expression): Fixed NLS support for message
107 abbreviations.
108
Theodore Ts'o71df0dc2003-04-21 16:17:09 -04001092003-04-21 Theodore Ts'o <tytso@mit.edu>
110
111 * Release of E2fsprogs 1.33
112
Theodore Ts'o520ead32003-04-19 13:48:27 -04001132003-04-19 Theodore Ts'o <tytso@mit.edu>
114
115 * rehash.c: Fix lint warnings by including string.h and ctype.h
116
117 * pass2.c (dict_de_cmp): Fix lint warnings by using const pointers.
118
119 * unix.c (e2fsck_simple_progress), e2fsck.h: Fix lint warnings by
120 using const pointers. Remove unused variables.
121
Theodore Ts'o12dd69f2003-04-17 21:55:38 -04001222003-04-17 Theodore Ts'o <tytso@mit.edu>
123
124 * rehash.c (name_cmp): Sort the deleted inodes to the end of the
125 list, for portability to systems that whose qsort does not
126 perform a stable sort.
127
Theodore Ts'obc34d6b2003-04-16 14:05:06 -04001282003-04-16 Theodore Ts'o <tytso@mit.edu>
129
130 * unix.c: Bracket progress bar output with control-A and control-B
131 characters. These characters are used as in-band
132 signalling to allow a logging program to filter out the
133 progress bar.
Theodore Ts'o908b7852003-04-16 15:20:13 -0400134 (PRS): Use setvbuf instead of setbuf to force stdout and
135 stderr to be non-buffered when the stdout/stderr are a pipe.
Theodore Ts'o12dd69f2003-04-17 21:55:38 -0400136 This fixes a cosmetic problem when using e2fsck under
137 logsave.
Theodore Ts'o908b7852003-04-16 15:20:13 -0400138
Theodore Ts'offf45482003-04-13 00:44:19 -04001392003-04-12 Theodore Ts'o <tytso@mit.edu>
140
141 * unix.c: Add #ifdef around #include <sys/ioctl.h>
142
Theodore Ts'o2a77a782003-04-05 22:50:44 -05001432003-04-05 Theodore Ts'o <tytso@mit.edu>
144
145 * super.c (check_super_block): Update the global free block and
146 inode counters from the block group specific counters
147 quietly. This is needed for an experimental patch which
148 eliminates locking the entire filesystem when allocating
149 blocks or inodes; if the filesystem is not unmounted
150 cleanly, the global counts may not be accurate.
151
Theodore Ts'oaa75ecc2003-03-17 10:01:22 -05001522003-03-17 Theodore Ts'o <tytso@mit.edu>
153
154 * util.c: Explicitly declare e2fsck_global_ctx as extern for the
155 benefit of the Apple Darwin port.
156
Theodore Ts'o1d2eef42003-03-15 13:30:07 -05001572003-03-15 Theodore Ts'o <tytso@mit.edu>
158
159 * rehash.c (e2fsck_rehash_dir): If user specified the -n option,
160 skip trying to write out directory.
161 (e2fsck_rehash_directories): Fix the percentage
162 calculation in the progress bar.
163
Theodore Ts'ob0700a12003-03-14 01:43:56 -05001642003-03-14 Theodore Ts'o <tytso@mit.edu>
165
Theodore Ts'o12dd69f2003-04-17 21:55:38 -0400166 * problem.c, problem.h (PR_2_REPORT_DUP_DIRENT): Add new problem
167 code.
Theodore Ts'o09266682003-03-14 22:19:10 -0500168
169 * pass2.c (check_dir_block): Check for duplicate filenames within
170 a single directory block (because this is the easy case;
171 we don't currently check for duplicates that span
172 directory blocks, for now. Eventually for htree
173 directories we can do this by searching for all directory
174 blocks that have a hash overflow, and then searching the
175 adjacent blocks to find all other potential duplicates.)
176
Theodore Ts'oe71d8732003-03-14 02:13:48 -0500177 * iscan.c, scantest.c, unix.c: And #ifdef protection around
178 #include of malloc.h
179
Theodore Ts'ob0700a12003-03-14 01:43:56 -0500180 * rehash.c (duplicate_search_and_fix): Now search for duplicates
181 filenames, and either prompt to remove a complete
182 duplicate entry, or to rename a duplicate filename.
183 (e2fsck_rehash_dir): Use a progress bar to report
184 progress, and don't print all of the directory inodes as
185 they are optimized.
186
187 * problem.c, problem.h (PR_2_DUPLICATE_DIRENT,
188 PR_2_NON_UNIQUE_FILE): New problem codes.
189
190 * unix.c (e2fsck_simple_progress), e2fsck.h: New function which
191 can be called to provide specialized progress bars that
192 are not related to the top-level pass-based completion
193 percentage.
194
195 * pass3.c (e2fsck_adjust_inode_count), e2fsck.h: Export previously
196 static function.
197
Theodore Ts'o77be4d22003-03-06 12:39:55 -05001982003-03-06 <tytso@mit.edu>
199
200 * e2fsck.8.in: Fix minor nit in the -C option. (Addresses Debian
201 bug #173612)
202
Theodore Ts'of3640932003-03-01 19:47:44 -05002032003-03-01 Theodore Ts'o <tytso@mit.edu>
204
205 * Makefile.in, journal.c, unix.c: Use blkid functions to find the
206 journal from the UUID, and to interpret the device
207 specification.
208
209 * e2fsck.c: Free the blkid_cache when releasing the e2fsck context
210 structure.
211
212 * e2fsck.h: If strnlen is not present, define it as a macro which
213 calls e2fsck_strlen(). Add prototype for string_copy().
214 Add blkid_cache to e2fsck context, and make
215 filesystem_name, device_name, and journal_name be
216 non-const variables.
217
218 * pass1.c, pass2.c: Remove static strnlen function
219
220 * util.c (string_copy, e2fsck_strnlen): New functions
221
Theodore Ts'o19445ef2003-01-29 21:04:52 -05002222003-01-29 Theodore Ts'o <tytso@mit.edu>
223
224 * unix.c (usage): Make descripton -c be a bit more explicit
225
Theodore Ts'o4f489282003-01-22 18:28:15 -05002262003-01-22 Theodore Ts'o <tytso@mit.edu>
227
228 * pass1.c (check_blocks): Use the EXT2_I_SIZE macro.
229
Theodore Ts'ob92ae152003-01-02 16:53:54 -05002302003-01-02 Theodore Ts'o <tytso@mit.edu>
231
232 * unix.c (main): Detect if there is an attempt to run the journal
233 twice, and abort with an error if this is the case.
234 (Address IBM Bugzilla bug #1226)
235
Theodore Ts'oe34bf432002-12-18 18:28:10 -05002362002-12-18 Theodore Ts'o <tytso@mit.edu>
237
238 * pass2.c (strnlen): Provide strnlen if libc doesn't.
239
Theodore Ts'o8161a742003-01-02 16:36:44 -05002402003-11-19 Theodore Ts'o <tytso@mit.edu>
241
242 * unix.c (PRS): Print an error if more than one of the -p/-a, -n
243 or -y options are specified.
244
Theodore Ts'o54779c62002-11-13 07:00:16 -05002452002-11-12 Theodore Ts'o <tytso@mit.edu>
246
247 * problem.c: Make HTREE problems PR_PREEN_OK, so that we don't
248 abort an e2fsck after the filesystem has been mounted
249 using the 2.4 ext2 codebase.
250
Theodore Ts'o38513012002-11-09 15:00:56 -05002512002-11-09 Theodore Ts'o <tytso@mit.edu>
252
253 * Release of E2fsprogs 1.32
254
Theodore Ts'oae65b292002-11-08 20:08:48 -05002552002-11-08 Theodore Ts'o <tytso@mit.edu>
256
257 * Release of E2fsprogs 1.31
258
Theodore Ts'o299d7422002-11-08 11:10:28 -05002592002-11-08 <tytso@snap.thunk.org>
260
Theodore Ts'oc1637bd2002-11-08 15:55:17 -0500261 * unix.c (main): Fix a bug where e2fsck could erroneously mark a
262 filesystem as being valid if it was being checked and it
263 is interrupted with a ^C. (Bug introduced in e2fsprogs
264 1.28.)
265
Theodore Ts'o5e72cdb2002-11-08 15:35:13 -0500266 * unix.c (PRS), journal.c: Set the default level of journal
267 debugging to be 0, and allow the user to set the level of
268 journal debugging by using the E2FSCK_JBD_DEBUG
269 environment variable.
270
Theodore Ts'o299d7422002-11-08 11:10:28 -0500271 * pass1.c (new_table_block), super.c (check_super_block), swapfs.c
272 (swap_filesys): Clear EXT2_FLAG_MASTER_SB_ONLY to make
273 sure the backup superblocks and group descriptors are
274 updated when we make an important change to the
275 superblocks and/or group descriptors. (i.e., generating a
276 UUID, allocating filesystem metadata, or byte-swapping the
277 filesystem.)
278
Theodore Ts'oee895132002-11-07 16:16:55 -05002792002-11-07 Theodore Ts'o <tytso@mit.edu>
280
281 * e2fsck.h, unix.c (main, check_mount): Fix e2fsck so that it
282 returns the appropriate exit code, so that the boot
283 scripts will be told that they need to automatically
284 reboot.
285
Theodore Ts'obe93ef02002-10-31 18:38:55 -05002862002-10-31 Theodore Ts'o <tytso@mit.edu>
287
Theodore Ts'o5d823a42002-11-01 02:13:53 -0500288 * Release of E2fsprogs 1.30
289
2902002-10-31 Theodore Ts'o <tytso@mit.edu>
291
Theodore Ts'ob40ffd72002-10-31 19:30:24 -0500292 * unix.c (usage), e2fsck.8.in: Add the -D option to the usage and
293 command synopsis. (Addresses Debian bug #167108)
294
Theodore Ts'obe93ef02002-10-31 18:38:55 -0500295 * pass1.c (e2fsck_pass1): Check the superblock write time to see
296 whether or not we can safely do the LOW_DTIME checks.
297 (Addresses Sourceforge bug #620980)
298
Theodore Ts'o76dd5e52002-10-30 23:07:21 -05002992002-10-30 Theodore Ts'o <tytso@mit.edu>
300
Theodore Ts'o482afc42002-10-31 03:32:34 -0500301 * Makefile.in (install): Search all compression extensions when
302 deleting old man pages.
303
Theodore Ts'o76dd5e52002-10-30 23:07:21 -0500304 * pass1.c (mark_table_blocks): Fix bug in meta_bg support; only
305 mark blocks legacy group descriptor blocks up to
306 s_first_meta_bg.
307
Theodore Ts'oa49929b2002-10-20 00:58:08 -04003082002-10-20 Theodore Ts'o <tytso@valinux.com>
309
310 * pass1.c (mark_table_blocks): Add support for the meta_blockgroup
311 filesystem format.
312
Theodore Ts'o3e699062002-10-13 23:56:28 -04003132002-10-13 Theodore Ts'o <tytso@mit.edu>
314
315 * pass3.c (e2fsck_get_lost_and_found): Pass in mode 700 to
316 ext2fs_new_inode().
317
318 * unix.c (show_stats): Fix format bug if NLS is in use.
319
320 * journal.c, pass1.c, revoke.c, util.c: Fix gcc -Wall nits.
321
Theodore Ts'o64aecc42002-10-11 17:44:12 -04003222002-10-08 Theodore Ts'o <tytso@mit.edu>
323
324 * pass3.c (e2fsck_get_lost_and_found): Create the lost+found
325 directory with mode 0700.
326
Theodore Ts'o8132d842002-10-02 22:07:17 -04003272002-10-02 Theodore Y. Ts'o <tytso@mit.edu>
328
329 * pass2.c (parse_int_node, check_dir_block): Add byte-swap
330 functions around the htree code, so that it works on
331 big-endian machines.
332
333 * swapfs.c (swap_filesys): For PPC machines, byte-swap the bitmap,
334 since PPC big-endian filesystems were historically wierd.
335 This is just for the regression test, since no one
336 actually uses them anymore...
337
Theodore Ts'oad4fa462002-09-30 11:19:19 -04003382002-09-30 Theodore Ts'o <tytso@mit.edu>
339
340 * problem.c, problem.h (PR_2_HTREE_BAD_LIMIT,
341 PR_2_HTREE_BAD_COUNT, PR_2_HTREE_HASH_ORDER,
342 PR_2_HTREE_BAD_DEPTH): Add new problem codes.
343
344 * pass2.c (salvage_directory, check_dir_block): Avoid counting
345 directory entries twice during a directory salvage. Make
346 the salvaging algorithm smarter about directory entry size
347 overruns.
348 (parse_int_node): Add check to make sure the limit and
349 count fields in the node headers are sane. Also check
350 to make sure the hash table in ascending order.
351 (pass2, htree_depth): For all leaf nodes, determine their
352 depth in the tree, and make sure it matches with the depth
353 in the htree root information.
354
Theodore Ts'ofe5b72d2002-09-29 19:05:26 -04003552002-09-29 Theodore Ts'o <tytso@mit.edu>
356
Theodore Ts'oe8254bf2002-09-29 19:30:28 -0400357 * pass2.c (check_dir_block): Do a more paranoid check when trying
358 to determine whether or not a directory entry is a
359 completely empty leaf block or leaf node. Otherwise
360 e2fsck might get confused into thinking that a valid dxdir
361 was corrupted.
362
Theodore Ts'ofe5b72d2002-09-29 19:05:26 -0400363 * rehash.c (e2fsck_rehash_dir): Apply patch from Christopher Li
364 which avoids creating an empty directory entry at the end
365 of the directory block. This screws up earlier versions
366 of the indexed directory patch.
367
Theodore Ts'oe70ae992002-09-28 09:16:28 -04003682002-09-28 Theodore Ts'o <tytso@mit.edu>
369
370 * rehash.c (write_directory): Clear the index flag if by
371 reoptimizing the directory, we bring it back into a
372 non-indexed state.
373 (e2fsck_rehash_dir): Allow directories that contain two
374 blocks to be indexed. Otherwise when they grow, they
375 never will be indexed by the kernel.
376
377 * unix.c (main): Only update the master superblock; there's no
378 point updating the backup superblocks, and it speeds up
379 fsck slightly.
380
381 * pass2.c (salvage_directory): New function called by
382 check_dir_block() which is much more sophisticated about
383 how it salvages corrupted filesystems.
384
Theodore Ts'oc6633052002-09-24 01:26:50 -04003852001-09-24 Theodore Tso <tytso@mit.edu>
386
387 * Release of E2fsprogs 1.29
388
Theodore Ts'ocf3909e2002-09-06 10:14:12 -04003892002-09-06 Theodore Ts'o <tytso@mit.edu>
390
391 * rehash.c (copy_dir_entries): Fix bug which caused corrupted
392 directories if there are 4 or 8 bytes left over in a
393 directory page when optimizing/reindexing a directory.
394
Theodore Ts'o87ee8dc2002-08-31 03:02:57 -04003952001-08-31 Theodore Tso <tytso@thunk.org>
396
397 * Release of E2fsprogs 1.28
398
Theodore Ts'oceecbc72002-08-31 02:35:35 -04003992002-08-31 Theodore Ts'o <tytso@mit.edu>
400
401 * ehandler.c (e2fsck_handle_read_error): If the user asks to
402 ignore the error, offer to try forcing a write of the
403 block to the disk; sometimes this will cause the drive to
404 remap the bad block.
405
Theodore Ts'oea1959f2002-08-31 02:32:41 -04004062002-08-31 Theodore Ts'o <tytso@valinux.com>
407
408 * pass2.c (e2fsck_pass2): If this is a HTREE directory, sort the
409 dblist so that the first block of all of the directories
410 is handled first so we can read the hash version
411 information.
412 (check_dir_block): Examine the root node for correctness,
413 and offer to clear it if it is not correct. Also copy the
414 hash version to the dx_dir structure, so that the proper
415 hash function can be used for other blocks in the
416 directory.
417
418 * problem.c, problem.h (PR_2_HTREE_BAD_ROOT): Add new problem code.
419
Theodore Ts'oa3da9d12002-08-21 12:52:03 -04004202002-08-21 Theodore Ts'o <tytso@mit.edu>
421
422 * problem.c: Fix PR_1_RELOC_BLOCK_ALLOCATE message to explain that
423 it is necessary to find contiguous blocks in a particular
424 block group.
425
Theodore Ts'o0684a4f2002-08-17 10:19:44 -04004262002-08-17 Theodore Ts'o <tytso@mit.edu>
427
Theodore Ts'of044b4d2002-08-17 13:32:21 -0400428 * e2fsck.8.in: Add clarifying text describing how e2fsck works
429 with ext3 filesytems. (Addresses Debian bug #145044).
430
431 * pass1.c (handle_htree): Add support for EXT2_HASH_TEA
432
Theodore Ts'o0684a4f2002-08-17 10:19:44 -0400433 * e2fsck.h, e2fsck.c (e2fsck_allocate_context): Add new field to
434 the e2fsck context, ext_attr_ver, which specifies the EA
435 format version.
436
437 * unix.c (usage, parse_extended_opts, PRS), e2fsck.8.in: Add new
438 option -E, which allows the users to specify extended
439 options. Added ea_ver extended option.
440
441 * pass1.c (e2fsck_pass1_check_device_inode): Add ext2_filsys
442 argument to this function, so we can account for the
443 presence of extended attribute blocks attached to device
444 inodes.
445 (e2fsck_pass1_check_symlink, e2fsck_pass1): Take into
446 account the fact that symlinks can also have extended
447 attribute blocks.
448 (check_ext_attr): Don't be flexible about the EA format
449 version. Check against the version number in
450 ctx->ext_attr_ver.
451 (check_blocks): Check all inodes, so that we account for
452 extended attribute blocks belonging to special files.
453 Clean up i_size checks.
454
455 * pass1b.c (pass1b): Check all inodes, so that we account for
456 extended attribute blocks belonging to special files.
457 (delete_file_block): Use ext2fs_alloc_block_stats() to
458 update the filesystem statistics.
459 (delete_file): Attempt to decrement the extended
460 attribute refcount, and free the EA block if the count
461 hits zero.
462 (clone_file): Fixed bugs in EA handling. Don't call
463 block_iterate on inodes that don't have a valid i_block[]
464 array. Reread the base inode since it may have been
465 changed by ext2fs_block_iterate. When updating inodes as
466 part of cloning an EA block, write out the correct inode
467 structure.
468
469 * pass2.c (deallocate_inode_block, deallocate_inode): Use standard
470 ext2fs_alloc_*_stats functions to update the filesystem
471 statistics.
472 (deallocate_inode): Attempt to decrement the extended
473 attribute refcount, and free the EA block if the count
474 hits zero.
475 (e2fsck_process_bad_inode): Add extra argument to calls
476 to e2fsck_pass1_check_device_inode ().
477
478 * pass3.c (e2fsck_get_lost_and_found): Use standard
479 ext2fs_alloc_*_stats functions to update the filesystem.
480 statistics when creating /lost+found.
481 (adjust_inode_count): Remove debugging code that can never
482 be triggered.
483
484 * pass4.c (disconnect_inode): Add explanation about why we only
485 clear inodes that have no data blocks and no EA blocks.
486 Use ext2fs_inode_alloc_stats2 function to update the
487 filesystem statistics when clearing a zero-length inode.
488
489 * problem.c, problem.h (PR_1B_ADJ_EA_REFCOUNT,
490 PR_2_ADJ_EA_REFCOUNT): Add new problem codes.
491
492 * super.c (release_inode_block), (release_orphan_inodes): Use the
493 standard ext2fs_alloc_*_stats functions to update the
494 filesystem statistics.
495 (release_inode_blocks): Attempt to decrement the extended
496 attribute refcount, and free the EA block if the count
497 hits zero.
498
Theodore Ts'o838e7732002-08-01 12:37:00 -04004992002-08-01 Theodore Ts'o <tytso@mit.edu>
500
501 * dict.c, dict.h: New file from kazlib 1.20 which implements a
502 red-black tree
503
504 * pass1b.c: Massive changes to take advantage of dict.c. This
505 removes several O(n**2) algorithms from the rare case
506 where there are a large number of blocks claimed by
507 multiple inodes.
508
Theodore Ts'o542867f2002-07-24 07:42:02 -04005092002-07-24 Theodore Ts'o <tytso@mit.edu>
510
Theodore Ts'o850d05e2002-07-25 00:00:08 -0400511 * e2fsck.8.in, e2fsck.h, pass3.c (e2fsck_pass3), unix.c, rehash.c:
512 Add new option -D, which requests e2fsck to optimize all
513 directories. Rehash.c will also compress and sort
514 non-indexed directories.
515
516 * problem.c, problem.h: Rename PR_3A_REHASH_* to PR_3A_OPTIMIZE_*
517
518 * unix.c (PRS): Make sure the signal_cancel is registered without
519 SA_RESTART.
520
521 * rehash.c (e2fsck_rehash_dir, copy_dir_entries, calculate_tree):
522 Restructured code in e2fsck_rehash_dir into two new
523 subroutines to make the code more understandable/maintainable.
524 (set_root_node): Fixed bug which caused the root node to
525 be invalid on non-FILETYPE filesystems due to an
526 unitialized variable.
527 (calculate_tree): Fix bug where pointers which might get
528 invalidated if realloc() moves outdir->buf around.
529 (e2fsck_rehash_dir): Fix memory leak bug.
530
531 * pass3.c (e2fsck_get_lost_and_found), e2fsck.h, e2fsck.c:
532 Exported as a public interface a function for finding the
533 lost and found directory. Cache the location of the lost
534 and found directory in the e2fsck context structure.
535
Theodore Ts'o542867f2002-07-24 07:42:02 -0400536 * util.c (ask_yn, read_a_char): Note when the user has typed ^C,
537 and abort processing by longjmp'ing to ctx->abort_loc.
538
Theodore Ts'o3214a452002-07-23 12:00:00 -04005392002-07-23 Theodore Ts'o <tytso@mit.edu>
540
541 * pass1.c (e2fsck_pass1): If e2fsck is run with -n, don't create
542 the dirs_to_hash list, since we don't want to reindex
543 directories if the filesystem is opened read-only.
544
Theodore Ts'o4cae0452002-07-21 14:14:03 -04005452002-07-21 Theodore Ts'o <tytso@mit.edu>
546
547 * e2fsck.8.in: Document new exit code FSCK_CANCELED
548
549 * unix.c (PRS, signal_cancel): Capture SIGINT and SIGTERM signals
550 and set a flag in the e2fsck context indicating that
551 cancellation has been requested, so that e2fsck will exit
552 only at safe points.
553 (main): Change the exit handling so that if a cancellation
554 is requested, return FSCK_CANCELED (a new exit code 32).
555 e2fsck can now return more than one exit code as part of a
556 bitmask (as had been documented in the man page).
557
558 * pass2.c (e2fsck_pass2, check_dir_block), pass3.c (e2fsck_pass3),
559 pass4.c (e2fsck_pass4): Check to see if a cancellation was
560 requested, and abort processing if necessary.
561
Theodore Ts'ob7a00562002-07-20 00:28:07 -04005622002-07-19 Theodore Ts'o <tytso@mit.edu>
563
564 * rehash.c, Makefile.in: New file which rewrites directories using
565 the htree format.
566
567 * problem.c (fix_problem), problemP.h (PR_PREEN_NOHDR): Add option
568 which suppresses the header printed when in preen mode.
569
570 * pass3.c (e2fsck_pass3): If there are entries on the dirs_to_hash
571 list, call e2fsck_rehash_directories to reindex those
572 directories.
573 (e2fsck_expand_directory): Generalize the old
574 expand_dirctory() function so it can expand a directory to
575 a guaranteed minimum size.
576
577 * e2fsck.h (struct e2fsck_struct): Add the dirs_to_hash list. Add
578 new function prototypes for rehash.c and for
579 e2fsck_expand_directory().
580
581 * e2fsck.c (e2fsck_reset_context): Free the dirs_to_hash list.
582
583 * pass1.c (e2fsck_pass1): Initialize the dirs_to_hash list if the
584 htree feature is present in the filesystem.
585 (check_blocks): If a non-htree directory has more than 2
586 blocks, put it on the dirs_to_hash list.
587
588 * pass2.c (clear_htree): Add corrupt htree directories to the
589 dirs_to_hash list.
590
591 * problem.h, problem.c (PR_3A_PASS_HEADER, PR_3A_REHASH_ITER,
592 PR_3A_REHASH_DIR_ERR, PR_3A_REHASH_DIR_HEADER,
593 PR_3A_REHASH_DIR, PR_3A_REHASH_DIR_END): Add new problem codes
594
595 * pass2.c (parse_int_node), problem.c (PR_2_HTREE_BADBLK): Fix
596 problem display.
597
Theodore Ts'o62acaa12002-07-15 16:54:42 -04005982002-07-15 Theodore Ts'o <tytso@mit.edu>
599
600 * pass2.c (e2fsck_pass2): Use dx_dir->numblocks instead of
601 dx_dir->ino to indicate that a bad inode was cleared.
602
Theodore Ts'o503f9e72002-06-26 16:52:10 -04006032002-06-26 Theodore Ts'o <tytso@mit.edu>
604
605 * pass1.c (check_blocks): Move htree handling to handle_htree().
606 Factor out calls to ext2fs_write_inode so that it happens
607 if dirty_inode is non-zero.
608 (handle_htree): Add checks for invalid htree root, invalid
609 hash version, invalid hash version, and htree depth too deep.
610
611 * problem.h, problem.c (PR_1_HTREE_NODIR, PR_1_HTREE_BADROOT,
612 PR_1_HTREE_HASHV, PR_1_HTREE_INCOMPAT, PR_1_HTREE_DEPTH):
613 Add new problem codes.
614
615 * pass2.c (parse_int_node): Fix silly typo.
616 (check_dir_block): Change to use new ext2fs_dirhash()
617 function prototype.
618 (pass2): Fixed two minor bugs discovered by the test case:
619 Don't stop checking dxdir's after clearing a bad inode.
620 If there is a bad max hash, make sure the bad_dir flag
621 is set to make sure we try to clear inode.
622
Theodore Ts'o8fdc9982002-06-25 23:26:34 -04006232002-06-25 Theodore Ts'o <tytso@mit.edu>
624
625 * e2fsck.c (e2fsck_reset_context): Free the dx_dirinfo structure.
626
627 * message.c: Add new abbrevations @h and @p, "HTREE directory
628 inode" and "problem in".
629
630 * pass1.c (check_blocks): If the inode has the INDEX_FL flag,
631 register the block into the indexed directory data
632 structures. Or if the filesystem doesn't have the
633 DIR_INDEX flag, offer to clear the INDEX_FL.
634
635 * pass2.c (e2fsck_pass2, parse_int_node): Add support check htree
636 directories (we don't check all possible corruptions yet).
637
638 * problem.h, problem.h (PR_1_HTREE_SET, PR_2_HTREE_NOTREF,
639 PR_2_HTREE_DUPREF, PR_2_HTREE_MIN_HASH, PR_2_HTREE_MAX_HASH,
640 PR_2_HTREE_CLEAR, PR_2_HTREE_FCLR, PR_2_HTREE_BADBLK): Add
641 new problem codes.
642
643 * unix.c (main): If ENABLE_HTREE is not defined, complain if the
644 filesystem has the dir_index feature.
645
646 * Makefile.in, e2fsck.h, dx_dirinfo.c: New file (and group of
647 functions) which keeps track of blocks in HTREE directory
648 blocks.
649
Andreas Dilgerb21bf262002-06-10 11:05:56 -06006502002-05-22 Andreas Dilger <adilger@clusterfs.com>
651
652 * super.c (check_superblock): Check that the number of inodes and
653 blocks in a group is less than 2^16, so that the free inode
654 and block counts for a group fit into the group descriptor
655 table fields. Any more than that would need a COMPAT flag.
656
Theodore Ts'o0d634672002-05-22 00:22:38 -04006572002-05-22 Theodore Ts'o <tytso@mit.edu>
658
659 * pass1.c (check_ext_attr): Update to support the V2 Bestbits EA
660 format. We automatically determine from the first EA
661 block we visit whether we are using the V1 or V2 format.
662
Theodore Ts'oda307042002-05-21 21:19:14 -04006632002-05-21 Theodore Ts'o <tytso@mit.edu>
664
665 * pass1.c (process_block): If an inode has too many blocks or
666 is too big, then offer to truncate the inode.
667 (check_blocks): Don't bother checking the size to see if
668 it's too big, since that's just a symptom, not the disease
669 (which we're now appropriately checking in process_block).
670
671 * problem.c, problem.h: Add new problem codes PR_1_INODE_TOOBIG,
672 PR_1_TOOBIG_DIR, PR_1_TOOBIG_REG, PR_1_TOOBIG_SYMLINK, and
673 add the latch code PR_LATCH_TOOBIG.
674
Theodore Ts'obcf9c5d2002-05-21 09:14:17 -04006752002-05-20 Theodore Ts'o <tytso@mit.edu>
676
677 * e2fsck.h, pass1.c (e2fsck_pass1_check_symlink), pass2.c
678 (e2fsck_process_bad_inode): Add an extra
679 argument so a scratch buffer can be passed into the
680 function.
681
682 * pass1.c (e2fsck_pass1_check_device_inode,
683 e2fsck_pass1_check_symlink): If the EXT2_INDEX_FL flag is
684 set, then the device/FIFO is invalid.
685 (check_immutable): Don't check for EXT2_INDEX_FL; we take
686 care of that elsewhere now.
687 (e2fsck_pass1): Check to see if the symlink is valid
688 before we offer to clear any immutable bits. This matches
689 the order in which we check other special files.
690
691 * pass2.c (e2fsck_pass2): Allocate a bigger scratch buffer so we
692 can pass part of it to e2fsck_process_bad_inode.
693
694 * pass4.c (e2fsck_pass4): If we need to call
695 e2fsck_process_bad_inode(), allocate the necessary scratch
696 buffer.
697
698 * problem.h, problem.c: Change PR_2_SYMLINK_SIZE to be
699 PR_2_INVALID_SYMLINK, and change the text
700 accordingly. Revert the text change for PR_1_SET_IMMUTABLE
701 since we no longer check for EXT2_INDEX_FL in
702 check_immutable().
703
7042002-05-18 Andreas Dilger <adilger@clusterfs.com>
705
706 * pass1.c (e2fsck_pass1_check_symlink): Remove checks of
707 immutable/append-only checks, since this is handled by
708 check_immutable. For non-fast symlinks, read in the
709 data block and check the length to make sure it
710 matches with the inode size.
711 (check_immutable): Generalize to also check for the
712 EXT2_INDEX_FL flag.
713 (check_blocks): For non-regular files, signal a bad inode
714 size if i_size_high is non-zero.
715
716 * pass2.c: Only count large files if they are regular files
717 (not just if they aren't directories).
718
719 * problem.c, problem.h: Change comment for PR_2_SYMLINK_SIZE
720 to indicate that it can be triggered by any symlink,
721 not fast symlink. Change text for PR_1_SET_IMMUTABLE
722 to indicate that it the EXT2_INDEX_FL was set.
723
Theodore Ts'o31e29a12002-05-17 10:53:07 -04007242002-05-17 Theodore Ts'o <tytso@mit.edu>
725
726 * pass1.c (e2fsck_pass1): When calculating max_sizes, omit capping
727 this value by the calculated value of max_sect_sizes.
728 The inode may be a sparse inode, and the limit of
729 max_sect_sizes assumed a non-sparse inode and a limit
730 based on a 32-bit i_blocks field measured in 512 sectors.
731
732 * super.c (check_super_block): Fix check for s_log_block_size so
733 that takes into account fact that there is an offset of
734 EXT2_MIN_BLOCK_LOG_SIZE.
735
736 * pass1.c: Allocate max_sizes array to be big enough to support
737 the larger block sizes.
738
7392002-05-16 Andreas Dilger <adilger@clusterfs.com>
740
741 * unix.c (main), util.c (get_backup_sb): Use EXT2_MAX_BLOCK_SIZE
742 instead of using a hardcoded value of 4096.
743
744 * super.c (check_super_block): Change checks for s_log_block_size
745 s_log_frag_size so they support the larger block sizes.
746
747 * pass1.c (e2fsck_pass1): Calculate max_sizes array for block
748 sizes up to EXT2_MAX_BLOCK_SIZE (to support block sizes
749 greater than 4k).
750
Theodore Ts'oa8e77242002-03-08 03:12:14 -05007512002-03-08 Theodore Tso <tytso@mit.edu>
752
753 * Release of E2fsprogs 1.27
754
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05007552002-03-07 Theodore Tso <tytso@mit.edu>
756
757 * journal.c, pass5.c, revoke.c: Fix gcc -Wall complaints
758
7592002-03-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'of2d5c932002-03-07 03:13:07 -0500760
761 * unix.c (main): Don't close the filesystem before calling
762 fatal_error(); this just causes a needless warning about a
763 bad I/O manager magic number.
764
765 * journal.c (e2fsck_check_ext3_journal): Offer to clear the inode
766 in case the journal is too small, or the inode number in
767 the superblock doesn't appear to be random.
768
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05007692002-03-06 Theodore Tso <tytso@mit.edu>
Theodore Ts'of1226322002-03-07 02:47:07 -0500770
771 * problem.h, problem.c: PR_5_BLOCK_RANGE_UNUSED,
772 PR_5_BLOCK_RANGE_USED, PR_5_INODE_RANGE_UNUSED,
773 PR_5_INODE_RANGE_USED: Add new problem codes.
774
775 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Collapse
776 reporting of adjacent blocks and inodes into a range.
777
Theodore Ts'o14308a52002-03-05 03:26:52 -05007782002-03-04 Philipp Thomas <pthomas@suse.de>
779
780 * unix.c (main): Newer libintl needs LC_CTYPE to be set in
781 addition to LC_MESSAGES.
782
Theodore Ts'o57173d02002-02-26 14:59:39 -05007832002-02-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'ob9f40922002-02-24 03:08:57 -0500784
785 * Makefile.in (install): Install hard links for man pages for
786 fsck.ext2 and fsck.ext3. Remove any compressed man
787 pages before installing the man pages.
788
Theodore Ts'o57173d02002-02-26 14:59:39 -05007892002-02-22 Theodore Tso <tytso@mit.edu>
Theodore Ts'od1a21822002-02-22 00:17:59 -0500790
791 * journal.c: Improve code maintainability and reduce code size by
792 moving common code paths in e2fsck_journal_init_dev() and
793 e2fsck_journal_init_inode() into e2fsck_get_journal().
794 Also fixed a memory leak in recover_ext3_journal().
795
796 * super.c (release_orphan_inodes): Fix memory leak.
797
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05007982002-02-03 Theodore Tso <tytso@thunk.org>
799
800 * Release of E2fsprogs 1.26
801
8022001-12-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o3ed57c22001-12-24 15:01:59 -0500803
804 * unix.c (PRS): Don't allow the -c and -l/-L options to be
805 specified at the same time.
806
807 * e2fsck.h (E2F_OPT_WRITECHECK), unix.c (PRS),
808 badblocks.c (read_bad_blocks_file): If two -c options are
809 specified, then perform a non-destructive read/write scan
810 of the disk.
811
812 * e2fsck.8.in: Document the double -c option; also encourage users
813 to use -c instead of the -l/-L options since it's too hard
814 for users to get things like the blocksize parameter correct.
815
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008162001-12-23 Theodore Tso <tytso@mit.edu>
Theodore Ts'o19007e52001-12-23 19:33:51 -0500817
Theodore Ts'of1a17612001-12-23 22:27:52 -0500818 * util.c (get_backup_sb): This function now searches for the
819 backup superblock by iterating over possible blocksizes
820 instead of defaulting a guess of 8193 if the superblock
821 isn't available.
822
823 * message.c (expand_percent_expression), unix.c (main): Pass in
824 new parameters to get_backup_sb. Also, in unix.c, use the
825 blocksize paramter in the e2fsck context structure instead
826 of using a static variable, since get_backup_sb wants to
827 be able to set the blocksize paramter.
828
829 * e2fsck.h: Update function prototype for get_backup_sb; also add
830 the blocksize parameter to the e2fsck context structure.
831
Theodore Ts'o19007e52001-12-23 19:33:51 -0500832 * Makefile.in, jfs_user.h: Move linux/jbd.h to
833 ext2fs/kernel-jbd.h, to avoid using the system header
834 file version of hbd.h when using diet glibc (since it
835 forcibly adds /usr/include to the beginning of the
836 include search path.)
837
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008382001-12-21 Theodore Tso <tytso@mit.edu>
Theodore Ts'od37066a2001-12-21 23:28:54 -0500839
Theodore Ts'o6a50c5e2001-12-21 23:29:35 -0500840 * problem.c (fix_problem): Use ctx->filesystem_name if the
841 ctx->device_name is NULL.
842
Theodore Ts'od37066a2001-12-21 23:28:54 -0500843 * journal.c (e2fsck_check_ext3_journal): Give the opportunity to
844 run the journal even if recovery flag is cleared. If
845 we're using a backup superblock, run the journal by
846 default.
847
848 * e2fsck.h (E2F_OPT_FORCE), unix.c (PRS, check_if_skip): Use a
849 bitfield in the e2fsck context flags word to indicate
850 whether or not a check should be forced. This allows the
851 journal code to set the option if necessary to force a
852 filesystem check.
853
854 * problem.h, problem.c: Remove PR_0_JOURNAL_RESET_JOURNAL, and add
855 PR_0_JOURNAL_RUN and PR_0_JOURNAL_RUN_DEFAULT. Update
856 problem decription texts.
857
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008582001-12-16 Theodore Tso <tytso@mit.edu>
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500859
Theodore Ts'o4ea7bd02001-12-16 23:23:37 -0500860 * e2fsck.h (ext2fs_get_refcount_size), unix.c (check_mount, PRS),
861 pass1.c (adjust_extattr_refcount),
862 ea_refcount.c (ea_refcount_create): Fix gcc -Wall nits.
863
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500864 * recovery.c, revoke.c: Update to versions from 2.4.17-pre8.
865
866 * journal.c, jfs_user.h: Update support code for new version of
867 recover.c and revoke.c. Fix support for filesystems with
868 external journals.
869
Gabriel Paubertb3b3d462001-11-30 13:45:28 +01008702001-11-30 Gabriel Paubert <paubert@iram.es>
871
872 * journal.c (e2fsck_journal_load): Fix an endianness bug.
873
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008742001-11-26 Theodore Tso <tytso@mit.edu>
Theodore Ts'o24bfb442001-11-26 15:51:14 -0500875
876 * super.c (check_super_block): Make sure that if the inode table
877 or allocation bitmap is zero, that it is marked as
878 invalid, so that in pass #1, a new bitmap/inode table gets
879 properly allocated. (Addresses Debian Bug #116975)
880
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008812001-11-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o1e9a7e02001-11-24 16:40:57 -0500882
883 * e2fsck.8.in: Fix minor typo in man page and clarify device
884 specification.
885
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008862001-10-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'o62e3e7f2001-10-07 02:13:30 -0400887
888 * journal.c (clear_v2_journal_fields, e2fsck_journal_load): If the
889 V2 fields are set on a V1 journal superblock, or an
890 internal V2 journal has s_nr_users is non-zero, clear the
891 entire journal superblock beyond the V1 superblock. This
892 fixes botched V1->V2 updates.
893
894 * problem.c, problem.h (PR_0_CLEAR_V2_JOURNAL): Add new problem code.
895
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008962001-09-20 Theodore Tso <tytso@mit.edu>
Theodore Ts'o773fd8a2001-10-06 21:26:27 -0400897
898 * e2fsck.h, journal.c (e2fsck_move_ext3_journal): Add new function
899 which will automatically relocate the ext3 journal from a
900 visible file to an invisible journal file if the
901 filesystem has been opened read/write.
902
903 * super.c (check_super_block): Add call to e2fsck_move_ext3_journal
904
905 * problem.c, problem.h (PR_0_MOVE_JOURNAL, PR_0_ERR_MOVE_JOURNAL):
906 Add new problem codes.
907
Theodore Ts'ofbf91112001-09-20 10:47:47 -04009082001-09-20 Theodore Tso <tytso@thunk.org>
909
910 * Release of E2fsprogs 1.25
911
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05009122001-09-19 Theodore Tso <tytso@mit.edu>
Theodore Ts'oae6cdcf2001-09-19 15:17:25 -0400913
914 * unix.c (main): If a superblock is specified explicitly by the
915 user, don't try to automatically fall back to an
916 alternate superblock.
917
Theodore Ts'ofb707752001-09-04 15:00:37 -04009182001-09-02 Theodore Tso <tytso@thunk.org>
919
920 * Release of E2fsprogs 1.24a
921
Theodore Ts'o109624a2001-08-31 00:59:55 -04009222001-08-30 Theodore Tso <tytso@thunk.org>
923
924 * Release of E2fsprogs 1.24
925
Theodore Ts'ob1f204f2001-08-30 16:42:09 -04009262001-08-30 Theodore Tso <tytso@valinux.com>
927
928 * pass1.c (e2fsck_pass1): For EXT2_RESIZE_INO, allow its i_mode to
929 either be zero or a regular file (for compatibility with
930 Andreas's on-line resizing programs).
931
Theodore Ts'o53abed02001-08-27 12:18:16 -04009322001-08-27 Theodore Tso <tytso@valinux.com>
933
Theodore Ts'o0f8973f2001-08-27 12:44:23 -0400934 * unix.c (main): Remove EXT2FS_VERSION from the version display,
935 since it only confuses people.
936
Theodore Ts'o53abed02001-08-27 12:18:16 -0400937 * pass1.c (strnlen): Provide strnlen if libc doesn't.
938
Theodore Ts'o943ed872001-08-27 12:29:22 -04009392001-08-15 Theodore Tso <tytso@valinux.com>
940
941 * Release of E2fsprogs 1.23
942
Theodore Ts'o85645a6f2001-08-13 06:11:39 -04009432001-08-13 Theodore Tso <tytso@valinux.com>
944
Theodore Ts'oeb4ab512001-08-13 10:58:41 -0400945 * super.c (release_orphan_inodes): If the filesystem contains
946 errors, don't run the orphan * list, since the orphan list
947 can't be trusted.
948
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400949 * pass1.c (check_size): Fix logic in check_size; the previous code
950 only offered to clear the inode size fields if both size
951 and i_size_high were zero.
Theodore Ts'oa40ecbb2001-08-13 06:15:36 -0400952 (e2fsck_pass1_check_device_inode): If i_blocks is
953 non-zero, then assume that the device/socket/fifo inode
954 is bogus.
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400955
Theodore Ts'o2b94c652001-08-09 04:08:52 -04009562001-08-09 Theodore Tso <tytso@valinux.com>
957
Theodore Ts'oa4742692001-08-09 04:14:04 -0400958 * pass1.c, pass2.c, problem.c, problem.h: Fix bug introduced by
959 Andreas's symlink code; check_blocks() was unconditionally
960 testing inode_bad_map without checking to see if it
961 existed first. Fixed problem a different way; we now no
962 longer check inode_bad_map at all, since the file might
963 not get deleted in pass 2 anyway. We move the large file
964 feature reconciliation code to to e2fsck_pass2(), and in
965 deallocate_inode() in pass2.c, we decrement the large
966 files counter if we're about to delete a large file.
967
Theodore Ts'o2b94c652001-08-09 04:08:52 -0400968 * unix.c (show_stats): Print the number of large files in verbose
969 mode.
970
Theodore Ts'oc0a083f2001-08-07 10:17:41 -04009712001-08-07 Theodore Tso <tytso@valinux.com>
972
973 * journal.c (recover_ext3_journal): If s_errno is set in the
974 journal superblock, set the EXT2_ERROR_FS flag in the
975 filesystem superblock after the journal is run.
976
Theodore Ts'obd512b62001-08-04 21:33:03 -04009772001-08-04 Andreas Dilger <root@lynx.adilger.int>
978
979 * message.c: Change comments for %D and %d expansion in e2fsck
980 problem codes. It was not consistent which was for dirent
981 expansion, and which was for directory number expansion.
982
983 * problem.c (PR_2_FINAL_RECLEN, PR_2_BAD_FILETYPE): Fix problem
984 codes which got caught by the confusion between %D and %d.
985
Theodore Ts'od007cb42001-08-04 20:39:39 -04009862001-08-04 Theodore Tso <tytso@valinux.com>
987
988 * problem.c (PR_2_SYMLINK_SIZE): Change description to make it
989 more clear (and remove %s expansion). Also add missing
990 periods to the end of a number of problem descriptions.
991
992 * pass2.c (e2fsck_process_bad_inode): Remove unneeded problem
993 context string set now that the problem description for
994 PR_2_SYMLINK_SIZE has been changed.
995
996 * pass1.c (e2fsck_pass1_check_symlink): Consolidate some checks,
997 and check the validity of the symlink block here (so that
998 we detect this case here instead of later). Also use
999 sizeof(inode->i_block) instead EXT2_LINK_DIR.
1000
Theodore Ts'o83e6ac82001-07-30 16:29:52 -040010012001-07-30 Theodore Tso <tytso@valinux.com>
1002
1003 * unix.c (check_mount): Remove the code which tested for the root
1004 filesystem being mounted read-only, and depend on the
1005 results flags from ext2fs_check_if_mounted.
1006
Theodore Ts'o1e165262001-07-29 11:48:10 -040010072001-07-29 Theodore Tso <tytso@valinux.com>
1008
Theodore Ts'o6d222f32001-07-29 12:06:58 -04001009 * unix.c (check_if_skip): Free the e2fsck context structure on a
1010 normal clean filesystem exit, to make it easier to find
1011 real memory leaks.
1012 (PRS): Only update the path to include /sbin at the
1013 beginning if the -c option is given, again to make it
1014 easier to find memory leaks.
Theodore Ts'o0628ae32001-07-29 12:26:46 -04001015 (main): Move the final print_resource_track call after the
1016 filesystem and the context are freed.
Theodore Ts'o6d222f32001-07-29 12:06:58 -04001017
1018 * journal.c (e2fsck_journal_init_dev): Avoid memory leak if we
1019 need to search for the journal device.
1020 (e2fsck_journal_release): Free the journal IO channel when
1021 we release the journal handle, to avoid a memory leak.
1022
Theodore Ts'o1e165262001-07-29 11:48:10 -04001023 * e2fsck.c (e2fsck_reset_context): Fix bug; only close the io
1024 channel if it is *different* from the filesystem io
1025 channel.
1026
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -040010272001-07-27 Theodore Tso <tytso@valinux.com>
1028
Theodore Ts'oa092c562001-07-27 22:40:09 -04001029 * problem.c (PR_1_SET_IMMUTABLE): Clarify problem message.
1030
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -04001031 * pass1.c (e2fsck_pass1): Check for symlinks that have the
1032 immutable flag set (and offer to clear them).
1033
Theodore Ts'o24ceb242001-07-26 09:02:56 -040010342001-07-26 Theodore Tso <tytso@valinux.com>
1035
1036 * pass1.c (e2fsck_pass1): Free ctx->block_ea_map at the end of
1037 pass 1.
1038
Theodore Ts'o14fe1c32001-07-25 19:48:24 -040010392001-07-25 Theodore Tso <tytso@valinux.com>
1040
1041 * pass1.c (check_ext_attr): Skip zero-length EA entries.
1042
1043 * problem.c: PR_1_EA_ALLOC_COLLISION shouldn't abort, but should
1044 prompt to clear the EA block.
1045
Theodore Ts'oadee8d72001-07-23 00:17:49 -040010462001-07-22 Theodore Tso <tytso@valinux.com>
1047
1048 * journal.c (ll_rw_block): Use ctx->journal_io instead of the
1049 filesystem's io_channel.
1050 (e2fsck_journal_init_dev): New function which supports
1051 initialization of the external journal.
1052 (e2fsck_get_journal): Remove code which flagged an error
1053 if the superblock reported the use of an external journal.
1054 (ext3_journal_via_mount): Remove unsued, #ifdefed out function.
1055
1056 * problem.c, problem.h: Removed error codes no longer used
1057 (PR_0_JOURNAL_UNSUPP_DEV, PR_0_JOURNAL_BAD_DEV,
1058 PR_0_JOURNAL_UNSUPP_UUID) and replace them with new error
1059 codes related with failures in loading the external
1060 journal (PR_0_JOURNAL_UNSUPP_MULTIFS,
1061 PR_0_CANT_FIND_JOURNAL, PR_0_EXT_JOURNAL_BAD_SUPER).
1062 Also changed the text assocated with PR_0_JOURNAL_BAD_UUID
1063 to reflect the case where the external journal isn't
1064 correct for this filesystem.
1065
1066 * unix.c (PRS), e2fsck.8.in: Add new option -j which allows
1067 the user to specify the pathname to find the external journal.
1068
1069 * e2fsck.c (e2fsck_reset_context): Close journal_io if it isn't
1070 the same as the filesystem io_channel.
1071
1072 * e2fsck.h: Add new fields (journal_io and journal_name) in the
1073 context structure to support external journals.
1074
Theodore Ts'od3124012001-07-20 14:13:49 -040010752001-07-20 Theodore Tso <tytso@valinux.com>
1076
1077 * unix.c (main): Add an explicit warning when the filesystem is
1078 left not completely fixed when e2fsck exits. (Addresses
1079 Debian bug #104502.)
1080
Theodore Ts'o55fd07e2001-07-19 16:31:25 -040010812001-07-19 Theodore Tso <tytso@valinux.com>
1082
1083 * pass1.c (check_ext_attr): The entire EA block is now checked to
1084 make sure that parts of the EA block aren't being used for
1085 multiple purposes.
1086
1087 * Makefile.in e2fsck.h, region.c: New file which is used to detect
1088 collisions in extended attribute block.
1089
1090 * problem.h, problem.c (PR_1_EA_MULTI_BLOCK, PR_1_EA_ALLOC_REGION,
1091 PR_1_EA_ALLOC_COLLISION, PR_1_EA_BAD_NAME,
1092 PR_1_EA_BAD_VALUE): Add new problem codes.
1093
Theodore Ts'o3c6b8972001-07-10 14:27:58 -040010942001-07-10 Theodore Tso <tytso@valinux.com>
1095
1096 * journal.c (e2fsck_run_ext3_journal): Only call ext3_flush() if
1097 the superblock is dirty.
1098
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -040010992001-07-07 Theodore Tso <tytso@valinux.com>
1100
Theodore Ts'o7b63fff2001-07-07 23:01:31 -04001101 * pass1b.c (pass1b, process_pass1b_block): Change the num_bad
1102 field calculation so that it only counts EA block entries
1103 as a single multiply claimed block (since once we clone
1104 the EA blocks for one inode, we fix the problem for all of
1105 the other inodes). Also, I moved the num_bad calculation
1106 from process_pass1b_block to the end of pass1b. This
1107 fixes a *significant* performance bug in pass1b which hit
1108 people who had to had a lot of multiply claimed blocks.
1109 (Can you say O(n**3) boys and girls? I knew you could...
1110 Fortunately, this case didn't happen that much in actual
1111 practice.)
1112
1113 * pass1.c (e2fsck_pass1): Defer inodes which have an extended
1114 attribute block for later processing to avoid extra seeks
1115 across the disk.
1116 (process_inode_cmp): If there is no indirect block, sort
1117 by the extended attribute (i_file_acl) block.
1118
Theodore Ts'o7abb2bd2001-07-07 13:20:34 -04001119 * pass1b.c (clone_file_block): Fix bugs when cloning extended
1120 attribute blocks. Moved free of block_buf to after the
1121 code which clones the extattr block, and fixed logic for
1122 changing pointers to the extended attribute field in the
1123 inodes which were affected.
1124 (decrement_badcount): New function which is used whenever
1125 we need to decrement the number of files which claim a
1126 particular bad block. Fixed bug where delete_file wasn't
1127 checking check_if_fs_block() before clearing the entry in
1128 block_dup_map. This could cause a block which was claimed
1129 by multiple files as well as the filesystem metadata to
1130 not be completely fixed.
1131
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -04001132 * pass1.c (adjust_extattr_refcount): Add new function which
1133 adjusts the reference counts of extended attribute blocks
1134 if needed, both up and down.
1135 (e2fsck_pass1): If the refcount or refcount_extra
1136 structure are present, call adjust_extattr_refcount(),
1137 and free it afterwards.
1138
1139 * problem.h, problem.c (PR_1_EXTATTR_READ_ABORT,
1140 PR_1_EXTATTR_REFCOUNT, PR_1_EXTATTR_WRITE): Add new
1141 problem codes.
1142
Theodore Ts'o342d8472001-07-02 11:54:09 -040011432001-07-02 Theodore Tso <tytso@valinux.com>
1144
1145 * pass1.c (e2fsck_pass1, check_ext_attr, check_blocks): Add
1146 initial support for scanning extended attribute blocks.
1147
1148 * e2fsck.c (e2fsck_reset_context): free extended attribute
1149 refcount structure.
1150
1151 * e2fsck.h: Add new fields for accounting for the extended
1152 attribute blocks.
1153
1154 * Makefile.in, ea_refcount.c, e2fsck.h: Add new file which
1155 implements a reference count abstraction.
1156
1157 * problem.c, problem.h: Add new problem codes PR_1_ALLOCATE_REFCOUNT,
1158 PR_1_READ_EA_BLOCK, PR_1_BAD_EA_BLOCK, PR_2_FILE_ACL_BAD
1159
1160 * message.c: Add "@a" as an abbreviation for "extended attribute"
1161
1162 * pass1b.c (clone_file): Add code which handles cloning an
1163 extended attribute block.
1164
1165 * pass1b.c (delete_file):
1166 * pass2.c (deallocate_inode): If the inode contains an extended
1167 attribute block in the file_acl field, clear it and
1168 deallocate the block.
1169
11702001-06-28 Theodore Tso <tytso@valinux.com>
1171
1172 * pass2.c (e2fsck_process_bad_inode): Deal with inodes which are
1173 marked bad because of an invalid file_acl (either because
1174 EXT2_FEATURE_COMPAT_EXT_ATTR is not set, or because the
1175 block number in file_acl is bad.
1176
Theodore Ts'o636a9542001-06-29 17:57:26 -040011772001-06-29 Theodore Tso <tytso@valinux.com>
1178
1179 * unix.c (show_stats): Use long long to calculate the percentage
1180 of the number of blocks in use in the filesystem.
1181
Theodore Ts'o67960132001-06-23 00:16:37 -040011822001-06-23 Theodore Tso <tytso@valinux.com>
1183
1184 * Release of E2fsprogs 1.22
1185
Theodore Ts'od90f3492001-06-22 21:01:17 -040011862001-06-22 Theodore Tso <tytso@valinux.com>
1187
1188 * flushb.c: Use platform independent method of defining the
1189 BLKFLSBUF ioctl. Also include sys/mount.h since on newer
1190 platforms BLKFLSBUF is defined there.
1191
Theodore Ts'o42475e22001-06-22 20:35:38 -040011922001-06-19 Theodore Tso <tytso@valinux.com>
1193
1194 * super.c (release_inode_blocks): Don't try to release the blocks
1195 if the orphaned inode is a device file, symlink, or some
1196 other kind of special file that doesn't have a block list.
1197
Theodore Ts'of4f75ba2001-06-16 01:14:28 +000011982001-06-15 Theodore Tso <tytso@valinux.com>
1199
1200 * Release of E2fsprogs 1.21
1201
Theodore Ts'ob6a08072001-06-14 01:16:17 +000012022001-06-13 Theodore Tso <tytso@valinux.com>
1203
1204 * unix.c (check_if_skip): Adapted patch from Andreas Dilger which
1205 prints the number of mounts or days elapsed since the last
1206 check when e2fsck is forced to check an otherwise clean
1207 filesystem.
1208
Theodore Ts'ocbbf0312001-06-13 00:12:04 +000012092001-06-12 Theodore Tso <tytso@valinux.com>
1210
1211 * badblocks.c: Stop using the compatibility badblocks function,
1212 and use the ext2fs_badblocks_* functions instead.
1213
Theodore Ts'o5df55d72001-06-11 07:00:04 +000012142001-06-11 Theodore Tso <tytso@valinux.com>
1215
Theodore Ts'o3034f622001-06-11 15:17:45 +00001216 * unix.c (PRS): Fix bug introduced in 1.20 which broke the -F
1217 flag.
1218
Theodore Ts'o5df55d72001-06-11 07:00:04 +00001219 * Makefile.in: Add message.c and swapfs.c to the list of source
1220 files to build the make depend.
1221
1222 * swapfs.c, unix.c: Only support the -s and -S options to e2fsck
1223 if ENABLE_SWAPFS is defined.
1224
Theodore Ts'o725c4742001-06-08 11:55:44 +000012252001-06-08 Theodore Tso <tytso@valinux.com>
1226
1227 * recover.c, revoke.c: Synchronize with ext3 0.7a
1228
Theodore Ts'ofdbdea02001-06-02 04:26:26 +000012292001-06-02 Theodore Tso <tytso@valinux.com>
1230
Theodore Ts'oa479fe62001-06-02 04:50:14 +00001231 * recovery.c (scan_revoke_records): Fix bug in recovery code;
1232 missing byte order conversion.
1233
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00001234 * pass1.c (mark_inode_bad): Replace alloc_bad_map with a function
1235 which sets the bit in the bad inode bitmap.
1236 (e2fsck_pass1): Check for fast symlinks with an invalid
1237 size, and set the bad inode map in that case.
Theodore Ts'o62b6d472001-06-02 04:37:02 +00001238 (check_size): Check i_size_high for special files and
1239 prompt to clear it along with i_size if non-zero.
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00001240
1241 * pass2.c (e2fsck_process_bad_inode): Check for fast symlinks with
1242 an invalid size and prompt the user if the inode should be
1243 cleared.
1244
1245 * problem.h, problem.c (PR_2_SYMLINK_SIZE): Added new problem code.
1246
Theodore Ts'o71d521c2001-06-01 19:29:36 +000012472001-06-01 Theodore Tso <tytso@valinux.com>
1248
Theodore Ts'o2f686ac2001-06-02 00:38:40 +00001249 * problem.c, problem.h: Change PR_0_JOURNAL_UNSUPP_INCOMPAT and
1250 PR_0_JOURNAL_UNSUPP_ROCOMPAT so they aren't fatal errors,
1251 but prompt to see if the user should abort. Removed the
1252 PR_0_JOURNAL_RESET_COMPAT problem code.
1253
1254 * journal.c (e2fsck_journal_load): If there are incompatible
1255 journal flags, just return an error code.
1256 (e2fsck_check_ext3_journal): If e2fsck_journal_load
1257 returns an error code indicating that there are
1258 incompatible journal flag, check to see if we should
1259 abort, and then offer to clear the journal.
Theodore Ts'oe3338452001-06-14 07:11:33 +00001260 (Addresses Debian bug #98527.)
Theodore Ts'o2f686ac2001-06-02 00:38:40 +00001261
Theodore Ts'o797f5ef2001-06-01 23:49:46 +00001262 * Makefile.in: Move include/asm/types.h.in to
Theodore Ts'o36a23e12001-06-02 00:54:10 +00001263 lib/ext2fs/ext2_types.h.in.
Theodore Ts'o797f5ef2001-06-01 23:49:46 +00001264
12652001-06-01 Theodore Tso <tytso@valinux.com>
1266
Theodore Ts'o71d521c2001-06-01 19:29:36 +00001267 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
1268 pass1_check_directory): Add a safety check to make sure
1269 ctx->stashed_inode is non-zero.
1270
1271 * pass1b.c (pass1b): Use e2fsck_use_inode_shortcuts() to disable
1272 the inode shortcut processing, instead of manually
1273 clearing only half of the function pointers that needed to
1274 be NULL'ed out. This caused nasty bugs if the last inode
1275 in the filesystem needed dup block processing.
1276
1277 * pass1b.c (clone_file_block): When cloning a directory's metadata
1278 block, don't try to update the directory block list
1279 database, since indirect blocks aren't stored in the
1280 database and the resulting error will abort the file clone
1281 operation.
1282
Theodore Ts'o561cd4d2001-05-25 16:40:56 +000012832001-05-25 Theodore Tso <tytso@valinux.com>
1284
Theodore Ts'obb185862001-05-25 17:35:00 +00001285 * Release of E2fsprogs 1.20
1286
12872001-05-25 Theodore Tso <tytso@valinux.com>
1288
Theodore Ts'o561cd4d2001-05-25 16:40:56 +00001289 * journal.c (e2fsck_journal_reset_super): Remove extraneous line
1290
Theodore Ts'oc7f23362001-05-23 22:19:47 +000012912001-05-23 Theodore Tso <tytso@valinux.com>
1292
1293 * journal.c (e2fsck_journal_reset_super): Fix bug; the reset
1294 journal wasn't getting written out to disk since the dirty
1295 bit wasn't being set on the buffer.
1296 (e2fsck_journal_load): Don't print an error message if the
1297 journal version number is wrong; just return a error code
1298 reflecting this fact. If the block type in the journal
1299 superblcok is obviously not a version number, report the
1300 journal is corrupted.
1301 (e2fsck_check_ext3_journal): On an unsupported journal
1302 version, prompt to abort by default, but then offer a
1303 chance to clear the journal as corrupt.
1304
1305 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_VERSION): Added new
1306 problem code.
1307
Theodore Ts'o424cd2b2001-05-14 04:06:56 +000013082001-05-14 Theodore Tso <tytso@valinux.com>
1309
Theodore Ts'o21afac02001-05-14 12:47:41 +00001310 * pass1.c: Treat inodes with a low dtime (that were from a
1311 corrupted orphan list) specially.
1312
1313 * problem.c, problem.h: Add new problem codes PR_1_LOW_DTIME and
1314 PR_1_ORPHAN_LIST_REFUGEES, and a new latch group,
1315 PR_LATCH_LOW_DTIME.
1316
1317 * problemP.h: Expand the size of the problem flag to be an int
1318 instead of a short. Expand space in the flag word which
1319 is reserved for problem latch flags from 3 bits to 8 bits.
1320
Theodore Ts'o54c637d2001-05-14 11:45:38 +00001321 * e2fsck.h, scantest.c: Change location of ext2_fs.h to be
1322 ext2fs/ext2_fs.h
1323
Theodore Ts'o424cd2b2001-05-14 04:06:56 +00001324 * super.c (check_super_block): Be more strict on checking
1325 s_r_blocks_count superblock field.
1326
13272001-05-13 Theodore Tso <tytso@valinux.com>
1328
1329 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_ROCOMPAT,
1330 PR_0_JOURNAL_UNSUPP_INCOMPAT, PR_0_JOURNAL_RESET_COMPAT):
1331 New problem codes.
1332
1333 * journal.c (e2fsck_journal_load): Use a problem code to
1334 report unsupported feature flags. There is code to
1335 clear unsupported flags, but since this is dangerous,
1336 it's not allowed in the problem code table.
1337
13382001-05-11 Andreas Dilger <adilger@turbolinux.com>
1339
1340 * journal.c (e2fsck_journal_reset_super): initialize the journal
1341 sequence number to a random value to avoid recovering
1342 bad transactions from a corrupt journal.
1343
Theodore Ts'o328a5ce2001-05-13 20:21:25 +000013442001-05-13 Theodore Tso <tytso@valinux.com>
1345
1346 * journal.c: Code cleanup; initialize journal_enable_debug using
1347 an initializer.
1348
Theodore Ts'ofc9a69c2001-05-12 13:43:46 +000013492001-05-12 Theodore Tso <tytso@valinux.com>
1350
1351 * unix.c (PRS): Skip validation of -C's file descriptor if it is
1352 zero, since that is special case.
1353
Theodore Ts'of0b8c872001-05-09 06:03:58 +000013542001-05-09 Theodore Tso <tytso@valinux.com>
1355
1356 * super.c (release_orphan_inodes): Add gettext quoting around
1357 "Truncating" and "Clearing" for i18n.
1358
Theodore Ts'ob9852cd2001-05-05 05:14:59 +000013592001-05-05 Theodore Tso <tytso@valinux.com>
1360
Theodore Ts'oe39ac922001-05-05 06:47:24 +00001361 * util.c (fatal_error): Use the correct magic number when checking
1362 the magic number for the io_channel data structure. Also
1363 remove extraneous call to io_channel_flush() that was left
1364 over from an editing session.
1365
Theodore Ts'ob9852cd2001-05-05 05:14:59 +00001366 * pass2.c (check_dir_block): Ignore EXT2_ET_DIR_CORRUPTED errors
1367 from ext2fs_read_dir_block().
1368
Theodore Ts'o5f629b72001-05-01 20:01:08 +000013692001-05-01 Theodore Tso <tytso@valinux.com>
1370
Theodore Ts'oae8160e2001-05-01 21:13:37 +00001371 * unix.c (PRS): Validate the completion information file
1372 descriptor so that the completion bar won't get
1373 accidentally written onto the disk.
1374
Theodore Ts'o5f629b72001-05-01 20:01:08 +00001375 * e2fsck.8.in: Add explanation that you can use mke2fs -n -b
1376 blocksize to printout alternate superblock locations.
1377
Theodore Ts'obc57f152001-04-26 04:11:46 +000013782001-04-26 Theodore Tso <tytso@valinux.com>
1379
1380 * unix.c (check_if_skip): If the max_mount_count is zero, treat it
1381 as having no count set.
1382
Theodore Ts'oef059872001-04-17 00:40:02 +000013832001-04-16 Theodore Tso <tytso@valinux.com>
1384
1385 * super.c (check_super_block): Fix bad calculation of
1386 inodes_per_block, and tighten min/max checks to be a bit
1387 more paranoid. Thanks to Andreas Dilger for pointing out
1388 this bug.
1389
Theodore Ts'o1f735032001-03-29 19:00:50 +000013902001-03-29 Theodore Tso <tytso@valinux.com>
1391
Theodore Ts'o15986f72001-03-29 19:22:16 +00001392 * journal.c (mark_buffer_uptodate): Add emulation of kernel
1393 function mark_buffer_uptodate.
1394
Theodore Ts'o1f735032001-03-29 19:00:50 +00001395 * recovery.c, revoke.c: Synchronize with 0.6b ext3 files.
1396
Theodore Ts'od0515212001-02-13 04:32:53 +000013972001-02-12 Theodore Tso <tytso@valinux.com>
1398
1399 * journal.c (e2fsck_run_ext3_journal): Force a flush of the
1400 filesystem and io_channel before replaying the journal.
1401
Theodore Ts'oa5c33f22001-01-18 02:34:03 +000014022001-01-17 Theodore Ts'o <tytso@valinux.com>
1403
1404 * pass1.c (check_blocks): Fix large file checking code so that
1405 files > 2GB are considered large files, and restrict
1406 directories from being > 2GB.
1407
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +000014082001-01-12 Theodore Ts'o <tytso@valinux.com>
1409
Theodore Ts'oa9ca2012001-01-12 21:53:25 +00001410 * journal.c (e2fsck_journal_fix_unsupported_super): Remove unused
1411 function. Add FIXME notes to e2fsck_get_journal(), from
1412 Andreas Dilger.
1413
1414 * pass1.c (e2fsck_pass1): Cap the maximum legal size of a file by
1415 the limit caused by the fact that i_blocks is in 512 byte
1416 units, and that the Linux buffer cache also fundamentally
1417 assumes 512 byte sectors.
1418 Make sure that the journal inode is a regular file, and
1419 when clearing an unused journal inode, make sure the
1420 icount db is updated.
1421
1422 * problem.c, problem.h (PR_1_JOURNAL_BAD_MODE): Add new problem code.
1423
Theodore Ts'o37b6b292001-01-12 21:16:13 +00001424 * problem.c: For PR_1_RESERVED_BAD_MODE, print a description of
1425 the reserved inode. In PR_0_JOURNAL_HAS_JOURNAL, prompt
1426 to clear the journal, rather than deleting it (which is
1427 more accurate). (From Andreas Dilger.)
1428
Theodore Ts'o6a6d3d42001-01-12 21:11:24 +00001429 * journal.c: Make sure all functions which return an error code
1430 use the errcode_t return type, and not "int"
1431 (e2fsck_journal_release): Add new parameter, "drop",
1432 which is used when we just want to deallocate the journal
1433 without trying to write out any changes.
1434 (mark_buffer_clean): New function
1435 (e2fsck_check_ext3_journal): If we fail loading the
1436 journal, make sure we free all memory associated with it.
1437 (recover_ext3_journal): If we fail to load the journal or
1438 initialize the revoke data structures, make sure we free all
1439 memory associated with the journal.
1440
Theodore Ts'o721edd02001-01-12 21:05:57 +00001441 * message.c (special_inode_name): Add more special inode names
1442 (From Andreas Dilger)
1443
Theodore Ts'o58a75172001-01-12 20:59:19 +00001444 * util.c (fatal_error): Check to make sure the io_manager data
1445 structure is sane before trying to flush the io_channel.
1446 (From Andreas Dilger)
1447
Theodore Ts'o721edd02001-01-12 21:05:57 +00001448 * mtrace.h, super.c, pass2.c: Minor whitespace cleanups, from
1449 Andreas Dilger.
Theodore Ts'o4035f402001-01-12 20:25:50 +00001450
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +00001451 * journal.c (e2fsck_journal_fix_bad_inode): Set pctx->ino to the
1452 bad journal number.
1453
1454 * problem.c (PR_0_JOURNAL_BAD_INODE): Use pctx->ino instead of
1455 pctx->num when printing the bad journal inode number.
1456
Theodore Ts'o86c627e2001-01-11 15:12:14 +000014572001-01-11 <tytso@snap.thunk.org>
1458
Theodore Ts'o5ba23cb2001-01-11 19:15:02 +00001459 * pass1.c (process_block): Remove dead code which was never
1460 getting executed.
1461
1462 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
1463 ext2fs_sync_device() instead of using BLKFLSBUF.
1464
1465 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
1466
Theodore Ts'o86c627e2001-01-11 15:12:14 +00001467 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
1468 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
1469 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
1470 ino_t to ext2_ino_t.
1471
Theodore Ts'o95a5bc92001-01-11 04:58:21 +000014722001-01-09 <tytso@snap.thunk.org>
1473
1474 * problem.c: Fix another broken @F vs @f problem.
1475
Theodore Ts'o53ef44c2001-01-06 05:55:58 +000014762001-01-06 <tytso@snap.thunk.org>
1477
1478 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
1479 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
1480
1481 * jfs_user.h: Use more sophisticated inline handling to allow
1482 building with --enable-gcc-wall
1483
Theodore Ts'od3f35b62001-01-03 13:00:43 +000014842001-01-03 <tytso@snap.thunk.org>
1485
Theodore Ts'of18996c2001-01-03 16:57:24 +00001486 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
1487 own block; if the journal inode is not in use, and it
1488 contains data, offer to clear it.
1489
1490 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
1491 problem code.
1492
1493 * problem.c: Modified problem table to use a new abbreviations.
1494
Theodore Ts'od74edf42001-01-03 19:38:04 +00001495 * message.c: Add @j abbreviation for journal, and @v abbreviation
Theodore Ts'oe9044062001-01-03 15:39:37 +00001496 for device.
Theodore Ts'o1ce64532001-01-03 15:34:20 +00001497
Theodore Ts'occ7067b2001-01-03 13:24:06 +00001498 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
1499
Theodore Ts'od3f35b62001-01-03 13:00:43 +00001500 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
1501 the journal stored on a reserved inode. Also force a fsck
1502 if the journal appears to exist while !NEEDS_RECOVERY, and
1503 we forcibly reset the journal.
1504
Theodore Ts'of5ae75e2001-01-01 14:52:52 +000015052001-01-01 <tytso@snap.thunk.org>
1506
Theodore Ts'o5dd8f962001-01-01 15:51:50 +00001507 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
1508 ext2fs_sb with struct ext2_super_block.
1509
Theodore Ts'of5ae75e2001-01-01 14:52:52 +00001510 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
1511
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +000015122000-12-31 <tytso@snap.thunk.org>
1513
1514 * jfs_compat.h: Remove uneeded header file.
1515
Theodore Ts'ob2f93192000-12-30 20:33:42 +000015162000-12-30 <tytso@snap.thunk.org>
1517
Theodore Ts'oc59a7042000-12-31 01:52:03 +00001518 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
1519 conflicts with the system header file.
1520
Theodore Ts'ob2f93192000-12-30 20:33:42 +00001521 * problem.h: Fixed numbering of pass1 error messages; an extra 0
1522 had slipped into some of the numbers. (Pointed out by
1523 Andreas Dilger)
1524
1525 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
1526 unnecessary automatic variable. Add explanatory comment
1527 about the kernel emulation routines. (Suggested by
1528 Andreas Dilger)
1529
Theodore Ts'o060b5fb2000-12-13 18:07:23 +000015302000-12-13 Theodore Ts'o <tytso@valinux.com>
1531
Theodore Ts'o9b565752000-12-13 18:50:22 +00001532 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
1533 journal fields are consistent if any of the superblock
1534 fields are set. (Backs out erroneous change made by sct,
1535 pointed out by Andreas.)
1536
1537 * unix.c (main): Clarify coments (no code changes)
1538
1539 * super.c (release_orphan_inodes): Fix spelling typo in error message.
1540
Theodore Ts'o8188c9e2000-12-13 18:39:14 +00001541 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
1542 level if we need to set large files flag. Patch from
1543 Andreas Dilger.
1544
Theodore Ts'o7b59f1e2000-12-13 18:11:44 +00001545 * super.c (check_super_block): If we have any of the compatibility
1546 flags set, we need to have a revision 1 filesystem. Most
1547 kernels will not check the flags on a rev 0 filesystem
1548 and we may have corruption issues because of the
1549 incompatible changes to the filesystem. Patch from Andreas
1550 Dilger.
1551
Theodore Ts'o060b5fb2000-12-13 18:07:23 +00001552 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
1553 new problem codes.
1554
Theodore Ts'o0e8a9562000-12-09 06:41:25 +000015552000-12-09 <tytso@snap.thunk.org>
1556
Theodore Ts'obf2d4992000-12-09 14:46:20 +00001557 * flushb.c: Fix flushb so that it does something other than waste
1558 disk space when built on systems with modern header files
1559 and add a non-subtle Copyright Licensing restriction so
1560 Yann will remove it from the Debian Distribution. (Now
1561 violates the Debian Free Software Guidelines, on purpose.)
1562
Theodore Ts'of43650c2000-12-09 06:47:56 +00001563 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
1564 at the top level, set the JFS debuging level to 2.
1565
Theodore Ts'o0e8a9562000-12-09 06:41:25 +00001566 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
1567 has been moved to the include/linux directory.
1568
1569 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
1570 support the V2 superblock and revoke processing. The
1571 journal.c and revoke.c files are copies from the ext3
1572 kernel source.
1573
1574 * Makefile.in: Added revoke.c to the list of source/object files.
1575
Theodore Ts'o133a56d2000-11-17 05:40:49 +000015762000-11-16 Theodore Ts'o <tytso@valinux.com>
1577
1578 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
1579 reporting problems rather than using com_err directly.
1580
1581 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
1582
1583 * message.c (expand_percent_expression): Add safety check. If
1584 ctx->str is NULL, print "NULL" instead of dereferencing
1585 the null pointer.
1586
1587 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
1588 to ext2fs_block_iterate2, to support 64-bit filesizes and
1589 to speed things up slightly by avoiding the use of the
1590 ext2fs_block_iterate's compatibility shim layer.
1591
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +000015922000-10-30 <tytso@snap.thunk.org>
1593
1594 * util.c (get_backup_sb): Calculate backup superblock correctly
1595 when the blocksize is > 1k.
1596
Theodore Ts'o241f2242000-10-26 20:42:07 +000015972000-10-26 <tytso@snap.thunk.org>
1598
1599 * jfs.h, jfs_compat.h, journal.c: Updated to include the
1600 definition of the new journal superblock format; still
1601 only supports V1 superblocks for now. (From sct)
1602
Theodore Ts'ob09a4b02000-10-24 21:16:09 +000016032000-10-24 <tytso@snap.thunk.org>
1604
Theodore Ts'o83949022000-10-25 01:38:50 +00001605 * super.c (release_inode_block, release_inode_blocks,
1606 release_orphan_inodes): Add code to deal with truncating
1607 inodes which are still in use (but which are on the orphan
1608 list because they need truncation).
1609
1610 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
1611 PR_0_ORPHAN_CLEAR_INODE, and remove
1612 PR_0_ORPHAN_INODE_INUSE.
1613
1614 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
1615 a message when the journal is being recovered.
1616
Theodore Ts'ob09a4b02000-10-24 21:16:09 +00001617 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
1618 journal inode, if it is in use.
1619
Theodore Ts'oadfca562000-09-12 21:24:36 +000016202000-09-12 <tytso@valinux.com>
1621
1622 * extend.c:
1623 * flushb.c: Add include of nls-enable.h which is necessary so that
1624 they can compile correctly.
1625
Theodore Ts'occ96b2b2000-08-22 21:30:11 +000016262000-08-22 <tytso@valinux.com>
1627
Theodore Ts'o2575fb02000-08-22 21:50:04 +00001628 * unix.c (main): If we're doing a read-only check, skip the
1629 journal playback, but don't abort the e2fsck run.
1630
Theodore Ts'o99a2cc92000-08-22 21:41:52 +00001631 * super.c (release_orphan_inodes): Fix typo; should do bounds
1632 checking on next_ino instead of ino.
1633
1634 * jfs_compat.h (J_ASSERT):
1635 * journal.c (e2fsck_run_ext3_journal):
1636 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
1637
Theodore Ts'o243dc312000-08-22 21:37:47 +00001638 * unix.c: Use fatal_error() instead of exit() whenever possible.
1639 Also fix the fsck exit codes so that we use FSCK_USAGE
1640 when it is appropriate. Rename global_signal_ctx to
1641 e2fsck_global_ctx and let it be exported globally.
1642
Theodore Ts'occ96b2b2000-08-22 21:30:11 +00001643 * util.c (fatal_error): Try to flush the I/O manager before
1644 forcing an exit.
1645
Theodore Ts'oecf1b772000-08-20 22:06:31 +000016462000-08-20 <tytso@valinux.com>
1647
1648 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
1649 e2fsck_check_ext3_journal to smash the journal because
1650 journal->j_transaction_sequence wasn't getting
1651 initialized.
1652
1653 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
1654 call to e2fsck_clear_recover from recover_ext3_journal to
1655 after the filesystem has been closed and reopened.
1656 Otherwise, the superblock in the filesystem handle will
1657 probably be stale, and will overwrite the newer version of
1658 the superblock written by the log recovery.
1659
1660 * message.c (expand_inode_expression): Add support for %Iu and %Ig
1661
1662 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
1663
1664 * super.c (release_orphan_inodes, release_inode_block,
1665 release_inode_blocks): Update the block group descriptor
1666 counts when freeing the orphan inode. Use
1667 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
1668
1669 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
1670 attempted to reopen the filesystem using the device name
1671 instead of the filesystem name.
1672
Theodore Ts'o80bfaa32000-08-18 15:08:37 +000016732000-08-18 <tytso@valinux.com>
1674
1675 * Makefile.in: Update the make dependencies
1676
1677 * problem.c, problem.h: Add the problem codes:
1678 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
1679 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
1680 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
1681 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
1682
1683 * super.c (release_inode_blocks, release_orphan_inodes,
1684 check_super_block): Add support for clearing orphaned
1685 inodes from the unmounted filesystem.
1686
1687 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
1688 check; this is now handled in check_super_block ---
1689 non-journaled filesystems can use the orphan list in the
1690 future. Also, move the the re-opening of the filesystem
1691 to e2fsck_run_ext3_journal().
1692
Theodore Ts'o3b5386d2000-08-14 14:25:19 +000016932000-07-12 Andreas Dilger <adilger@turbolinux.com>
1694
1695 * journal.c: implement loading of ext3 journal for recovery code
1696
1697 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
1698 Add journal problems.
1699
1700 * recovery.c (journal_recover): user-space ext3 journal recovery code
1701
1702 * unix.c (main) : check journal and do recovery in separate steps
1703
Theodore Ts'ob8d164c2000-08-08 03:17:04 +000017042000-08-07 <tytso@snap.thunk.org>
1705
1706 * unix.c (calc_percent): Make sure that we don't take a floating
1707 exception if the max value is zero. (should normally
1708 never happen, but...)
1709
Theodore Ts'of9e67062000-07-13 23:25:54 +000017102000-07-13 <tytso@valinux.com>
1711
1712 * Release of E2fsprogs 1.19
1713
Theodore Ts'o17390c02000-07-07 04:13:21 +000017142000-07-06 Theodore Ts'o <tytso@valinux.com>
1715
1716 * unix.c (check_if_skip): Modify algorithm for checking
1717 s_max_mnt_count to match with the kernel. (If
1718 s_max_mnt_count is negative, ignore the mnt_count check.)
1719
1720 * unix.c (e2fsck_update_progress): Adjust the width of the
1721 progress bar dynamically, based on the filesystem name
1722 that we need to display.
1723
1724 * unix.c (main): If the ext3 needs_recovery flag is set, call
1725 e2fsck_run_ext3_journal() and then restart the e2fsck run.
1726
1727 * journal.c (e2fsck_run_ext3_journal): New file which contains
1728 logic to recover the ext3 journal. This version relies on
1729 the kernel being able to mount the filesystem in order to
1730 run the journal.
1731
Theodore Ts'o92269042000-07-05 18:25:59 +000017322000-07-05 Theodore Ts'o <tytso@valinux.com>
1733
1734 * unix.c (e2fsck_update_progress): Only save and check the last
1735 percentage after multiplying it by 10, nor 1000, since we
1736 only need to save values to a tenth of a percent (and the
1737 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +00001738 Also, re-arrange the logic so that we do the time
1739 check only after doing the percentage check, and we
1740 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +00001741
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +000017422000-07-04 Theodore Ts'o <tytso@valinux.com>
1743
1744 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
1745 field is set; if so, clear it, so that ext3 mounting code
1746 won't get confused by the fact that we've cleared out the
1747 orphaned inodes.
1748
Theodore Ts'obbd47d72000-06-10 19:21:33 +000017492000-06-10 Theodore Ts'o <tytso@valinux.com>
1750
1751 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
1752 checking for a "should never happen case".
1753
1754 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
1755 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
1756
Theodore Ts'od647a1e2000-05-27 14:40:09 +000017572000-05-27 Theodore Ts'o <tytso@valinux.com>
1758
1759 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
1760 (cw@foof.org) which checks to see if special devices have
1761 a non-zero size, and deals with it.
1762
1763 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
1764
Theodore Ts'o1d279212000-05-19 02:38:14 +000017652000-05-18 Theodore Ts'o <tytso@valinux.com>
1766
1767 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
1768 well.
1769
Theodore Ts'o4ea0a112000-05-08 13:33:17 +000017702000-05-08 Theodore Ts'o <tytso@valinux.com>
1771
1772 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
1773 code.
1774
1775 * super.c (check_super_block): If the OS type in the superblock is
1776 the Hurd, check to see if the filetype feature is set, and
1777 offer to clear it if so. This needs to be done since the
1778 Hurd doesn't properly support the filetype feature.
1779 (And since the hurd allows the transmogrification of files
1780 to special files and vice versa --- for no good reason
1781 that I can understand --- it can't support the filetype
1782 feature for the forseeable future, either.)
1783
Theodore Ts'o373b8332000-04-03 16:22:35 +000017842000-04-03 Theodore Ts'o <tytso@valinux.com>
1785
1786 * unix.c: For platforms that don't define optarg.h, manually
1787 define optarg and optind.
1788
Theodore Ts'o01fbc702000-04-03 13:57:21 +000017892000-03-20 Theodore Ts'o <tytso@valinux.com>
1790
1791 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
1792 Check for the append-only as well as the immutable flag.
1793
1794 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
1795 append-only flag. Fix comment for compression flag.
1796
Theodore Ts'o06012322000-02-12 20:12:43 +000017972000-02-12 <tytso@snap.thunk.org>
1798
1799 * unix.c (e2fsck_update_progress): Limit the number of updates to
1800 the progress bars to 8 times a second. This allows a 9600
1801 baud console link to keep up.
1802
Theodore Ts'o19178752000-02-11 15:55:07 +000018032000-02-11 <tytso@snap.thunk.org>
1804
1805 * unix.c (main): If compression is enabled on the filesystem,
1806 print a warning message (for now).
1807
1808 * message.c: Add new compression shortcut: @c == compress
1809
1810 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
1811
1812 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
1813 set, check to see if the filesystem supports compression.
1814 If it does pass this information down to process_block()
1815 so it can treat the compressed block flag words
1816 correctly. If not, offer to clear the flag, since it
1817 shouldn't be set.
1818 (process_block): If an inode has the compressed inode flag
1819 set, allow EXT2FS_COMPRESSED_BLKADDR.
1820
1821 * pass1b.c (process_pass1b_block, delete_file_block,
1822 clone_file_block):
1823 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
1824 see if the block can be skipped.
1825
Theodore Ts'o28ffafb2000-02-08 19:14:02 +000018262000-02-08 <tytso@snap.thunk.org>
1827
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +00001828 * util.c: Make resource tracking message more concise.
1829
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +00001830 * e2fsck.h:
1831 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
1832 ctx->block_illegal_map, since it's not needed by pass1,
1833 and pass1b has been modified to calculate it manually if
1834 needed. This reduces the memory footprint needed by e2fsck.
1835
1836 * pass1b.c (check_if_fs_block): New static function which returns
1837 whether or not a block overlaps with filesystem metadata.
1838 This replaces consulting the block_illegal_map bitmap.
1839
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00001840 * Makefile.in: Call sync after finishing building all in this
1841 directory.
1842
1843 * unix.c (PRS): sync the filesystem before trying to use
1844 BLKFLSBUF, to minimize the chance of causing dirty blocks
1845 to get dropped.
1846
1847 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
1848 a Linux/i386 system.
1849
1850 * pass3.c (check_directory): Only do the loop detection algorithm
1851 if we've searched over 2048 parent directories and haven't
1852 found the end yet. This means that in the common case, we
1853 don't allocate or clear the inode_loop_detection bitmap,
1854 which for large systems, merely clearing the bitmap for
1855 each directory was turning out to be quite expensive.
1856 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
1857 identifying this problem.
1858
Theodore Ts'o0c4a0722000-02-07 03:11:03 +000018592000-02-06 Theodore Ts'o <tytso@valinux.com>
1860
1861 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
1862 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
1863 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
1864 unix.c, util.c: Add Internationalization support as
1865 suggested by Marco d'Itri <md@linux.it>.
1866
Theodore Ts'o80e808f2000-02-02 16:19:59 +000018672000-02-02 Theodore Ts'o <tytso@valinux.com>
1868
1869 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
1870 linux/fs.h
1871
Theodore Ts'o894edb22000-01-18 21:27:12 +000018722000-01-18 Theodore Ts'o <tytso@valinux.com>
1873
1874 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
1875 we need a separate DEPLIBUUID that can be used in
1876 Makefile's dependency rules.
1877
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +000018781999-11-23 <tytso@valinux.com>
1879
1880 * e2fsck.8.in: Update language about where to find a backup
1881 superblock.
1882
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +000018831999-11-19 <tytso@valinux.com>
1884
Theodore Ts'o86a63e91999-11-23 13:52:48 +00001885 * pass1.c (process_inodes): Add shortcut handling; if
1886 process_inodes_count is zero, return right away, to avoid
1887 calling qsort with a non-positive count.
1888
Theodore Ts'oec8d2c31999-11-19 18:52:36 +00001889 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
1890 to print Delete as ^?
1891
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00001892 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
1893 the source directory.
1894
Theodore Ts'oa846d2f1999-11-10 15:50:24 +000018951999-11-10 <tytso@valinux.com>
1896
Theodore Ts'ocd086361999-11-10 16:00:39 +00001897 * Release of E2fsprogs 1.18
1898
18991999-11-10 <tytso@valinux.com>
1900
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00001901 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
1902 means the answer is assumed to be no in preen mode. This
1903 is now used in the PR_1_SET_IMMUTABLE code, so that in
1904 preen mode we ignore these inodes and just print a warning
1905 message.
1906
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +000019071999-11-09 <tytso@valinux.com>
1908
1909 * pass1.c (e2fsck_pass1): If the filesystem does not support
1910 imagic inodes, if an inode has the imagic flag set, offer
1911 to clear the imagic flag. If a valid device/fifo/socket
1912 has the immutable flag set, call the new helper function
1913 check_immutable() to offerto clear the immutable flag.
1914
1915 * pass2.c (check_filetype): Use the new ext2_file_type() helper
1916 function instead of calculating the file_type information
1917 manually.
1918
1919 * pass3.c (e2fsck_reconnect_file): When adding a link to
1920 lost+found, calculate the filetype information so that
1921 ext2fs_link() can use the information if applicable.
1922 (get_lost_and_found): Create the /lost+found directory
1923 with the correct filetype information if applicable.
1924
1925 * util.c (ext2_file_type), e2fsck.h: New function which returns
1926 the directory entry file type information given the
1927 inode's mode bits.
1928
1929 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
1930 and PR_1_SET_IMMUTABLE.
1931
Theodore Ts'o7142db01999-11-08 18:46:54 +000019321999-11-07 <tytso@valinux.com>
1933
1934 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
1935 to prevent it from getting freed twice.
1936
19371999-11-06 <tytso@valinux.com>
1938
1939 * unix.c (main): Close the filesystem before freeing the context,
1940 so that in the event of a free()-related segmentation
1941 violation, the filesystem is properly closed and written
1942 out.
1943
19441999-10-27 <tytso@valinux.com>
1945
1946 * e2fsck.c (e2fsck_reset_context): When freeing
1947 ctx->inode_reg_map, we weren't zero'ing
1948 ctx->inode_reg_map, which could cause a segfault later on
1949 in the e2fsck run.
1950
19511999-10-26 <tytso@valinux.com>
1952
1953 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
1954 matches the standard convention).
1955
Theodore Ts'of68aa411999-10-26 14:20:22 +000019561999-10-26 <tytso@valinux.com>
1957
Theodore Ts'o28e11941999-10-26 18:17:20 +00001958 * Release of E2fsprogs 1.17
1959
19601999-10-26 <tytso@valinux.com>
1961
Theodore Ts'of68aa411999-10-26 14:20:22 +00001962 * message.c (safe_print): Make safe_print take an char instead of
1963 an unsigned char to fix gcc warnings.
1964
Theodore Ts'oc40db6d1999-10-25 21:03:34 +000019651999-10-25 <tytso@valinux.com>
1966
Theodore Ts'oe6597041999-10-26 02:30:16 +00001967 * util.c: For NT portability, don't redefine getchar(), since
1968 stdio defines that. Instead we introduce a new
1969 abstract macro read_a_char() which is #defined to the
1970 right function as necessary.
1971
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00001972 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
1973
1974 * pass2.c (check_dir_block): Require that the length of the
1975 directory entry be at least 12 bytes. Check to see if the
1976 filename is zero-length, and flag that as an error.
1977
Theodore Ts'o7847c1d1999-10-22 15:11:42 +000019781999-10-22 <tytso@valinux.com>
1979
Theodore Ts'o614fdfd1999-10-23 03:19:51 +00001980 * Release of E2fsprogs 1.16
1981
19821999-10-22 <tytso@valinux.com>
1983
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00001984 * pass2.c (check_filetype): If the filetype filesystem feature is
1985 not set, and a directory entry has a dirent feature, offer
1986 to clear it (since 2.0 kernels will do complain will
1987 interpret it as a very large name length field).
1988
1989 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
1990
Theodore Ts'oaa4115a1999-10-21 19:33:18 +000019911999-10-21 <tytso@valinux.com>
1992
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +00001993 * e2fsck.8.in: Update man page to use a more standard format (bold
1994 option flags and italicized variables), as suggested by
1995 Andreas Dilger (adilger@enel.ucalgary.ca)
1996
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00001997 * pass4.c (e2fsck_pass4): If an inode is set in the
1998 inode_imagic_map bitmap, don't check to see if it is
1999 disconnected from the inode tree (because it almost
2000 certainly will be). Free inode_imagic_map at the end of
2001 pass 4.
2002
2003 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
2004 feature is set, check the directory entry's filetype
2005 information field, and fix/set it if necessary.
2006 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
2007 of pass 2.
2008
2009 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
2010 information for inode_reg_map and inode_imagic_map, which
2011 indicates which inodes are regular files and AFS inodes,
2012 respectively.
2013 Since only the master superblock is written during a
2014 restart, force that superblock to be used after a restart;
2015 otherwise changes to the block group descriptors end up
2016 getting ignored.
2017
2018 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
2019 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
2020 which supresses the problem message if e2fsck is run with
2021 the -n option.
2022
2023 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
2024 new problem codes.
2025
2026 * message.c (expand_dirent_expression): Add support for %dt which
2027 prints the dirent type information.
2028
2029 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
2030 and inode_imagic_map).
2031
2032 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
2033 to the context structure.
2034
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +000020351999-09-24 <tytso@valinux.com>
2036
2037 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
2038 e2fsprogs easier to port to non-Unix platforms.
2039
20401999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00002041
2042 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
2043 internal and external inode counts in sync when we
2044 decremented an inode whose link count was already zero.
2045 Now we skip incrementing or decrementing both link counts
2046 if we would cause an overflow condition.
2047 (expand_dir, expand_dir_proc): Change where we update the
2048 inode block count and size files so that the block count
2049 field is updated correctly when we create an indirect block.
2050
Theodore Ts'o78cf0541999-10-20 18:29:18 +000020511999-08-05 <tytso@valinux.com>
2052
2053 * super.c (check_super_block): Check to see whether the
2054 inodes_per_group value in the superblock is insanely too
2055 high.
2056
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +000020571999-08-02 <tytso@valinux.com>
2058
2059 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
2060 the block also shares data with the fs metadata when
2061 the count drops to 1, since the block should still be
2062 cloned, as fs metadata isn't included in the count.
2063
20641999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +00002065
2066 * Release of E2fsprogs 1.15
2067
Theodore Ts'ob55199e1999-07-19 15:37:46 +000020681999-07-19 <tytso@valinux.com>
2069
2070 * unix.c (usage): Add minimalist emergency help to the usage
2071 message.
2072
Theodore Ts'o5596def1999-07-19 15:27:37 +000020731999-07-18 <tytso@valinux.com>
2074
2075 * unix.c: Add support for calculating a progress bar if the -C0
2076 option is given. The function e2fsck_clear_progbar()
2077 clears the progress bar and must be called before any
2078 message is issued. SIGUSR1 will enable the progress bar,
2079 and SIGUSR2 will disable the progress bar. This is used
2080 by fsck to handle parallel filesystem checks. Also, set
2081 the device_name from the filesystem label if it is
2082 available.
2083
2084 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
2085 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
2086 structure which contains the last tenth of a percent
2087 printed for the user.
2088
2089 * message.c (print_e2fsck_message): Add call to
2090 e2fsck_clear_progbar().
2091
2092 * pass1.c (e2fsck_pass1):
2093 * pass2.c (e2fsck_pass2):
2094 * pass3.c (e2fsck_pass3):
2095 * pass4.c (e2fsck_pass4):
2096 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
2097 printing the resource tracking information.
2098
2099 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
2100 an error in the bitmaps, suppress printing the progress
2101 bar using the suppression flag for the remainder of the
2102 check, in order to clean up the display.
2103
Theodore Ts'o74033351999-07-01 03:00:47 +000021041999-06-30 <tytso@valinux.com>
2105
2106 * unix.c (check_mount): Clean up the abort message displayed when
2107 the filesystem is mounted and either stdout or stdin isn't
2108 a tty.
2109
21101999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +00002111
2112 * e2fsck.h:
2113 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
2114 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
2115 pass1_* be private static functions, and create new
2116 function e2fsck_use_inode_shortcuts which sets and clears
2117 the inode shortcut functions in the fs structure.
2118
2119 * e2fsck.h:
2120 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
2121 exported function.
2122
2123 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
2124 if a disconnected inode has any problems before
2125 connecting it to /lost+found. Bug and suggested fix by
2126 Pavel Machek <pavel@bug.ucw.cz>
2127
21281999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +00002129
2130 * unix.c (main): Add missing space in the disk write-protected
2131 message.
2132
Theodore Ts'od4b0ce01999-06-18 01:09:29 +000021331999-05-22 <tytso@rsts-11.mit.edu>
2134
2135 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
2136 code.
2137
2138 * super.c (check_super_block): Add check to make sure the total
2139 number of inodes is sane, since this can be calculated
2140 from the number of groups times the number of inodes per
2141 group. Offer to correct it if it is incorrect.
2142
Theodore Ts'oe79d1b21999-06-18 01:06:59 +000021431999-03-19 <tytso@rsts-11.mit.edu>
2144
2145 * pass5.c (check_block_end): Fix fencepost condition where when
2146 clearing the block padding we were missing the last position
2147 in the bitmap.
2148
Theodore Ts'o75d83be1999-05-18 03:16:36 +000021491999-05-17 <tytso@rsts-11.mit.edu>
2150
2151 * unix.c (reserve_stdio_fds): Add safety check in case
2152 reserve_stdio_fds couldn't open /dev/null.
2153
Theodore Ts'o4a9f5931999-03-16 19:32:52 +000021541999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
2155
2156 * util.c (print_resource_track): Use mallinfo if present to get
2157 more accurate malloc statistics.
2158
2159 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +00002160 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00002161
2162 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
2163
21641999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2165
2166 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
2167 that the block group number is printed. Add new prompt,
2168 PROMPT_UNLINK.
2169
21701999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2171
2172 * Release of E2fsprogs 1.14
2173
Theodore Ts'o9e51eca1999-01-09 16:32:31 +000021741999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2175
2176 * message.c (safe_print): New function which prints strings,
2177 converting non-printable characters using the '^' and
2178 M-notation. This function is now used to print directory
2179 name entries and pathnames.
2180
Theodore Ts'o73f17cf1999-01-04 07:35:45 +00002181Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
2182
2183 * unix.c (main): Reset the context before calling ext2fs_close(),
2184 to avoid referencing already freed memory.
2185
Theodore Ts'o556ad131998-12-19 08:10:58 +000021861998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
2187
2188 * Release of E2fsprogs 1.13
2189
Theodore Ts'o5a679c81998-12-03 16:40:38 +000021901998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
2191
2192 * Makefile.in: Updated dependencies.
2193
21941998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
2195
2196 * pass3.c (get_lost_and_found): If the filesystem is not opened
2197 read-only, then force /lost+found to be created if it is
2198 not present.
2199
2200 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
2201 operation.
2202
Theodore Ts'o1dde43f1998-11-14 04:18:28 +000022031998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2204
2205 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
2206 since e2fsck_free_context may reference data in ctx->fs.
2207
2208 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
2209 before checking ctx->fs->dblist.
2210
22111998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2212
2213 * pass1.c (e2fsck_pass1): Use the device check subroutine on
2214 FIFO's and Socket's, so that we catch bogus immutable inodes.
2215
2216 * pass2.c (process_bad_inode): Process bad socket and fifo's.
2217
2218 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
2219 PR_2_BAD_SOCKET.
2220
Theodore Ts'o7f813ba1998-09-03 01:26:03 +000022211998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
2222
2223 * problem.c: Add PR_3_NO_DIRINFO error code.
2224
2225 * super.c (check_super_value): Rename min and max to min_val and
2226 max_val to avoid possible cpp macro conflicts.
2227
2228 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
2229 possible cpp macro conflicts.
2230
2231 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
2232 cpp macro conflicts.
2233 (check_directory): Fix logic to avoid possible core dump
2234 in the case of ext2fs_get_dir_info returning NULL. (By
2235 the time we get here, it should never happen, but...).
2236 Also simply/streamline the control flow of the function.
2237
Theodore Ts'o24fc5031998-08-26 15:23:31 +000022381998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
2239
2240 * unix.c (check_if_skip): Move the "not cleanly mounted" check
2241 ahead of the maximal mount and too long since checked tests.
2242 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
2243 open, so that we don't open the filesystem using the same
2244 file descriptor as stdout or stderr.
2245
Theodore Ts'of75c28d1998-08-01 04:18:06 +000022461998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
2247
2248 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
2249 get to 100%.
2250
2251 * pass3.c (e2fsck_pass3): Change progress accounting to be
2252 consistent with the other e2fsck passes.
2253
2254 * e2fsck.c (e2fsck_run): At the end of each pass, call the
2255 progress function with the pass number set to zero.
2256
2257 * unix.c (e2fsck_update_progress): If the pass number is zero,
2258 ignore the call, since that indicates that we just want to
2259 deallocate any progress structures.
2260
Theodore Ts'o8144d671998-07-09 05:33:18 +000022611998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2262
Theodore Ts'o4a5fa191998-07-09 05:42:45 +00002263 * Release of E2fsprogs 1.12
2264
22651998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2266
Theodore Ts'o8144d671998-07-09 05:33:18 +00002267 * unix.c (main): Fix typo in checking the incompat feature set; it
2268 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
2269
Theodore Ts'o1fad9041998-07-07 05:44:43 +000022701998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
2271
2272 * badblocks.c (test_disk): Don't clear the existing bad blocks
2273 list when using e2fsck -c, since it may cause blocks with
2274 marginal errors to be dropped from the bad blocks list.
2275
Theodore Ts'o874b4d21998-07-06 14:33:12 +00002276Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
2277
2278 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
2279 compatibility with older kernels.
2280
Theodore Ts'o818180c1998-06-27 05:11:14 +000022811998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
2282
2283 * unix.c (e2fsck_update_progress): Remove unused variables.
2284
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +000022851998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
2286
2287 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
2288 collision with LFS API.
2289
2290 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
2291 properly initialized.
2292 (e2fsck_pass1): Don't allow the the boot loader inode to
2293 be a directory (clear the inode mode field if so).
2294
Theodore Ts'oefac9a11998-05-07 05:02:00 +000022951998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
2296
2297 * unix.c (PRS): Added new option -C, which causes e2fsck to print
2298 progress updates so that callers can keep track of the
2299 completion progress of e2fsck. Designed for use by
2300 progress, except for -C 0, which prints a spinning report
2301 which may be useful for some users.
2302
2303 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
2304 scheme (useful for larger filesystems).
2305
2306 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
2307 progress reporting functions.
2308
Theodore Ts'o4c77fe51998-04-30 17:35:59 +000023091998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2310
2311 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
2312 appropriate return type for comparison functions for qsort.
2313
2314 * e2fsck.h: Add #ifdef protection for unistd.h
2315
2316 * super.c: Remove header files already included by e2fsck.h
2317
Theodore Ts'o76f875d1998-04-27 01:41:13 +000023181998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
2319
2320 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
2321 size of the memory to be resized to ext2fs_resize_mem().
2322
Theodore Ts'o7e44f241998-04-01 03:16:29 +000023231998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
2324
2325 * Makefile.in: Change to use new installation directory variables
2326 convention. Fix uninstall rules to take $(DESTDIR) into
2327 account. Remove cat8dir from the installdirs target,
2328 since modern man package don't necessarily put the cat
2329 directory in /usr/man/cat?.
2330
Theodore Ts'o17dba281998-03-30 01:16:26 +000023311998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
2332
2333 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
2334 extern in e2fsck.h to prevent -Wall warnings.
2335
2336 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
2337
23381998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2339
2340 * super.c (check_super_block): Fix broken superblock sanity check
2341 when calculating blocks_per_group if s_log_frag_size !=
2342 s_log_block_size. Since we don't support fragments, this
2343 isn't a bug deal, but it's good to get it fixed.
2344
Theodore Ts'o246501c1998-03-24 16:22:38 +000023451998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
2346
2347 * unix.c: Fix bug in check of feature set, to make sure we can
2348 really fix this filesystem.
2349
2350 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
2351 num field be a 64 bit type. Add the problem code
2352 PR_1_FEATURE_LARGE_FILES
2353
2354 * problem.c: Add table entry for the problem code
2355 PR_1_FEATURE_LARGE_FILES.
2356
2357 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
2358 a problem for directory inodes. (Since it is also
2359 i_size_high now.) If there are no large_files, then
2360 clear the LARGE_FLAG feature flag. If there are
2361 large_files, but the LARGE_FLAG feature flag is not set,
2362 complain and offer to fix it.
2363 (check_blocks): Add support to deal with non-directory
2364 inodes that have i_size_high set (i.e., large_files).
2365 Don't give an error if a directory has preallocated
2366 blocks, to support the DIR_PREALLOC feature.
2367 (process_block, process_bad_block): The blockcnt variable
2368 is a type of blkcnt_t, for conversion to the new
2369 block_iterate2.
2370
2371 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
2372 a problem for directory inodes. (Since it is also
2373 i_size_high now.)
2374
2375 * message.c (expand_inode_expression): Print a 64-bits of the
2376 inode size for non-directory inodes. (Directory inodes
2377 can only use a 32-bit directory acl size, since
2378 i_size_high is shared with i_dir_acl.) Add sanity check
2379 so that trying to print out the directory acl on a
2380 non-directory inode will print zero.
2381 (expand_percent_expression): %B and %N, which print
2382 pctx->blkcount and pctx->num, can now be 64 bit
2383 variables. Print them using the "%lld" format if
2384 EXT2_NO_64_TYPE is not defined.
2385
2386 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
2387
2388 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
2389 field.
2390
Theodore Ts'ob6f79831998-03-09 13:10:37 +00002391Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2392
2393 * pass3.c (fix_dotdot_proc):
2394 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
2395 * message.c (expand_dirent_expression): Mask off the high eight
2396 bits of the directory entry's name_len field, so that it
2397 can be used for other purposes.
2398
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +00002399Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2400
2401 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
2402 include EXT2_FLAG_RESTART anymore, we need to adjust this
2403 routine so that it *does* return in the case of it seeing
2404 EXT2_FLAG_RESTART.
2405
2406 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
2407 done callback function, which may set context abort
2408 flags. So we need to test the context abort flags after
2409 we call ext2_get_next_inode().
2410 (process_inodes): If we abort due out of process_inodes,
2411 do a clean exit by breaking out of the for loop instead of
2412 just returning.
2413
2414 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
2415 considered a SIGNAL mask (i.e., requiring an immediate
2416 abort of processing to restart). FLAG_RESTART just means
2417 that we want to restart once pass 1 is complete.
2418
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +00002419Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2420
2421 * Change the progress function to return an integer; if returns 1,
2422 then the progress function is expected to have set the
2423 e2fsck context flag signalling a user abort, and the
2424 caller should also initiate a user abort.
2425
Theodore Ts'o63c49691998-02-20 05:24:59 +00002426Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2427
2428 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
2429 end_problem_latch() unless there was actually a problem
2430 latched. Simplifies semantics of the latch processing.
2431
Theodore Ts'o43139321998-02-16 22:34:46 +00002432Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2433
2434 * e2fsck.h: Add new field, priv_data to the e2fsck context
2435 structure. It should be used by callers of the e2fsck
2436 functions only, and not by anything in e2fsck itself.
2437
2438Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2439
2440 * super.c: Instead of call ext2fs_get_device_size(), define and call
2441 e2fsck_get_device_size(). (This function may be stubbed
2442 out in special versions of e2fsck.)
2443
2444 * pass3.c, pass4.c: Remove extra calls to the progress function
2445 that weren't needed.
2446
2447 * mke2fs.8.in: Update man page to note that the format of the bad
2448 block file is the same as the one generated by badblocks.
2449
Theodore Ts'o54be2cc1998-02-01 12:58:48 +00002450Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2451
2452 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
2453
2454 * e2fsck.h: Include <time.h> since it is needed
2455
2456 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
2457 processing.
2458
Theodore Ts'o24dd4021998-02-01 00:16:40 +00002459Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2460
2461 * unix.c (main): In the case where the filesystem revision is too
2462 high, print the message about the superblock possibly
2463 being corrupt.
2464
2465 * e2fsck.8.in: Add expanded comments about how the -b option
2466 works.
2467
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +00002468Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2469
2470 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
2471 the ext2-specific header files are in a flat directory.
2472
2473 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
2474 super.c, swapfs.c, unix.c: Explicitly cast all assignments
2475 from void * to be compatible with C++.
2476
2477Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2478
2479 * unix.c (sync_disk): Remove sync_disk and calls to that function,
2480 since ext2fs_close() now takes care of this.
2481
2482Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2483
2484 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
2485 ehandler.c, unix.c: Change use of private to be priv_data,
2486 to avoid C++ reserved name clash.
2487
Theodore Ts'o5be8dc21997-12-01 18:24:10 +00002488Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2489
2490 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
2491 of e2fsck_get_num_dirs, which has been removed.
2492
2493Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2494
2495 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
2496 to compile and install flushb.
2497
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +00002498Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2499
2500 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
2501 to make sure the extra i_blocks in a device are cleared if
2502 the immutable flag is set.
2503
2504 * util.c (print_resource_track): Fix typo which caused the
2505 time/resource tracking to print "Pass 1 :" instead of
2506 "Pass 1: ".
2507
Theodore Ts'ob8647fa1997-11-20 21:52:43 +00002508Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2509
2510 * pass3.c (expand_directory): Fix bug which could cause core dump
2511 when expanding the directory, and the bitmaps hadn't yet
2512 been read in. Also, only use ext2fs_write_dir_block when
2513 writing a directory block, not when writing out a fresh
2514 indirect block.
2515
Theodore Ts'o8039c481997-11-19 21:39:13 +00002516Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2517
2518 * pass1.c (process_bad_block): Fix bug where first_block wasn't
2519 getting incremented, which caused user to get a
2520 "Programming error?" warning if there was a bad block in a
2521 non-primary superblock/group_descriptor. Also fixed
2522 another bug so that ext2fs_bg_has_super() is consulted, to
2523 avoid problems when using a filesystem with the
2524 sparse_groups option set and there are bad blocks at the
2525 beginning of a group which doesn't have a superblock.
2526
Theodore Ts'of8188ff1997-11-14 05:23:04 +00002527Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2528
2529 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
2530 progress indicator function.
2531
2532 * pass1.c (scan_callback): Add call to the progress feedback
2533 function (if it exists).
2534
2535Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2536
2537 * super.c (check_super_block): Skip the device size check if the
2538 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
2539
2540 * iscan.c (main): Don't use fatal_error() anymore.
2541
2542 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
2543 calling fatal_error(0).
2544
2545 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
2546 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
2547
2548 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
2549
2550 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
2551
2552 * problemP.h: New file which separates out the private fix_problem
2553 data structures.
2554
2555 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
2556 swapfs.c util.c: allocate_memory() now takes a e2fsck
2557 context as its first argument, and rename it to be
2558 e2fsck_allocate_memory().
2559
Theodore Ts'o08b21301997-11-03 19:42:40 +00002560Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2561
Theodore Ts'o68227541997-11-04 04:25:22 +00002562 * unix.c (main): Add a special case check for the error code EROFS
2563 and display an appropriate error message for this case.
2564
Theodore Ts'o08b21301997-11-03 19:42:40 +00002565 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
2566 to take the e2fsck context as their first argument.
2567 Change dir_info.c routines to take an e2fsck_context,
2568 renamed them to start with e2fsck_ to avoid namespace
2569 issues, and changed them to store the directory
2570 information inside the e2fsck context.
2571 Added e2fsck_run() which calls all of the e2fsck passes in
2572 the correct order, and which handles the return of abort
2573 codes. Added abort processing, both via setjmp/longjmp
2574 and via flags in the e2fsck context. Use a flag in the
2575 e2fsck context instead of the restart_e2fsck global
2576 variable. Change uses of free and malloc to
2577 ext2fs_free_mem and ext2fs_get_mem.
2578
Theodore Ts'o291c9041997-10-31 06:17:08 +00002579Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2580
2581 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
2582 consistency.
2583
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00002584Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2585
2586 * pass3.c (get_lost_and_found): Check error return of
2587 EXT2_FILE_NOT_FOUND instead of ENOTDIR
2588
2589 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
2590 instead of ENOTDIR
2591
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002592Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2593
Theodore Ts'o519149f1997-10-25 03:49:49 +00002594 * unix.c (PRS): Make the variable which getopt returns into be
2595 an int, so that it won't lose on platforms where char is
2596 unsigned.
2597
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002598 * pass1b.c (clone_file): Fix bug in error reporting in the case
2599 where cs.errcode is non-zero.
2600
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002601Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2602
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00002603 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
2604 RESOURCE_TRACK around code which uses init_resource_track
2605 and print_resource_track. (Not all systems have timeval)
2606
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002607 * super.c: Remove excess #includes which are not necessary.
2608
2609 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
2610
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00002611Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2612
2613 * pass*.c, super.c: Massive changes to avoid using printf and
2614 com_err routines. All diagnostic messages are now routed
2615 through the fix_problem interface.
2616
2617Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2618
2619 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
2620 entries.
2621
2622 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
2623 PR_2_DUP_DOT_DOT.
2624
2625Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2626
2627 * problem.c: Added new problem codes for some of the
2628 superblock corruption checks, and for the pass header
2629 messages. ("Pass 1: xxxxx")
2630
2631 * util.c (print_resource_track): Now takes a description
2632 argument.
2633
2634Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2635
2636 * super.c, unix.c, e2fsck.c: New files to separate out the
2637 operating-specific operations out from e2fsck.c.
2638 e2fsck.c now contains the global e2fsck context management
2639 routines, and super.c contains the "pass 0" initial
2640 validation of the superblock and global block group
2641 descriptors.
2642
2643 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
2644 (nearly) all global variables and moved them to the e2fsck
2645 context structure.
2646
2647 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
2648 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
2649 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
2650
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00002651Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2652
2653 * message.c: Add compression for the word "Illegal"
2654
2655 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
2656 PR_2_BAD_BLOCK_DEV
2657
2658Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2659
2660 * pass1.c (pass1, check_device_inode), pass2.c
2661 (process_bad_inode): Use a more stringent test for a valid
2662 device.
2663
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00002664Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2665
2666 * e2fsck.c (check_mount): Add stronger warning message about the
2667 perils of running e2fsck on a mounted filesystem.
2668
Theodore Ts'o024996c1997-06-17 05:38:35 +00002669Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2670
2671 * Release of E2fsprogs 1.11
2672
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00002673Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2674
2675 * pass1.c (mark_table_blocks): Mark the superblock and group
2676 descriptor blocks first, so that any conflicts between
2677 these and the bitmap or inode table blocks is noticed.
2678
2679 * problem.c: Fix message printed out when a block or inode bitmap
2680 conflicts with other fs data, has the correct group number
2681 in it.
2682
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00002683Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2684
2685 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
2686
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002687Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2688
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00002689 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
2690 Hawes (whawes@star.net).
2691
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002692 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
2693 bad blocks command so that all of the filesystem gets
2694 tested in the case where the blocksize 2048 or 4096.
2695
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00002696Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
2697
2698 * Release of E2fsprogs version 1.10
2699
2700Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2701
2702 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
2703 where ext2fs_get_next_inode returns the
2704 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
2705
2706Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2707
2708 * Release of E2fsprogs version 1.09
2709
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00002710Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2711
2712 * Release of E2fsprogs version 1.08
2713
Theodore Ts'o521e3681997-04-29 17:48:10 +00002714Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2715
2716 * pass1b.c (clone_file_block): If we clone a directory, we need to
2717 update the dblist entry so that we check (and correct) the
2718 right directory block.
2719
2720Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2721
2722 * pass1.c (process_block): Don't clear blocks references to
2723 filesystem metadata; let pass 1B handle this case.
2724
2725 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
2726
2727 * pass1b.c (pass1d): Deal with a block which is shared with
2728 filesystem metadata.
2729
2730 * e2fsck.h: Make block_illegal_map be a global variable
2731
2732Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2733
2734 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
2735 feature.
2736 (get_backup_sb): New function which attempts to obtain the
2737 correct backup superblock (if possible).
2738
2739Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2740
2741 * e2fsck.c (main): Check the version of the library, and warn if
2742 the library is out of date; this happens generally due to
2743 users who manually install e2fsprogs.
2744
2745 * pass1.c (pass1_get_blocks): If the passed in inode number for
2746 get_blocks isn't what we're expecting pass back
2747 EXT2_ET_CALLBACK_NOT_HANDLED.
2748
Theodore Ts'o21c84b71997-04-29 16:15:03 +00002749Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
2750
2751 * Release of E2fsprogs version 1.07
2752
2753Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2754
2755 * icount.c: New file which implements an inode count abstraction.
2756 This significantly reduces amount of memory needed to
2757 check really large filesystems.
2758
2759 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
2760 abstraction.
2761
2762Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2763
2764 * dirinfo.c (dir_info_iter): New function which allows iteration
2765 over the directories in the dir_info map.
2766
2767 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
2768 over all directories in the dir_info structure, instead of
2769 iterating all inodes looking for directories, and then
2770 looking up the directories using get_dir_info().
2771
2772Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2773
2774 * pass1.c (pass1, process_block):
2775 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
2776 manual code to manage the directory block list information.
2777
2778 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
2779 (deallocate_inode): Call the ext2 library routine
2780 ext2_inode_has_valid_blocks() instead of
2781 inode_has_valid_blocks().
2782
2783 * swapfs.c (swap_inodes): Add check so that we don't try to call
2784 swap_inode_blocks unless the inode has valid blocks.
2785 (Otherwise a long fast symlink might cause
2786 swap_inode_blocks to erroneously get called.)
2787
2788Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2789
2790 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
2791 PR_2_DOT_DOT_NULL_TERM.
2792
2793 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
2794 .. entries are null-terminated, since the 2.0 kernel
2795 requires this (for no good reason).
2796
2797Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2798
2799 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
2800 that we can recover from missing inode tables.
2801
2802 * dirinfo.c (get_dir_info): If there are no directories in the
2803 dir_info abstraction, don't core dump (because dir_info is
2804 NULL).
2805
2806 * e2fsck.c (main): Don't try using the backup superblocks if there
2807 aren't any.
2808 (check_super_block): If there are illegal inode table or
2809 bitmaps, set the filesystem as being in error.
2810
2811Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2812
2813 * pass2.c (check_dir_block): Added check to make sure that rec_len
2814 is a a multiple of 4 (so that the directory entries are
2815 4-byte aligned).
2816
2817Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2818
2819 * Makefile.in (uninstall): Uninstall all programs in the PROGS
2820 line.
2821 (PROGS): Don't build and install the extend program by
2822 default.
2823
2824
2825Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2826
2827 * pass1.c (process_inodes): Make sure the stashed_ino variable is
2828 saved and restored as well.
2829 (pass1): For fast sym links, skip the check_blocks
2830 processing step altogether.
2831
2832Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2833
2834 * problem.c, message.c: New files, to completely refurbish how
2835 filesystem problems are reported to the user. The
2836 diagnostic messages are now encoded out in an easily
2837 customizable, extensible format. The messages printed out
2838 in preen mode are all on one line, and contain the device
2839 name.
2840
2841Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2842
2843 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
2844 deleted files.
2845
2846 * pass1.c (pass1): Ignore missing inode table errors during the
2847 scan, and just skip past those inodes.
2848
2849 * pass3.c (check_root): Remove root_ino argument, and assume that
2850 the root inode must be EXT2_ROOT_INO. Move responsibility
2851 of setting the parent of the root inode in the directory
2852 inode structure to pass2().
2853
2854 * pass2.c (check_dir_block): Don't allow links to the root
2855 directory.
2856
2857 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
2858 since the inode is no longer used.
2859
2860Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2861
2862 * e2fsck.c (main): If the superblock magic number is wrong, or the
2863 block group fails a sanity check, then automatically
2864 restart trying to use the backup superblocks.
2865
2866 * pass1.c (mark_table_blocks): Make the inode tables ahead of
2867 everything else; in the case where a bitmap block overlays
2868 the inode table, the inode table should take precedence.
2869
2870 * pass2.c (maybe_clear_entry): Make the deleted/unused error
2871 message fit on one line, since the error can happen during
2872 a preen pass. (We eventually need to revamp the whole
2873 e2fsck error reporting and prompting system, but that's a
2874 job for another day.)
2875
2876Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2877
2878 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
2879 for the benefit of the inode scan functions.
2880
2881 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
2882 indicating that an inode is in a bad block, mark that
2883 inode as being used, as well as in the inode "bb" map.
2884
2885 * pass2.c (maybe_clear_entry): New function which generalizes the
2886 error cases when a directory entry needs to be cleared.
2887 (check_dir_block): If an inode is in the "bb" map, offer
2888 to clear the directory entry, since the inode is in a bad
2889 block.
2890
2891 * pass4.c (pass4): If an inode is marked as used, but is is marked
2892 in the "bb" map, don't process it as a disconnected inode.
2893
2894Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2895
2896 * Release of E2fsprogs version 1.06
2897
Theodore Ts'o5c576471997-04-29 15:29:49 +00002898Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2899
2900 * e2fsck.c (main): Print out the version number of the shared
2901 library when using the -V option.
2902
2903 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
2904 consistency's sake.
2905
2906 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
2907 out the backup superblocks when we know we have a valid
2908 filesystem.
2909
2910Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2911
2912 * util.c (preenhalt): Make it explicit on preenhalt that running
2913 e2fsck manually means without the -a or -p flag.
2914
2915Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2916
2917 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
2918 (Linux/FT actually sets the mode bits, so we have to
2919 handle it specially.)
2920
2921 * e2fsck.c (check_if_skip): Print a message if the filesystem is
2922 just dirty, so that the user knows that it's about to be
2923 checked (since this will take a while).
2924
2925Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2926
2927 * pass4.c: If a disconnected inode is zero-length, prompt to
2928 delete it instead of connecting it to lost+found.
2929
2930Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2931
2932 * Release of E2fsprogs version 1.05
2933
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00002934Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2935
2936 * pass4.c (pass4): If the user refuses to connect an unattached
2937 inode to lost+found, don't try to set i_links_count. This
2938 is bad, since if the user says yes, the inode will be
2939 marked as unused, which is not necessarily the right
2940 thing, especially since the rest of the cleanup doesn't
2941 happen here.
2942
2943 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
2944 dellocating an inode. (Not strictly necessary, but...)
2945
2946 * pass4.c (pass4): Add "bonehead" explanation to the "programming
2947 error" message.
2948
2949Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2950
2951 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
2952 byte-swap the filesystem so that it is normalized. -S
2953 will byte-swap the filesystem regardless of its current
2954 byte-order.
2955
2956 * swapfs.c: New file, which will byte-swap a filesystem.
2957
2958Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2959
2960 * pass1.c (pass1): Change handling on files with non-zero dtime
2961 and non-zero i_link_count; before we treated them as
2962 deleted file per botched ext2 0.3c kernel behavior. We
2963 now clear dtime instead.
2964
2965Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2966
2967 * e2fsck.c (main): If e2fsck sets the clean bit, even if
2968 nothing else is changed, make sure FSCK_NONDESTRUCT is
2969 set (since after all having the filesystem set to
2970 invalid is an error. :-)
2971
2972Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2973
2974 * pass1.c (process_block): Make sure that meta data doesn't get
2975 accidentally set in the dir_blocks array (which could
2976 happen in some error condtions).
2977
2978 * pass1.c (pass1):
2979 * pass2.c (process_bad_inode): Check for fragments in a
2980 OS-independent fashion.
2981
2982Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2983
2984 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
2985 cleanup for the filesystem.
2986
2987Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2988
2989 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
2990
Theodore Ts'o62c06f71997-04-29 14:34:47 +00002991Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2992
2993 * Release of E2fsprogs version 1.04
2994
2995Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2996
2997 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
2998 try "e2fsck -b 8193" before allowing e2fsck to relocate
2999 inode table blocks.
3000
3001 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
3002 depending on the option to configure. Added targets for
3003 e2fsck.static and e2fsck.shared for people who want to
3004 build a static or shared variant manually.
3005
Theodore Ts'o7f88b041997-04-26 14:48:50 +00003006Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
3007
3008 * Release of E2fsprogs version 1.03
3009
3010Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
3011
3012 * e2fsck.c (show_stats): Don't use floating point to display
3013 percentage of non-contiguous files, as different libc
3014 handle result truncation differently, and this causes the
3015 test suite to bomb out depending on which libc you are
3016 using.
3017
3018 * util.c (allocate_memory): Fix error message to omit extraneous
3019 %%s.
3020
3021Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
3022
3023 * pass4.c (pass4):
3024 * pass2.c (check_dir_block):
3025 * pass1.c (pass1): Add support for dynamic first inode revision.
3026
3027Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
3028
3029 * pass3.c (check_root): Fix spelling typo
3030
3031Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
3032
3033 * e2fsck.c (check_super_block): If the superblock fails certain
3034 internal consistency checks, exit with a fatal error after
3035 printing the "superblock is corrupt message".
3036
Theodore Ts'o74becf31997-04-26 14:37:06 +00003037Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
3038
3039 * Release of E2fsprogs version 1.02
3040
3041Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
3042
3043 * pass1.c (process_block): Check to see if a file is "fragmented".
3044 i.e., non-contiguous. Note that any file which is larger
3045 than the block group is guaranteed to be non-contiguous.
3046 We may want to use a different hueristic for deciding
3047 whether or not a file is "fragmented".
3048
3049 * e2fsck.c (show_stats): Print statistics of how many
3050 non-contiguous files are on the system.
3051
3052Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
3053
3054 * badblocks.c (read_bad_blocks_file, test_disk): Fold
3055 functionality of test_disk() (which runs badblocks) into
3056 read_bad_blocks_file(); test_disk() now calls
3057 read_bad_blocks_file() with a NULL bad_blocks_file
3058 argument.
3059
3060Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
3061
3062 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
3063 #if defined(linux). The latter won't work if we're
3064 compiling -ansi.
3065
Theodore Ts'o297f47a1997-04-26 14:25:20 +00003066Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
3067
3068 * e2fsck.c (check_mount): For Linux systems, the check to see if
3069 the root is mounted read-only has to be done for all
3070 filesystems, not just for the root filesystem, due to the
3071 way that some /etc/rc scripts are set up.
3072
Theodore Ts'o50e1e101997-04-26 13:58:21 +00003073Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
3074
3075 * Makefile.in (install): Strip programs when they are installed.
3076 (e2fsck): Build e2fsck statically.
3077
3078Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
3079
3080 * util.c (preenhalt): Preenhalt now takes an argument, which is an
3081 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
3082 flag in the superblock in cases where preenhalt is called.
3083 All calls to preenhalt() were changed to either
3084 preenhalt(fs) or preenhalt(NULL) in a few cases where the
3085 fs pointer was not available. (Most notable, for block
3086 read/write errors.)
3087
3088Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
3089
3090 * ehandler.c:
3091 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
3092
3093Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
3094
3095 * e2fsck.c (show_stats): Show statistics about how many inodes
3096 have indirect, doubly indirect, and triply indirect
3097 blocks. Allow up to 8 digits for statistics, instead of
3098 merely 6, so things look pretty for large filesystems.
3099
3100 * pass1.c (pass1): Keep statistics about indirect, doubly
3101 indirect, and triply indirect blocks.
3102
3103 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
3104 pass 1.
3105
3106Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
3107
3108 * util.c, ehandler.c: Move #include of <sys/resource.h> after
3109 #include of "e2fsck.h", since sys/resource.h may depend on
3110 sys/time.h, which is #included in e2fsck.h.
3111
3112Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
3113
3114 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
3115 function to determine if the device is mounted.
3116
3117 * e2fsck.c (main): Add better error messages if ext2fs_open()
3118 fails.
3119
3120Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
3121
3122 * pass1.c (check_blocks): If we're clearing a directory, clear
3123 pb.is_dir so we don't do the following check of making
3124 sure the directory size matches; this is pointless, since
3125 we've already cleared the inode.
3126
3127Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3128
3129 * pass1.c (bad_primary_block): New function, called by
3130 process_bad_block, which explains the facts of life to the
3131 user when a block in the primary superblock or primary
3132 group descriptors is bad.
3133
3134 * pass2.c (check_dot): Handle the case where the first directory
3135 entry is used, but not ".".
3136
3137 * pass2.c (check_dotdot): Handle the case where the second directory
3138 entry is used, but is not "..".
3139
3140Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3141
3142 * e2fsck.c (check_super_block): Get the size of the physical
3143 device and if it is smaller than the reported size of the
3144 filesystem, report an error.
3145
3146Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
3147
3148 * e2fsck.c (check_if_skip): Print the number of allocated files and
3149 blocks on clean filesystems.
3150
3151Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
3152
3153 * e2fsck.8: Updated date and version number.
3154
3155Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
3156
3157 * pass1.c (check_blocks): Check that directory size matches *exactly*
3158 the count of allocated blocks.
3159
3160Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
3161
3162 * pass1b.c (pass1d): Free the shared[] array when we're done with
3163 it to avoid a memory leak.
3164
3165 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
3166 block_dup_map.
3167
3168 * pass2.c (process_bad_inode): When clearing the inode, make sure
3169 the pathname is freed, to prevent a memory leak.
3170
3171 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
3172 when we're finished with them.
3173 (check_block_bitmaps): Free free_array when we're finished
3174 with them.
3175
3176 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
3177 linking the executable.
3178
3179 * pass2.c (process_bad_inode): Even on OS's that don't support the
3180 fragment fields, make sure the Linux equivalent fields are
3181 set to zero. If an OS wants to reuse these fields, which
3182 is probably a bad idea (although we may get desperate in
3183 the future) this code will have to be changed.
3184
3185 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
3186 on the inode field, and then blockcnt field. This is just
3187 to keep the ordering of dir_blocks the same on all
3188 platforms when there are more than on missing directory
3189 blocks, which are indicated directories with holes, which
3190 are indicated with the block number being set to zero.
3191
3192Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3193
3194 * pass1.c (check_blocks, process_block): check_blocks() modified
3195 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
3196 the inode is a directory. process_block() now checks to
3197 see if a directory has a "hole", or missing block. If so,
3198 this fact is recorded in the directory block list so that
3199 the problem can be resolved in pass #2.
3200
3201 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
3202 allocate new blocks for directories with "holes". Called
3203 out of check_dir_block if a block in the directory block
3204 list is zero.
3205
3206 * pass3.c (get_lost_and_found): Move location of free(block) to
3207 prevent possible memory leak.
3208
3209Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3210
3211 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
3212 instead of alloca() --- alloca is not portable! Check to
3213 make sure the filename is not longer than EXT2_NAME_LEN,
3214 and offer to fix it by truncating it, since it should
3215 never happen.
3216
3217 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
3218 not portable!! In any case putenv() in some systems must
3219 take a static character array or malloc()'ed memory;
3220 passing memory allocated using alloca() to putenv() is not
3221 advisable.
3222
3223 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
3224 alloca() --- alloca() is not portable!!!
3225
3226Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
3227
3228 * pass1b.c (pass1c):
3229 * pass3.c (check_root, get_lost_and_found):
3230 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
3231 to read/write the directory block.
3232
3233Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
3234
3235 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
3236 make sure VMIN and VTIME are set correct.
3237
3238Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
3239
3240 * pass1.c (mark_block_used): Change to be an inline function.
3241 Assume that the block validity checks are already done,
3242 and use the fast variant of the bitmap functions.
3243
3244Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
3245
3246 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
3247 bounds of the bitmaps in advance, and then use the fast
3248 variant of e2fs_test_{block,inode}_bitmap.
3249
3250 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
3251 the bounds checking has already been done earlier.
3252
3253Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
3254
3255 * pass1.c (pass1): Allocate and free the block_illegal_map, which
3256 is used for shortcut processing in process_block.
3257 (mark_table_blocks): Initialize block_illegal_map with the
3258 filesystem blocks.
3259 (describe_illegal_block): New helper function that
3260 describes why a block is illegal.
3261 (process_block): Use block_illegal_map as a shortcut
3262 to determine whether a block is bad. Use
3263 describe_illegal_block to print out why the block is illegal.
3264
3265Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
3266
3267 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
3268
3269 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
3270 <mntent.h> if they don't exist. (Mostly so that "make
3271 depend" works.)
3272
3273 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
3274 it exists).
3275
3276 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
3277 exist.
3278
3279Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3280
3281 * pass2.c (process_bad_inode, check_for_zero_long,
3282 check_for_zero_char): Change long to u32, and char to u8.
3283
3284Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3285
3286 * util.c (inode_has_valid_blocks):
3287 * pass2.c (process_bad_inode):
3288 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
3289 LINUX_S_IS* instead of S_IS*.
3290
3291 * e2fsck.h: Don't #include <sys/stat.h>
3292
3293 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
3294 this program is pretty much useless if BLKFLSBUF isn't
3295 supported.)
3296
3297 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
3298 used.
3299
3300Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
3301
3302 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
3303 to allocate space for file names instead of using fixed size buffers.
3304 (process_bad_inode): Only check inode frag fields if
3305 HAVE_EXT2_FRAGS is defined (by configure).
3306 * pass1.c (pass1): Only check the inode frag fields if
3307 HAVE_EXT2_FRAGS is defined (by configure).
3308
3309 * e2fsck.c (check_mount): Only check for a mounted filesystem if
3310 HAVE_MNTENT_H is defined (by configure).
3311 (PRS): Use alloca to allocate the new path string, instead of
3312 having a fixed size buffer (which was the wrong size anyway).
3313 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
3314 is defined.
3315
3316 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
3317 defined (by configure).
3318
3319 * Makefile.in: Rewritten to conform to GNU coding standards and
3320 support separate compilation directories.
3321
3322Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
3323
3324 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
3325
Theodore Ts'of3db3561997-04-26 13:34:30 +00003326Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
3327
3328 * pass1.c (unwind_pass1): Clear the file type statistics counter
3329 when pass 1 needs to be restarted from scratch.
3330
3331 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
3332 being reallocated to blocks in the next block group,
3333 instead of the current block grup.
3334
3335 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
3336 inode.i_links_count is set.
3337
3338Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
3339
3340 * pass1.c (process_block): Add checks for if the block is
3341 trepassing on a superblock or group descriptor table.
3342
3343Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
3344
3345 * main.c (corrupt_msg): Extend the message which is printed out
3346 when the superblock is corrupt, to include the suggestion
3347 of using the -b option to specify an alternate superblock.
3348
3349Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
3350
3351 * badblocks.c (read_bad_blocks_file): If we are adding or
3352 replacing bad blocks in the bad blocks inode, sanity check
3353 the bad block inode first, and clear out any illegal blocks.
3354
3355 * pass2.c (check_name): Don't bomb out if the attempt to get the
3356 pathname of the containing directory returns an error; the
3357 directory may be too badly damaged to expect that
3358 ext2fs_get_pathname will always succeed. Use "???" if the
3359 pathname can't be obtained (it's only for a printf to the
3360 user anyway).
3361
3362 The name of the containing directory and the bad filename
3363 were incorrectly interchanged in the user message. Fixed.
3364
3365 * pass2.c (check_name, check_dir_block): Use a common static
3366 string for the unknown pathname.
3367
3368Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
3369
3370 * Fixed lots of printf formats to make sure that block and inode
3371 numbers are printed as unsigned integers.
3372
3373Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
3374
3375 * pass5.c (check_block_end): Fix calculation of how the last block
3376 in the block bitmap should be calculated.
3377
3378Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
3379
3380 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
3381 be an ext2fs_inode_bitmap, and free it properly.
3382
3383 * e2fsck.h
3384 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
3385 level to the superblock.
3386
3387Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
3388
3389 * e2fsck.c (usage): Fixed bogus usage message.
3390
3391Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
3392
3393 * pass1.c (process_bad_block): Fixed bug so that blocks in the
3394 backup superblocks and group descriptors are handled gracefully.
3395