blob: 280860e6a02fc5660ca1d8fe26f008880fdeb2eb [file] [log] [blame]
Theodore Ts'odd607052004-04-03 13:53:46 -050012004-04-03 Theodore Ts'o <tytso@mit.edu>
2
3 * Makefile.in: Update the modtime even if subst doesn't need to
4 update the e2fsck man page, to avoid always re-running
5 subst, especially since there are no dependencies on the
6 man page.
7
Theodore Ts'ob70b1162004-02-28 10:52:35 -050082004-02-28 Theodore Ts'o <tytso@mit.edu>
9
10 * Release of E2fsprogs 1.35
11
Theodore Ts'o4fb9d522004-02-24 00:16:09 -0500122004-02-24 Theodore Ts'o <tytso@mit.edu>
13
14 * unix.c (main, PRS), e2fsck.8.in: Add a new -k option which keeps
15 the existing badblocks list when using the -c option.
16 (Addresses Debian bug #229103)
17
Theodore Ts'oed52f622004-02-23 21:26:23 -0500182004-02-23 Theodore Ts'o <tytso@mit.edu>
19
20 * Makefile.in (PROFILED_LIBS, PROFILED_DEPLIBS): Fix reference to
21 libblkid so that the build will work with --enable-profile
22 (Addresses Sourceforge bug #811408)
23
Theodore Ts'obbbc92f2004-02-21 20:53:03 -0500242004-02-14 Theodore Ts'o <tytso@mit.edu>
25
26 * e2fsck.c (e2fsck_run): Clear the SETJMP_OK flag when returning
27 so we don't double longjump into an invalid stack frame.
28 (Thanks to Matthias Andree for providing this fix.)
29
Theodore Ts'o489f0022004-01-31 21:24:51 -0500302004-01-31 Theodore Ts'o <tytso@mit.edu>
31
32 * problem.c (fix_problem): Don't call print_e2fsck_message if the
33 message is empty; otherwise, the NLS substitution will
34 print the .po header, which is Just Wrong.
35
Theodore Ts'o1ba7a2f2004-01-30 01:48:06 -0500362004-01-30 Theodore Ts'o <tytso@mit.edu>
37
38 * pass2.c (deallocate_inode_block): Check to make sure the block
39 number is invalid before deallocating it, to avoid core
40 dumping e2fsck.
41
Theodore Ts'o2e5fcce2003-12-12 03:00:56 -0500422003-12-12 Theodore Ts'o <tytso@mit.edu>
43
44 * pass3.c (check_directory): When reconnecting a directory, we may
45 need to create a lost+found directory. This may
46 invalidate our pointer to the directory information, so we
47 must look it up again after calling
48 e2fsck_reconnect_file(). (Addresses Debian bug #219640).
49
Theodore Ts'o6c7d61d2003-12-11 01:00:21 -0500502003-12-10 Theodore Ts'o <tytso@mit.edu>
51
52 * e2fsck.h (E2F_FLAG_RESTARTED): Assign a unique flag bitfield to
53 E2F_FLAG_RESTARTED. This fixes a bug where if the user
54 specifies an alternate superblock, and the journal needs
55 to be replayed, e2fsck would erroneously assume that
56 journal had been run already without clearing the
57 NEEDS_RECOVERY flag, and bomb out with an error.
58
Theodore Ts'o3de085d2003-12-07 01:00:02 -0500592003-12-07 Theodore Ts'o <tytso@mit.edu>
60
Theodore Ts'o54434922003-12-07 01:28:50 -050061 * badblocks.c, dict.c, ea_refcount.c, ehandler.c, journal.c,
62 pass1.c, pass1b.c, pass2.c, pass3.c, pass5.c, problem.c,
63 rehash.c, super.c, swapfs.c, unix.c, util.c, e2fsck.h: Fix
64 gcc -Wall nitpicks.
65
Theodore Ts'o3de085d2003-12-07 01:00:02 -050066 * recovery.c, jfs_user.h: Sync recovery.c with latest 2.5 kernel
67 version.
68
Theodore Ts'o3ddf2f62003-12-02 07:56:42 -0500692003-12-02 Theodore Ts'o <tytso@mit.edu>
70
71 * unix.c (main): When testing a disk using e2fsck -c, use the list
72 of new bad blocks to replace the current list of bad
73 blocks. This way "e2fsck -c" can be used to recover from
74 a corrupted bad block inode.
75
76 * badblocks.c (test_disk): Remove the test_disk() file; e2fsck
77 will just call read_bad_blocks_file() directly with the
78 file parameter set to NULL.
79
Theodore Ts'o015b03d2003-11-21 11:02:22 -0500802003-09-14 Theodore Ts'o <tytso@mit.edu>
81
82 * unix.c (is_on_batt, check_if_skip): If running on battery, then
83 give an extra grace period before actually forcing a
84 check. That way the laptop will be biased to waiting
85 until we are on AC power before doing the filesystem
86 check. (Addresses Debian bug #205177)
87
Theodore Ts'o000ba402003-11-21 10:41:58 -0500882003-09-13 Theodore Ts'o <tytso@mit.edu>
89
Theodore Ts'o6de289c2003-11-21 10:54:54 -050090 * unix.c (check_if_skip): If the number of mounts until the next
91 forced filesystem check is 5 or less, mention this to the
92 user. (Addresses Debian bug #157194)
93
Theodore Ts'o000ba402003-11-21 10:41:58 -050094 * pass1.c (e2fsck_pass1), problem.h (PR_1_BB_FS_BLOCK),
95 problem.c (PR_1_BB_FS_BLOCK, PR_1_BBINODE_BAD_METABLOCK_PROMPT):
96 Fix up the handling of corrupted indirect blocks in the
97 bad block. We now correctly handle the case where there
98 is an overlap between a block group descriptor or
99 a superblock and a bad block indirect block. In the case
100 where the indirect block is corrupted, we now suggest
101 "e2fsck -c".
102
Theodore Ts'o817e49e2003-11-21 09:10:29 -05001032003-09-12 Theodore Ts'o <tytso@mit.edu>
104
105 * unix.c (PRS): Check the returned name from blkid_get_devname and
106 print an error if the requested LABEL/UUID does not exist.
107
Theodore Ts'oef344e12003-11-21 09:02:21 -05001082003-09-03 Theodore Ts'o <tytso@mit.edu>
109
110 * pass1.c (mark_table_blocks): Use the new function
111 ext2fs_reserve_super_and_bgd to calculate the blocks to be
112 reserved.
113
Theodore Ts'oa7ac1df2003-08-24 17:56:41 -04001142003-08-24 Theodore Ts'o <tytso@mit.edu>
115
Theodore Ts'o557ddb22003-08-24 21:36:38 -0400116 * util.c (get_backup_sb): Check to make sure the context is passed
117 in non-NULL before trying to dereference it. Otherwise we
118 might core dump when called to expand %S in a problem
119 description.
120
Theodore Ts'oa7ac1df2003-08-24 17:56:41 -0400121 * e2fsck.8.in: Adjust description line so that apropos
122 "ext2" or "ext3" will find the man page. (Addresses
123 Debian Bug #206845)
124
Theodore Ts'o27479eb2003-08-21 08:59:38 -04001252003-08-21 Theodore Ts'o <tytso@mit.edu>
126
127 * journal.c (e2fsck_move_ext3_journal): When moving the journal or
128 backing up the journal inode, make sure it gets written to
129 all the superblocks.
130
Theodore Ts'oa435ec32003-08-21 00:40:26 -04001312003-08-20 Theodore Ts'o <tytso@mit.edu>
132
133 * journal.c (e2fsck_move_ext3_journal): If the superblock's backup
134 journal information is not set, copy the journal inode
135 information to the superblock.
136 (e2fsck_get_journal): If the journal inode is corrupted,
137 synthesize one from the backup information in the
138 superblock.
139
140 * problem.c, problem.h (PR_0_BACKUP_JNL): Add new problem code
141 which is used when we make a backup of the journal inode.
142
Theodore Ts'o54a31a32003-08-19 10:08:34 -04001432003-08-19 Theodore Ts'o <tytso@mit.edu>
144
145 * e2fsck.h, unix.c (PRS, e2fsck_clear_progbar,
146 e2fsck_simple_progress): Don't print the ^A and ^B
147 characters which bracket the progress bar when the e2fsck
148 program is talking directly to a tty, but only when it is
149 being piped to another program. (Addresses Debian bug
150 #204137)
151 * unix.c: Move some initialized variables to the BSS segment to
152 shrink the size of the e2fsck executable.
153
Theodore Ts'oc4e3d3f2003-08-01 09:41:07 -04001542003-08-01 Philipp Thomas <pthomas@suse.de>
155
Theodore Ts'o0c193f82003-08-01 14:26:23 -0400156 * Include inttypes.h if present. New macros INT_TO_VOIDPTR and
157 VOIDPTR_TO_INT. Use them throughout for int<->void *
158 casts to fix 64-bit warnings.
159
Theodore Ts'oc4e3d3f2003-08-01 09:41:07 -0400160 * dirinfo.c, dx_dirinfo.c, e2fsck.c, ea_refcount.c, journal.c,
161 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
162 pass5.c, super.c, swapfs.c: ext2fs_getmem(),
163 ext2fs_free_mem(), and ext2fs_resize_mem() all now take a
164 'void *' instead of a 'void **' in order to avoid pointer
165 aliasing problems with GCC 3.x.
166
Theodore Ts'o9c7ec172003-07-26 01:03:34 -04001672003-07-25 Theodore Ts'o <tytso@mit.edu>
168
169 * Release of E2fsprogs 1.34
170
Theodore Ts'o48e6e812003-07-06 00:36:48 -04001712003-07-06 Theodore Ts'o <tytso@mit.edu>
172
173 * pass2.c: Fix gcc -Wall nitpicks (missing #include <string.h>)
174
175 * dict.c, dict.h: Fix gcc -Wall nitpicks (indented cpp directives)
176
Theodore Ts'od3128cc2003-06-24 18:06:03 -04001772003-06-8 Theodore Ts'o <tytso@mit.edu>
178
179 * problem.c: Fix spelling error.
180
Theodore Ts'o113e4052003-05-17 21:00:46 -04001812003-05-17 Theodore Ts'o <tytso@mit.edu>
182
183 * unix.c (show_stats), e2fsck.h: Use ngettext (abbreivated with
184 the macro P_(str1, str2, n)) to simplify the statistics
185 reporting.
186
Theodore Ts'o2a29f132003-05-05 12:08:47 -04001872003-05-05 Theodore Ts'o <tytso@mit.edu>
188
189 * unix.c (main): If --enable-testio-debug is set, then use the
190 test_io manager so we can watch what e2fsck is doing.
191
Theodore Ts'oa04eba32003-05-03 16:35:17 -04001922003-05-03 Theodore Ts'o <tytso@mit.edu>
193
Theodore Ts'oddc32a02003-05-03 18:45:55 -0400194 * unix.c (show_stats): Remove uneeded use of _() around string
195 under #ifndef NLS
196
197 * problem.c: Mark two strings (PR_1_RELOC_TO and
198 PR_2_NON_UNIQUE_FILE) as not being printf format strings.
199 Fix typo (doubled 'is') in PR_2_FILE_ACL_BAD.
200
Theodore Ts'oa04eba32003-05-03 16:35:17 -0400201 * Makefile.in: Add $(LIBINTL) to the link line so we can support
202 using the internal gettext library.
203
204 * e2fsck.h: Add #ifndef protection around LOCALEDIR definition.
205
Theodore Ts'o6177c412003-04-27 17:34:14 -04002062003-04-27 Theodore Ts'o <tytso@mit.edu>
207
208 * message.c (expand_at_expression): Fixed NLS support for message
209 abbreviations.
210
Theodore Ts'o71df0dc2003-04-21 16:17:09 -04002112003-04-21 Theodore Ts'o <tytso@mit.edu>
212
213 * Release of E2fsprogs 1.33
214
Theodore Ts'o520ead32003-04-19 13:48:27 -04002152003-04-19 Theodore Ts'o <tytso@mit.edu>
216
217 * rehash.c: Fix lint warnings by including string.h and ctype.h
218
219 * pass2.c (dict_de_cmp): Fix lint warnings by using const pointers.
220
221 * unix.c (e2fsck_simple_progress), e2fsck.h: Fix lint warnings by
222 using const pointers. Remove unused variables.
223
Theodore Ts'o12dd69f2003-04-17 21:55:38 -04002242003-04-17 Theodore Ts'o <tytso@mit.edu>
225
226 * rehash.c (name_cmp): Sort the deleted inodes to the end of the
227 list, for portability to systems that whose qsort does not
228 perform a stable sort.
229
Theodore Ts'obc34d6b2003-04-16 14:05:06 -04002302003-04-16 Theodore Ts'o <tytso@mit.edu>
231
232 * unix.c: Bracket progress bar output with control-A and control-B
233 characters. These characters are used as in-band
234 signalling to allow a logging program to filter out the
235 progress bar.
Theodore Ts'o908b7852003-04-16 15:20:13 -0400236 (PRS): Use setvbuf instead of setbuf to force stdout and
237 stderr to be non-buffered when the stdout/stderr are a pipe.
Theodore Ts'o12dd69f2003-04-17 21:55:38 -0400238 This fixes a cosmetic problem when using e2fsck under
239 logsave.
Theodore Ts'o908b7852003-04-16 15:20:13 -0400240
Theodore Ts'offf45482003-04-13 00:44:19 -04002412003-04-12 Theodore Ts'o <tytso@mit.edu>
242
243 * unix.c: Add #ifdef around #include <sys/ioctl.h>
244
Theodore Ts'o2a77a782003-04-05 22:50:44 -05002452003-04-05 Theodore Ts'o <tytso@mit.edu>
246
247 * super.c (check_super_block): Update the global free block and
248 inode counters from the block group specific counters
249 quietly. This is needed for an experimental patch which
250 eliminates locking the entire filesystem when allocating
251 blocks or inodes; if the filesystem is not unmounted
252 cleanly, the global counts may not be accurate.
253
Theodore Ts'oaa75ecc2003-03-17 10:01:22 -05002542003-03-17 Theodore Ts'o <tytso@mit.edu>
255
256 * util.c: Explicitly declare e2fsck_global_ctx as extern for the
257 benefit of the Apple Darwin port.
258
Theodore Ts'o1d2eef42003-03-15 13:30:07 -05002592003-03-15 Theodore Ts'o <tytso@mit.edu>
260
261 * rehash.c (e2fsck_rehash_dir): If user specified the -n option,
262 skip trying to write out directory.
263 (e2fsck_rehash_directories): Fix the percentage
264 calculation in the progress bar.
265
Theodore Ts'ob0700a12003-03-14 01:43:56 -05002662003-03-14 Theodore Ts'o <tytso@mit.edu>
267
Theodore Ts'o12dd69f2003-04-17 21:55:38 -0400268 * problem.c, problem.h (PR_2_REPORT_DUP_DIRENT): Add new problem
269 code.
Theodore Ts'o09266682003-03-14 22:19:10 -0500270
271 * pass2.c (check_dir_block): Check for duplicate filenames within
272 a single directory block (because this is the easy case;
273 we don't currently check for duplicates that span
274 directory blocks, for now. Eventually for htree
275 directories we can do this by searching for all directory
276 blocks that have a hash overflow, and then searching the
277 adjacent blocks to find all other potential duplicates.)
278
Theodore Ts'oe71d8732003-03-14 02:13:48 -0500279 * iscan.c, scantest.c, unix.c: And #ifdef protection around
280 #include of malloc.h
281
Theodore Ts'ob0700a12003-03-14 01:43:56 -0500282 * rehash.c (duplicate_search_and_fix): Now search for duplicates
283 filenames, and either prompt to remove a complete
284 duplicate entry, or to rename a duplicate filename.
285 (e2fsck_rehash_dir): Use a progress bar to report
286 progress, and don't print all of the directory inodes as
287 they are optimized.
288
289 * problem.c, problem.h (PR_2_DUPLICATE_DIRENT,
290 PR_2_NON_UNIQUE_FILE): New problem codes.
291
292 * unix.c (e2fsck_simple_progress), e2fsck.h: New function which
293 can be called to provide specialized progress bars that
294 are not related to the top-level pass-based completion
295 percentage.
296
297 * pass3.c (e2fsck_adjust_inode_count), e2fsck.h: Export previously
298 static function.
299
Theodore Ts'o77be4d22003-03-06 12:39:55 -05003002003-03-06 <tytso@mit.edu>
301
302 * e2fsck.8.in: Fix minor nit in the -C option. (Addresses Debian
303 bug #173612)
304
Theodore Ts'of3640932003-03-01 19:47:44 -05003052003-03-01 Theodore Ts'o <tytso@mit.edu>
306
307 * Makefile.in, journal.c, unix.c: Use blkid functions to find the
308 journal from the UUID, and to interpret the device
309 specification.
310
311 * e2fsck.c: Free the blkid_cache when releasing the e2fsck context
312 structure.
313
314 * e2fsck.h: If strnlen is not present, define it as a macro which
315 calls e2fsck_strlen(). Add prototype for string_copy().
316 Add blkid_cache to e2fsck context, and make
317 filesystem_name, device_name, and journal_name be
318 non-const variables.
319
320 * pass1.c, pass2.c: Remove static strnlen function
321
322 * util.c (string_copy, e2fsck_strnlen): New functions
323
Theodore Ts'o19445ef2003-01-29 21:04:52 -05003242003-01-29 Theodore Ts'o <tytso@mit.edu>
325
326 * unix.c (usage): Make descripton -c be a bit more explicit
327
Theodore Ts'o4f489282003-01-22 18:28:15 -05003282003-01-22 Theodore Ts'o <tytso@mit.edu>
329
330 * pass1.c (check_blocks): Use the EXT2_I_SIZE macro.
331
Theodore Ts'ob92ae152003-01-02 16:53:54 -05003322003-01-02 Theodore Ts'o <tytso@mit.edu>
333
334 * unix.c (main): Detect if there is an attempt to run the journal
335 twice, and abort with an error if this is the case.
336 (Address IBM Bugzilla bug #1226)
337
Theodore Ts'oe34bf432002-12-18 18:28:10 -05003382002-12-18 Theodore Ts'o <tytso@mit.edu>
339
340 * pass2.c (strnlen): Provide strnlen if libc doesn't.
341
Theodore Ts'o8161a742003-01-02 16:36:44 -05003422003-11-19 Theodore Ts'o <tytso@mit.edu>
343
344 * unix.c (PRS): Print an error if more than one of the -p/-a, -n
345 or -y options are specified.
346
Theodore Ts'o54779c62002-11-13 07:00:16 -05003472002-11-12 Theodore Ts'o <tytso@mit.edu>
348
349 * problem.c: Make HTREE problems PR_PREEN_OK, so that we don't
350 abort an e2fsck after the filesystem has been mounted
351 using the 2.4 ext2 codebase.
352
Theodore Ts'o38513012002-11-09 15:00:56 -05003532002-11-09 Theodore Ts'o <tytso@mit.edu>
354
355 * Release of E2fsprogs 1.32
356
Theodore Ts'oae65b292002-11-08 20:08:48 -05003572002-11-08 Theodore Ts'o <tytso@mit.edu>
358
359 * Release of E2fsprogs 1.31
360
Theodore Ts'o299d7422002-11-08 11:10:28 -05003612002-11-08 <tytso@snap.thunk.org>
362
Theodore Ts'oc1637bd2002-11-08 15:55:17 -0500363 * unix.c (main): Fix a bug where e2fsck could erroneously mark a
364 filesystem as being valid if it was being checked and it
365 is interrupted with a ^C. (Bug introduced in e2fsprogs
366 1.28.)
367
Theodore Ts'o5e72cdb2002-11-08 15:35:13 -0500368 * unix.c (PRS), journal.c: Set the default level of journal
369 debugging to be 0, and allow the user to set the level of
370 journal debugging by using the E2FSCK_JBD_DEBUG
371 environment variable.
372
Theodore Ts'o299d7422002-11-08 11:10:28 -0500373 * pass1.c (new_table_block), super.c (check_super_block), swapfs.c
374 (swap_filesys): Clear EXT2_FLAG_MASTER_SB_ONLY to make
375 sure the backup superblocks and group descriptors are
376 updated when we make an important change to the
377 superblocks and/or group descriptors. (i.e., generating a
378 UUID, allocating filesystem metadata, or byte-swapping the
379 filesystem.)
380
Theodore Ts'oee895132002-11-07 16:16:55 -05003812002-11-07 Theodore Ts'o <tytso@mit.edu>
382
383 * e2fsck.h, unix.c (main, check_mount): Fix e2fsck so that it
384 returns the appropriate exit code, so that the boot
385 scripts will be told that they need to automatically
386 reboot.
387
Theodore Ts'obe93ef02002-10-31 18:38:55 -05003882002-10-31 Theodore Ts'o <tytso@mit.edu>
389
Theodore Ts'o5d823a42002-11-01 02:13:53 -0500390 * Release of E2fsprogs 1.30
391
3922002-10-31 Theodore Ts'o <tytso@mit.edu>
393
Theodore Ts'ob40ffd72002-10-31 19:30:24 -0500394 * unix.c (usage), e2fsck.8.in: Add the -D option to the usage and
395 command synopsis. (Addresses Debian bug #167108)
396
Theodore Ts'obe93ef02002-10-31 18:38:55 -0500397 * pass1.c (e2fsck_pass1): Check the superblock write time to see
398 whether or not we can safely do the LOW_DTIME checks.
399 (Addresses Sourceforge bug #620980)
400
Theodore Ts'o76dd5e52002-10-30 23:07:21 -05004012002-10-30 Theodore Ts'o <tytso@mit.edu>
402
Theodore Ts'o482afc42002-10-31 03:32:34 -0500403 * Makefile.in (install): Search all compression extensions when
404 deleting old man pages.
405
Theodore Ts'o76dd5e52002-10-30 23:07:21 -0500406 * pass1.c (mark_table_blocks): Fix bug in meta_bg support; only
407 mark blocks legacy group descriptor blocks up to
408 s_first_meta_bg.
409
Theodore Ts'oa49929b2002-10-20 00:58:08 -04004102002-10-20 Theodore Ts'o <tytso@valinux.com>
411
412 * pass1.c (mark_table_blocks): Add support for the meta_blockgroup
413 filesystem format.
414
Theodore Ts'o3e699062002-10-13 23:56:28 -04004152002-10-13 Theodore Ts'o <tytso@mit.edu>
416
417 * pass3.c (e2fsck_get_lost_and_found): Pass in mode 700 to
418 ext2fs_new_inode().
419
420 * unix.c (show_stats): Fix format bug if NLS is in use.
421
422 * journal.c, pass1.c, revoke.c, util.c: Fix gcc -Wall nits.
423
Theodore Ts'o64aecc42002-10-11 17:44:12 -04004242002-10-08 Theodore Ts'o <tytso@mit.edu>
425
426 * pass3.c (e2fsck_get_lost_and_found): Create the lost+found
427 directory with mode 0700.
428
Theodore Ts'o8132d842002-10-02 22:07:17 -04004292002-10-02 Theodore Y. Ts'o <tytso@mit.edu>
430
431 * pass2.c (parse_int_node, check_dir_block): Add byte-swap
432 functions around the htree code, so that it works on
433 big-endian machines.
434
435 * swapfs.c (swap_filesys): For PPC machines, byte-swap the bitmap,
436 since PPC big-endian filesystems were historically wierd.
437 This is just for the regression test, since no one
438 actually uses them anymore...
439
Theodore Ts'oad4fa462002-09-30 11:19:19 -04004402002-09-30 Theodore Ts'o <tytso@mit.edu>
441
442 * problem.c, problem.h (PR_2_HTREE_BAD_LIMIT,
443 PR_2_HTREE_BAD_COUNT, PR_2_HTREE_HASH_ORDER,
444 PR_2_HTREE_BAD_DEPTH): Add new problem codes.
445
446 * pass2.c (salvage_directory, check_dir_block): Avoid counting
447 directory entries twice during a directory salvage. Make
448 the salvaging algorithm smarter about directory entry size
449 overruns.
450 (parse_int_node): Add check to make sure the limit and
451 count fields in the node headers are sane. Also check
452 to make sure the hash table in ascending order.
453 (pass2, htree_depth): For all leaf nodes, determine their
454 depth in the tree, and make sure it matches with the depth
455 in the htree root information.
456
Theodore Ts'ofe5b72d2002-09-29 19:05:26 -04004572002-09-29 Theodore Ts'o <tytso@mit.edu>
458
Theodore Ts'oe8254bf2002-09-29 19:30:28 -0400459 * pass2.c (check_dir_block): Do a more paranoid check when trying
460 to determine whether or not a directory entry is a
461 completely empty leaf block or leaf node. Otherwise
462 e2fsck might get confused into thinking that a valid dxdir
463 was corrupted.
464
Theodore Ts'ofe5b72d2002-09-29 19:05:26 -0400465 * rehash.c (e2fsck_rehash_dir): Apply patch from Christopher Li
466 which avoids creating an empty directory entry at the end
467 of the directory block. This screws up earlier versions
468 of the indexed directory patch.
469
Theodore Ts'oe70ae992002-09-28 09:16:28 -04004702002-09-28 Theodore Ts'o <tytso@mit.edu>
471
472 * rehash.c (write_directory): Clear the index flag if by
473 reoptimizing the directory, we bring it back into a
474 non-indexed state.
475 (e2fsck_rehash_dir): Allow directories that contain two
476 blocks to be indexed. Otherwise when they grow, they
477 never will be indexed by the kernel.
478
479 * unix.c (main): Only update the master superblock; there's no
480 point updating the backup superblocks, and it speeds up
481 fsck slightly.
482
483 * pass2.c (salvage_directory): New function called by
484 check_dir_block() which is much more sophisticated about
485 how it salvages corrupted filesystems.
486
Theodore Ts'oc6633052002-09-24 01:26:50 -04004872001-09-24 Theodore Tso <tytso@mit.edu>
488
489 * Release of E2fsprogs 1.29
490
Theodore Ts'ocf3909e2002-09-06 10:14:12 -04004912002-09-06 Theodore Ts'o <tytso@mit.edu>
492
493 * rehash.c (copy_dir_entries): Fix bug which caused corrupted
494 directories if there are 4 or 8 bytes left over in a
495 directory page when optimizing/reindexing a directory.
496
Theodore Ts'o87ee8dc2002-08-31 03:02:57 -04004972001-08-31 Theodore Tso <tytso@thunk.org>
498
499 * Release of E2fsprogs 1.28
500
Theodore Ts'oceecbc72002-08-31 02:35:35 -04005012002-08-31 Theodore Ts'o <tytso@mit.edu>
502
503 * ehandler.c (e2fsck_handle_read_error): If the user asks to
504 ignore the error, offer to try forcing a write of the
505 block to the disk; sometimes this will cause the drive to
506 remap the bad block.
507
Theodore Ts'oea1959f2002-08-31 02:32:41 -04005082002-08-31 Theodore Ts'o <tytso@valinux.com>
509
510 * pass2.c (e2fsck_pass2): If this is a HTREE directory, sort the
511 dblist so that the first block of all of the directories
512 is handled first so we can read the hash version
513 information.
514 (check_dir_block): Examine the root node for correctness,
515 and offer to clear it if it is not correct. Also copy the
516 hash version to the dx_dir structure, so that the proper
517 hash function can be used for other blocks in the
518 directory.
519
520 * problem.c, problem.h (PR_2_HTREE_BAD_ROOT): Add new problem code.
521
Theodore Ts'oa3da9d12002-08-21 12:52:03 -04005222002-08-21 Theodore Ts'o <tytso@mit.edu>
523
524 * problem.c: Fix PR_1_RELOC_BLOCK_ALLOCATE message to explain that
525 it is necessary to find contiguous blocks in a particular
526 block group.
527
Theodore Ts'o0684a4f2002-08-17 10:19:44 -04005282002-08-17 Theodore Ts'o <tytso@mit.edu>
529
Theodore Ts'of044b4d2002-08-17 13:32:21 -0400530 * e2fsck.8.in: Add clarifying text describing how e2fsck works
531 with ext3 filesytems. (Addresses Debian bug #145044).
532
533 * pass1.c (handle_htree): Add support for EXT2_HASH_TEA
534
Theodore Ts'o0684a4f2002-08-17 10:19:44 -0400535 * e2fsck.h, e2fsck.c (e2fsck_allocate_context): Add new field to
536 the e2fsck context, ext_attr_ver, which specifies the EA
537 format version.
538
539 * unix.c (usage, parse_extended_opts, PRS), e2fsck.8.in: Add new
540 option -E, which allows the users to specify extended
541 options. Added ea_ver extended option.
542
543 * pass1.c (e2fsck_pass1_check_device_inode): Add ext2_filsys
544 argument to this function, so we can account for the
545 presence of extended attribute blocks attached to device
546 inodes.
547 (e2fsck_pass1_check_symlink, e2fsck_pass1): Take into
548 account the fact that symlinks can also have extended
549 attribute blocks.
550 (check_ext_attr): Don't be flexible about the EA format
551 version. Check against the version number in
552 ctx->ext_attr_ver.
553 (check_blocks): Check all inodes, so that we account for
554 extended attribute blocks belonging to special files.
555 Clean up i_size checks.
556
557 * pass1b.c (pass1b): Check all inodes, so that we account for
558 extended attribute blocks belonging to special files.
559 (delete_file_block): Use ext2fs_alloc_block_stats() to
560 update the filesystem statistics.
561 (delete_file): Attempt to decrement the extended
562 attribute refcount, and free the EA block if the count
563 hits zero.
564 (clone_file): Fixed bugs in EA handling. Don't call
565 block_iterate on inodes that don't have a valid i_block[]
566 array. Reread the base inode since it may have been
567 changed by ext2fs_block_iterate. When updating inodes as
568 part of cloning an EA block, write out the correct inode
569 structure.
570
571 * pass2.c (deallocate_inode_block, deallocate_inode): Use standard
572 ext2fs_alloc_*_stats functions to update the filesystem
573 statistics.
574 (deallocate_inode): Attempt to decrement the extended
575 attribute refcount, and free the EA block if the count
576 hits zero.
577 (e2fsck_process_bad_inode): Add extra argument to calls
578 to e2fsck_pass1_check_device_inode ().
579
580 * pass3.c (e2fsck_get_lost_and_found): Use standard
581 ext2fs_alloc_*_stats functions to update the filesystem.
582 statistics when creating /lost+found.
583 (adjust_inode_count): Remove debugging code that can never
584 be triggered.
585
586 * pass4.c (disconnect_inode): Add explanation about why we only
587 clear inodes that have no data blocks and no EA blocks.
588 Use ext2fs_inode_alloc_stats2 function to update the
589 filesystem statistics when clearing a zero-length inode.
590
591 * problem.c, problem.h (PR_1B_ADJ_EA_REFCOUNT,
592 PR_2_ADJ_EA_REFCOUNT): Add new problem codes.
593
594 * super.c (release_inode_block), (release_orphan_inodes): Use the
595 standard ext2fs_alloc_*_stats functions to update the
596 filesystem statistics.
597 (release_inode_blocks): Attempt to decrement the extended
598 attribute refcount, and free the EA block if the count
599 hits zero.
600
Theodore Ts'o838e7732002-08-01 12:37:00 -04006012002-08-01 Theodore Ts'o <tytso@mit.edu>
602
603 * dict.c, dict.h: New file from kazlib 1.20 which implements a
604 red-black tree
605
606 * pass1b.c: Massive changes to take advantage of dict.c. This
607 removes several O(n**2) algorithms from the rare case
608 where there are a large number of blocks claimed by
609 multiple inodes.
610
Theodore Ts'o542867f2002-07-24 07:42:02 -04006112002-07-24 Theodore Ts'o <tytso@mit.edu>
612
Theodore Ts'o850d05e2002-07-25 00:00:08 -0400613 * e2fsck.8.in, e2fsck.h, pass3.c (e2fsck_pass3), unix.c, rehash.c:
614 Add new option -D, which requests e2fsck to optimize all
615 directories. Rehash.c will also compress and sort
616 non-indexed directories.
617
618 * problem.c, problem.h: Rename PR_3A_REHASH_* to PR_3A_OPTIMIZE_*
619
620 * unix.c (PRS): Make sure the signal_cancel is registered without
621 SA_RESTART.
622
623 * rehash.c (e2fsck_rehash_dir, copy_dir_entries, calculate_tree):
624 Restructured code in e2fsck_rehash_dir into two new
625 subroutines to make the code more understandable/maintainable.
626 (set_root_node): Fixed bug which caused the root node to
627 be invalid on non-FILETYPE filesystems due to an
628 unitialized variable.
629 (calculate_tree): Fix bug where pointers which might get
630 invalidated if realloc() moves outdir->buf around.
631 (e2fsck_rehash_dir): Fix memory leak bug.
632
633 * pass3.c (e2fsck_get_lost_and_found), e2fsck.h, e2fsck.c:
634 Exported as a public interface a function for finding the
635 lost and found directory. Cache the location of the lost
636 and found directory in the e2fsck context structure.
637
Theodore Ts'o542867f2002-07-24 07:42:02 -0400638 * util.c (ask_yn, read_a_char): Note when the user has typed ^C,
639 and abort processing by longjmp'ing to ctx->abort_loc.
640
Theodore Ts'o3214a452002-07-23 12:00:00 -04006412002-07-23 Theodore Ts'o <tytso@mit.edu>
642
643 * pass1.c (e2fsck_pass1): If e2fsck is run with -n, don't create
644 the dirs_to_hash list, since we don't want to reindex
645 directories if the filesystem is opened read-only.
646
Theodore Ts'o4cae0452002-07-21 14:14:03 -04006472002-07-21 Theodore Ts'o <tytso@mit.edu>
648
649 * e2fsck.8.in: Document new exit code FSCK_CANCELED
650
651 * unix.c (PRS, signal_cancel): Capture SIGINT and SIGTERM signals
652 and set a flag in the e2fsck context indicating that
653 cancellation has been requested, so that e2fsck will exit
654 only at safe points.
655 (main): Change the exit handling so that if a cancellation
656 is requested, return FSCK_CANCELED (a new exit code 32).
657 e2fsck can now return more than one exit code as part of a
658 bitmask (as had been documented in the man page).
659
660 * pass2.c (e2fsck_pass2, check_dir_block), pass3.c (e2fsck_pass3),
661 pass4.c (e2fsck_pass4): Check to see if a cancellation was
662 requested, and abort processing if necessary.
663
Theodore Ts'ob7a00562002-07-20 00:28:07 -04006642002-07-19 Theodore Ts'o <tytso@mit.edu>
665
666 * rehash.c, Makefile.in: New file which rewrites directories using
667 the htree format.
668
669 * problem.c (fix_problem), problemP.h (PR_PREEN_NOHDR): Add option
670 which suppresses the header printed when in preen mode.
671
672 * pass3.c (e2fsck_pass3): If there are entries on the dirs_to_hash
673 list, call e2fsck_rehash_directories to reindex those
674 directories.
675 (e2fsck_expand_directory): Generalize the old
676 expand_dirctory() function so it can expand a directory to
677 a guaranteed minimum size.
678
679 * e2fsck.h (struct e2fsck_struct): Add the dirs_to_hash list. Add
680 new function prototypes for rehash.c and for
681 e2fsck_expand_directory().
682
683 * e2fsck.c (e2fsck_reset_context): Free the dirs_to_hash list.
684
685 * pass1.c (e2fsck_pass1): Initialize the dirs_to_hash list if the
686 htree feature is present in the filesystem.
687 (check_blocks): If a non-htree directory has more than 2
688 blocks, put it on the dirs_to_hash list.
689
690 * pass2.c (clear_htree): Add corrupt htree directories to the
691 dirs_to_hash list.
692
693 * problem.h, problem.c (PR_3A_PASS_HEADER, PR_3A_REHASH_ITER,
694 PR_3A_REHASH_DIR_ERR, PR_3A_REHASH_DIR_HEADER,
695 PR_3A_REHASH_DIR, PR_3A_REHASH_DIR_END): Add new problem codes
696
697 * pass2.c (parse_int_node), problem.c (PR_2_HTREE_BADBLK): Fix
698 problem display.
699
Theodore Ts'o62acaa12002-07-15 16:54:42 -04007002002-07-15 Theodore Ts'o <tytso@mit.edu>
701
702 * pass2.c (e2fsck_pass2): Use dx_dir->numblocks instead of
703 dx_dir->ino to indicate that a bad inode was cleared.
704
Theodore Ts'o503f9e72002-06-26 16:52:10 -04007052002-06-26 Theodore Ts'o <tytso@mit.edu>
706
707 * pass1.c (check_blocks): Move htree handling to handle_htree().
708 Factor out calls to ext2fs_write_inode so that it happens
709 if dirty_inode is non-zero.
710 (handle_htree): Add checks for invalid htree root, invalid
711 hash version, invalid hash version, and htree depth too deep.
712
713 * problem.h, problem.c (PR_1_HTREE_NODIR, PR_1_HTREE_BADROOT,
714 PR_1_HTREE_HASHV, PR_1_HTREE_INCOMPAT, PR_1_HTREE_DEPTH):
715 Add new problem codes.
716
717 * pass2.c (parse_int_node): Fix silly typo.
718 (check_dir_block): Change to use new ext2fs_dirhash()
719 function prototype.
720 (pass2): Fixed two minor bugs discovered by the test case:
721 Don't stop checking dxdir's after clearing a bad inode.
722 If there is a bad max hash, make sure the bad_dir flag
723 is set to make sure we try to clear inode.
724
Theodore Ts'o8fdc9982002-06-25 23:26:34 -04007252002-06-25 Theodore Ts'o <tytso@mit.edu>
726
727 * e2fsck.c (e2fsck_reset_context): Free the dx_dirinfo structure.
728
729 * message.c: Add new abbrevations @h and @p, "HTREE directory
730 inode" and "problem in".
731
732 * pass1.c (check_blocks): If the inode has the INDEX_FL flag,
733 register the block into the indexed directory data
734 structures. Or if the filesystem doesn't have the
735 DIR_INDEX flag, offer to clear the INDEX_FL.
736
737 * pass2.c (e2fsck_pass2, parse_int_node): Add support check htree
738 directories (we don't check all possible corruptions yet).
739
740 * problem.h, problem.h (PR_1_HTREE_SET, PR_2_HTREE_NOTREF,
741 PR_2_HTREE_DUPREF, PR_2_HTREE_MIN_HASH, PR_2_HTREE_MAX_HASH,
742 PR_2_HTREE_CLEAR, PR_2_HTREE_FCLR, PR_2_HTREE_BADBLK): Add
743 new problem codes.
744
745 * unix.c (main): If ENABLE_HTREE is not defined, complain if the
746 filesystem has the dir_index feature.
747
748 * Makefile.in, e2fsck.h, dx_dirinfo.c: New file (and group of
749 functions) which keeps track of blocks in HTREE directory
750 blocks.
751
Andreas Dilgerb21bf262002-06-10 11:05:56 -06007522002-05-22 Andreas Dilger <adilger@clusterfs.com>
753
754 * super.c (check_superblock): Check that the number of inodes and
755 blocks in a group is less than 2^16, so that the free inode
756 and block counts for a group fit into the group descriptor
757 table fields. Any more than that would need a COMPAT flag.
758
Theodore Ts'o0d634672002-05-22 00:22:38 -04007592002-05-22 Theodore Ts'o <tytso@mit.edu>
760
761 * pass1.c (check_ext_attr): Update to support the V2 Bestbits EA
762 format. We automatically determine from the first EA
763 block we visit whether we are using the V1 or V2 format.
764
Theodore Ts'oda307042002-05-21 21:19:14 -04007652002-05-21 Theodore Ts'o <tytso@mit.edu>
766
767 * pass1.c (process_block): If an inode has too many blocks or
768 is too big, then offer to truncate the inode.
769 (check_blocks): Don't bother checking the size to see if
770 it's too big, since that's just a symptom, not the disease
771 (which we're now appropriately checking in process_block).
772
773 * problem.c, problem.h: Add new problem codes PR_1_INODE_TOOBIG,
774 PR_1_TOOBIG_DIR, PR_1_TOOBIG_REG, PR_1_TOOBIG_SYMLINK, and
775 add the latch code PR_LATCH_TOOBIG.
776
Theodore Ts'obcf9c5d2002-05-21 09:14:17 -04007772002-05-20 Theodore Ts'o <tytso@mit.edu>
778
779 * e2fsck.h, pass1.c (e2fsck_pass1_check_symlink), pass2.c
780 (e2fsck_process_bad_inode): Add an extra
781 argument so a scratch buffer can be passed into the
782 function.
783
784 * pass1.c (e2fsck_pass1_check_device_inode,
785 e2fsck_pass1_check_symlink): If the EXT2_INDEX_FL flag is
786 set, then the device/FIFO is invalid.
787 (check_immutable): Don't check for EXT2_INDEX_FL; we take
788 care of that elsewhere now.
789 (e2fsck_pass1): Check to see if the symlink is valid
790 before we offer to clear any immutable bits. This matches
791 the order in which we check other special files.
792
793 * pass2.c (e2fsck_pass2): Allocate a bigger scratch buffer so we
794 can pass part of it to e2fsck_process_bad_inode.
795
796 * pass4.c (e2fsck_pass4): If we need to call
797 e2fsck_process_bad_inode(), allocate the necessary scratch
798 buffer.
799
800 * problem.h, problem.c: Change PR_2_SYMLINK_SIZE to be
801 PR_2_INVALID_SYMLINK, and change the text
802 accordingly. Revert the text change for PR_1_SET_IMMUTABLE
803 since we no longer check for EXT2_INDEX_FL in
804 check_immutable().
805
8062002-05-18 Andreas Dilger <adilger@clusterfs.com>
807
808 * pass1.c (e2fsck_pass1_check_symlink): Remove checks of
809 immutable/append-only checks, since this is handled by
810 check_immutable. For non-fast symlinks, read in the
811 data block and check the length to make sure it
812 matches with the inode size.
813 (check_immutable): Generalize to also check for the
814 EXT2_INDEX_FL flag.
815 (check_blocks): For non-regular files, signal a bad inode
816 size if i_size_high is non-zero.
817
818 * pass2.c: Only count large files if they are regular files
819 (not just if they aren't directories).
820
821 * problem.c, problem.h: Change comment for PR_2_SYMLINK_SIZE
822 to indicate that it can be triggered by any symlink,
823 not fast symlink. Change text for PR_1_SET_IMMUTABLE
824 to indicate that it the EXT2_INDEX_FL was set.
825
Theodore Ts'o31e29a12002-05-17 10:53:07 -04008262002-05-17 Theodore Ts'o <tytso@mit.edu>
827
828 * pass1.c (e2fsck_pass1): When calculating max_sizes, omit capping
829 this value by the calculated value of max_sect_sizes.
830 The inode may be a sparse inode, and the limit of
831 max_sect_sizes assumed a non-sparse inode and a limit
832 based on a 32-bit i_blocks field measured in 512 sectors.
833
834 * super.c (check_super_block): Fix check for s_log_block_size so
835 that takes into account fact that there is an offset of
836 EXT2_MIN_BLOCK_LOG_SIZE.
837
838 * pass1.c: Allocate max_sizes array to be big enough to support
839 the larger block sizes.
840
8412002-05-16 Andreas Dilger <adilger@clusterfs.com>
842
843 * unix.c (main), util.c (get_backup_sb): Use EXT2_MAX_BLOCK_SIZE
844 instead of using a hardcoded value of 4096.
845
846 * super.c (check_super_block): Change checks for s_log_block_size
847 s_log_frag_size so they support the larger block sizes.
848
849 * pass1.c (e2fsck_pass1): Calculate max_sizes array for block
850 sizes up to EXT2_MAX_BLOCK_SIZE (to support block sizes
851 greater than 4k).
852
Theodore Ts'oa8e77242002-03-08 03:12:14 -05008532002-03-08 Theodore Tso <tytso@mit.edu>
854
855 * Release of E2fsprogs 1.27
856
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05008572002-03-07 Theodore Tso <tytso@mit.edu>
858
859 * journal.c, pass5.c, revoke.c: Fix gcc -Wall complaints
860
8612002-03-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'of2d5c932002-03-07 03:13:07 -0500862
863 * unix.c (main): Don't close the filesystem before calling
864 fatal_error(); this just causes a needless warning about a
865 bad I/O manager magic number.
866
867 * journal.c (e2fsck_check_ext3_journal): Offer to clear the inode
868 in case the journal is too small, or the inode number in
869 the superblock doesn't appear to be random.
870
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05008712002-03-06 Theodore Tso <tytso@mit.edu>
Theodore Ts'of1226322002-03-07 02:47:07 -0500872
873 * problem.h, problem.c: PR_5_BLOCK_RANGE_UNUSED,
874 PR_5_BLOCK_RANGE_USED, PR_5_INODE_RANGE_UNUSED,
875 PR_5_INODE_RANGE_USED: Add new problem codes.
876
877 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Collapse
878 reporting of adjacent blocks and inodes into a range.
879
Theodore Ts'o14308a52002-03-05 03:26:52 -05008802002-03-04 Philipp Thomas <pthomas@suse.de>
881
882 * unix.c (main): Newer libintl needs LC_CTYPE to be set in
883 addition to LC_MESSAGES.
884
Theodore Ts'o57173d02002-02-26 14:59:39 -05008852002-02-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'ob9f40922002-02-24 03:08:57 -0500886
887 * Makefile.in (install): Install hard links for man pages for
888 fsck.ext2 and fsck.ext3. Remove any compressed man
889 pages before installing the man pages.
890
Theodore Ts'o57173d02002-02-26 14:59:39 -05008912002-02-22 Theodore Tso <tytso@mit.edu>
Theodore Ts'od1a21822002-02-22 00:17:59 -0500892
893 * journal.c: Improve code maintainability and reduce code size by
894 moving common code paths in e2fsck_journal_init_dev() and
895 e2fsck_journal_init_inode() into e2fsck_get_journal().
896 Also fixed a memory leak in recover_ext3_journal().
897
898 * super.c (release_orphan_inodes): Fix memory leak.
899
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05009002002-02-03 Theodore Tso <tytso@thunk.org>
901
902 * Release of E2fsprogs 1.26
903
9042001-12-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o3ed57c22001-12-24 15:01:59 -0500905
906 * unix.c (PRS): Don't allow the -c and -l/-L options to be
907 specified at the same time.
908
909 * e2fsck.h (E2F_OPT_WRITECHECK), unix.c (PRS),
910 badblocks.c (read_bad_blocks_file): If two -c options are
911 specified, then perform a non-destructive read/write scan
912 of the disk.
913
914 * e2fsck.8.in: Document the double -c option; also encourage users
915 to use -c instead of the -l/-L options since it's too hard
916 for users to get things like the blocksize parameter correct.
917
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05009182001-12-23 Theodore Tso <tytso@mit.edu>
Theodore Ts'o19007e52001-12-23 19:33:51 -0500919
Theodore Ts'of1a17612001-12-23 22:27:52 -0500920 * util.c (get_backup_sb): This function now searches for the
921 backup superblock by iterating over possible blocksizes
922 instead of defaulting a guess of 8193 if the superblock
923 isn't available.
924
925 * message.c (expand_percent_expression), unix.c (main): Pass in
926 new parameters to get_backup_sb. Also, in unix.c, use the
927 blocksize paramter in the e2fsck context structure instead
928 of using a static variable, since get_backup_sb wants to
929 be able to set the blocksize paramter.
930
931 * e2fsck.h: Update function prototype for get_backup_sb; also add
932 the blocksize parameter to the e2fsck context structure.
933
Theodore Ts'o19007e52001-12-23 19:33:51 -0500934 * Makefile.in, jfs_user.h: Move linux/jbd.h to
935 ext2fs/kernel-jbd.h, to avoid using the system header
936 file version of hbd.h when using diet glibc (since it
937 forcibly adds /usr/include to the beginning of the
938 include search path.)
939
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05009402001-12-21 Theodore Tso <tytso@mit.edu>
Theodore Ts'od37066a2001-12-21 23:28:54 -0500941
Theodore Ts'o6a50c5e2001-12-21 23:29:35 -0500942 * problem.c (fix_problem): Use ctx->filesystem_name if the
943 ctx->device_name is NULL.
944
Theodore Ts'od37066a2001-12-21 23:28:54 -0500945 * journal.c (e2fsck_check_ext3_journal): Give the opportunity to
946 run the journal even if recovery flag is cleared. If
947 we're using a backup superblock, run the journal by
948 default.
949
950 * e2fsck.h (E2F_OPT_FORCE), unix.c (PRS, check_if_skip): Use a
951 bitfield in the e2fsck context flags word to indicate
952 whether or not a check should be forced. This allows the
953 journal code to set the option if necessary to force a
954 filesystem check.
955
956 * problem.h, problem.c: Remove PR_0_JOURNAL_RESET_JOURNAL, and add
957 PR_0_JOURNAL_RUN and PR_0_JOURNAL_RUN_DEFAULT. Update
958 problem decription texts.
959
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05009602001-12-16 Theodore Tso <tytso@mit.edu>
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500961
Theodore Ts'o4ea7bd02001-12-16 23:23:37 -0500962 * e2fsck.h (ext2fs_get_refcount_size), unix.c (check_mount, PRS),
963 pass1.c (adjust_extattr_refcount),
964 ea_refcount.c (ea_refcount_create): Fix gcc -Wall nits.
965
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500966 * recovery.c, revoke.c: Update to versions from 2.4.17-pre8.
967
968 * journal.c, jfs_user.h: Update support code for new version of
969 recover.c and revoke.c. Fix support for filesystems with
970 external journals.
971
Gabriel Paubertb3b3d462001-11-30 13:45:28 +01009722001-11-30 Gabriel Paubert <paubert@iram.es>
973
974 * journal.c (e2fsck_journal_load): Fix an endianness bug.
975
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05009762001-11-26 Theodore Tso <tytso@mit.edu>
Theodore Ts'o24bfb442001-11-26 15:51:14 -0500977
978 * super.c (check_super_block): Make sure that if the inode table
979 or allocation bitmap is zero, that it is marked as
980 invalid, so that in pass #1, a new bitmap/inode table gets
981 properly allocated. (Addresses Debian Bug #116975)
982
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05009832001-11-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o1e9a7e02001-11-24 16:40:57 -0500984
985 * e2fsck.8.in: Fix minor typo in man page and clarify device
986 specification.
987
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05009882001-10-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'o62e3e7f2001-10-07 02:13:30 -0400989
990 * journal.c (clear_v2_journal_fields, e2fsck_journal_load): If the
991 V2 fields are set on a V1 journal superblock, or an
992 internal V2 journal has s_nr_users is non-zero, clear the
993 entire journal superblock beyond the V1 superblock. This
994 fixes botched V1->V2 updates.
995
996 * problem.c, problem.h (PR_0_CLEAR_V2_JOURNAL): Add new problem code.
997
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05009982001-09-20 Theodore Tso <tytso@mit.edu>
Theodore Ts'o773fd8a2001-10-06 21:26:27 -0400999
1000 * e2fsck.h, journal.c (e2fsck_move_ext3_journal): Add new function
1001 which will automatically relocate the ext3 journal from a
1002 visible file to an invisible journal file if the
1003 filesystem has been opened read/write.
1004
1005 * super.c (check_super_block): Add call to e2fsck_move_ext3_journal
1006
1007 * problem.c, problem.h (PR_0_MOVE_JOURNAL, PR_0_ERR_MOVE_JOURNAL):
1008 Add new problem codes.
1009
Theodore Ts'ofbf91112001-09-20 10:47:47 -040010102001-09-20 Theodore Tso <tytso@thunk.org>
1011
1012 * Release of E2fsprogs 1.25
1013
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -050010142001-09-19 Theodore Tso <tytso@mit.edu>
Theodore Ts'oae6cdcf2001-09-19 15:17:25 -04001015
1016 * unix.c (main): If a superblock is specified explicitly by the
1017 user, don't try to automatically fall back to an
1018 alternate superblock.
1019
Theodore Ts'ofb707752001-09-04 15:00:37 -040010202001-09-02 Theodore Tso <tytso@thunk.org>
1021
1022 * Release of E2fsprogs 1.24a
1023
Theodore Ts'o109624a2001-08-31 00:59:55 -040010242001-08-30 Theodore Tso <tytso@thunk.org>
1025
1026 * Release of E2fsprogs 1.24
1027
Theodore Ts'ob1f204f2001-08-30 16:42:09 -040010282001-08-30 Theodore Tso <tytso@valinux.com>
1029
1030 * pass1.c (e2fsck_pass1): For EXT2_RESIZE_INO, allow its i_mode to
1031 either be zero or a regular file (for compatibility with
1032 Andreas's on-line resizing programs).
1033
Theodore Ts'o53abed02001-08-27 12:18:16 -040010342001-08-27 Theodore Tso <tytso@valinux.com>
1035
Theodore Ts'o0f8973f2001-08-27 12:44:23 -04001036 * unix.c (main): Remove EXT2FS_VERSION from the version display,
1037 since it only confuses people.
1038
Theodore Ts'o53abed02001-08-27 12:18:16 -04001039 * pass1.c (strnlen): Provide strnlen if libc doesn't.
1040
Theodore Ts'o943ed872001-08-27 12:29:22 -040010412001-08-15 Theodore Tso <tytso@valinux.com>
1042
1043 * Release of E2fsprogs 1.23
1044
Theodore Ts'o85645a6f2001-08-13 06:11:39 -040010452001-08-13 Theodore Tso <tytso@valinux.com>
1046
Theodore Ts'oeb4ab512001-08-13 10:58:41 -04001047 * super.c (release_orphan_inodes): If the filesystem contains
1048 errors, don't run the orphan * list, since the orphan list
1049 can't be trusted.
1050
Theodore Ts'o85645a6f2001-08-13 06:11:39 -04001051 * pass1.c (check_size): Fix logic in check_size; the previous code
1052 only offered to clear the inode size fields if both size
1053 and i_size_high were zero.
Theodore Ts'oa40ecbb2001-08-13 06:15:36 -04001054 (e2fsck_pass1_check_device_inode): If i_blocks is
1055 non-zero, then assume that the device/socket/fifo inode
1056 is bogus.
Theodore Ts'o85645a6f2001-08-13 06:11:39 -04001057
Theodore Ts'o2b94c652001-08-09 04:08:52 -040010582001-08-09 Theodore Tso <tytso@valinux.com>
1059
Theodore Ts'oa4742692001-08-09 04:14:04 -04001060 * pass1.c, pass2.c, problem.c, problem.h: Fix bug introduced by
1061 Andreas's symlink code; check_blocks() was unconditionally
1062 testing inode_bad_map without checking to see if it
1063 existed first. Fixed problem a different way; we now no
1064 longer check inode_bad_map at all, since the file might
1065 not get deleted in pass 2 anyway. We move the large file
1066 feature reconciliation code to to e2fsck_pass2(), and in
1067 deallocate_inode() in pass2.c, we decrement the large
1068 files counter if we're about to delete a large file.
1069
Theodore Ts'o2b94c652001-08-09 04:08:52 -04001070 * unix.c (show_stats): Print the number of large files in verbose
1071 mode.
1072
Theodore Ts'oc0a083f2001-08-07 10:17:41 -040010732001-08-07 Theodore Tso <tytso@valinux.com>
1074
1075 * journal.c (recover_ext3_journal): If s_errno is set in the
1076 journal superblock, set the EXT2_ERROR_FS flag in the
1077 filesystem superblock after the journal is run.
1078
Theodore Ts'obd512b62001-08-04 21:33:03 -040010792001-08-04 Andreas Dilger <root@lynx.adilger.int>
1080
1081 * message.c: Change comments for %D and %d expansion in e2fsck
1082 problem codes. It was not consistent which was for dirent
1083 expansion, and which was for directory number expansion.
1084
1085 * problem.c (PR_2_FINAL_RECLEN, PR_2_BAD_FILETYPE): Fix problem
1086 codes which got caught by the confusion between %D and %d.
1087
Theodore Ts'od007cb42001-08-04 20:39:39 -040010882001-08-04 Theodore Tso <tytso@valinux.com>
1089
1090 * problem.c (PR_2_SYMLINK_SIZE): Change description to make it
1091 more clear (and remove %s expansion). Also add missing
1092 periods to the end of a number of problem descriptions.
1093
1094 * pass2.c (e2fsck_process_bad_inode): Remove unneeded problem
1095 context string set now that the problem description for
1096 PR_2_SYMLINK_SIZE has been changed.
1097
1098 * pass1.c (e2fsck_pass1_check_symlink): Consolidate some checks,
1099 and check the validity of the symlink block here (so that
1100 we detect this case here instead of later). Also use
1101 sizeof(inode->i_block) instead EXT2_LINK_DIR.
1102
Theodore Ts'o83e6ac82001-07-30 16:29:52 -040011032001-07-30 Theodore Tso <tytso@valinux.com>
1104
1105 * unix.c (check_mount): Remove the code which tested for the root
1106 filesystem being mounted read-only, and depend on the
1107 results flags from ext2fs_check_if_mounted.
1108
Theodore Ts'o1e165262001-07-29 11:48:10 -040011092001-07-29 Theodore Tso <tytso@valinux.com>
1110
Theodore Ts'o6d222f32001-07-29 12:06:58 -04001111 * unix.c (check_if_skip): Free the e2fsck context structure on a
1112 normal clean filesystem exit, to make it easier to find
1113 real memory leaks.
1114 (PRS): Only update the path to include /sbin at the
1115 beginning if the -c option is given, again to make it
1116 easier to find memory leaks.
Theodore Ts'o0628ae32001-07-29 12:26:46 -04001117 (main): Move the final print_resource_track call after the
1118 filesystem and the context are freed.
Theodore Ts'o6d222f32001-07-29 12:06:58 -04001119
1120 * journal.c (e2fsck_journal_init_dev): Avoid memory leak if we
1121 need to search for the journal device.
1122 (e2fsck_journal_release): Free the journal IO channel when
1123 we release the journal handle, to avoid a memory leak.
1124
Theodore Ts'o1e165262001-07-29 11:48:10 -04001125 * e2fsck.c (e2fsck_reset_context): Fix bug; only close the io
1126 channel if it is *different* from the filesystem io
1127 channel.
1128
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -040011292001-07-27 Theodore Tso <tytso@valinux.com>
1130
Theodore Ts'oa092c562001-07-27 22:40:09 -04001131 * problem.c (PR_1_SET_IMMUTABLE): Clarify problem message.
1132
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -04001133 * pass1.c (e2fsck_pass1): Check for symlinks that have the
1134 immutable flag set (and offer to clear them).
1135
Theodore Ts'o24ceb242001-07-26 09:02:56 -040011362001-07-26 Theodore Tso <tytso@valinux.com>
1137
1138 * pass1.c (e2fsck_pass1): Free ctx->block_ea_map at the end of
1139 pass 1.
1140
Theodore Ts'o14fe1c32001-07-25 19:48:24 -040011412001-07-25 Theodore Tso <tytso@valinux.com>
1142
1143 * pass1.c (check_ext_attr): Skip zero-length EA entries.
1144
1145 * problem.c: PR_1_EA_ALLOC_COLLISION shouldn't abort, but should
1146 prompt to clear the EA block.
1147
Theodore Ts'oadee8d72001-07-23 00:17:49 -040011482001-07-22 Theodore Tso <tytso@valinux.com>
1149
1150 * journal.c (ll_rw_block): Use ctx->journal_io instead of the
1151 filesystem's io_channel.
1152 (e2fsck_journal_init_dev): New function which supports
1153 initialization of the external journal.
1154 (e2fsck_get_journal): Remove code which flagged an error
1155 if the superblock reported the use of an external journal.
1156 (ext3_journal_via_mount): Remove unsued, #ifdefed out function.
1157
1158 * problem.c, problem.h: Removed error codes no longer used
1159 (PR_0_JOURNAL_UNSUPP_DEV, PR_0_JOURNAL_BAD_DEV,
1160 PR_0_JOURNAL_UNSUPP_UUID) and replace them with new error
1161 codes related with failures in loading the external
1162 journal (PR_0_JOURNAL_UNSUPP_MULTIFS,
1163 PR_0_CANT_FIND_JOURNAL, PR_0_EXT_JOURNAL_BAD_SUPER).
1164 Also changed the text assocated with PR_0_JOURNAL_BAD_UUID
1165 to reflect the case where the external journal isn't
1166 correct for this filesystem.
1167
1168 * unix.c (PRS), e2fsck.8.in: Add new option -j which allows
1169 the user to specify the pathname to find the external journal.
1170
1171 * e2fsck.c (e2fsck_reset_context): Close journal_io if it isn't
1172 the same as the filesystem io_channel.
1173
1174 * e2fsck.h: Add new fields (journal_io and journal_name) in the
1175 context structure to support external journals.
1176
Theodore Ts'od3124012001-07-20 14:13:49 -040011772001-07-20 Theodore Tso <tytso@valinux.com>
1178
1179 * unix.c (main): Add an explicit warning when the filesystem is
1180 left not completely fixed when e2fsck exits. (Addresses
1181 Debian bug #104502.)
1182
Theodore Ts'o55fd07e2001-07-19 16:31:25 -040011832001-07-19 Theodore Tso <tytso@valinux.com>
1184
1185 * pass1.c (check_ext_attr): The entire EA block is now checked to
1186 make sure that parts of the EA block aren't being used for
1187 multiple purposes.
1188
1189 * Makefile.in e2fsck.h, region.c: New file which is used to detect
1190 collisions in extended attribute block.
1191
1192 * problem.h, problem.c (PR_1_EA_MULTI_BLOCK, PR_1_EA_ALLOC_REGION,
1193 PR_1_EA_ALLOC_COLLISION, PR_1_EA_BAD_NAME,
1194 PR_1_EA_BAD_VALUE): Add new problem codes.
1195
Theodore Ts'o3c6b8972001-07-10 14:27:58 -040011962001-07-10 Theodore Tso <tytso@valinux.com>
1197
1198 * journal.c (e2fsck_run_ext3_journal): Only call ext3_flush() if
1199 the superblock is dirty.
1200
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -040012012001-07-07 Theodore Tso <tytso@valinux.com>
1202
Theodore Ts'o7b63fff2001-07-07 23:01:31 -04001203 * pass1b.c (pass1b, process_pass1b_block): Change the num_bad
1204 field calculation so that it only counts EA block entries
1205 as a single multiply claimed block (since once we clone
1206 the EA blocks for one inode, we fix the problem for all of
1207 the other inodes). Also, I moved the num_bad calculation
1208 from process_pass1b_block to the end of pass1b. This
1209 fixes a *significant* performance bug in pass1b which hit
1210 people who had to had a lot of multiply claimed blocks.
1211 (Can you say O(n**3) boys and girls? I knew you could...
1212 Fortunately, this case didn't happen that much in actual
1213 practice.)
1214
1215 * pass1.c (e2fsck_pass1): Defer inodes which have an extended
1216 attribute block for later processing to avoid extra seeks
1217 across the disk.
1218 (process_inode_cmp): If there is no indirect block, sort
1219 by the extended attribute (i_file_acl) block.
1220
Theodore Ts'o7abb2bd2001-07-07 13:20:34 -04001221 * pass1b.c (clone_file_block): Fix bugs when cloning extended
1222 attribute blocks. Moved free of block_buf to after the
1223 code which clones the extattr block, and fixed logic for
1224 changing pointers to the extended attribute field in the
1225 inodes which were affected.
1226 (decrement_badcount): New function which is used whenever
1227 we need to decrement the number of files which claim a
1228 particular bad block. Fixed bug where delete_file wasn't
1229 checking check_if_fs_block() before clearing the entry in
1230 block_dup_map. This could cause a block which was claimed
1231 by multiple files as well as the filesystem metadata to
1232 not be completely fixed.
1233
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -04001234 * pass1.c (adjust_extattr_refcount): Add new function which
1235 adjusts the reference counts of extended attribute blocks
1236 if needed, both up and down.
1237 (e2fsck_pass1): If the refcount or refcount_extra
1238 structure are present, call adjust_extattr_refcount(),
1239 and free it afterwards.
1240
1241 * problem.h, problem.c (PR_1_EXTATTR_READ_ABORT,
1242 PR_1_EXTATTR_REFCOUNT, PR_1_EXTATTR_WRITE): Add new
1243 problem codes.
1244
Theodore Ts'o342d8472001-07-02 11:54:09 -040012452001-07-02 Theodore Tso <tytso@valinux.com>
1246
1247 * pass1.c (e2fsck_pass1, check_ext_attr, check_blocks): Add
1248 initial support for scanning extended attribute blocks.
1249
1250 * e2fsck.c (e2fsck_reset_context): free extended attribute
1251 refcount structure.
1252
1253 * e2fsck.h: Add new fields for accounting for the extended
1254 attribute blocks.
1255
1256 * Makefile.in, ea_refcount.c, e2fsck.h: Add new file which
1257 implements a reference count abstraction.
1258
1259 * problem.c, problem.h: Add new problem codes PR_1_ALLOCATE_REFCOUNT,
1260 PR_1_READ_EA_BLOCK, PR_1_BAD_EA_BLOCK, PR_2_FILE_ACL_BAD
1261
1262 * message.c: Add "@a" as an abbreviation for "extended attribute"
1263
1264 * pass1b.c (clone_file): Add code which handles cloning an
1265 extended attribute block.
1266
1267 * pass1b.c (delete_file):
1268 * pass2.c (deallocate_inode): If the inode contains an extended
1269 attribute block in the file_acl field, clear it and
1270 deallocate the block.
1271
12722001-06-28 Theodore Tso <tytso@valinux.com>
1273
1274 * pass2.c (e2fsck_process_bad_inode): Deal with inodes which are
1275 marked bad because of an invalid file_acl (either because
1276 EXT2_FEATURE_COMPAT_EXT_ATTR is not set, or because the
1277 block number in file_acl is bad.
1278
Theodore Ts'o636a9542001-06-29 17:57:26 -040012792001-06-29 Theodore Tso <tytso@valinux.com>
1280
1281 * unix.c (show_stats): Use long long to calculate the percentage
1282 of the number of blocks in use in the filesystem.
1283
Theodore Ts'o67960132001-06-23 00:16:37 -040012842001-06-23 Theodore Tso <tytso@valinux.com>
1285
1286 * Release of E2fsprogs 1.22
1287
Theodore Ts'od90f3492001-06-22 21:01:17 -040012882001-06-22 Theodore Tso <tytso@valinux.com>
1289
1290 * flushb.c: Use platform independent method of defining the
1291 BLKFLSBUF ioctl. Also include sys/mount.h since on newer
1292 platforms BLKFLSBUF is defined there.
1293
Theodore Ts'o42475e22001-06-22 20:35:38 -040012942001-06-19 Theodore Tso <tytso@valinux.com>
1295
1296 * super.c (release_inode_blocks): Don't try to release the blocks
1297 if the orphaned inode is a device file, symlink, or some
1298 other kind of special file that doesn't have a block list.
1299
Theodore Ts'of4f75ba2001-06-16 01:14:28 +000013002001-06-15 Theodore Tso <tytso@valinux.com>
1301
1302 * Release of E2fsprogs 1.21
1303
Theodore Ts'ob6a08072001-06-14 01:16:17 +000013042001-06-13 Theodore Tso <tytso@valinux.com>
1305
1306 * unix.c (check_if_skip): Adapted patch from Andreas Dilger which
1307 prints the number of mounts or days elapsed since the last
1308 check when e2fsck is forced to check an otherwise clean
1309 filesystem.
1310
Theodore Ts'ocbbf0312001-06-13 00:12:04 +000013112001-06-12 Theodore Tso <tytso@valinux.com>
1312
1313 * badblocks.c: Stop using the compatibility badblocks function,
1314 and use the ext2fs_badblocks_* functions instead.
1315
Theodore Ts'o5df55d72001-06-11 07:00:04 +000013162001-06-11 Theodore Tso <tytso@valinux.com>
1317
Theodore Ts'o3034f622001-06-11 15:17:45 +00001318 * unix.c (PRS): Fix bug introduced in 1.20 which broke the -F
1319 flag.
1320
Theodore Ts'o5df55d72001-06-11 07:00:04 +00001321 * Makefile.in: Add message.c and swapfs.c to the list of source
1322 files to build the make depend.
1323
1324 * swapfs.c, unix.c: Only support the -s and -S options to e2fsck
1325 if ENABLE_SWAPFS is defined.
1326
Theodore Ts'o725c4742001-06-08 11:55:44 +000013272001-06-08 Theodore Tso <tytso@valinux.com>
1328
1329 * recover.c, revoke.c: Synchronize with ext3 0.7a
1330
Theodore Ts'ofdbdea02001-06-02 04:26:26 +000013312001-06-02 Theodore Tso <tytso@valinux.com>
1332
Theodore Ts'oa479fe62001-06-02 04:50:14 +00001333 * recovery.c (scan_revoke_records): Fix bug in recovery code;
1334 missing byte order conversion.
1335
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00001336 * pass1.c (mark_inode_bad): Replace alloc_bad_map with a function
1337 which sets the bit in the bad inode bitmap.
1338 (e2fsck_pass1): Check for fast symlinks with an invalid
1339 size, and set the bad inode map in that case.
Theodore Ts'o62b6d472001-06-02 04:37:02 +00001340 (check_size): Check i_size_high for special files and
1341 prompt to clear it along with i_size if non-zero.
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00001342
1343 * pass2.c (e2fsck_process_bad_inode): Check for fast symlinks with
1344 an invalid size and prompt the user if the inode should be
1345 cleared.
1346
1347 * problem.h, problem.c (PR_2_SYMLINK_SIZE): Added new problem code.
1348
Theodore Ts'o71d521c2001-06-01 19:29:36 +000013492001-06-01 Theodore Tso <tytso@valinux.com>
1350
Theodore Ts'o2f686ac2001-06-02 00:38:40 +00001351 * problem.c, problem.h: Change PR_0_JOURNAL_UNSUPP_INCOMPAT and
1352 PR_0_JOURNAL_UNSUPP_ROCOMPAT so they aren't fatal errors,
1353 but prompt to see if the user should abort. Removed the
1354 PR_0_JOURNAL_RESET_COMPAT problem code.
1355
1356 * journal.c (e2fsck_journal_load): If there are incompatible
1357 journal flags, just return an error code.
1358 (e2fsck_check_ext3_journal): If e2fsck_journal_load
1359 returns an error code indicating that there are
1360 incompatible journal flag, check to see if we should
1361 abort, and then offer to clear the journal.
Theodore Ts'oe3338452001-06-14 07:11:33 +00001362 (Addresses Debian bug #98527.)
Theodore Ts'o2f686ac2001-06-02 00:38:40 +00001363
Theodore Ts'o797f5ef2001-06-01 23:49:46 +00001364 * Makefile.in: Move include/asm/types.h.in to
Theodore Ts'o36a23e12001-06-02 00:54:10 +00001365 lib/ext2fs/ext2_types.h.in.
Theodore Ts'o797f5ef2001-06-01 23:49:46 +00001366
13672001-06-01 Theodore Tso <tytso@valinux.com>
1368
Theodore Ts'o71d521c2001-06-01 19:29:36 +00001369 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
1370 pass1_check_directory): Add a safety check to make sure
1371 ctx->stashed_inode is non-zero.
1372
1373 * pass1b.c (pass1b): Use e2fsck_use_inode_shortcuts() to disable
1374 the inode shortcut processing, instead of manually
1375 clearing only half of the function pointers that needed to
1376 be NULL'ed out. This caused nasty bugs if the last inode
1377 in the filesystem needed dup block processing.
1378
1379 * pass1b.c (clone_file_block): When cloning a directory's metadata
1380 block, don't try to update the directory block list
1381 database, since indirect blocks aren't stored in the
1382 database and the resulting error will abort the file clone
1383 operation.
1384
Theodore Ts'o561cd4d2001-05-25 16:40:56 +000013852001-05-25 Theodore Tso <tytso@valinux.com>
1386
Theodore Ts'obb185862001-05-25 17:35:00 +00001387 * Release of E2fsprogs 1.20
1388
13892001-05-25 Theodore Tso <tytso@valinux.com>
1390
Theodore Ts'o561cd4d2001-05-25 16:40:56 +00001391 * journal.c (e2fsck_journal_reset_super): Remove extraneous line
1392
Theodore Ts'oc7f23362001-05-23 22:19:47 +000013932001-05-23 Theodore Tso <tytso@valinux.com>
1394
1395 * journal.c (e2fsck_journal_reset_super): Fix bug; the reset
1396 journal wasn't getting written out to disk since the dirty
1397 bit wasn't being set on the buffer.
1398 (e2fsck_journal_load): Don't print an error message if the
1399 journal version number is wrong; just return a error code
1400 reflecting this fact. If the block type in the journal
1401 superblcok is obviously not a version number, report the
1402 journal is corrupted.
1403 (e2fsck_check_ext3_journal): On an unsupported journal
1404 version, prompt to abort by default, but then offer a
1405 chance to clear the journal as corrupt.
1406
1407 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_VERSION): Added new
1408 problem code.
1409
Theodore Ts'o424cd2b2001-05-14 04:06:56 +000014102001-05-14 Theodore Tso <tytso@valinux.com>
1411
Theodore Ts'o21afac02001-05-14 12:47:41 +00001412 * pass1.c: Treat inodes with a low dtime (that were from a
1413 corrupted orphan list) specially.
1414
1415 * problem.c, problem.h: Add new problem codes PR_1_LOW_DTIME and
1416 PR_1_ORPHAN_LIST_REFUGEES, and a new latch group,
1417 PR_LATCH_LOW_DTIME.
1418
1419 * problemP.h: Expand the size of the problem flag to be an int
1420 instead of a short. Expand space in the flag word which
1421 is reserved for problem latch flags from 3 bits to 8 bits.
1422
Theodore Ts'o54c637d2001-05-14 11:45:38 +00001423 * e2fsck.h, scantest.c: Change location of ext2_fs.h to be
1424 ext2fs/ext2_fs.h
1425
Theodore Ts'o424cd2b2001-05-14 04:06:56 +00001426 * super.c (check_super_block): Be more strict on checking
1427 s_r_blocks_count superblock field.
1428
14292001-05-13 Theodore Tso <tytso@valinux.com>
1430
1431 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_ROCOMPAT,
1432 PR_0_JOURNAL_UNSUPP_INCOMPAT, PR_0_JOURNAL_RESET_COMPAT):
1433 New problem codes.
1434
1435 * journal.c (e2fsck_journal_load): Use a problem code to
1436 report unsupported feature flags. There is code to
1437 clear unsupported flags, but since this is dangerous,
1438 it's not allowed in the problem code table.
1439
14402001-05-11 Andreas Dilger <adilger@turbolinux.com>
1441
1442 * journal.c (e2fsck_journal_reset_super): initialize the journal
1443 sequence number to a random value to avoid recovering
1444 bad transactions from a corrupt journal.
1445
Theodore Ts'o328a5ce2001-05-13 20:21:25 +000014462001-05-13 Theodore Tso <tytso@valinux.com>
1447
1448 * journal.c: Code cleanup; initialize journal_enable_debug using
1449 an initializer.
1450
Theodore Ts'ofc9a69c2001-05-12 13:43:46 +000014512001-05-12 Theodore Tso <tytso@valinux.com>
1452
1453 * unix.c (PRS): Skip validation of -C's file descriptor if it is
1454 zero, since that is special case.
1455
Theodore Ts'of0b8c872001-05-09 06:03:58 +000014562001-05-09 Theodore Tso <tytso@valinux.com>
1457
1458 * super.c (release_orphan_inodes): Add gettext quoting around
1459 "Truncating" and "Clearing" for i18n.
1460
Theodore Ts'ob9852cd2001-05-05 05:14:59 +000014612001-05-05 Theodore Tso <tytso@valinux.com>
1462
Theodore Ts'oe39ac922001-05-05 06:47:24 +00001463 * util.c (fatal_error): Use the correct magic number when checking
1464 the magic number for the io_channel data structure. Also
1465 remove extraneous call to io_channel_flush() that was left
1466 over from an editing session.
1467
Theodore Ts'ob9852cd2001-05-05 05:14:59 +00001468 * pass2.c (check_dir_block): Ignore EXT2_ET_DIR_CORRUPTED errors
1469 from ext2fs_read_dir_block().
1470
Theodore Ts'o5f629b72001-05-01 20:01:08 +000014712001-05-01 Theodore Tso <tytso@valinux.com>
1472
Theodore Ts'oae8160e2001-05-01 21:13:37 +00001473 * unix.c (PRS): Validate the completion information file
1474 descriptor so that the completion bar won't get
1475 accidentally written onto the disk.
1476
Theodore Ts'o5f629b72001-05-01 20:01:08 +00001477 * e2fsck.8.in: Add explanation that you can use mke2fs -n -b
1478 blocksize to printout alternate superblock locations.
1479
Theodore Ts'obc57f152001-04-26 04:11:46 +000014802001-04-26 Theodore Tso <tytso@valinux.com>
1481
1482 * unix.c (check_if_skip): If the max_mount_count is zero, treat it
1483 as having no count set.
1484
Theodore Ts'oef059872001-04-17 00:40:02 +000014852001-04-16 Theodore Tso <tytso@valinux.com>
1486
1487 * super.c (check_super_block): Fix bad calculation of
1488 inodes_per_block, and tighten min/max checks to be a bit
1489 more paranoid. Thanks to Andreas Dilger for pointing out
1490 this bug.
1491
Theodore Ts'o1f735032001-03-29 19:00:50 +000014922001-03-29 Theodore Tso <tytso@valinux.com>
1493
Theodore Ts'o15986f72001-03-29 19:22:16 +00001494 * journal.c (mark_buffer_uptodate): Add emulation of kernel
1495 function mark_buffer_uptodate.
1496
Theodore Ts'o1f735032001-03-29 19:00:50 +00001497 * recovery.c, revoke.c: Synchronize with 0.6b ext3 files.
1498
Theodore Ts'od0515212001-02-13 04:32:53 +000014992001-02-12 Theodore Tso <tytso@valinux.com>
1500
1501 * journal.c (e2fsck_run_ext3_journal): Force a flush of the
1502 filesystem and io_channel before replaying the journal.
1503
Theodore Ts'oa5c33f22001-01-18 02:34:03 +000015042001-01-17 Theodore Ts'o <tytso@valinux.com>
1505
1506 * pass1.c (check_blocks): Fix large file checking code so that
1507 files > 2GB are considered large files, and restrict
1508 directories from being > 2GB.
1509
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +000015102001-01-12 Theodore Ts'o <tytso@valinux.com>
1511
Theodore Ts'oa9ca2012001-01-12 21:53:25 +00001512 * journal.c (e2fsck_journal_fix_unsupported_super): Remove unused
1513 function. Add FIXME notes to e2fsck_get_journal(), from
1514 Andreas Dilger.
1515
1516 * pass1.c (e2fsck_pass1): Cap the maximum legal size of a file by
1517 the limit caused by the fact that i_blocks is in 512 byte
1518 units, and that the Linux buffer cache also fundamentally
1519 assumes 512 byte sectors.
1520 Make sure that the journal inode is a regular file, and
1521 when clearing an unused journal inode, make sure the
1522 icount db is updated.
1523
1524 * problem.c, problem.h (PR_1_JOURNAL_BAD_MODE): Add new problem code.
1525
Theodore Ts'o37b6b292001-01-12 21:16:13 +00001526 * problem.c: For PR_1_RESERVED_BAD_MODE, print a description of
1527 the reserved inode. In PR_0_JOURNAL_HAS_JOURNAL, prompt
1528 to clear the journal, rather than deleting it (which is
1529 more accurate). (From Andreas Dilger.)
1530
Theodore Ts'o6a6d3d42001-01-12 21:11:24 +00001531 * journal.c: Make sure all functions which return an error code
1532 use the errcode_t return type, and not "int"
1533 (e2fsck_journal_release): Add new parameter, "drop",
1534 which is used when we just want to deallocate the journal
1535 without trying to write out any changes.
1536 (mark_buffer_clean): New function
1537 (e2fsck_check_ext3_journal): If we fail loading the
1538 journal, make sure we free all memory associated with it.
1539 (recover_ext3_journal): If we fail to load the journal or
1540 initialize the revoke data structures, make sure we free all
1541 memory associated with the journal.
1542
Theodore Ts'o721edd02001-01-12 21:05:57 +00001543 * message.c (special_inode_name): Add more special inode names
1544 (From Andreas Dilger)
1545
Theodore Ts'o58a75172001-01-12 20:59:19 +00001546 * util.c (fatal_error): Check to make sure the io_manager data
1547 structure is sane before trying to flush the io_channel.
1548 (From Andreas Dilger)
1549
Theodore Ts'o721edd02001-01-12 21:05:57 +00001550 * mtrace.h, super.c, pass2.c: Minor whitespace cleanups, from
1551 Andreas Dilger.
Theodore Ts'o4035f402001-01-12 20:25:50 +00001552
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +00001553 * journal.c (e2fsck_journal_fix_bad_inode): Set pctx->ino to the
1554 bad journal number.
1555
1556 * problem.c (PR_0_JOURNAL_BAD_INODE): Use pctx->ino instead of
1557 pctx->num when printing the bad journal inode number.
1558
Theodore Ts'o86c627e2001-01-11 15:12:14 +000015592001-01-11 <tytso@snap.thunk.org>
1560
Theodore Ts'o5ba23cb2001-01-11 19:15:02 +00001561 * pass1.c (process_block): Remove dead code which was never
1562 getting executed.
1563
1564 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
1565 ext2fs_sync_device() instead of using BLKFLSBUF.
1566
1567 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
1568
Theodore Ts'o86c627e2001-01-11 15:12:14 +00001569 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
1570 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
1571 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
1572 ino_t to ext2_ino_t.
1573
Theodore Ts'o95a5bc92001-01-11 04:58:21 +000015742001-01-09 <tytso@snap.thunk.org>
1575
1576 * problem.c: Fix another broken @F vs @f problem.
1577
Theodore Ts'o53ef44c2001-01-06 05:55:58 +000015782001-01-06 <tytso@snap.thunk.org>
1579
1580 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
1581 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
1582
1583 * jfs_user.h: Use more sophisticated inline handling to allow
1584 building with --enable-gcc-wall
1585
Theodore Ts'od3f35b62001-01-03 13:00:43 +000015862001-01-03 <tytso@snap.thunk.org>
1587
Theodore Ts'of18996c2001-01-03 16:57:24 +00001588 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
1589 own block; if the journal inode is not in use, and it
1590 contains data, offer to clear it.
1591
1592 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
1593 problem code.
1594
1595 * problem.c: Modified problem table to use a new abbreviations.
1596
Theodore Ts'od74edf42001-01-03 19:38:04 +00001597 * message.c: Add @j abbreviation for journal, and @v abbreviation
Theodore Ts'oe9044062001-01-03 15:39:37 +00001598 for device.
Theodore Ts'o1ce64532001-01-03 15:34:20 +00001599
Theodore Ts'occ7067b2001-01-03 13:24:06 +00001600 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
1601
Theodore Ts'od3f35b62001-01-03 13:00:43 +00001602 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
1603 the journal stored on a reserved inode. Also force a fsck
1604 if the journal appears to exist while !NEEDS_RECOVERY, and
1605 we forcibly reset the journal.
1606
Theodore Ts'of5ae75e2001-01-01 14:52:52 +000016072001-01-01 <tytso@snap.thunk.org>
1608
Theodore Ts'o5dd8f962001-01-01 15:51:50 +00001609 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
1610 ext2fs_sb with struct ext2_super_block.
1611
Theodore Ts'of5ae75e2001-01-01 14:52:52 +00001612 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
1613
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +000016142000-12-31 <tytso@snap.thunk.org>
1615
1616 * jfs_compat.h: Remove uneeded header file.
1617
Theodore Ts'ob2f93192000-12-30 20:33:42 +000016182000-12-30 <tytso@snap.thunk.org>
1619
Theodore Ts'oc59a7042000-12-31 01:52:03 +00001620 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
1621 conflicts with the system header file.
1622
Theodore Ts'ob2f93192000-12-30 20:33:42 +00001623 * problem.h: Fixed numbering of pass1 error messages; an extra 0
1624 had slipped into some of the numbers. (Pointed out by
1625 Andreas Dilger)
1626
1627 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
1628 unnecessary automatic variable. Add explanatory comment
1629 about the kernel emulation routines. (Suggested by
1630 Andreas Dilger)
1631
Theodore Ts'o060b5fb2000-12-13 18:07:23 +000016322000-12-13 Theodore Ts'o <tytso@valinux.com>
1633
Theodore Ts'o9b565752000-12-13 18:50:22 +00001634 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
1635 journal fields are consistent if any of the superblock
1636 fields are set. (Backs out erroneous change made by sct,
1637 pointed out by Andreas.)
1638
1639 * unix.c (main): Clarify coments (no code changes)
1640
1641 * super.c (release_orphan_inodes): Fix spelling typo in error message.
1642
Theodore Ts'o8188c9e2000-12-13 18:39:14 +00001643 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
1644 level if we need to set large files flag. Patch from
1645 Andreas Dilger.
1646
Theodore Ts'o7b59f1e2000-12-13 18:11:44 +00001647 * super.c (check_super_block): If we have any of the compatibility
1648 flags set, we need to have a revision 1 filesystem. Most
1649 kernels will not check the flags on a rev 0 filesystem
1650 and we may have corruption issues because of the
1651 incompatible changes to the filesystem. Patch from Andreas
1652 Dilger.
1653
Theodore Ts'o060b5fb2000-12-13 18:07:23 +00001654 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
1655 new problem codes.
1656
Theodore Ts'o0e8a9562000-12-09 06:41:25 +000016572000-12-09 <tytso@snap.thunk.org>
1658
Theodore Ts'obf2d4992000-12-09 14:46:20 +00001659 * flushb.c: Fix flushb so that it does something other than waste
1660 disk space when built on systems with modern header files
1661 and add a non-subtle Copyright Licensing restriction so
1662 Yann will remove it from the Debian Distribution. (Now
1663 violates the Debian Free Software Guidelines, on purpose.)
1664
Theodore Ts'of43650c2000-12-09 06:47:56 +00001665 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
1666 at the top level, set the JFS debuging level to 2.
1667
Theodore Ts'o0e8a9562000-12-09 06:41:25 +00001668 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
1669 has been moved to the include/linux directory.
1670
1671 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
1672 support the V2 superblock and revoke processing. The
1673 journal.c and revoke.c files are copies from the ext3
1674 kernel source.
1675
1676 * Makefile.in: Added revoke.c to the list of source/object files.
1677
Theodore Ts'o133a56d2000-11-17 05:40:49 +000016782000-11-16 Theodore Ts'o <tytso@valinux.com>
1679
1680 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
1681 reporting problems rather than using com_err directly.
1682
1683 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
1684
1685 * message.c (expand_percent_expression): Add safety check. If
1686 ctx->str is NULL, print "NULL" instead of dereferencing
1687 the null pointer.
1688
1689 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
1690 to ext2fs_block_iterate2, to support 64-bit filesizes and
1691 to speed things up slightly by avoiding the use of the
1692 ext2fs_block_iterate's compatibility shim layer.
1693
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +000016942000-10-30 <tytso@snap.thunk.org>
1695
1696 * util.c (get_backup_sb): Calculate backup superblock correctly
1697 when the blocksize is > 1k.
1698
Theodore Ts'o241f2242000-10-26 20:42:07 +000016992000-10-26 <tytso@snap.thunk.org>
1700
1701 * jfs.h, jfs_compat.h, journal.c: Updated to include the
1702 definition of the new journal superblock format; still
1703 only supports V1 superblocks for now. (From sct)
1704
Theodore Ts'ob09a4b02000-10-24 21:16:09 +000017052000-10-24 <tytso@snap.thunk.org>
1706
Theodore Ts'o83949022000-10-25 01:38:50 +00001707 * super.c (release_inode_block, release_inode_blocks,
1708 release_orphan_inodes): Add code to deal with truncating
1709 inodes which are still in use (but which are on the orphan
1710 list because they need truncation).
1711
1712 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
1713 PR_0_ORPHAN_CLEAR_INODE, and remove
1714 PR_0_ORPHAN_INODE_INUSE.
1715
1716 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
1717 a message when the journal is being recovered.
1718
Theodore Ts'ob09a4b02000-10-24 21:16:09 +00001719 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
1720 journal inode, if it is in use.
1721
Theodore Ts'oadfca562000-09-12 21:24:36 +000017222000-09-12 <tytso@valinux.com>
1723
1724 * extend.c:
1725 * flushb.c: Add include of nls-enable.h which is necessary so that
1726 they can compile correctly.
1727
Theodore Ts'occ96b2b2000-08-22 21:30:11 +000017282000-08-22 <tytso@valinux.com>
1729
Theodore Ts'o2575fb02000-08-22 21:50:04 +00001730 * unix.c (main): If we're doing a read-only check, skip the
1731 journal playback, but don't abort the e2fsck run.
1732
Theodore Ts'o99a2cc92000-08-22 21:41:52 +00001733 * super.c (release_orphan_inodes): Fix typo; should do bounds
1734 checking on next_ino instead of ino.
1735
1736 * jfs_compat.h (J_ASSERT):
1737 * journal.c (e2fsck_run_ext3_journal):
1738 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
1739
Theodore Ts'o243dc312000-08-22 21:37:47 +00001740 * unix.c: Use fatal_error() instead of exit() whenever possible.
1741 Also fix the fsck exit codes so that we use FSCK_USAGE
1742 when it is appropriate. Rename global_signal_ctx to
1743 e2fsck_global_ctx and let it be exported globally.
1744
Theodore Ts'occ96b2b2000-08-22 21:30:11 +00001745 * util.c (fatal_error): Try to flush the I/O manager before
1746 forcing an exit.
1747
Theodore Ts'oecf1b772000-08-20 22:06:31 +000017482000-08-20 <tytso@valinux.com>
1749
1750 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
1751 e2fsck_check_ext3_journal to smash the journal because
1752 journal->j_transaction_sequence wasn't getting
1753 initialized.
1754
1755 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
1756 call to e2fsck_clear_recover from recover_ext3_journal to
1757 after the filesystem has been closed and reopened.
1758 Otherwise, the superblock in the filesystem handle will
1759 probably be stale, and will overwrite the newer version of
1760 the superblock written by the log recovery.
1761
1762 * message.c (expand_inode_expression): Add support for %Iu and %Ig
1763
1764 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
1765
1766 * super.c (release_orphan_inodes, release_inode_block,
1767 release_inode_blocks): Update the block group descriptor
1768 counts when freeing the orphan inode. Use
1769 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
1770
1771 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
1772 attempted to reopen the filesystem using the device name
1773 instead of the filesystem name.
1774
Theodore Ts'o80bfaa32000-08-18 15:08:37 +000017752000-08-18 <tytso@valinux.com>
1776
1777 * Makefile.in: Update the make dependencies
1778
1779 * problem.c, problem.h: Add the problem codes:
1780 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
1781 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
1782 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
1783 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
1784
1785 * super.c (release_inode_blocks, release_orphan_inodes,
1786 check_super_block): Add support for clearing orphaned
1787 inodes from the unmounted filesystem.
1788
1789 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
1790 check; this is now handled in check_super_block ---
1791 non-journaled filesystems can use the orphan list in the
1792 future. Also, move the the re-opening of the filesystem
1793 to e2fsck_run_ext3_journal().
1794
Theodore Ts'o3b5386d2000-08-14 14:25:19 +000017952000-07-12 Andreas Dilger <adilger@turbolinux.com>
1796
1797 * journal.c: implement loading of ext3 journal for recovery code
1798
1799 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
1800 Add journal problems.
1801
1802 * recovery.c (journal_recover): user-space ext3 journal recovery code
1803
1804 * unix.c (main) : check journal and do recovery in separate steps
1805
Theodore Ts'ob8d164c2000-08-08 03:17:04 +000018062000-08-07 <tytso@snap.thunk.org>
1807
1808 * unix.c (calc_percent): Make sure that we don't take a floating
1809 exception if the max value is zero. (should normally
1810 never happen, but...)
1811
Theodore Ts'of9e67062000-07-13 23:25:54 +000018122000-07-13 <tytso@valinux.com>
1813
1814 * Release of E2fsprogs 1.19
1815
Theodore Ts'o17390c02000-07-07 04:13:21 +000018162000-07-06 Theodore Ts'o <tytso@valinux.com>
1817
1818 * unix.c (check_if_skip): Modify algorithm for checking
1819 s_max_mnt_count to match with the kernel. (If
1820 s_max_mnt_count is negative, ignore the mnt_count check.)
1821
1822 * unix.c (e2fsck_update_progress): Adjust the width of the
1823 progress bar dynamically, based on the filesystem name
1824 that we need to display.
1825
1826 * unix.c (main): If the ext3 needs_recovery flag is set, call
1827 e2fsck_run_ext3_journal() and then restart the e2fsck run.
1828
1829 * journal.c (e2fsck_run_ext3_journal): New file which contains
1830 logic to recover the ext3 journal. This version relies on
1831 the kernel being able to mount the filesystem in order to
1832 run the journal.
1833
Theodore Ts'o92269042000-07-05 18:25:59 +000018342000-07-05 Theodore Ts'o <tytso@valinux.com>
1835
1836 * unix.c (e2fsck_update_progress): Only save and check the last
1837 percentage after multiplying it by 10, nor 1000, since we
1838 only need to save values to a tenth of a percent (and the
1839 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +00001840 Also, re-arrange the logic so that we do the time
1841 check only after doing the percentage check, and we
1842 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +00001843
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +000018442000-07-04 Theodore Ts'o <tytso@valinux.com>
1845
1846 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
1847 field is set; if so, clear it, so that ext3 mounting code
1848 won't get confused by the fact that we've cleared out the
1849 orphaned inodes.
1850
Theodore Ts'obbd47d72000-06-10 19:21:33 +000018512000-06-10 Theodore Ts'o <tytso@valinux.com>
1852
1853 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
1854 checking for a "should never happen case".
1855
1856 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
1857 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
1858
Theodore Ts'od647a1e2000-05-27 14:40:09 +000018592000-05-27 Theodore Ts'o <tytso@valinux.com>
1860
1861 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
1862 (cw@foof.org) which checks to see if special devices have
1863 a non-zero size, and deals with it.
1864
1865 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
1866
Theodore Ts'o1d279212000-05-19 02:38:14 +000018672000-05-18 Theodore Ts'o <tytso@valinux.com>
1868
1869 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
1870 well.
1871
Theodore Ts'o4ea0a112000-05-08 13:33:17 +000018722000-05-08 Theodore Ts'o <tytso@valinux.com>
1873
1874 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
1875 code.
1876
1877 * super.c (check_super_block): If the OS type in the superblock is
1878 the Hurd, check to see if the filetype feature is set, and
1879 offer to clear it if so. This needs to be done since the
1880 Hurd doesn't properly support the filetype feature.
1881 (And since the hurd allows the transmogrification of files
1882 to special files and vice versa --- for no good reason
1883 that I can understand --- it can't support the filetype
1884 feature for the forseeable future, either.)
1885
Theodore Ts'o373b8332000-04-03 16:22:35 +000018862000-04-03 Theodore Ts'o <tytso@valinux.com>
1887
1888 * unix.c: For platforms that don't define optarg.h, manually
1889 define optarg and optind.
1890
Theodore Ts'o01fbc702000-04-03 13:57:21 +000018912000-03-20 Theodore Ts'o <tytso@valinux.com>
1892
1893 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
1894 Check for the append-only as well as the immutable flag.
1895
1896 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
1897 append-only flag. Fix comment for compression flag.
1898
Theodore Ts'o06012322000-02-12 20:12:43 +000018992000-02-12 <tytso@snap.thunk.org>
1900
1901 * unix.c (e2fsck_update_progress): Limit the number of updates to
1902 the progress bars to 8 times a second. This allows a 9600
1903 baud console link to keep up.
1904
Theodore Ts'o19178752000-02-11 15:55:07 +000019052000-02-11 <tytso@snap.thunk.org>
1906
1907 * unix.c (main): If compression is enabled on the filesystem,
1908 print a warning message (for now).
1909
1910 * message.c: Add new compression shortcut: @c == compress
1911
1912 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
1913
1914 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
1915 set, check to see if the filesystem supports compression.
1916 If it does pass this information down to process_block()
1917 so it can treat the compressed block flag words
1918 correctly. If not, offer to clear the flag, since it
1919 shouldn't be set.
1920 (process_block): If an inode has the compressed inode flag
1921 set, allow EXT2FS_COMPRESSED_BLKADDR.
1922
1923 * pass1b.c (process_pass1b_block, delete_file_block,
1924 clone_file_block):
1925 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
1926 see if the block can be skipped.
1927
Theodore Ts'o28ffafb2000-02-08 19:14:02 +000019282000-02-08 <tytso@snap.thunk.org>
1929
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +00001930 * util.c: Make resource tracking message more concise.
1931
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +00001932 * e2fsck.h:
1933 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
1934 ctx->block_illegal_map, since it's not needed by pass1,
1935 and pass1b has been modified to calculate it manually if
1936 needed. This reduces the memory footprint needed by e2fsck.
1937
1938 * pass1b.c (check_if_fs_block): New static function which returns
1939 whether or not a block overlaps with filesystem metadata.
1940 This replaces consulting the block_illegal_map bitmap.
1941
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00001942 * Makefile.in: Call sync after finishing building all in this
1943 directory.
1944
1945 * unix.c (PRS): sync the filesystem before trying to use
1946 BLKFLSBUF, to minimize the chance of causing dirty blocks
1947 to get dropped.
1948
1949 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
1950 a Linux/i386 system.
1951
1952 * pass3.c (check_directory): Only do the loop detection algorithm
1953 if we've searched over 2048 parent directories and haven't
1954 found the end yet. This means that in the common case, we
1955 don't allocate or clear the inode_loop_detection bitmap,
1956 which for large systems, merely clearing the bitmap for
1957 each directory was turning out to be quite expensive.
1958 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
1959 identifying this problem.
1960
Theodore Ts'o0c4a0722000-02-07 03:11:03 +000019612000-02-06 Theodore Ts'o <tytso@valinux.com>
1962
1963 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
1964 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
1965 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
1966 unix.c, util.c: Add Internationalization support as
1967 suggested by Marco d'Itri <md@linux.it>.
1968
Theodore Ts'o80e808f2000-02-02 16:19:59 +000019692000-02-02 Theodore Ts'o <tytso@valinux.com>
1970
1971 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
1972 linux/fs.h
1973
Theodore Ts'o894edb22000-01-18 21:27:12 +000019742000-01-18 Theodore Ts'o <tytso@valinux.com>
1975
1976 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
1977 we need a separate DEPLIBUUID that can be used in
1978 Makefile's dependency rules.
1979
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +000019801999-11-23 <tytso@valinux.com>
1981
1982 * e2fsck.8.in: Update language about where to find a backup
1983 superblock.
1984
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +000019851999-11-19 <tytso@valinux.com>
1986
Theodore Ts'o86a63e91999-11-23 13:52:48 +00001987 * pass1.c (process_inodes): Add shortcut handling; if
1988 process_inodes_count is zero, return right away, to avoid
1989 calling qsort with a non-positive count.
1990
Theodore Ts'oec8d2c31999-11-19 18:52:36 +00001991 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
1992 to print Delete as ^?
1993
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00001994 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
1995 the source directory.
1996
Theodore Ts'oa846d2f1999-11-10 15:50:24 +000019971999-11-10 <tytso@valinux.com>
1998
Theodore Ts'ocd086361999-11-10 16:00:39 +00001999 * Release of E2fsprogs 1.18
2000
20011999-11-10 <tytso@valinux.com>
2002
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00002003 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
2004 means the answer is assumed to be no in preen mode. This
2005 is now used in the PR_1_SET_IMMUTABLE code, so that in
2006 preen mode we ignore these inodes and just print a warning
2007 message.
2008
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +000020091999-11-09 <tytso@valinux.com>
2010
2011 * pass1.c (e2fsck_pass1): If the filesystem does not support
2012 imagic inodes, if an inode has the imagic flag set, offer
2013 to clear the imagic flag. If a valid device/fifo/socket
2014 has the immutable flag set, call the new helper function
2015 check_immutable() to offerto clear the immutable flag.
2016
2017 * pass2.c (check_filetype): Use the new ext2_file_type() helper
2018 function instead of calculating the file_type information
2019 manually.
2020
2021 * pass3.c (e2fsck_reconnect_file): When adding a link to
2022 lost+found, calculate the filetype information so that
2023 ext2fs_link() can use the information if applicable.
2024 (get_lost_and_found): Create the /lost+found directory
2025 with the correct filetype information if applicable.
2026
2027 * util.c (ext2_file_type), e2fsck.h: New function which returns
2028 the directory entry file type information given the
2029 inode's mode bits.
2030
2031 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
2032 and PR_1_SET_IMMUTABLE.
2033
Theodore Ts'o7142db01999-11-08 18:46:54 +000020341999-11-07 <tytso@valinux.com>
2035
2036 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
2037 to prevent it from getting freed twice.
2038
20391999-11-06 <tytso@valinux.com>
2040
2041 * unix.c (main): Close the filesystem before freeing the context,
2042 so that in the event of a free()-related segmentation
2043 violation, the filesystem is properly closed and written
2044 out.
2045
20461999-10-27 <tytso@valinux.com>
2047
2048 * e2fsck.c (e2fsck_reset_context): When freeing
2049 ctx->inode_reg_map, we weren't zero'ing
2050 ctx->inode_reg_map, which could cause a segfault later on
2051 in the e2fsck run.
2052
20531999-10-26 <tytso@valinux.com>
2054
2055 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
2056 matches the standard convention).
2057
Theodore Ts'of68aa411999-10-26 14:20:22 +000020581999-10-26 <tytso@valinux.com>
2059
Theodore Ts'o28e11941999-10-26 18:17:20 +00002060 * Release of E2fsprogs 1.17
2061
20621999-10-26 <tytso@valinux.com>
2063
Theodore Ts'of68aa411999-10-26 14:20:22 +00002064 * message.c (safe_print): Make safe_print take an char instead of
2065 an unsigned char to fix gcc warnings.
2066
Theodore Ts'oc40db6d1999-10-25 21:03:34 +000020671999-10-25 <tytso@valinux.com>
2068
Theodore Ts'oe6597041999-10-26 02:30:16 +00002069 * util.c: For NT portability, don't redefine getchar(), since
2070 stdio defines that. Instead we introduce a new
2071 abstract macro read_a_char() which is #defined to the
2072 right function as necessary.
2073
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00002074 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
2075
2076 * pass2.c (check_dir_block): Require that the length of the
2077 directory entry be at least 12 bytes. Check to see if the
2078 filename is zero-length, and flag that as an error.
2079
Theodore Ts'o7847c1d1999-10-22 15:11:42 +000020801999-10-22 <tytso@valinux.com>
2081
Theodore Ts'o614fdfd1999-10-23 03:19:51 +00002082 * Release of E2fsprogs 1.16
2083
20841999-10-22 <tytso@valinux.com>
2085
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00002086 * pass2.c (check_filetype): If the filetype filesystem feature is
2087 not set, and a directory entry has a dirent feature, offer
2088 to clear it (since 2.0 kernels will do complain will
2089 interpret it as a very large name length field).
2090
2091 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
2092
Theodore Ts'oaa4115a1999-10-21 19:33:18 +000020931999-10-21 <tytso@valinux.com>
2094
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +00002095 * e2fsck.8.in: Update man page to use a more standard format (bold
2096 option flags and italicized variables), as suggested by
2097 Andreas Dilger (adilger@enel.ucalgary.ca)
2098
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00002099 * pass4.c (e2fsck_pass4): If an inode is set in the
2100 inode_imagic_map bitmap, don't check to see if it is
2101 disconnected from the inode tree (because it almost
2102 certainly will be). Free inode_imagic_map at the end of
2103 pass 4.
2104
2105 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
2106 feature is set, check the directory entry's filetype
2107 information field, and fix/set it if necessary.
2108 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
2109 of pass 2.
2110
2111 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
2112 information for inode_reg_map and inode_imagic_map, which
2113 indicates which inodes are regular files and AFS inodes,
2114 respectively.
2115 Since only the master superblock is written during a
2116 restart, force that superblock to be used after a restart;
2117 otherwise changes to the block group descriptors end up
2118 getting ignored.
2119
2120 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
2121 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
2122 which supresses the problem message if e2fsck is run with
2123 the -n option.
2124
2125 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
2126 new problem codes.
2127
2128 * message.c (expand_dirent_expression): Add support for %dt which
2129 prints the dirent type information.
2130
2131 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
2132 and inode_imagic_map).
2133
2134 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
2135 to the context structure.
2136
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +000021371999-09-24 <tytso@valinux.com>
2138
2139 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
2140 e2fsprogs easier to port to non-Unix platforms.
2141
21421999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00002143
2144 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
2145 internal and external inode counts in sync when we
2146 decremented an inode whose link count was already zero.
2147 Now we skip incrementing or decrementing both link counts
2148 if we would cause an overflow condition.
2149 (expand_dir, expand_dir_proc): Change where we update the
2150 inode block count and size files so that the block count
2151 field is updated correctly when we create an indirect block.
2152
Theodore Ts'o78cf0541999-10-20 18:29:18 +000021531999-08-05 <tytso@valinux.com>
2154
2155 * super.c (check_super_block): Check to see whether the
2156 inodes_per_group value in the superblock is insanely too
2157 high.
2158
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +000021591999-08-02 <tytso@valinux.com>
2160
2161 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
2162 the block also shares data with the fs metadata when
2163 the count drops to 1, since the block should still be
2164 cloned, as fs metadata isn't included in the count.
2165
21661999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +00002167
2168 * Release of E2fsprogs 1.15
2169
Theodore Ts'ob55199e1999-07-19 15:37:46 +000021701999-07-19 <tytso@valinux.com>
2171
2172 * unix.c (usage): Add minimalist emergency help to the usage
2173 message.
2174
Theodore Ts'o5596def1999-07-19 15:27:37 +000021751999-07-18 <tytso@valinux.com>
2176
2177 * unix.c: Add support for calculating a progress bar if the -C0
2178 option is given. The function e2fsck_clear_progbar()
2179 clears the progress bar and must be called before any
2180 message is issued. SIGUSR1 will enable the progress bar,
2181 and SIGUSR2 will disable the progress bar. This is used
2182 by fsck to handle parallel filesystem checks. Also, set
2183 the device_name from the filesystem label if it is
2184 available.
2185
2186 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
2187 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
2188 structure which contains the last tenth of a percent
2189 printed for the user.
2190
2191 * message.c (print_e2fsck_message): Add call to
2192 e2fsck_clear_progbar().
2193
2194 * pass1.c (e2fsck_pass1):
2195 * pass2.c (e2fsck_pass2):
2196 * pass3.c (e2fsck_pass3):
2197 * pass4.c (e2fsck_pass4):
2198 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
2199 printing the resource tracking information.
2200
2201 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
2202 an error in the bitmaps, suppress printing the progress
2203 bar using the suppression flag for the remainder of the
2204 check, in order to clean up the display.
2205
Theodore Ts'o74033351999-07-01 03:00:47 +000022061999-06-30 <tytso@valinux.com>
2207
2208 * unix.c (check_mount): Clean up the abort message displayed when
2209 the filesystem is mounted and either stdout or stdin isn't
2210 a tty.
2211
22121999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +00002213
2214 * e2fsck.h:
2215 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
2216 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
2217 pass1_* be private static functions, and create new
2218 function e2fsck_use_inode_shortcuts which sets and clears
2219 the inode shortcut functions in the fs structure.
2220
2221 * e2fsck.h:
2222 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
2223 exported function.
2224
2225 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
2226 if a disconnected inode has any problems before
2227 connecting it to /lost+found. Bug and suggested fix by
2228 Pavel Machek <pavel@bug.ucw.cz>
2229
22301999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +00002231
2232 * unix.c (main): Add missing space in the disk write-protected
2233 message.
2234
Theodore Ts'od4b0ce01999-06-18 01:09:29 +000022351999-05-22 <tytso@rsts-11.mit.edu>
2236
2237 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
2238 code.
2239
2240 * super.c (check_super_block): Add check to make sure the total
2241 number of inodes is sane, since this can be calculated
2242 from the number of groups times the number of inodes per
2243 group. Offer to correct it if it is incorrect.
2244
Theodore Ts'oe79d1b21999-06-18 01:06:59 +000022451999-03-19 <tytso@rsts-11.mit.edu>
2246
2247 * pass5.c (check_block_end): Fix fencepost condition where when
2248 clearing the block padding we were missing the last position
2249 in the bitmap.
2250
Theodore Ts'o75d83be1999-05-18 03:16:36 +000022511999-05-17 <tytso@rsts-11.mit.edu>
2252
2253 * unix.c (reserve_stdio_fds): Add safety check in case
2254 reserve_stdio_fds couldn't open /dev/null.
2255
Theodore Ts'o4a9f5931999-03-16 19:32:52 +000022561999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
2257
2258 * util.c (print_resource_track): Use mallinfo if present to get
2259 more accurate malloc statistics.
2260
2261 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +00002262 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00002263
2264 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
2265
22661999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2267
2268 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
2269 that the block group number is printed. Add new prompt,
2270 PROMPT_UNLINK.
2271
22721999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2273
2274 * Release of E2fsprogs 1.14
2275
Theodore Ts'o9e51eca1999-01-09 16:32:31 +000022761999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2277
2278 * message.c (safe_print): New function which prints strings,
2279 converting non-printable characters using the '^' and
2280 M-notation. This function is now used to print directory
2281 name entries and pathnames.
2282
Theodore Ts'o73f17cf1999-01-04 07:35:45 +00002283Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
2284
2285 * unix.c (main): Reset the context before calling ext2fs_close(),
2286 to avoid referencing already freed memory.
2287
Theodore Ts'o556ad131998-12-19 08:10:58 +000022881998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
2289
2290 * Release of E2fsprogs 1.13
2291
Theodore Ts'o5a679c81998-12-03 16:40:38 +000022921998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
2293
2294 * Makefile.in: Updated dependencies.
2295
22961998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
2297
2298 * pass3.c (get_lost_and_found): If the filesystem is not opened
2299 read-only, then force /lost+found to be created if it is
2300 not present.
2301
2302 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
2303 operation.
2304
Theodore Ts'o1dde43f1998-11-14 04:18:28 +000023051998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2306
2307 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
2308 since e2fsck_free_context may reference data in ctx->fs.
2309
2310 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
2311 before checking ctx->fs->dblist.
2312
23131998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2314
2315 * pass1.c (e2fsck_pass1): Use the device check subroutine on
2316 FIFO's and Socket's, so that we catch bogus immutable inodes.
2317
2318 * pass2.c (process_bad_inode): Process bad socket and fifo's.
2319
2320 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
2321 PR_2_BAD_SOCKET.
2322
Theodore Ts'o7f813ba1998-09-03 01:26:03 +000023231998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
2324
2325 * problem.c: Add PR_3_NO_DIRINFO error code.
2326
2327 * super.c (check_super_value): Rename min and max to min_val and
2328 max_val to avoid possible cpp macro conflicts.
2329
2330 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
2331 possible cpp macro conflicts.
2332
2333 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
2334 cpp macro conflicts.
2335 (check_directory): Fix logic to avoid possible core dump
2336 in the case of ext2fs_get_dir_info returning NULL. (By
2337 the time we get here, it should never happen, but...).
2338 Also simply/streamline the control flow of the function.
2339
Theodore Ts'o24fc5031998-08-26 15:23:31 +000023401998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
2341
2342 * unix.c (check_if_skip): Move the "not cleanly mounted" check
2343 ahead of the maximal mount and too long since checked tests.
2344 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
2345 open, so that we don't open the filesystem using the same
2346 file descriptor as stdout or stderr.
2347
Theodore Ts'of75c28d1998-08-01 04:18:06 +000023481998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
2349
2350 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
2351 get to 100%.
2352
2353 * pass3.c (e2fsck_pass3): Change progress accounting to be
2354 consistent with the other e2fsck passes.
2355
2356 * e2fsck.c (e2fsck_run): At the end of each pass, call the
2357 progress function with the pass number set to zero.
2358
2359 * unix.c (e2fsck_update_progress): If the pass number is zero,
2360 ignore the call, since that indicates that we just want to
2361 deallocate any progress structures.
2362
Theodore Ts'o8144d671998-07-09 05:33:18 +000023631998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2364
Theodore Ts'o4a5fa191998-07-09 05:42:45 +00002365 * Release of E2fsprogs 1.12
2366
23671998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2368
Theodore Ts'o8144d671998-07-09 05:33:18 +00002369 * unix.c (main): Fix typo in checking the incompat feature set; it
2370 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
2371
Theodore Ts'o1fad9041998-07-07 05:44:43 +000023721998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
2373
2374 * badblocks.c (test_disk): Don't clear the existing bad blocks
2375 list when using e2fsck -c, since it may cause blocks with
2376 marginal errors to be dropped from the bad blocks list.
2377
Theodore Ts'o874b4d21998-07-06 14:33:12 +00002378Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
2379
2380 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
2381 compatibility with older kernels.
2382
Theodore Ts'o818180c1998-06-27 05:11:14 +000023831998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
2384
2385 * unix.c (e2fsck_update_progress): Remove unused variables.
2386
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +000023871998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
2388
2389 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
2390 collision with LFS API.
2391
2392 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
2393 properly initialized.
2394 (e2fsck_pass1): Don't allow the the boot loader inode to
2395 be a directory (clear the inode mode field if so).
2396
Theodore Ts'oefac9a11998-05-07 05:02:00 +000023971998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
2398
2399 * unix.c (PRS): Added new option -C, which causes e2fsck to print
2400 progress updates so that callers can keep track of the
2401 completion progress of e2fsck. Designed for use by
2402 progress, except for -C 0, which prints a spinning report
2403 which may be useful for some users.
2404
2405 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
2406 scheme (useful for larger filesystems).
2407
2408 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
2409 progress reporting functions.
2410
Theodore Ts'o4c77fe51998-04-30 17:35:59 +000024111998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2412
2413 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
2414 appropriate return type for comparison functions for qsort.
2415
2416 * e2fsck.h: Add #ifdef protection for unistd.h
2417
2418 * super.c: Remove header files already included by e2fsck.h
2419
Theodore Ts'o76f875d1998-04-27 01:41:13 +000024201998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
2421
2422 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
2423 size of the memory to be resized to ext2fs_resize_mem().
2424
Theodore Ts'o7e44f241998-04-01 03:16:29 +000024251998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
2426
2427 * Makefile.in: Change to use new installation directory variables
2428 convention. Fix uninstall rules to take $(DESTDIR) into
2429 account. Remove cat8dir from the installdirs target,
2430 since modern man package don't necessarily put the cat
2431 directory in /usr/man/cat?.
2432
Theodore Ts'o17dba281998-03-30 01:16:26 +000024331998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
2434
2435 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
2436 extern in e2fsck.h to prevent -Wall warnings.
2437
2438 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
2439
24401998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2441
2442 * super.c (check_super_block): Fix broken superblock sanity check
2443 when calculating blocks_per_group if s_log_frag_size !=
2444 s_log_block_size. Since we don't support fragments, this
2445 isn't a bug deal, but it's good to get it fixed.
2446
Theodore Ts'o246501c1998-03-24 16:22:38 +000024471998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
2448
2449 * unix.c: Fix bug in check of feature set, to make sure we can
2450 really fix this filesystem.
2451
2452 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
2453 num field be a 64 bit type. Add the problem code
2454 PR_1_FEATURE_LARGE_FILES
2455
2456 * problem.c: Add table entry for the problem code
2457 PR_1_FEATURE_LARGE_FILES.
2458
2459 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
2460 a problem for directory inodes. (Since it is also
2461 i_size_high now.) If there are no large_files, then
2462 clear the LARGE_FLAG feature flag. If there are
2463 large_files, but the LARGE_FLAG feature flag is not set,
2464 complain and offer to fix it.
2465 (check_blocks): Add support to deal with non-directory
2466 inodes that have i_size_high set (i.e., large_files).
2467 Don't give an error if a directory has preallocated
2468 blocks, to support the DIR_PREALLOC feature.
2469 (process_block, process_bad_block): The blockcnt variable
2470 is a type of blkcnt_t, for conversion to the new
2471 block_iterate2.
2472
2473 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
2474 a problem for directory inodes. (Since it is also
2475 i_size_high now.)
2476
2477 * message.c (expand_inode_expression): Print a 64-bits of the
2478 inode size for non-directory inodes. (Directory inodes
2479 can only use a 32-bit directory acl size, since
2480 i_size_high is shared with i_dir_acl.) Add sanity check
2481 so that trying to print out the directory acl on a
2482 non-directory inode will print zero.
2483 (expand_percent_expression): %B and %N, which print
2484 pctx->blkcount and pctx->num, can now be 64 bit
2485 variables. Print them using the "%lld" format if
2486 EXT2_NO_64_TYPE is not defined.
2487
2488 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
2489
2490 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
2491 field.
2492
Theodore Ts'ob6f79831998-03-09 13:10:37 +00002493Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2494
2495 * pass3.c (fix_dotdot_proc):
2496 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
2497 * message.c (expand_dirent_expression): Mask off the high eight
2498 bits of the directory entry's name_len field, so that it
2499 can be used for other purposes.
2500
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +00002501Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2502
2503 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
2504 include EXT2_FLAG_RESTART anymore, we need to adjust this
2505 routine so that it *does* return in the case of it seeing
2506 EXT2_FLAG_RESTART.
2507
2508 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
2509 done callback function, which may set context abort
2510 flags. So we need to test the context abort flags after
2511 we call ext2_get_next_inode().
2512 (process_inodes): If we abort due out of process_inodes,
2513 do a clean exit by breaking out of the for loop instead of
2514 just returning.
2515
2516 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
2517 considered a SIGNAL mask (i.e., requiring an immediate
2518 abort of processing to restart). FLAG_RESTART just means
2519 that we want to restart once pass 1 is complete.
2520
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +00002521Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2522
2523 * Change the progress function to return an integer; if returns 1,
2524 then the progress function is expected to have set the
2525 e2fsck context flag signalling a user abort, and the
2526 caller should also initiate a user abort.
2527
Theodore Ts'o63c49691998-02-20 05:24:59 +00002528Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2529
2530 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
2531 end_problem_latch() unless there was actually a problem
2532 latched. Simplifies semantics of the latch processing.
2533
Theodore Ts'o43139321998-02-16 22:34:46 +00002534Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2535
2536 * e2fsck.h: Add new field, priv_data to the e2fsck context
2537 structure. It should be used by callers of the e2fsck
2538 functions only, and not by anything in e2fsck itself.
2539
2540Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2541
2542 * super.c: Instead of call ext2fs_get_device_size(), define and call
2543 e2fsck_get_device_size(). (This function may be stubbed
2544 out in special versions of e2fsck.)
2545
2546 * pass3.c, pass4.c: Remove extra calls to the progress function
2547 that weren't needed.
2548
2549 * mke2fs.8.in: Update man page to note that the format of the bad
2550 block file is the same as the one generated by badblocks.
2551
Theodore Ts'o54be2cc1998-02-01 12:58:48 +00002552Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2553
2554 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
2555
2556 * e2fsck.h: Include <time.h> since it is needed
2557
2558 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
2559 processing.
2560
Theodore Ts'o24dd4021998-02-01 00:16:40 +00002561Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2562
2563 * unix.c (main): In the case where the filesystem revision is too
2564 high, print the message about the superblock possibly
2565 being corrupt.
2566
2567 * e2fsck.8.in: Add expanded comments about how the -b option
2568 works.
2569
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +00002570Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2571
2572 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
2573 the ext2-specific header files are in a flat directory.
2574
2575 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
2576 super.c, swapfs.c, unix.c: Explicitly cast all assignments
2577 from void * to be compatible with C++.
2578
2579Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2580
2581 * unix.c (sync_disk): Remove sync_disk and calls to that function,
2582 since ext2fs_close() now takes care of this.
2583
2584Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2585
2586 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
2587 ehandler.c, unix.c: Change use of private to be priv_data,
2588 to avoid C++ reserved name clash.
2589
Theodore Ts'o5be8dc21997-12-01 18:24:10 +00002590Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2591
2592 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
2593 of e2fsck_get_num_dirs, which has been removed.
2594
2595Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2596
2597 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
2598 to compile and install flushb.
2599
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +00002600Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2601
2602 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
2603 to make sure the extra i_blocks in a device are cleared if
2604 the immutable flag is set.
2605
2606 * util.c (print_resource_track): Fix typo which caused the
2607 time/resource tracking to print "Pass 1 :" instead of
2608 "Pass 1: ".
2609
Theodore Ts'ob8647fa1997-11-20 21:52:43 +00002610Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2611
2612 * pass3.c (expand_directory): Fix bug which could cause core dump
2613 when expanding the directory, and the bitmaps hadn't yet
2614 been read in. Also, only use ext2fs_write_dir_block when
2615 writing a directory block, not when writing out a fresh
2616 indirect block.
2617
Theodore Ts'o8039c481997-11-19 21:39:13 +00002618Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2619
2620 * pass1.c (process_bad_block): Fix bug where first_block wasn't
2621 getting incremented, which caused user to get a
2622 "Programming error?" warning if there was a bad block in a
2623 non-primary superblock/group_descriptor. Also fixed
2624 another bug so that ext2fs_bg_has_super() is consulted, to
2625 avoid problems when using a filesystem with the
2626 sparse_groups option set and there are bad blocks at the
2627 beginning of a group which doesn't have a superblock.
2628
Theodore Ts'of8188ff1997-11-14 05:23:04 +00002629Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2630
2631 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
2632 progress indicator function.
2633
2634 * pass1.c (scan_callback): Add call to the progress feedback
2635 function (if it exists).
2636
2637Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2638
2639 * super.c (check_super_block): Skip the device size check if the
2640 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
2641
2642 * iscan.c (main): Don't use fatal_error() anymore.
2643
2644 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
2645 calling fatal_error(0).
2646
2647 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
2648 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
2649
2650 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
2651
2652 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
2653
2654 * problemP.h: New file which separates out the private fix_problem
2655 data structures.
2656
2657 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
2658 swapfs.c util.c: allocate_memory() now takes a e2fsck
2659 context as its first argument, and rename it to be
2660 e2fsck_allocate_memory().
2661
Theodore Ts'o08b21301997-11-03 19:42:40 +00002662Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2663
Theodore Ts'o68227541997-11-04 04:25:22 +00002664 * unix.c (main): Add a special case check for the error code EROFS
2665 and display an appropriate error message for this case.
2666
Theodore Ts'o08b21301997-11-03 19:42:40 +00002667 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
2668 to take the e2fsck context as their first argument.
2669 Change dir_info.c routines to take an e2fsck_context,
2670 renamed them to start with e2fsck_ to avoid namespace
2671 issues, and changed them to store the directory
2672 information inside the e2fsck context.
2673 Added e2fsck_run() which calls all of the e2fsck passes in
2674 the correct order, and which handles the return of abort
2675 codes. Added abort processing, both via setjmp/longjmp
2676 and via flags in the e2fsck context. Use a flag in the
2677 e2fsck context instead of the restart_e2fsck global
2678 variable. Change uses of free and malloc to
2679 ext2fs_free_mem and ext2fs_get_mem.
2680
Theodore Ts'o291c9041997-10-31 06:17:08 +00002681Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2682
2683 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
2684 consistency.
2685
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00002686Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2687
2688 * pass3.c (get_lost_and_found): Check error return of
2689 EXT2_FILE_NOT_FOUND instead of ENOTDIR
2690
2691 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
2692 instead of ENOTDIR
2693
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002694Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2695
Theodore Ts'o519149f1997-10-25 03:49:49 +00002696 * unix.c (PRS): Make the variable which getopt returns into be
2697 an int, so that it won't lose on platforms where char is
2698 unsigned.
2699
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002700 * pass1b.c (clone_file): Fix bug in error reporting in the case
2701 where cs.errcode is non-zero.
2702
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002703Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2704
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00002705 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
2706 RESOURCE_TRACK around code which uses init_resource_track
2707 and print_resource_track. (Not all systems have timeval)
2708
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002709 * super.c: Remove excess #includes which are not necessary.
2710
2711 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
2712
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00002713Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2714
2715 * pass*.c, super.c: Massive changes to avoid using printf and
2716 com_err routines. All diagnostic messages are now routed
2717 through the fix_problem interface.
2718
2719Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2720
2721 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
2722 entries.
2723
2724 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
2725 PR_2_DUP_DOT_DOT.
2726
2727Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2728
2729 * problem.c: Added new problem codes for some of the
2730 superblock corruption checks, and for the pass header
2731 messages. ("Pass 1: xxxxx")
2732
2733 * util.c (print_resource_track): Now takes a description
2734 argument.
2735
2736Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2737
2738 * super.c, unix.c, e2fsck.c: New files to separate out the
2739 operating-specific operations out from e2fsck.c.
2740 e2fsck.c now contains the global e2fsck context management
2741 routines, and super.c contains the "pass 0" initial
2742 validation of the superblock and global block group
2743 descriptors.
2744
2745 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
2746 (nearly) all global variables and moved them to the e2fsck
2747 context structure.
2748
2749 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
2750 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
2751 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
2752
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00002753Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2754
2755 * message.c: Add compression for the word "Illegal"
2756
2757 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
2758 PR_2_BAD_BLOCK_DEV
2759
2760Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2761
2762 * pass1.c (pass1, check_device_inode), pass2.c
2763 (process_bad_inode): Use a more stringent test for a valid
2764 device.
2765
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00002766Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2767
2768 * e2fsck.c (check_mount): Add stronger warning message about the
2769 perils of running e2fsck on a mounted filesystem.
2770
Theodore Ts'o024996c1997-06-17 05:38:35 +00002771Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2772
2773 * Release of E2fsprogs 1.11
2774
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00002775Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2776
2777 * pass1.c (mark_table_blocks): Mark the superblock and group
2778 descriptor blocks first, so that any conflicts between
2779 these and the bitmap or inode table blocks is noticed.
2780
2781 * problem.c: Fix message printed out when a block or inode bitmap
2782 conflicts with other fs data, has the correct group number
2783 in it.
2784
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00002785Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2786
2787 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
2788
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002789Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2790
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00002791 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
2792 Hawes (whawes@star.net).
2793
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002794 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
2795 bad blocks command so that all of the filesystem gets
2796 tested in the case where the blocksize 2048 or 4096.
2797
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00002798Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
2799
2800 * Release of E2fsprogs version 1.10
2801
2802Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2803
2804 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
2805 where ext2fs_get_next_inode returns the
2806 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
2807
2808Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2809
2810 * Release of E2fsprogs version 1.09
2811
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00002812Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2813
2814 * Release of E2fsprogs version 1.08
2815
Theodore Ts'o521e3681997-04-29 17:48:10 +00002816Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2817
2818 * pass1b.c (clone_file_block): If we clone a directory, we need to
2819 update the dblist entry so that we check (and correct) the
2820 right directory block.
2821
2822Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2823
2824 * pass1.c (process_block): Don't clear blocks references to
2825 filesystem metadata; let pass 1B handle this case.
2826
2827 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
2828
2829 * pass1b.c (pass1d): Deal with a block which is shared with
2830 filesystem metadata.
2831
2832 * e2fsck.h: Make block_illegal_map be a global variable
2833
2834Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2835
2836 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
2837 feature.
2838 (get_backup_sb): New function which attempts to obtain the
2839 correct backup superblock (if possible).
2840
2841Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2842
2843 * e2fsck.c (main): Check the version of the library, and warn if
2844 the library is out of date; this happens generally due to
2845 users who manually install e2fsprogs.
2846
2847 * pass1.c (pass1_get_blocks): If the passed in inode number for
2848 get_blocks isn't what we're expecting pass back
2849 EXT2_ET_CALLBACK_NOT_HANDLED.
2850
Theodore Ts'o21c84b71997-04-29 16:15:03 +00002851Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
2852
2853 * Release of E2fsprogs version 1.07
2854
2855Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2856
2857 * icount.c: New file which implements an inode count abstraction.
2858 This significantly reduces amount of memory needed to
2859 check really large filesystems.
2860
2861 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
2862 abstraction.
2863
2864Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2865
2866 * dirinfo.c (dir_info_iter): New function which allows iteration
2867 over the directories in the dir_info map.
2868
2869 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
2870 over all directories in the dir_info structure, instead of
2871 iterating all inodes looking for directories, and then
2872 looking up the directories using get_dir_info().
2873
2874Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2875
2876 * pass1.c (pass1, process_block):
2877 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
2878 manual code to manage the directory block list information.
2879
2880 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
2881 (deallocate_inode): Call the ext2 library routine
2882 ext2_inode_has_valid_blocks() instead of
2883 inode_has_valid_blocks().
2884
2885 * swapfs.c (swap_inodes): Add check so that we don't try to call
2886 swap_inode_blocks unless the inode has valid blocks.
2887 (Otherwise a long fast symlink might cause
2888 swap_inode_blocks to erroneously get called.)
2889
2890Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2891
2892 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
2893 PR_2_DOT_DOT_NULL_TERM.
2894
2895 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
2896 .. entries are null-terminated, since the 2.0 kernel
2897 requires this (for no good reason).
2898
2899Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2900
2901 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
2902 that we can recover from missing inode tables.
2903
2904 * dirinfo.c (get_dir_info): If there are no directories in the
2905 dir_info abstraction, don't core dump (because dir_info is
2906 NULL).
2907
2908 * e2fsck.c (main): Don't try using the backup superblocks if there
2909 aren't any.
2910 (check_super_block): If there are illegal inode table or
2911 bitmaps, set the filesystem as being in error.
2912
2913Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2914
2915 * pass2.c (check_dir_block): Added check to make sure that rec_len
2916 is a a multiple of 4 (so that the directory entries are
2917 4-byte aligned).
2918
2919Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2920
2921 * Makefile.in (uninstall): Uninstall all programs in the PROGS
2922 line.
2923 (PROGS): Don't build and install the extend program by
2924 default.
2925
2926
2927Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2928
2929 * pass1.c (process_inodes): Make sure the stashed_ino variable is
2930 saved and restored as well.
2931 (pass1): For fast sym links, skip the check_blocks
2932 processing step altogether.
2933
2934Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2935
2936 * problem.c, message.c: New files, to completely refurbish how
2937 filesystem problems are reported to the user. The
2938 diagnostic messages are now encoded out in an easily
2939 customizable, extensible format. The messages printed out
2940 in preen mode are all on one line, and contain the device
2941 name.
2942
2943Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2944
2945 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
2946 deleted files.
2947
2948 * pass1.c (pass1): Ignore missing inode table errors during the
2949 scan, and just skip past those inodes.
2950
2951 * pass3.c (check_root): Remove root_ino argument, and assume that
2952 the root inode must be EXT2_ROOT_INO. Move responsibility
2953 of setting the parent of the root inode in the directory
2954 inode structure to pass2().
2955
2956 * pass2.c (check_dir_block): Don't allow links to the root
2957 directory.
2958
2959 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
2960 since the inode is no longer used.
2961
2962Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2963
2964 * e2fsck.c (main): If the superblock magic number is wrong, or the
2965 block group fails a sanity check, then automatically
2966 restart trying to use the backup superblocks.
2967
2968 * pass1.c (mark_table_blocks): Make the inode tables ahead of
2969 everything else; in the case where a bitmap block overlays
2970 the inode table, the inode table should take precedence.
2971
2972 * pass2.c (maybe_clear_entry): Make the deleted/unused error
2973 message fit on one line, since the error can happen during
2974 a preen pass. (We eventually need to revamp the whole
2975 e2fsck error reporting and prompting system, but that's a
2976 job for another day.)
2977
2978Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2979
2980 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
2981 for the benefit of the inode scan functions.
2982
2983 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
2984 indicating that an inode is in a bad block, mark that
2985 inode as being used, as well as in the inode "bb" map.
2986
2987 * pass2.c (maybe_clear_entry): New function which generalizes the
2988 error cases when a directory entry needs to be cleared.
2989 (check_dir_block): If an inode is in the "bb" map, offer
2990 to clear the directory entry, since the inode is in a bad
2991 block.
2992
2993 * pass4.c (pass4): If an inode is marked as used, but is is marked
2994 in the "bb" map, don't process it as a disconnected inode.
2995
2996Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2997
2998 * Release of E2fsprogs version 1.06
2999
Theodore Ts'o5c576471997-04-29 15:29:49 +00003000Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3001
3002 * e2fsck.c (main): Print out the version number of the shared
3003 library when using the -V option.
3004
3005 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
3006 consistency's sake.
3007
3008 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
3009 out the backup superblocks when we know we have a valid
3010 filesystem.
3011
3012Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3013
3014 * util.c (preenhalt): Make it explicit on preenhalt that running
3015 e2fsck manually means without the -a or -p flag.
3016
3017Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3018
3019 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
3020 (Linux/FT actually sets the mode bits, so we have to
3021 handle it specially.)
3022
3023 * e2fsck.c (check_if_skip): Print a message if the filesystem is
3024 just dirty, so that the user knows that it's about to be
3025 checked (since this will take a while).
3026
3027Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3028
3029 * pass4.c: If a disconnected inode is zero-length, prompt to
3030 delete it instead of connecting it to lost+found.
3031
3032Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3033
3034 * Release of E2fsprogs version 1.05
3035
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00003036Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3037
3038 * pass4.c (pass4): If the user refuses to connect an unattached
3039 inode to lost+found, don't try to set i_links_count. This
3040 is bad, since if the user says yes, the inode will be
3041 marked as unused, which is not necessarily the right
3042 thing, especially since the rest of the cleanup doesn't
3043 happen here.
3044
3045 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
3046 dellocating an inode. (Not strictly necessary, but...)
3047
3048 * pass4.c (pass4): Add "bonehead" explanation to the "programming
3049 error" message.
3050
3051Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3052
3053 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
3054 byte-swap the filesystem so that it is normalized. -S
3055 will byte-swap the filesystem regardless of its current
3056 byte-order.
3057
3058 * swapfs.c: New file, which will byte-swap a filesystem.
3059
3060Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3061
3062 * pass1.c (pass1): Change handling on files with non-zero dtime
3063 and non-zero i_link_count; before we treated them as
3064 deleted file per botched ext2 0.3c kernel behavior. We
3065 now clear dtime instead.
3066
3067Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3068
3069 * e2fsck.c (main): If e2fsck sets the clean bit, even if
3070 nothing else is changed, make sure FSCK_NONDESTRUCT is
3071 set (since after all having the filesystem set to
3072 invalid is an error. :-)
3073
3074Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3075
3076 * pass1.c (process_block): Make sure that meta data doesn't get
3077 accidentally set in the dir_blocks array (which could
3078 happen in some error condtions).
3079
3080 * pass1.c (pass1):
3081 * pass2.c (process_bad_inode): Check for fragments in a
3082 OS-independent fashion.
3083
3084Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3085
3086 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
3087 cleanup for the filesystem.
3088
3089Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3090
3091 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
3092
Theodore Ts'o62c06f71997-04-29 14:34:47 +00003093Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3094
3095 * Release of E2fsprogs version 1.04
3096
3097Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3098
3099 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
3100 try "e2fsck -b 8193" before allowing e2fsck to relocate
3101 inode table blocks.
3102
3103 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
3104 depending on the option to configure. Added targets for
3105 e2fsck.static and e2fsck.shared for people who want to
3106 build a static or shared variant manually.
3107
Theodore Ts'o7f88b041997-04-26 14:48:50 +00003108Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
3109
3110 * Release of E2fsprogs version 1.03
3111
3112Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
3113
3114 * e2fsck.c (show_stats): Don't use floating point to display
3115 percentage of non-contiguous files, as different libc
3116 handle result truncation differently, and this causes the
3117 test suite to bomb out depending on which libc you are
3118 using.
3119
3120 * util.c (allocate_memory): Fix error message to omit extraneous
3121 %%s.
3122
3123Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
3124
3125 * pass4.c (pass4):
3126 * pass2.c (check_dir_block):
3127 * pass1.c (pass1): Add support for dynamic first inode revision.
3128
3129Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
3130
3131 * pass3.c (check_root): Fix spelling typo
3132
3133Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
3134
3135 * e2fsck.c (check_super_block): If the superblock fails certain
3136 internal consistency checks, exit with a fatal error after
3137 printing the "superblock is corrupt message".
3138
Theodore Ts'o74becf31997-04-26 14:37:06 +00003139Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
3140
3141 * Release of E2fsprogs version 1.02
3142
3143Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
3144
3145 * pass1.c (process_block): Check to see if a file is "fragmented".
3146 i.e., non-contiguous. Note that any file which is larger
3147 than the block group is guaranteed to be non-contiguous.
3148 We may want to use a different hueristic for deciding
3149 whether or not a file is "fragmented".
3150
3151 * e2fsck.c (show_stats): Print statistics of how many
3152 non-contiguous files are on the system.
3153
3154Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
3155
3156 * badblocks.c (read_bad_blocks_file, test_disk): Fold
3157 functionality of test_disk() (which runs badblocks) into
3158 read_bad_blocks_file(); test_disk() now calls
3159 read_bad_blocks_file() with a NULL bad_blocks_file
3160 argument.
3161
3162Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
3163
3164 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
3165 #if defined(linux). The latter won't work if we're
3166 compiling -ansi.
3167
Theodore Ts'o297f47a1997-04-26 14:25:20 +00003168Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
3169
3170 * e2fsck.c (check_mount): For Linux systems, the check to see if
3171 the root is mounted read-only has to be done for all
3172 filesystems, not just for the root filesystem, due to the
3173 way that some /etc/rc scripts are set up.
3174
Theodore Ts'o50e1e101997-04-26 13:58:21 +00003175Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
3176
3177 * Makefile.in (install): Strip programs when they are installed.
3178 (e2fsck): Build e2fsck statically.
3179
3180Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
3181
3182 * util.c (preenhalt): Preenhalt now takes an argument, which is an
3183 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
3184 flag in the superblock in cases where preenhalt is called.
3185 All calls to preenhalt() were changed to either
3186 preenhalt(fs) or preenhalt(NULL) in a few cases where the
3187 fs pointer was not available. (Most notable, for block
3188 read/write errors.)
3189
3190Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
3191
3192 * ehandler.c:
3193 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
3194
3195Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
3196
3197 * e2fsck.c (show_stats): Show statistics about how many inodes
3198 have indirect, doubly indirect, and triply indirect
3199 blocks. Allow up to 8 digits for statistics, instead of
3200 merely 6, so things look pretty for large filesystems.
3201
3202 * pass1.c (pass1): Keep statistics about indirect, doubly
3203 indirect, and triply indirect blocks.
3204
3205 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
3206 pass 1.
3207
3208Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
3209
3210 * util.c, ehandler.c: Move #include of <sys/resource.h> after
3211 #include of "e2fsck.h", since sys/resource.h may depend on
3212 sys/time.h, which is #included in e2fsck.h.
3213
3214Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
3215
3216 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
3217 function to determine if the device is mounted.
3218
3219 * e2fsck.c (main): Add better error messages if ext2fs_open()
3220 fails.
3221
3222Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
3223
3224 * pass1.c (check_blocks): If we're clearing a directory, clear
3225 pb.is_dir so we don't do the following check of making
3226 sure the directory size matches; this is pointless, since
3227 we've already cleared the inode.
3228
3229Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3230
3231 * pass1.c (bad_primary_block): New function, called by
3232 process_bad_block, which explains the facts of life to the
3233 user when a block in the primary superblock or primary
3234 group descriptors is bad.
3235
3236 * pass2.c (check_dot): Handle the case where the first directory
3237 entry is used, but not ".".
3238
3239 * pass2.c (check_dotdot): Handle the case where the second directory
3240 entry is used, but is not "..".
3241
3242Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3243
3244 * e2fsck.c (check_super_block): Get the size of the physical
3245 device and if it is smaller than the reported size of the
3246 filesystem, report an error.
3247
3248Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
3249
3250 * e2fsck.c (check_if_skip): Print the number of allocated files and
3251 blocks on clean filesystems.
3252
3253Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
3254
3255 * e2fsck.8: Updated date and version number.
3256
3257Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
3258
3259 * pass1.c (check_blocks): Check that directory size matches *exactly*
3260 the count of allocated blocks.
3261
3262Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
3263
3264 * pass1b.c (pass1d): Free the shared[] array when we're done with
3265 it to avoid a memory leak.
3266
3267 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
3268 block_dup_map.
3269
3270 * pass2.c (process_bad_inode): When clearing the inode, make sure
3271 the pathname is freed, to prevent a memory leak.
3272
3273 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
3274 when we're finished with them.
3275 (check_block_bitmaps): Free free_array when we're finished
3276 with them.
3277
3278 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
3279 linking the executable.
3280
3281 * pass2.c (process_bad_inode): Even on OS's that don't support the
3282 fragment fields, make sure the Linux equivalent fields are
3283 set to zero. If an OS wants to reuse these fields, which
3284 is probably a bad idea (although we may get desperate in
3285 the future) this code will have to be changed.
3286
3287 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
3288 on the inode field, and then blockcnt field. This is just
3289 to keep the ordering of dir_blocks the same on all
3290 platforms when there are more than on missing directory
3291 blocks, which are indicated directories with holes, which
3292 are indicated with the block number being set to zero.
3293
3294Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3295
3296 * pass1.c (check_blocks, process_block): check_blocks() modified
3297 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
3298 the inode is a directory. process_block() now checks to
3299 see if a directory has a "hole", or missing block. If so,
3300 this fact is recorded in the directory block list so that
3301 the problem can be resolved in pass #2.
3302
3303 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
3304 allocate new blocks for directories with "holes". Called
3305 out of check_dir_block if a block in the directory block
3306 list is zero.
3307
3308 * pass3.c (get_lost_and_found): Move location of free(block) to
3309 prevent possible memory leak.
3310
3311Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3312
3313 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
3314 instead of alloca() --- alloca is not portable! Check to
3315 make sure the filename is not longer than EXT2_NAME_LEN,
3316 and offer to fix it by truncating it, since it should
3317 never happen.
3318
3319 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
3320 not portable!! In any case putenv() in some systems must
3321 take a static character array or malloc()'ed memory;
3322 passing memory allocated using alloca() to putenv() is not
3323 advisable.
3324
3325 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
3326 alloca() --- alloca() is not portable!!!
3327
3328Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
3329
3330 * pass1b.c (pass1c):
3331 * pass3.c (check_root, get_lost_and_found):
3332 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
3333 to read/write the directory block.
3334
3335Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
3336
3337 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
3338 make sure VMIN and VTIME are set correct.
3339
3340Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
3341
3342 * pass1.c (mark_block_used): Change to be an inline function.
3343 Assume that the block validity checks are already done,
3344 and use the fast variant of the bitmap functions.
3345
3346Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
3347
3348 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
3349 bounds of the bitmaps in advance, and then use the fast
3350 variant of e2fs_test_{block,inode}_bitmap.
3351
3352 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
3353 the bounds checking has already been done earlier.
3354
3355Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
3356
3357 * pass1.c (pass1): Allocate and free the block_illegal_map, which
3358 is used for shortcut processing in process_block.
3359 (mark_table_blocks): Initialize block_illegal_map with the
3360 filesystem blocks.
3361 (describe_illegal_block): New helper function that
3362 describes why a block is illegal.
3363 (process_block): Use block_illegal_map as a shortcut
3364 to determine whether a block is bad. Use
3365 describe_illegal_block to print out why the block is illegal.
3366
3367Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
3368
3369 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
3370
3371 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
3372 <mntent.h> if they don't exist. (Mostly so that "make
3373 depend" works.)
3374
3375 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
3376 it exists).
3377
3378 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
3379 exist.
3380
3381Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3382
3383 * pass2.c (process_bad_inode, check_for_zero_long,
3384 check_for_zero_char): Change long to u32, and char to u8.
3385
3386Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3387
3388 * util.c (inode_has_valid_blocks):
3389 * pass2.c (process_bad_inode):
3390 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
3391 LINUX_S_IS* instead of S_IS*.
3392
3393 * e2fsck.h: Don't #include <sys/stat.h>
3394
3395 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
3396 this program is pretty much useless if BLKFLSBUF isn't
3397 supported.)
3398
3399 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
3400 used.
3401
3402Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
3403
3404 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
3405 to allocate space for file names instead of using fixed size buffers.
3406 (process_bad_inode): Only check inode frag fields if
3407 HAVE_EXT2_FRAGS is defined (by configure).
3408 * pass1.c (pass1): Only check the inode frag fields if
3409 HAVE_EXT2_FRAGS is defined (by configure).
3410
3411 * e2fsck.c (check_mount): Only check for a mounted filesystem if
3412 HAVE_MNTENT_H is defined (by configure).
3413 (PRS): Use alloca to allocate the new path string, instead of
3414 having a fixed size buffer (which was the wrong size anyway).
3415 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
3416 is defined.
3417
3418 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
3419 defined (by configure).
3420
3421 * Makefile.in: Rewritten to conform to GNU coding standards and
3422 support separate compilation directories.
3423
3424Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
3425
3426 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
3427
Theodore Ts'of3db3561997-04-26 13:34:30 +00003428Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
3429
3430 * pass1.c (unwind_pass1): Clear the file type statistics counter
3431 when pass 1 needs to be restarted from scratch.
3432
3433 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
3434 being reallocated to blocks in the next block group,
3435 instead of the current block grup.
3436
3437 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
3438 inode.i_links_count is set.
3439
3440Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
3441
3442 * pass1.c (process_block): Add checks for if the block is
3443 trepassing on a superblock or group descriptor table.
3444
3445Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
3446
3447 * main.c (corrupt_msg): Extend the message which is printed out
3448 when the superblock is corrupt, to include the suggestion
3449 of using the -b option to specify an alternate superblock.
3450
3451Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
3452
3453 * badblocks.c (read_bad_blocks_file): If we are adding or
3454 replacing bad blocks in the bad blocks inode, sanity check
3455 the bad block inode first, and clear out any illegal blocks.
3456
3457 * pass2.c (check_name): Don't bomb out if the attempt to get the
3458 pathname of the containing directory returns an error; the
3459 directory may be too badly damaged to expect that
3460 ext2fs_get_pathname will always succeed. Use "???" if the
3461 pathname can't be obtained (it's only for a printf to the
3462 user anyway).
3463
3464 The name of the containing directory and the bad filename
3465 were incorrectly interchanged in the user message. Fixed.
3466
3467 * pass2.c (check_name, check_dir_block): Use a common static
3468 string for the unknown pathname.
3469
3470Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
3471
3472 * Fixed lots of printf formats to make sure that block and inode
3473 numbers are printed as unsigned integers.
3474
3475Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
3476
3477 * pass5.c (check_block_end): Fix calculation of how the last block
3478 in the block bitmap should be calculated.
3479
3480Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
3481
3482 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
3483 be an ext2fs_inode_bitmap, and free it properly.
3484
3485 * e2fsck.h
3486 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
3487 level to the superblock.
3488
3489Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
3490
3491 * e2fsck.c (usage): Fixed bogus usage message.
3492
3493Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
3494
3495 * pass1.c (process_bad_block): Fixed bug so that blocks in the
3496 backup superblocks and group descriptors are handled gracefully.
3497