blob: c5cbff0005985e641d12e7f72571269c0d8e017e [file] [log] [blame]
Theodore Ts'o9c7ec172003-07-26 01:03:34 -040012003-07-25 Theodore Ts'o <tytso@mit.edu>
2
3 * Release of E2fsprogs 1.34
4
Theodore Ts'o48e6e812003-07-06 00:36:48 -040052003-07-06 Theodore Ts'o <tytso@mit.edu>
6
7 * pass2.c: Fix gcc -Wall nitpicks (missing #include <string.h>)
8
9 * dict.c, dict.h: Fix gcc -Wall nitpicks (indented cpp directives)
10
Theodore Ts'od3128cc2003-06-24 18:06:03 -0400112003-06-8 Theodore Ts'o <tytso@mit.edu>
12
13 * problem.c: Fix spelling error.
14
Theodore Ts'o113e4052003-05-17 21:00:46 -0400152003-05-17 Theodore Ts'o <tytso@mit.edu>
16
17 * unix.c (show_stats), e2fsck.h: Use ngettext (abbreivated with
18 the macro P_(str1, str2, n)) to simplify the statistics
19 reporting.
20
Theodore Ts'o2a29f132003-05-05 12:08:47 -0400212003-05-05 Theodore Ts'o <tytso@mit.edu>
22
23 * unix.c (main): If --enable-testio-debug is set, then use the
24 test_io manager so we can watch what e2fsck is doing.
25
Theodore Ts'oa04eba32003-05-03 16:35:17 -0400262003-05-03 Theodore Ts'o <tytso@mit.edu>
27
Theodore Ts'oddc32a02003-05-03 18:45:55 -040028 * unix.c (show_stats): Remove uneeded use of _() around string
29 under #ifndef NLS
30
31 * problem.c: Mark two strings (PR_1_RELOC_TO and
32 PR_2_NON_UNIQUE_FILE) as not being printf format strings.
33 Fix typo (doubled 'is') in PR_2_FILE_ACL_BAD.
34
Theodore Ts'oa04eba32003-05-03 16:35:17 -040035 * Makefile.in: Add $(LIBINTL) to the link line so we can support
36 using the internal gettext library.
37
38 * e2fsck.h: Add #ifndef protection around LOCALEDIR definition.
39
Theodore Ts'o6177c412003-04-27 17:34:14 -0400402003-04-27 Theodore Ts'o <tytso@mit.edu>
41
42 * message.c (expand_at_expression): Fixed NLS support for message
43 abbreviations.
44
Theodore Ts'o71df0dc2003-04-21 16:17:09 -0400452003-04-21 Theodore Ts'o <tytso@mit.edu>
46
47 * Release of E2fsprogs 1.33
48
Theodore Ts'o520ead32003-04-19 13:48:27 -0400492003-04-19 Theodore Ts'o <tytso@mit.edu>
50
51 * rehash.c: Fix lint warnings by including string.h and ctype.h
52
53 * pass2.c (dict_de_cmp): Fix lint warnings by using const pointers.
54
55 * unix.c (e2fsck_simple_progress), e2fsck.h: Fix lint warnings by
56 using const pointers. Remove unused variables.
57
Theodore Ts'o12dd69f2003-04-17 21:55:38 -0400582003-04-17 Theodore Ts'o <tytso@mit.edu>
59
60 * rehash.c (name_cmp): Sort the deleted inodes to the end of the
61 list, for portability to systems that whose qsort does not
62 perform a stable sort.
63
Theodore Ts'obc34d6b2003-04-16 14:05:06 -0400642003-04-16 Theodore Ts'o <tytso@mit.edu>
65
66 * unix.c: Bracket progress bar output with control-A and control-B
67 characters. These characters are used as in-band
68 signalling to allow a logging program to filter out the
69 progress bar.
Theodore Ts'o908b7852003-04-16 15:20:13 -040070 (PRS): Use setvbuf instead of setbuf to force stdout and
71 stderr to be non-buffered when the stdout/stderr are a pipe.
Theodore Ts'o12dd69f2003-04-17 21:55:38 -040072 This fixes a cosmetic problem when using e2fsck under
73 logsave.
Theodore Ts'o908b7852003-04-16 15:20:13 -040074
Theodore Ts'offf45482003-04-13 00:44:19 -0400752003-04-12 Theodore Ts'o <tytso@mit.edu>
76
77 * unix.c: Add #ifdef around #include <sys/ioctl.h>
78
Theodore Ts'o2a77a782003-04-05 22:50:44 -0500792003-04-05 Theodore Ts'o <tytso@mit.edu>
80
81 * super.c (check_super_block): Update the global free block and
82 inode counters from the block group specific counters
83 quietly. This is needed for an experimental patch which
84 eliminates locking the entire filesystem when allocating
85 blocks or inodes; if the filesystem is not unmounted
86 cleanly, the global counts may not be accurate.
87
Theodore Ts'oaa75ecc2003-03-17 10:01:22 -0500882003-03-17 Theodore Ts'o <tytso@mit.edu>
89
90 * util.c: Explicitly declare e2fsck_global_ctx as extern for the
91 benefit of the Apple Darwin port.
92
Theodore Ts'o1d2eef42003-03-15 13:30:07 -0500932003-03-15 Theodore Ts'o <tytso@mit.edu>
94
95 * rehash.c (e2fsck_rehash_dir): If user specified the -n option,
96 skip trying to write out directory.
97 (e2fsck_rehash_directories): Fix the percentage
98 calculation in the progress bar.
99
Theodore Ts'ob0700a12003-03-14 01:43:56 -05001002003-03-14 Theodore Ts'o <tytso@mit.edu>
101
Theodore Ts'o12dd69f2003-04-17 21:55:38 -0400102 * problem.c, problem.h (PR_2_REPORT_DUP_DIRENT): Add new problem
103 code.
Theodore Ts'o09266682003-03-14 22:19:10 -0500104
105 * pass2.c (check_dir_block): Check for duplicate filenames within
106 a single directory block (because this is the easy case;
107 we don't currently check for duplicates that span
108 directory blocks, for now. Eventually for htree
109 directories we can do this by searching for all directory
110 blocks that have a hash overflow, and then searching the
111 adjacent blocks to find all other potential duplicates.)
112
Theodore Ts'oe71d8732003-03-14 02:13:48 -0500113 * iscan.c, scantest.c, unix.c: And #ifdef protection around
114 #include of malloc.h
115
Theodore Ts'ob0700a12003-03-14 01:43:56 -0500116 * rehash.c (duplicate_search_and_fix): Now search for duplicates
117 filenames, and either prompt to remove a complete
118 duplicate entry, or to rename a duplicate filename.
119 (e2fsck_rehash_dir): Use a progress bar to report
120 progress, and don't print all of the directory inodes as
121 they are optimized.
122
123 * problem.c, problem.h (PR_2_DUPLICATE_DIRENT,
124 PR_2_NON_UNIQUE_FILE): New problem codes.
125
126 * unix.c (e2fsck_simple_progress), e2fsck.h: New function which
127 can be called to provide specialized progress bars that
128 are not related to the top-level pass-based completion
129 percentage.
130
131 * pass3.c (e2fsck_adjust_inode_count), e2fsck.h: Export previously
132 static function.
133
Theodore Ts'o77be4d22003-03-06 12:39:55 -05001342003-03-06 <tytso@mit.edu>
135
136 * e2fsck.8.in: Fix minor nit in the -C option. (Addresses Debian
137 bug #173612)
138
Theodore Ts'of3640932003-03-01 19:47:44 -05001392003-03-01 Theodore Ts'o <tytso@mit.edu>
140
141 * Makefile.in, journal.c, unix.c: Use blkid functions to find the
142 journal from the UUID, and to interpret the device
143 specification.
144
145 * e2fsck.c: Free the blkid_cache when releasing the e2fsck context
146 structure.
147
148 * e2fsck.h: If strnlen is not present, define it as a macro which
149 calls e2fsck_strlen(). Add prototype for string_copy().
150 Add blkid_cache to e2fsck context, and make
151 filesystem_name, device_name, and journal_name be
152 non-const variables.
153
154 * pass1.c, pass2.c: Remove static strnlen function
155
156 * util.c (string_copy, e2fsck_strnlen): New functions
157
Theodore Ts'o19445ef2003-01-29 21:04:52 -05001582003-01-29 Theodore Ts'o <tytso@mit.edu>
159
160 * unix.c (usage): Make descripton -c be a bit more explicit
161
Theodore Ts'o4f489282003-01-22 18:28:15 -05001622003-01-22 Theodore Ts'o <tytso@mit.edu>
163
164 * pass1.c (check_blocks): Use the EXT2_I_SIZE macro.
165
Theodore Ts'ob92ae152003-01-02 16:53:54 -05001662003-01-02 Theodore Ts'o <tytso@mit.edu>
167
168 * unix.c (main): Detect if there is an attempt to run the journal
169 twice, and abort with an error if this is the case.
170 (Address IBM Bugzilla bug #1226)
171
Theodore Ts'oe34bf432002-12-18 18:28:10 -05001722002-12-18 Theodore Ts'o <tytso@mit.edu>
173
174 * pass2.c (strnlen): Provide strnlen if libc doesn't.
175
Theodore Ts'o8161a742003-01-02 16:36:44 -05001762003-11-19 Theodore Ts'o <tytso@mit.edu>
177
178 * unix.c (PRS): Print an error if more than one of the -p/-a, -n
179 or -y options are specified.
180
Theodore Ts'o54779c62002-11-13 07:00:16 -05001812002-11-12 Theodore Ts'o <tytso@mit.edu>
182
183 * problem.c: Make HTREE problems PR_PREEN_OK, so that we don't
184 abort an e2fsck after the filesystem has been mounted
185 using the 2.4 ext2 codebase.
186
Theodore Ts'o38513012002-11-09 15:00:56 -05001872002-11-09 Theodore Ts'o <tytso@mit.edu>
188
189 * Release of E2fsprogs 1.32
190
Theodore Ts'oae65b292002-11-08 20:08:48 -05001912002-11-08 Theodore Ts'o <tytso@mit.edu>
192
193 * Release of E2fsprogs 1.31
194
Theodore Ts'o299d7422002-11-08 11:10:28 -05001952002-11-08 <tytso@snap.thunk.org>
196
Theodore Ts'oc1637bd2002-11-08 15:55:17 -0500197 * unix.c (main): Fix a bug where e2fsck could erroneously mark a
198 filesystem as being valid if it was being checked and it
199 is interrupted with a ^C. (Bug introduced in e2fsprogs
200 1.28.)
201
Theodore Ts'o5e72cdb2002-11-08 15:35:13 -0500202 * unix.c (PRS), journal.c: Set the default level of journal
203 debugging to be 0, and allow the user to set the level of
204 journal debugging by using the E2FSCK_JBD_DEBUG
205 environment variable.
206
Theodore Ts'o299d7422002-11-08 11:10:28 -0500207 * pass1.c (new_table_block), super.c (check_super_block), swapfs.c
208 (swap_filesys): Clear EXT2_FLAG_MASTER_SB_ONLY to make
209 sure the backup superblocks and group descriptors are
210 updated when we make an important change to the
211 superblocks and/or group descriptors. (i.e., generating a
212 UUID, allocating filesystem metadata, or byte-swapping the
213 filesystem.)
214
Theodore Ts'oee895132002-11-07 16:16:55 -05002152002-11-07 Theodore Ts'o <tytso@mit.edu>
216
217 * e2fsck.h, unix.c (main, check_mount): Fix e2fsck so that it
218 returns the appropriate exit code, so that the boot
219 scripts will be told that they need to automatically
220 reboot.
221
Theodore Ts'obe93ef02002-10-31 18:38:55 -05002222002-10-31 Theodore Ts'o <tytso@mit.edu>
223
Theodore Ts'o5d823a42002-11-01 02:13:53 -0500224 * Release of E2fsprogs 1.30
225
2262002-10-31 Theodore Ts'o <tytso@mit.edu>
227
Theodore Ts'ob40ffd72002-10-31 19:30:24 -0500228 * unix.c (usage), e2fsck.8.in: Add the -D option to the usage and
229 command synopsis. (Addresses Debian bug #167108)
230
Theodore Ts'obe93ef02002-10-31 18:38:55 -0500231 * pass1.c (e2fsck_pass1): Check the superblock write time to see
232 whether or not we can safely do the LOW_DTIME checks.
233 (Addresses Sourceforge bug #620980)
234
Theodore Ts'o76dd5e52002-10-30 23:07:21 -05002352002-10-30 Theodore Ts'o <tytso@mit.edu>
236
Theodore Ts'o482afc42002-10-31 03:32:34 -0500237 * Makefile.in (install): Search all compression extensions when
238 deleting old man pages.
239
Theodore Ts'o76dd5e52002-10-30 23:07:21 -0500240 * pass1.c (mark_table_blocks): Fix bug in meta_bg support; only
241 mark blocks legacy group descriptor blocks up to
242 s_first_meta_bg.
243
Theodore Ts'oa49929b2002-10-20 00:58:08 -04002442002-10-20 Theodore Ts'o <tytso@valinux.com>
245
246 * pass1.c (mark_table_blocks): Add support for the meta_blockgroup
247 filesystem format.
248
Theodore Ts'o3e699062002-10-13 23:56:28 -04002492002-10-13 Theodore Ts'o <tytso@mit.edu>
250
251 * pass3.c (e2fsck_get_lost_and_found): Pass in mode 700 to
252 ext2fs_new_inode().
253
254 * unix.c (show_stats): Fix format bug if NLS is in use.
255
256 * journal.c, pass1.c, revoke.c, util.c: Fix gcc -Wall nits.
257
Theodore Ts'o64aecc42002-10-11 17:44:12 -04002582002-10-08 Theodore Ts'o <tytso@mit.edu>
259
260 * pass3.c (e2fsck_get_lost_and_found): Create the lost+found
261 directory with mode 0700.
262
Theodore Ts'o8132d842002-10-02 22:07:17 -04002632002-10-02 Theodore Y. Ts'o <tytso@mit.edu>
264
265 * pass2.c (parse_int_node, check_dir_block): Add byte-swap
266 functions around the htree code, so that it works on
267 big-endian machines.
268
269 * swapfs.c (swap_filesys): For PPC machines, byte-swap the bitmap,
270 since PPC big-endian filesystems were historically wierd.
271 This is just for the regression test, since no one
272 actually uses them anymore...
273
Theodore Ts'oad4fa462002-09-30 11:19:19 -04002742002-09-30 Theodore Ts'o <tytso@mit.edu>
275
276 * problem.c, problem.h (PR_2_HTREE_BAD_LIMIT,
277 PR_2_HTREE_BAD_COUNT, PR_2_HTREE_HASH_ORDER,
278 PR_2_HTREE_BAD_DEPTH): Add new problem codes.
279
280 * pass2.c (salvage_directory, check_dir_block): Avoid counting
281 directory entries twice during a directory salvage. Make
282 the salvaging algorithm smarter about directory entry size
283 overruns.
284 (parse_int_node): Add check to make sure the limit and
285 count fields in the node headers are sane. Also check
286 to make sure the hash table in ascending order.
287 (pass2, htree_depth): For all leaf nodes, determine their
288 depth in the tree, and make sure it matches with the depth
289 in the htree root information.
290
Theodore Ts'ofe5b72d2002-09-29 19:05:26 -04002912002-09-29 Theodore Ts'o <tytso@mit.edu>
292
Theodore Ts'oe8254bf2002-09-29 19:30:28 -0400293 * pass2.c (check_dir_block): Do a more paranoid check when trying
294 to determine whether or not a directory entry is a
295 completely empty leaf block or leaf node. Otherwise
296 e2fsck might get confused into thinking that a valid dxdir
297 was corrupted.
298
Theodore Ts'ofe5b72d2002-09-29 19:05:26 -0400299 * rehash.c (e2fsck_rehash_dir): Apply patch from Christopher Li
300 which avoids creating an empty directory entry at the end
301 of the directory block. This screws up earlier versions
302 of the indexed directory patch.
303
Theodore Ts'oe70ae992002-09-28 09:16:28 -04003042002-09-28 Theodore Ts'o <tytso@mit.edu>
305
306 * rehash.c (write_directory): Clear the index flag if by
307 reoptimizing the directory, we bring it back into a
308 non-indexed state.
309 (e2fsck_rehash_dir): Allow directories that contain two
310 blocks to be indexed. Otherwise when they grow, they
311 never will be indexed by the kernel.
312
313 * unix.c (main): Only update the master superblock; there's no
314 point updating the backup superblocks, and it speeds up
315 fsck slightly.
316
317 * pass2.c (salvage_directory): New function called by
318 check_dir_block() which is much more sophisticated about
319 how it salvages corrupted filesystems.
320
Theodore Ts'oc6633052002-09-24 01:26:50 -04003212001-09-24 Theodore Tso <tytso@mit.edu>
322
323 * Release of E2fsprogs 1.29
324
Theodore Ts'ocf3909e2002-09-06 10:14:12 -04003252002-09-06 Theodore Ts'o <tytso@mit.edu>
326
327 * rehash.c (copy_dir_entries): Fix bug which caused corrupted
328 directories if there are 4 or 8 bytes left over in a
329 directory page when optimizing/reindexing a directory.
330
Theodore Ts'o87ee8dc2002-08-31 03:02:57 -04003312001-08-31 Theodore Tso <tytso@thunk.org>
332
333 * Release of E2fsprogs 1.28
334
Theodore Ts'oceecbc72002-08-31 02:35:35 -04003352002-08-31 Theodore Ts'o <tytso@mit.edu>
336
337 * ehandler.c (e2fsck_handle_read_error): If the user asks to
338 ignore the error, offer to try forcing a write of the
339 block to the disk; sometimes this will cause the drive to
340 remap the bad block.
341
Theodore Ts'oea1959f2002-08-31 02:32:41 -04003422002-08-31 Theodore Ts'o <tytso@valinux.com>
343
344 * pass2.c (e2fsck_pass2): If this is a HTREE directory, sort the
345 dblist so that the first block of all of the directories
346 is handled first so we can read the hash version
347 information.
348 (check_dir_block): Examine the root node for correctness,
349 and offer to clear it if it is not correct. Also copy the
350 hash version to the dx_dir structure, so that the proper
351 hash function can be used for other blocks in the
352 directory.
353
354 * problem.c, problem.h (PR_2_HTREE_BAD_ROOT): Add new problem code.
355
Theodore Ts'oa3da9d12002-08-21 12:52:03 -04003562002-08-21 Theodore Ts'o <tytso@mit.edu>
357
358 * problem.c: Fix PR_1_RELOC_BLOCK_ALLOCATE message to explain that
359 it is necessary to find contiguous blocks in a particular
360 block group.
361
Theodore Ts'o0684a4f2002-08-17 10:19:44 -04003622002-08-17 Theodore Ts'o <tytso@mit.edu>
363
Theodore Ts'of044b4d2002-08-17 13:32:21 -0400364 * e2fsck.8.in: Add clarifying text describing how e2fsck works
365 with ext3 filesytems. (Addresses Debian bug #145044).
366
367 * pass1.c (handle_htree): Add support for EXT2_HASH_TEA
368
Theodore Ts'o0684a4f2002-08-17 10:19:44 -0400369 * e2fsck.h, e2fsck.c (e2fsck_allocate_context): Add new field to
370 the e2fsck context, ext_attr_ver, which specifies the EA
371 format version.
372
373 * unix.c (usage, parse_extended_opts, PRS), e2fsck.8.in: Add new
374 option -E, which allows the users to specify extended
375 options. Added ea_ver extended option.
376
377 * pass1.c (e2fsck_pass1_check_device_inode): Add ext2_filsys
378 argument to this function, so we can account for the
379 presence of extended attribute blocks attached to device
380 inodes.
381 (e2fsck_pass1_check_symlink, e2fsck_pass1): Take into
382 account the fact that symlinks can also have extended
383 attribute blocks.
384 (check_ext_attr): Don't be flexible about the EA format
385 version. Check against the version number in
386 ctx->ext_attr_ver.
387 (check_blocks): Check all inodes, so that we account for
388 extended attribute blocks belonging to special files.
389 Clean up i_size checks.
390
391 * pass1b.c (pass1b): Check all inodes, so that we account for
392 extended attribute blocks belonging to special files.
393 (delete_file_block): Use ext2fs_alloc_block_stats() to
394 update the filesystem statistics.
395 (delete_file): Attempt to decrement the extended
396 attribute refcount, and free the EA block if the count
397 hits zero.
398 (clone_file): Fixed bugs in EA handling. Don't call
399 block_iterate on inodes that don't have a valid i_block[]
400 array. Reread the base inode since it may have been
401 changed by ext2fs_block_iterate. When updating inodes as
402 part of cloning an EA block, write out the correct inode
403 structure.
404
405 * pass2.c (deallocate_inode_block, deallocate_inode): Use standard
406 ext2fs_alloc_*_stats functions to update the filesystem
407 statistics.
408 (deallocate_inode): Attempt to decrement the extended
409 attribute refcount, and free the EA block if the count
410 hits zero.
411 (e2fsck_process_bad_inode): Add extra argument to calls
412 to e2fsck_pass1_check_device_inode ().
413
414 * pass3.c (e2fsck_get_lost_and_found): Use standard
415 ext2fs_alloc_*_stats functions to update the filesystem.
416 statistics when creating /lost+found.
417 (adjust_inode_count): Remove debugging code that can never
418 be triggered.
419
420 * pass4.c (disconnect_inode): Add explanation about why we only
421 clear inodes that have no data blocks and no EA blocks.
422 Use ext2fs_inode_alloc_stats2 function to update the
423 filesystem statistics when clearing a zero-length inode.
424
425 * problem.c, problem.h (PR_1B_ADJ_EA_REFCOUNT,
426 PR_2_ADJ_EA_REFCOUNT): Add new problem codes.
427
428 * super.c (release_inode_block), (release_orphan_inodes): Use the
429 standard ext2fs_alloc_*_stats functions to update the
430 filesystem statistics.
431 (release_inode_blocks): Attempt to decrement the extended
432 attribute refcount, and free the EA block if the count
433 hits zero.
434
Theodore Ts'o838e7732002-08-01 12:37:00 -04004352002-08-01 Theodore Ts'o <tytso@mit.edu>
436
437 * dict.c, dict.h: New file from kazlib 1.20 which implements a
438 red-black tree
439
440 * pass1b.c: Massive changes to take advantage of dict.c. This
441 removes several O(n**2) algorithms from the rare case
442 where there are a large number of blocks claimed by
443 multiple inodes.
444
Theodore Ts'o542867f2002-07-24 07:42:02 -04004452002-07-24 Theodore Ts'o <tytso@mit.edu>
446
Theodore Ts'o850d05e2002-07-25 00:00:08 -0400447 * e2fsck.8.in, e2fsck.h, pass3.c (e2fsck_pass3), unix.c, rehash.c:
448 Add new option -D, which requests e2fsck to optimize all
449 directories. Rehash.c will also compress and sort
450 non-indexed directories.
451
452 * problem.c, problem.h: Rename PR_3A_REHASH_* to PR_3A_OPTIMIZE_*
453
454 * unix.c (PRS): Make sure the signal_cancel is registered without
455 SA_RESTART.
456
457 * rehash.c (e2fsck_rehash_dir, copy_dir_entries, calculate_tree):
458 Restructured code in e2fsck_rehash_dir into two new
459 subroutines to make the code more understandable/maintainable.
460 (set_root_node): Fixed bug which caused the root node to
461 be invalid on non-FILETYPE filesystems due to an
462 unitialized variable.
463 (calculate_tree): Fix bug where pointers which might get
464 invalidated if realloc() moves outdir->buf around.
465 (e2fsck_rehash_dir): Fix memory leak bug.
466
467 * pass3.c (e2fsck_get_lost_and_found), e2fsck.h, e2fsck.c:
468 Exported as a public interface a function for finding the
469 lost and found directory. Cache the location of the lost
470 and found directory in the e2fsck context structure.
471
Theodore Ts'o542867f2002-07-24 07:42:02 -0400472 * util.c (ask_yn, read_a_char): Note when the user has typed ^C,
473 and abort processing by longjmp'ing to ctx->abort_loc.
474
Theodore Ts'o3214a452002-07-23 12:00:00 -04004752002-07-23 Theodore Ts'o <tytso@mit.edu>
476
477 * pass1.c (e2fsck_pass1): If e2fsck is run with -n, don't create
478 the dirs_to_hash list, since we don't want to reindex
479 directories if the filesystem is opened read-only.
480
Theodore Ts'o4cae0452002-07-21 14:14:03 -04004812002-07-21 Theodore Ts'o <tytso@mit.edu>
482
483 * e2fsck.8.in: Document new exit code FSCK_CANCELED
484
485 * unix.c (PRS, signal_cancel): Capture SIGINT and SIGTERM signals
486 and set a flag in the e2fsck context indicating that
487 cancellation has been requested, so that e2fsck will exit
488 only at safe points.
489 (main): Change the exit handling so that if a cancellation
490 is requested, return FSCK_CANCELED (a new exit code 32).
491 e2fsck can now return more than one exit code as part of a
492 bitmask (as had been documented in the man page).
493
494 * pass2.c (e2fsck_pass2, check_dir_block), pass3.c (e2fsck_pass3),
495 pass4.c (e2fsck_pass4): Check to see if a cancellation was
496 requested, and abort processing if necessary.
497
Theodore Ts'ob7a00562002-07-20 00:28:07 -04004982002-07-19 Theodore Ts'o <tytso@mit.edu>
499
500 * rehash.c, Makefile.in: New file which rewrites directories using
501 the htree format.
502
503 * problem.c (fix_problem), problemP.h (PR_PREEN_NOHDR): Add option
504 which suppresses the header printed when in preen mode.
505
506 * pass3.c (e2fsck_pass3): If there are entries on the dirs_to_hash
507 list, call e2fsck_rehash_directories to reindex those
508 directories.
509 (e2fsck_expand_directory): Generalize the old
510 expand_dirctory() function so it can expand a directory to
511 a guaranteed minimum size.
512
513 * e2fsck.h (struct e2fsck_struct): Add the dirs_to_hash list. Add
514 new function prototypes for rehash.c and for
515 e2fsck_expand_directory().
516
517 * e2fsck.c (e2fsck_reset_context): Free the dirs_to_hash list.
518
519 * pass1.c (e2fsck_pass1): Initialize the dirs_to_hash list if the
520 htree feature is present in the filesystem.
521 (check_blocks): If a non-htree directory has more than 2
522 blocks, put it on the dirs_to_hash list.
523
524 * pass2.c (clear_htree): Add corrupt htree directories to the
525 dirs_to_hash list.
526
527 * problem.h, problem.c (PR_3A_PASS_HEADER, PR_3A_REHASH_ITER,
528 PR_3A_REHASH_DIR_ERR, PR_3A_REHASH_DIR_HEADER,
529 PR_3A_REHASH_DIR, PR_3A_REHASH_DIR_END): Add new problem codes
530
531 * pass2.c (parse_int_node), problem.c (PR_2_HTREE_BADBLK): Fix
532 problem display.
533
Theodore Ts'o62acaa12002-07-15 16:54:42 -04005342002-07-15 Theodore Ts'o <tytso@mit.edu>
535
536 * pass2.c (e2fsck_pass2): Use dx_dir->numblocks instead of
537 dx_dir->ino to indicate that a bad inode was cleared.
538
Theodore Ts'o503f9e72002-06-26 16:52:10 -04005392002-06-26 Theodore Ts'o <tytso@mit.edu>
540
541 * pass1.c (check_blocks): Move htree handling to handle_htree().
542 Factor out calls to ext2fs_write_inode so that it happens
543 if dirty_inode is non-zero.
544 (handle_htree): Add checks for invalid htree root, invalid
545 hash version, invalid hash version, and htree depth too deep.
546
547 * problem.h, problem.c (PR_1_HTREE_NODIR, PR_1_HTREE_BADROOT,
548 PR_1_HTREE_HASHV, PR_1_HTREE_INCOMPAT, PR_1_HTREE_DEPTH):
549 Add new problem codes.
550
551 * pass2.c (parse_int_node): Fix silly typo.
552 (check_dir_block): Change to use new ext2fs_dirhash()
553 function prototype.
554 (pass2): Fixed two minor bugs discovered by the test case:
555 Don't stop checking dxdir's after clearing a bad inode.
556 If there is a bad max hash, make sure the bad_dir flag
557 is set to make sure we try to clear inode.
558
Theodore Ts'o8fdc9982002-06-25 23:26:34 -04005592002-06-25 Theodore Ts'o <tytso@mit.edu>
560
561 * e2fsck.c (e2fsck_reset_context): Free the dx_dirinfo structure.
562
563 * message.c: Add new abbrevations @h and @p, "HTREE directory
564 inode" and "problem in".
565
566 * pass1.c (check_blocks): If the inode has the INDEX_FL flag,
567 register the block into the indexed directory data
568 structures. Or if the filesystem doesn't have the
569 DIR_INDEX flag, offer to clear the INDEX_FL.
570
571 * pass2.c (e2fsck_pass2, parse_int_node): Add support check htree
572 directories (we don't check all possible corruptions yet).
573
574 * problem.h, problem.h (PR_1_HTREE_SET, PR_2_HTREE_NOTREF,
575 PR_2_HTREE_DUPREF, PR_2_HTREE_MIN_HASH, PR_2_HTREE_MAX_HASH,
576 PR_2_HTREE_CLEAR, PR_2_HTREE_FCLR, PR_2_HTREE_BADBLK): Add
577 new problem codes.
578
579 * unix.c (main): If ENABLE_HTREE is not defined, complain if the
580 filesystem has the dir_index feature.
581
582 * Makefile.in, e2fsck.h, dx_dirinfo.c: New file (and group of
583 functions) which keeps track of blocks in HTREE directory
584 blocks.
585
Andreas Dilgerb21bf262002-06-10 11:05:56 -06005862002-05-22 Andreas Dilger <adilger@clusterfs.com>
587
588 * super.c (check_superblock): Check that the number of inodes and
589 blocks in a group is less than 2^16, so that the free inode
590 and block counts for a group fit into the group descriptor
591 table fields. Any more than that would need a COMPAT flag.
592
Theodore Ts'o0d634672002-05-22 00:22:38 -04005932002-05-22 Theodore Ts'o <tytso@mit.edu>
594
595 * pass1.c (check_ext_attr): Update to support the V2 Bestbits EA
596 format. We automatically determine from the first EA
597 block we visit whether we are using the V1 or V2 format.
598
Theodore Ts'oda307042002-05-21 21:19:14 -04005992002-05-21 Theodore Ts'o <tytso@mit.edu>
600
601 * pass1.c (process_block): If an inode has too many blocks or
602 is too big, then offer to truncate the inode.
603 (check_blocks): Don't bother checking the size to see if
604 it's too big, since that's just a symptom, not the disease
605 (which we're now appropriately checking in process_block).
606
607 * problem.c, problem.h: Add new problem codes PR_1_INODE_TOOBIG,
608 PR_1_TOOBIG_DIR, PR_1_TOOBIG_REG, PR_1_TOOBIG_SYMLINK, and
609 add the latch code PR_LATCH_TOOBIG.
610
Theodore Ts'obcf9c5d2002-05-21 09:14:17 -04006112002-05-20 Theodore Ts'o <tytso@mit.edu>
612
613 * e2fsck.h, pass1.c (e2fsck_pass1_check_symlink), pass2.c
614 (e2fsck_process_bad_inode): Add an extra
615 argument so a scratch buffer can be passed into the
616 function.
617
618 * pass1.c (e2fsck_pass1_check_device_inode,
619 e2fsck_pass1_check_symlink): If the EXT2_INDEX_FL flag is
620 set, then the device/FIFO is invalid.
621 (check_immutable): Don't check for EXT2_INDEX_FL; we take
622 care of that elsewhere now.
623 (e2fsck_pass1): Check to see if the symlink is valid
624 before we offer to clear any immutable bits. This matches
625 the order in which we check other special files.
626
627 * pass2.c (e2fsck_pass2): Allocate a bigger scratch buffer so we
628 can pass part of it to e2fsck_process_bad_inode.
629
630 * pass4.c (e2fsck_pass4): If we need to call
631 e2fsck_process_bad_inode(), allocate the necessary scratch
632 buffer.
633
634 * problem.h, problem.c: Change PR_2_SYMLINK_SIZE to be
635 PR_2_INVALID_SYMLINK, and change the text
636 accordingly. Revert the text change for PR_1_SET_IMMUTABLE
637 since we no longer check for EXT2_INDEX_FL in
638 check_immutable().
639
6402002-05-18 Andreas Dilger <adilger@clusterfs.com>
641
642 * pass1.c (e2fsck_pass1_check_symlink): Remove checks of
643 immutable/append-only checks, since this is handled by
644 check_immutable. For non-fast symlinks, read in the
645 data block and check the length to make sure it
646 matches with the inode size.
647 (check_immutable): Generalize to also check for the
648 EXT2_INDEX_FL flag.
649 (check_blocks): For non-regular files, signal a bad inode
650 size if i_size_high is non-zero.
651
652 * pass2.c: Only count large files if they are regular files
653 (not just if they aren't directories).
654
655 * problem.c, problem.h: Change comment for PR_2_SYMLINK_SIZE
656 to indicate that it can be triggered by any symlink,
657 not fast symlink. Change text for PR_1_SET_IMMUTABLE
658 to indicate that it the EXT2_INDEX_FL was set.
659
Theodore Ts'o31e29a12002-05-17 10:53:07 -04006602002-05-17 Theodore Ts'o <tytso@mit.edu>
661
662 * pass1.c (e2fsck_pass1): When calculating max_sizes, omit capping
663 this value by the calculated value of max_sect_sizes.
664 The inode may be a sparse inode, and the limit of
665 max_sect_sizes assumed a non-sparse inode and a limit
666 based on a 32-bit i_blocks field measured in 512 sectors.
667
668 * super.c (check_super_block): Fix check for s_log_block_size so
669 that takes into account fact that there is an offset of
670 EXT2_MIN_BLOCK_LOG_SIZE.
671
672 * pass1.c: Allocate max_sizes array to be big enough to support
673 the larger block sizes.
674
6752002-05-16 Andreas Dilger <adilger@clusterfs.com>
676
677 * unix.c (main), util.c (get_backup_sb): Use EXT2_MAX_BLOCK_SIZE
678 instead of using a hardcoded value of 4096.
679
680 * super.c (check_super_block): Change checks for s_log_block_size
681 s_log_frag_size so they support the larger block sizes.
682
683 * pass1.c (e2fsck_pass1): Calculate max_sizes array for block
684 sizes up to EXT2_MAX_BLOCK_SIZE (to support block sizes
685 greater than 4k).
686
Theodore Ts'oa8e77242002-03-08 03:12:14 -05006872002-03-08 Theodore Tso <tytso@mit.edu>
688
689 * Release of E2fsprogs 1.27
690
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05006912002-03-07 Theodore Tso <tytso@mit.edu>
692
693 * journal.c, pass5.c, revoke.c: Fix gcc -Wall complaints
694
6952002-03-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'of2d5c932002-03-07 03:13:07 -0500696
697 * unix.c (main): Don't close the filesystem before calling
698 fatal_error(); this just causes a needless warning about a
699 bad I/O manager magic number.
700
701 * journal.c (e2fsck_check_ext3_journal): Offer to clear the inode
702 in case the journal is too small, or the inode number in
703 the superblock doesn't appear to be random.
704
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05007052002-03-06 Theodore Tso <tytso@mit.edu>
Theodore Ts'of1226322002-03-07 02:47:07 -0500706
707 * problem.h, problem.c: PR_5_BLOCK_RANGE_UNUSED,
708 PR_5_BLOCK_RANGE_USED, PR_5_INODE_RANGE_UNUSED,
709 PR_5_INODE_RANGE_USED: Add new problem codes.
710
711 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Collapse
712 reporting of adjacent blocks and inodes into a range.
713
Theodore Ts'o14308a52002-03-05 03:26:52 -05007142002-03-04 Philipp Thomas <pthomas@suse.de>
715
716 * unix.c (main): Newer libintl needs LC_CTYPE to be set in
717 addition to LC_MESSAGES.
718
Theodore Ts'o57173d02002-02-26 14:59:39 -05007192002-02-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'ob9f40922002-02-24 03:08:57 -0500720
721 * Makefile.in (install): Install hard links for man pages for
722 fsck.ext2 and fsck.ext3. Remove any compressed man
723 pages before installing the man pages.
724
Theodore Ts'o57173d02002-02-26 14:59:39 -05007252002-02-22 Theodore Tso <tytso@mit.edu>
Theodore Ts'od1a21822002-02-22 00:17:59 -0500726
727 * journal.c: Improve code maintainability and reduce code size by
728 moving common code paths in e2fsck_journal_init_dev() and
729 e2fsck_journal_init_inode() into e2fsck_get_journal().
730 Also fixed a memory leak in recover_ext3_journal().
731
732 * super.c (release_orphan_inodes): Fix memory leak.
733
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05007342002-02-03 Theodore Tso <tytso@thunk.org>
735
736 * Release of E2fsprogs 1.26
737
7382001-12-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o3ed57c22001-12-24 15:01:59 -0500739
740 * unix.c (PRS): Don't allow the -c and -l/-L options to be
741 specified at the same time.
742
743 * e2fsck.h (E2F_OPT_WRITECHECK), unix.c (PRS),
744 badblocks.c (read_bad_blocks_file): If two -c options are
745 specified, then perform a non-destructive read/write scan
746 of the disk.
747
748 * e2fsck.8.in: Document the double -c option; also encourage users
749 to use -c instead of the -l/-L options since it's too hard
750 for users to get things like the blocksize parameter correct.
751
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05007522001-12-23 Theodore Tso <tytso@mit.edu>
Theodore Ts'o19007e52001-12-23 19:33:51 -0500753
Theodore Ts'of1a17612001-12-23 22:27:52 -0500754 * util.c (get_backup_sb): This function now searches for the
755 backup superblock by iterating over possible blocksizes
756 instead of defaulting a guess of 8193 if the superblock
757 isn't available.
758
759 * message.c (expand_percent_expression), unix.c (main): Pass in
760 new parameters to get_backup_sb. Also, in unix.c, use the
761 blocksize paramter in the e2fsck context structure instead
762 of using a static variable, since get_backup_sb wants to
763 be able to set the blocksize paramter.
764
765 * e2fsck.h: Update function prototype for get_backup_sb; also add
766 the blocksize parameter to the e2fsck context structure.
767
Theodore Ts'o19007e52001-12-23 19:33:51 -0500768 * Makefile.in, jfs_user.h: Move linux/jbd.h to
769 ext2fs/kernel-jbd.h, to avoid using the system header
770 file version of hbd.h when using diet glibc (since it
771 forcibly adds /usr/include to the beginning of the
772 include search path.)
773
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05007742001-12-21 Theodore Tso <tytso@mit.edu>
Theodore Ts'od37066a2001-12-21 23:28:54 -0500775
Theodore Ts'o6a50c5e2001-12-21 23:29:35 -0500776 * problem.c (fix_problem): Use ctx->filesystem_name if the
777 ctx->device_name is NULL.
778
Theodore Ts'od37066a2001-12-21 23:28:54 -0500779 * journal.c (e2fsck_check_ext3_journal): Give the opportunity to
780 run the journal even if recovery flag is cleared. If
781 we're using a backup superblock, run the journal by
782 default.
783
784 * e2fsck.h (E2F_OPT_FORCE), unix.c (PRS, check_if_skip): Use a
785 bitfield in the e2fsck context flags word to indicate
786 whether or not a check should be forced. This allows the
787 journal code to set the option if necessary to force a
788 filesystem check.
789
790 * problem.h, problem.c: Remove PR_0_JOURNAL_RESET_JOURNAL, and add
791 PR_0_JOURNAL_RUN and PR_0_JOURNAL_RUN_DEFAULT. Update
792 problem decription texts.
793
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05007942001-12-16 Theodore Tso <tytso@mit.edu>
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500795
Theodore Ts'o4ea7bd02001-12-16 23:23:37 -0500796 * e2fsck.h (ext2fs_get_refcount_size), unix.c (check_mount, PRS),
797 pass1.c (adjust_extattr_refcount),
798 ea_refcount.c (ea_refcount_create): Fix gcc -Wall nits.
799
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500800 * recovery.c, revoke.c: Update to versions from 2.4.17-pre8.
801
802 * journal.c, jfs_user.h: Update support code for new version of
803 recover.c and revoke.c. Fix support for filesystems with
804 external journals.
805
Gabriel Paubertb3b3d462001-11-30 13:45:28 +01008062001-11-30 Gabriel Paubert <paubert@iram.es>
807
808 * journal.c (e2fsck_journal_load): Fix an endianness bug.
809
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008102001-11-26 Theodore Tso <tytso@mit.edu>
Theodore Ts'o24bfb442001-11-26 15:51:14 -0500811
812 * super.c (check_super_block): Make sure that if the inode table
813 or allocation bitmap is zero, that it is marked as
814 invalid, so that in pass #1, a new bitmap/inode table gets
815 properly allocated. (Addresses Debian Bug #116975)
816
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008172001-11-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o1e9a7e02001-11-24 16:40:57 -0500818
819 * e2fsck.8.in: Fix minor typo in man page and clarify device
820 specification.
821
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008222001-10-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'o62e3e7f2001-10-07 02:13:30 -0400823
824 * journal.c (clear_v2_journal_fields, e2fsck_journal_load): If the
825 V2 fields are set on a V1 journal superblock, or an
826 internal V2 journal has s_nr_users is non-zero, clear the
827 entire journal superblock beyond the V1 superblock. This
828 fixes botched V1->V2 updates.
829
830 * problem.c, problem.h (PR_0_CLEAR_V2_JOURNAL): Add new problem code.
831
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008322001-09-20 Theodore Tso <tytso@mit.edu>
Theodore Ts'o773fd8a2001-10-06 21:26:27 -0400833
834 * e2fsck.h, journal.c (e2fsck_move_ext3_journal): Add new function
835 which will automatically relocate the ext3 journal from a
836 visible file to an invisible journal file if the
837 filesystem has been opened read/write.
838
839 * super.c (check_super_block): Add call to e2fsck_move_ext3_journal
840
841 * problem.c, problem.h (PR_0_MOVE_JOURNAL, PR_0_ERR_MOVE_JOURNAL):
842 Add new problem codes.
843
Theodore Ts'ofbf91112001-09-20 10:47:47 -04008442001-09-20 Theodore Tso <tytso@thunk.org>
845
846 * Release of E2fsprogs 1.25
847
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008482001-09-19 Theodore Tso <tytso@mit.edu>
Theodore Ts'oae6cdcf2001-09-19 15:17:25 -0400849
850 * unix.c (main): If a superblock is specified explicitly by the
851 user, don't try to automatically fall back to an
852 alternate superblock.
853
Theodore Ts'ofb707752001-09-04 15:00:37 -04008542001-09-02 Theodore Tso <tytso@thunk.org>
855
856 * Release of E2fsprogs 1.24a
857
Theodore Ts'o109624a2001-08-31 00:59:55 -04008582001-08-30 Theodore Tso <tytso@thunk.org>
859
860 * Release of E2fsprogs 1.24
861
Theodore Ts'ob1f204f2001-08-30 16:42:09 -04008622001-08-30 Theodore Tso <tytso@valinux.com>
863
864 * pass1.c (e2fsck_pass1): For EXT2_RESIZE_INO, allow its i_mode to
865 either be zero or a regular file (for compatibility with
866 Andreas's on-line resizing programs).
867
Theodore Ts'o53abed02001-08-27 12:18:16 -04008682001-08-27 Theodore Tso <tytso@valinux.com>
869
Theodore Ts'o0f8973f2001-08-27 12:44:23 -0400870 * unix.c (main): Remove EXT2FS_VERSION from the version display,
871 since it only confuses people.
872
Theodore Ts'o53abed02001-08-27 12:18:16 -0400873 * pass1.c (strnlen): Provide strnlen if libc doesn't.
874
Theodore Ts'o943ed872001-08-27 12:29:22 -04008752001-08-15 Theodore Tso <tytso@valinux.com>
876
877 * Release of E2fsprogs 1.23
878
Theodore Ts'o85645a6f2001-08-13 06:11:39 -04008792001-08-13 Theodore Tso <tytso@valinux.com>
880
Theodore Ts'oeb4ab512001-08-13 10:58:41 -0400881 * super.c (release_orphan_inodes): If the filesystem contains
882 errors, don't run the orphan * list, since the orphan list
883 can't be trusted.
884
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400885 * pass1.c (check_size): Fix logic in check_size; the previous code
886 only offered to clear the inode size fields if both size
887 and i_size_high were zero.
Theodore Ts'oa40ecbb2001-08-13 06:15:36 -0400888 (e2fsck_pass1_check_device_inode): If i_blocks is
889 non-zero, then assume that the device/socket/fifo inode
890 is bogus.
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400891
Theodore Ts'o2b94c652001-08-09 04:08:52 -04008922001-08-09 Theodore Tso <tytso@valinux.com>
893
Theodore Ts'oa4742692001-08-09 04:14:04 -0400894 * pass1.c, pass2.c, problem.c, problem.h: Fix bug introduced by
895 Andreas's symlink code; check_blocks() was unconditionally
896 testing inode_bad_map without checking to see if it
897 existed first. Fixed problem a different way; we now no
898 longer check inode_bad_map at all, since the file might
899 not get deleted in pass 2 anyway. We move the large file
900 feature reconciliation code to to e2fsck_pass2(), and in
901 deallocate_inode() in pass2.c, we decrement the large
902 files counter if we're about to delete a large file.
903
Theodore Ts'o2b94c652001-08-09 04:08:52 -0400904 * unix.c (show_stats): Print the number of large files in verbose
905 mode.
906
Theodore Ts'oc0a083f2001-08-07 10:17:41 -04009072001-08-07 Theodore Tso <tytso@valinux.com>
908
909 * journal.c (recover_ext3_journal): If s_errno is set in the
910 journal superblock, set the EXT2_ERROR_FS flag in the
911 filesystem superblock after the journal is run.
912
Theodore Ts'obd512b62001-08-04 21:33:03 -04009132001-08-04 Andreas Dilger <root@lynx.adilger.int>
914
915 * message.c: Change comments for %D and %d expansion in e2fsck
916 problem codes. It was not consistent which was for dirent
917 expansion, and which was for directory number expansion.
918
919 * problem.c (PR_2_FINAL_RECLEN, PR_2_BAD_FILETYPE): Fix problem
920 codes which got caught by the confusion between %D and %d.
921
Theodore Ts'od007cb42001-08-04 20:39:39 -04009222001-08-04 Theodore Tso <tytso@valinux.com>
923
924 * problem.c (PR_2_SYMLINK_SIZE): Change description to make it
925 more clear (and remove %s expansion). Also add missing
926 periods to the end of a number of problem descriptions.
927
928 * pass2.c (e2fsck_process_bad_inode): Remove unneeded problem
929 context string set now that the problem description for
930 PR_2_SYMLINK_SIZE has been changed.
931
932 * pass1.c (e2fsck_pass1_check_symlink): Consolidate some checks,
933 and check the validity of the symlink block here (so that
934 we detect this case here instead of later). Also use
935 sizeof(inode->i_block) instead EXT2_LINK_DIR.
936
Theodore Ts'o83e6ac82001-07-30 16:29:52 -04009372001-07-30 Theodore Tso <tytso@valinux.com>
938
939 * unix.c (check_mount): Remove the code which tested for the root
940 filesystem being mounted read-only, and depend on the
941 results flags from ext2fs_check_if_mounted.
942
Theodore Ts'o1e165262001-07-29 11:48:10 -04009432001-07-29 Theodore Tso <tytso@valinux.com>
944
Theodore Ts'o6d222f32001-07-29 12:06:58 -0400945 * unix.c (check_if_skip): Free the e2fsck context structure on a
946 normal clean filesystem exit, to make it easier to find
947 real memory leaks.
948 (PRS): Only update the path to include /sbin at the
949 beginning if the -c option is given, again to make it
950 easier to find memory leaks.
Theodore Ts'o0628ae32001-07-29 12:26:46 -0400951 (main): Move the final print_resource_track call after the
952 filesystem and the context are freed.
Theodore Ts'o6d222f32001-07-29 12:06:58 -0400953
954 * journal.c (e2fsck_journal_init_dev): Avoid memory leak if we
955 need to search for the journal device.
956 (e2fsck_journal_release): Free the journal IO channel when
957 we release the journal handle, to avoid a memory leak.
958
Theodore Ts'o1e165262001-07-29 11:48:10 -0400959 * e2fsck.c (e2fsck_reset_context): Fix bug; only close the io
960 channel if it is *different* from the filesystem io
961 channel.
962
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -04009632001-07-27 Theodore Tso <tytso@valinux.com>
964
Theodore Ts'oa092c562001-07-27 22:40:09 -0400965 * problem.c (PR_1_SET_IMMUTABLE): Clarify problem message.
966
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -0400967 * pass1.c (e2fsck_pass1): Check for symlinks that have the
968 immutable flag set (and offer to clear them).
969
Theodore Ts'o24ceb242001-07-26 09:02:56 -04009702001-07-26 Theodore Tso <tytso@valinux.com>
971
972 * pass1.c (e2fsck_pass1): Free ctx->block_ea_map at the end of
973 pass 1.
974
Theodore Ts'o14fe1c32001-07-25 19:48:24 -04009752001-07-25 Theodore Tso <tytso@valinux.com>
976
977 * pass1.c (check_ext_attr): Skip zero-length EA entries.
978
979 * problem.c: PR_1_EA_ALLOC_COLLISION shouldn't abort, but should
980 prompt to clear the EA block.
981
Theodore Ts'oadee8d72001-07-23 00:17:49 -04009822001-07-22 Theodore Tso <tytso@valinux.com>
983
984 * journal.c (ll_rw_block): Use ctx->journal_io instead of the
985 filesystem's io_channel.
986 (e2fsck_journal_init_dev): New function which supports
987 initialization of the external journal.
988 (e2fsck_get_journal): Remove code which flagged an error
989 if the superblock reported the use of an external journal.
990 (ext3_journal_via_mount): Remove unsued, #ifdefed out function.
991
992 * problem.c, problem.h: Removed error codes no longer used
993 (PR_0_JOURNAL_UNSUPP_DEV, PR_0_JOURNAL_BAD_DEV,
994 PR_0_JOURNAL_UNSUPP_UUID) and replace them with new error
995 codes related with failures in loading the external
996 journal (PR_0_JOURNAL_UNSUPP_MULTIFS,
997 PR_0_CANT_FIND_JOURNAL, PR_0_EXT_JOURNAL_BAD_SUPER).
998 Also changed the text assocated with PR_0_JOURNAL_BAD_UUID
999 to reflect the case where the external journal isn't
1000 correct for this filesystem.
1001
1002 * unix.c (PRS), e2fsck.8.in: Add new option -j which allows
1003 the user to specify the pathname to find the external journal.
1004
1005 * e2fsck.c (e2fsck_reset_context): Close journal_io if it isn't
1006 the same as the filesystem io_channel.
1007
1008 * e2fsck.h: Add new fields (journal_io and journal_name) in the
1009 context structure to support external journals.
1010
Theodore Ts'od3124012001-07-20 14:13:49 -040010112001-07-20 Theodore Tso <tytso@valinux.com>
1012
1013 * unix.c (main): Add an explicit warning when the filesystem is
1014 left not completely fixed when e2fsck exits. (Addresses
1015 Debian bug #104502.)
1016
Theodore Ts'o55fd07e2001-07-19 16:31:25 -040010172001-07-19 Theodore Tso <tytso@valinux.com>
1018
1019 * pass1.c (check_ext_attr): The entire EA block is now checked to
1020 make sure that parts of the EA block aren't being used for
1021 multiple purposes.
1022
1023 * Makefile.in e2fsck.h, region.c: New file which is used to detect
1024 collisions in extended attribute block.
1025
1026 * problem.h, problem.c (PR_1_EA_MULTI_BLOCK, PR_1_EA_ALLOC_REGION,
1027 PR_1_EA_ALLOC_COLLISION, PR_1_EA_BAD_NAME,
1028 PR_1_EA_BAD_VALUE): Add new problem codes.
1029
Theodore Ts'o3c6b8972001-07-10 14:27:58 -040010302001-07-10 Theodore Tso <tytso@valinux.com>
1031
1032 * journal.c (e2fsck_run_ext3_journal): Only call ext3_flush() if
1033 the superblock is dirty.
1034
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -040010352001-07-07 Theodore Tso <tytso@valinux.com>
1036
Theodore Ts'o7b63fff2001-07-07 23:01:31 -04001037 * pass1b.c (pass1b, process_pass1b_block): Change the num_bad
1038 field calculation so that it only counts EA block entries
1039 as a single multiply claimed block (since once we clone
1040 the EA blocks for one inode, we fix the problem for all of
1041 the other inodes). Also, I moved the num_bad calculation
1042 from process_pass1b_block to the end of pass1b. This
1043 fixes a *significant* performance bug in pass1b which hit
1044 people who had to had a lot of multiply claimed blocks.
1045 (Can you say O(n**3) boys and girls? I knew you could...
1046 Fortunately, this case didn't happen that much in actual
1047 practice.)
1048
1049 * pass1.c (e2fsck_pass1): Defer inodes which have an extended
1050 attribute block for later processing to avoid extra seeks
1051 across the disk.
1052 (process_inode_cmp): If there is no indirect block, sort
1053 by the extended attribute (i_file_acl) block.
1054
Theodore Ts'o7abb2bd2001-07-07 13:20:34 -04001055 * pass1b.c (clone_file_block): Fix bugs when cloning extended
1056 attribute blocks. Moved free of block_buf to after the
1057 code which clones the extattr block, and fixed logic for
1058 changing pointers to the extended attribute field in the
1059 inodes which were affected.
1060 (decrement_badcount): New function which is used whenever
1061 we need to decrement the number of files which claim a
1062 particular bad block. Fixed bug where delete_file wasn't
1063 checking check_if_fs_block() before clearing the entry in
1064 block_dup_map. This could cause a block which was claimed
1065 by multiple files as well as the filesystem metadata to
1066 not be completely fixed.
1067
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -04001068 * pass1.c (adjust_extattr_refcount): Add new function which
1069 adjusts the reference counts of extended attribute blocks
1070 if needed, both up and down.
1071 (e2fsck_pass1): If the refcount or refcount_extra
1072 structure are present, call adjust_extattr_refcount(),
1073 and free it afterwards.
1074
1075 * problem.h, problem.c (PR_1_EXTATTR_READ_ABORT,
1076 PR_1_EXTATTR_REFCOUNT, PR_1_EXTATTR_WRITE): Add new
1077 problem codes.
1078
Theodore Ts'o342d8472001-07-02 11:54:09 -040010792001-07-02 Theodore Tso <tytso@valinux.com>
1080
1081 * pass1.c (e2fsck_pass1, check_ext_attr, check_blocks): Add
1082 initial support for scanning extended attribute blocks.
1083
1084 * e2fsck.c (e2fsck_reset_context): free extended attribute
1085 refcount structure.
1086
1087 * e2fsck.h: Add new fields for accounting for the extended
1088 attribute blocks.
1089
1090 * Makefile.in, ea_refcount.c, e2fsck.h: Add new file which
1091 implements a reference count abstraction.
1092
1093 * problem.c, problem.h: Add new problem codes PR_1_ALLOCATE_REFCOUNT,
1094 PR_1_READ_EA_BLOCK, PR_1_BAD_EA_BLOCK, PR_2_FILE_ACL_BAD
1095
1096 * message.c: Add "@a" as an abbreviation for "extended attribute"
1097
1098 * pass1b.c (clone_file): Add code which handles cloning an
1099 extended attribute block.
1100
1101 * pass1b.c (delete_file):
1102 * pass2.c (deallocate_inode): If the inode contains an extended
1103 attribute block in the file_acl field, clear it and
1104 deallocate the block.
1105
11062001-06-28 Theodore Tso <tytso@valinux.com>
1107
1108 * pass2.c (e2fsck_process_bad_inode): Deal with inodes which are
1109 marked bad because of an invalid file_acl (either because
1110 EXT2_FEATURE_COMPAT_EXT_ATTR is not set, or because the
1111 block number in file_acl is bad.
1112
Theodore Ts'o636a9542001-06-29 17:57:26 -040011132001-06-29 Theodore Tso <tytso@valinux.com>
1114
1115 * unix.c (show_stats): Use long long to calculate the percentage
1116 of the number of blocks in use in the filesystem.
1117
Theodore Ts'o67960132001-06-23 00:16:37 -040011182001-06-23 Theodore Tso <tytso@valinux.com>
1119
1120 * Release of E2fsprogs 1.22
1121
Theodore Ts'od90f3492001-06-22 21:01:17 -040011222001-06-22 Theodore Tso <tytso@valinux.com>
1123
1124 * flushb.c: Use platform independent method of defining the
1125 BLKFLSBUF ioctl. Also include sys/mount.h since on newer
1126 platforms BLKFLSBUF is defined there.
1127
Theodore Ts'o42475e22001-06-22 20:35:38 -040011282001-06-19 Theodore Tso <tytso@valinux.com>
1129
1130 * super.c (release_inode_blocks): Don't try to release the blocks
1131 if the orphaned inode is a device file, symlink, or some
1132 other kind of special file that doesn't have a block list.
1133
Theodore Ts'of4f75ba2001-06-16 01:14:28 +000011342001-06-15 Theodore Tso <tytso@valinux.com>
1135
1136 * Release of E2fsprogs 1.21
1137
Theodore Ts'ob6a08072001-06-14 01:16:17 +000011382001-06-13 Theodore Tso <tytso@valinux.com>
1139
1140 * unix.c (check_if_skip): Adapted patch from Andreas Dilger which
1141 prints the number of mounts or days elapsed since the last
1142 check when e2fsck is forced to check an otherwise clean
1143 filesystem.
1144
Theodore Ts'ocbbf0312001-06-13 00:12:04 +000011452001-06-12 Theodore Tso <tytso@valinux.com>
1146
1147 * badblocks.c: Stop using the compatibility badblocks function,
1148 and use the ext2fs_badblocks_* functions instead.
1149
Theodore Ts'o5df55d72001-06-11 07:00:04 +000011502001-06-11 Theodore Tso <tytso@valinux.com>
1151
Theodore Ts'o3034f622001-06-11 15:17:45 +00001152 * unix.c (PRS): Fix bug introduced in 1.20 which broke the -F
1153 flag.
1154
Theodore Ts'o5df55d72001-06-11 07:00:04 +00001155 * Makefile.in: Add message.c and swapfs.c to the list of source
1156 files to build the make depend.
1157
1158 * swapfs.c, unix.c: Only support the -s and -S options to e2fsck
1159 if ENABLE_SWAPFS is defined.
1160
Theodore Ts'o725c4742001-06-08 11:55:44 +000011612001-06-08 Theodore Tso <tytso@valinux.com>
1162
1163 * recover.c, revoke.c: Synchronize with ext3 0.7a
1164
Theodore Ts'ofdbdea02001-06-02 04:26:26 +000011652001-06-02 Theodore Tso <tytso@valinux.com>
1166
Theodore Ts'oa479fe62001-06-02 04:50:14 +00001167 * recovery.c (scan_revoke_records): Fix bug in recovery code;
1168 missing byte order conversion.
1169
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00001170 * pass1.c (mark_inode_bad): Replace alloc_bad_map with a function
1171 which sets the bit in the bad inode bitmap.
1172 (e2fsck_pass1): Check for fast symlinks with an invalid
1173 size, and set the bad inode map in that case.
Theodore Ts'o62b6d472001-06-02 04:37:02 +00001174 (check_size): Check i_size_high for special files and
1175 prompt to clear it along with i_size if non-zero.
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00001176
1177 * pass2.c (e2fsck_process_bad_inode): Check for fast symlinks with
1178 an invalid size and prompt the user if the inode should be
1179 cleared.
1180
1181 * problem.h, problem.c (PR_2_SYMLINK_SIZE): Added new problem code.
1182
Theodore Ts'o71d521c2001-06-01 19:29:36 +000011832001-06-01 Theodore Tso <tytso@valinux.com>
1184
Theodore Ts'o2f686ac2001-06-02 00:38:40 +00001185 * problem.c, problem.h: Change PR_0_JOURNAL_UNSUPP_INCOMPAT and
1186 PR_0_JOURNAL_UNSUPP_ROCOMPAT so they aren't fatal errors,
1187 but prompt to see if the user should abort. Removed the
1188 PR_0_JOURNAL_RESET_COMPAT problem code.
1189
1190 * journal.c (e2fsck_journal_load): If there are incompatible
1191 journal flags, just return an error code.
1192 (e2fsck_check_ext3_journal): If e2fsck_journal_load
1193 returns an error code indicating that there are
1194 incompatible journal flag, check to see if we should
1195 abort, and then offer to clear the journal.
Theodore Ts'oe3338452001-06-14 07:11:33 +00001196 (Addresses Debian bug #98527.)
Theodore Ts'o2f686ac2001-06-02 00:38:40 +00001197
Theodore Ts'o797f5ef2001-06-01 23:49:46 +00001198 * Makefile.in: Move include/asm/types.h.in to
Theodore Ts'o36a23e12001-06-02 00:54:10 +00001199 lib/ext2fs/ext2_types.h.in.
Theodore Ts'o797f5ef2001-06-01 23:49:46 +00001200
12012001-06-01 Theodore Tso <tytso@valinux.com>
1202
Theodore Ts'o71d521c2001-06-01 19:29:36 +00001203 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
1204 pass1_check_directory): Add a safety check to make sure
1205 ctx->stashed_inode is non-zero.
1206
1207 * pass1b.c (pass1b): Use e2fsck_use_inode_shortcuts() to disable
1208 the inode shortcut processing, instead of manually
1209 clearing only half of the function pointers that needed to
1210 be NULL'ed out. This caused nasty bugs if the last inode
1211 in the filesystem needed dup block processing.
1212
1213 * pass1b.c (clone_file_block): When cloning a directory's metadata
1214 block, don't try to update the directory block list
1215 database, since indirect blocks aren't stored in the
1216 database and the resulting error will abort the file clone
1217 operation.
1218
Theodore Ts'o561cd4d2001-05-25 16:40:56 +000012192001-05-25 Theodore Tso <tytso@valinux.com>
1220
Theodore Ts'obb185862001-05-25 17:35:00 +00001221 * Release of E2fsprogs 1.20
1222
12232001-05-25 Theodore Tso <tytso@valinux.com>
1224
Theodore Ts'o561cd4d2001-05-25 16:40:56 +00001225 * journal.c (e2fsck_journal_reset_super): Remove extraneous line
1226
Theodore Ts'oc7f23362001-05-23 22:19:47 +000012272001-05-23 Theodore Tso <tytso@valinux.com>
1228
1229 * journal.c (e2fsck_journal_reset_super): Fix bug; the reset
1230 journal wasn't getting written out to disk since the dirty
1231 bit wasn't being set on the buffer.
1232 (e2fsck_journal_load): Don't print an error message if the
1233 journal version number is wrong; just return a error code
1234 reflecting this fact. If the block type in the journal
1235 superblcok is obviously not a version number, report the
1236 journal is corrupted.
1237 (e2fsck_check_ext3_journal): On an unsupported journal
1238 version, prompt to abort by default, but then offer a
1239 chance to clear the journal as corrupt.
1240
1241 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_VERSION): Added new
1242 problem code.
1243
Theodore Ts'o424cd2b2001-05-14 04:06:56 +000012442001-05-14 Theodore Tso <tytso@valinux.com>
1245
Theodore Ts'o21afac02001-05-14 12:47:41 +00001246 * pass1.c: Treat inodes with a low dtime (that were from a
1247 corrupted orphan list) specially.
1248
1249 * problem.c, problem.h: Add new problem codes PR_1_LOW_DTIME and
1250 PR_1_ORPHAN_LIST_REFUGEES, and a new latch group,
1251 PR_LATCH_LOW_DTIME.
1252
1253 * problemP.h: Expand the size of the problem flag to be an int
1254 instead of a short. Expand space in the flag word which
1255 is reserved for problem latch flags from 3 bits to 8 bits.
1256
Theodore Ts'o54c637d2001-05-14 11:45:38 +00001257 * e2fsck.h, scantest.c: Change location of ext2_fs.h to be
1258 ext2fs/ext2_fs.h
1259
Theodore Ts'o424cd2b2001-05-14 04:06:56 +00001260 * super.c (check_super_block): Be more strict on checking
1261 s_r_blocks_count superblock field.
1262
12632001-05-13 Theodore Tso <tytso@valinux.com>
1264
1265 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_ROCOMPAT,
1266 PR_0_JOURNAL_UNSUPP_INCOMPAT, PR_0_JOURNAL_RESET_COMPAT):
1267 New problem codes.
1268
1269 * journal.c (e2fsck_journal_load): Use a problem code to
1270 report unsupported feature flags. There is code to
1271 clear unsupported flags, but since this is dangerous,
1272 it's not allowed in the problem code table.
1273
12742001-05-11 Andreas Dilger <adilger@turbolinux.com>
1275
1276 * journal.c (e2fsck_journal_reset_super): initialize the journal
1277 sequence number to a random value to avoid recovering
1278 bad transactions from a corrupt journal.
1279
Theodore Ts'o328a5ce2001-05-13 20:21:25 +000012802001-05-13 Theodore Tso <tytso@valinux.com>
1281
1282 * journal.c: Code cleanup; initialize journal_enable_debug using
1283 an initializer.
1284
Theodore Ts'ofc9a69c2001-05-12 13:43:46 +000012852001-05-12 Theodore Tso <tytso@valinux.com>
1286
1287 * unix.c (PRS): Skip validation of -C's file descriptor if it is
1288 zero, since that is special case.
1289
Theodore Ts'of0b8c872001-05-09 06:03:58 +000012902001-05-09 Theodore Tso <tytso@valinux.com>
1291
1292 * super.c (release_orphan_inodes): Add gettext quoting around
1293 "Truncating" and "Clearing" for i18n.
1294
Theodore Ts'ob9852cd2001-05-05 05:14:59 +000012952001-05-05 Theodore Tso <tytso@valinux.com>
1296
Theodore Ts'oe39ac922001-05-05 06:47:24 +00001297 * util.c (fatal_error): Use the correct magic number when checking
1298 the magic number for the io_channel data structure. Also
1299 remove extraneous call to io_channel_flush() that was left
1300 over from an editing session.
1301
Theodore Ts'ob9852cd2001-05-05 05:14:59 +00001302 * pass2.c (check_dir_block): Ignore EXT2_ET_DIR_CORRUPTED errors
1303 from ext2fs_read_dir_block().
1304
Theodore Ts'o5f629b72001-05-01 20:01:08 +000013052001-05-01 Theodore Tso <tytso@valinux.com>
1306
Theodore Ts'oae8160e2001-05-01 21:13:37 +00001307 * unix.c (PRS): Validate the completion information file
1308 descriptor so that the completion bar won't get
1309 accidentally written onto the disk.
1310
Theodore Ts'o5f629b72001-05-01 20:01:08 +00001311 * e2fsck.8.in: Add explanation that you can use mke2fs -n -b
1312 blocksize to printout alternate superblock locations.
1313
Theodore Ts'obc57f152001-04-26 04:11:46 +000013142001-04-26 Theodore Tso <tytso@valinux.com>
1315
1316 * unix.c (check_if_skip): If the max_mount_count is zero, treat it
1317 as having no count set.
1318
Theodore Ts'oef059872001-04-17 00:40:02 +000013192001-04-16 Theodore Tso <tytso@valinux.com>
1320
1321 * super.c (check_super_block): Fix bad calculation of
1322 inodes_per_block, and tighten min/max checks to be a bit
1323 more paranoid. Thanks to Andreas Dilger for pointing out
1324 this bug.
1325
Theodore Ts'o1f735032001-03-29 19:00:50 +000013262001-03-29 Theodore Tso <tytso@valinux.com>
1327
Theodore Ts'o15986f72001-03-29 19:22:16 +00001328 * journal.c (mark_buffer_uptodate): Add emulation of kernel
1329 function mark_buffer_uptodate.
1330
Theodore Ts'o1f735032001-03-29 19:00:50 +00001331 * recovery.c, revoke.c: Synchronize with 0.6b ext3 files.
1332
Theodore Ts'od0515212001-02-13 04:32:53 +000013332001-02-12 Theodore Tso <tytso@valinux.com>
1334
1335 * journal.c (e2fsck_run_ext3_journal): Force a flush of the
1336 filesystem and io_channel before replaying the journal.
1337
Theodore Ts'oa5c33f22001-01-18 02:34:03 +000013382001-01-17 Theodore Ts'o <tytso@valinux.com>
1339
1340 * pass1.c (check_blocks): Fix large file checking code so that
1341 files > 2GB are considered large files, and restrict
1342 directories from being > 2GB.
1343
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +000013442001-01-12 Theodore Ts'o <tytso@valinux.com>
1345
Theodore Ts'oa9ca2012001-01-12 21:53:25 +00001346 * journal.c (e2fsck_journal_fix_unsupported_super): Remove unused
1347 function. Add FIXME notes to e2fsck_get_journal(), from
1348 Andreas Dilger.
1349
1350 * pass1.c (e2fsck_pass1): Cap the maximum legal size of a file by
1351 the limit caused by the fact that i_blocks is in 512 byte
1352 units, and that the Linux buffer cache also fundamentally
1353 assumes 512 byte sectors.
1354 Make sure that the journal inode is a regular file, and
1355 when clearing an unused journal inode, make sure the
1356 icount db is updated.
1357
1358 * problem.c, problem.h (PR_1_JOURNAL_BAD_MODE): Add new problem code.
1359
Theodore Ts'o37b6b292001-01-12 21:16:13 +00001360 * problem.c: For PR_1_RESERVED_BAD_MODE, print a description of
1361 the reserved inode. In PR_0_JOURNAL_HAS_JOURNAL, prompt
1362 to clear the journal, rather than deleting it (which is
1363 more accurate). (From Andreas Dilger.)
1364
Theodore Ts'o6a6d3d42001-01-12 21:11:24 +00001365 * journal.c: Make sure all functions which return an error code
1366 use the errcode_t return type, and not "int"
1367 (e2fsck_journal_release): Add new parameter, "drop",
1368 which is used when we just want to deallocate the journal
1369 without trying to write out any changes.
1370 (mark_buffer_clean): New function
1371 (e2fsck_check_ext3_journal): If we fail loading the
1372 journal, make sure we free all memory associated with it.
1373 (recover_ext3_journal): If we fail to load the journal or
1374 initialize the revoke data structures, make sure we free all
1375 memory associated with the journal.
1376
Theodore Ts'o721edd02001-01-12 21:05:57 +00001377 * message.c (special_inode_name): Add more special inode names
1378 (From Andreas Dilger)
1379
Theodore Ts'o58a75172001-01-12 20:59:19 +00001380 * util.c (fatal_error): Check to make sure the io_manager data
1381 structure is sane before trying to flush the io_channel.
1382 (From Andreas Dilger)
1383
Theodore Ts'o721edd02001-01-12 21:05:57 +00001384 * mtrace.h, super.c, pass2.c: Minor whitespace cleanups, from
1385 Andreas Dilger.
Theodore Ts'o4035f402001-01-12 20:25:50 +00001386
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +00001387 * journal.c (e2fsck_journal_fix_bad_inode): Set pctx->ino to the
1388 bad journal number.
1389
1390 * problem.c (PR_0_JOURNAL_BAD_INODE): Use pctx->ino instead of
1391 pctx->num when printing the bad journal inode number.
1392
Theodore Ts'o86c627e2001-01-11 15:12:14 +000013932001-01-11 <tytso@snap.thunk.org>
1394
Theodore Ts'o5ba23cb2001-01-11 19:15:02 +00001395 * pass1.c (process_block): Remove dead code which was never
1396 getting executed.
1397
1398 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
1399 ext2fs_sync_device() instead of using BLKFLSBUF.
1400
1401 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
1402
Theodore Ts'o86c627e2001-01-11 15:12:14 +00001403 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
1404 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
1405 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
1406 ino_t to ext2_ino_t.
1407
Theodore Ts'o95a5bc92001-01-11 04:58:21 +000014082001-01-09 <tytso@snap.thunk.org>
1409
1410 * problem.c: Fix another broken @F vs @f problem.
1411
Theodore Ts'o53ef44c2001-01-06 05:55:58 +000014122001-01-06 <tytso@snap.thunk.org>
1413
1414 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
1415 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
1416
1417 * jfs_user.h: Use more sophisticated inline handling to allow
1418 building with --enable-gcc-wall
1419
Theodore Ts'od3f35b62001-01-03 13:00:43 +000014202001-01-03 <tytso@snap.thunk.org>
1421
Theodore Ts'of18996c2001-01-03 16:57:24 +00001422 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
1423 own block; if the journal inode is not in use, and it
1424 contains data, offer to clear it.
1425
1426 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
1427 problem code.
1428
1429 * problem.c: Modified problem table to use a new abbreviations.
1430
Theodore Ts'od74edf42001-01-03 19:38:04 +00001431 * message.c: Add @j abbreviation for journal, and @v abbreviation
Theodore Ts'oe9044062001-01-03 15:39:37 +00001432 for device.
Theodore Ts'o1ce64532001-01-03 15:34:20 +00001433
Theodore Ts'occ7067b2001-01-03 13:24:06 +00001434 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
1435
Theodore Ts'od3f35b62001-01-03 13:00:43 +00001436 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
1437 the journal stored on a reserved inode. Also force a fsck
1438 if the journal appears to exist while !NEEDS_RECOVERY, and
1439 we forcibly reset the journal.
1440
Theodore Ts'of5ae75e2001-01-01 14:52:52 +000014412001-01-01 <tytso@snap.thunk.org>
1442
Theodore Ts'o5dd8f962001-01-01 15:51:50 +00001443 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
1444 ext2fs_sb with struct ext2_super_block.
1445
Theodore Ts'of5ae75e2001-01-01 14:52:52 +00001446 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
1447
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +000014482000-12-31 <tytso@snap.thunk.org>
1449
1450 * jfs_compat.h: Remove uneeded header file.
1451
Theodore Ts'ob2f93192000-12-30 20:33:42 +000014522000-12-30 <tytso@snap.thunk.org>
1453
Theodore Ts'oc59a7042000-12-31 01:52:03 +00001454 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
1455 conflicts with the system header file.
1456
Theodore Ts'ob2f93192000-12-30 20:33:42 +00001457 * problem.h: Fixed numbering of pass1 error messages; an extra 0
1458 had slipped into some of the numbers. (Pointed out by
1459 Andreas Dilger)
1460
1461 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
1462 unnecessary automatic variable. Add explanatory comment
1463 about the kernel emulation routines. (Suggested by
1464 Andreas Dilger)
1465
Theodore Ts'o060b5fb2000-12-13 18:07:23 +000014662000-12-13 Theodore Ts'o <tytso@valinux.com>
1467
Theodore Ts'o9b565752000-12-13 18:50:22 +00001468 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
1469 journal fields are consistent if any of the superblock
1470 fields are set. (Backs out erroneous change made by sct,
1471 pointed out by Andreas.)
1472
1473 * unix.c (main): Clarify coments (no code changes)
1474
1475 * super.c (release_orphan_inodes): Fix spelling typo in error message.
1476
Theodore Ts'o8188c9e2000-12-13 18:39:14 +00001477 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
1478 level if we need to set large files flag. Patch from
1479 Andreas Dilger.
1480
Theodore Ts'o7b59f1e2000-12-13 18:11:44 +00001481 * super.c (check_super_block): If we have any of the compatibility
1482 flags set, we need to have a revision 1 filesystem. Most
1483 kernels will not check the flags on a rev 0 filesystem
1484 and we may have corruption issues because of the
1485 incompatible changes to the filesystem. Patch from Andreas
1486 Dilger.
1487
Theodore Ts'o060b5fb2000-12-13 18:07:23 +00001488 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
1489 new problem codes.
1490
Theodore Ts'o0e8a9562000-12-09 06:41:25 +000014912000-12-09 <tytso@snap.thunk.org>
1492
Theodore Ts'obf2d4992000-12-09 14:46:20 +00001493 * flushb.c: Fix flushb so that it does something other than waste
1494 disk space when built on systems with modern header files
1495 and add a non-subtle Copyright Licensing restriction so
1496 Yann will remove it from the Debian Distribution. (Now
1497 violates the Debian Free Software Guidelines, on purpose.)
1498
Theodore Ts'of43650c2000-12-09 06:47:56 +00001499 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
1500 at the top level, set the JFS debuging level to 2.
1501
Theodore Ts'o0e8a9562000-12-09 06:41:25 +00001502 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
1503 has been moved to the include/linux directory.
1504
1505 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
1506 support the V2 superblock and revoke processing. The
1507 journal.c and revoke.c files are copies from the ext3
1508 kernel source.
1509
1510 * Makefile.in: Added revoke.c to the list of source/object files.
1511
Theodore Ts'o133a56d2000-11-17 05:40:49 +000015122000-11-16 Theodore Ts'o <tytso@valinux.com>
1513
1514 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
1515 reporting problems rather than using com_err directly.
1516
1517 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
1518
1519 * message.c (expand_percent_expression): Add safety check. If
1520 ctx->str is NULL, print "NULL" instead of dereferencing
1521 the null pointer.
1522
1523 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
1524 to ext2fs_block_iterate2, to support 64-bit filesizes and
1525 to speed things up slightly by avoiding the use of the
1526 ext2fs_block_iterate's compatibility shim layer.
1527
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +000015282000-10-30 <tytso@snap.thunk.org>
1529
1530 * util.c (get_backup_sb): Calculate backup superblock correctly
1531 when the blocksize is > 1k.
1532
Theodore Ts'o241f2242000-10-26 20:42:07 +000015332000-10-26 <tytso@snap.thunk.org>
1534
1535 * jfs.h, jfs_compat.h, journal.c: Updated to include the
1536 definition of the new journal superblock format; still
1537 only supports V1 superblocks for now. (From sct)
1538
Theodore Ts'ob09a4b02000-10-24 21:16:09 +000015392000-10-24 <tytso@snap.thunk.org>
1540
Theodore Ts'o83949022000-10-25 01:38:50 +00001541 * super.c (release_inode_block, release_inode_blocks,
1542 release_orphan_inodes): Add code to deal with truncating
1543 inodes which are still in use (but which are on the orphan
1544 list because they need truncation).
1545
1546 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
1547 PR_0_ORPHAN_CLEAR_INODE, and remove
1548 PR_0_ORPHAN_INODE_INUSE.
1549
1550 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
1551 a message when the journal is being recovered.
1552
Theodore Ts'ob09a4b02000-10-24 21:16:09 +00001553 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
1554 journal inode, if it is in use.
1555
Theodore Ts'oadfca562000-09-12 21:24:36 +000015562000-09-12 <tytso@valinux.com>
1557
1558 * extend.c:
1559 * flushb.c: Add include of nls-enable.h which is necessary so that
1560 they can compile correctly.
1561
Theodore Ts'occ96b2b2000-08-22 21:30:11 +000015622000-08-22 <tytso@valinux.com>
1563
Theodore Ts'o2575fb02000-08-22 21:50:04 +00001564 * unix.c (main): If we're doing a read-only check, skip the
1565 journal playback, but don't abort the e2fsck run.
1566
Theodore Ts'o99a2cc92000-08-22 21:41:52 +00001567 * super.c (release_orphan_inodes): Fix typo; should do bounds
1568 checking on next_ino instead of ino.
1569
1570 * jfs_compat.h (J_ASSERT):
1571 * journal.c (e2fsck_run_ext3_journal):
1572 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
1573
Theodore Ts'o243dc312000-08-22 21:37:47 +00001574 * unix.c: Use fatal_error() instead of exit() whenever possible.
1575 Also fix the fsck exit codes so that we use FSCK_USAGE
1576 when it is appropriate. Rename global_signal_ctx to
1577 e2fsck_global_ctx and let it be exported globally.
1578
Theodore Ts'occ96b2b2000-08-22 21:30:11 +00001579 * util.c (fatal_error): Try to flush the I/O manager before
1580 forcing an exit.
1581
Theodore Ts'oecf1b772000-08-20 22:06:31 +000015822000-08-20 <tytso@valinux.com>
1583
1584 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
1585 e2fsck_check_ext3_journal to smash the journal because
1586 journal->j_transaction_sequence wasn't getting
1587 initialized.
1588
1589 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
1590 call to e2fsck_clear_recover from recover_ext3_journal to
1591 after the filesystem has been closed and reopened.
1592 Otherwise, the superblock in the filesystem handle will
1593 probably be stale, and will overwrite the newer version of
1594 the superblock written by the log recovery.
1595
1596 * message.c (expand_inode_expression): Add support for %Iu and %Ig
1597
1598 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
1599
1600 * super.c (release_orphan_inodes, release_inode_block,
1601 release_inode_blocks): Update the block group descriptor
1602 counts when freeing the orphan inode. Use
1603 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
1604
1605 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
1606 attempted to reopen the filesystem using the device name
1607 instead of the filesystem name.
1608
Theodore Ts'o80bfaa32000-08-18 15:08:37 +000016092000-08-18 <tytso@valinux.com>
1610
1611 * Makefile.in: Update the make dependencies
1612
1613 * problem.c, problem.h: Add the problem codes:
1614 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
1615 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
1616 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
1617 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
1618
1619 * super.c (release_inode_blocks, release_orphan_inodes,
1620 check_super_block): Add support for clearing orphaned
1621 inodes from the unmounted filesystem.
1622
1623 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
1624 check; this is now handled in check_super_block ---
1625 non-journaled filesystems can use the orphan list in the
1626 future. Also, move the the re-opening of the filesystem
1627 to e2fsck_run_ext3_journal().
1628
Theodore Ts'o3b5386d2000-08-14 14:25:19 +000016292000-07-12 Andreas Dilger <adilger@turbolinux.com>
1630
1631 * journal.c: implement loading of ext3 journal for recovery code
1632
1633 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
1634 Add journal problems.
1635
1636 * recovery.c (journal_recover): user-space ext3 journal recovery code
1637
1638 * unix.c (main) : check journal and do recovery in separate steps
1639
Theodore Ts'ob8d164c2000-08-08 03:17:04 +000016402000-08-07 <tytso@snap.thunk.org>
1641
1642 * unix.c (calc_percent): Make sure that we don't take a floating
1643 exception if the max value is zero. (should normally
1644 never happen, but...)
1645
Theodore Ts'of9e67062000-07-13 23:25:54 +000016462000-07-13 <tytso@valinux.com>
1647
1648 * Release of E2fsprogs 1.19
1649
Theodore Ts'o17390c02000-07-07 04:13:21 +000016502000-07-06 Theodore Ts'o <tytso@valinux.com>
1651
1652 * unix.c (check_if_skip): Modify algorithm for checking
1653 s_max_mnt_count to match with the kernel. (If
1654 s_max_mnt_count is negative, ignore the mnt_count check.)
1655
1656 * unix.c (e2fsck_update_progress): Adjust the width of the
1657 progress bar dynamically, based on the filesystem name
1658 that we need to display.
1659
1660 * unix.c (main): If the ext3 needs_recovery flag is set, call
1661 e2fsck_run_ext3_journal() and then restart the e2fsck run.
1662
1663 * journal.c (e2fsck_run_ext3_journal): New file which contains
1664 logic to recover the ext3 journal. This version relies on
1665 the kernel being able to mount the filesystem in order to
1666 run the journal.
1667
Theodore Ts'o92269042000-07-05 18:25:59 +000016682000-07-05 Theodore Ts'o <tytso@valinux.com>
1669
1670 * unix.c (e2fsck_update_progress): Only save and check the last
1671 percentage after multiplying it by 10, nor 1000, since we
1672 only need to save values to a tenth of a percent (and the
1673 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +00001674 Also, re-arrange the logic so that we do the time
1675 check only after doing the percentage check, and we
1676 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +00001677
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +000016782000-07-04 Theodore Ts'o <tytso@valinux.com>
1679
1680 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
1681 field is set; if so, clear it, so that ext3 mounting code
1682 won't get confused by the fact that we've cleared out the
1683 orphaned inodes.
1684
Theodore Ts'obbd47d72000-06-10 19:21:33 +000016852000-06-10 Theodore Ts'o <tytso@valinux.com>
1686
1687 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
1688 checking for a "should never happen case".
1689
1690 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
1691 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
1692
Theodore Ts'od647a1e2000-05-27 14:40:09 +000016932000-05-27 Theodore Ts'o <tytso@valinux.com>
1694
1695 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
1696 (cw@foof.org) which checks to see if special devices have
1697 a non-zero size, and deals with it.
1698
1699 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
1700
Theodore Ts'o1d279212000-05-19 02:38:14 +000017012000-05-18 Theodore Ts'o <tytso@valinux.com>
1702
1703 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
1704 well.
1705
Theodore Ts'o4ea0a112000-05-08 13:33:17 +000017062000-05-08 Theodore Ts'o <tytso@valinux.com>
1707
1708 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
1709 code.
1710
1711 * super.c (check_super_block): If the OS type in the superblock is
1712 the Hurd, check to see if the filetype feature is set, and
1713 offer to clear it if so. This needs to be done since the
1714 Hurd doesn't properly support the filetype feature.
1715 (And since the hurd allows the transmogrification of files
1716 to special files and vice versa --- for no good reason
1717 that I can understand --- it can't support the filetype
1718 feature for the forseeable future, either.)
1719
Theodore Ts'o373b8332000-04-03 16:22:35 +000017202000-04-03 Theodore Ts'o <tytso@valinux.com>
1721
1722 * unix.c: For platforms that don't define optarg.h, manually
1723 define optarg and optind.
1724
Theodore Ts'o01fbc702000-04-03 13:57:21 +000017252000-03-20 Theodore Ts'o <tytso@valinux.com>
1726
1727 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
1728 Check for the append-only as well as the immutable flag.
1729
1730 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
1731 append-only flag. Fix comment for compression flag.
1732
Theodore Ts'o06012322000-02-12 20:12:43 +000017332000-02-12 <tytso@snap.thunk.org>
1734
1735 * unix.c (e2fsck_update_progress): Limit the number of updates to
1736 the progress bars to 8 times a second. This allows a 9600
1737 baud console link to keep up.
1738
Theodore Ts'o19178752000-02-11 15:55:07 +000017392000-02-11 <tytso@snap.thunk.org>
1740
1741 * unix.c (main): If compression is enabled on the filesystem,
1742 print a warning message (for now).
1743
1744 * message.c: Add new compression shortcut: @c == compress
1745
1746 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
1747
1748 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
1749 set, check to see if the filesystem supports compression.
1750 If it does pass this information down to process_block()
1751 so it can treat the compressed block flag words
1752 correctly. If not, offer to clear the flag, since it
1753 shouldn't be set.
1754 (process_block): If an inode has the compressed inode flag
1755 set, allow EXT2FS_COMPRESSED_BLKADDR.
1756
1757 * pass1b.c (process_pass1b_block, delete_file_block,
1758 clone_file_block):
1759 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
1760 see if the block can be skipped.
1761
Theodore Ts'o28ffafb2000-02-08 19:14:02 +000017622000-02-08 <tytso@snap.thunk.org>
1763
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +00001764 * util.c: Make resource tracking message more concise.
1765
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +00001766 * e2fsck.h:
1767 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
1768 ctx->block_illegal_map, since it's not needed by pass1,
1769 and pass1b has been modified to calculate it manually if
1770 needed. This reduces the memory footprint needed by e2fsck.
1771
1772 * pass1b.c (check_if_fs_block): New static function which returns
1773 whether or not a block overlaps with filesystem metadata.
1774 This replaces consulting the block_illegal_map bitmap.
1775
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00001776 * Makefile.in: Call sync after finishing building all in this
1777 directory.
1778
1779 * unix.c (PRS): sync the filesystem before trying to use
1780 BLKFLSBUF, to minimize the chance of causing dirty blocks
1781 to get dropped.
1782
1783 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
1784 a Linux/i386 system.
1785
1786 * pass3.c (check_directory): Only do the loop detection algorithm
1787 if we've searched over 2048 parent directories and haven't
1788 found the end yet. This means that in the common case, we
1789 don't allocate or clear the inode_loop_detection bitmap,
1790 which for large systems, merely clearing the bitmap for
1791 each directory was turning out to be quite expensive.
1792 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
1793 identifying this problem.
1794
Theodore Ts'o0c4a0722000-02-07 03:11:03 +000017952000-02-06 Theodore Ts'o <tytso@valinux.com>
1796
1797 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
1798 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
1799 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
1800 unix.c, util.c: Add Internationalization support as
1801 suggested by Marco d'Itri <md@linux.it>.
1802
Theodore Ts'o80e808f2000-02-02 16:19:59 +000018032000-02-02 Theodore Ts'o <tytso@valinux.com>
1804
1805 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
1806 linux/fs.h
1807
Theodore Ts'o894edb22000-01-18 21:27:12 +000018082000-01-18 Theodore Ts'o <tytso@valinux.com>
1809
1810 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
1811 we need a separate DEPLIBUUID that can be used in
1812 Makefile's dependency rules.
1813
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +000018141999-11-23 <tytso@valinux.com>
1815
1816 * e2fsck.8.in: Update language about where to find a backup
1817 superblock.
1818
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +000018191999-11-19 <tytso@valinux.com>
1820
Theodore Ts'o86a63e91999-11-23 13:52:48 +00001821 * pass1.c (process_inodes): Add shortcut handling; if
1822 process_inodes_count is zero, return right away, to avoid
1823 calling qsort with a non-positive count.
1824
Theodore Ts'oec8d2c31999-11-19 18:52:36 +00001825 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
1826 to print Delete as ^?
1827
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00001828 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
1829 the source directory.
1830
Theodore Ts'oa846d2f1999-11-10 15:50:24 +000018311999-11-10 <tytso@valinux.com>
1832
Theodore Ts'ocd086361999-11-10 16:00:39 +00001833 * Release of E2fsprogs 1.18
1834
18351999-11-10 <tytso@valinux.com>
1836
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00001837 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
1838 means the answer is assumed to be no in preen mode. This
1839 is now used in the PR_1_SET_IMMUTABLE code, so that in
1840 preen mode we ignore these inodes and just print a warning
1841 message.
1842
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +000018431999-11-09 <tytso@valinux.com>
1844
1845 * pass1.c (e2fsck_pass1): If the filesystem does not support
1846 imagic inodes, if an inode has the imagic flag set, offer
1847 to clear the imagic flag. If a valid device/fifo/socket
1848 has the immutable flag set, call the new helper function
1849 check_immutable() to offerto clear the immutable flag.
1850
1851 * pass2.c (check_filetype): Use the new ext2_file_type() helper
1852 function instead of calculating the file_type information
1853 manually.
1854
1855 * pass3.c (e2fsck_reconnect_file): When adding a link to
1856 lost+found, calculate the filetype information so that
1857 ext2fs_link() can use the information if applicable.
1858 (get_lost_and_found): Create the /lost+found directory
1859 with the correct filetype information if applicable.
1860
1861 * util.c (ext2_file_type), e2fsck.h: New function which returns
1862 the directory entry file type information given the
1863 inode's mode bits.
1864
1865 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
1866 and PR_1_SET_IMMUTABLE.
1867
Theodore Ts'o7142db01999-11-08 18:46:54 +000018681999-11-07 <tytso@valinux.com>
1869
1870 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
1871 to prevent it from getting freed twice.
1872
18731999-11-06 <tytso@valinux.com>
1874
1875 * unix.c (main): Close the filesystem before freeing the context,
1876 so that in the event of a free()-related segmentation
1877 violation, the filesystem is properly closed and written
1878 out.
1879
18801999-10-27 <tytso@valinux.com>
1881
1882 * e2fsck.c (e2fsck_reset_context): When freeing
1883 ctx->inode_reg_map, we weren't zero'ing
1884 ctx->inode_reg_map, which could cause a segfault later on
1885 in the e2fsck run.
1886
18871999-10-26 <tytso@valinux.com>
1888
1889 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
1890 matches the standard convention).
1891
Theodore Ts'of68aa411999-10-26 14:20:22 +000018921999-10-26 <tytso@valinux.com>
1893
Theodore Ts'o28e11941999-10-26 18:17:20 +00001894 * Release of E2fsprogs 1.17
1895
18961999-10-26 <tytso@valinux.com>
1897
Theodore Ts'of68aa411999-10-26 14:20:22 +00001898 * message.c (safe_print): Make safe_print take an char instead of
1899 an unsigned char to fix gcc warnings.
1900
Theodore Ts'oc40db6d1999-10-25 21:03:34 +000019011999-10-25 <tytso@valinux.com>
1902
Theodore Ts'oe6597041999-10-26 02:30:16 +00001903 * util.c: For NT portability, don't redefine getchar(), since
1904 stdio defines that. Instead we introduce a new
1905 abstract macro read_a_char() which is #defined to the
1906 right function as necessary.
1907
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00001908 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
1909
1910 * pass2.c (check_dir_block): Require that the length of the
1911 directory entry be at least 12 bytes. Check to see if the
1912 filename is zero-length, and flag that as an error.
1913
Theodore Ts'o7847c1d1999-10-22 15:11:42 +000019141999-10-22 <tytso@valinux.com>
1915
Theodore Ts'o614fdfd1999-10-23 03:19:51 +00001916 * Release of E2fsprogs 1.16
1917
19181999-10-22 <tytso@valinux.com>
1919
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00001920 * pass2.c (check_filetype): If the filetype filesystem feature is
1921 not set, and a directory entry has a dirent feature, offer
1922 to clear it (since 2.0 kernels will do complain will
1923 interpret it as a very large name length field).
1924
1925 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
1926
Theodore Ts'oaa4115a1999-10-21 19:33:18 +000019271999-10-21 <tytso@valinux.com>
1928
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +00001929 * e2fsck.8.in: Update man page to use a more standard format (bold
1930 option flags and italicized variables), as suggested by
1931 Andreas Dilger (adilger@enel.ucalgary.ca)
1932
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00001933 * pass4.c (e2fsck_pass4): If an inode is set in the
1934 inode_imagic_map bitmap, don't check to see if it is
1935 disconnected from the inode tree (because it almost
1936 certainly will be). Free inode_imagic_map at the end of
1937 pass 4.
1938
1939 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
1940 feature is set, check the directory entry's filetype
1941 information field, and fix/set it if necessary.
1942 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
1943 of pass 2.
1944
1945 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
1946 information for inode_reg_map and inode_imagic_map, which
1947 indicates which inodes are regular files and AFS inodes,
1948 respectively.
1949 Since only the master superblock is written during a
1950 restart, force that superblock to be used after a restart;
1951 otherwise changes to the block group descriptors end up
1952 getting ignored.
1953
1954 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
1955 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
1956 which supresses the problem message if e2fsck is run with
1957 the -n option.
1958
1959 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
1960 new problem codes.
1961
1962 * message.c (expand_dirent_expression): Add support for %dt which
1963 prints the dirent type information.
1964
1965 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
1966 and inode_imagic_map).
1967
1968 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
1969 to the context structure.
1970
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +000019711999-09-24 <tytso@valinux.com>
1972
1973 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
1974 e2fsprogs easier to port to non-Unix platforms.
1975
19761999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00001977
1978 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
1979 internal and external inode counts in sync when we
1980 decremented an inode whose link count was already zero.
1981 Now we skip incrementing or decrementing both link counts
1982 if we would cause an overflow condition.
1983 (expand_dir, expand_dir_proc): Change where we update the
1984 inode block count and size files so that the block count
1985 field is updated correctly when we create an indirect block.
1986
Theodore Ts'o78cf0541999-10-20 18:29:18 +000019871999-08-05 <tytso@valinux.com>
1988
1989 * super.c (check_super_block): Check to see whether the
1990 inodes_per_group value in the superblock is insanely too
1991 high.
1992
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +000019931999-08-02 <tytso@valinux.com>
1994
1995 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
1996 the block also shares data with the fs metadata when
1997 the count drops to 1, since the block should still be
1998 cloned, as fs metadata isn't included in the count.
1999
20001999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +00002001
2002 * Release of E2fsprogs 1.15
2003
Theodore Ts'ob55199e1999-07-19 15:37:46 +000020041999-07-19 <tytso@valinux.com>
2005
2006 * unix.c (usage): Add minimalist emergency help to the usage
2007 message.
2008
Theodore Ts'o5596def1999-07-19 15:27:37 +000020091999-07-18 <tytso@valinux.com>
2010
2011 * unix.c: Add support for calculating a progress bar if the -C0
2012 option is given. The function e2fsck_clear_progbar()
2013 clears the progress bar and must be called before any
2014 message is issued. SIGUSR1 will enable the progress bar,
2015 and SIGUSR2 will disable the progress bar. This is used
2016 by fsck to handle parallel filesystem checks. Also, set
2017 the device_name from the filesystem label if it is
2018 available.
2019
2020 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
2021 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
2022 structure which contains the last tenth of a percent
2023 printed for the user.
2024
2025 * message.c (print_e2fsck_message): Add call to
2026 e2fsck_clear_progbar().
2027
2028 * pass1.c (e2fsck_pass1):
2029 * pass2.c (e2fsck_pass2):
2030 * pass3.c (e2fsck_pass3):
2031 * pass4.c (e2fsck_pass4):
2032 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
2033 printing the resource tracking information.
2034
2035 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
2036 an error in the bitmaps, suppress printing the progress
2037 bar using the suppression flag for the remainder of the
2038 check, in order to clean up the display.
2039
Theodore Ts'o74033351999-07-01 03:00:47 +000020401999-06-30 <tytso@valinux.com>
2041
2042 * unix.c (check_mount): Clean up the abort message displayed when
2043 the filesystem is mounted and either stdout or stdin isn't
2044 a tty.
2045
20461999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +00002047
2048 * e2fsck.h:
2049 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
2050 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
2051 pass1_* be private static functions, and create new
2052 function e2fsck_use_inode_shortcuts which sets and clears
2053 the inode shortcut functions in the fs structure.
2054
2055 * e2fsck.h:
2056 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
2057 exported function.
2058
2059 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
2060 if a disconnected inode has any problems before
2061 connecting it to /lost+found. Bug and suggested fix by
2062 Pavel Machek <pavel@bug.ucw.cz>
2063
20641999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +00002065
2066 * unix.c (main): Add missing space in the disk write-protected
2067 message.
2068
Theodore Ts'od4b0ce01999-06-18 01:09:29 +000020691999-05-22 <tytso@rsts-11.mit.edu>
2070
2071 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
2072 code.
2073
2074 * super.c (check_super_block): Add check to make sure the total
2075 number of inodes is sane, since this can be calculated
2076 from the number of groups times the number of inodes per
2077 group. Offer to correct it if it is incorrect.
2078
Theodore Ts'oe79d1b21999-06-18 01:06:59 +000020791999-03-19 <tytso@rsts-11.mit.edu>
2080
2081 * pass5.c (check_block_end): Fix fencepost condition where when
2082 clearing the block padding we were missing the last position
2083 in the bitmap.
2084
Theodore Ts'o75d83be1999-05-18 03:16:36 +000020851999-05-17 <tytso@rsts-11.mit.edu>
2086
2087 * unix.c (reserve_stdio_fds): Add safety check in case
2088 reserve_stdio_fds couldn't open /dev/null.
2089
Theodore Ts'o4a9f5931999-03-16 19:32:52 +000020901999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
2091
2092 * util.c (print_resource_track): Use mallinfo if present to get
2093 more accurate malloc statistics.
2094
2095 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +00002096 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00002097
2098 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
2099
21001999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2101
2102 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
2103 that the block group number is printed. Add new prompt,
2104 PROMPT_UNLINK.
2105
21061999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2107
2108 * Release of E2fsprogs 1.14
2109
Theodore Ts'o9e51eca1999-01-09 16:32:31 +000021101999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2111
2112 * message.c (safe_print): New function which prints strings,
2113 converting non-printable characters using the '^' and
2114 M-notation. This function is now used to print directory
2115 name entries and pathnames.
2116
Theodore Ts'o73f17cf1999-01-04 07:35:45 +00002117Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
2118
2119 * unix.c (main): Reset the context before calling ext2fs_close(),
2120 to avoid referencing already freed memory.
2121
Theodore Ts'o556ad131998-12-19 08:10:58 +000021221998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
2123
2124 * Release of E2fsprogs 1.13
2125
Theodore Ts'o5a679c81998-12-03 16:40:38 +000021261998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
2127
2128 * Makefile.in: Updated dependencies.
2129
21301998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
2131
2132 * pass3.c (get_lost_and_found): If the filesystem is not opened
2133 read-only, then force /lost+found to be created if it is
2134 not present.
2135
2136 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
2137 operation.
2138
Theodore Ts'o1dde43f1998-11-14 04:18:28 +000021391998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2140
2141 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
2142 since e2fsck_free_context may reference data in ctx->fs.
2143
2144 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
2145 before checking ctx->fs->dblist.
2146
21471998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2148
2149 * pass1.c (e2fsck_pass1): Use the device check subroutine on
2150 FIFO's and Socket's, so that we catch bogus immutable inodes.
2151
2152 * pass2.c (process_bad_inode): Process bad socket and fifo's.
2153
2154 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
2155 PR_2_BAD_SOCKET.
2156
Theodore Ts'o7f813ba1998-09-03 01:26:03 +000021571998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
2158
2159 * problem.c: Add PR_3_NO_DIRINFO error code.
2160
2161 * super.c (check_super_value): Rename min and max to min_val and
2162 max_val to avoid possible cpp macro conflicts.
2163
2164 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
2165 possible cpp macro conflicts.
2166
2167 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
2168 cpp macro conflicts.
2169 (check_directory): Fix logic to avoid possible core dump
2170 in the case of ext2fs_get_dir_info returning NULL. (By
2171 the time we get here, it should never happen, but...).
2172 Also simply/streamline the control flow of the function.
2173
Theodore Ts'o24fc5031998-08-26 15:23:31 +000021741998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
2175
2176 * unix.c (check_if_skip): Move the "not cleanly mounted" check
2177 ahead of the maximal mount and too long since checked tests.
2178 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
2179 open, so that we don't open the filesystem using the same
2180 file descriptor as stdout or stderr.
2181
Theodore Ts'of75c28d1998-08-01 04:18:06 +000021821998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
2183
2184 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
2185 get to 100%.
2186
2187 * pass3.c (e2fsck_pass3): Change progress accounting to be
2188 consistent with the other e2fsck passes.
2189
2190 * e2fsck.c (e2fsck_run): At the end of each pass, call the
2191 progress function with the pass number set to zero.
2192
2193 * unix.c (e2fsck_update_progress): If the pass number is zero,
2194 ignore the call, since that indicates that we just want to
2195 deallocate any progress structures.
2196
Theodore Ts'o8144d671998-07-09 05:33:18 +000021971998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2198
Theodore Ts'o4a5fa191998-07-09 05:42:45 +00002199 * Release of E2fsprogs 1.12
2200
22011998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2202
Theodore Ts'o8144d671998-07-09 05:33:18 +00002203 * unix.c (main): Fix typo in checking the incompat feature set; it
2204 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
2205
Theodore Ts'o1fad9041998-07-07 05:44:43 +000022061998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
2207
2208 * badblocks.c (test_disk): Don't clear the existing bad blocks
2209 list when using e2fsck -c, since it may cause blocks with
2210 marginal errors to be dropped from the bad blocks list.
2211
Theodore Ts'o874b4d21998-07-06 14:33:12 +00002212Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
2213
2214 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
2215 compatibility with older kernels.
2216
Theodore Ts'o818180c1998-06-27 05:11:14 +000022171998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
2218
2219 * unix.c (e2fsck_update_progress): Remove unused variables.
2220
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +000022211998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
2222
2223 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
2224 collision with LFS API.
2225
2226 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
2227 properly initialized.
2228 (e2fsck_pass1): Don't allow the the boot loader inode to
2229 be a directory (clear the inode mode field if so).
2230
Theodore Ts'oefac9a11998-05-07 05:02:00 +000022311998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
2232
2233 * unix.c (PRS): Added new option -C, which causes e2fsck to print
2234 progress updates so that callers can keep track of the
2235 completion progress of e2fsck. Designed for use by
2236 progress, except for -C 0, which prints a spinning report
2237 which may be useful for some users.
2238
2239 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
2240 scheme (useful for larger filesystems).
2241
2242 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
2243 progress reporting functions.
2244
Theodore Ts'o4c77fe51998-04-30 17:35:59 +000022451998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2246
2247 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
2248 appropriate return type for comparison functions for qsort.
2249
2250 * e2fsck.h: Add #ifdef protection for unistd.h
2251
2252 * super.c: Remove header files already included by e2fsck.h
2253
Theodore Ts'o76f875d1998-04-27 01:41:13 +000022541998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
2255
2256 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
2257 size of the memory to be resized to ext2fs_resize_mem().
2258
Theodore Ts'o7e44f241998-04-01 03:16:29 +000022591998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
2260
2261 * Makefile.in: Change to use new installation directory variables
2262 convention. Fix uninstall rules to take $(DESTDIR) into
2263 account. Remove cat8dir from the installdirs target,
2264 since modern man package don't necessarily put the cat
2265 directory in /usr/man/cat?.
2266
Theodore Ts'o17dba281998-03-30 01:16:26 +000022671998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
2268
2269 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
2270 extern in e2fsck.h to prevent -Wall warnings.
2271
2272 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
2273
22741998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2275
2276 * super.c (check_super_block): Fix broken superblock sanity check
2277 when calculating blocks_per_group if s_log_frag_size !=
2278 s_log_block_size. Since we don't support fragments, this
2279 isn't a bug deal, but it's good to get it fixed.
2280
Theodore Ts'o246501c1998-03-24 16:22:38 +000022811998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
2282
2283 * unix.c: Fix bug in check of feature set, to make sure we can
2284 really fix this filesystem.
2285
2286 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
2287 num field be a 64 bit type. Add the problem code
2288 PR_1_FEATURE_LARGE_FILES
2289
2290 * problem.c: Add table entry for the problem code
2291 PR_1_FEATURE_LARGE_FILES.
2292
2293 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
2294 a problem for directory inodes. (Since it is also
2295 i_size_high now.) If there are no large_files, then
2296 clear the LARGE_FLAG feature flag. If there are
2297 large_files, but the LARGE_FLAG feature flag is not set,
2298 complain and offer to fix it.
2299 (check_blocks): Add support to deal with non-directory
2300 inodes that have i_size_high set (i.e., large_files).
2301 Don't give an error if a directory has preallocated
2302 blocks, to support the DIR_PREALLOC feature.
2303 (process_block, process_bad_block): The blockcnt variable
2304 is a type of blkcnt_t, for conversion to the new
2305 block_iterate2.
2306
2307 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
2308 a problem for directory inodes. (Since it is also
2309 i_size_high now.)
2310
2311 * message.c (expand_inode_expression): Print a 64-bits of the
2312 inode size for non-directory inodes. (Directory inodes
2313 can only use a 32-bit directory acl size, since
2314 i_size_high is shared with i_dir_acl.) Add sanity check
2315 so that trying to print out the directory acl on a
2316 non-directory inode will print zero.
2317 (expand_percent_expression): %B and %N, which print
2318 pctx->blkcount and pctx->num, can now be 64 bit
2319 variables. Print them using the "%lld" format if
2320 EXT2_NO_64_TYPE is not defined.
2321
2322 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
2323
2324 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
2325 field.
2326
Theodore Ts'ob6f79831998-03-09 13:10:37 +00002327Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2328
2329 * pass3.c (fix_dotdot_proc):
2330 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
2331 * message.c (expand_dirent_expression): Mask off the high eight
2332 bits of the directory entry's name_len field, so that it
2333 can be used for other purposes.
2334
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +00002335Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2336
2337 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
2338 include EXT2_FLAG_RESTART anymore, we need to adjust this
2339 routine so that it *does* return in the case of it seeing
2340 EXT2_FLAG_RESTART.
2341
2342 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
2343 done callback function, which may set context abort
2344 flags. So we need to test the context abort flags after
2345 we call ext2_get_next_inode().
2346 (process_inodes): If we abort due out of process_inodes,
2347 do a clean exit by breaking out of the for loop instead of
2348 just returning.
2349
2350 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
2351 considered a SIGNAL mask (i.e., requiring an immediate
2352 abort of processing to restart). FLAG_RESTART just means
2353 that we want to restart once pass 1 is complete.
2354
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +00002355Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2356
2357 * Change the progress function to return an integer; if returns 1,
2358 then the progress function is expected to have set the
2359 e2fsck context flag signalling a user abort, and the
2360 caller should also initiate a user abort.
2361
Theodore Ts'o63c49691998-02-20 05:24:59 +00002362Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2363
2364 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
2365 end_problem_latch() unless there was actually a problem
2366 latched. Simplifies semantics of the latch processing.
2367
Theodore Ts'o43139321998-02-16 22:34:46 +00002368Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2369
2370 * e2fsck.h: Add new field, priv_data to the e2fsck context
2371 structure. It should be used by callers of the e2fsck
2372 functions only, and not by anything in e2fsck itself.
2373
2374Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2375
2376 * super.c: Instead of call ext2fs_get_device_size(), define and call
2377 e2fsck_get_device_size(). (This function may be stubbed
2378 out in special versions of e2fsck.)
2379
2380 * pass3.c, pass4.c: Remove extra calls to the progress function
2381 that weren't needed.
2382
2383 * mke2fs.8.in: Update man page to note that the format of the bad
2384 block file is the same as the one generated by badblocks.
2385
Theodore Ts'o54be2cc1998-02-01 12:58:48 +00002386Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2387
2388 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
2389
2390 * e2fsck.h: Include <time.h> since it is needed
2391
2392 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
2393 processing.
2394
Theodore Ts'o24dd4021998-02-01 00:16:40 +00002395Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2396
2397 * unix.c (main): In the case where the filesystem revision is too
2398 high, print the message about the superblock possibly
2399 being corrupt.
2400
2401 * e2fsck.8.in: Add expanded comments about how the -b option
2402 works.
2403
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +00002404Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2405
2406 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
2407 the ext2-specific header files are in a flat directory.
2408
2409 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
2410 super.c, swapfs.c, unix.c: Explicitly cast all assignments
2411 from void * to be compatible with C++.
2412
2413Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2414
2415 * unix.c (sync_disk): Remove sync_disk and calls to that function,
2416 since ext2fs_close() now takes care of this.
2417
2418Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2419
2420 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
2421 ehandler.c, unix.c: Change use of private to be priv_data,
2422 to avoid C++ reserved name clash.
2423
Theodore Ts'o5be8dc21997-12-01 18:24:10 +00002424Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2425
2426 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
2427 of e2fsck_get_num_dirs, which has been removed.
2428
2429Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2430
2431 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
2432 to compile and install flushb.
2433
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +00002434Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2435
2436 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
2437 to make sure the extra i_blocks in a device are cleared if
2438 the immutable flag is set.
2439
2440 * util.c (print_resource_track): Fix typo which caused the
2441 time/resource tracking to print "Pass 1 :" instead of
2442 "Pass 1: ".
2443
Theodore Ts'ob8647fa1997-11-20 21:52:43 +00002444Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2445
2446 * pass3.c (expand_directory): Fix bug which could cause core dump
2447 when expanding the directory, and the bitmaps hadn't yet
2448 been read in. Also, only use ext2fs_write_dir_block when
2449 writing a directory block, not when writing out a fresh
2450 indirect block.
2451
Theodore Ts'o8039c481997-11-19 21:39:13 +00002452Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2453
2454 * pass1.c (process_bad_block): Fix bug where first_block wasn't
2455 getting incremented, which caused user to get a
2456 "Programming error?" warning if there was a bad block in a
2457 non-primary superblock/group_descriptor. Also fixed
2458 another bug so that ext2fs_bg_has_super() is consulted, to
2459 avoid problems when using a filesystem with the
2460 sparse_groups option set and there are bad blocks at the
2461 beginning of a group which doesn't have a superblock.
2462
Theodore Ts'of8188ff1997-11-14 05:23:04 +00002463Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2464
2465 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
2466 progress indicator function.
2467
2468 * pass1.c (scan_callback): Add call to the progress feedback
2469 function (if it exists).
2470
2471Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2472
2473 * super.c (check_super_block): Skip the device size check if the
2474 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
2475
2476 * iscan.c (main): Don't use fatal_error() anymore.
2477
2478 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
2479 calling fatal_error(0).
2480
2481 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
2482 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
2483
2484 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
2485
2486 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
2487
2488 * problemP.h: New file which separates out the private fix_problem
2489 data structures.
2490
2491 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
2492 swapfs.c util.c: allocate_memory() now takes a e2fsck
2493 context as its first argument, and rename it to be
2494 e2fsck_allocate_memory().
2495
Theodore Ts'o08b21301997-11-03 19:42:40 +00002496Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2497
Theodore Ts'o68227541997-11-04 04:25:22 +00002498 * unix.c (main): Add a special case check for the error code EROFS
2499 and display an appropriate error message for this case.
2500
Theodore Ts'o08b21301997-11-03 19:42:40 +00002501 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
2502 to take the e2fsck context as their first argument.
2503 Change dir_info.c routines to take an e2fsck_context,
2504 renamed them to start with e2fsck_ to avoid namespace
2505 issues, and changed them to store the directory
2506 information inside the e2fsck context.
2507 Added e2fsck_run() which calls all of the e2fsck passes in
2508 the correct order, and which handles the return of abort
2509 codes. Added abort processing, both via setjmp/longjmp
2510 and via flags in the e2fsck context. Use a flag in the
2511 e2fsck context instead of the restart_e2fsck global
2512 variable. Change uses of free and malloc to
2513 ext2fs_free_mem and ext2fs_get_mem.
2514
Theodore Ts'o291c9041997-10-31 06:17:08 +00002515Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2516
2517 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
2518 consistency.
2519
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00002520Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2521
2522 * pass3.c (get_lost_and_found): Check error return of
2523 EXT2_FILE_NOT_FOUND instead of ENOTDIR
2524
2525 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
2526 instead of ENOTDIR
2527
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002528Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2529
Theodore Ts'o519149f1997-10-25 03:49:49 +00002530 * unix.c (PRS): Make the variable which getopt returns into be
2531 an int, so that it won't lose on platforms where char is
2532 unsigned.
2533
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002534 * pass1b.c (clone_file): Fix bug in error reporting in the case
2535 where cs.errcode is non-zero.
2536
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002537Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2538
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00002539 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
2540 RESOURCE_TRACK around code which uses init_resource_track
2541 and print_resource_track. (Not all systems have timeval)
2542
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002543 * super.c: Remove excess #includes which are not necessary.
2544
2545 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
2546
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00002547Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2548
2549 * pass*.c, super.c: Massive changes to avoid using printf and
2550 com_err routines. All diagnostic messages are now routed
2551 through the fix_problem interface.
2552
2553Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2554
2555 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
2556 entries.
2557
2558 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
2559 PR_2_DUP_DOT_DOT.
2560
2561Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2562
2563 * problem.c: Added new problem codes for some of the
2564 superblock corruption checks, and for the pass header
2565 messages. ("Pass 1: xxxxx")
2566
2567 * util.c (print_resource_track): Now takes a description
2568 argument.
2569
2570Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2571
2572 * super.c, unix.c, e2fsck.c: New files to separate out the
2573 operating-specific operations out from e2fsck.c.
2574 e2fsck.c now contains the global e2fsck context management
2575 routines, and super.c contains the "pass 0" initial
2576 validation of the superblock and global block group
2577 descriptors.
2578
2579 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
2580 (nearly) all global variables and moved them to the e2fsck
2581 context structure.
2582
2583 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
2584 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
2585 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
2586
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00002587Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2588
2589 * message.c: Add compression for the word "Illegal"
2590
2591 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
2592 PR_2_BAD_BLOCK_DEV
2593
2594Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2595
2596 * pass1.c (pass1, check_device_inode), pass2.c
2597 (process_bad_inode): Use a more stringent test for a valid
2598 device.
2599
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00002600Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2601
2602 * e2fsck.c (check_mount): Add stronger warning message about the
2603 perils of running e2fsck on a mounted filesystem.
2604
Theodore Ts'o024996c1997-06-17 05:38:35 +00002605Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2606
2607 * Release of E2fsprogs 1.11
2608
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00002609Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2610
2611 * pass1.c (mark_table_blocks): Mark the superblock and group
2612 descriptor blocks first, so that any conflicts between
2613 these and the bitmap or inode table blocks is noticed.
2614
2615 * problem.c: Fix message printed out when a block or inode bitmap
2616 conflicts with other fs data, has the correct group number
2617 in it.
2618
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00002619Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2620
2621 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
2622
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002623Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2624
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00002625 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
2626 Hawes (whawes@star.net).
2627
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002628 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
2629 bad blocks command so that all of the filesystem gets
2630 tested in the case where the blocksize 2048 or 4096.
2631
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00002632Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
2633
2634 * Release of E2fsprogs version 1.10
2635
2636Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2637
2638 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
2639 where ext2fs_get_next_inode returns the
2640 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
2641
2642Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2643
2644 * Release of E2fsprogs version 1.09
2645
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00002646Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2647
2648 * Release of E2fsprogs version 1.08
2649
Theodore Ts'o521e3681997-04-29 17:48:10 +00002650Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2651
2652 * pass1b.c (clone_file_block): If we clone a directory, we need to
2653 update the dblist entry so that we check (and correct) the
2654 right directory block.
2655
2656Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2657
2658 * pass1.c (process_block): Don't clear blocks references to
2659 filesystem metadata; let pass 1B handle this case.
2660
2661 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
2662
2663 * pass1b.c (pass1d): Deal with a block which is shared with
2664 filesystem metadata.
2665
2666 * e2fsck.h: Make block_illegal_map be a global variable
2667
2668Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2669
2670 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
2671 feature.
2672 (get_backup_sb): New function which attempts to obtain the
2673 correct backup superblock (if possible).
2674
2675Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2676
2677 * e2fsck.c (main): Check the version of the library, and warn if
2678 the library is out of date; this happens generally due to
2679 users who manually install e2fsprogs.
2680
2681 * pass1.c (pass1_get_blocks): If the passed in inode number for
2682 get_blocks isn't what we're expecting pass back
2683 EXT2_ET_CALLBACK_NOT_HANDLED.
2684
Theodore Ts'o21c84b71997-04-29 16:15:03 +00002685Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
2686
2687 * Release of E2fsprogs version 1.07
2688
2689Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2690
2691 * icount.c: New file which implements an inode count abstraction.
2692 This significantly reduces amount of memory needed to
2693 check really large filesystems.
2694
2695 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
2696 abstraction.
2697
2698Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2699
2700 * dirinfo.c (dir_info_iter): New function which allows iteration
2701 over the directories in the dir_info map.
2702
2703 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
2704 over all directories in the dir_info structure, instead of
2705 iterating all inodes looking for directories, and then
2706 looking up the directories using get_dir_info().
2707
2708Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2709
2710 * pass1.c (pass1, process_block):
2711 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
2712 manual code to manage the directory block list information.
2713
2714 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
2715 (deallocate_inode): Call the ext2 library routine
2716 ext2_inode_has_valid_blocks() instead of
2717 inode_has_valid_blocks().
2718
2719 * swapfs.c (swap_inodes): Add check so that we don't try to call
2720 swap_inode_blocks unless the inode has valid blocks.
2721 (Otherwise a long fast symlink might cause
2722 swap_inode_blocks to erroneously get called.)
2723
2724Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2725
2726 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
2727 PR_2_DOT_DOT_NULL_TERM.
2728
2729 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
2730 .. entries are null-terminated, since the 2.0 kernel
2731 requires this (for no good reason).
2732
2733Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2734
2735 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
2736 that we can recover from missing inode tables.
2737
2738 * dirinfo.c (get_dir_info): If there are no directories in the
2739 dir_info abstraction, don't core dump (because dir_info is
2740 NULL).
2741
2742 * e2fsck.c (main): Don't try using the backup superblocks if there
2743 aren't any.
2744 (check_super_block): If there are illegal inode table or
2745 bitmaps, set the filesystem as being in error.
2746
2747Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2748
2749 * pass2.c (check_dir_block): Added check to make sure that rec_len
2750 is a a multiple of 4 (so that the directory entries are
2751 4-byte aligned).
2752
2753Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2754
2755 * Makefile.in (uninstall): Uninstall all programs in the PROGS
2756 line.
2757 (PROGS): Don't build and install the extend program by
2758 default.
2759
2760
2761Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2762
2763 * pass1.c (process_inodes): Make sure the stashed_ino variable is
2764 saved and restored as well.
2765 (pass1): For fast sym links, skip the check_blocks
2766 processing step altogether.
2767
2768Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2769
2770 * problem.c, message.c: New files, to completely refurbish how
2771 filesystem problems are reported to the user. The
2772 diagnostic messages are now encoded out in an easily
2773 customizable, extensible format. The messages printed out
2774 in preen mode are all on one line, and contain the device
2775 name.
2776
2777Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2778
2779 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
2780 deleted files.
2781
2782 * pass1.c (pass1): Ignore missing inode table errors during the
2783 scan, and just skip past those inodes.
2784
2785 * pass3.c (check_root): Remove root_ino argument, and assume that
2786 the root inode must be EXT2_ROOT_INO. Move responsibility
2787 of setting the parent of the root inode in the directory
2788 inode structure to pass2().
2789
2790 * pass2.c (check_dir_block): Don't allow links to the root
2791 directory.
2792
2793 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
2794 since the inode is no longer used.
2795
2796Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2797
2798 * e2fsck.c (main): If the superblock magic number is wrong, or the
2799 block group fails a sanity check, then automatically
2800 restart trying to use the backup superblocks.
2801
2802 * pass1.c (mark_table_blocks): Make the inode tables ahead of
2803 everything else; in the case where a bitmap block overlays
2804 the inode table, the inode table should take precedence.
2805
2806 * pass2.c (maybe_clear_entry): Make the deleted/unused error
2807 message fit on one line, since the error can happen during
2808 a preen pass. (We eventually need to revamp the whole
2809 e2fsck error reporting and prompting system, but that's a
2810 job for another day.)
2811
2812Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2813
2814 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
2815 for the benefit of the inode scan functions.
2816
2817 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
2818 indicating that an inode is in a bad block, mark that
2819 inode as being used, as well as in the inode "bb" map.
2820
2821 * pass2.c (maybe_clear_entry): New function which generalizes the
2822 error cases when a directory entry needs to be cleared.
2823 (check_dir_block): If an inode is in the "bb" map, offer
2824 to clear the directory entry, since the inode is in a bad
2825 block.
2826
2827 * pass4.c (pass4): If an inode is marked as used, but is is marked
2828 in the "bb" map, don't process it as a disconnected inode.
2829
2830Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2831
2832 * Release of E2fsprogs version 1.06
2833
Theodore Ts'o5c576471997-04-29 15:29:49 +00002834Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2835
2836 * e2fsck.c (main): Print out the version number of the shared
2837 library when using the -V option.
2838
2839 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
2840 consistency's sake.
2841
2842 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
2843 out the backup superblocks when we know we have a valid
2844 filesystem.
2845
2846Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2847
2848 * util.c (preenhalt): Make it explicit on preenhalt that running
2849 e2fsck manually means without the -a or -p flag.
2850
2851Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2852
2853 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
2854 (Linux/FT actually sets the mode bits, so we have to
2855 handle it specially.)
2856
2857 * e2fsck.c (check_if_skip): Print a message if the filesystem is
2858 just dirty, so that the user knows that it's about to be
2859 checked (since this will take a while).
2860
2861Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2862
2863 * pass4.c: If a disconnected inode is zero-length, prompt to
2864 delete it instead of connecting it to lost+found.
2865
2866Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2867
2868 * Release of E2fsprogs version 1.05
2869
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00002870Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2871
2872 * pass4.c (pass4): If the user refuses to connect an unattached
2873 inode to lost+found, don't try to set i_links_count. This
2874 is bad, since if the user says yes, the inode will be
2875 marked as unused, which is not necessarily the right
2876 thing, especially since the rest of the cleanup doesn't
2877 happen here.
2878
2879 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
2880 dellocating an inode. (Not strictly necessary, but...)
2881
2882 * pass4.c (pass4): Add "bonehead" explanation to the "programming
2883 error" message.
2884
2885Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2886
2887 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
2888 byte-swap the filesystem so that it is normalized. -S
2889 will byte-swap the filesystem regardless of its current
2890 byte-order.
2891
2892 * swapfs.c: New file, which will byte-swap a filesystem.
2893
2894Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2895
2896 * pass1.c (pass1): Change handling on files with non-zero dtime
2897 and non-zero i_link_count; before we treated them as
2898 deleted file per botched ext2 0.3c kernel behavior. We
2899 now clear dtime instead.
2900
2901Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2902
2903 * e2fsck.c (main): If e2fsck sets the clean bit, even if
2904 nothing else is changed, make sure FSCK_NONDESTRUCT is
2905 set (since after all having the filesystem set to
2906 invalid is an error. :-)
2907
2908Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2909
2910 * pass1.c (process_block): Make sure that meta data doesn't get
2911 accidentally set in the dir_blocks array (which could
2912 happen in some error condtions).
2913
2914 * pass1.c (pass1):
2915 * pass2.c (process_bad_inode): Check for fragments in a
2916 OS-independent fashion.
2917
2918Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2919
2920 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
2921 cleanup for the filesystem.
2922
2923Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2924
2925 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
2926
Theodore Ts'o62c06f71997-04-29 14:34:47 +00002927Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2928
2929 * Release of E2fsprogs version 1.04
2930
2931Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2932
2933 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
2934 try "e2fsck -b 8193" before allowing e2fsck to relocate
2935 inode table blocks.
2936
2937 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
2938 depending on the option to configure. Added targets for
2939 e2fsck.static and e2fsck.shared for people who want to
2940 build a static or shared variant manually.
2941
Theodore Ts'o7f88b041997-04-26 14:48:50 +00002942Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
2943
2944 * Release of E2fsprogs version 1.03
2945
2946Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
2947
2948 * e2fsck.c (show_stats): Don't use floating point to display
2949 percentage of non-contiguous files, as different libc
2950 handle result truncation differently, and this causes the
2951 test suite to bomb out depending on which libc you are
2952 using.
2953
2954 * util.c (allocate_memory): Fix error message to omit extraneous
2955 %%s.
2956
2957Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
2958
2959 * pass4.c (pass4):
2960 * pass2.c (check_dir_block):
2961 * pass1.c (pass1): Add support for dynamic first inode revision.
2962
2963Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
2964
2965 * pass3.c (check_root): Fix spelling typo
2966
2967Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
2968
2969 * e2fsck.c (check_super_block): If the superblock fails certain
2970 internal consistency checks, exit with a fatal error after
2971 printing the "superblock is corrupt message".
2972
Theodore Ts'o74becf31997-04-26 14:37:06 +00002973Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
2974
2975 * Release of E2fsprogs version 1.02
2976
2977Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
2978
2979 * pass1.c (process_block): Check to see if a file is "fragmented".
2980 i.e., non-contiguous. Note that any file which is larger
2981 than the block group is guaranteed to be non-contiguous.
2982 We may want to use a different hueristic for deciding
2983 whether or not a file is "fragmented".
2984
2985 * e2fsck.c (show_stats): Print statistics of how many
2986 non-contiguous files are on the system.
2987
2988Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
2989
2990 * badblocks.c (read_bad_blocks_file, test_disk): Fold
2991 functionality of test_disk() (which runs badblocks) into
2992 read_bad_blocks_file(); test_disk() now calls
2993 read_bad_blocks_file() with a NULL bad_blocks_file
2994 argument.
2995
2996Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
2997
2998 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
2999 #if defined(linux). The latter won't work if we're
3000 compiling -ansi.
3001
Theodore Ts'o297f47a1997-04-26 14:25:20 +00003002Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
3003
3004 * e2fsck.c (check_mount): For Linux systems, the check to see if
3005 the root is mounted read-only has to be done for all
3006 filesystems, not just for the root filesystem, due to the
3007 way that some /etc/rc scripts are set up.
3008
Theodore Ts'o50e1e101997-04-26 13:58:21 +00003009Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
3010
3011 * Makefile.in (install): Strip programs when they are installed.
3012 (e2fsck): Build e2fsck statically.
3013
3014Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
3015
3016 * util.c (preenhalt): Preenhalt now takes an argument, which is an
3017 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
3018 flag in the superblock in cases where preenhalt is called.
3019 All calls to preenhalt() were changed to either
3020 preenhalt(fs) or preenhalt(NULL) in a few cases where the
3021 fs pointer was not available. (Most notable, for block
3022 read/write errors.)
3023
3024Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
3025
3026 * ehandler.c:
3027 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
3028
3029Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
3030
3031 * e2fsck.c (show_stats): Show statistics about how many inodes
3032 have indirect, doubly indirect, and triply indirect
3033 blocks. Allow up to 8 digits for statistics, instead of
3034 merely 6, so things look pretty for large filesystems.
3035
3036 * pass1.c (pass1): Keep statistics about indirect, doubly
3037 indirect, and triply indirect blocks.
3038
3039 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
3040 pass 1.
3041
3042Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
3043
3044 * util.c, ehandler.c: Move #include of <sys/resource.h> after
3045 #include of "e2fsck.h", since sys/resource.h may depend on
3046 sys/time.h, which is #included in e2fsck.h.
3047
3048Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
3049
3050 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
3051 function to determine if the device is mounted.
3052
3053 * e2fsck.c (main): Add better error messages if ext2fs_open()
3054 fails.
3055
3056Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
3057
3058 * pass1.c (check_blocks): If we're clearing a directory, clear
3059 pb.is_dir so we don't do the following check of making
3060 sure the directory size matches; this is pointless, since
3061 we've already cleared the inode.
3062
3063Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3064
3065 * pass1.c (bad_primary_block): New function, called by
3066 process_bad_block, which explains the facts of life to the
3067 user when a block in the primary superblock or primary
3068 group descriptors is bad.
3069
3070 * pass2.c (check_dot): Handle the case where the first directory
3071 entry is used, but not ".".
3072
3073 * pass2.c (check_dotdot): Handle the case where the second directory
3074 entry is used, but is not "..".
3075
3076Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3077
3078 * e2fsck.c (check_super_block): Get the size of the physical
3079 device and if it is smaller than the reported size of the
3080 filesystem, report an error.
3081
3082Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
3083
3084 * e2fsck.c (check_if_skip): Print the number of allocated files and
3085 blocks on clean filesystems.
3086
3087Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
3088
3089 * e2fsck.8: Updated date and version number.
3090
3091Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
3092
3093 * pass1.c (check_blocks): Check that directory size matches *exactly*
3094 the count of allocated blocks.
3095
3096Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
3097
3098 * pass1b.c (pass1d): Free the shared[] array when we're done with
3099 it to avoid a memory leak.
3100
3101 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
3102 block_dup_map.
3103
3104 * pass2.c (process_bad_inode): When clearing the inode, make sure
3105 the pathname is freed, to prevent a memory leak.
3106
3107 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
3108 when we're finished with them.
3109 (check_block_bitmaps): Free free_array when we're finished
3110 with them.
3111
3112 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
3113 linking the executable.
3114
3115 * pass2.c (process_bad_inode): Even on OS's that don't support the
3116 fragment fields, make sure the Linux equivalent fields are
3117 set to zero. If an OS wants to reuse these fields, which
3118 is probably a bad idea (although we may get desperate in
3119 the future) this code will have to be changed.
3120
3121 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
3122 on the inode field, and then blockcnt field. This is just
3123 to keep the ordering of dir_blocks the same on all
3124 platforms when there are more than on missing directory
3125 blocks, which are indicated directories with holes, which
3126 are indicated with the block number being set to zero.
3127
3128Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3129
3130 * pass1.c (check_blocks, process_block): check_blocks() modified
3131 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
3132 the inode is a directory. process_block() now checks to
3133 see if a directory has a "hole", or missing block. If so,
3134 this fact is recorded in the directory block list so that
3135 the problem can be resolved in pass #2.
3136
3137 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
3138 allocate new blocks for directories with "holes". Called
3139 out of check_dir_block if a block in the directory block
3140 list is zero.
3141
3142 * pass3.c (get_lost_and_found): Move location of free(block) to
3143 prevent possible memory leak.
3144
3145Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3146
3147 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
3148 instead of alloca() --- alloca is not portable! Check to
3149 make sure the filename is not longer than EXT2_NAME_LEN,
3150 and offer to fix it by truncating it, since it should
3151 never happen.
3152
3153 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
3154 not portable!! In any case putenv() in some systems must
3155 take a static character array or malloc()'ed memory;
3156 passing memory allocated using alloca() to putenv() is not
3157 advisable.
3158
3159 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
3160 alloca() --- alloca() is not portable!!!
3161
3162Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
3163
3164 * pass1b.c (pass1c):
3165 * pass3.c (check_root, get_lost_and_found):
3166 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
3167 to read/write the directory block.
3168
3169Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
3170
3171 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
3172 make sure VMIN and VTIME are set correct.
3173
3174Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
3175
3176 * pass1.c (mark_block_used): Change to be an inline function.
3177 Assume that the block validity checks are already done,
3178 and use the fast variant of the bitmap functions.
3179
3180Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
3181
3182 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
3183 bounds of the bitmaps in advance, and then use the fast
3184 variant of e2fs_test_{block,inode}_bitmap.
3185
3186 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
3187 the bounds checking has already been done earlier.
3188
3189Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
3190
3191 * pass1.c (pass1): Allocate and free the block_illegal_map, which
3192 is used for shortcut processing in process_block.
3193 (mark_table_blocks): Initialize block_illegal_map with the
3194 filesystem blocks.
3195 (describe_illegal_block): New helper function that
3196 describes why a block is illegal.
3197 (process_block): Use block_illegal_map as a shortcut
3198 to determine whether a block is bad. Use
3199 describe_illegal_block to print out why the block is illegal.
3200
3201Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
3202
3203 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
3204
3205 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
3206 <mntent.h> if they don't exist. (Mostly so that "make
3207 depend" works.)
3208
3209 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
3210 it exists).
3211
3212 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
3213 exist.
3214
3215Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3216
3217 * pass2.c (process_bad_inode, check_for_zero_long,
3218 check_for_zero_char): Change long to u32, and char to u8.
3219
3220Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3221
3222 * util.c (inode_has_valid_blocks):
3223 * pass2.c (process_bad_inode):
3224 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
3225 LINUX_S_IS* instead of S_IS*.
3226
3227 * e2fsck.h: Don't #include <sys/stat.h>
3228
3229 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
3230 this program is pretty much useless if BLKFLSBUF isn't
3231 supported.)
3232
3233 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
3234 used.
3235
3236Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
3237
3238 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
3239 to allocate space for file names instead of using fixed size buffers.
3240 (process_bad_inode): Only check inode frag fields if
3241 HAVE_EXT2_FRAGS is defined (by configure).
3242 * pass1.c (pass1): Only check the inode frag fields if
3243 HAVE_EXT2_FRAGS is defined (by configure).
3244
3245 * e2fsck.c (check_mount): Only check for a mounted filesystem if
3246 HAVE_MNTENT_H is defined (by configure).
3247 (PRS): Use alloca to allocate the new path string, instead of
3248 having a fixed size buffer (which was the wrong size anyway).
3249 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
3250 is defined.
3251
3252 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
3253 defined (by configure).
3254
3255 * Makefile.in: Rewritten to conform to GNU coding standards and
3256 support separate compilation directories.
3257
3258Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
3259
3260 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
3261
Theodore Ts'of3db3561997-04-26 13:34:30 +00003262Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
3263
3264 * pass1.c (unwind_pass1): Clear the file type statistics counter
3265 when pass 1 needs to be restarted from scratch.
3266
3267 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
3268 being reallocated to blocks in the next block group,
3269 instead of the current block grup.
3270
3271 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
3272 inode.i_links_count is set.
3273
3274Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
3275
3276 * pass1.c (process_block): Add checks for if the block is
3277 trepassing on a superblock or group descriptor table.
3278
3279Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
3280
3281 * main.c (corrupt_msg): Extend the message which is printed out
3282 when the superblock is corrupt, to include the suggestion
3283 of using the -b option to specify an alternate superblock.
3284
3285Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
3286
3287 * badblocks.c (read_bad_blocks_file): If we are adding or
3288 replacing bad blocks in the bad blocks inode, sanity check
3289 the bad block inode first, and clear out any illegal blocks.
3290
3291 * pass2.c (check_name): Don't bomb out if the attempt to get the
3292 pathname of the containing directory returns an error; the
3293 directory may be too badly damaged to expect that
3294 ext2fs_get_pathname will always succeed. Use "???" if the
3295 pathname can't be obtained (it's only for a printf to the
3296 user anyway).
3297
3298 The name of the containing directory and the bad filename
3299 were incorrectly interchanged in the user message. Fixed.
3300
3301 * pass2.c (check_name, check_dir_block): Use a common static
3302 string for the unknown pathname.
3303
3304Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
3305
3306 * Fixed lots of printf formats to make sure that block and inode
3307 numbers are printed as unsigned integers.
3308
3309Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
3310
3311 * pass5.c (check_block_end): Fix calculation of how the last block
3312 in the block bitmap should be calculated.
3313
3314Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
3315
3316 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
3317 be an ext2fs_inode_bitmap, and free it properly.
3318
3319 * e2fsck.h
3320 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
3321 level to the superblock.
3322
3323Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
3324
3325 * e2fsck.c (usage): Fixed bogus usage message.
3326
3327Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
3328
3329 * pass1.c (process_bad_block): Fixed bug so that blocks in the
3330 backup superblocks and group descriptors are handled gracefully.
3331