blob: 2d85bb2ad0ee6ea78cb011fa91ce116e1cf2f598 [file] [log] [blame]
Theodore Ts'o48e6e812003-07-06 00:36:48 -040012003-07-06 Theodore Ts'o <tytso@mit.edu>
2
3 * pass2.c: Fix gcc -Wall nitpicks (missing #include <string.h>)
4
5 * dict.c, dict.h: Fix gcc -Wall nitpicks (indented cpp directives)
6
Theodore Ts'od3128cc2003-06-24 18:06:03 -040072003-06-8 Theodore Ts'o <tytso@mit.edu>
8
9 * problem.c: Fix spelling error.
10
Theodore Ts'o113e4052003-05-17 21:00:46 -0400112003-05-17 Theodore Ts'o <tytso@mit.edu>
12
13 * unix.c (show_stats), e2fsck.h: Use ngettext (abbreivated with
14 the macro P_(str1, str2, n)) to simplify the statistics
15 reporting.
16
Theodore Ts'o2a29f132003-05-05 12:08:47 -0400172003-05-05 Theodore Ts'o <tytso@mit.edu>
18
19 * unix.c (main): If --enable-testio-debug is set, then use the
20 test_io manager so we can watch what e2fsck is doing.
21
Theodore Ts'oa04eba32003-05-03 16:35:17 -0400222003-05-03 Theodore Ts'o <tytso@mit.edu>
23
Theodore Ts'oddc32a02003-05-03 18:45:55 -040024 * unix.c (show_stats): Remove uneeded use of _() around string
25 under #ifndef NLS
26
27 * problem.c: Mark two strings (PR_1_RELOC_TO and
28 PR_2_NON_UNIQUE_FILE) as not being printf format strings.
29 Fix typo (doubled 'is') in PR_2_FILE_ACL_BAD.
30
Theodore Ts'oa04eba32003-05-03 16:35:17 -040031 * Makefile.in: Add $(LIBINTL) to the link line so we can support
32 using the internal gettext library.
33
34 * e2fsck.h: Add #ifndef protection around LOCALEDIR definition.
35
Theodore Ts'o6177c412003-04-27 17:34:14 -0400362003-04-27 Theodore Ts'o <tytso@mit.edu>
37
38 * message.c (expand_at_expression): Fixed NLS support for message
39 abbreviations.
40
Theodore Ts'o71df0dc2003-04-21 16:17:09 -0400412003-04-21 Theodore Ts'o <tytso@mit.edu>
42
43 * Release of E2fsprogs 1.33
44
Theodore Ts'o520ead32003-04-19 13:48:27 -0400452003-04-19 Theodore Ts'o <tytso@mit.edu>
46
47 * rehash.c: Fix lint warnings by including string.h and ctype.h
48
49 * pass2.c (dict_de_cmp): Fix lint warnings by using const pointers.
50
51 * unix.c (e2fsck_simple_progress), e2fsck.h: Fix lint warnings by
52 using const pointers. Remove unused variables.
53
Theodore Ts'o12dd69f2003-04-17 21:55:38 -0400542003-04-17 Theodore Ts'o <tytso@mit.edu>
55
56 * rehash.c (name_cmp): Sort the deleted inodes to the end of the
57 list, for portability to systems that whose qsort does not
58 perform a stable sort.
59
Theodore Ts'obc34d6b2003-04-16 14:05:06 -0400602003-04-16 Theodore Ts'o <tytso@mit.edu>
61
62 * unix.c: Bracket progress bar output with control-A and control-B
63 characters. These characters are used as in-band
64 signalling to allow a logging program to filter out the
65 progress bar.
Theodore Ts'o908b7852003-04-16 15:20:13 -040066 (PRS): Use setvbuf instead of setbuf to force stdout and
67 stderr to be non-buffered when the stdout/stderr are a pipe.
Theodore Ts'o12dd69f2003-04-17 21:55:38 -040068 This fixes a cosmetic problem when using e2fsck under
69 logsave.
Theodore Ts'o908b7852003-04-16 15:20:13 -040070
Theodore Ts'offf45482003-04-13 00:44:19 -0400712003-04-12 Theodore Ts'o <tytso@mit.edu>
72
73 * unix.c: Add #ifdef around #include <sys/ioctl.h>
74
Theodore Ts'o2a77a782003-04-05 22:50:44 -0500752003-04-05 Theodore Ts'o <tytso@mit.edu>
76
77 * super.c (check_super_block): Update the global free block and
78 inode counters from the block group specific counters
79 quietly. This is needed for an experimental patch which
80 eliminates locking the entire filesystem when allocating
81 blocks or inodes; if the filesystem is not unmounted
82 cleanly, the global counts may not be accurate.
83
Theodore Ts'oaa75ecc2003-03-17 10:01:22 -0500842003-03-17 Theodore Ts'o <tytso@mit.edu>
85
86 * util.c: Explicitly declare e2fsck_global_ctx as extern for the
87 benefit of the Apple Darwin port.
88
Theodore Ts'o1d2eef42003-03-15 13:30:07 -0500892003-03-15 Theodore Ts'o <tytso@mit.edu>
90
91 * rehash.c (e2fsck_rehash_dir): If user specified the -n option,
92 skip trying to write out directory.
93 (e2fsck_rehash_directories): Fix the percentage
94 calculation in the progress bar.
95
Theodore Ts'ob0700a12003-03-14 01:43:56 -0500962003-03-14 Theodore Ts'o <tytso@mit.edu>
97
Theodore Ts'o12dd69f2003-04-17 21:55:38 -040098 * problem.c, problem.h (PR_2_REPORT_DUP_DIRENT): Add new problem
99 code.
Theodore Ts'o09266682003-03-14 22:19:10 -0500100
101 * pass2.c (check_dir_block): Check for duplicate filenames within
102 a single directory block (because this is the easy case;
103 we don't currently check for duplicates that span
104 directory blocks, for now. Eventually for htree
105 directories we can do this by searching for all directory
106 blocks that have a hash overflow, and then searching the
107 adjacent blocks to find all other potential duplicates.)
108
Theodore Ts'oe71d8732003-03-14 02:13:48 -0500109 * iscan.c, scantest.c, unix.c: And #ifdef protection around
110 #include of malloc.h
111
Theodore Ts'ob0700a12003-03-14 01:43:56 -0500112 * rehash.c (duplicate_search_and_fix): Now search for duplicates
113 filenames, and either prompt to remove a complete
114 duplicate entry, or to rename a duplicate filename.
115 (e2fsck_rehash_dir): Use a progress bar to report
116 progress, and don't print all of the directory inodes as
117 they are optimized.
118
119 * problem.c, problem.h (PR_2_DUPLICATE_DIRENT,
120 PR_2_NON_UNIQUE_FILE): New problem codes.
121
122 * unix.c (e2fsck_simple_progress), e2fsck.h: New function which
123 can be called to provide specialized progress bars that
124 are not related to the top-level pass-based completion
125 percentage.
126
127 * pass3.c (e2fsck_adjust_inode_count), e2fsck.h: Export previously
128 static function.
129
Theodore Ts'o77be4d22003-03-06 12:39:55 -05001302003-03-06 <tytso@mit.edu>
131
132 * e2fsck.8.in: Fix minor nit in the -C option. (Addresses Debian
133 bug #173612)
134
Theodore Ts'of3640932003-03-01 19:47:44 -05001352003-03-01 Theodore Ts'o <tytso@mit.edu>
136
137 * Makefile.in, journal.c, unix.c: Use blkid functions to find the
138 journal from the UUID, and to interpret the device
139 specification.
140
141 * e2fsck.c: Free the blkid_cache when releasing the e2fsck context
142 structure.
143
144 * e2fsck.h: If strnlen is not present, define it as a macro which
145 calls e2fsck_strlen(). Add prototype for string_copy().
146 Add blkid_cache to e2fsck context, and make
147 filesystem_name, device_name, and journal_name be
148 non-const variables.
149
150 * pass1.c, pass2.c: Remove static strnlen function
151
152 * util.c (string_copy, e2fsck_strnlen): New functions
153
Theodore Ts'o19445ef2003-01-29 21:04:52 -05001542003-01-29 Theodore Ts'o <tytso@mit.edu>
155
156 * unix.c (usage): Make descripton -c be a bit more explicit
157
Theodore Ts'o4f489282003-01-22 18:28:15 -05001582003-01-22 Theodore Ts'o <tytso@mit.edu>
159
160 * pass1.c (check_blocks): Use the EXT2_I_SIZE macro.
161
Theodore Ts'ob92ae152003-01-02 16:53:54 -05001622003-01-02 Theodore Ts'o <tytso@mit.edu>
163
164 * unix.c (main): Detect if there is an attempt to run the journal
165 twice, and abort with an error if this is the case.
166 (Address IBM Bugzilla bug #1226)
167
Theodore Ts'oe34bf432002-12-18 18:28:10 -05001682002-12-18 Theodore Ts'o <tytso@mit.edu>
169
170 * pass2.c (strnlen): Provide strnlen if libc doesn't.
171
Theodore Ts'o8161a742003-01-02 16:36:44 -05001722003-11-19 Theodore Ts'o <tytso@mit.edu>
173
174 * unix.c (PRS): Print an error if more than one of the -p/-a, -n
175 or -y options are specified.
176
Theodore Ts'o54779c62002-11-13 07:00:16 -05001772002-11-12 Theodore Ts'o <tytso@mit.edu>
178
179 * problem.c: Make HTREE problems PR_PREEN_OK, so that we don't
180 abort an e2fsck after the filesystem has been mounted
181 using the 2.4 ext2 codebase.
182
Theodore Ts'o38513012002-11-09 15:00:56 -05001832002-11-09 Theodore Ts'o <tytso@mit.edu>
184
185 * Release of E2fsprogs 1.32
186
Theodore Ts'oae65b292002-11-08 20:08:48 -05001872002-11-08 Theodore Ts'o <tytso@mit.edu>
188
189 * Release of E2fsprogs 1.31
190
Theodore Ts'o299d7422002-11-08 11:10:28 -05001912002-11-08 <tytso@snap.thunk.org>
192
Theodore Ts'oc1637bd2002-11-08 15:55:17 -0500193 * unix.c (main): Fix a bug where e2fsck could erroneously mark a
194 filesystem as being valid if it was being checked and it
195 is interrupted with a ^C. (Bug introduced in e2fsprogs
196 1.28.)
197
Theodore Ts'o5e72cdb2002-11-08 15:35:13 -0500198 * unix.c (PRS), journal.c: Set the default level of journal
199 debugging to be 0, and allow the user to set the level of
200 journal debugging by using the E2FSCK_JBD_DEBUG
201 environment variable.
202
Theodore Ts'o299d7422002-11-08 11:10:28 -0500203 * pass1.c (new_table_block), super.c (check_super_block), swapfs.c
204 (swap_filesys): Clear EXT2_FLAG_MASTER_SB_ONLY to make
205 sure the backup superblocks and group descriptors are
206 updated when we make an important change to the
207 superblocks and/or group descriptors. (i.e., generating a
208 UUID, allocating filesystem metadata, or byte-swapping the
209 filesystem.)
210
Theodore Ts'oee895132002-11-07 16:16:55 -05002112002-11-07 Theodore Ts'o <tytso@mit.edu>
212
213 * e2fsck.h, unix.c (main, check_mount): Fix e2fsck so that it
214 returns the appropriate exit code, so that the boot
215 scripts will be told that they need to automatically
216 reboot.
217
Theodore Ts'obe93ef02002-10-31 18:38:55 -05002182002-10-31 Theodore Ts'o <tytso@mit.edu>
219
Theodore Ts'o5d823a42002-11-01 02:13:53 -0500220 * Release of E2fsprogs 1.30
221
2222002-10-31 Theodore Ts'o <tytso@mit.edu>
223
Theodore Ts'ob40ffd72002-10-31 19:30:24 -0500224 * unix.c (usage), e2fsck.8.in: Add the -D option to the usage and
225 command synopsis. (Addresses Debian bug #167108)
226
Theodore Ts'obe93ef02002-10-31 18:38:55 -0500227 * pass1.c (e2fsck_pass1): Check the superblock write time to see
228 whether or not we can safely do the LOW_DTIME checks.
229 (Addresses Sourceforge bug #620980)
230
Theodore Ts'o76dd5e52002-10-30 23:07:21 -05002312002-10-30 Theodore Ts'o <tytso@mit.edu>
232
Theodore Ts'o482afc42002-10-31 03:32:34 -0500233 * Makefile.in (install): Search all compression extensions when
234 deleting old man pages.
235
Theodore Ts'o76dd5e52002-10-30 23:07:21 -0500236 * pass1.c (mark_table_blocks): Fix bug in meta_bg support; only
237 mark blocks legacy group descriptor blocks up to
238 s_first_meta_bg.
239
Theodore Ts'oa49929b2002-10-20 00:58:08 -04002402002-10-20 Theodore Ts'o <tytso@valinux.com>
241
242 * pass1.c (mark_table_blocks): Add support for the meta_blockgroup
243 filesystem format.
244
Theodore Ts'o3e699062002-10-13 23:56:28 -04002452002-10-13 Theodore Ts'o <tytso@mit.edu>
246
247 * pass3.c (e2fsck_get_lost_and_found): Pass in mode 700 to
248 ext2fs_new_inode().
249
250 * unix.c (show_stats): Fix format bug if NLS is in use.
251
252 * journal.c, pass1.c, revoke.c, util.c: Fix gcc -Wall nits.
253
Theodore Ts'o64aecc42002-10-11 17:44:12 -04002542002-10-08 Theodore Ts'o <tytso@mit.edu>
255
256 * pass3.c (e2fsck_get_lost_and_found): Create the lost+found
257 directory with mode 0700.
258
Theodore Ts'o8132d842002-10-02 22:07:17 -04002592002-10-02 Theodore Y. Ts'o <tytso@mit.edu>
260
261 * pass2.c (parse_int_node, check_dir_block): Add byte-swap
262 functions around the htree code, so that it works on
263 big-endian machines.
264
265 * swapfs.c (swap_filesys): For PPC machines, byte-swap the bitmap,
266 since PPC big-endian filesystems were historically wierd.
267 This is just for the regression test, since no one
268 actually uses them anymore...
269
Theodore Ts'oad4fa462002-09-30 11:19:19 -04002702002-09-30 Theodore Ts'o <tytso@mit.edu>
271
272 * problem.c, problem.h (PR_2_HTREE_BAD_LIMIT,
273 PR_2_HTREE_BAD_COUNT, PR_2_HTREE_HASH_ORDER,
274 PR_2_HTREE_BAD_DEPTH): Add new problem codes.
275
276 * pass2.c (salvage_directory, check_dir_block): Avoid counting
277 directory entries twice during a directory salvage. Make
278 the salvaging algorithm smarter about directory entry size
279 overruns.
280 (parse_int_node): Add check to make sure the limit and
281 count fields in the node headers are sane. Also check
282 to make sure the hash table in ascending order.
283 (pass2, htree_depth): For all leaf nodes, determine their
284 depth in the tree, and make sure it matches with the depth
285 in the htree root information.
286
Theodore Ts'ofe5b72d2002-09-29 19:05:26 -04002872002-09-29 Theodore Ts'o <tytso@mit.edu>
288
Theodore Ts'oe8254bf2002-09-29 19:30:28 -0400289 * pass2.c (check_dir_block): Do a more paranoid check when trying
290 to determine whether or not a directory entry is a
291 completely empty leaf block or leaf node. Otherwise
292 e2fsck might get confused into thinking that a valid dxdir
293 was corrupted.
294
Theodore Ts'ofe5b72d2002-09-29 19:05:26 -0400295 * rehash.c (e2fsck_rehash_dir): Apply patch from Christopher Li
296 which avoids creating an empty directory entry at the end
297 of the directory block. This screws up earlier versions
298 of the indexed directory patch.
299
Theodore Ts'oe70ae992002-09-28 09:16:28 -04003002002-09-28 Theodore Ts'o <tytso@mit.edu>
301
302 * rehash.c (write_directory): Clear the index flag if by
303 reoptimizing the directory, we bring it back into a
304 non-indexed state.
305 (e2fsck_rehash_dir): Allow directories that contain two
306 blocks to be indexed. Otherwise when they grow, they
307 never will be indexed by the kernel.
308
309 * unix.c (main): Only update the master superblock; there's no
310 point updating the backup superblocks, and it speeds up
311 fsck slightly.
312
313 * pass2.c (salvage_directory): New function called by
314 check_dir_block() which is much more sophisticated about
315 how it salvages corrupted filesystems.
316
Theodore Ts'oc6633052002-09-24 01:26:50 -04003172001-09-24 Theodore Tso <tytso@mit.edu>
318
319 * Release of E2fsprogs 1.29
320
Theodore Ts'ocf3909e2002-09-06 10:14:12 -04003212002-09-06 Theodore Ts'o <tytso@mit.edu>
322
323 * rehash.c (copy_dir_entries): Fix bug which caused corrupted
324 directories if there are 4 or 8 bytes left over in a
325 directory page when optimizing/reindexing a directory.
326
Theodore Ts'o87ee8dc2002-08-31 03:02:57 -04003272001-08-31 Theodore Tso <tytso@thunk.org>
328
329 * Release of E2fsprogs 1.28
330
Theodore Ts'oceecbc72002-08-31 02:35:35 -04003312002-08-31 Theodore Ts'o <tytso@mit.edu>
332
333 * ehandler.c (e2fsck_handle_read_error): If the user asks to
334 ignore the error, offer to try forcing a write of the
335 block to the disk; sometimes this will cause the drive to
336 remap the bad block.
337
Theodore Ts'oea1959f2002-08-31 02:32:41 -04003382002-08-31 Theodore Ts'o <tytso@valinux.com>
339
340 * pass2.c (e2fsck_pass2): If this is a HTREE directory, sort the
341 dblist so that the first block of all of the directories
342 is handled first so we can read the hash version
343 information.
344 (check_dir_block): Examine the root node for correctness,
345 and offer to clear it if it is not correct. Also copy the
346 hash version to the dx_dir structure, so that the proper
347 hash function can be used for other blocks in the
348 directory.
349
350 * problem.c, problem.h (PR_2_HTREE_BAD_ROOT): Add new problem code.
351
Theodore Ts'oa3da9d12002-08-21 12:52:03 -04003522002-08-21 Theodore Ts'o <tytso@mit.edu>
353
354 * problem.c: Fix PR_1_RELOC_BLOCK_ALLOCATE message to explain that
355 it is necessary to find contiguous blocks in a particular
356 block group.
357
Theodore Ts'o0684a4f2002-08-17 10:19:44 -04003582002-08-17 Theodore Ts'o <tytso@mit.edu>
359
Theodore Ts'of044b4d2002-08-17 13:32:21 -0400360 * e2fsck.8.in: Add clarifying text describing how e2fsck works
361 with ext3 filesytems. (Addresses Debian bug #145044).
362
363 * pass1.c (handle_htree): Add support for EXT2_HASH_TEA
364
Theodore Ts'o0684a4f2002-08-17 10:19:44 -0400365 * e2fsck.h, e2fsck.c (e2fsck_allocate_context): Add new field to
366 the e2fsck context, ext_attr_ver, which specifies the EA
367 format version.
368
369 * unix.c (usage, parse_extended_opts, PRS), e2fsck.8.in: Add new
370 option -E, which allows the users to specify extended
371 options. Added ea_ver extended option.
372
373 * pass1.c (e2fsck_pass1_check_device_inode): Add ext2_filsys
374 argument to this function, so we can account for the
375 presence of extended attribute blocks attached to device
376 inodes.
377 (e2fsck_pass1_check_symlink, e2fsck_pass1): Take into
378 account the fact that symlinks can also have extended
379 attribute blocks.
380 (check_ext_attr): Don't be flexible about the EA format
381 version. Check against the version number in
382 ctx->ext_attr_ver.
383 (check_blocks): Check all inodes, so that we account for
384 extended attribute blocks belonging to special files.
385 Clean up i_size checks.
386
387 * pass1b.c (pass1b): Check all inodes, so that we account for
388 extended attribute blocks belonging to special files.
389 (delete_file_block): Use ext2fs_alloc_block_stats() to
390 update the filesystem statistics.
391 (delete_file): Attempt to decrement the extended
392 attribute refcount, and free the EA block if the count
393 hits zero.
394 (clone_file): Fixed bugs in EA handling. Don't call
395 block_iterate on inodes that don't have a valid i_block[]
396 array. Reread the base inode since it may have been
397 changed by ext2fs_block_iterate. When updating inodes as
398 part of cloning an EA block, write out the correct inode
399 structure.
400
401 * pass2.c (deallocate_inode_block, deallocate_inode): Use standard
402 ext2fs_alloc_*_stats functions to update the filesystem
403 statistics.
404 (deallocate_inode): Attempt to decrement the extended
405 attribute refcount, and free the EA block if the count
406 hits zero.
407 (e2fsck_process_bad_inode): Add extra argument to calls
408 to e2fsck_pass1_check_device_inode ().
409
410 * pass3.c (e2fsck_get_lost_and_found): Use standard
411 ext2fs_alloc_*_stats functions to update the filesystem.
412 statistics when creating /lost+found.
413 (adjust_inode_count): Remove debugging code that can never
414 be triggered.
415
416 * pass4.c (disconnect_inode): Add explanation about why we only
417 clear inodes that have no data blocks and no EA blocks.
418 Use ext2fs_inode_alloc_stats2 function to update the
419 filesystem statistics when clearing a zero-length inode.
420
421 * problem.c, problem.h (PR_1B_ADJ_EA_REFCOUNT,
422 PR_2_ADJ_EA_REFCOUNT): Add new problem codes.
423
424 * super.c (release_inode_block), (release_orphan_inodes): Use the
425 standard ext2fs_alloc_*_stats functions to update the
426 filesystem statistics.
427 (release_inode_blocks): Attempt to decrement the extended
428 attribute refcount, and free the EA block if the count
429 hits zero.
430
Theodore Ts'o838e7732002-08-01 12:37:00 -04004312002-08-01 Theodore Ts'o <tytso@mit.edu>
432
433 * dict.c, dict.h: New file from kazlib 1.20 which implements a
434 red-black tree
435
436 * pass1b.c: Massive changes to take advantage of dict.c. This
437 removes several O(n**2) algorithms from the rare case
438 where there are a large number of blocks claimed by
439 multiple inodes.
440
Theodore Ts'o542867f2002-07-24 07:42:02 -04004412002-07-24 Theodore Ts'o <tytso@mit.edu>
442
Theodore Ts'o850d05e2002-07-25 00:00:08 -0400443 * e2fsck.8.in, e2fsck.h, pass3.c (e2fsck_pass3), unix.c, rehash.c:
444 Add new option -D, which requests e2fsck to optimize all
445 directories. Rehash.c will also compress and sort
446 non-indexed directories.
447
448 * problem.c, problem.h: Rename PR_3A_REHASH_* to PR_3A_OPTIMIZE_*
449
450 * unix.c (PRS): Make sure the signal_cancel is registered without
451 SA_RESTART.
452
453 * rehash.c (e2fsck_rehash_dir, copy_dir_entries, calculate_tree):
454 Restructured code in e2fsck_rehash_dir into two new
455 subroutines to make the code more understandable/maintainable.
456 (set_root_node): Fixed bug which caused the root node to
457 be invalid on non-FILETYPE filesystems due to an
458 unitialized variable.
459 (calculate_tree): Fix bug where pointers which might get
460 invalidated if realloc() moves outdir->buf around.
461 (e2fsck_rehash_dir): Fix memory leak bug.
462
463 * pass3.c (e2fsck_get_lost_and_found), e2fsck.h, e2fsck.c:
464 Exported as a public interface a function for finding the
465 lost and found directory. Cache the location of the lost
466 and found directory in the e2fsck context structure.
467
Theodore Ts'o542867f2002-07-24 07:42:02 -0400468 * util.c (ask_yn, read_a_char): Note when the user has typed ^C,
469 and abort processing by longjmp'ing to ctx->abort_loc.
470
Theodore Ts'o3214a452002-07-23 12:00:00 -04004712002-07-23 Theodore Ts'o <tytso@mit.edu>
472
473 * pass1.c (e2fsck_pass1): If e2fsck is run with -n, don't create
474 the dirs_to_hash list, since we don't want to reindex
475 directories if the filesystem is opened read-only.
476
Theodore Ts'o4cae0452002-07-21 14:14:03 -04004772002-07-21 Theodore Ts'o <tytso@mit.edu>
478
479 * e2fsck.8.in: Document new exit code FSCK_CANCELED
480
481 * unix.c (PRS, signal_cancel): Capture SIGINT and SIGTERM signals
482 and set a flag in the e2fsck context indicating that
483 cancellation has been requested, so that e2fsck will exit
484 only at safe points.
485 (main): Change the exit handling so that if a cancellation
486 is requested, return FSCK_CANCELED (a new exit code 32).
487 e2fsck can now return more than one exit code as part of a
488 bitmask (as had been documented in the man page).
489
490 * pass2.c (e2fsck_pass2, check_dir_block), pass3.c (e2fsck_pass3),
491 pass4.c (e2fsck_pass4): Check to see if a cancellation was
492 requested, and abort processing if necessary.
493
Theodore Ts'ob7a00562002-07-20 00:28:07 -04004942002-07-19 Theodore Ts'o <tytso@mit.edu>
495
496 * rehash.c, Makefile.in: New file which rewrites directories using
497 the htree format.
498
499 * problem.c (fix_problem), problemP.h (PR_PREEN_NOHDR): Add option
500 which suppresses the header printed when in preen mode.
501
502 * pass3.c (e2fsck_pass3): If there are entries on the dirs_to_hash
503 list, call e2fsck_rehash_directories to reindex those
504 directories.
505 (e2fsck_expand_directory): Generalize the old
506 expand_dirctory() function so it can expand a directory to
507 a guaranteed minimum size.
508
509 * e2fsck.h (struct e2fsck_struct): Add the dirs_to_hash list. Add
510 new function prototypes for rehash.c and for
511 e2fsck_expand_directory().
512
513 * e2fsck.c (e2fsck_reset_context): Free the dirs_to_hash list.
514
515 * pass1.c (e2fsck_pass1): Initialize the dirs_to_hash list if the
516 htree feature is present in the filesystem.
517 (check_blocks): If a non-htree directory has more than 2
518 blocks, put it on the dirs_to_hash list.
519
520 * pass2.c (clear_htree): Add corrupt htree directories to the
521 dirs_to_hash list.
522
523 * problem.h, problem.c (PR_3A_PASS_HEADER, PR_3A_REHASH_ITER,
524 PR_3A_REHASH_DIR_ERR, PR_3A_REHASH_DIR_HEADER,
525 PR_3A_REHASH_DIR, PR_3A_REHASH_DIR_END): Add new problem codes
526
527 * pass2.c (parse_int_node), problem.c (PR_2_HTREE_BADBLK): Fix
528 problem display.
529
Theodore Ts'o62acaa12002-07-15 16:54:42 -04005302002-07-15 Theodore Ts'o <tytso@mit.edu>
531
532 * pass2.c (e2fsck_pass2): Use dx_dir->numblocks instead of
533 dx_dir->ino to indicate that a bad inode was cleared.
534
Theodore Ts'o503f9e72002-06-26 16:52:10 -04005352002-06-26 Theodore Ts'o <tytso@mit.edu>
536
537 * pass1.c (check_blocks): Move htree handling to handle_htree().
538 Factor out calls to ext2fs_write_inode so that it happens
539 if dirty_inode is non-zero.
540 (handle_htree): Add checks for invalid htree root, invalid
541 hash version, invalid hash version, and htree depth too deep.
542
543 * problem.h, problem.c (PR_1_HTREE_NODIR, PR_1_HTREE_BADROOT,
544 PR_1_HTREE_HASHV, PR_1_HTREE_INCOMPAT, PR_1_HTREE_DEPTH):
545 Add new problem codes.
546
547 * pass2.c (parse_int_node): Fix silly typo.
548 (check_dir_block): Change to use new ext2fs_dirhash()
549 function prototype.
550 (pass2): Fixed two minor bugs discovered by the test case:
551 Don't stop checking dxdir's after clearing a bad inode.
552 If there is a bad max hash, make sure the bad_dir flag
553 is set to make sure we try to clear inode.
554
Theodore Ts'o8fdc9982002-06-25 23:26:34 -04005552002-06-25 Theodore Ts'o <tytso@mit.edu>
556
557 * e2fsck.c (e2fsck_reset_context): Free the dx_dirinfo structure.
558
559 * message.c: Add new abbrevations @h and @p, "HTREE directory
560 inode" and "problem in".
561
562 * pass1.c (check_blocks): If the inode has the INDEX_FL flag,
563 register the block into the indexed directory data
564 structures. Or if the filesystem doesn't have the
565 DIR_INDEX flag, offer to clear the INDEX_FL.
566
567 * pass2.c (e2fsck_pass2, parse_int_node): Add support check htree
568 directories (we don't check all possible corruptions yet).
569
570 * problem.h, problem.h (PR_1_HTREE_SET, PR_2_HTREE_NOTREF,
571 PR_2_HTREE_DUPREF, PR_2_HTREE_MIN_HASH, PR_2_HTREE_MAX_HASH,
572 PR_2_HTREE_CLEAR, PR_2_HTREE_FCLR, PR_2_HTREE_BADBLK): Add
573 new problem codes.
574
575 * unix.c (main): If ENABLE_HTREE is not defined, complain if the
576 filesystem has the dir_index feature.
577
578 * Makefile.in, e2fsck.h, dx_dirinfo.c: New file (and group of
579 functions) which keeps track of blocks in HTREE directory
580 blocks.
581
Andreas Dilgerb21bf262002-06-10 11:05:56 -06005822002-05-22 Andreas Dilger <adilger@clusterfs.com>
583
584 * super.c (check_superblock): Check that the number of inodes and
585 blocks in a group is less than 2^16, so that the free inode
586 and block counts for a group fit into the group descriptor
587 table fields. Any more than that would need a COMPAT flag.
588
Theodore Ts'o0d634672002-05-22 00:22:38 -04005892002-05-22 Theodore Ts'o <tytso@mit.edu>
590
591 * pass1.c (check_ext_attr): Update to support the V2 Bestbits EA
592 format. We automatically determine from the first EA
593 block we visit whether we are using the V1 or V2 format.
594
Theodore Ts'oda307042002-05-21 21:19:14 -04005952002-05-21 Theodore Ts'o <tytso@mit.edu>
596
597 * pass1.c (process_block): If an inode has too many blocks or
598 is too big, then offer to truncate the inode.
599 (check_blocks): Don't bother checking the size to see if
600 it's too big, since that's just a symptom, not the disease
601 (which we're now appropriately checking in process_block).
602
603 * problem.c, problem.h: Add new problem codes PR_1_INODE_TOOBIG,
604 PR_1_TOOBIG_DIR, PR_1_TOOBIG_REG, PR_1_TOOBIG_SYMLINK, and
605 add the latch code PR_LATCH_TOOBIG.
606
Theodore Ts'obcf9c5d2002-05-21 09:14:17 -04006072002-05-20 Theodore Ts'o <tytso@mit.edu>
608
609 * e2fsck.h, pass1.c (e2fsck_pass1_check_symlink), pass2.c
610 (e2fsck_process_bad_inode): Add an extra
611 argument so a scratch buffer can be passed into the
612 function.
613
614 * pass1.c (e2fsck_pass1_check_device_inode,
615 e2fsck_pass1_check_symlink): If the EXT2_INDEX_FL flag is
616 set, then the device/FIFO is invalid.
617 (check_immutable): Don't check for EXT2_INDEX_FL; we take
618 care of that elsewhere now.
619 (e2fsck_pass1): Check to see if the symlink is valid
620 before we offer to clear any immutable bits. This matches
621 the order in which we check other special files.
622
623 * pass2.c (e2fsck_pass2): Allocate a bigger scratch buffer so we
624 can pass part of it to e2fsck_process_bad_inode.
625
626 * pass4.c (e2fsck_pass4): If we need to call
627 e2fsck_process_bad_inode(), allocate the necessary scratch
628 buffer.
629
630 * problem.h, problem.c: Change PR_2_SYMLINK_SIZE to be
631 PR_2_INVALID_SYMLINK, and change the text
632 accordingly. Revert the text change for PR_1_SET_IMMUTABLE
633 since we no longer check for EXT2_INDEX_FL in
634 check_immutable().
635
6362002-05-18 Andreas Dilger <adilger@clusterfs.com>
637
638 * pass1.c (e2fsck_pass1_check_symlink): Remove checks of
639 immutable/append-only checks, since this is handled by
640 check_immutable. For non-fast symlinks, read in the
641 data block and check the length to make sure it
642 matches with the inode size.
643 (check_immutable): Generalize to also check for the
644 EXT2_INDEX_FL flag.
645 (check_blocks): For non-regular files, signal a bad inode
646 size if i_size_high is non-zero.
647
648 * pass2.c: Only count large files if they are regular files
649 (not just if they aren't directories).
650
651 * problem.c, problem.h: Change comment for PR_2_SYMLINK_SIZE
652 to indicate that it can be triggered by any symlink,
653 not fast symlink. Change text for PR_1_SET_IMMUTABLE
654 to indicate that it the EXT2_INDEX_FL was set.
655
Theodore Ts'o31e29a12002-05-17 10:53:07 -04006562002-05-17 Theodore Ts'o <tytso@mit.edu>
657
658 * pass1.c (e2fsck_pass1): When calculating max_sizes, omit capping
659 this value by the calculated value of max_sect_sizes.
660 The inode may be a sparse inode, and the limit of
661 max_sect_sizes assumed a non-sparse inode and a limit
662 based on a 32-bit i_blocks field measured in 512 sectors.
663
664 * super.c (check_super_block): Fix check for s_log_block_size so
665 that takes into account fact that there is an offset of
666 EXT2_MIN_BLOCK_LOG_SIZE.
667
668 * pass1.c: Allocate max_sizes array to be big enough to support
669 the larger block sizes.
670
6712002-05-16 Andreas Dilger <adilger@clusterfs.com>
672
673 * unix.c (main), util.c (get_backup_sb): Use EXT2_MAX_BLOCK_SIZE
674 instead of using a hardcoded value of 4096.
675
676 * super.c (check_super_block): Change checks for s_log_block_size
677 s_log_frag_size so they support the larger block sizes.
678
679 * pass1.c (e2fsck_pass1): Calculate max_sizes array for block
680 sizes up to EXT2_MAX_BLOCK_SIZE (to support block sizes
681 greater than 4k).
682
Theodore Ts'oa8e77242002-03-08 03:12:14 -05006832002-03-08 Theodore Tso <tytso@mit.edu>
684
685 * Release of E2fsprogs 1.27
686
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05006872002-03-07 Theodore Tso <tytso@mit.edu>
688
689 * journal.c, pass5.c, revoke.c: Fix gcc -Wall complaints
690
6912002-03-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'of2d5c932002-03-07 03:13:07 -0500692
693 * unix.c (main): Don't close the filesystem before calling
694 fatal_error(); this just causes a needless warning about a
695 bad I/O manager magic number.
696
697 * journal.c (e2fsck_check_ext3_journal): Offer to clear the inode
698 in case the journal is too small, or the inode number in
699 the superblock doesn't appear to be random.
700
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05007012002-03-06 Theodore Tso <tytso@mit.edu>
Theodore Ts'of1226322002-03-07 02:47:07 -0500702
703 * problem.h, problem.c: PR_5_BLOCK_RANGE_UNUSED,
704 PR_5_BLOCK_RANGE_USED, PR_5_INODE_RANGE_UNUSED,
705 PR_5_INODE_RANGE_USED: Add new problem codes.
706
707 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Collapse
708 reporting of adjacent blocks and inodes into a range.
709
Theodore Ts'o14308a52002-03-05 03:26:52 -05007102002-03-04 Philipp Thomas <pthomas@suse.de>
711
712 * unix.c (main): Newer libintl needs LC_CTYPE to be set in
713 addition to LC_MESSAGES.
714
Theodore Ts'o57173d02002-02-26 14:59:39 -05007152002-02-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'ob9f40922002-02-24 03:08:57 -0500716
717 * Makefile.in (install): Install hard links for man pages for
718 fsck.ext2 and fsck.ext3. Remove any compressed man
719 pages before installing the man pages.
720
Theodore Ts'o57173d02002-02-26 14:59:39 -05007212002-02-22 Theodore Tso <tytso@mit.edu>
Theodore Ts'od1a21822002-02-22 00:17:59 -0500722
723 * journal.c: Improve code maintainability and reduce code size by
724 moving common code paths in e2fsck_journal_init_dev() and
725 e2fsck_journal_init_inode() into e2fsck_get_journal().
726 Also fixed a memory leak in recover_ext3_journal().
727
728 * super.c (release_orphan_inodes): Fix memory leak.
729
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05007302002-02-03 Theodore Tso <tytso@thunk.org>
731
732 * Release of E2fsprogs 1.26
733
7342001-12-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o3ed57c22001-12-24 15:01:59 -0500735
736 * unix.c (PRS): Don't allow the -c and -l/-L options to be
737 specified at the same time.
738
739 * e2fsck.h (E2F_OPT_WRITECHECK), unix.c (PRS),
740 badblocks.c (read_bad_blocks_file): If two -c options are
741 specified, then perform a non-destructive read/write scan
742 of the disk.
743
744 * e2fsck.8.in: Document the double -c option; also encourage users
745 to use -c instead of the -l/-L options since it's too hard
746 for users to get things like the blocksize parameter correct.
747
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05007482001-12-23 Theodore Tso <tytso@mit.edu>
Theodore Ts'o19007e52001-12-23 19:33:51 -0500749
Theodore Ts'of1a17612001-12-23 22:27:52 -0500750 * util.c (get_backup_sb): This function now searches for the
751 backup superblock by iterating over possible blocksizes
752 instead of defaulting a guess of 8193 if the superblock
753 isn't available.
754
755 * message.c (expand_percent_expression), unix.c (main): Pass in
756 new parameters to get_backup_sb. Also, in unix.c, use the
757 blocksize paramter in the e2fsck context structure instead
758 of using a static variable, since get_backup_sb wants to
759 be able to set the blocksize paramter.
760
761 * e2fsck.h: Update function prototype for get_backup_sb; also add
762 the blocksize parameter to the e2fsck context structure.
763
Theodore Ts'o19007e52001-12-23 19:33:51 -0500764 * Makefile.in, jfs_user.h: Move linux/jbd.h to
765 ext2fs/kernel-jbd.h, to avoid using the system header
766 file version of hbd.h when using diet glibc (since it
767 forcibly adds /usr/include to the beginning of the
768 include search path.)
769
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05007702001-12-21 Theodore Tso <tytso@mit.edu>
Theodore Ts'od37066a2001-12-21 23:28:54 -0500771
Theodore Ts'o6a50c5e2001-12-21 23:29:35 -0500772 * problem.c (fix_problem): Use ctx->filesystem_name if the
773 ctx->device_name is NULL.
774
Theodore Ts'od37066a2001-12-21 23:28:54 -0500775 * journal.c (e2fsck_check_ext3_journal): Give the opportunity to
776 run the journal even if recovery flag is cleared. If
777 we're using a backup superblock, run the journal by
778 default.
779
780 * e2fsck.h (E2F_OPT_FORCE), unix.c (PRS, check_if_skip): Use a
781 bitfield in the e2fsck context flags word to indicate
782 whether or not a check should be forced. This allows the
783 journal code to set the option if necessary to force a
784 filesystem check.
785
786 * problem.h, problem.c: Remove PR_0_JOURNAL_RESET_JOURNAL, and add
787 PR_0_JOURNAL_RUN and PR_0_JOURNAL_RUN_DEFAULT. Update
788 problem decription texts.
789
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05007902001-12-16 Theodore Tso <tytso@mit.edu>
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500791
Theodore Ts'o4ea7bd02001-12-16 23:23:37 -0500792 * e2fsck.h (ext2fs_get_refcount_size), unix.c (check_mount, PRS),
793 pass1.c (adjust_extattr_refcount),
794 ea_refcount.c (ea_refcount_create): Fix gcc -Wall nits.
795
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500796 * recovery.c, revoke.c: Update to versions from 2.4.17-pre8.
797
798 * journal.c, jfs_user.h: Update support code for new version of
799 recover.c and revoke.c. Fix support for filesystems with
800 external journals.
801
Gabriel Paubertb3b3d462001-11-30 13:45:28 +01008022001-11-30 Gabriel Paubert <paubert@iram.es>
803
804 * journal.c (e2fsck_journal_load): Fix an endianness bug.
805
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008062001-11-26 Theodore Tso <tytso@mit.edu>
Theodore Ts'o24bfb442001-11-26 15:51:14 -0500807
808 * super.c (check_super_block): Make sure that if the inode table
809 or allocation bitmap is zero, that it is marked as
810 invalid, so that in pass #1, a new bitmap/inode table gets
811 properly allocated. (Addresses Debian Bug #116975)
812
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008132001-11-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o1e9a7e02001-11-24 16:40:57 -0500814
815 * e2fsck.8.in: Fix minor typo in man page and clarify device
816 specification.
817
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008182001-10-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'o62e3e7f2001-10-07 02:13:30 -0400819
820 * journal.c (clear_v2_journal_fields, e2fsck_journal_load): If the
821 V2 fields are set on a V1 journal superblock, or an
822 internal V2 journal has s_nr_users is non-zero, clear the
823 entire journal superblock beyond the V1 superblock. This
824 fixes botched V1->V2 updates.
825
826 * problem.c, problem.h (PR_0_CLEAR_V2_JOURNAL): Add new problem code.
827
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008282001-09-20 Theodore Tso <tytso@mit.edu>
Theodore Ts'o773fd8a2001-10-06 21:26:27 -0400829
830 * e2fsck.h, journal.c (e2fsck_move_ext3_journal): Add new function
831 which will automatically relocate the ext3 journal from a
832 visible file to an invisible journal file if the
833 filesystem has been opened read/write.
834
835 * super.c (check_super_block): Add call to e2fsck_move_ext3_journal
836
837 * problem.c, problem.h (PR_0_MOVE_JOURNAL, PR_0_ERR_MOVE_JOURNAL):
838 Add new problem codes.
839
Theodore Ts'ofbf91112001-09-20 10:47:47 -04008402001-09-20 Theodore Tso <tytso@thunk.org>
841
842 * Release of E2fsprogs 1.25
843
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008442001-09-19 Theodore Tso <tytso@mit.edu>
Theodore Ts'oae6cdcf2001-09-19 15:17:25 -0400845
846 * unix.c (main): If a superblock is specified explicitly by the
847 user, don't try to automatically fall back to an
848 alternate superblock.
849
Theodore Ts'ofb707752001-09-04 15:00:37 -04008502001-09-02 Theodore Tso <tytso@thunk.org>
851
852 * Release of E2fsprogs 1.24a
853
Theodore Ts'o109624a2001-08-31 00:59:55 -04008542001-08-30 Theodore Tso <tytso@thunk.org>
855
856 * Release of E2fsprogs 1.24
857
Theodore Ts'ob1f204f2001-08-30 16:42:09 -04008582001-08-30 Theodore Tso <tytso@valinux.com>
859
860 * pass1.c (e2fsck_pass1): For EXT2_RESIZE_INO, allow its i_mode to
861 either be zero or a regular file (for compatibility with
862 Andreas's on-line resizing programs).
863
Theodore Ts'o53abed02001-08-27 12:18:16 -04008642001-08-27 Theodore Tso <tytso@valinux.com>
865
Theodore Ts'o0f8973f2001-08-27 12:44:23 -0400866 * unix.c (main): Remove EXT2FS_VERSION from the version display,
867 since it only confuses people.
868
Theodore Ts'o53abed02001-08-27 12:18:16 -0400869 * pass1.c (strnlen): Provide strnlen if libc doesn't.
870
Theodore Ts'o943ed872001-08-27 12:29:22 -04008712001-08-15 Theodore Tso <tytso@valinux.com>
872
873 * Release of E2fsprogs 1.23
874
Theodore Ts'o85645a6f2001-08-13 06:11:39 -04008752001-08-13 Theodore Tso <tytso@valinux.com>
876
Theodore Ts'oeb4ab512001-08-13 10:58:41 -0400877 * super.c (release_orphan_inodes): If the filesystem contains
878 errors, don't run the orphan * list, since the orphan list
879 can't be trusted.
880
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400881 * pass1.c (check_size): Fix logic in check_size; the previous code
882 only offered to clear the inode size fields if both size
883 and i_size_high were zero.
Theodore Ts'oa40ecbb2001-08-13 06:15:36 -0400884 (e2fsck_pass1_check_device_inode): If i_blocks is
885 non-zero, then assume that the device/socket/fifo inode
886 is bogus.
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400887
Theodore Ts'o2b94c652001-08-09 04:08:52 -04008882001-08-09 Theodore Tso <tytso@valinux.com>
889
Theodore Ts'oa4742692001-08-09 04:14:04 -0400890 * pass1.c, pass2.c, problem.c, problem.h: Fix bug introduced by
891 Andreas's symlink code; check_blocks() was unconditionally
892 testing inode_bad_map without checking to see if it
893 existed first. Fixed problem a different way; we now no
894 longer check inode_bad_map at all, since the file might
895 not get deleted in pass 2 anyway. We move the large file
896 feature reconciliation code to to e2fsck_pass2(), and in
897 deallocate_inode() in pass2.c, we decrement the large
898 files counter if we're about to delete a large file.
899
Theodore Ts'o2b94c652001-08-09 04:08:52 -0400900 * unix.c (show_stats): Print the number of large files in verbose
901 mode.
902
Theodore Ts'oc0a083f2001-08-07 10:17:41 -04009032001-08-07 Theodore Tso <tytso@valinux.com>
904
905 * journal.c (recover_ext3_journal): If s_errno is set in the
906 journal superblock, set the EXT2_ERROR_FS flag in the
907 filesystem superblock after the journal is run.
908
Theodore Ts'obd512b62001-08-04 21:33:03 -04009092001-08-04 Andreas Dilger <root@lynx.adilger.int>
910
911 * message.c: Change comments for %D and %d expansion in e2fsck
912 problem codes. It was not consistent which was for dirent
913 expansion, and which was for directory number expansion.
914
915 * problem.c (PR_2_FINAL_RECLEN, PR_2_BAD_FILETYPE): Fix problem
916 codes which got caught by the confusion between %D and %d.
917
Theodore Ts'od007cb42001-08-04 20:39:39 -04009182001-08-04 Theodore Tso <tytso@valinux.com>
919
920 * problem.c (PR_2_SYMLINK_SIZE): Change description to make it
921 more clear (and remove %s expansion). Also add missing
922 periods to the end of a number of problem descriptions.
923
924 * pass2.c (e2fsck_process_bad_inode): Remove unneeded problem
925 context string set now that the problem description for
926 PR_2_SYMLINK_SIZE has been changed.
927
928 * pass1.c (e2fsck_pass1_check_symlink): Consolidate some checks,
929 and check the validity of the symlink block here (so that
930 we detect this case here instead of later). Also use
931 sizeof(inode->i_block) instead EXT2_LINK_DIR.
932
Theodore Ts'o83e6ac82001-07-30 16:29:52 -04009332001-07-30 Theodore Tso <tytso@valinux.com>
934
935 * unix.c (check_mount): Remove the code which tested for the root
936 filesystem being mounted read-only, and depend on the
937 results flags from ext2fs_check_if_mounted.
938
Theodore Ts'o1e165262001-07-29 11:48:10 -04009392001-07-29 Theodore Tso <tytso@valinux.com>
940
Theodore Ts'o6d222f32001-07-29 12:06:58 -0400941 * unix.c (check_if_skip): Free the e2fsck context structure on a
942 normal clean filesystem exit, to make it easier to find
943 real memory leaks.
944 (PRS): Only update the path to include /sbin at the
945 beginning if the -c option is given, again to make it
946 easier to find memory leaks.
Theodore Ts'o0628ae32001-07-29 12:26:46 -0400947 (main): Move the final print_resource_track call after the
948 filesystem and the context are freed.
Theodore Ts'o6d222f32001-07-29 12:06:58 -0400949
950 * journal.c (e2fsck_journal_init_dev): Avoid memory leak if we
951 need to search for the journal device.
952 (e2fsck_journal_release): Free the journal IO channel when
953 we release the journal handle, to avoid a memory leak.
954
Theodore Ts'o1e165262001-07-29 11:48:10 -0400955 * e2fsck.c (e2fsck_reset_context): Fix bug; only close the io
956 channel if it is *different* from the filesystem io
957 channel.
958
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -04009592001-07-27 Theodore Tso <tytso@valinux.com>
960
Theodore Ts'oa092c562001-07-27 22:40:09 -0400961 * problem.c (PR_1_SET_IMMUTABLE): Clarify problem message.
962
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -0400963 * pass1.c (e2fsck_pass1): Check for symlinks that have the
964 immutable flag set (and offer to clear them).
965
Theodore Ts'o24ceb242001-07-26 09:02:56 -04009662001-07-26 Theodore Tso <tytso@valinux.com>
967
968 * pass1.c (e2fsck_pass1): Free ctx->block_ea_map at the end of
969 pass 1.
970
Theodore Ts'o14fe1c32001-07-25 19:48:24 -04009712001-07-25 Theodore Tso <tytso@valinux.com>
972
973 * pass1.c (check_ext_attr): Skip zero-length EA entries.
974
975 * problem.c: PR_1_EA_ALLOC_COLLISION shouldn't abort, but should
976 prompt to clear the EA block.
977
Theodore Ts'oadee8d72001-07-23 00:17:49 -04009782001-07-22 Theodore Tso <tytso@valinux.com>
979
980 * journal.c (ll_rw_block): Use ctx->journal_io instead of the
981 filesystem's io_channel.
982 (e2fsck_journal_init_dev): New function which supports
983 initialization of the external journal.
984 (e2fsck_get_journal): Remove code which flagged an error
985 if the superblock reported the use of an external journal.
986 (ext3_journal_via_mount): Remove unsued, #ifdefed out function.
987
988 * problem.c, problem.h: Removed error codes no longer used
989 (PR_0_JOURNAL_UNSUPP_DEV, PR_0_JOURNAL_BAD_DEV,
990 PR_0_JOURNAL_UNSUPP_UUID) and replace them with new error
991 codes related with failures in loading the external
992 journal (PR_0_JOURNAL_UNSUPP_MULTIFS,
993 PR_0_CANT_FIND_JOURNAL, PR_0_EXT_JOURNAL_BAD_SUPER).
994 Also changed the text assocated with PR_0_JOURNAL_BAD_UUID
995 to reflect the case where the external journal isn't
996 correct for this filesystem.
997
998 * unix.c (PRS), e2fsck.8.in: Add new option -j which allows
999 the user to specify the pathname to find the external journal.
1000
1001 * e2fsck.c (e2fsck_reset_context): Close journal_io if it isn't
1002 the same as the filesystem io_channel.
1003
1004 * e2fsck.h: Add new fields (journal_io and journal_name) in the
1005 context structure to support external journals.
1006
Theodore Ts'od3124012001-07-20 14:13:49 -040010072001-07-20 Theodore Tso <tytso@valinux.com>
1008
1009 * unix.c (main): Add an explicit warning when the filesystem is
1010 left not completely fixed when e2fsck exits. (Addresses
1011 Debian bug #104502.)
1012
Theodore Ts'o55fd07e2001-07-19 16:31:25 -040010132001-07-19 Theodore Tso <tytso@valinux.com>
1014
1015 * pass1.c (check_ext_attr): The entire EA block is now checked to
1016 make sure that parts of the EA block aren't being used for
1017 multiple purposes.
1018
1019 * Makefile.in e2fsck.h, region.c: New file which is used to detect
1020 collisions in extended attribute block.
1021
1022 * problem.h, problem.c (PR_1_EA_MULTI_BLOCK, PR_1_EA_ALLOC_REGION,
1023 PR_1_EA_ALLOC_COLLISION, PR_1_EA_BAD_NAME,
1024 PR_1_EA_BAD_VALUE): Add new problem codes.
1025
Theodore Ts'o3c6b8972001-07-10 14:27:58 -040010262001-07-10 Theodore Tso <tytso@valinux.com>
1027
1028 * journal.c (e2fsck_run_ext3_journal): Only call ext3_flush() if
1029 the superblock is dirty.
1030
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -040010312001-07-07 Theodore Tso <tytso@valinux.com>
1032
Theodore Ts'o7b63fff2001-07-07 23:01:31 -04001033 * pass1b.c (pass1b, process_pass1b_block): Change the num_bad
1034 field calculation so that it only counts EA block entries
1035 as a single multiply claimed block (since once we clone
1036 the EA blocks for one inode, we fix the problem for all of
1037 the other inodes). Also, I moved the num_bad calculation
1038 from process_pass1b_block to the end of pass1b. This
1039 fixes a *significant* performance bug in pass1b which hit
1040 people who had to had a lot of multiply claimed blocks.
1041 (Can you say O(n**3) boys and girls? I knew you could...
1042 Fortunately, this case didn't happen that much in actual
1043 practice.)
1044
1045 * pass1.c (e2fsck_pass1): Defer inodes which have an extended
1046 attribute block for later processing to avoid extra seeks
1047 across the disk.
1048 (process_inode_cmp): If there is no indirect block, sort
1049 by the extended attribute (i_file_acl) block.
1050
Theodore Ts'o7abb2bd2001-07-07 13:20:34 -04001051 * pass1b.c (clone_file_block): Fix bugs when cloning extended
1052 attribute blocks. Moved free of block_buf to after the
1053 code which clones the extattr block, and fixed logic for
1054 changing pointers to the extended attribute field in the
1055 inodes which were affected.
1056 (decrement_badcount): New function which is used whenever
1057 we need to decrement the number of files which claim a
1058 particular bad block. Fixed bug where delete_file wasn't
1059 checking check_if_fs_block() before clearing the entry in
1060 block_dup_map. This could cause a block which was claimed
1061 by multiple files as well as the filesystem metadata to
1062 not be completely fixed.
1063
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -04001064 * pass1.c (adjust_extattr_refcount): Add new function which
1065 adjusts the reference counts of extended attribute blocks
1066 if needed, both up and down.
1067 (e2fsck_pass1): If the refcount or refcount_extra
1068 structure are present, call adjust_extattr_refcount(),
1069 and free it afterwards.
1070
1071 * problem.h, problem.c (PR_1_EXTATTR_READ_ABORT,
1072 PR_1_EXTATTR_REFCOUNT, PR_1_EXTATTR_WRITE): Add new
1073 problem codes.
1074
Theodore Ts'o342d8472001-07-02 11:54:09 -040010752001-07-02 Theodore Tso <tytso@valinux.com>
1076
1077 * pass1.c (e2fsck_pass1, check_ext_attr, check_blocks): Add
1078 initial support for scanning extended attribute blocks.
1079
1080 * e2fsck.c (e2fsck_reset_context): free extended attribute
1081 refcount structure.
1082
1083 * e2fsck.h: Add new fields for accounting for the extended
1084 attribute blocks.
1085
1086 * Makefile.in, ea_refcount.c, e2fsck.h: Add new file which
1087 implements a reference count abstraction.
1088
1089 * problem.c, problem.h: Add new problem codes PR_1_ALLOCATE_REFCOUNT,
1090 PR_1_READ_EA_BLOCK, PR_1_BAD_EA_BLOCK, PR_2_FILE_ACL_BAD
1091
1092 * message.c: Add "@a" as an abbreviation for "extended attribute"
1093
1094 * pass1b.c (clone_file): Add code which handles cloning an
1095 extended attribute block.
1096
1097 * pass1b.c (delete_file):
1098 * pass2.c (deallocate_inode): If the inode contains an extended
1099 attribute block in the file_acl field, clear it and
1100 deallocate the block.
1101
11022001-06-28 Theodore Tso <tytso@valinux.com>
1103
1104 * pass2.c (e2fsck_process_bad_inode): Deal with inodes which are
1105 marked bad because of an invalid file_acl (either because
1106 EXT2_FEATURE_COMPAT_EXT_ATTR is not set, or because the
1107 block number in file_acl is bad.
1108
Theodore Ts'o636a9542001-06-29 17:57:26 -040011092001-06-29 Theodore Tso <tytso@valinux.com>
1110
1111 * unix.c (show_stats): Use long long to calculate the percentage
1112 of the number of blocks in use in the filesystem.
1113
Theodore Ts'o67960132001-06-23 00:16:37 -040011142001-06-23 Theodore Tso <tytso@valinux.com>
1115
1116 * Release of E2fsprogs 1.22
1117
Theodore Ts'od90f3492001-06-22 21:01:17 -040011182001-06-22 Theodore Tso <tytso@valinux.com>
1119
1120 * flushb.c: Use platform independent method of defining the
1121 BLKFLSBUF ioctl. Also include sys/mount.h since on newer
1122 platforms BLKFLSBUF is defined there.
1123
Theodore Ts'o42475e22001-06-22 20:35:38 -040011242001-06-19 Theodore Tso <tytso@valinux.com>
1125
1126 * super.c (release_inode_blocks): Don't try to release the blocks
1127 if the orphaned inode is a device file, symlink, or some
1128 other kind of special file that doesn't have a block list.
1129
Theodore Ts'of4f75ba2001-06-16 01:14:28 +000011302001-06-15 Theodore Tso <tytso@valinux.com>
1131
1132 * Release of E2fsprogs 1.21
1133
Theodore Ts'ob6a08072001-06-14 01:16:17 +000011342001-06-13 Theodore Tso <tytso@valinux.com>
1135
1136 * unix.c (check_if_skip): Adapted patch from Andreas Dilger which
1137 prints the number of mounts or days elapsed since the last
1138 check when e2fsck is forced to check an otherwise clean
1139 filesystem.
1140
Theodore Ts'ocbbf0312001-06-13 00:12:04 +000011412001-06-12 Theodore Tso <tytso@valinux.com>
1142
1143 * badblocks.c: Stop using the compatibility badblocks function,
1144 and use the ext2fs_badblocks_* functions instead.
1145
Theodore Ts'o5df55d72001-06-11 07:00:04 +000011462001-06-11 Theodore Tso <tytso@valinux.com>
1147
Theodore Ts'o3034f622001-06-11 15:17:45 +00001148 * unix.c (PRS): Fix bug introduced in 1.20 which broke the -F
1149 flag.
1150
Theodore Ts'o5df55d72001-06-11 07:00:04 +00001151 * Makefile.in: Add message.c and swapfs.c to the list of source
1152 files to build the make depend.
1153
1154 * swapfs.c, unix.c: Only support the -s and -S options to e2fsck
1155 if ENABLE_SWAPFS is defined.
1156
Theodore Ts'o725c4742001-06-08 11:55:44 +000011572001-06-08 Theodore Tso <tytso@valinux.com>
1158
1159 * recover.c, revoke.c: Synchronize with ext3 0.7a
1160
Theodore Ts'ofdbdea02001-06-02 04:26:26 +000011612001-06-02 Theodore Tso <tytso@valinux.com>
1162
Theodore Ts'oa479fe62001-06-02 04:50:14 +00001163 * recovery.c (scan_revoke_records): Fix bug in recovery code;
1164 missing byte order conversion.
1165
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00001166 * pass1.c (mark_inode_bad): Replace alloc_bad_map with a function
1167 which sets the bit in the bad inode bitmap.
1168 (e2fsck_pass1): Check for fast symlinks with an invalid
1169 size, and set the bad inode map in that case.
Theodore Ts'o62b6d472001-06-02 04:37:02 +00001170 (check_size): Check i_size_high for special files and
1171 prompt to clear it along with i_size if non-zero.
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00001172
1173 * pass2.c (e2fsck_process_bad_inode): Check for fast symlinks with
1174 an invalid size and prompt the user if the inode should be
1175 cleared.
1176
1177 * problem.h, problem.c (PR_2_SYMLINK_SIZE): Added new problem code.
1178
Theodore Ts'o71d521c2001-06-01 19:29:36 +000011792001-06-01 Theodore Tso <tytso@valinux.com>
1180
Theodore Ts'o2f686ac2001-06-02 00:38:40 +00001181 * problem.c, problem.h: Change PR_0_JOURNAL_UNSUPP_INCOMPAT and
1182 PR_0_JOURNAL_UNSUPP_ROCOMPAT so they aren't fatal errors,
1183 but prompt to see if the user should abort. Removed the
1184 PR_0_JOURNAL_RESET_COMPAT problem code.
1185
1186 * journal.c (e2fsck_journal_load): If there are incompatible
1187 journal flags, just return an error code.
1188 (e2fsck_check_ext3_journal): If e2fsck_journal_load
1189 returns an error code indicating that there are
1190 incompatible journal flag, check to see if we should
1191 abort, and then offer to clear the journal.
Theodore Ts'oe3338452001-06-14 07:11:33 +00001192 (Addresses Debian bug #98527.)
Theodore Ts'o2f686ac2001-06-02 00:38:40 +00001193
Theodore Ts'o797f5ef2001-06-01 23:49:46 +00001194 * Makefile.in: Move include/asm/types.h.in to
Theodore Ts'o36a23e12001-06-02 00:54:10 +00001195 lib/ext2fs/ext2_types.h.in.
Theodore Ts'o797f5ef2001-06-01 23:49:46 +00001196
11972001-06-01 Theodore Tso <tytso@valinux.com>
1198
Theodore Ts'o71d521c2001-06-01 19:29:36 +00001199 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
1200 pass1_check_directory): Add a safety check to make sure
1201 ctx->stashed_inode is non-zero.
1202
1203 * pass1b.c (pass1b): Use e2fsck_use_inode_shortcuts() to disable
1204 the inode shortcut processing, instead of manually
1205 clearing only half of the function pointers that needed to
1206 be NULL'ed out. This caused nasty bugs if the last inode
1207 in the filesystem needed dup block processing.
1208
1209 * pass1b.c (clone_file_block): When cloning a directory's metadata
1210 block, don't try to update the directory block list
1211 database, since indirect blocks aren't stored in the
1212 database and the resulting error will abort the file clone
1213 operation.
1214
Theodore Ts'o561cd4d2001-05-25 16:40:56 +000012152001-05-25 Theodore Tso <tytso@valinux.com>
1216
Theodore Ts'obb185862001-05-25 17:35:00 +00001217 * Release of E2fsprogs 1.20
1218
12192001-05-25 Theodore Tso <tytso@valinux.com>
1220
Theodore Ts'o561cd4d2001-05-25 16:40:56 +00001221 * journal.c (e2fsck_journal_reset_super): Remove extraneous line
1222
Theodore Ts'oc7f23362001-05-23 22:19:47 +000012232001-05-23 Theodore Tso <tytso@valinux.com>
1224
1225 * journal.c (e2fsck_journal_reset_super): Fix bug; the reset
1226 journal wasn't getting written out to disk since the dirty
1227 bit wasn't being set on the buffer.
1228 (e2fsck_journal_load): Don't print an error message if the
1229 journal version number is wrong; just return a error code
1230 reflecting this fact. If the block type in the journal
1231 superblcok is obviously not a version number, report the
1232 journal is corrupted.
1233 (e2fsck_check_ext3_journal): On an unsupported journal
1234 version, prompt to abort by default, but then offer a
1235 chance to clear the journal as corrupt.
1236
1237 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_VERSION): Added new
1238 problem code.
1239
Theodore Ts'o424cd2b2001-05-14 04:06:56 +000012402001-05-14 Theodore Tso <tytso@valinux.com>
1241
Theodore Ts'o21afac02001-05-14 12:47:41 +00001242 * pass1.c: Treat inodes with a low dtime (that were from a
1243 corrupted orphan list) specially.
1244
1245 * problem.c, problem.h: Add new problem codes PR_1_LOW_DTIME and
1246 PR_1_ORPHAN_LIST_REFUGEES, and a new latch group,
1247 PR_LATCH_LOW_DTIME.
1248
1249 * problemP.h: Expand the size of the problem flag to be an int
1250 instead of a short. Expand space in the flag word which
1251 is reserved for problem latch flags from 3 bits to 8 bits.
1252
Theodore Ts'o54c637d2001-05-14 11:45:38 +00001253 * e2fsck.h, scantest.c: Change location of ext2_fs.h to be
1254 ext2fs/ext2_fs.h
1255
Theodore Ts'o424cd2b2001-05-14 04:06:56 +00001256 * super.c (check_super_block): Be more strict on checking
1257 s_r_blocks_count superblock field.
1258
12592001-05-13 Theodore Tso <tytso@valinux.com>
1260
1261 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_ROCOMPAT,
1262 PR_0_JOURNAL_UNSUPP_INCOMPAT, PR_0_JOURNAL_RESET_COMPAT):
1263 New problem codes.
1264
1265 * journal.c (e2fsck_journal_load): Use a problem code to
1266 report unsupported feature flags. There is code to
1267 clear unsupported flags, but since this is dangerous,
1268 it's not allowed in the problem code table.
1269
12702001-05-11 Andreas Dilger <adilger@turbolinux.com>
1271
1272 * journal.c (e2fsck_journal_reset_super): initialize the journal
1273 sequence number to a random value to avoid recovering
1274 bad transactions from a corrupt journal.
1275
Theodore Ts'o328a5ce2001-05-13 20:21:25 +000012762001-05-13 Theodore Tso <tytso@valinux.com>
1277
1278 * journal.c: Code cleanup; initialize journal_enable_debug using
1279 an initializer.
1280
Theodore Ts'ofc9a69c2001-05-12 13:43:46 +000012812001-05-12 Theodore Tso <tytso@valinux.com>
1282
1283 * unix.c (PRS): Skip validation of -C's file descriptor if it is
1284 zero, since that is special case.
1285
Theodore Ts'of0b8c872001-05-09 06:03:58 +000012862001-05-09 Theodore Tso <tytso@valinux.com>
1287
1288 * super.c (release_orphan_inodes): Add gettext quoting around
1289 "Truncating" and "Clearing" for i18n.
1290
Theodore Ts'ob9852cd2001-05-05 05:14:59 +000012912001-05-05 Theodore Tso <tytso@valinux.com>
1292
Theodore Ts'oe39ac922001-05-05 06:47:24 +00001293 * util.c (fatal_error): Use the correct magic number when checking
1294 the magic number for the io_channel data structure. Also
1295 remove extraneous call to io_channel_flush() that was left
1296 over from an editing session.
1297
Theodore Ts'ob9852cd2001-05-05 05:14:59 +00001298 * pass2.c (check_dir_block): Ignore EXT2_ET_DIR_CORRUPTED errors
1299 from ext2fs_read_dir_block().
1300
Theodore Ts'o5f629b72001-05-01 20:01:08 +000013012001-05-01 Theodore Tso <tytso@valinux.com>
1302
Theodore Ts'oae8160e2001-05-01 21:13:37 +00001303 * unix.c (PRS): Validate the completion information file
1304 descriptor so that the completion bar won't get
1305 accidentally written onto the disk.
1306
Theodore Ts'o5f629b72001-05-01 20:01:08 +00001307 * e2fsck.8.in: Add explanation that you can use mke2fs -n -b
1308 blocksize to printout alternate superblock locations.
1309
Theodore Ts'obc57f152001-04-26 04:11:46 +000013102001-04-26 Theodore Tso <tytso@valinux.com>
1311
1312 * unix.c (check_if_skip): If the max_mount_count is zero, treat it
1313 as having no count set.
1314
Theodore Ts'oef059872001-04-17 00:40:02 +000013152001-04-16 Theodore Tso <tytso@valinux.com>
1316
1317 * super.c (check_super_block): Fix bad calculation of
1318 inodes_per_block, and tighten min/max checks to be a bit
1319 more paranoid. Thanks to Andreas Dilger for pointing out
1320 this bug.
1321
Theodore Ts'o1f735032001-03-29 19:00:50 +000013222001-03-29 Theodore Tso <tytso@valinux.com>
1323
Theodore Ts'o15986f72001-03-29 19:22:16 +00001324 * journal.c (mark_buffer_uptodate): Add emulation of kernel
1325 function mark_buffer_uptodate.
1326
Theodore Ts'o1f735032001-03-29 19:00:50 +00001327 * recovery.c, revoke.c: Synchronize with 0.6b ext3 files.
1328
Theodore Ts'od0515212001-02-13 04:32:53 +000013292001-02-12 Theodore Tso <tytso@valinux.com>
1330
1331 * journal.c (e2fsck_run_ext3_journal): Force a flush of the
1332 filesystem and io_channel before replaying the journal.
1333
Theodore Ts'oa5c33f22001-01-18 02:34:03 +000013342001-01-17 Theodore Ts'o <tytso@valinux.com>
1335
1336 * pass1.c (check_blocks): Fix large file checking code so that
1337 files > 2GB are considered large files, and restrict
1338 directories from being > 2GB.
1339
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +000013402001-01-12 Theodore Ts'o <tytso@valinux.com>
1341
Theodore Ts'oa9ca2012001-01-12 21:53:25 +00001342 * journal.c (e2fsck_journal_fix_unsupported_super): Remove unused
1343 function. Add FIXME notes to e2fsck_get_journal(), from
1344 Andreas Dilger.
1345
1346 * pass1.c (e2fsck_pass1): Cap the maximum legal size of a file by
1347 the limit caused by the fact that i_blocks is in 512 byte
1348 units, and that the Linux buffer cache also fundamentally
1349 assumes 512 byte sectors.
1350 Make sure that the journal inode is a regular file, and
1351 when clearing an unused journal inode, make sure the
1352 icount db is updated.
1353
1354 * problem.c, problem.h (PR_1_JOURNAL_BAD_MODE): Add new problem code.
1355
Theodore Ts'o37b6b292001-01-12 21:16:13 +00001356 * problem.c: For PR_1_RESERVED_BAD_MODE, print a description of
1357 the reserved inode. In PR_0_JOURNAL_HAS_JOURNAL, prompt
1358 to clear the journal, rather than deleting it (which is
1359 more accurate). (From Andreas Dilger.)
1360
Theodore Ts'o6a6d3d42001-01-12 21:11:24 +00001361 * journal.c: Make sure all functions which return an error code
1362 use the errcode_t return type, and not "int"
1363 (e2fsck_journal_release): Add new parameter, "drop",
1364 which is used when we just want to deallocate the journal
1365 without trying to write out any changes.
1366 (mark_buffer_clean): New function
1367 (e2fsck_check_ext3_journal): If we fail loading the
1368 journal, make sure we free all memory associated with it.
1369 (recover_ext3_journal): If we fail to load the journal or
1370 initialize the revoke data structures, make sure we free all
1371 memory associated with the journal.
1372
Theodore Ts'o721edd02001-01-12 21:05:57 +00001373 * message.c (special_inode_name): Add more special inode names
1374 (From Andreas Dilger)
1375
Theodore Ts'o58a75172001-01-12 20:59:19 +00001376 * util.c (fatal_error): Check to make sure the io_manager data
1377 structure is sane before trying to flush the io_channel.
1378 (From Andreas Dilger)
1379
Theodore Ts'o721edd02001-01-12 21:05:57 +00001380 * mtrace.h, super.c, pass2.c: Minor whitespace cleanups, from
1381 Andreas Dilger.
Theodore Ts'o4035f402001-01-12 20:25:50 +00001382
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +00001383 * journal.c (e2fsck_journal_fix_bad_inode): Set pctx->ino to the
1384 bad journal number.
1385
1386 * problem.c (PR_0_JOURNAL_BAD_INODE): Use pctx->ino instead of
1387 pctx->num when printing the bad journal inode number.
1388
Theodore Ts'o86c627e2001-01-11 15:12:14 +000013892001-01-11 <tytso@snap.thunk.org>
1390
Theodore Ts'o5ba23cb2001-01-11 19:15:02 +00001391 * pass1.c (process_block): Remove dead code which was never
1392 getting executed.
1393
1394 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
1395 ext2fs_sync_device() instead of using BLKFLSBUF.
1396
1397 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
1398
Theodore Ts'o86c627e2001-01-11 15:12:14 +00001399 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
1400 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
1401 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
1402 ino_t to ext2_ino_t.
1403
Theodore Ts'o95a5bc92001-01-11 04:58:21 +000014042001-01-09 <tytso@snap.thunk.org>
1405
1406 * problem.c: Fix another broken @F vs @f problem.
1407
Theodore Ts'o53ef44c2001-01-06 05:55:58 +000014082001-01-06 <tytso@snap.thunk.org>
1409
1410 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
1411 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
1412
1413 * jfs_user.h: Use more sophisticated inline handling to allow
1414 building with --enable-gcc-wall
1415
Theodore Ts'od3f35b62001-01-03 13:00:43 +000014162001-01-03 <tytso@snap.thunk.org>
1417
Theodore Ts'of18996c2001-01-03 16:57:24 +00001418 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
1419 own block; if the journal inode is not in use, and it
1420 contains data, offer to clear it.
1421
1422 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
1423 problem code.
1424
1425 * problem.c: Modified problem table to use a new abbreviations.
1426
Theodore Ts'od74edf42001-01-03 19:38:04 +00001427 * message.c: Add @j abbreviation for journal, and @v abbreviation
Theodore Ts'oe9044062001-01-03 15:39:37 +00001428 for device.
Theodore Ts'o1ce64532001-01-03 15:34:20 +00001429
Theodore Ts'occ7067b2001-01-03 13:24:06 +00001430 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
1431
Theodore Ts'od3f35b62001-01-03 13:00:43 +00001432 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
1433 the journal stored on a reserved inode. Also force a fsck
1434 if the journal appears to exist while !NEEDS_RECOVERY, and
1435 we forcibly reset the journal.
1436
Theodore Ts'of5ae75e2001-01-01 14:52:52 +000014372001-01-01 <tytso@snap.thunk.org>
1438
Theodore Ts'o5dd8f962001-01-01 15:51:50 +00001439 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
1440 ext2fs_sb with struct ext2_super_block.
1441
Theodore Ts'of5ae75e2001-01-01 14:52:52 +00001442 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
1443
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +000014442000-12-31 <tytso@snap.thunk.org>
1445
1446 * jfs_compat.h: Remove uneeded header file.
1447
Theodore Ts'ob2f93192000-12-30 20:33:42 +000014482000-12-30 <tytso@snap.thunk.org>
1449
Theodore Ts'oc59a7042000-12-31 01:52:03 +00001450 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
1451 conflicts with the system header file.
1452
Theodore Ts'ob2f93192000-12-30 20:33:42 +00001453 * problem.h: Fixed numbering of pass1 error messages; an extra 0
1454 had slipped into some of the numbers. (Pointed out by
1455 Andreas Dilger)
1456
1457 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
1458 unnecessary automatic variable. Add explanatory comment
1459 about the kernel emulation routines. (Suggested by
1460 Andreas Dilger)
1461
Theodore Ts'o060b5fb2000-12-13 18:07:23 +000014622000-12-13 Theodore Ts'o <tytso@valinux.com>
1463
Theodore Ts'o9b565752000-12-13 18:50:22 +00001464 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
1465 journal fields are consistent if any of the superblock
1466 fields are set. (Backs out erroneous change made by sct,
1467 pointed out by Andreas.)
1468
1469 * unix.c (main): Clarify coments (no code changes)
1470
1471 * super.c (release_orphan_inodes): Fix spelling typo in error message.
1472
Theodore Ts'o8188c9e2000-12-13 18:39:14 +00001473 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
1474 level if we need to set large files flag. Patch from
1475 Andreas Dilger.
1476
Theodore Ts'o7b59f1e2000-12-13 18:11:44 +00001477 * super.c (check_super_block): If we have any of the compatibility
1478 flags set, we need to have a revision 1 filesystem. Most
1479 kernels will not check the flags on a rev 0 filesystem
1480 and we may have corruption issues because of the
1481 incompatible changes to the filesystem. Patch from Andreas
1482 Dilger.
1483
Theodore Ts'o060b5fb2000-12-13 18:07:23 +00001484 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
1485 new problem codes.
1486
Theodore Ts'o0e8a9562000-12-09 06:41:25 +000014872000-12-09 <tytso@snap.thunk.org>
1488
Theodore Ts'obf2d4992000-12-09 14:46:20 +00001489 * flushb.c: Fix flushb so that it does something other than waste
1490 disk space when built on systems with modern header files
1491 and add a non-subtle Copyright Licensing restriction so
1492 Yann will remove it from the Debian Distribution. (Now
1493 violates the Debian Free Software Guidelines, on purpose.)
1494
Theodore Ts'of43650c2000-12-09 06:47:56 +00001495 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
1496 at the top level, set the JFS debuging level to 2.
1497
Theodore Ts'o0e8a9562000-12-09 06:41:25 +00001498 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
1499 has been moved to the include/linux directory.
1500
1501 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
1502 support the V2 superblock and revoke processing. The
1503 journal.c and revoke.c files are copies from the ext3
1504 kernel source.
1505
1506 * Makefile.in: Added revoke.c to the list of source/object files.
1507
Theodore Ts'o133a56d2000-11-17 05:40:49 +000015082000-11-16 Theodore Ts'o <tytso@valinux.com>
1509
1510 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
1511 reporting problems rather than using com_err directly.
1512
1513 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
1514
1515 * message.c (expand_percent_expression): Add safety check. If
1516 ctx->str is NULL, print "NULL" instead of dereferencing
1517 the null pointer.
1518
1519 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
1520 to ext2fs_block_iterate2, to support 64-bit filesizes and
1521 to speed things up slightly by avoiding the use of the
1522 ext2fs_block_iterate's compatibility shim layer.
1523
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +000015242000-10-30 <tytso@snap.thunk.org>
1525
1526 * util.c (get_backup_sb): Calculate backup superblock correctly
1527 when the blocksize is > 1k.
1528
Theodore Ts'o241f2242000-10-26 20:42:07 +000015292000-10-26 <tytso@snap.thunk.org>
1530
1531 * jfs.h, jfs_compat.h, journal.c: Updated to include the
1532 definition of the new journal superblock format; still
1533 only supports V1 superblocks for now. (From sct)
1534
Theodore Ts'ob09a4b02000-10-24 21:16:09 +000015352000-10-24 <tytso@snap.thunk.org>
1536
Theodore Ts'o83949022000-10-25 01:38:50 +00001537 * super.c (release_inode_block, release_inode_blocks,
1538 release_orphan_inodes): Add code to deal with truncating
1539 inodes which are still in use (but which are on the orphan
1540 list because they need truncation).
1541
1542 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
1543 PR_0_ORPHAN_CLEAR_INODE, and remove
1544 PR_0_ORPHAN_INODE_INUSE.
1545
1546 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
1547 a message when the journal is being recovered.
1548
Theodore Ts'ob09a4b02000-10-24 21:16:09 +00001549 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
1550 journal inode, if it is in use.
1551
Theodore Ts'oadfca562000-09-12 21:24:36 +000015522000-09-12 <tytso@valinux.com>
1553
1554 * extend.c:
1555 * flushb.c: Add include of nls-enable.h which is necessary so that
1556 they can compile correctly.
1557
Theodore Ts'occ96b2b2000-08-22 21:30:11 +000015582000-08-22 <tytso@valinux.com>
1559
Theodore Ts'o2575fb02000-08-22 21:50:04 +00001560 * unix.c (main): If we're doing a read-only check, skip the
1561 journal playback, but don't abort the e2fsck run.
1562
Theodore Ts'o99a2cc92000-08-22 21:41:52 +00001563 * super.c (release_orphan_inodes): Fix typo; should do bounds
1564 checking on next_ino instead of ino.
1565
1566 * jfs_compat.h (J_ASSERT):
1567 * journal.c (e2fsck_run_ext3_journal):
1568 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
1569
Theodore Ts'o243dc312000-08-22 21:37:47 +00001570 * unix.c: Use fatal_error() instead of exit() whenever possible.
1571 Also fix the fsck exit codes so that we use FSCK_USAGE
1572 when it is appropriate. Rename global_signal_ctx to
1573 e2fsck_global_ctx and let it be exported globally.
1574
Theodore Ts'occ96b2b2000-08-22 21:30:11 +00001575 * util.c (fatal_error): Try to flush the I/O manager before
1576 forcing an exit.
1577
Theodore Ts'oecf1b772000-08-20 22:06:31 +000015782000-08-20 <tytso@valinux.com>
1579
1580 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
1581 e2fsck_check_ext3_journal to smash the journal because
1582 journal->j_transaction_sequence wasn't getting
1583 initialized.
1584
1585 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
1586 call to e2fsck_clear_recover from recover_ext3_journal to
1587 after the filesystem has been closed and reopened.
1588 Otherwise, the superblock in the filesystem handle will
1589 probably be stale, and will overwrite the newer version of
1590 the superblock written by the log recovery.
1591
1592 * message.c (expand_inode_expression): Add support for %Iu and %Ig
1593
1594 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
1595
1596 * super.c (release_orphan_inodes, release_inode_block,
1597 release_inode_blocks): Update the block group descriptor
1598 counts when freeing the orphan inode. Use
1599 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
1600
1601 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
1602 attempted to reopen the filesystem using the device name
1603 instead of the filesystem name.
1604
Theodore Ts'o80bfaa32000-08-18 15:08:37 +000016052000-08-18 <tytso@valinux.com>
1606
1607 * Makefile.in: Update the make dependencies
1608
1609 * problem.c, problem.h: Add the problem codes:
1610 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
1611 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
1612 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
1613 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
1614
1615 * super.c (release_inode_blocks, release_orphan_inodes,
1616 check_super_block): Add support for clearing orphaned
1617 inodes from the unmounted filesystem.
1618
1619 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
1620 check; this is now handled in check_super_block ---
1621 non-journaled filesystems can use the orphan list in the
1622 future. Also, move the the re-opening of the filesystem
1623 to e2fsck_run_ext3_journal().
1624
Theodore Ts'o3b5386d2000-08-14 14:25:19 +000016252000-07-12 Andreas Dilger <adilger@turbolinux.com>
1626
1627 * journal.c: implement loading of ext3 journal for recovery code
1628
1629 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
1630 Add journal problems.
1631
1632 * recovery.c (journal_recover): user-space ext3 journal recovery code
1633
1634 * unix.c (main) : check journal and do recovery in separate steps
1635
Theodore Ts'ob8d164c2000-08-08 03:17:04 +000016362000-08-07 <tytso@snap.thunk.org>
1637
1638 * unix.c (calc_percent): Make sure that we don't take a floating
1639 exception if the max value is zero. (should normally
1640 never happen, but...)
1641
Theodore Ts'of9e67062000-07-13 23:25:54 +000016422000-07-13 <tytso@valinux.com>
1643
1644 * Release of E2fsprogs 1.19
1645
Theodore Ts'o17390c02000-07-07 04:13:21 +000016462000-07-06 Theodore Ts'o <tytso@valinux.com>
1647
1648 * unix.c (check_if_skip): Modify algorithm for checking
1649 s_max_mnt_count to match with the kernel. (If
1650 s_max_mnt_count is negative, ignore the mnt_count check.)
1651
1652 * unix.c (e2fsck_update_progress): Adjust the width of the
1653 progress bar dynamically, based on the filesystem name
1654 that we need to display.
1655
1656 * unix.c (main): If the ext3 needs_recovery flag is set, call
1657 e2fsck_run_ext3_journal() and then restart the e2fsck run.
1658
1659 * journal.c (e2fsck_run_ext3_journal): New file which contains
1660 logic to recover the ext3 journal. This version relies on
1661 the kernel being able to mount the filesystem in order to
1662 run the journal.
1663
Theodore Ts'o92269042000-07-05 18:25:59 +000016642000-07-05 Theodore Ts'o <tytso@valinux.com>
1665
1666 * unix.c (e2fsck_update_progress): Only save and check the last
1667 percentage after multiplying it by 10, nor 1000, since we
1668 only need to save values to a tenth of a percent (and the
1669 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +00001670 Also, re-arrange the logic so that we do the time
1671 check only after doing the percentage check, and we
1672 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +00001673
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +000016742000-07-04 Theodore Ts'o <tytso@valinux.com>
1675
1676 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
1677 field is set; if so, clear it, so that ext3 mounting code
1678 won't get confused by the fact that we've cleared out the
1679 orphaned inodes.
1680
Theodore Ts'obbd47d72000-06-10 19:21:33 +000016812000-06-10 Theodore Ts'o <tytso@valinux.com>
1682
1683 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
1684 checking for a "should never happen case".
1685
1686 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
1687 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
1688
Theodore Ts'od647a1e2000-05-27 14:40:09 +000016892000-05-27 Theodore Ts'o <tytso@valinux.com>
1690
1691 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
1692 (cw@foof.org) which checks to see if special devices have
1693 a non-zero size, and deals with it.
1694
1695 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
1696
Theodore Ts'o1d279212000-05-19 02:38:14 +000016972000-05-18 Theodore Ts'o <tytso@valinux.com>
1698
1699 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
1700 well.
1701
Theodore Ts'o4ea0a112000-05-08 13:33:17 +000017022000-05-08 Theodore Ts'o <tytso@valinux.com>
1703
1704 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
1705 code.
1706
1707 * super.c (check_super_block): If the OS type in the superblock is
1708 the Hurd, check to see if the filetype feature is set, and
1709 offer to clear it if so. This needs to be done since the
1710 Hurd doesn't properly support the filetype feature.
1711 (And since the hurd allows the transmogrification of files
1712 to special files and vice versa --- for no good reason
1713 that I can understand --- it can't support the filetype
1714 feature for the forseeable future, either.)
1715
Theodore Ts'o373b8332000-04-03 16:22:35 +000017162000-04-03 Theodore Ts'o <tytso@valinux.com>
1717
1718 * unix.c: For platforms that don't define optarg.h, manually
1719 define optarg and optind.
1720
Theodore Ts'o01fbc702000-04-03 13:57:21 +000017212000-03-20 Theodore Ts'o <tytso@valinux.com>
1722
1723 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
1724 Check for the append-only as well as the immutable flag.
1725
1726 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
1727 append-only flag. Fix comment for compression flag.
1728
Theodore Ts'o06012322000-02-12 20:12:43 +000017292000-02-12 <tytso@snap.thunk.org>
1730
1731 * unix.c (e2fsck_update_progress): Limit the number of updates to
1732 the progress bars to 8 times a second. This allows a 9600
1733 baud console link to keep up.
1734
Theodore Ts'o19178752000-02-11 15:55:07 +000017352000-02-11 <tytso@snap.thunk.org>
1736
1737 * unix.c (main): If compression is enabled on the filesystem,
1738 print a warning message (for now).
1739
1740 * message.c: Add new compression shortcut: @c == compress
1741
1742 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
1743
1744 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
1745 set, check to see if the filesystem supports compression.
1746 If it does pass this information down to process_block()
1747 so it can treat the compressed block flag words
1748 correctly. If not, offer to clear the flag, since it
1749 shouldn't be set.
1750 (process_block): If an inode has the compressed inode flag
1751 set, allow EXT2FS_COMPRESSED_BLKADDR.
1752
1753 * pass1b.c (process_pass1b_block, delete_file_block,
1754 clone_file_block):
1755 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
1756 see if the block can be skipped.
1757
Theodore Ts'o28ffafb2000-02-08 19:14:02 +000017582000-02-08 <tytso@snap.thunk.org>
1759
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +00001760 * util.c: Make resource tracking message more concise.
1761
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +00001762 * e2fsck.h:
1763 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
1764 ctx->block_illegal_map, since it's not needed by pass1,
1765 and pass1b has been modified to calculate it manually if
1766 needed. This reduces the memory footprint needed by e2fsck.
1767
1768 * pass1b.c (check_if_fs_block): New static function which returns
1769 whether or not a block overlaps with filesystem metadata.
1770 This replaces consulting the block_illegal_map bitmap.
1771
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00001772 * Makefile.in: Call sync after finishing building all in this
1773 directory.
1774
1775 * unix.c (PRS): sync the filesystem before trying to use
1776 BLKFLSBUF, to minimize the chance of causing dirty blocks
1777 to get dropped.
1778
1779 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
1780 a Linux/i386 system.
1781
1782 * pass3.c (check_directory): Only do the loop detection algorithm
1783 if we've searched over 2048 parent directories and haven't
1784 found the end yet. This means that in the common case, we
1785 don't allocate or clear the inode_loop_detection bitmap,
1786 which for large systems, merely clearing the bitmap for
1787 each directory was turning out to be quite expensive.
1788 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
1789 identifying this problem.
1790
Theodore Ts'o0c4a0722000-02-07 03:11:03 +000017912000-02-06 Theodore Ts'o <tytso@valinux.com>
1792
1793 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
1794 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
1795 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
1796 unix.c, util.c: Add Internationalization support as
1797 suggested by Marco d'Itri <md@linux.it>.
1798
Theodore Ts'o80e808f2000-02-02 16:19:59 +000017992000-02-02 Theodore Ts'o <tytso@valinux.com>
1800
1801 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
1802 linux/fs.h
1803
Theodore Ts'o894edb22000-01-18 21:27:12 +000018042000-01-18 Theodore Ts'o <tytso@valinux.com>
1805
1806 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
1807 we need a separate DEPLIBUUID that can be used in
1808 Makefile's dependency rules.
1809
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +000018101999-11-23 <tytso@valinux.com>
1811
1812 * e2fsck.8.in: Update language about where to find a backup
1813 superblock.
1814
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +000018151999-11-19 <tytso@valinux.com>
1816
Theodore Ts'o86a63e91999-11-23 13:52:48 +00001817 * pass1.c (process_inodes): Add shortcut handling; if
1818 process_inodes_count is zero, return right away, to avoid
1819 calling qsort with a non-positive count.
1820
Theodore Ts'oec8d2c31999-11-19 18:52:36 +00001821 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
1822 to print Delete as ^?
1823
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00001824 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
1825 the source directory.
1826
Theodore Ts'oa846d2f1999-11-10 15:50:24 +000018271999-11-10 <tytso@valinux.com>
1828
Theodore Ts'ocd086361999-11-10 16:00:39 +00001829 * Release of E2fsprogs 1.18
1830
18311999-11-10 <tytso@valinux.com>
1832
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00001833 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
1834 means the answer is assumed to be no in preen mode. This
1835 is now used in the PR_1_SET_IMMUTABLE code, so that in
1836 preen mode we ignore these inodes and just print a warning
1837 message.
1838
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +000018391999-11-09 <tytso@valinux.com>
1840
1841 * pass1.c (e2fsck_pass1): If the filesystem does not support
1842 imagic inodes, if an inode has the imagic flag set, offer
1843 to clear the imagic flag. If a valid device/fifo/socket
1844 has the immutable flag set, call the new helper function
1845 check_immutable() to offerto clear the immutable flag.
1846
1847 * pass2.c (check_filetype): Use the new ext2_file_type() helper
1848 function instead of calculating the file_type information
1849 manually.
1850
1851 * pass3.c (e2fsck_reconnect_file): When adding a link to
1852 lost+found, calculate the filetype information so that
1853 ext2fs_link() can use the information if applicable.
1854 (get_lost_and_found): Create the /lost+found directory
1855 with the correct filetype information if applicable.
1856
1857 * util.c (ext2_file_type), e2fsck.h: New function which returns
1858 the directory entry file type information given the
1859 inode's mode bits.
1860
1861 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
1862 and PR_1_SET_IMMUTABLE.
1863
Theodore Ts'o7142db01999-11-08 18:46:54 +000018641999-11-07 <tytso@valinux.com>
1865
1866 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
1867 to prevent it from getting freed twice.
1868
18691999-11-06 <tytso@valinux.com>
1870
1871 * unix.c (main): Close the filesystem before freeing the context,
1872 so that in the event of a free()-related segmentation
1873 violation, the filesystem is properly closed and written
1874 out.
1875
18761999-10-27 <tytso@valinux.com>
1877
1878 * e2fsck.c (e2fsck_reset_context): When freeing
1879 ctx->inode_reg_map, we weren't zero'ing
1880 ctx->inode_reg_map, which could cause a segfault later on
1881 in the e2fsck run.
1882
18831999-10-26 <tytso@valinux.com>
1884
1885 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
1886 matches the standard convention).
1887
Theodore Ts'of68aa411999-10-26 14:20:22 +000018881999-10-26 <tytso@valinux.com>
1889
Theodore Ts'o28e11941999-10-26 18:17:20 +00001890 * Release of E2fsprogs 1.17
1891
18921999-10-26 <tytso@valinux.com>
1893
Theodore Ts'of68aa411999-10-26 14:20:22 +00001894 * message.c (safe_print): Make safe_print take an char instead of
1895 an unsigned char to fix gcc warnings.
1896
Theodore Ts'oc40db6d1999-10-25 21:03:34 +000018971999-10-25 <tytso@valinux.com>
1898
Theodore Ts'oe6597041999-10-26 02:30:16 +00001899 * util.c: For NT portability, don't redefine getchar(), since
1900 stdio defines that. Instead we introduce a new
1901 abstract macro read_a_char() which is #defined to the
1902 right function as necessary.
1903
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00001904 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
1905
1906 * pass2.c (check_dir_block): Require that the length of the
1907 directory entry be at least 12 bytes. Check to see if the
1908 filename is zero-length, and flag that as an error.
1909
Theodore Ts'o7847c1d1999-10-22 15:11:42 +000019101999-10-22 <tytso@valinux.com>
1911
Theodore Ts'o614fdfd1999-10-23 03:19:51 +00001912 * Release of E2fsprogs 1.16
1913
19141999-10-22 <tytso@valinux.com>
1915
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00001916 * pass2.c (check_filetype): If the filetype filesystem feature is
1917 not set, and a directory entry has a dirent feature, offer
1918 to clear it (since 2.0 kernels will do complain will
1919 interpret it as a very large name length field).
1920
1921 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
1922
Theodore Ts'oaa4115a1999-10-21 19:33:18 +000019231999-10-21 <tytso@valinux.com>
1924
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +00001925 * e2fsck.8.in: Update man page to use a more standard format (bold
1926 option flags and italicized variables), as suggested by
1927 Andreas Dilger (adilger@enel.ucalgary.ca)
1928
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00001929 * pass4.c (e2fsck_pass4): If an inode is set in the
1930 inode_imagic_map bitmap, don't check to see if it is
1931 disconnected from the inode tree (because it almost
1932 certainly will be). Free inode_imagic_map at the end of
1933 pass 4.
1934
1935 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
1936 feature is set, check the directory entry's filetype
1937 information field, and fix/set it if necessary.
1938 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
1939 of pass 2.
1940
1941 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
1942 information for inode_reg_map and inode_imagic_map, which
1943 indicates which inodes are regular files and AFS inodes,
1944 respectively.
1945 Since only the master superblock is written during a
1946 restart, force that superblock to be used after a restart;
1947 otherwise changes to the block group descriptors end up
1948 getting ignored.
1949
1950 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
1951 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
1952 which supresses the problem message if e2fsck is run with
1953 the -n option.
1954
1955 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
1956 new problem codes.
1957
1958 * message.c (expand_dirent_expression): Add support for %dt which
1959 prints the dirent type information.
1960
1961 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
1962 and inode_imagic_map).
1963
1964 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
1965 to the context structure.
1966
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +000019671999-09-24 <tytso@valinux.com>
1968
1969 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
1970 e2fsprogs easier to port to non-Unix platforms.
1971
19721999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00001973
1974 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
1975 internal and external inode counts in sync when we
1976 decremented an inode whose link count was already zero.
1977 Now we skip incrementing or decrementing both link counts
1978 if we would cause an overflow condition.
1979 (expand_dir, expand_dir_proc): Change where we update the
1980 inode block count and size files so that the block count
1981 field is updated correctly when we create an indirect block.
1982
Theodore Ts'o78cf0541999-10-20 18:29:18 +000019831999-08-05 <tytso@valinux.com>
1984
1985 * super.c (check_super_block): Check to see whether the
1986 inodes_per_group value in the superblock is insanely too
1987 high.
1988
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +000019891999-08-02 <tytso@valinux.com>
1990
1991 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
1992 the block also shares data with the fs metadata when
1993 the count drops to 1, since the block should still be
1994 cloned, as fs metadata isn't included in the count.
1995
19961999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +00001997
1998 * Release of E2fsprogs 1.15
1999
Theodore Ts'ob55199e1999-07-19 15:37:46 +000020001999-07-19 <tytso@valinux.com>
2001
2002 * unix.c (usage): Add minimalist emergency help to the usage
2003 message.
2004
Theodore Ts'o5596def1999-07-19 15:27:37 +000020051999-07-18 <tytso@valinux.com>
2006
2007 * unix.c: Add support for calculating a progress bar if the -C0
2008 option is given. The function e2fsck_clear_progbar()
2009 clears the progress bar and must be called before any
2010 message is issued. SIGUSR1 will enable the progress bar,
2011 and SIGUSR2 will disable the progress bar. This is used
2012 by fsck to handle parallel filesystem checks. Also, set
2013 the device_name from the filesystem label if it is
2014 available.
2015
2016 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
2017 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
2018 structure which contains the last tenth of a percent
2019 printed for the user.
2020
2021 * message.c (print_e2fsck_message): Add call to
2022 e2fsck_clear_progbar().
2023
2024 * pass1.c (e2fsck_pass1):
2025 * pass2.c (e2fsck_pass2):
2026 * pass3.c (e2fsck_pass3):
2027 * pass4.c (e2fsck_pass4):
2028 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
2029 printing the resource tracking information.
2030
2031 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
2032 an error in the bitmaps, suppress printing the progress
2033 bar using the suppression flag for the remainder of the
2034 check, in order to clean up the display.
2035
Theodore Ts'o74033351999-07-01 03:00:47 +000020361999-06-30 <tytso@valinux.com>
2037
2038 * unix.c (check_mount): Clean up the abort message displayed when
2039 the filesystem is mounted and either stdout or stdin isn't
2040 a tty.
2041
20421999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +00002043
2044 * e2fsck.h:
2045 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
2046 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
2047 pass1_* be private static functions, and create new
2048 function e2fsck_use_inode_shortcuts which sets and clears
2049 the inode shortcut functions in the fs structure.
2050
2051 * e2fsck.h:
2052 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
2053 exported function.
2054
2055 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
2056 if a disconnected inode has any problems before
2057 connecting it to /lost+found. Bug and suggested fix by
2058 Pavel Machek <pavel@bug.ucw.cz>
2059
20601999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +00002061
2062 * unix.c (main): Add missing space in the disk write-protected
2063 message.
2064
Theodore Ts'od4b0ce01999-06-18 01:09:29 +000020651999-05-22 <tytso@rsts-11.mit.edu>
2066
2067 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
2068 code.
2069
2070 * super.c (check_super_block): Add check to make sure the total
2071 number of inodes is sane, since this can be calculated
2072 from the number of groups times the number of inodes per
2073 group. Offer to correct it if it is incorrect.
2074
Theodore Ts'oe79d1b21999-06-18 01:06:59 +000020751999-03-19 <tytso@rsts-11.mit.edu>
2076
2077 * pass5.c (check_block_end): Fix fencepost condition where when
2078 clearing the block padding we were missing the last position
2079 in the bitmap.
2080
Theodore Ts'o75d83be1999-05-18 03:16:36 +000020811999-05-17 <tytso@rsts-11.mit.edu>
2082
2083 * unix.c (reserve_stdio_fds): Add safety check in case
2084 reserve_stdio_fds couldn't open /dev/null.
2085
Theodore Ts'o4a9f5931999-03-16 19:32:52 +000020861999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
2087
2088 * util.c (print_resource_track): Use mallinfo if present to get
2089 more accurate malloc statistics.
2090
2091 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +00002092 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00002093
2094 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
2095
20961999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2097
2098 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
2099 that the block group number is printed. Add new prompt,
2100 PROMPT_UNLINK.
2101
21021999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2103
2104 * Release of E2fsprogs 1.14
2105
Theodore Ts'o9e51eca1999-01-09 16:32:31 +000021061999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2107
2108 * message.c (safe_print): New function which prints strings,
2109 converting non-printable characters using the '^' and
2110 M-notation. This function is now used to print directory
2111 name entries and pathnames.
2112
Theodore Ts'o73f17cf1999-01-04 07:35:45 +00002113Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
2114
2115 * unix.c (main): Reset the context before calling ext2fs_close(),
2116 to avoid referencing already freed memory.
2117
Theodore Ts'o556ad131998-12-19 08:10:58 +000021181998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
2119
2120 * Release of E2fsprogs 1.13
2121
Theodore Ts'o5a679c81998-12-03 16:40:38 +000021221998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
2123
2124 * Makefile.in: Updated dependencies.
2125
21261998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
2127
2128 * pass3.c (get_lost_and_found): If the filesystem is not opened
2129 read-only, then force /lost+found to be created if it is
2130 not present.
2131
2132 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
2133 operation.
2134
Theodore Ts'o1dde43f1998-11-14 04:18:28 +000021351998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2136
2137 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
2138 since e2fsck_free_context may reference data in ctx->fs.
2139
2140 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
2141 before checking ctx->fs->dblist.
2142
21431998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2144
2145 * pass1.c (e2fsck_pass1): Use the device check subroutine on
2146 FIFO's and Socket's, so that we catch bogus immutable inodes.
2147
2148 * pass2.c (process_bad_inode): Process bad socket and fifo's.
2149
2150 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
2151 PR_2_BAD_SOCKET.
2152
Theodore Ts'o7f813ba1998-09-03 01:26:03 +000021531998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
2154
2155 * problem.c: Add PR_3_NO_DIRINFO error code.
2156
2157 * super.c (check_super_value): Rename min and max to min_val and
2158 max_val to avoid possible cpp macro conflicts.
2159
2160 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
2161 possible cpp macro conflicts.
2162
2163 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
2164 cpp macro conflicts.
2165 (check_directory): Fix logic to avoid possible core dump
2166 in the case of ext2fs_get_dir_info returning NULL. (By
2167 the time we get here, it should never happen, but...).
2168 Also simply/streamline the control flow of the function.
2169
Theodore Ts'o24fc5031998-08-26 15:23:31 +000021701998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
2171
2172 * unix.c (check_if_skip): Move the "not cleanly mounted" check
2173 ahead of the maximal mount and too long since checked tests.
2174 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
2175 open, so that we don't open the filesystem using the same
2176 file descriptor as stdout or stderr.
2177
Theodore Ts'of75c28d1998-08-01 04:18:06 +000021781998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
2179
2180 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
2181 get to 100%.
2182
2183 * pass3.c (e2fsck_pass3): Change progress accounting to be
2184 consistent with the other e2fsck passes.
2185
2186 * e2fsck.c (e2fsck_run): At the end of each pass, call the
2187 progress function with the pass number set to zero.
2188
2189 * unix.c (e2fsck_update_progress): If the pass number is zero,
2190 ignore the call, since that indicates that we just want to
2191 deallocate any progress structures.
2192
Theodore Ts'o8144d671998-07-09 05:33:18 +000021931998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2194
Theodore Ts'o4a5fa191998-07-09 05:42:45 +00002195 * Release of E2fsprogs 1.12
2196
21971998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2198
Theodore Ts'o8144d671998-07-09 05:33:18 +00002199 * unix.c (main): Fix typo in checking the incompat feature set; it
2200 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
2201
Theodore Ts'o1fad9041998-07-07 05:44:43 +000022021998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
2203
2204 * badblocks.c (test_disk): Don't clear the existing bad blocks
2205 list when using e2fsck -c, since it may cause blocks with
2206 marginal errors to be dropped from the bad blocks list.
2207
Theodore Ts'o874b4d21998-07-06 14:33:12 +00002208Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
2209
2210 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
2211 compatibility with older kernels.
2212
Theodore Ts'o818180c1998-06-27 05:11:14 +000022131998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
2214
2215 * unix.c (e2fsck_update_progress): Remove unused variables.
2216
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +000022171998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
2218
2219 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
2220 collision with LFS API.
2221
2222 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
2223 properly initialized.
2224 (e2fsck_pass1): Don't allow the the boot loader inode to
2225 be a directory (clear the inode mode field if so).
2226
Theodore Ts'oefac9a11998-05-07 05:02:00 +000022271998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
2228
2229 * unix.c (PRS): Added new option -C, which causes e2fsck to print
2230 progress updates so that callers can keep track of the
2231 completion progress of e2fsck. Designed for use by
2232 progress, except for -C 0, which prints a spinning report
2233 which may be useful for some users.
2234
2235 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
2236 scheme (useful for larger filesystems).
2237
2238 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
2239 progress reporting functions.
2240
Theodore Ts'o4c77fe51998-04-30 17:35:59 +000022411998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2242
2243 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
2244 appropriate return type for comparison functions for qsort.
2245
2246 * e2fsck.h: Add #ifdef protection for unistd.h
2247
2248 * super.c: Remove header files already included by e2fsck.h
2249
Theodore Ts'o76f875d1998-04-27 01:41:13 +000022501998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
2251
2252 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
2253 size of the memory to be resized to ext2fs_resize_mem().
2254
Theodore Ts'o7e44f241998-04-01 03:16:29 +000022551998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
2256
2257 * Makefile.in: Change to use new installation directory variables
2258 convention. Fix uninstall rules to take $(DESTDIR) into
2259 account. Remove cat8dir from the installdirs target,
2260 since modern man package don't necessarily put the cat
2261 directory in /usr/man/cat?.
2262
Theodore Ts'o17dba281998-03-30 01:16:26 +000022631998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
2264
2265 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
2266 extern in e2fsck.h to prevent -Wall warnings.
2267
2268 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
2269
22701998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2271
2272 * super.c (check_super_block): Fix broken superblock sanity check
2273 when calculating blocks_per_group if s_log_frag_size !=
2274 s_log_block_size. Since we don't support fragments, this
2275 isn't a bug deal, but it's good to get it fixed.
2276
Theodore Ts'o246501c1998-03-24 16:22:38 +000022771998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
2278
2279 * unix.c: Fix bug in check of feature set, to make sure we can
2280 really fix this filesystem.
2281
2282 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
2283 num field be a 64 bit type. Add the problem code
2284 PR_1_FEATURE_LARGE_FILES
2285
2286 * problem.c: Add table entry for the problem code
2287 PR_1_FEATURE_LARGE_FILES.
2288
2289 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
2290 a problem for directory inodes. (Since it is also
2291 i_size_high now.) If there are no large_files, then
2292 clear the LARGE_FLAG feature flag. If there are
2293 large_files, but the LARGE_FLAG feature flag is not set,
2294 complain and offer to fix it.
2295 (check_blocks): Add support to deal with non-directory
2296 inodes that have i_size_high set (i.e., large_files).
2297 Don't give an error if a directory has preallocated
2298 blocks, to support the DIR_PREALLOC feature.
2299 (process_block, process_bad_block): The blockcnt variable
2300 is a type of blkcnt_t, for conversion to the new
2301 block_iterate2.
2302
2303 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
2304 a problem for directory inodes. (Since it is also
2305 i_size_high now.)
2306
2307 * message.c (expand_inode_expression): Print a 64-bits of the
2308 inode size for non-directory inodes. (Directory inodes
2309 can only use a 32-bit directory acl size, since
2310 i_size_high is shared with i_dir_acl.) Add sanity check
2311 so that trying to print out the directory acl on a
2312 non-directory inode will print zero.
2313 (expand_percent_expression): %B and %N, which print
2314 pctx->blkcount and pctx->num, can now be 64 bit
2315 variables. Print them using the "%lld" format if
2316 EXT2_NO_64_TYPE is not defined.
2317
2318 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
2319
2320 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
2321 field.
2322
Theodore Ts'ob6f79831998-03-09 13:10:37 +00002323Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2324
2325 * pass3.c (fix_dotdot_proc):
2326 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
2327 * message.c (expand_dirent_expression): Mask off the high eight
2328 bits of the directory entry's name_len field, so that it
2329 can be used for other purposes.
2330
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +00002331Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2332
2333 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
2334 include EXT2_FLAG_RESTART anymore, we need to adjust this
2335 routine so that it *does* return in the case of it seeing
2336 EXT2_FLAG_RESTART.
2337
2338 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
2339 done callback function, which may set context abort
2340 flags. So we need to test the context abort flags after
2341 we call ext2_get_next_inode().
2342 (process_inodes): If we abort due out of process_inodes,
2343 do a clean exit by breaking out of the for loop instead of
2344 just returning.
2345
2346 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
2347 considered a SIGNAL mask (i.e., requiring an immediate
2348 abort of processing to restart). FLAG_RESTART just means
2349 that we want to restart once pass 1 is complete.
2350
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +00002351Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2352
2353 * Change the progress function to return an integer; if returns 1,
2354 then the progress function is expected to have set the
2355 e2fsck context flag signalling a user abort, and the
2356 caller should also initiate a user abort.
2357
Theodore Ts'o63c49691998-02-20 05:24:59 +00002358Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2359
2360 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
2361 end_problem_latch() unless there was actually a problem
2362 latched. Simplifies semantics of the latch processing.
2363
Theodore Ts'o43139321998-02-16 22:34:46 +00002364Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2365
2366 * e2fsck.h: Add new field, priv_data to the e2fsck context
2367 structure. It should be used by callers of the e2fsck
2368 functions only, and not by anything in e2fsck itself.
2369
2370Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2371
2372 * super.c: Instead of call ext2fs_get_device_size(), define and call
2373 e2fsck_get_device_size(). (This function may be stubbed
2374 out in special versions of e2fsck.)
2375
2376 * pass3.c, pass4.c: Remove extra calls to the progress function
2377 that weren't needed.
2378
2379 * mke2fs.8.in: Update man page to note that the format of the bad
2380 block file is the same as the one generated by badblocks.
2381
Theodore Ts'o54be2cc1998-02-01 12:58:48 +00002382Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2383
2384 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
2385
2386 * e2fsck.h: Include <time.h> since it is needed
2387
2388 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
2389 processing.
2390
Theodore Ts'o24dd4021998-02-01 00:16:40 +00002391Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2392
2393 * unix.c (main): In the case where the filesystem revision is too
2394 high, print the message about the superblock possibly
2395 being corrupt.
2396
2397 * e2fsck.8.in: Add expanded comments about how the -b option
2398 works.
2399
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +00002400Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2401
2402 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
2403 the ext2-specific header files are in a flat directory.
2404
2405 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
2406 super.c, swapfs.c, unix.c: Explicitly cast all assignments
2407 from void * to be compatible with C++.
2408
2409Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2410
2411 * unix.c (sync_disk): Remove sync_disk and calls to that function,
2412 since ext2fs_close() now takes care of this.
2413
2414Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2415
2416 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
2417 ehandler.c, unix.c: Change use of private to be priv_data,
2418 to avoid C++ reserved name clash.
2419
Theodore Ts'o5be8dc21997-12-01 18:24:10 +00002420Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2421
2422 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
2423 of e2fsck_get_num_dirs, which has been removed.
2424
2425Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2426
2427 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
2428 to compile and install flushb.
2429
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +00002430Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2431
2432 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
2433 to make sure the extra i_blocks in a device are cleared if
2434 the immutable flag is set.
2435
2436 * util.c (print_resource_track): Fix typo which caused the
2437 time/resource tracking to print "Pass 1 :" instead of
2438 "Pass 1: ".
2439
Theodore Ts'ob8647fa1997-11-20 21:52:43 +00002440Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2441
2442 * pass3.c (expand_directory): Fix bug which could cause core dump
2443 when expanding the directory, and the bitmaps hadn't yet
2444 been read in. Also, only use ext2fs_write_dir_block when
2445 writing a directory block, not when writing out a fresh
2446 indirect block.
2447
Theodore Ts'o8039c481997-11-19 21:39:13 +00002448Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2449
2450 * pass1.c (process_bad_block): Fix bug where first_block wasn't
2451 getting incremented, which caused user to get a
2452 "Programming error?" warning if there was a bad block in a
2453 non-primary superblock/group_descriptor. Also fixed
2454 another bug so that ext2fs_bg_has_super() is consulted, to
2455 avoid problems when using a filesystem with the
2456 sparse_groups option set and there are bad blocks at the
2457 beginning of a group which doesn't have a superblock.
2458
Theodore Ts'of8188ff1997-11-14 05:23:04 +00002459Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2460
2461 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
2462 progress indicator function.
2463
2464 * pass1.c (scan_callback): Add call to the progress feedback
2465 function (if it exists).
2466
2467Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2468
2469 * super.c (check_super_block): Skip the device size check if the
2470 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
2471
2472 * iscan.c (main): Don't use fatal_error() anymore.
2473
2474 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
2475 calling fatal_error(0).
2476
2477 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
2478 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
2479
2480 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
2481
2482 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
2483
2484 * problemP.h: New file which separates out the private fix_problem
2485 data structures.
2486
2487 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
2488 swapfs.c util.c: allocate_memory() now takes a e2fsck
2489 context as its first argument, and rename it to be
2490 e2fsck_allocate_memory().
2491
Theodore Ts'o08b21301997-11-03 19:42:40 +00002492Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2493
Theodore Ts'o68227541997-11-04 04:25:22 +00002494 * unix.c (main): Add a special case check for the error code EROFS
2495 and display an appropriate error message for this case.
2496
Theodore Ts'o08b21301997-11-03 19:42:40 +00002497 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
2498 to take the e2fsck context as their first argument.
2499 Change dir_info.c routines to take an e2fsck_context,
2500 renamed them to start with e2fsck_ to avoid namespace
2501 issues, and changed them to store the directory
2502 information inside the e2fsck context.
2503 Added e2fsck_run() which calls all of the e2fsck passes in
2504 the correct order, and which handles the return of abort
2505 codes. Added abort processing, both via setjmp/longjmp
2506 and via flags in the e2fsck context. Use a flag in the
2507 e2fsck context instead of the restart_e2fsck global
2508 variable. Change uses of free and malloc to
2509 ext2fs_free_mem and ext2fs_get_mem.
2510
Theodore Ts'o291c9041997-10-31 06:17:08 +00002511Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2512
2513 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
2514 consistency.
2515
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00002516Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2517
2518 * pass3.c (get_lost_and_found): Check error return of
2519 EXT2_FILE_NOT_FOUND instead of ENOTDIR
2520
2521 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
2522 instead of ENOTDIR
2523
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002524Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2525
Theodore Ts'o519149f1997-10-25 03:49:49 +00002526 * unix.c (PRS): Make the variable which getopt returns into be
2527 an int, so that it won't lose on platforms where char is
2528 unsigned.
2529
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002530 * pass1b.c (clone_file): Fix bug in error reporting in the case
2531 where cs.errcode is non-zero.
2532
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002533Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2534
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00002535 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
2536 RESOURCE_TRACK around code which uses init_resource_track
2537 and print_resource_track. (Not all systems have timeval)
2538
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002539 * super.c: Remove excess #includes which are not necessary.
2540
2541 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
2542
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00002543Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2544
2545 * pass*.c, super.c: Massive changes to avoid using printf and
2546 com_err routines. All diagnostic messages are now routed
2547 through the fix_problem interface.
2548
2549Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2550
2551 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
2552 entries.
2553
2554 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
2555 PR_2_DUP_DOT_DOT.
2556
2557Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2558
2559 * problem.c: Added new problem codes for some of the
2560 superblock corruption checks, and for the pass header
2561 messages. ("Pass 1: xxxxx")
2562
2563 * util.c (print_resource_track): Now takes a description
2564 argument.
2565
2566Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2567
2568 * super.c, unix.c, e2fsck.c: New files to separate out the
2569 operating-specific operations out from e2fsck.c.
2570 e2fsck.c now contains the global e2fsck context management
2571 routines, and super.c contains the "pass 0" initial
2572 validation of the superblock and global block group
2573 descriptors.
2574
2575 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
2576 (nearly) all global variables and moved them to the e2fsck
2577 context structure.
2578
2579 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
2580 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
2581 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
2582
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00002583Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2584
2585 * message.c: Add compression for the word "Illegal"
2586
2587 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
2588 PR_2_BAD_BLOCK_DEV
2589
2590Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2591
2592 * pass1.c (pass1, check_device_inode), pass2.c
2593 (process_bad_inode): Use a more stringent test for a valid
2594 device.
2595
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00002596Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2597
2598 * e2fsck.c (check_mount): Add stronger warning message about the
2599 perils of running e2fsck on a mounted filesystem.
2600
Theodore Ts'o024996c1997-06-17 05:38:35 +00002601Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2602
2603 * Release of E2fsprogs 1.11
2604
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00002605Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2606
2607 * pass1.c (mark_table_blocks): Mark the superblock and group
2608 descriptor blocks first, so that any conflicts between
2609 these and the bitmap or inode table blocks is noticed.
2610
2611 * problem.c: Fix message printed out when a block or inode bitmap
2612 conflicts with other fs data, has the correct group number
2613 in it.
2614
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00002615Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2616
2617 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
2618
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002619Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2620
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00002621 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
2622 Hawes (whawes@star.net).
2623
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002624 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
2625 bad blocks command so that all of the filesystem gets
2626 tested in the case where the blocksize 2048 or 4096.
2627
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00002628Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
2629
2630 * Release of E2fsprogs version 1.10
2631
2632Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2633
2634 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
2635 where ext2fs_get_next_inode returns the
2636 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
2637
2638Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2639
2640 * Release of E2fsprogs version 1.09
2641
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00002642Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2643
2644 * Release of E2fsprogs version 1.08
2645
Theodore Ts'o521e3681997-04-29 17:48:10 +00002646Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2647
2648 * pass1b.c (clone_file_block): If we clone a directory, we need to
2649 update the dblist entry so that we check (and correct) the
2650 right directory block.
2651
2652Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2653
2654 * pass1.c (process_block): Don't clear blocks references to
2655 filesystem metadata; let pass 1B handle this case.
2656
2657 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
2658
2659 * pass1b.c (pass1d): Deal with a block which is shared with
2660 filesystem metadata.
2661
2662 * e2fsck.h: Make block_illegal_map be a global variable
2663
2664Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2665
2666 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
2667 feature.
2668 (get_backup_sb): New function which attempts to obtain the
2669 correct backup superblock (if possible).
2670
2671Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2672
2673 * e2fsck.c (main): Check the version of the library, and warn if
2674 the library is out of date; this happens generally due to
2675 users who manually install e2fsprogs.
2676
2677 * pass1.c (pass1_get_blocks): If the passed in inode number for
2678 get_blocks isn't what we're expecting pass back
2679 EXT2_ET_CALLBACK_NOT_HANDLED.
2680
Theodore Ts'o21c84b71997-04-29 16:15:03 +00002681Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
2682
2683 * Release of E2fsprogs version 1.07
2684
2685Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2686
2687 * icount.c: New file which implements an inode count abstraction.
2688 This significantly reduces amount of memory needed to
2689 check really large filesystems.
2690
2691 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
2692 abstraction.
2693
2694Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2695
2696 * dirinfo.c (dir_info_iter): New function which allows iteration
2697 over the directories in the dir_info map.
2698
2699 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
2700 over all directories in the dir_info structure, instead of
2701 iterating all inodes looking for directories, and then
2702 looking up the directories using get_dir_info().
2703
2704Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2705
2706 * pass1.c (pass1, process_block):
2707 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
2708 manual code to manage the directory block list information.
2709
2710 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
2711 (deallocate_inode): Call the ext2 library routine
2712 ext2_inode_has_valid_blocks() instead of
2713 inode_has_valid_blocks().
2714
2715 * swapfs.c (swap_inodes): Add check so that we don't try to call
2716 swap_inode_blocks unless the inode has valid blocks.
2717 (Otherwise a long fast symlink might cause
2718 swap_inode_blocks to erroneously get called.)
2719
2720Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2721
2722 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
2723 PR_2_DOT_DOT_NULL_TERM.
2724
2725 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
2726 .. entries are null-terminated, since the 2.0 kernel
2727 requires this (for no good reason).
2728
2729Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2730
2731 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
2732 that we can recover from missing inode tables.
2733
2734 * dirinfo.c (get_dir_info): If there are no directories in the
2735 dir_info abstraction, don't core dump (because dir_info is
2736 NULL).
2737
2738 * e2fsck.c (main): Don't try using the backup superblocks if there
2739 aren't any.
2740 (check_super_block): If there are illegal inode table or
2741 bitmaps, set the filesystem as being in error.
2742
2743Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2744
2745 * pass2.c (check_dir_block): Added check to make sure that rec_len
2746 is a a multiple of 4 (so that the directory entries are
2747 4-byte aligned).
2748
2749Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2750
2751 * Makefile.in (uninstall): Uninstall all programs in the PROGS
2752 line.
2753 (PROGS): Don't build and install the extend program by
2754 default.
2755
2756
2757Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2758
2759 * pass1.c (process_inodes): Make sure the stashed_ino variable is
2760 saved and restored as well.
2761 (pass1): For fast sym links, skip the check_blocks
2762 processing step altogether.
2763
2764Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2765
2766 * problem.c, message.c: New files, to completely refurbish how
2767 filesystem problems are reported to the user. The
2768 diagnostic messages are now encoded out in an easily
2769 customizable, extensible format. The messages printed out
2770 in preen mode are all on one line, and contain the device
2771 name.
2772
2773Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2774
2775 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
2776 deleted files.
2777
2778 * pass1.c (pass1): Ignore missing inode table errors during the
2779 scan, and just skip past those inodes.
2780
2781 * pass3.c (check_root): Remove root_ino argument, and assume that
2782 the root inode must be EXT2_ROOT_INO. Move responsibility
2783 of setting the parent of the root inode in the directory
2784 inode structure to pass2().
2785
2786 * pass2.c (check_dir_block): Don't allow links to the root
2787 directory.
2788
2789 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
2790 since the inode is no longer used.
2791
2792Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2793
2794 * e2fsck.c (main): If the superblock magic number is wrong, or the
2795 block group fails a sanity check, then automatically
2796 restart trying to use the backup superblocks.
2797
2798 * pass1.c (mark_table_blocks): Make the inode tables ahead of
2799 everything else; in the case where a bitmap block overlays
2800 the inode table, the inode table should take precedence.
2801
2802 * pass2.c (maybe_clear_entry): Make the deleted/unused error
2803 message fit on one line, since the error can happen during
2804 a preen pass. (We eventually need to revamp the whole
2805 e2fsck error reporting and prompting system, but that's a
2806 job for another day.)
2807
2808Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2809
2810 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
2811 for the benefit of the inode scan functions.
2812
2813 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
2814 indicating that an inode is in a bad block, mark that
2815 inode as being used, as well as in the inode "bb" map.
2816
2817 * pass2.c (maybe_clear_entry): New function which generalizes the
2818 error cases when a directory entry needs to be cleared.
2819 (check_dir_block): If an inode is in the "bb" map, offer
2820 to clear the directory entry, since the inode is in a bad
2821 block.
2822
2823 * pass4.c (pass4): If an inode is marked as used, but is is marked
2824 in the "bb" map, don't process it as a disconnected inode.
2825
2826Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2827
2828 * Release of E2fsprogs version 1.06
2829
Theodore Ts'o5c576471997-04-29 15:29:49 +00002830Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2831
2832 * e2fsck.c (main): Print out the version number of the shared
2833 library when using the -V option.
2834
2835 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
2836 consistency's sake.
2837
2838 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
2839 out the backup superblocks when we know we have a valid
2840 filesystem.
2841
2842Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2843
2844 * util.c (preenhalt): Make it explicit on preenhalt that running
2845 e2fsck manually means without the -a or -p flag.
2846
2847Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2848
2849 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
2850 (Linux/FT actually sets the mode bits, so we have to
2851 handle it specially.)
2852
2853 * e2fsck.c (check_if_skip): Print a message if the filesystem is
2854 just dirty, so that the user knows that it's about to be
2855 checked (since this will take a while).
2856
2857Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2858
2859 * pass4.c: If a disconnected inode is zero-length, prompt to
2860 delete it instead of connecting it to lost+found.
2861
2862Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2863
2864 * Release of E2fsprogs version 1.05
2865
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00002866Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2867
2868 * pass4.c (pass4): If the user refuses to connect an unattached
2869 inode to lost+found, don't try to set i_links_count. This
2870 is bad, since if the user says yes, the inode will be
2871 marked as unused, which is not necessarily the right
2872 thing, especially since the rest of the cleanup doesn't
2873 happen here.
2874
2875 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
2876 dellocating an inode. (Not strictly necessary, but...)
2877
2878 * pass4.c (pass4): Add "bonehead" explanation to the "programming
2879 error" message.
2880
2881Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2882
2883 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
2884 byte-swap the filesystem so that it is normalized. -S
2885 will byte-swap the filesystem regardless of its current
2886 byte-order.
2887
2888 * swapfs.c: New file, which will byte-swap a filesystem.
2889
2890Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2891
2892 * pass1.c (pass1): Change handling on files with non-zero dtime
2893 and non-zero i_link_count; before we treated them as
2894 deleted file per botched ext2 0.3c kernel behavior. We
2895 now clear dtime instead.
2896
2897Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2898
2899 * e2fsck.c (main): If e2fsck sets the clean bit, even if
2900 nothing else is changed, make sure FSCK_NONDESTRUCT is
2901 set (since after all having the filesystem set to
2902 invalid is an error. :-)
2903
2904Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2905
2906 * pass1.c (process_block): Make sure that meta data doesn't get
2907 accidentally set in the dir_blocks array (which could
2908 happen in some error condtions).
2909
2910 * pass1.c (pass1):
2911 * pass2.c (process_bad_inode): Check for fragments in a
2912 OS-independent fashion.
2913
2914Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2915
2916 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
2917 cleanup for the filesystem.
2918
2919Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2920
2921 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
2922
Theodore Ts'o62c06f71997-04-29 14:34:47 +00002923Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2924
2925 * Release of E2fsprogs version 1.04
2926
2927Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2928
2929 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
2930 try "e2fsck -b 8193" before allowing e2fsck to relocate
2931 inode table blocks.
2932
2933 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
2934 depending on the option to configure. Added targets for
2935 e2fsck.static and e2fsck.shared for people who want to
2936 build a static or shared variant manually.
2937
Theodore Ts'o7f88b041997-04-26 14:48:50 +00002938Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
2939
2940 * Release of E2fsprogs version 1.03
2941
2942Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
2943
2944 * e2fsck.c (show_stats): Don't use floating point to display
2945 percentage of non-contiguous files, as different libc
2946 handle result truncation differently, and this causes the
2947 test suite to bomb out depending on which libc you are
2948 using.
2949
2950 * util.c (allocate_memory): Fix error message to omit extraneous
2951 %%s.
2952
2953Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
2954
2955 * pass4.c (pass4):
2956 * pass2.c (check_dir_block):
2957 * pass1.c (pass1): Add support for dynamic first inode revision.
2958
2959Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
2960
2961 * pass3.c (check_root): Fix spelling typo
2962
2963Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
2964
2965 * e2fsck.c (check_super_block): If the superblock fails certain
2966 internal consistency checks, exit with a fatal error after
2967 printing the "superblock is corrupt message".
2968
Theodore Ts'o74becf31997-04-26 14:37:06 +00002969Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
2970
2971 * Release of E2fsprogs version 1.02
2972
2973Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
2974
2975 * pass1.c (process_block): Check to see if a file is "fragmented".
2976 i.e., non-contiguous. Note that any file which is larger
2977 than the block group is guaranteed to be non-contiguous.
2978 We may want to use a different hueristic for deciding
2979 whether or not a file is "fragmented".
2980
2981 * e2fsck.c (show_stats): Print statistics of how many
2982 non-contiguous files are on the system.
2983
2984Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
2985
2986 * badblocks.c (read_bad_blocks_file, test_disk): Fold
2987 functionality of test_disk() (which runs badblocks) into
2988 read_bad_blocks_file(); test_disk() now calls
2989 read_bad_blocks_file() with a NULL bad_blocks_file
2990 argument.
2991
2992Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
2993
2994 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
2995 #if defined(linux). The latter won't work if we're
2996 compiling -ansi.
2997
Theodore Ts'o297f47a1997-04-26 14:25:20 +00002998Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
2999
3000 * e2fsck.c (check_mount): For Linux systems, the check to see if
3001 the root is mounted read-only has to be done for all
3002 filesystems, not just for the root filesystem, due to the
3003 way that some /etc/rc scripts are set up.
3004
Theodore Ts'o50e1e101997-04-26 13:58:21 +00003005Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
3006
3007 * Makefile.in (install): Strip programs when they are installed.
3008 (e2fsck): Build e2fsck statically.
3009
3010Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
3011
3012 * util.c (preenhalt): Preenhalt now takes an argument, which is an
3013 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
3014 flag in the superblock in cases where preenhalt is called.
3015 All calls to preenhalt() were changed to either
3016 preenhalt(fs) or preenhalt(NULL) in a few cases where the
3017 fs pointer was not available. (Most notable, for block
3018 read/write errors.)
3019
3020Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
3021
3022 * ehandler.c:
3023 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
3024
3025Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
3026
3027 * e2fsck.c (show_stats): Show statistics about how many inodes
3028 have indirect, doubly indirect, and triply indirect
3029 blocks. Allow up to 8 digits for statistics, instead of
3030 merely 6, so things look pretty for large filesystems.
3031
3032 * pass1.c (pass1): Keep statistics about indirect, doubly
3033 indirect, and triply indirect blocks.
3034
3035 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
3036 pass 1.
3037
3038Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
3039
3040 * util.c, ehandler.c: Move #include of <sys/resource.h> after
3041 #include of "e2fsck.h", since sys/resource.h may depend on
3042 sys/time.h, which is #included in e2fsck.h.
3043
3044Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
3045
3046 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
3047 function to determine if the device is mounted.
3048
3049 * e2fsck.c (main): Add better error messages if ext2fs_open()
3050 fails.
3051
3052Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
3053
3054 * pass1.c (check_blocks): If we're clearing a directory, clear
3055 pb.is_dir so we don't do the following check of making
3056 sure the directory size matches; this is pointless, since
3057 we've already cleared the inode.
3058
3059Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3060
3061 * pass1.c (bad_primary_block): New function, called by
3062 process_bad_block, which explains the facts of life to the
3063 user when a block in the primary superblock or primary
3064 group descriptors is bad.
3065
3066 * pass2.c (check_dot): Handle the case where the first directory
3067 entry is used, but not ".".
3068
3069 * pass2.c (check_dotdot): Handle the case where the second directory
3070 entry is used, but is not "..".
3071
3072Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3073
3074 * e2fsck.c (check_super_block): Get the size of the physical
3075 device and if it is smaller than the reported size of the
3076 filesystem, report an error.
3077
3078Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
3079
3080 * e2fsck.c (check_if_skip): Print the number of allocated files and
3081 blocks on clean filesystems.
3082
3083Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
3084
3085 * e2fsck.8: Updated date and version number.
3086
3087Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
3088
3089 * pass1.c (check_blocks): Check that directory size matches *exactly*
3090 the count of allocated blocks.
3091
3092Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
3093
3094 * pass1b.c (pass1d): Free the shared[] array when we're done with
3095 it to avoid a memory leak.
3096
3097 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
3098 block_dup_map.
3099
3100 * pass2.c (process_bad_inode): When clearing the inode, make sure
3101 the pathname is freed, to prevent a memory leak.
3102
3103 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
3104 when we're finished with them.
3105 (check_block_bitmaps): Free free_array when we're finished
3106 with them.
3107
3108 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
3109 linking the executable.
3110
3111 * pass2.c (process_bad_inode): Even on OS's that don't support the
3112 fragment fields, make sure the Linux equivalent fields are
3113 set to zero. If an OS wants to reuse these fields, which
3114 is probably a bad idea (although we may get desperate in
3115 the future) this code will have to be changed.
3116
3117 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
3118 on the inode field, and then blockcnt field. This is just
3119 to keep the ordering of dir_blocks the same on all
3120 platforms when there are more than on missing directory
3121 blocks, which are indicated directories with holes, which
3122 are indicated with the block number being set to zero.
3123
3124Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3125
3126 * pass1.c (check_blocks, process_block): check_blocks() modified
3127 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
3128 the inode is a directory. process_block() now checks to
3129 see if a directory has a "hole", or missing block. If so,
3130 this fact is recorded in the directory block list so that
3131 the problem can be resolved in pass #2.
3132
3133 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
3134 allocate new blocks for directories with "holes". Called
3135 out of check_dir_block if a block in the directory block
3136 list is zero.
3137
3138 * pass3.c (get_lost_and_found): Move location of free(block) to
3139 prevent possible memory leak.
3140
3141Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3142
3143 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
3144 instead of alloca() --- alloca is not portable! Check to
3145 make sure the filename is not longer than EXT2_NAME_LEN,
3146 and offer to fix it by truncating it, since it should
3147 never happen.
3148
3149 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
3150 not portable!! In any case putenv() in some systems must
3151 take a static character array or malloc()'ed memory;
3152 passing memory allocated using alloca() to putenv() is not
3153 advisable.
3154
3155 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
3156 alloca() --- alloca() is not portable!!!
3157
3158Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
3159
3160 * pass1b.c (pass1c):
3161 * pass3.c (check_root, get_lost_and_found):
3162 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
3163 to read/write the directory block.
3164
3165Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
3166
3167 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
3168 make sure VMIN and VTIME are set correct.
3169
3170Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
3171
3172 * pass1.c (mark_block_used): Change to be an inline function.
3173 Assume that the block validity checks are already done,
3174 and use the fast variant of the bitmap functions.
3175
3176Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
3177
3178 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
3179 bounds of the bitmaps in advance, and then use the fast
3180 variant of e2fs_test_{block,inode}_bitmap.
3181
3182 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
3183 the bounds checking has already been done earlier.
3184
3185Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
3186
3187 * pass1.c (pass1): Allocate and free the block_illegal_map, which
3188 is used for shortcut processing in process_block.
3189 (mark_table_blocks): Initialize block_illegal_map with the
3190 filesystem blocks.
3191 (describe_illegal_block): New helper function that
3192 describes why a block is illegal.
3193 (process_block): Use block_illegal_map as a shortcut
3194 to determine whether a block is bad. Use
3195 describe_illegal_block to print out why the block is illegal.
3196
3197Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
3198
3199 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
3200
3201 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
3202 <mntent.h> if they don't exist. (Mostly so that "make
3203 depend" works.)
3204
3205 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
3206 it exists).
3207
3208 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
3209 exist.
3210
3211Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3212
3213 * pass2.c (process_bad_inode, check_for_zero_long,
3214 check_for_zero_char): Change long to u32, and char to u8.
3215
3216Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3217
3218 * util.c (inode_has_valid_blocks):
3219 * pass2.c (process_bad_inode):
3220 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
3221 LINUX_S_IS* instead of S_IS*.
3222
3223 * e2fsck.h: Don't #include <sys/stat.h>
3224
3225 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
3226 this program is pretty much useless if BLKFLSBUF isn't
3227 supported.)
3228
3229 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
3230 used.
3231
3232Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
3233
3234 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
3235 to allocate space for file names instead of using fixed size buffers.
3236 (process_bad_inode): Only check inode frag fields if
3237 HAVE_EXT2_FRAGS is defined (by configure).
3238 * pass1.c (pass1): Only check the inode frag fields if
3239 HAVE_EXT2_FRAGS is defined (by configure).
3240
3241 * e2fsck.c (check_mount): Only check for a mounted filesystem if
3242 HAVE_MNTENT_H is defined (by configure).
3243 (PRS): Use alloca to allocate the new path string, instead of
3244 having a fixed size buffer (which was the wrong size anyway).
3245 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
3246 is defined.
3247
3248 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
3249 defined (by configure).
3250
3251 * Makefile.in: Rewritten to conform to GNU coding standards and
3252 support separate compilation directories.
3253
3254Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
3255
3256 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
3257
Theodore Ts'of3db3561997-04-26 13:34:30 +00003258Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
3259
3260 * pass1.c (unwind_pass1): Clear the file type statistics counter
3261 when pass 1 needs to be restarted from scratch.
3262
3263 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
3264 being reallocated to blocks in the next block group,
3265 instead of the current block grup.
3266
3267 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
3268 inode.i_links_count is set.
3269
3270Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
3271
3272 * pass1.c (process_block): Add checks for if the block is
3273 trepassing on a superblock or group descriptor table.
3274
3275Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
3276
3277 * main.c (corrupt_msg): Extend the message which is printed out
3278 when the superblock is corrupt, to include the suggestion
3279 of using the -b option to specify an alternate superblock.
3280
3281Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
3282
3283 * badblocks.c (read_bad_blocks_file): If we are adding or
3284 replacing bad blocks in the bad blocks inode, sanity check
3285 the bad block inode first, and clear out any illegal blocks.
3286
3287 * pass2.c (check_name): Don't bomb out if the attempt to get the
3288 pathname of the containing directory returns an error; the
3289 directory may be too badly damaged to expect that
3290 ext2fs_get_pathname will always succeed. Use "???" if the
3291 pathname can't be obtained (it's only for a printf to the
3292 user anyway).
3293
3294 The name of the containing directory and the bad filename
3295 were incorrectly interchanged in the user message. Fixed.
3296
3297 * pass2.c (check_name, check_dir_block): Use a common static
3298 string for the unknown pathname.
3299
3300Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
3301
3302 * Fixed lots of printf formats to make sure that block and inode
3303 numbers are printed as unsigned integers.
3304
3305Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
3306
3307 * pass5.c (check_block_end): Fix calculation of how the last block
3308 in the block bitmap should be calculated.
3309
3310Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
3311
3312 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
3313 be an ext2fs_inode_bitmap, and free it properly.
3314
3315 * e2fsck.h
3316 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
3317 level to the superblock.
3318
3319Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
3320
3321 * e2fsck.c (usage): Fixed bogus usage message.
3322
3323Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
3324
3325 * pass1.c (process_bad_block): Fixed bug so that blocks in the
3326 backup superblocks and group descriptors are handled gracefully.
3327