blob: ab005b1a8bf7c379807aa7bf7b5848f4ed006f06 [file] [log] [blame]
Theodore Ts'od3128cc2003-06-24 18:06:03 -040012003-06-8 Theodore Ts'o <tytso@mit.edu>
2
3 * problem.c: Fix spelling error.
4
Theodore Ts'o113e4052003-05-17 21:00:46 -040052003-05-17 Theodore Ts'o <tytso@mit.edu>
6
7 * unix.c (show_stats), e2fsck.h: Use ngettext (abbreivated with
8 the macro P_(str1, str2, n)) to simplify the statistics
9 reporting.
10
Theodore Ts'o2a29f132003-05-05 12:08:47 -0400112003-05-05 Theodore Ts'o <tytso@mit.edu>
12
13 * unix.c (main): If --enable-testio-debug is set, then use the
14 test_io manager so we can watch what e2fsck is doing.
15
Theodore Ts'oa04eba32003-05-03 16:35:17 -0400162003-05-03 Theodore Ts'o <tytso@mit.edu>
17
Theodore Ts'oddc32a02003-05-03 18:45:55 -040018 * unix.c (show_stats): Remove uneeded use of _() around string
19 under #ifndef NLS
20
21 * problem.c: Mark two strings (PR_1_RELOC_TO and
22 PR_2_NON_UNIQUE_FILE) as not being printf format strings.
23 Fix typo (doubled 'is') in PR_2_FILE_ACL_BAD.
24
Theodore Ts'oa04eba32003-05-03 16:35:17 -040025 * Makefile.in: Add $(LIBINTL) to the link line so we can support
26 using the internal gettext library.
27
28 * e2fsck.h: Add #ifndef protection around LOCALEDIR definition.
29
Theodore Ts'o6177c412003-04-27 17:34:14 -0400302003-04-27 Theodore Ts'o <tytso@mit.edu>
31
32 * message.c (expand_at_expression): Fixed NLS support for message
33 abbreviations.
34
Theodore Ts'o71df0dc2003-04-21 16:17:09 -0400352003-04-21 Theodore Ts'o <tytso@mit.edu>
36
37 * Release of E2fsprogs 1.33
38
Theodore Ts'o520ead32003-04-19 13:48:27 -0400392003-04-19 Theodore Ts'o <tytso@mit.edu>
40
41 * rehash.c: Fix lint warnings by including string.h and ctype.h
42
43 * pass2.c (dict_de_cmp): Fix lint warnings by using const pointers.
44
45 * unix.c (e2fsck_simple_progress), e2fsck.h: Fix lint warnings by
46 using const pointers. Remove unused variables.
47
Theodore Ts'o12dd69f2003-04-17 21:55:38 -0400482003-04-17 Theodore Ts'o <tytso@mit.edu>
49
50 * rehash.c (name_cmp): Sort the deleted inodes to the end of the
51 list, for portability to systems that whose qsort does not
52 perform a stable sort.
53
Theodore Ts'obc34d6b2003-04-16 14:05:06 -0400542003-04-16 Theodore Ts'o <tytso@mit.edu>
55
56 * unix.c: Bracket progress bar output with control-A and control-B
57 characters. These characters are used as in-band
58 signalling to allow a logging program to filter out the
59 progress bar.
Theodore Ts'o908b7852003-04-16 15:20:13 -040060 (PRS): Use setvbuf instead of setbuf to force stdout and
61 stderr to be non-buffered when the stdout/stderr are a pipe.
Theodore Ts'o12dd69f2003-04-17 21:55:38 -040062 This fixes a cosmetic problem when using e2fsck under
63 logsave.
Theodore Ts'o908b7852003-04-16 15:20:13 -040064
Theodore Ts'offf45482003-04-13 00:44:19 -0400652003-04-12 Theodore Ts'o <tytso@mit.edu>
66
67 * unix.c: Add #ifdef around #include <sys/ioctl.h>
68
Theodore Ts'o2a77a782003-04-05 22:50:44 -0500692003-04-05 Theodore Ts'o <tytso@mit.edu>
70
71 * super.c (check_super_block): Update the global free block and
72 inode counters from the block group specific counters
73 quietly. This is needed for an experimental patch which
74 eliminates locking the entire filesystem when allocating
75 blocks or inodes; if the filesystem is not unmounted
76 cleanly, the global counts may not be accurate.
77
Theodore Ts'oaa75ecc2003-03-17 10:01:22 -0500782003-03-17 Theodore Ts'o <tytso@mit.edu>
79
80 * util.c: Explicitly declare e2fsck_global_ctx as extern for the
81 benefit of the Apple Darwin port.
82
Theodore Ts'o1d2eef42003-03-15 13:30:07 -0500832003-03-15 Theodore Ts'o <tytso@mit.edu>
84
85 * rehash.c (e2fsck_rehash_dir): If user specified the -n option,
86 skip trying to write out directory.
87 (e2fsck_rehash_directories): Fix the percentage
88 calculation in the progress bar.
89
Theodore Ts'ob0700a12003-03-14 01:43:56 -0500902003-03-14 Theodore Ts'o <tytso@mit.edu>
91
Theodore Ts'o12dd69f2003-04-17 21:55:38 -040092 * problem.c, problem.h (PR_2_REPORT_DUP_DIRENT): Add new problem
93 code.
Theodore Ts'o09266682003-03-14 22:19:10 -050094
95 * pass2.c (check_dir_block): Check for duplicate filenames within
96 a single directory block (because this is the easy case;
97 we don't currently check for duplicates that span
98 directory blocks, for now. Eventually for htree
99 directories we can do this by searching for all directory
100 blocks that have a hash overflow, and then searching the
101 adjacent blocks to find all other potential duplicates.)
102
Theodore Ts'oe71d8732003-03-14 02:13:48 -0500103 * iscan.c, scantest.c, unix.c: And #ifdef protection around
104 #include of malloc.h
105
Theodore Ts'ob0700a12003-03-14 01:43:56 -0500106 * rehash.c (duplicate_search_and_fix): Now search for duplicates
107 filenames, and either prompt to remove a complete
108 duplicate entry, or to rename a duplicate filename.
109 (e2fsck_rehash_dir): Use a progress bar to report
110 progress, and don't print all of the directory inodes as
111 they are optimized.
112
113 * problem.c, problem.h (PR_2_DUPLICATE_DIRENT,
114 PR_2_NON_UNIQUE_FILE): New problem codes.
115
116 * unix.c (e2fsck_simple_progress), e2fsck.h: New function which
117 can be called to provide specialized progress bars that
118 are not related to the top-level pass-based completion
119 percentage.
120
121 * pass3.c (e2fsck_adjust_inode_count), e2fsck.h: Export previously
122 static function.
123
Theodore Ts'o77be4d22003-03-06 12:39:55 -05001242003-03-06 <tytso@mit.edu>
125
126 * e2fsck.8.in: Fix minor nit in the -C option. (Addresses Debian
127 bug #173612)
128
Theodore Ts'of3640932003-03-01 19:47:44 -05001292003-03-01 Theodore Ts'o <tytso@mit.edu>
130
131 * Makefile.in, journal.c, unix.c: Use blkid functions to find the
132 journal from the UUID, and to interpret the device
133 specification.
134
135 * e2fsck.c: Free the blkid_cache when releasing the e2fsck context
136 structure.
137
138 * e2fsck.h: If strnlen is not present, define it as a macro which
139 calls e2fsck_strlen(). Add prototype for string_copy().
140 Add blkid_cache to e2fsck context, and make
141 filesystem_name, device_name, and journal_name be
142 non-const variables.
143
144 * pass1.c, pass2.c: Remove static strnlen function
145
146 * util.c (string_copy, e2fsck_strnlen): New functions
147
Theodore Ts'o19445ef2003-01-29 21:04:52 -05001482003-01-29 Theodore Ts'o <tytso@mit.edu>
149
150 * unix.c (usage): Make descripton -c be a bit more explicit
151
Theodore Ts'o4f489282003-01-22 18:28:15 -05001522003-01-22 Theodore Ts'o <tytso@mit.edu>
153
154 * pass1.c (check_blocks): Use the EXT2_I_SIZE macro.
155
Theodore Ts'ob92ae152003-01-02 16:53:54 -05001562003-01-02 Theodore Ts'o <tytso@mit.edu>
157
158 * unix.c (main): Detect if there is an attempt to run the journal
159 twice, and abort with an error if this is the case.
160 (Address IBM Bugzilla bug #1226)
161
Theodore Ts'oe34bf432002-12-18 18:28:10 -05001622002-12-18 Theodore Ts'o <tytso@mit.edu>
163
164 * pass2.c (strnlen): Provide strnlen if libc doesn't.
165
Theodore Ts'o8161a742003-01-02 16:36:44 -05001662003-11-19 Theodore Ts'o <tytso@mit.edu>
167
168 * unix.c (PRS): Print an error if more than one of the -p/-a, -n
169 or -y options are specified.
170
Theodore Ts'o54779c62002-11-13 07:00:16 -05001712002-11-12 Theodore Ts'o <tytso@mit.edu>
172
173 * problem.c: Make HTREE problems PR_PREEN_OK, so that we don't
174 abort an e2fsck after the filesystem has been mounted
175 using the 2.4 ext2 codebase.
176
Theodore Ts'o38513012002-11-09 15:00:56 -05001772002-11-09 Theodore Ts'o <tytso@mit.edu>
178
179 * Release of E2fsprogs 1.32
180
Theodore Ts'oae65b292002-11-08 20:08:48 -05001812002-11-08 Theodore Ts'o <tytso@mit.edu>
182
183 * Release of E2fsprogs 1.31
184
Theodore Ts'o299d7422002-11-08 11:10:28 -05001852002-11-08 <tytso@snap.thunk.org>
186
Theodore Ts'oc1637bd2002-11-08 15:55:17 -0500187 * unix.c (main): Fix a bug where e2fsck could erroneously mark a
188 filesystem as being valid if it was being checked and it
189 is interrupted with a ^C. (Bug introduced in e2fsprogs
190 1.28.)
191
Theodore Ts'o5e72cdb2002-11-08 15:35:13 -0500192 * unix.c (PRS), journal.c: Set the default level of journal
193 debugging to be 0, and allow the user to set the level of
194 journal debugging by using the E2FSCK_JBD_DEBUG
195 environment variable.
196
Theodore Ts'o299d7422002-11-08 11:10:28 -0500197 * pass1.c (new_table_block), super.c (check_super_block), swapfs.c
198 (swap_filesys): Clear EXT2_FLAG_MASTER_SB_ONLY to make
199 sure the backup superblocks and group descriptors are
200 updated when we make an important change to the
201 superblocks and/or group descriptors. (i.e., generating a
202 UUID, allocating filesystem metadata, or byte-swapping the
203 filesystem.)
204
Theodore Ts'oee895132002-11-07 16:16:55 -05002052002-11-07 Theodore Ts'o <tytso@mit.edu>
206
207 * e2fsck.h, unix.c (main, check_mount): Fix e2fsck so that it
208 returns the appropriate exit code, so that the boot
209 scripts will be told that they need to automatically
210 reboot.
211
Theodore Ts'obe93ef02002-10-31 18:38:55 -05002122002-10-31 Theodore Ts'o <tytso@mit.edu>
213
Theodore Ts'o5d823a42002-11-01 02:13:53 -0500214 * Release of E2fsprogs 1.30
215
2162002-10-31 Theodore Ts'o <tytso@mit.edu>
217
Theodore Ts'ob40ffd72002-10-31 19:30:24 -0500218 * unix.c (usage), e2fsck.8.in: Add the -D option to the usage and
219 command synopsis. (Addresses Debian bug #167108)
220
Theodore Ts'obe93ef02002-10-31 18:38:55 -0500221 * pass1.c (e2fsck_pass1): Check the superblock write time to see
222 whether or not we can safely do the LOW_DTIME checks.
223 (Addresses Sourceforge bug #620980)
224
Theodore Ts'o76dd5e52002-10-30 23:07:21 -05002252002-10-30 Theodore Ts'o <tytso@mit.edu>
226
Theodore Ts'o482afc42002-10-31 03:32:34 -0500227 * Makefile.in (install): Search all compression extensions when
228 deleting old man pages.
229
Theodore Ts'o76dd5e52002-10-30 23:07:21 -0500230 * pass1.c (mark_table_blocks): Fix bug in meta_bg support; only
231 mark blocks legacy group descriptor blocks up to
232 s_first_meta_bg.
233
Theodore Ts'oa49929b2002-10-20 00:58:08 -04002342002-10-20 Theodore Ts'o <tytso@valinux.com>
235
236 * pass1.c (mark_table_blocks): Add support for the meta_blockgroup
237 filesystem format.
238
Theodore Ts'o3e699062002-10-13 23:56:28 -04002392002-10-13 Theodore Ts'o <tytso@mit.edu>
240
241 * pass3.c (e2fsck_get_lost_and_found): Pass in mode 700 to
242 ext2fs_new_inode().
243
244 * unix.c (show_stats): Fix format bug if NLS is in use.
245
246 * journal.c, pass1.c, revoke.c, util.c: Fix gcc -Wall nits.
247
Theodore Ts'o64aecc42002-10-11 17:44:12 -04002482002-10-08 Theodore Ts'o <tytso@mit.edu>
249
250 * pass3.c (e2fsck_get_lost_and_found): Create the lost+found
251 directory with mode 0700.
252
Theodore Ts'o8132d842002-10-02 22:07:17 -04002532002-10-02 Theodore Y. Ts'o <tytso@mit.edu>
254
255 * pass2.c (parse_int_node, check_dir_block): Add byte-swap
256 functions around the htree code, so that it works on
257 big-endian machines.
258
259 * swapfs.c (swap_filesys): For PPC machines, byte-swap the bitmap,
260 since PPC big-endian filesystems were historically wierd.
261 This is just for the regression test, since no one
262 actually uses them anymore...
263
Theodore Ts'oad4fa462002-09-30 11:19:19 -04002642002-09-30 Theodore Ts'o <tytso@mit.edu>
265
266 * problem.c, problem.h (PR_2_HTREE_BAD_LIMIT,
267 PR_2_HTREE_BAD_COUNT, PR_2_HTREE_HASH_ORDER,
268 PR_2_HTREE_BAD_DEPTH): Add new problem codes.
269
270 * pass2.c (salvage_directory, check_dir_block): Avoid counting
271 directory entries twice during a directory salvage. Make
272 the salvaging algorithm smarter about directory entry size
273 overruns.
274 (parse_int_node): Add check to make sure the limit and
275 count fields in the node headers are sane. Also check
276 to make sure the hash table in ascending order.
277 (pass2, htree_depth): For all leaf nodes, determine their
278 depth in the tree, and make sure it matches with the depth
279 in the htree root information.
280
Theodore Ts'ofe5b72d2002-09-29 19:05:26 -04002812002-09-29 Theodore Ts'o <tytso@mit.edu>
282
Theodore Ts'oe8254bf2002-09-29 19:30:28 -0400283 * pass2.c (check_dir_block): Do a more paranoid check when trying
284 to determine whether or not a directory entry is a
285 completely empty leaf block or leaf node. Otherwise
286 e2fsck might get confused into thinking that a valid dxdir
287 was corrupted.
288
Theodore Ts'ofe5b72d2002-09-29 19:05:26 -0400289 * rehash.c (e2fsck_rehash_dir): Apply patch from Christopher Li
290 which avoids creating an empty directory entry at the end
291 of the directory block. This screws up earlier versions
292 of the indexed directory patch.
293
Theodore Ts'oe70ae992002-09-28 09:16:28 -04002942002-09-28 Theodore Ts'o <tytso@mit.edu>
295
296 * rehash.c (write_directory): Clear the index flag if by
297 reoptimizing the directory, we bring it back into a
298 non-indexed state.
299 (e2fsck_rehash_dir): Allow directories that contain two
300 blocks to be indexed. Otherwise when they grow, they
301 never will be indexed by the kernel.
302
303 * unix.c (main): Only update the master superblock; there's no
304 point updating the backup superblocks, and it speeds up
305 fsck slightly.
306
307 * pass2.c (salvage_directory): New function called by
308 check_dir_block() which is much more sophisticated about
309 how it salvages corrupted filesystems.
310
Theodore Ts'oc6633052002-09-24 01:26:50 -04003112001-09-24 Theodore Tso <tytso@mit.edu>
312
313 * Release of E2fsprogs 1.29
314
Theodore Ts'ocf3909e2002-09-06 10:14:12 -04003152002-09-06 Theodore Ts'o <tytso@mit.edu>
316
317 * rehash.c (copy_dir_entries): Fix bug which caused corrupted
318 directories if there are 4 or 8 bytes left over in a
319 directory page when optimizing/reindexing a directory.
320
Theodore Ts'o87ee8dc2002-08-31 03:02:57 -04003212001-08-31 Theodore Tso <tytso@thunk.org>
322
323 * Release of E2fsprogs 1.28
324
Theodore Ts'oceecbc72002-08-31 02:35:35 -04003252002-08-31 Theodore Ts'o <tytso@mit.edu>
326
327 * ehandler.c (e2fsck_handle_read_error): If the user asks to
328 ignore the error, offer to try forcing a write of the
329 block to the disk; sometimes this will cause the drive to
330 remap the bad block.
331
Theodore Ts'oea1959f2002-08-31 02:32:41 -04003322002-08-31 Theodore Ts'o <tytso@valinux.com>
333
334 * pass2.c (e2fsck_pass2): If this is a HTREE directory, sort the
335 dblist so that the first block of all of the directories
336 is handled first so we can read the hash version
337 information.
338 (check_dir_block): Examine the root node for correctness,
339 and offer to clear it if it is not correct. Also copy the
340 hash version to the dx_dir structure, so that the proper
341 hash function can be used for other blocks in the
342 directory.
343
344 * problem.c, problem.h (PR_2_HTREE_BAD_ROOT): Add new problem code.
345
Theodore Ts'oa3da9d12002-08-21 12:52:03 -04003462002-08-21 Theodore Ts'o <tytso@mit.edu>
347
348 * problem.c: Fix PR_1_RELOC_BLOCK_ALLOCATE message to explain that
349 it is necessary to find contiguous blocks in a particular
350 block group.
351
Theodore Ts'o0684a4f2002-08-17 10:19:44 -04003522002-08-17 Theodore Ts'o <tytso@mit.edu>
353
Theodore Ts'of044b4d2002-08-17 13:32:21 -0400354 * e2fsck.8.in: Add clarifying text describing how e2fsck works
355 with ext3 filesytems. (Addresses Debian bug #145044).
356
357 * pass1.c (handle_htree): Add support for EXT2_HASH_TEA
358
Theodore Ts'o0684a4f2002-08-17 10:19:44 -0400359 * e2fsck.h, e2fsck.c (e2fsck_allocate_context): Add new field to
360 the e2fsck context, ext_attr_ver, which specifies the EA
361 format version.
362
363 * unix.c (usage, parse_extended_opts, PRS), e2fsck.8.in: Add new
364 option -E, which allows the users to specify extended
365 options. Added ea_ver extended option.
366
367 * pass1.c (e2fsck_pass1_check_device_inode): Add ext2_filsys
368 argument to this function, so we can account for the
369 presence of extended attribute blocks attached to device
370 inodes.
371 (e2fsck_pass1_check_symlink, e2fsck_pass1): Take into
372 account the fact that symlinks can also have extended
373 attribute blocks.
374 (check_ext_attr): Don't be flexible about the EA format
375 version. Check against the version number in
376 ctx->ext_attr_ver.
377 (check_blocks): Check all inodes, so that we account for
378 extended attribute blocks belonging to special files.
379 Clean up i_size checks.
380
381 * pass1b.c (pass1b): Check all inodes, so that we account for
382 extended attribute blocks belonging to special files.
383 (delete_file_block): Use ext2fs_alloc_block_stats() to
384 update the filesystem statistics.
385 (delete_file): Attempt to decrement the extended
386 attribute refcount, and free the EA block if the count
387 hits zero.
388 (clone_file): Fixed bugs in EA handling. Don't call
389 block_iterate on inodes that don't have a valid i_block[]
390 array. Reread the base inode since it may have been
391 changed by ext2fs_block_iterate. When updating inodes as
392 part of cloning an EA block, write out the correct inode
393 structure.
394
395 * pass2.c (deallocate_inode_block, deallocate_inode): Use standard
396 ext2fs_alloc_*_stats functions to update the filesystem
397 statistics.
398 (deallocate_inode): Attempt to decrement the extended
399 attribute refcount, and free the EA block if the count
400 hits zero.
401 (e2fsck_process_bad_inode): Add extra argument to calls
402 to e2fsck_pass1_check_device_inode ().
403
404 * pass3.c (e2fsck_get_lost_and_found): Use standard
405 ext2fs_alloc_*_stats functions to update the filesystem.
406 statistics when creating /lost+found.
407 (adjust_inode_count): Remove debugging code that can never
408 be triggered.
409
410 * pass4.c (disconnect_inode): Add explanation about why we only
411 clear inodes that have no data blocks and no EA blocks.
412 Use ext2fs_inode_alloc_stats2 function to update the
413 filesystem statistics when clearing a zero-length inode.
414
415 * problem.c, problem.h (PR_1B_ADJ_EA_REFCOUNT,
416 PR_2_ADJ_EA_REFCOUNT): Add new problem codes.
417
418 * super.c (release_inode_block), (release_orphan_inodes): Use the
419 standard ext2fs_alloc_*_stats functions to update the
420 filesystem statistics.
421 (release_inode_blocks): Attempt to decrement the extended
422 attribute refcount, and free the EA block if the count
423 hits zero.
424
Theodore Ts'o838e7732002-08-01 12:37:00 -04004252002-08-01 Theodore Ts'o <tytso@mit.edu>
426
427 * dict.c, dict.h: New file from kazlib 1.20 which implements a
428 red-black tree
429
430 * pass1b.c: Massive changes to take advantage of dict.c. This
431 removes several O(n**2) algorithms from the rare case
432 where there are a large number of blocks claimed by
433 multiple inodes.
434
Theodore Ts'o542867f2002-07-24 07:42:02 -04004352002-07-24 Theodore Ts'o <tytso@mit.edu>
436
Theodore Ts'o850d05e2002-07-25 00:00:08 -0400437 * e2fsck.8.in, e2fsck.h, pass3.c (e2fsck_pass3), unix.c, rehash.c:
438 Add new option -D, which requests e2fsck to optimize all
439 directories. Rehash.c will also compress and sort
440 non-indexed directories.
441
442 * problem.c, problem.h: Rename PR_3A_REHASH_* to PR_3A_OPTIMIZE_*
443
444 * unix.c (PRS): Make sure the signal_cancel is registered without
445 SA_RESTART.
446
447 * rehash.c (e2fsck_rehash_dir, copy_dir_entries, calculate_tree):
448 Restructured code in e2fsck_rehash_dir into two new
449 subroutines to make the code more understandable/maintainable.
450 (set_root_node): Fixed bug which caused the root node to
451 be invalid on non-FILETYPE filesystems due to an
452 unitialized variable.
453 (calculate_tree): Fix bug where pointers which might get
454 invalidated if realloc() moves outdir->buf around.
455 (e2fsck_rehash_dir): Fix memory leak bug.
456
457 * pass3.c (e2fsck_get_lost_and_found), e2fsck.h, e2fsck.c:
458 Exported as a public interface a function for finding the
459 lost and found directory. Cache the location of the lost
460 and found directory in the e2fsck context structure.
461
Theodore Ts'o542867f2002-07-24 07:42:02 -0400462 * util.c (ask_yn, read_a_char): Note when the user has typed ^C,
463 and abort processing by longjmp'ing to ctx->abort_loc.
464
Theodore Ts'o3214a452002-07-23 12:00:00 -04004652002-07-23 Theodore Ts'o <tytso@mit.edu>
466
467 * pass1.c (e2fsck_pass1): If e2fsck is run with -n, don't create
468 the dirs_to_hash list, since we don't want to reindex
469 directories if the filesystem is opened read-only.
470
Theodore Ts'o4cae0452002-07-21 14:14:03 -04004712002-07-21 Theodore Ts'o <tytso@mit.edu>
472
473 * e2fsck.8.in: Document new exit code FSCK_CANCELED
474
475 * unix.c (PRS, signal_cancel): Capture SIGINT and SIGTERM signals
476 and set a flag in the e2fsck context indicating that
477 cancellation has been requested, so that e2fsck will exit
478 only at safe points.
479 (main): Change the exit handling so that if a cancellation
480 is requested, return FSCK_CANCELED (a new exit code 32).
481 e2fsck can now return more than one exit code as part of a
482 bitmask (as had been documented in the man page).
483
484 * pass2.c (e2fsck_pass2, check_dir_block), pass3.c (e2fsck_pass3),
485 pass4.c (e2fsck_pass4): Check to see if a cancellation was
486 requested, and abort processing if necessary.
487
Theodore Ts'ob7a00562002-07-20 00:28:07 -04004882002-07-19 Theodore Ts'o <tytso@mit.edu>
489
490 * rehash.c, Makefile.in: New file which rewrites directories using
491 the htree format.
492
493 * problem.c (fix_problem), problemP.h (PR_PREEN_NOHDR): Add option
494 which suppresses the header printed when in preen mode.
495
496 * pass3.c (e2fsck_pass3): If there are entries on the dirs_to_hash
497 list, call e2fsck_rehash_directories to reindex those
498 directories.
499 (e2fsck_expand_directory): Generalize the old
500 expand_dirctory() function so it can expand a directory to
501 a guaranteed minimum size.
502
503 * e2fsck.h (struct e2fsck_struct): Add the dirs_to_hash list. Add
504 new function prototypes for rehash.c and for
505 e2fsck_expand_directory().
506
507 * e2fsck.c (e2fsck_reset_context): Free the dirs_to_hash list.
508
509 * pass1.c (e2fsck_pass1): Initialize the dirs_to_hash list if the
510 htree feature is present in the filesystem.
511 (check_blocks): If a non-htree directory has more than 2
512 blocks, put it on the dirs_to_hash list.
513
514 * pass2.c (clear_htree): Add corrupt htree directories to the
515 dirs_to_hash list.
516
517 * problem.h, problem.c (PR_3A_PASS_HEADER, PR_3A_REHASH_ITER,
518 PR_3A_REHASH_DIR_ERR, PR_3A_REHASH_DIR_HEADER,
519 PR_3A_REHASH_DIR, PR_3A_REHASH_DIR_END): Add new problem codes
520
521 * pass2.c (parse_int_node), problem.c (PR_2_HTREE_BADBLK): Fix
522 problem display.
523
Theodore Ts'o62acaa12002-07-15 16:54:42 -04005242002-07-15 Theodore Ts'o <tytso@mit.edu>
525
526 * pass2.c (e2fsck_pass2): Use dx_dir->numblocks instead of
527 dx_dir->ino to indicate that a bad inode was cleared.
528
Theodore Ts'o503f9e72002-06-26 16:52:10 -04005292002-06-26 Theodore Ts'o <tytso@mit.edu>
530
531 * pass1.c (check_blocks): Move htree handling to handle_htree().
532 Factor out calls to ext2fs_write_inode so that it happens
533 if dirty_inode is non-zero.
534 (handle_htree): Add checks for invalid htree root, invalid
535 hash version, invalid hash version, and htree depth too deep.
536
537 * problem.h, problem.c (PR_1_HTREE_NODIR, PR_1_HTREE_BADROOT,
538 PR_1_HTREE_HASHV, PR_1_HTREE_INCOMPAT, PR_1_HTREE_DEPTH):
539 Add new problem codes.
540
541 * pass2.c (parse_int_node): Fix silly typo.
542 (check_dir_block): Change to use new ext2fs_dirhash()
543 function prototype.
544 (pass2): Fixed two minor bugs discovered by the test case:
545 Don't stop checking dxdir's after clearing a bad inode.
546 If there is a bad max hash, make sure the bad_dir flag
547 is set to make sure we try to clear inode.
548
Theodore Ts'o8fdc9982002-06-25 23:26:34 -04005492002-06-25 Theodore Ts'o <tytso@mit.edu>
550
551 * e2fsck.c (e2fsck_reset_context): Free the dx_dirinfo structure.
552
553 * message.c: Add new abbrevations @h and @p, "HTREE directory
554 inode" and "problem in".
555
556 * pass1.c (check_blocks): If the inode has the INDEX_FL flag,
557 register the block into the indexed directory data
558 structures. Or if the filesystem doesn't have the
559 DIR_INDEX flag, offer to clear the INDEX_FL.
560
561 * pass2.c (e2fsck_pass2, parse_int_node): Add support check htree
562 directories (we don't check all possible corruptions yet).
563
564 * problem.h, problem.h (PR_1_HTREE_SET, PR_2_HTREE_NOTREF,
565 PR_2_HTREE_DUPREF, PR_2_HTREE_MIN_HASH, PR_2_HTREE_MAX_HASH,
566 PR_2_HTREE_CLEAR, PR_2_HTREE_FCLR, PR_2_HTREE_BADBLK): Add
567 new problem codes.
568
569 * unix.c (main): If ENABLE_HTREE is not defined, complain if the
570 filesystem has the dir_index feature.
571
572 * Makefile.in, e2fsck.h, dx_dirinfo.c: New file (and group of
573 functions) which keeps track of blocks in HTREE directory
574 blocks.
575
Andreas Dilgerb21bf262002-06-10 11:05:56 -06005762002-05-22 Andreas Dilger <adilger@clusterfs.com>
577
578 * super.c (check_superblock): Check that the number of inodes and
579 blocks in a group is less than 2^16, so that the free inode
580 and block counts for a group fit into the group descriptor
581 table fields. Any more than that would need a COMPAT flag.
582
Theodore Ts'o0d634672002-05-22 00:22:38 -04005832002-05-22 Theodore Ts'o <tytso@mit.edu>
584
585 * pass1.c (check_ext_attr): Update to support the V2 Bestbits EA
586 format. We automatically determine from the first EA
587 block we visit whether we are using the V1 or V2 format.
588
Theodore Ts'oda307042002-05-21 21:19:14 -04005892002-05-21 Theodore Ts'o <tytso@mit.edu>
590
591 * pass1.c (process_block): If an inode has too many blocks or
592 is too big, then offer to truncate the inode.
593 (check_blocks): Don't bother checking the size to see if
594 it's too big, since that's just a symptom, not the disease
595 (which we're now appropriately checking in process_block).
596
597 * problem.c, problem.h: Add new problem codes PR_1_INODE_TOOBIG,
598 PR_1_TOOBIG_DIR, PR_1_TOOBIG_REG, PR_1_TOOBIG_SYMLINK, and
599 add the latch code PR_LATCH_TOOBIG.
600
Theodore Ts'obcf9c5d2002-05-21 09:14:17 -04006012002-05-20 Theodore Ts'o <tytso@mit.edu>
602
603 * e2fsck.h, pass1.c (e2fsck_pass1_check_symlink), pass2.c
604 (e2fsck_process_bad_inode): Add an extra
605 argument so a scratch buffer can be passed into the
606 function.
607
608 * pass1.c (e2fsck_pass1_check_device_inode,
609 e2fsck_pass1_check_symlink): If the EXT2_INDEX_FL flag is
610 set, then the device/FIFO is invalid.
611 (check_immutable): Don't check for EXT2_INDEX_FL; we take
612 care of that elsewhere now.
613 (e2fsck_pass1): Check to see if the symlink is valid
614 before we offer to clear any immutable bits. This matches
615 the order in which we check other special files.
616
617 * pass2.c (e2fsck_pass2): Allocate a bigger scratch buffer so we
618 can pass part of it to e2fsck_process_bad_inode.
619
620 * pass4.c (e2fsck_pass4): If we need to call
621 e2fsck_process_bad_inode(), allocate the necessary scratch
622 buffer.
623
624 * problem.h, problem.c: Change PR_2_SYMLINK_SIZE to be
625 PR_2_INVALID_SYMLINK, and change the text
626 accordingly. Revert the text change for PR_1_SET_IMMUTABLE
627 since we no longer check for EXT2_INDEX_FL in
628 check_immutable().
629
6302002-05-18 Andreas Dilger <adilger@clusterfs.com>
631
632 * pass1.c (e2fsck_pass1_check_symlink): Remove checks of
633 immutable/append-only checks, since this is handled by
634 check_immutable. For non-fast symlinks, read in the
635 data block and check the length to make sure it
636 matches with the inode size.
637 (check_immutable): Generalize to also check for the
638 EXT2_INDEX_FL flag.
639 (check_blocks): For non-regular files, signal a bad inode
640 size if i_size_high is non-zero.
641
642 * pass2.c: Only count large files if they are regular files
643 (not just if they aren't directories).
644
645 * problem.c, problem.h: Change comment for PR_2_SYMLINK_SIZE
646 to indicate that it can be triggered by any symlink,
647 not fast symlink. Change text for PR_1_SET_IMMUTABLE
648 to indicate that it the EXT2_INDEX_FL was set.
649
Theodore Ts'o31e29a12002-05-17 10:53:07 -04006502002-05-17 Theodore Ts'o <tytso@mit.edu>
651
652 * pass1.c (e2fsck_pass1): When calculating max_sizes, omit capping
653 this value by the calculated value of max_sect_sizes.
654 The inode may be a sparse inode, and the limit of
655 max_sect_sizes assumed a non-sparse inode and a limit
656 based on a 32-bit i_blocks field measured in 512 sectors.
657
658 * super.c (check_super_block): Fix check for s_log_block_size so
659 that takes into account fact that there is an offset of
660 EXT2_MIN_BLOCK_LOG_SIZE.
661
662 * pass1.c: Allocate max_sizes array to be big enough to support
663 the larger block sizes.
664
6652002-05-16 Andreas Dilger <adilger@clusterfs.com>
666
667 * unix.c (main), util.c (get_backup_sb): Use EXT2_MAX_BLOCK_SIZE
668 instead of using a hardcoded value of 4096.
669
670 * super.c (check_super_block): Change checks for s_log_block_size
671 s_log_frag_size so they support the larger block sizes.
672
673 * pass1.c (e2fsck_pass1): Calculate max_sizes array for block
674 sizes up to EXT2_MAX_BLOCK_SIZE (to support block sizes
675 greater than 4k).
676
Theodore Ts'oa8e77242002-03-08 03:12:14 -05006772002-03-08 Theodore Tso <tytso@mit.edu>
678
679 * Release of E2fsprogs 1.27
680
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05006812002-03-07 Theodore Tso <tytso@mit.edu>
682
683 * journal.c, pass5.c, revoke.c: Fix gcc -Wall complaints
684
6852002-03-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'of2d5c932002-03-07 03:13:07 -0500686
687 * unix.c (main): Don't close the filesystem before calling
688 fatal_error(); this just causes a needless warning about a
689 bad I/O manager magic number.
690
691 * journal.c (e2fsck_check_ext3_journal): Offer to clear the inode
692 in case the journal is too small, or the inode number in
693 the superblock doesn't appear to be random.
694
Theodore Ts'o546a1ff2002-03-07 23:52:56 -05006952002-03-06 Theodore Tso <tytso@mit.edu>
Theodore Ts'of1226322002-03-07 02:47:07 -0500696
697 * problem.h, problem.c: PR_5_BLOCK_RANGE_UNUSED,
698 PR_5_BLOCK_RANGE_USED, PR_5_INODE_RANGE_UNUSED,
699 PR_5_INODE_RANGE_USED: Add new problem codes.
700
701 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Collapse
702 reporting of adjacent blocks and inodes into a range.
703
Theodore Ts'o14308a52002-03-05 03:26:52 -05007042002-03-04 Philipp Thomas <pthomas@suse.de>
705
706 * unix.c (main): Newer libintl needs LC_CTYPE to be set in
707 addition to LC_MESSAGES.
708
Theodore Ts'o57173d02002-02-26 14:59:39 -05007092002-02-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'ob9f40922002-02-24 03:08:57 -0500710
711 * Makefile.in (install): Install hard links for man pages for
712 fsck.ext2 and fsck.ext3. Remove any compressed man
713 pages before installing the man pages.
714
Theodore Ts'o57173d02002-02-26 14:59:39 -05007152002-02-22 Theodore Tso <tytso@mit.edu>
Theodore Ts'od1a21822002-02-22 00:17:59 -0500716
717 * journal.c: Improve code maintainability and reduce code size by
718 moving common code paths in e2fsck_journal_init_dev() and
719 e2fsck_journal_init_inode() into e2fsck_get_journal().
720 Also fixed a memory leak in recover_ext3_journal().
721
722 * super.c (release_orphan_inodes): Fix memory leak.
723
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05007242002-02-03 Theodore Tso <tytso@thunk.org>
725
726 * Release of E2fsprogs 1.26
727
7282001-12-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o3ed57c22001-12-24 15:01:59 -0500729
730 * unix.c (PRS): Don't allow the -c and -l/-L options to be
731 specified at the same time.
732
733 * e2fsck.h (E2F_OPT_WRITECHECK), unix.c (PRS),
734 badblocks.c (read_bad_blocks_file): If two -c options are
735 specified, then perform a non-destructive read/write scan
736 of the disk.
737
738 * e2fsck.8.in: Document the double -c option; also encourage users
739 to use -c instead of the -l/-L options since it's too hard
740 for users to get things like the blocksize parameter correct.
741
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05007422001-12-23 Theodore Tso <tytso@mit.edu>
Theodore Ts'o19007e52001-12-23 19:33:51 -0500743
Theodore Ts'of1a17612001-12-23 22:27:52 -0500744 * util.c (get_backup_sb): This function now searches for the
745 backup superblock by iterating over possible blocksizes
746 instead of defaulting a guess of 8193 if the superblock
747 isn't available.
748
749 * message.c (expand_percent_expression), unix.c (main): Pass in
750 new parameters to get_backup_sb. Also, in unix.c, use the
751 blocksize paramter in the e2fsck context structure instead
752 of using a static variable, since get_backup_sb wants to
753 be able to set the blocksize paramter.
754
755 * e2fsck.h: Update function prototype for get_backup_sb; also add
756 the blocksize parameter to the e2fsck context structure.
757
Theodore Ts'o19007e52001-12-23 19:33:51 -0500758 * Makefile.in, jfs_user.h: Move linux/jbd.h to
759 ext2fs/kernel-jbd.h, to avoid using the system header
760 file version of hbd.h when using diet glibc (since it
761 forcibly adds /usr/include to the beginning of the
762 include search path.)
763
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05007642001-12-21 Theodore Tso <tytso@mit.edu>
Theodore Ts'od37066a2001-12-21 23:28:54 -0500765
Theodore Ts'o6a50c5e2001-12-21 23:29:35 -0500766 * problem.c (fix_problem): Use ctx->filesystem_name if the
767 ctx->device_name is NULL.
768
Theodore Ts'od37066a2001-12-21 23:28:54 -0500769 * journal.c (e2fsck_check_ext3_journal): Give the opportunity to
770 run the journal even if recovery flag is cleared. If
771 we're using a backup superblock, run the journal by
772 default.
773
774 * e2fsck.h (E2F_OPT_FORCE), unix.c (PRS, check_if_skip): Use a
775 bitfield in the e2fsck context flags word to indicate
776 whether or not a check should be forced. This allows the
777 journal code to set the option if necessary to force a
778 filesystem check.
779
780 * problem.h, problem.c: Remove PR_0_JOURNAL_RESET_JOURNAL, and add
781 PR_0_JOURNAL_RUN and PR_0_JOURNAL_RUN_DEFAULT. Update
782 problem decription texts.
783
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05007842001-12-16 Theodore Tso <tytso@mit.edu>
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500785
Theodore Ts'o4ea7bd02001-12-16 23:23:37 -0500786 * e2fsck.h (ext2fs_get_refcount_size), unix.c (check_mount, PRS),
787 pass1.c (adjust_extattr_refcount),
788 ea_refcount.c (ea_refcount_create): Fix gcc -Wall nits.
789
Theodore Ts'o8cf93332001-12-16 02:23:36 -0500790 * recovery.c, revoke.c: Update to versions from 2.4.17-pre8.
791
792 * journal.c, jfs_user.h: Update support code for new version of
793 recover.c and revoke.c. Fix support for filesystems with
794 external journals.
795
Gabriel Paubertb3b3d462001-11-30 13:45:28 +01007962001-11-30 Gabriel Paubert <paubert@iram.es>
797
798 * journal.c (e2fsck_journal_load): Fix an endianness bug.
799
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008002001-11-26 Theodore Tso <tytso@mit.edu>
Theodore Ts'o24bfb442001-11-26 15:51:14 -0500801
802 * super.c (check_super_block): Make sure that if the inode table
803 or allocation bitmap is zero, that it is marked as
804 invalid, so that in pass #1, a new bitmap/inode table gets
805 properly allocated. (Addresses Debian Bug #116975)
806
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008072001-11-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o1e9a7e02001-11-24 16:40:57 -0500808
809 * e2fsck.8.in: Fix minor typo in man page and clarify device
810 specification.
811
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008122001-10-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'o62e3e7f2001-10-07 02:13:30 -0400813
814 * journal.c (clear_v2_journal_fields, e2fsck_journal_load): If the
815 V2 fields are set on a V1 journal superblock, or an
816 internal V2 journal has s_nr_users is non-zero, clear the
817 entire journal superblock beyond the V1 superblock. This
818 fixes botched V1->V2 updates.
819
820 * problem.c, problem.h (PR_0_CLEAR_V2_JOURNAL): Add new problem code.
821
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008222001-09-20 Theodore Tso <tytso@mit.edu>
Theodore Ts'o773fd8a2001-10-06 21:26:27 -0400823
824 * e2fsck.h, journal.c (e2fsck_move_ext3_journal): Add new function
825 which will automatically relocate the ext3 journal from a
826 visible file to an invisible journal file if the
827 filesystem has been opened read/write.
828
829 * super.c (check_super_block): Add call to e2fsck_move_ext3_journal
830
831 * problem.c, problem.h (PR_0_MOVE_JOURNAL, PR_0_ERR_MOVE_JOURNAL):
832 Add new problem codes.
833
Theodore Ts'ofbf91112001-09-20 10:47:47 -04008342001-09-20 Theodore Tso <tytso@thunk.org>
835
836 * Release of E2fsprogs 1.25
837
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -05008382001-09-19 Theodore Tso <tytso@mit.edu>
Theodore Ts'oae6cdcf2001-09-19 15:17:25 -0400839
840 * unix.c (main): If a superblock is specified explicitly by the
841 user, don't try to automatically fall back to an
842 alternate superblock.
843
Theodore Ts'ofb707752001-09-04 15:00:37 -04008442001-09-02 Theodore Tso <tytso@thunk.org>
845
846 * Release of E2fsprogs 1.24a
847
Theodore Ts'o109624a2001-08-31 00:59:55 -04008482001-08-30 Theodore Tso <tytso@thunk.org>
849
850 * Release of E2fsprogs 1.24
851
Theodore Ts'ob1f204f2001-08-30 16:42:09 -04008522001-08-30 Theodore Tso <tytso@valinux.com>
853
854 * pass1.c (e2fsck_pass1): For EXT2_RESIZE_INO, allow its i_mode to
855 either be zero or a regular file (for compatibility with
856 Andreas's on-line resizing programs).
857
Theodore Ts'o53abed02001-08-27 12:18:16 -04008582001-08-27 Theodore Tso <tytso@valinux.com>
859
Theodore Ts'o0f8973f2001-08-27 12:44:23 -0400860 * unix.c (main): Remove EXT2FS_VERSION from the version display,
861 since it only confuses people.
862
Theodore Ts'o53abed02001-08-27 12:18:16 -0400863 * pass1.c (strnlen): Provide strnlen if libc doesn't.
864
Theodore Ts'o943ed872001-08-27 12:29:22 -04008652001-08-15 Theodore Tso <tytso@valinux.com>
866
867 * Release of E2fsprogs 1.23
868
Theodore Ts'o85645a6f2001-08-13 06:11:39 -04008692001-08-13 Theodore Tso <tytso@valinux.com>
870
Theodore Ts'oeb4ab512001-08-13 10:58:41 -0400871 * super.c (release_orphan_inodes): If the filesystem contains
872 errors, don't run the orphan * list, since the orphan list
873 can't be trusted.
874
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400875 * pass1.c (check_size): Fix logic in check_size; the previous code
876 only offered to clear the inode size fields if both size
877 and i_size_high were zero.
Theodore Ts'oa40ecbb2001-08-13 06:15:36 -0400878 (e2fsck_pass1_check_device_inode): If i_blocks is
879 non-zero, then assume that the device/socket/fifo inode
880 is bogus.
Theodore Ts'o85645a6f2001-08-13 06:11:39 -0400881
Theodore Ts'o2b94c652001-08-09 04:08:52 -04008822001-08-09 Theodore Tso <tytso@valinux.com>
883
Theodore Ts'oa4742692001-08-09 04:14:04 -0400884 * pass1.c, pass2.c, problem.c, problem.h: Fix bug introduced by
885 Andreas's symlink code; check_blocks() was unconditionally
886 testing inode_bad_map without checking to see if it
887 existed first. Fixed problem a different way; we now no
888 longer check inode_bad_map at all, since the file might
889 not get deleted in pass 2 anyway. We move the large file
890 feature reconciliation code to to e2fsck_pass2(), and in
891 deallocate_inode() in pass2.c, we decrement the large
892 files counter if we're about to delete a large file.
893
Theodore Ts'o2b94c652001-08-09 04:08:52 -0400894 * unix.c (show_stats): Print the number of large files in verbose
895 mode.
896
Theodore Ts'oc0a083f2001-08-07 10:17:41 -04008972001-08-07 Theodore Tso <tytso@valinux.com>
898
899 * journal.c (recover_ext3_journal): If s_errno is set in the
900 journal superblock, set the EXT2_ERROR_FS flag in the
901 filesystem superblock after the journal is run.
902
Theodore Ts'obd512b62001-08-04 21:33:03 -04009032001-08-04 Andreas Dilger <root@lynx.adilger.int>
904
905 * message.c: Change comments for %D and %d expansion in e2fsck
906 problem codes. It was not consistent which was for dirent
907 expansion, and which was for directory number expansion.
908
909 * problem.c (PR_2_FINAL_RECLEN, PR_2_BAD_FILETYPE): Fix problem
910 codes which got caught by the confusion between %D and %d.
911
Theodore Ts'od007cb42001-08-04 20:39:39 -04009122001-08-04 Theodore Tso <tytso@valinux.com>
913
914 * problem.c (PR_2_SYMLINK_SIZE): Change description to make it
915 more clear (and remove %s expansion). Also add missing
916 periods to the end of a number of problem descriptions.
917
918 * pass2.c (e2fsck_process_bad_inode): Remove unneeded problem
919 context string set now that the problem description for
920 PR_2_SYMLINK_SIZE has been changed.
921
922 * pass1.c (e2fsck_pass1_check_symlink): Consolidate some checks,
923 and check the validity of the symlink block here (so that
924 we detect this case here instead of later). Also use
925 sizeof(inode->i_block) instead EXT2_LINK_DIR.
926
Theodore Ts'o83e6ac82001-07-30 16:29:52 -04009272001-07-30 Theodore Tso <tytso@valinux.com>
928
929 * unix.c (check_mount): Remove the code which tested for the root
930 filesystem being mounted read-only, and depend on the
931 results flags from ext2fs_check_if_mounted.
932
Theodore Ts'o1e165262001-07-29 11:48:10 -04009332001-07-29 Theodore Tso <tytso@valinux.com>
934
Theodore Ts'o6d222f32001-07-29 12:06:58 -0400935 * unix.c (check_if_skip): Free the e2fsck context structure on a
936 normal clean filesystem exit, to make it easier to find
937 real memory leaks.
938 (PRS): Only update the path to include /sbin at the
939 beginning if the -c option is given, again to make it
940 easier to find memory leaks.
Theodore Ts'o0628ae32001-07-29 12:26:46 -0400941 (main): Move the final print_resource_track call after the
942 filesystem and the context are freed.
Theodore Ts'o6d222f32001-07-29 12:06:58 -0400943
944 * journal.c (e2fsck_journal_init_dev): Avoid memory leak if we
945 need to search for the journal device.
946 (e2fsck_journal_release): Free the journal IO channel when
947 we release the journal handle, to avoid a memory leak.
948
Theodore Ts'o1e165262001-07-29 11:48:10 -0400949 * e2fsck.c (e2fsck_reset_context): Fix bug; only close the io
950 channel if it is *different* from the filesystem io
951 channel.
952
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -04009532001-07-27 Theodore Tso <tytso@valinux.com>
954
Theodore Ts'oa092c562001-07-27 22:40:09 -0400955 * problem.c (PR_1_SET_IMMUTABLE): Clarify problem message.
956
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -0400957 * pass1.c (e2fsck_pass1): Check for symlinks that have the
958 immutable flag set (and offer to clear them).
959
Theodore Ts'o24ceb242001-07-26 09:02:56 -04009602001-07-26 Theodore Tso <tytso@valinux.com>
961
962 * pass1.c (e2fsck_pass1): Free ctx->block_ea_map at the end of
963 pass 1.
964
Theodore Ts'o14fe1c32001-07-25 19:48:24 -04009652001-07-25 Theodore Tso <tytso@valinux.com>
966
967 * pass1.c (check_ext_attr): Skip zero-length EA entries.
968
969 * problem.c: PR_1_EA_ALLOC_COLLISION shouldn't abort, but should
970 prompt to clear the EA block.
971
Theodore Ts'oadee8d72001-07-23 00:17:49 -04009722001-07-22 Theodore Tso <tytso@valinux.com>
973
974 * journal.c (ll_rw_block): Use ctx->journal_io instead of the
975 filesystem's io_channel.
976 (e2fsck_journal_init_dev): New function which supports
977 initialization of the external journal.
978 (e2fsck_get_journal): Remove code which flagged an error
979 if the superblock reported the use of an external journal.
980 (ext3_journal_via_mount): Remove unsued, #ifdefed out function.
981
982 * problem.c, problem.h: Removed error codes no longer used
983 (PR_0_JOURNAL_UNSUPP_DEV, PR_0_JOURNAL_BAD_DEV,
984 PR_0_JOURNAL_UNSUPP_UUID) and replace them with new error
985 codes related with failures in loading the external
986 journal (PR_0_JOURNAL_UNSUPP_MULTIFS,
987 PR_0_CANT_FIND_JOURNAL, PR_0_EXT_JOURNAL_BAD_SUPER).
988 Also changed the text assocated with PR_0_JOURNAL_BAD_UUID
989 to reflect the case where the external journal isn't
990 correct for this filesystem.
991
992 * unix.c (PRS), e2fsck.8.in: Add new option -j which allows
993 the user to specify the pathname to find the external journal.
994
995 * e2fsck.c (e2fsck_reset_context): Close journal_io if it isn't
996 the same as the filesystem io_channel.
997
998 * e2fsck.h: Add new fields (journal_io and journal_name) in the
999 context structure to support external journals.
1000
Theodore Ts'od3124012001-07-20 14:13:49 -040010012001-07-20 Theodore Tso <tytso@valinux.com>
1002
1003 * unix.c (main): Add an explicit warning when the filesystem is
1004 left not completely fixed when e2fsck exits. (Addresses
1005 Debian bug #104502.)
1006
Theodore Ts'o55fd07e2001-07-19 16:31:25 -040010072001-07-19 Theodore Tso <tytso@valinux.com>
1008
1009 * pass1.c (check_ext_attr): The entire EA block is now checked to
1010 make sure that parts of the EA block aren't being used for
1011 multiple purposes.
1012
1013 * Makefile.in e2fsck.h, region.c: New file which is used to detect
1014 collisions in extended attribute block.
1015
1016 * problem.h, problem.c (PR_1_EA_MULTI_BLOCK, PR_1_EA_ALLOC_REGION,
1017 PR_1_EA_ALLOC_COLLISION, PR_1_EA_BAD_NAME,
1018 PR_1_EA_BAD_VALUE): Add new problem codes.
1019
Theodore Ts'o3c6b8972001-07-10 14:27:58 -040010202001-07-10 Theodore Tso <tytso@valinux.com>
1021
1022 * journal.c (e2fsck_run_ext3_journal): Only call ext3_flush() if
1023 the superblock is dirty.
1024
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -040010252001-07-07 Theodore Tso <tytso@valinux.com>
1026
Theodore Ts'o7b63fff2001-07-07 23:01:31 -04001027 * pass1b.c (pass1b, process_pass1b_block): Change the num_bad
1028 field calculation so that it only counts EA block entries
1029 as a single multiply claimed block (since once we clone
1030 the EA blocks for one inode, we fix the problem for all of
1031 the other inodes). Also, I moved the num_bad calculation
1032 from process_pass1b_block to the end of pass1b. This
1033 fixes a *significant* performance bug in pass1b which hit
1034 people who had to had a lot of multiply claimed blocks.
1035 (Can you say O(n**3) boys and girls? I knew you could...
1036 Fortunately, this case didn't happen that much in actual
1037 practice.)
1038
1039 * pass1.c (e2fsck_pass1): Defer inodes which have an extended
1040 attribute block for later processing to avoid extra seeks
1041 across the disk.
1042 (process_inode_cmp): If there is no indirect block, sort
1043 by the extended attribute (i_file_acl) block.
1044
Theodore Ts'o7abb2bd2001-07-07 13:20:34 -04001045 * pass1b.c (clone_file_block): Fix bugs when cloning extended
1046 attribute blocks. Moved free of block_buf to after the
1047 code which clones the extattr block, and fixed logic for
1048 changing pointers to the extended attribute field in the
1049 inodes which were affected.
1050 (decrement_badcount): New function which is used whenever
1051 we need to decrement the number of files which claim a
1052 particular bad block. Fixed bug where delete_file wasn't
1053 checking check_if_fs_block() before clearing the entry in
1054 block_dup_map. This could cause a block which was claimed
1055 by multiple files as well as the filesystem metadata to
1056 not be completely fixed.
1057
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -04001058 * pass1.c (adjust_extattr_refcount): Add new function which
1059 adjusts the reference counts of extended attribute blocks
1060 if needed, both up and down.
1061 (e2fsck_pass1): If the refcount or refcount_extra
1062 structure are present, call adjust_extattr_refcount(),
1063 and free it afterwards.
1064
1065 * problem.h, problem.c (PR_1_EXTATTR_READ_ABORT,
1066 PR_1_EXTATTR_REFCOUNT, PR_1_EXTATTR_WRITE): Add new
1067 problem codes.
1068
Theodore Ts'o342d8472001-07-02 11:54:09 -040010692001-07-02 Theodore Tso <tytso@valinux.com>
1070
1071 * pass1.c (e2fsck_pass1, check_ext_attr, check_blocks): Add
1072 initial support for scanning extended attribute blocks.
1073
1074 * e2fsck.c (e2fsck_reset_context): free extended attribute
1075 refcount structure.
1076
1077 * e2fsck.h: Add new fields for accounting for the extended
1078 attribute blocks.
1079
1080 * Makefile.in, ea_refcount.c, e2fsck.h: Add new file which
1081 implements a reference count abstraction.
1082
1083 * problem.c, problem.h: Add new problem codes PR_1_ALLOCATE_REFCOUNT,
1084 PR_1_READ_EA_BLOCK, PR_1_BAD_EA_BLOCK, PR_2_FILE_ACL_BAD
1085
1086 * message.c: Add "@a" as an abbreviation for "extended attribute"
1087
1088 * pass1b.c (clone_file): Add code which handles cloning an
1089 extended attribute block.
1090
1091 * pass1b.c (delete_file):
1092 * pass2.c (deallocate_inode): If the inode contains an extended
1093 attribute block in the file_acl field, clear it and
1094 deallocate the block.
1095
10962001-06-28 Theodore Tso <tytso@valinux.com>
1097
1098 * pass2.c (e2fsck_process_bad_inode): Deal with inodes which are
1099 marked bad because of an invalid file_acl (either because
1100 EXT2_FEATURE_COMPAT_EXT_ATTR is not set, or because the
1101 block number in file_acl is bad.
1102
Theodore Ts'o636a9542001-06-29 17:57:26 -040011032001-06-29 Theodore Tso <tytso@valinux.com>
1104
1105 * unix.c (show_stats): Use long long to calculate the percentage
1106 of the number of blocks in use in the filesystem.
1107
Theodore Ts'o67960132001-06-23 00:16:37 -040011082001-06-23 Theodore Tso <tytso@valinux.com>
1109
1110 * Release of E2fsprogs 1.22
1111
Theodore Ts'od90f3492001-06-22 21:01:17 -040011122001-06-22 Theodore Tso <tytso@valinux.com>
1113
1114 * flushb.c: Use platform independent method of defining the
1115 BLKFLSBUF ioctl. Also include sys/mount.h since on newer
1116 platforms BLKFLSBUF is defined there.
1117
Theodore Ts'o42475e22001-06-22 20:35:38 -040011182001-06-19 Theodore Tso <tytso@valinux.com>
1119
1120 * super.c (release_inode_blocks): Don't try to release the blocks
1121 if the orphaned inode is a device file, symlink, or some
1122 other kind of special file that doesn't have a block list.
1123
Theodore Ts'of4f75ba2001-06-16 01:14:28 +000011242001-06-15 Theodore Tso <tytso@valinux.com>
1125
1126 * Release of E2fsprogs 1.21
1127
Theodore Ts'ob6a08072001-06-14 01:16:17 +000011282001-06-13 Theodore Tso <tytso@valinux.com>
1129
1130 * unix.c (check_if_skip): Adapted patch from Andreas Dilger which
1131 prints the number of mounts or days elapsed since the last
1132 check when e2fsck is forced to check an otherwise clean
1133 filesystem.
1134
Theodore Ts'ocbbf0312001-06-13 00:12:04 +000011352001-06-12 Theodore Tso <tytso@valinux.com>
1136
1137 * badblocks.c: Stop using the compatibility badblocks function,
1138 and use the ext2fs_badblocks_* functions instead.
1139
Theodore Ts'o5df55d72001-06-11 07:00:04 +000011402001-06-11 Theodore Tso <tytso@valinux.com>
1141
Theodore Ts'o3034f622001-06-11 15:17:45 +00001142 * unix.c (PRS): Fix bug introduced in 1.20 which broke the -F
1143 flag.
1144
Theodore Ts'o5df55d72001-06-11 07:00:04 +00001145 * Makefile.in: Add message.c and swapfs.c to the list of source
1146 files to build the make depend.
1147
1148 * swapfs.c, unix.c: Only support the -s and -S options to e2fsck
1149 if ENABLE_SWAPFS is defined.
1150
Theodore Ts'o725c4742001-06-08 11:55:44 +000011512001-06-08 Theodore Tso <tytso@valinux.com>
1152
1153 * recover.c, revoke.c: Synchronize with ext3 0.7a
1154
Theodore Ts'ofdbdea02001-06-02 04:26:26 +000011552001-06-02 Theodore Tso <tytso@valinux.com>
1156
Theodore Ts'oa479fe62001-06-02 04:50:14 +00001157 * recovery.c (scan_revoke_records): Fix bug in recovery code;
1158 missing byte order conversion.
1159
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00001160 * pass1.c (mark_inode_bad): Replace alloc_bad_map with a function
1161 which sets the bit in the bad inode bitmap.
1162 (e2fsck_pass1): Check for fast symlinks with an invalid
1163 size, and set the bad inode map in that case.
Theodore Ts'o62b6d472001-06-02 04:37:02 +00001164 (check_size): Check i_size_high for special files and
1165 prompt to clear it along with i_size if non-zero.
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00001166
1167 * pass2.c (e2fsck_process_bad_inode): Check for fast symlinks with
1168 an invalid size and prompt the user if the inode should be
1169 cleared.
1170
1171 * problem.h, problem.c (PR_2_SYMLINK_SIZE): Added new problem code.
1172
Theodore Ts'o71d521c2001-06-01 19:29:36 +000011732001-06-01 Theodore Tso <tytso@valinux.com>
1174
Theodore Ts'o2f686ac2001-06-02 00:38:40 +00001175 * problem.c, problem.h: Change PR_0_JOURNAL_UNSUPP_INCOMPAT and
1176 PR_0_JOURNAL_UNSUPP_ROCOMPAT so they aren't fatal errors,
1177 but prompt to see if the user should abort. Removed the
1178 PR_0_JOURNAL_RESET_COMPAT problem code.
1179
1180 * journal.c (e2fsck_journal_load): If there are incompatible
1181 journal flags, just return an error code.
1182 (e2fsck_check_ext3_journal): If e2fsck_journal_load
1183 returns an error code indicating that there are
1184 incompatible journal flag, check to see if we should
1185 abort, and then offer to clear the journal.
Theodore Ts'oe3338452001-06-14 07:11:33 +00001186 (Addresses Debian bug #98527.)
Theodore Ts'o2f686ac2001-06-02 00:38:40 +00001187
Theodore Ts'o797f5ef2001-06-01 23:49:46 +00001188 * Makefile.in: Move include/asm/types.h.in to
Theodore Ts'o36a23e12001-06-02 00:54:10 +00001189 lib/ext2fs/ext2_types.h.in.
Theodore Ts'o797f5ef2001-06-01 23:49:46 +00001190
11912001-06-01 Theodore Tso <tytso@valinux.com>
1192
Theodore Ts'o71d521c2001-06-01 19:29:36 +00001193 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
1194 pass1_check_directory): Add a safety check to make sure
1195 ctx->stashed_inode is non-zero.
1196
1197 * pass1b.c (pass1b): Use e2fsck_use_inode_shortcuts() to disable
1198 the inode shortcut processing, instead of manually
1199 clearing only half of the function pointers that needed to
1200 be NULL'ed out. This caused nasty bugs if the last inode
1201 in the filesystem needed dup block processing.
1202
1203 * pass1b.c (clone_file_block): When cloning a directory's metadata
1204 block, don't try to update the directory block list
1205 database, since indirect blocks aren't stored in the
1206 database and the resulting error will abort the file clone
1207 operation.
1208
Theodore Ts'o561cd4d2001-05-25 16:40:56 +000012092001-05-25 Theodore Tso <tytso@valinux.com>
1210
Theodore Ts'obb185862001-05-25 17:35:00 +00001211 * Release of E2fsprogs 1.20
1212
12132001-05-25 Theodore Tso <tytso@valinux.com>
1214
Theodore Ts'o561cd4d2001-05-25 16:40:56 +00001215 * journal.c (e2fsck_journal_reset_super): Remove extraneous line
1216
Theodore Ts'oc7f23362001-05-23 22:19:47 +000012172001-05-23 Theodore Tso <tytso@valinux.com>
1218
1219 * journal.c (e2fsck_journal_reset_super): Fix bug; the reset
1220 journal wasn't getting written out to disk since the dirty
1221 bit wasn't being set on the buffer.
1222 (e2fsck_journal_load): Don't print an error message if the
1223 journal version number is wrong; just return a error code
1224 reflecting this fact. If the block type in the journal
1225 superblcok is obviously not a version number, report the
1226 journal is corrupted.
1227 (e2fsck_check_ext3_journal): On an unsupported journal
1228 version, prompt to abort by default, but then offer a
1229 chance to clear the journal as corrupt.
1230
1231 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_VERSION): Added new
1232 problem code.
1233
Theodore Ts'o424cd2b2001-05-14 04:06:56 +000012342001-05-14 Theodore Tso <tytso@valinux.com>
1235
Theodore Ts'o21afac02001-05-14 12:47:41 +00001236 * pass1.c: Treat inodes with a low dtime (that were from a
1237 corrupted orphan list) specially.
1238
1239 * problem.c, problem.h: Add new problem codes PR_1_LOW_DTIME and
1240 PR_1_ORPHAN_LIST_REFUGEES, and a new latch group,
1241 PR_LATCH_LOW_DTIME.
1242
1243 * problemP.h: Expand the size of the problem flag to be an int
1244 instead of a short. Expand space in the flag word which
1245 is reserved for problem latch flags from 3 bits to 8 bits.
1246
Theodore Ts'o54c637d2001-05-14 11:45:38 +00001247 * e2fsck.h, scantest.c: Change location of ext2_fs.h to be
1248 ext2fs/ext2_fs.h
1249
Theodore Ts'o424cd2b2001-05-14 04:06:56 +00001250 * super.c (check_super_block): Be more strict on checking
1251 s_r_blocks_count superblock field.
1252
12532001-05-13 Theodore Tso <tytso@valinux.com>
1254
1255 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_ROCOMPAT,
1256 PR_0_JOURNAL_UNSUPP_INCOMPAT, PR_0_JOURNAL_RESET_COMPAT):
1257 New problem codes.
1258
1259 * journal.c (e2fsck_journal_load): Use a problem code to
1260 report unsupported feature flags. There is code to
1261 clear unsupported flags, but since this is dangerous,
1262 it's not allowed in the problem code table.
1263
12642001-05-11 Andreas Dilger <adilger@turbolinux.com>
1265
1266 * journal.c (e2fsck_journal_reset_super): initialize the journal
1267 sequence number to a random value to avoid recovering
1268 bad transactions from a corrupt journal.
1269
Theodore Ts'o328a5ce2001-05-13 20:21:25 +000012702001-05-13 Theodore Tso <tytso@valinux.com>
1271
1272 * journal.c: Code cleanup; initialize journal_enable_debug using
1273 an initializer.
1274
Theodore Ts'ofc9a69c2001-05-12 13:43:46 +000012752001-05-12 Theodore Tso <tytso@valinux.com>
1276
1277 * unix.c (PRS): Skip validation of -C's file descriptor if it is
1278 zero, since that is special case.
1279
Theodore Ts'of0b8c872001-05-09 06:03:58 +000012802001-05-09 Theodore Tso <tytso@valinux.com>
1281
1282 * super.c (release_orphan_inodes): Add gettext quoting around
1283 "Truncating" and "Clearing" for i18n.
1284
Theodore Ts'ob9852cd2001-05-05 05:14:59 +000012852001-05-05 Theodore Tso <tytso@valinux.com>
1286
Theodore Ts'oe39ac922001-05-05 06:47:24 +00001287 * util.c (fatal_error): Use the correct magic number when checking
1288 the magic number for the io_channel data structure. Also
1289 remove extraneous call to io_channel_flush() that was left
1290 over from an editing session.
1291
Theodore Ts'ob9852cd2001-05-05 05:14:59 +00001292 * pass2.c (check_dir_block): Ignore EXT2_ET_DIR_CORRUPTED errors
1293 from ext2fs_read_dir_block().
1294
Theodore Ts'o5f629b72001-05-01 20:01:08 +000012952001-05-01 Theodore Tso <tytso@valinux.com>
1296
Theodore Ts'oae8160e2001-05-01 21:13:37 +00001297 * unix.c (PRS): Validate the completion information file
1298 descriptor so that the completion bar won't get
1299 accidentally written onto the disk.
1300
Theodore Ts'o5f629b72001-05-01 20:01:08 +00001301 * e2fsck.8.in: Add explanation that you can use mke2fs -n -b
1302 blocksize to printout alternate superblock locations.
1303
Theodore Ts'obc57f152001-04-26 04:11:46 +000013042001-04-26 Theodore Tso <tytso@valinux.com>
1305
1306 * unix.c (check_if_skip): If the max_mount_count is zero, treat it
1307 as having no count set.
1308
Theodore Ts'oef059872001-04-17 00:40:02 +000013092001-04-16 Theodore Tso <tytso@valinux.com>
1310
1311 * super.c (check_super_block): Fix bad calculation of
1312 inodes_per_block, and tighten min/max checks to be a bit
1313 more paranoid. Thanks to Andreas Dilger for pointing out
1314 this bug.
1315
Theodore Ts'o1f735032001-03-29 19:00:50 +000013162001-03-29 Theodore Tso <tytso@valinux.com>
1317
Theodore Ts'o15986f72001-03-29 19:22:16 +00001318 * journal.c (mark_buffer_uptodate): Add emulation of kernel
1319 function mark_buffer_uptodate.
1320
Theodore Ts'o1f735032001-03-29 19:00:50 +00001321 * recovery.c, revoke.c: Synchronize with 0.6b ext3 files.
1322
Theodore Ts'od0515212001-02-13 04:32:53 +000013232001-02-12 Theodore Tso <tytso@valinux.com>
1324
1325 * journal.c (e2fsck_run_ext3_journal): Force a flush of the
1326 filesystem and io_channel before replaying the journal.
1327
Theodore Ts'oa5c33f22001-01-18 02:34:03 +000013282001-01-17 Theodore Ts'o <tytso@valinux.com>
1329
1330 * pass1.c (check_blocks): Fix large file checking code so that
1331 files > 2GB are considered large files, and restrict
1332 directories from being > 2GB.
1333
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +000013342001-01-12 Theodore Ts'o <tytso@valinux.com>
1335
Theodore Ts'oa9ca2012001-01-12 21:53:25 +00001336 * journal.c (e2fsck_journal_fix_unsupported_super): Remove unused
1337 function. Add FIXME notes to e2fsck_get_journal(), from
1338 Andreas Dilger.
1339
1340 * pass1.c (e2fsck_pass1): Cap the maximum legal size of a file by
1341 the limit caused by the fact that i_blocks is in 512 byte
1342 units, and that the Linux buffer cache also fundamentally
1343 assumes 512 byte sectors.
1344 Make sure that the journal inode is a regular file, and
1345 when clearing an unused journal inode, make sure the
1346 icount db is updated.
1347
1348 * problem.c, problem.h (PR_1_JOURNAL_BAD_MODE): Add new problem code.
1349
Theodore Ts'o37b6b292001-01-12 21:16:13 +00001350 * problem.c: For PR_1_RESERVED_BAD_MODE, print a description of
1351 the reserved inode. In PR_0_JOURNAL_HAS_JOURNAL, prompt
1352 to clear the journal, rather than deleting it (which is
1353 more accurate). (From Andreas Dilger.)
1354
Theodore Ts'o6a6d3d42001-01-12 21:11:24 +00001355 * journal.c: Make sure all functions which return an error code
1356 use the errcode_t return type, and not "int"
1357 (e2fsck_journal_release): Add new parameter, "drop",
1358 which is used when we just want to deallocate the journal
1359 without trying to write out any changes.
1360 (mark_buffer_clean): New function
1361 (e2fsck_check_ext3_journal): If we fail loading the
1362 journal, make sure we free all memory associated with it.
1363 (recover_ext3_journal): If we fail to load the journal or
1364 initialize the revoke data structures, make sure we free all
1365 memory associated with the journal.
1366
Theodore Ts'o721edd02001-01-12 21:05:57 +00001367 * message.c (special_inode_name): Add more special inode names
1368 (From Andreas Dilger)
1369
Theodore Ts'o58a75172001-01-12 20:59:19 +00001370 * util.c (fatal_error): Check to make sure the io_manager data
1371 structure is sane before trying to flush the io_channel.
1372 (From Andreas Dilger)
1373
Theodore Ts'o721edd02001-01-12 21:05:57 +00001374 * mtrace.h, super.c, pass2.c: Minor whitespace cleanups, from
1375 Andreas Dilger.
Theodore Ts'o4035f402001-01-12 20:25:50 +00001376
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +00001377 * journal.c (e2fsck_journal_fix_bad_inode): Set pctx->ino to the
1378 bad journal number.
1379
1380 * problem.c (PR_0_JOURNAL_BAD_INODE): Use pctx->ino instead of
1381 pctx->num when printing the bad journal inode number.
1382
Theodore Ts'o86c627e2001-01-11 15:12:14 +000013832001-01-11 <tytso@snap.thunk.org>
1384
Theodore Ts'o5ba23cb2001-01-11 19:15:02 +00001385 * pass1.c (process_block): Remove dead code which was never
1386 getting executed.
1387
1388 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
1389 ext2fs_sync_device() instead of using BLKFLSBUF.
1390
1391 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
1392
Theodore Ts'o86c627e2001-01-11 15:12:14 +00001393 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
1394 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
1395 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
1396 ino_t to ext2_ino_t.
1397
Theodore Ts'o95a5bc92001-01-11 04:58:21 +000013982001-01-09 <tytso@snap.thunk.org>
1399
1400 * problem.c: Fix another broken @F vs @f problem.
1401
Theodore Ts'o53ef44c2001-01-06 05:55:58 +000014022001-01-06 <tytso@snap.thunk.org>
1403
1404 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
1405 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
1406
1407 * jfs_user.h: Use more sophisticated inline handling to allow
1408 building with --enable-gcc-wall
1409
Theodore Ts'od3f35b62001-01-03 13:00:43 +000014102001-01-03 <tytso@snap.thunk.org>
1411
Theodore Ts'of18996c2001-01-03 16:57:24 +00001412 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
1413 own block; if the journal inode is not in use, and it
1414 contains data, offer to clear it.
1415
1416 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
1417 problem code.
1418
1419 * problem.c: Modified problem table to use a new abbreviations.
1420
Theodore Ts'od74edf42001-01-03 19:38:04 +00001421 * message.c: Add @j abbreviation for journal, and @v abbreviation
Theodore Ts'oe9044062001-01-03 15:39:37 +00001422 for device.
Theodore Ts'o1ce64532001-01-03 15:34:20 +00001423
Theodore Ts'occ7067b2001-01-03 13:24:06 +00001424 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
1425
Theodore Ts'od3f35b62001-01-03 13:00:43 +00001426 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
1427 the journal stored on a reserved inode. Also force a fsck
1428 if the journal appears to exist while !NEEDS_RECOVERY, and
1429 we forcibly reset the journal.
1430
Theodore Ts'of5ae75e2001-01-01 14:52:52 +000014312001-01-01 <tytso@snap.thunk.org>
1432
Theodore Ts'o5dd8f962001-01-01 15:51:50 +00001433 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
1434 ext2fs_sb with struct ext2_super_block.
1435
Theodore Ts'of5ae75e2001-01-01 14:52:52 +00001436 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
1437
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +000014382000-12-31 <tytso@snap.thunk.org>
1439
1440 * jfs_compat.h: Remove uneeded header file.
1441
Theodore Ts'ob2f93192000-12-30 20:33:42 +000014422000-12-30 <tytso@snap.thunk.org>
1443
Theodore Ts'oc59a7042000-12-31 01:52:03 +00001444 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
1445 conflicts with the system header file.
1446
Theodore Ts'ob2f93192000-12-30 20:33:42 +00001447 * problem.h: Fixed numbering of pass1 error messages; an extra 0
1448 had slipped into some of the numbers. (Pointed out by
1449 Andreas Dilger)
1450
1451 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
1452 unnecessary automatic variable. Add explanatory comment
1453 about the kernel emulation routines. (Suggested by
1454 Andreas Dilger)
1455
Theodore Ts'o060b5fb2000-12-13 18:07:23 +000014562000-12-13 Theodore Ts'o <tytso@valinux.com>
1457
Theodore Ts'o9b565752000-12-13 18:50:22 +00001458 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
1459 journal fields are consistent if any of the superblock
1460 fields are set. (Backs out erroneous change made by sct,
1461 pointed out by Andreas.)
1462
1463 * unix.c (main): Clarify coments (no code changes)
1464
1465 * super.c (release_orphan_inodes): Fix spelling typo in error message.
1466
Theodore Ts'o8188c9e2000-12-13 18:39:14 +00001467 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
1468 level if we need to set large files flag. Patch from
1469 Andreas Dilger.
1470
Theodore Ts'o7b59f1e2000-12-13 18:11:44 +00001471 * super.c (check_super_block): If we have any of the compatibility
1472 flags set, we need to have a revision 1 filesystem. Most
1473 kernels will not check the flags on a rev 0 filesystem
1474 and we may have corruption issues because of the
1475 incompatible changes to the filesystem. Patch from Andreas
1476 Dilger.
1477
Theodore Ts'o060b5fb2000-12-13 18:07:23 +00001478 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
1479 new problem codes.
1480
Theodore Ts'o0e8a9562000-12-09 06:41:25 +000014812000-12-09 <tytso@snap.thunk.org>
1482
Theodore Ts'obf2d4992000-12-09 14:46:20 +00001483 * flushb.c: Fix flushb so that it does something other than waste
1484 disk space when built on systems with modern header files
1485 and add a non-subtle Copyright Licensing restriction so
1486 Yann will remove it from the Debian Distribution. (Now
1487 violates the Debian Free Software Guidelines, on purpose.)
1488
Theodore Ts'of43650c2000-12-09 06:47:56 +00001489 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
1490 at the top level, set the JFS debuging level to 2.
1491
Theodore Ts'o0e8a9562000-12-09 06:41:25 +00001492 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
1493 has been moved to the include/linux directory.
1494
1495 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
1496 support the V2 superblock and revoke processing. The
1497 journal.c and revoke.c files are copies from the ext3
1498 kernel source.
1499
1500 * Makefile.in: Added revoke.c to the list of source/object files.
1501
Theodore Ts'o133a56d2000-11-17 05:40:49 +000015022000-11-16 Theodore Ts'o <tytso@valinux.com>
1503
1504 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
1505 reporting problems rather than using com_err directly.
1506
1507 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
1508
1509 * message.c (expand_percent_expression): Add safety check. If
1510 ctx->str is NULL, print "NULL" instead of dereferencing
1511 the null pointer.
1512
1513 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
1514 to ext2fs_block_iterate2, to support 64-bit filesizes and
1515 to speed things up slightly by avoiding the use of the
1516 ext2fs_block_iterate's compatibility shim layer.
1517
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +000015182000-10-30 <tytso@snap.thunk.org>
1519
1520 * util.c (get_backup_sb): Calculate backup superblock correctly
1521 when the blocksize is > 1k.
1522
Theodore Ts'o241f2242000-10-26 20:42:07 +000015232000-10-26 <tytso@snap.thunk.org>
1524
1525 * jfs.h, jfs_compat.h, journal.c: Updated to include the
1526 definition of the new journal superblock format; still
1527 only supports V1 superblocks for now. (From sct)
1528
Theodore Ts'ob09a4b02000-10-24 21:16:09 +000015292000-10-24 <tytso@snap.thunk.org>
1530
Theodore Ts'o83949022000-10-25 01:38:50 +00001531 * super.c (release_inode_block, release_inode_blocks,
1532 release_orphan_inodes): Add code to deal with truncating
1533 inodes which are still in use (but which are on the orphan
1534 list because they need truncation).
1535
1536 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
1537 PR_0_ORPHAN_CLEAR_INODE, and remove
1538 PR_0_ORPHAN_INODE_INUSE.
1539
1540 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
1541 a message when the journal is being recovered.
1542
Theodore Ts'ob09a4b02000-10-24 21:16:09 +00001543 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
1544 journal inode, if it is in use.
1545
Theodore Ts'oadfca562000-09-12 21:24:36 +000015462000-09-12 <tytso@valinux.com>
1547
1548 * extend.c:
1549 * flushb.c: Add include of nls-enable.h which is necessary so that
1550 they can compile correctly.
1551
Theodore Ts'occ96b2b2000-08-22 21:30:11 +000015522000-08-22 <tytso@valinux.com>
1553
Theodore Ts'o2575fb02000-08-22 21:50:04 +00001554 * unix.c (main): If we're doing a read-only check, skip the
1555 journal playback, but don't abort the e2fsck run.
1556
Theodore Ts'o99a2cc92000-08-22 21:41:52 +00001557 * super.c (release_orphan_inodes): Fix typo; should do bounds
1558 checking on next_ino instead of ino.
1559
1560 * jfs_compat.h (J_ASSERT):
1561 * journal.c (e2fsck_run_ext3_journal):
1562 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
1563
Theodore Ts'o243dc312000-08-22 21:37:47 +00001564 * unix.c: Use fatal_error() instead of exit() whenever possible.
1565 Also fix the fsck exit codes so that we use FSCK_USAGE
1566 when it is appropriate. Rename global_signal_ctx to
1567 e2fsck_global_ctx and let it be exported globally.
1568
Theodore Ts'occ96b2b2000-08-22 21:30:11 +00001569 * util.c (fatal_error): Try to flush the I/O manager before
1570 forcing an exit.
1571
Theodore Ts'oecf1b772000-08-20 22:06:31 +000015722000-08-20 <tytso@valinux.com>
1573
1574 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
1575 e2fsck_check_ext3_journal to smash the journal because
1576 journal->j_transaction_sequence wasn't getting
1577 initialized.
1578
1579 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
1580 call to e2fsck_clear_recover from recover_ext3_journal to
1581 after the filesystem has been closed and reopened.
1582 Otherwise, the superblock in the filesystem handle will
1583 probably be stale, and will overwrite the newer version of
1584 the superblock written by the log recovery.
1585
1586 * message.c (expand_inode_expression): Add support for %Iu and %Ig
1587
1588 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
1589
1590 * super.c (release_orphan_inodes, release_inode_block,
1591 release_inode_blocks): Update the block group descriptor
1592 counts when freeing the orphan inode. Use
1593 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
1594
1595 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
1596 attempted to reopen the filesystem using the device name
1597 instead of the filesystem name.
1598
Theodore Ts'o80bfaa32000-08-18 15:08:37 +000015992000-08-18 <tytso@valinux.com>
1600
1601 * Makefile.in: Update the make dependencies
1602
1603 * problem.c, problem.h: Add the problem codes:
1604 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
1605 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
1606 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
1607 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
1608
1609 * super.c (release_inode_blocks, release_orphan_inodes,
1610 check_super_block): Add support for clearing orphaned
1611 inodes from the unmounted filesystem.
1612
1613 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
1614 check; this is now handled in check_super_block ---
1615 non-journaled filesystems can use the orphan list in the
1616 future. Also, move the the re-opening of the filesystem
1617 to e2fsck_run_ext3_journal().
1618
Theodore Ts'o3b5386d2000-08-14 14:25:19 +000016192000-07-12 Andreas Dilger <adilger@turbolinux.com>
1620
1621 * journal.c: implement loading of ext3 journal for recovery code
1622
1623 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
1624 Add journal problems.
1625
1626 * recovery.c (journal_recover): user-space ext3 journal recovery code
1627
1628 * unix.c (main) : check journal and do recovery in separate steps
1629
Theodore Ts'ob8d164c2000-08-08 03:17:04 +000016302000-08-07 <tytso@snap.thunk.org>
1631
1632 * unix.c (calc_percent): Make sure that we don't take a floating
1633 exception if the max value is zero. (should normally
1634 never happen, but...)
1635
Theodore Ts'of9e67062000-07-13 23:25:54 +000016362000-07-13 <tytso@valinux.com>
1637
1638 * Release of E2fsprogs 1.19
1639
Theodore Ts'o17390c02000-07-07 04:13:21 +000016402000-07-06 Theodore Ts'o <tytso@valinux.com>
1641
1642 * unix.c (check_if_skip): Modify algorithm for checking
1643 s_max_mnt_count to match with the kernel. (If
1644 s_max_mnt_count is negative, ignore the mnt_count check.)
1645
1646 * unix.c (e2fsck_update_progress): Adjust the width of the
1647 progress bar dynamically, based on the filesystem name
1648 that we need to display.
1649
1650 * unix.c (main): If the ext3 needs_recovery flag is set, call
1651 e2fsck_run_ext3_journal() and then restart the e2fsck run.
1652
1653 * journal.c (e2fsck_run_ext3_journal): New file which contains
1654 logic to recover the ext3 journal. This version relies on
1655 the kernel being able to mount the filesystem in order to
1656 run the journal.
1657
Theodore Ts'o92269042000-07-05 18:25:59 +000016582000-07-05 Theodore Ts'o <tytso@valinux.com>
1659
1660 * unix.c (e2fsck_update_progress): Only save and check the last
1661 percentage after multiplying it by 10, nor 1000, since we
1662 only need to save values to a tenth of a percent (and the
1663 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +00001664 Also, re-arrange the logic so that we do the time
1665 check only after doing the percentage check, and we
1666 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +00001667
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +000016682000-07-04 Theodore Ts'o <tytso@valinux.com>
1669
1670 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
1671 field is set; if so, clear it, so that ext3 mounting code
1672 won't get confused by the fact that we've cleared out the
1673 orphaned inodes.
1674
Theodore Ts'obbd47d72000-06-10 19:21:33 +000016752000-06-10 Theodore Ts'o <tytso@valinux.com>
1676
1677 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
1678 checking for a "should never happen case".
1679
1680 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
1681 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
1682
Theodore Ts'od647a1e2000-05-27 14:40:09 +000016832000-05-27 Theodore Ts'o <tytso@valinux.com>
1684
1685 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
1686 (cw@foof.org) which checks to see if special devices have
1687 a non-zero size, and deals with it.
1688
1689 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
1690
Theodore Ts'o1d279212000-05-19 02:38:14 +000016912000-05-18 Theodore Ts'o <tytso@valinux.com>
1692
1693 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
1694 well.
1695
Theodore Ts'o4ea0a112000-05-08 13:33:17 +000016962000-05-08 Theodore Ts'o <tytso@valinux.com>
1697
1698 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
1699 code.
1700
1701 * super.c (check_super_block): If the OS type in the superblock is
1702 the Hurd, check to see if the filetype feature is set, and
1703 offer to clear it if so. This needs to be done since the
1704 Hurd doesn't properly support the filetype feature.
1705 (And since the hurd allows the transmogrification of files
1706 to special files and vice versa --- for no good reason
1707 that I can understand --- it can't support the filetype
1708 feature for the forseeable future, either.)
1709
Theodore Ts'o373b8332000-04-03 16:22:35 +000017102000-04-03 Theodore Ts'o <tytso@valinux.com>
1711
1712 * unix.c: For platforms that don't define optarg.h, manually
1713 define optarg and optind.
1714
Theodore Ts'o01fbc702000-04-03 13:57:21 +000017152000-03-20 Theodore Ts'o <tytso@valinux.com>
1716
1717 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
1718 Check for the append-only as well as the immutable flag.
1719
1720 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
1721 append-only flag. Fix comment for compression flag.
1722
Theodore Ts'o06012322000-02-12 20:12:43 +000017232000-02-12 <tytso@snap.thunk.org>
1724
1725 * unix.c (e2fsck_update_progress): Limit the number of updates to
1726 the progress bars to 8 times a second. This allows a 9600
1727 baud console link to keep up.
1728
Theodore Ts'o19178752000-02-11 15:55:07 +000017292000-02-11 <tytso@snap.thunk.org>
1730
1731 * unix.c (main): If compression is enabled on the filesystem,
1732 print a warning message (for now).
1733
1734 * message.c: Add new compression shortcut: @c == compress
1735
1736 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
1737
1738 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
1739 set, check to see if the filesystem supports compression.
1740 If it does pass this information down to process_block()
1741 so it can treat the compressed block flag words
1742 correctly. If not, offer to clear the flag, since it
1743 shouldn't be set.
1744 (process_block): If an inode has the compressed inode flag
1745 set, allow EXT2FS_COMPRESSED_BLKADDR.
1746
1747 * pass1b.c (process_pass1b_block, delete_file_block,
1748 clone_file_block):
1749 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
1750 see if the block can be skipped.
1751
Theodore Ts'o28ffafb2000-02-08 19:14:02 +000017522000-02-08 <tytso@snap.thunk.org>
1753
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +00001754 * util.c: Make resource tracking message more concise.
1755
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +00001756 * e2fsck.h:
1757 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
1758 ctx->block_illegal_map, since it's not needed by pass1,
1759 and pass1b has been modified to calculate it manually if
1760 needed. This reduces the memory footprint needed by e2fsck.
1761
1762 * pass1b.c (check_if_fs_block): New static function which returns
1763 whether or not a block overlaps with filesystem metadata.
1764 This replaces consulting the block_illegal_map bitmap.
1765
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00001766 * Makefile.in: Call sync after finishing building all in this
1767 directory.
1768
1769 * unix.c (PRS): sync the filesystem before trying to use
1770 BLKFLSBUF, to minimize the chance of causing dirty blocks
1771 to get dropped.
1772
1773 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
1774 a Linux/i386 system.
1775
1776 * pass3.c (check_directory): Only do the loop detection algorithm
1777 if we've searched over 2048 parent directories and haven't
1778 found the end yet. This means that in the common case, we
1779 don't allocate or clear the inode_loop_detection bitmap,
1780 which for large systems, merely clearing the bitmap for
1781 each directory was turning out to be quite expensive.
1782 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
1783 identifying this problem.
1784
Theodore Ts'o0c4a0722000-02-07 03:11:03 +000017852000-02-06 Theodore Ts'o <tytso@valinux.com>
1786
1787 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
1788 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
1789 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
1790 unix.c, util.c: Add Internationalization support as
1791 suggested by Marco d'Itri <md@linux.it>.
1792
Theodore Ts'o80e808f2000-02-02 16:19:59 +000017932000-02-02 Theodore Ts'o <tytso@valinux.com>
1794
1795 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
1796 linux/fs.h
1797
Theodore Ts'o894edb22000-01-18 21:27:12 +000017982000-01-18 Theodore Ts'o <tytso@valinux.com>
1799
1800 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
1801 we need a separate DEPLIBUUID that can be used in
1802 Makefile's dependency rules.
1803
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +000018041999-11-23 <tytso@valinux.com>
1805
1806 * e2fsck.8.in: Update language about where to find a backup
1807 superblock.
1808
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +000018091999-11-19 <tytso@valinux.com>
1810
Theodore Ts'o86a63e91999-11-23 13:52:48 +00001811 * pass1.c (process_inodes): Add shortcut handling; if
1812 process_inodes_count is zero, return right away, to avoid
1813 calling qsort with a non-positive count.
1814
Theodore Ts'oec8d2c31999-11-19 18:52:36 +00001815 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
1816 to print Delete as ^?
1817
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00001818 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
1819 the source directory.
1820
Theodore Ts'oa846d2f1999-11-10 15:50:24 +000018211999-11-10 <tytso@valinux.com>
1822
Theodore Ts'ocd086361999-11-10 16:00:39 +00001823 * Release of E2fsprogs 1.18
1824
18251999-11-10 <tytso@valinux.com>
1826
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00001827 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
1828 means the answer is assumed to be no in preen mode. This
1829 is now used in the PR_1_SET_IMMUTABLE code, so that in
1830 preen mode we ignore these inodes and just print a warning
1831 message.
1832
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +000018331999-11-09 <tytso@valinux.com>
1834
1835 * pass1.c (e2fsck_pass1): If the filesystem does not support
1836 imagic inodes, if an inode has the imagic flag set, offer
1837 to clear the imagic flag. If a valid device/fifo/socket
1838 has the immutable flag set, call the new helper function
1839 check_immutable() to offerto clear the immutable flag.
1840
1841 * pass2.c (check_filetype): Use the new ext2_file_type() helper
1842 function instead of calculating the file_type information
1843 manually.
1844
1845 * pass3.c (e2fsck_reconnect_file): When adding a link to
1846 lost+found, calculate the filetype information so that
1847 ext2fs_link() can use the information if applicable.
1848 (get_lost_and_found): Create the /lost+found directory
1849 with the correct filetype information if applicable.
1850
1851 * util.c (ext2_file_type), e2fsck.h: New function which returns
1852 the directory entry file type information given the
1853 inode's mode bits.
1854
1855 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
1856 and PR_1_SET_IMMUTABLE.
1857
Theodore Ts'o7142db01999-11-08 18:46:54 +000018581999-11-07 <tytso@valinux.com>
1859
1860 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
1861 to prevent it from getting freed twice.
1862
18631999-11-06 <tytso@valinux.com>
1864
1865 * unix.c (main): Close the filesystem before freeing the context,
1866 so that in the event of a free()-related segmentation
1867 violation, the filesystem is properly closed and written
1868 out.
1869
18701999-10-27 <tytso@valinux.com>
1871
1872 * e2fsck.c (e2fsck_reset_context): When freeing
1873 ctx->inode_reg_map, we weren't zero'ing
1874 ctx->inode_reg_map, which could cause a segfault later on
1875 in the e2fsck run.
1876
18771999-10-26 <tytso@valinux.com>
1878
1879 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
1880 matches the standard convention).
1881
Theodore Ts'of68aa411999-10-26 14:20:22 +000018821999-10-26 <tytso@valinux.com>
1883
Theodore Ts'o28e11941999-10-26 18:17:20 +00001884 * Release of E2fsprogs 1.17
1885
18861999-10-26 <tytso@valinux.com>
1887
Theodore Ts'of68aa411999-10-26 14:20:22 +00001888 * message.c (safe_print): Make safe_print take an char instead of
1889 an unsigned char to fix gcc warnings.
1890
Theodore Ts'oc40db6d1999-10-25 21:03:34 +000018911999-10-25 <tytso@valinux.com>
1892
Theodore Ts'oe6597041999-10-26 02:30:16 +00001893 * util.c: For NT portability, don't redefine getchar(), since
1894 stdio defines that. Instead we introduce a new
1895 abstract macro read_a_char() which is #defined to the
1896 right function as necessary.
1897
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00001898 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
1899
1900 * pass2.c (check_dir_block): Require that the length of the
1901 directory entry be at least 12 bytes. Check to see if the
1902 filename is zero-length, and flag that as an error.
1903
Theodore Ts'o7847c1d1999-10-22 15:11:42 +000019041999-10-22 <tytso@valinux.com>
1905
Theodore Ts'o614fdfd1999-10-23 03:19:51 +00001906 * Release of E2fsprogs 1.16
1907
19081999-10-22 <tytso@valinux.com>
1909
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00001910 * pass2.c (check_filetype): If the filetype filesystem feature is
1911 not set, and a directory entry has a dirent feature, offer
1912 to clear it (since 2.0 kernels will do complain will
1913 interpret it as a very large name length field).
1914
1915 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
1916
Theodore Ts'oaa4115a1999-10-21 19:33:18 +000019171999-10-21 <tytso@valinux.com>
1918
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +00001919 * e2fsck.8.in: Update man page to use a more standard format (bold
1920 option flags and italicized variables), as suggested by
1921 Andreas Dilger (adilger@enel.ucalgary.ca)
1922
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00001923 * pass4.c (e2fsck_pass4): If an inode is set in the
1924 inode_imagic_map bitmap, don't check to see if it is
1925 disconnected from the inode tree (because it almost
1926 certainly will be). Free inode_imagic_map at the end of
1927 pass 4.
1928
1929 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
1930 feature is set, check the directory entry's filetype
1931 information field, and fix/set it if necessary.
1932 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
1933 of pass 2.
1934
1935 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
1936 information for inode_reg_map and inode_imagic_map, which
1937 indicates which inodes are regular files and AFS inodes,
1938 respectively.
1939 Since only the master superblock is written during a
1940 restart, force that superblock to be used after a restart;
1941 otherwise changes to the block group descriptors end up
1942 getting ignored.
1943
1944 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
1945 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
1946 which supresses the problem message if e2fsck is run with
1947 the -n option.
1948
1949 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
1950 new problem codes.
1951
1952 * message.c (expand_dirent_expression): Add support for %dt which
1953 prints the dirent type information.
1954
1955 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
1956 and inode_imagic_map).
1957
1958 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
1959 to the context structure.
1960
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +000019611999-09-24 <tytso@valinux.com>
1962
1963 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
1964 e2fsprogs easier to port to non-Unix platforms.
1965
19661999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00001967
1968 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
1969 internal and external inode counts in sync when we
1970 decremented an inode whose link count was already zero.
1971 Now we skip incrementing or decrementing both link counts
1972 if we would cause an overflow condition.
1973 (expand_dir, expand_dir_proc): Change where we update the
1974 inode block count and size files so that the block count
1975 field is updated correctly when we create an indirect block.
1976
Theodore Ts'o78cf0541999-10-20 18:29:18 +000019771999-08-05 <tytso@valinux.com>
1978
1979 * super.c (check_super_block): Check to see whether the
1980 inodes_per_group value in the superblock is insanely too
1981 high.
1982
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +000019831999-08-02 <tytso@valinux.com>
1984
1985 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
1986 the block also shares data with the fs metadata when
1987 the count drops to 1, since the block should still be
1988 cloned, as fs metadata isn't included in the count.
1989
19901999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +00001991
1992 * Release of E2fsprogs 1.15
1993
Theodore Ts'ob55199e1999-07-19 15:37:46 +000019941999-07-19 <tytso@valinux.com>
1995
1996 * unix.c (usage): Add minimalist emergency help to the usage
1997 message.
1998
Theodore Ts'o5596def1999-07-19 15:27:37 +000019991999-07-18 <tytso@valinux.com>
2000
2001 * unix.c: Add support for calculating a progress bar if the -C0
2002 option is given. The function e2fsck_clear_progbar()
2003 clears the progress bar and must be called before any
2004 message is issued. SIGUSR1 will enable the progress bar,
2005 and SIGUSR2 will disable the progress bar. This is used
2006 by fsck to handle parallel filesystem checks. Also, set
2007 the device_name from the filesystem label if it is
2008 available.
2009
2010 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
2011 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
2012 structure which contains the last tenth of a percent
2013 printed for the user.
2014
2015 * message.c (print_e2fsck_message): Add call to
2016 e2fsck_clear_progbar().
2017
2018 * pass1.c (e2fsck_pass1):
2019 * pass2.c (e2fsck_pass2):
2020 * pass3.c (e2fsck_pass3):
2021 * pass4.c (e2fsck_pass4):
2022 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
2023 printing the resource tracking information.
2024
2025 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
2026 an error in the bitmaps, suppress printing the progress
2027 bar using the suppression flag for the remainder of the
2028 check, in order to clean up the display.
2029
Theodore Ts'o74033351999-07-01 03:00:47 +000020301999-06-30 <tytso@valinux.com>
2031
2032 * unix.c (check_mount): Clean up the abort message displayed when
2033 the filesystem is mounted and either stdout or stdin isn't
2034 a tty.
2035
20361999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +00002037
2038 * e2fsck.h:
2039 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
2040 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
2041 pass1_* be private static functions, and create new
2042 function e2fsck_use_inode_shortcuts which sets and clears
2043 the inode shortcut functions in the fs structure.
2044
2045 * e2fsck.h:
2046 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
2047 exported function.
2048
2049 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
2050 if a disconnected inode has any problems before
2051 connecting it to /lost+found. Bug and suggested fix by
2052 Pavel Machek <pavel@bug.ucw.cz>
2053
20541999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +00002055
2056 * unix.c (main): Add missing space in the disk write-protected
2057 message.
2058
Theodore Ts'od4b0ce01999-06-18 01:09:29 +000020591999-05-22 <tytso@rsts-11.mit.edu>
2060
2061 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
2062 code.
2063
2064 * super.c (check_super_block): Add check to make sure the total
2065 number of inodes is sane, since this can be calculated
2066 from the number of groups times the number of inodes per
2067 group. Offer to correct it if it is incorrect.
2068
Theodore Ts'oe79d1b21999-06-18 01:06:59 +000020691999-03-19 <tytso@rsts-11.mit.edu>
2070
2071 * pass5.c (check_block_end): Fix fencepost condition where when
2072 clearing the block padding we were missing the last position
2073 in the bitmap.
2074
Theodore Ts'o75d83be1999-05-18 03:16:36 +000020751999-05-17 <tytso@rsts-11.mit.edu>
2076
2077 * unix.c (reserve_stdio_fds): Add safety check in case
2078 reserve_stdio_fds couldn't open /dev/null.
2079
Theodore Ts'o4a9f5931999-03-16 19:32:52 +000020801999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
2081
2082 * util.c (print_resource_track): Use mallinfo if present to get
2083 more accurate malloc statistics.
2084
2085 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +00002086 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00002087
2088 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
2089
20901999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2091
2092 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
2093 that the block group number is printed. Add new prompt,
2094 PROMPT_UNLINK.
2095
20961999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2097
2098 * Release of E2fsprogs 1.14
2099
Theodore Ts'o9e51eca1999-01-09 16:32:31 +000021001999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2101
2102 * message.c (safe_print): New function which prints strings,
2103 converting non-printable characters using the '^' and
2104 M-notation. This function is now used to print directory
2105 name entries and pathnames.
2106
Theodore Ts'o73f17cf1999-01-04 07:35:45 +00002107Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
2108
2109 * unix.c (main): Reset the context before calling ext2fs_close(),
2110 to avoid referencing already freed memory.
2111
Theodore Ts'o556ad131998-12-19 08:10:58 +000021121998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
2113
2114 * Release of E2fsprogs 1.13
2115
Theodore Ts'o5a679c81998-12-03 16:40:38 +000021161998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
2117
2118 * Makefile.in: Updated dependencies.
2119
21201998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
2121
2122 * pass3.c (get_lost_and_found): If the filesystem is not opened
2123 read-only, then force /lost+found to be created if it is
2124 not present.
2125
2126 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
2127 operation.
2128
Theodore Ts'o1dde43f1998-11-14 04:18:28 +000021291998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2130
2131 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
2132 since e2fsck_free_context may reference data in ctx->fs.
2133
2134 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
2135 before checking ctx->fs->dblist.
2136
21371998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2138
2139 * pass1.c (e2fsck_pass1): Use the device check subroutine on
2140 FIFO's and Socket's, so that we catch bogus immutable inodes.
2141
2142 * pass2.c (process_bad_inode): Process bad socket and fifo's.
2143
2144 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
2145 PR_2_BAD_SOCKET.
2146
Theodore Ts'o7f813ba1998-09-03 01:26:03 +000021471998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
2148
2149 * problem.c: Add PR_3_NO_DIRINFO error code.
2150
2151 * super.c (check_super_value): Rename min and max to min_val and
2152 max_val to avoid possible cpp macro conflicts.
2153
2154 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
2155 possible cpp macro conflicts.
2156
2157 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
2158 cpp macro conflicts.
2159 (check_directory): Fix logic to avoid possible core dump
2160 in the case of ext2fs_get_dir_info returning NULL. (By
2161 the time we get here, it should never happen, but...).
2162 Also simply/streamline the control flow of the function.
2163
Theodore Ts'o24fc5031998-08-26 15:23:31 +000021641998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
2165
2166 * unix.c (check_if_skip): Move the "not cleanly mounted" check
2167 ahead of the maximal mount and too long since checked tests.
2168 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
2169 open, so that we don't open the filesystem using the same
2170 file descriptor as stdout or stderr.
2171
Theodore Ts'of75c28d1998-08-01 04:18:06 +000021721998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
2173
2174 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
2175 get to 100%.
2176
2177 * pass3.c (e2fsck_pass3): Change progress accounting to be
2178 consistent with the other e2fsck passes.
2179
2180 * e2fsck.c (e2fsck_run): At the end of each pass, call the
2181 progress function with the pass number set to zero.
2182
2183 * unix.c (e2fsck_update_progress): If the pass number is zero,
2184 ignore the call, since that indicates that we just want to
2185 deallocate any progress structures.
2186
Theodore Ts'o8144d671998-07-09 05:33:18 +000021871998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2188
Theodore Ts'o4a5fa191998-07-09 05:42:45 +00002189 * Release of E2fsprogs 1.12
2190
21911998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2192
Theodore Ts'o8144d671998-07-09 05:33:18 +00002193 * unix.c (main): Fix typo in checking the incompat feature set; it
2194 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
2195
Theodore Ts'o1fad9041998-07-07 05:44:43 +000021961998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
2197
2198 * badblocks.c (test_disk): Don't clear the existing bad blocks
2199 list when using e2fsck -c, since it may cause blocks with
2200 marginal errors to be dropped from the bad blocks list.
2201
Theodore Ts'o874b4d21998-07-06 14:33:12 +00002202Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
2203
2204 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
2205 compatibility with older kernels.
2206
Theodore Ts'o818180c1998-06-27 05:11:14 +000022071998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
2208
2209 * unix.c (e2fsck_update_progress): Remove unused variables.
2210
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +000022111998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
2212
2213 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
2214 collision with LFS API.
2215
2216 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
2217 properly initialized.
2218 (e2fsck_pass1): Don't allow the the boot loader inode to
2219 be a directory (clear the inode mode field if so).
2220
Theodore Ts'oefac9a11998-05-07 05:02:00 +000022211998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
2222
2223 * unix.c (PRS): Added new option -C, which causes e2fsck to print
2224 progress updates so that callers can keep track of the
2225 completion progress of e2fsck. Designed for use by
2226 progress, except for -C 0, which prints a spinning report
2227 which may be useful for some users.
2228
2229 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
2230 scheme (useful for larger filesystems).
2231
2232 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
2233 progress reporting functions.
2234
Theodore Ts'o4c77fe51998-04-30 17:35:59 +000022351998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2236
2237 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
2238 appropriate return type for comparison functions for qsort.
2239
2240 * e2fsck.h: Add #ifdef protection for unistd.h
2241
2242 * super.c: Remove header files already included by e2fsck.h
2243
Theodore Ts'o76f875d1998-04-27 01:41:13 +000022441998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
2245
2246 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
2247 size of the memory to be resized to ext2fs_resize_mem().
2248
Theodore Ts'o7e44f241998-04-01 03:16:29 +000022491998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
2250
2251 * Makefile.in: Change to use new installation directory variables
2252 convention. Fix uninstall rules to take $(DESTDIR) into
2253 account. Remove cat8dir from the installdirs target,
2254 since modern man package don't necessarily put the cat
2255 directory in /usr/man/cat?.
2256
Theodore Ts'o17dba281998-03-30 01:16:26 +000022571998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
2258
2259 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
2260 extern in e2fsck.h to prevent -Wall warnings.
2261
2262 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
2263
22641998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2265
2266 * super.c (check_super_block): Fix broken superblock sanity check
2267 when calculating blocks_per_group if s_log_frag_size !=
2268 s_log_block_size. Since we don't support fragments, this
2269 isn't a bug deal, but it's good to get it fixed.
2270
Theodore Ts'o246501c1998-03-24 16:22:38 +000022711998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
2272
2273 * unix.c: Fix bug in check of feature set, to make sure we can
2274 really fix this filesystem.
2275
2276 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
2277 num field be a 64 bit type. Add the problem code
2278 PR_1_FEATURE_LARGE_FILES
2279
2280 * problem.c: Add table entry for the problem code
2281 PR_1_FEATURE_LARGE_FILES.
2282
2283 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
2284 a problem for directory inodes. (Since it is also
2285 i_size_high now.) If there are no large_files, then
2286 clear the LARGE_FLAG feature flag. If there are
2287 large_files, but the LARGE_FLAG feature flag is not set,
2288 complain and offer to fix it.
2289 (check_blocks): Add support to deal with non-directory
2290 inodes that have i_size_high set (i.e., large_files).
2291 Don't give an error if a directory has preallocated
2292 blocks, to support the DIR_PREALLOC feature.
2293 (process_block, process_bad_block): The blockcnt variable
2294 is a type of blkcnt_t, for conversion to the new
2295 block_iterate2.
2296
2297 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
2298 a problem for directory inodes. (Since it is also
2299 i_size_high now.)
2300
2301 * message.c (expand_inode_expression): Print a 64-bits of the
2302 inode size for non-directory inodes. (Directory inodes
2303 can only use a 32-bit directory acl size, since
2304 i_size_high is shared with i_dir_acl.) Add sanity check
2305 so that trying to print out the directory acl on a
2306 non-directory inode will print zero.
2307 (expand_percent_expression): %B and %N, which print
2308 pctx->blkcount and pctx->num, can now be 64 bit
2309 variables. Print them using the "%lld" format if
2310 EXT2_NO_64_TYPE is not defined.
2311
2312 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
2313
2314 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
2315 field.
2316
Theodore Ts'ob6f79831998-03-09 13:10:37 +00002317Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2318
2319 * pass3.c (fix_dotdot_proc):
2320 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
2321 * message.c (expand_dirent_expression): Mask off the high eight
2322 bits of the directory entry's name_len field, so that it
2323 can be used for other purposes.
2324
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +00002325Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2326
2327 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
2328 include EXT2_FLAG_RESTART anymore, we need to adjust this
2329 routine so that it *does* return in the case of it seeing
2330 EXT2_FLAG_RESTART.
2331
2332 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
2333 done callback function, which may set context abort
2334 flags. So we need to test the context abort flags after
2335 we call ext2_get_next_inode().
2336 (process_inodes): If we abort due out of process_inodes,
2337 do a clean exit by breaking out of the for loop instead of
2338 just returning.
2339
2340 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
2341 considered a SIGNAL mask (i.e., requiring an immediate
2342 abort of processing to restart). FLAG_RESTART just means
2343 that we want to restart once pass 1 is complete.
2344
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +00002345Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2346
2347 * Change the progress function to return an integer; if returns 1,
2348 then the progress function is expected to have set the
2349 e2fsck context flag signalling a user abort, and the
2350 caller should also initiate a user abort.
2351
Theodore Ts'o63c49691998-02-20 05:24:59 +00002352Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2353
2354 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
2355 end_problem_latch() unless there was actually a problem
2356 latched. Simplifies semantics of the latch processing.
2357
Theodore Ts'o43139321998-02-16 22:34:46 +00002358Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2359
2360 * e2fsck.h: Add new field, priv_data to the e2fsck context
2361 structure. It should be used by callers of the e2fsck
2362 functions only, and not by anything in e2fsck itself.
2363
2364Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2365
2366 * super.c: Instead of call ext2fs_get_device_size(), define and call
2367 e2fsck_get_device_size(). (This function may be stubbed
2368 out in special versions of e2fsck.)
2369
2370 * pass3.c, pass4.c: Remove extra calls to the progress function
2371 that weren't needed.
2372
2373 * mke2fs.8.in: Update man page to note that the format of the bad
2374 block file is the same as the one generated by badblocks.
2375
Theodore Ts'o54be2cc1998-02-01 12:58:48 +00002376Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2377
2378 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
2379
2380 * e2fsck.h: Include <time.h> since it is needed
2381
2382 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
2383 processing.
2384
Theodore Ts'o24dd4021998-02-01 00:16:40 +00002385Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2386
2387 * unix.c (main): In the case where the filesystem revision is too
2388 high, print the message about the superblock possibly
2389 being corrupt.
2390
2391 * e2fsck.8.in: Add expanded comments about how the -b option
2392 works.
2393
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +00002394Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2395
2396 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
2397 the ext2-specific header files are in a flat directory.
2398
2399 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
2400 super.c, swapfs.c, unix.c: Explicitly cast all assignments
2401 from void * to be compatible with C++.
2402
2403Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2404
2405 * unix.c (sync_disk): Remove sync_disk and calls to that function,
2406 since ext2fs_close() now takes care of this.
2407
2408Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2409
2410 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
2411 ehandler.c, unix.c: Change use of private to be priv_data,
2412 to avoid C++ reserved name clash.
2413
Theodore Ts'o5be8dc21997-12-01 18:24:10 +00002414Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2415
2416 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
2417 of e2fsck_get_num_dirs, which has been removed.
2418
2419Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2420
2421 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
2422 to compile and install flushb.
2423
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +00002424Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2425
2426 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
2427 to make sure the extra i_blocks in a device are cleared if
2428 the immutable flag is set.
2429
2430 * util.c (print_resource_track): Fix typo which caused the
2431 time/resource tracking to print "Pass 1 :" instead of
2432 "Pass 1: ".
2433
Theodore Ts'ob8647fa1997-11-20 21:52:43 +00002434Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2435
2436 * pass3.c (expand_directory): Fix bug which could cause core dump
2437 when expanding the directory, and the bitmaps hadn't yet
2438 been read in. Also, only use ext2fs_write_dir_block when
2439 writing a directory block, not when writing out a fresh
2440 indirect block.
2441
Theodore Ts'o8039c481997-11-19 21:39:13 +00002442Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2443
2444 * pass1.c (process_bad_block): Fix bug where first_block wasn't
2445 getting incremented, which caused user to get a
2446 "Programming error?" warning if there was a bad block in a
2447 non-primary superblock/group_descriptor. Also fixed
2448 another bug so that ext2fs_bg_has_super() is consulted, to
2449 avoid problems when using a filesystem with the
2450 sparse_groups option set and there are bad blocks at the
2451 beginning of a group which doesn't have a superblock.
2452
Theodore Ts'of8188ff1997-11-14 05:23:04 +00002453Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2454
2455 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
2456 progress indicator function.
2457
2458 * pass1.c (scan_callback): Add call to the progress feedback
2459 function (if it exists).
2460
2461Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2462
2463 * super.c (check_super_block): Skip the device size check if the
2464 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
2465
2466 * iscan.c (main): Don't use fatal_error() anymore.
2467
2468 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
2469 calling fatal_error(0).
2470
2471 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
2472 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
2473
2474 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
2475
2476 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
2477
2478 * problemP.h: New file which separates out the private fix_problem
2479 data structures.
2480
2481 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
2482 swapfs.c util.c: allocate_memory() now takes a e2fsck
2483 context as its first argument, and rename it to be
2484 e2fsck_allocate_memory().
2485
Theodore Ts'o08b21301997-11-03 19:42:40 +00002486Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2487
Theodore Ts'o68227541997-11-04 04:25:22 +00002488 * unix.c (main): Add a special case check for the error code EROFS
2489 and display an appropriate error message for this case.
2490
Theodore Ts'o08b21301997-11-03 19:42:40 +00002491 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
2492 to take the e2fsck context as their first argument.
2493 Change dir_info.c routines to take an e2fsck_context,
2494 renamed them to start with e2fsck_ to avoid namespace
2495 issues, and changed them to store the directory
2496 information inside the e2fsck context.
2497 Added e2fsck_run() which calls all of the e2fsck passes in
2498 the correct order, and which handles the return of abort
2499 codes. Added abort processing, both via setjmp/longjmp
2500 and via flags in the e2fsck context. Use a flag in the
2501 e2fsck context instead of the restart_e2fsck global
2502 variable. Change uses of free and malloc to
2503 ext2fs_free_mem and ext2fs_get_mem.
2504
Theodore Ts'o291c9041997-10-31 06:17:08 +00002505Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2506
2507 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
2508 consistency.
2509
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00002510Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2511
2512 * pass3.c (get_lost_and_found): Check error return of
2513 EXT2_FILE_NOT_FOUND instead of ENOTDIR
2514
2515 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
2516 instead of ENOTDIR
2517
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002518Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2519
Theodore Ts'o519149f1997-10-25 03:49:49 +00002520 * unix.c (PRS): Make the variable which getopt returns into be
2521 an int, so that it won't lose on platforms where char is
2522 unsigned.
2523
Theodore Ts'o622f5f21997-10-24 04:18:21 +00002524 * pass1b.c (clone_file): Fix bug in error reporting in the case
2525 where cs.errcode is non-zero.
2526
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002527Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2528
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00002529 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
2530 RESOURCE_TRACK around code which uses init_resource_track
2531 and print_resource_track. (Not all systems have timeval)
2532
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00002533 * super.c: Remove excess #includes which are not necessary.
2534
2535 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
2536
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00002537Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2538
2539 * pass*.c, super.c: Massive changes to avoid using printf and
2540 com_err routines. All diagnostic messages are now routed
2541 through the fix_problem interface.
2542
2543Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2544
2545 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
2546 entries.
2547
2548 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
2549 PR_2_DUP_DOT_DOT.
2550
2551Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2552
2553 * problem.c: Added new problem codes for some of the
2554 superblock corruption checks, and for the pass header
2555 messages. ("Pass 1: xxxxx")
2556
2557 * util.c (print_resource_track): Now takes a description
2558 argument.
2559
2560Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2561
2562 * super.c, unix.c, e2fsck.c: New files to separate out the
2563 operating-specific operations out from e2fsck.c.
2564 e2fsck.c now contains the global e2fsck context management
2565 routines, and super.c contains the "pass 0" initial
2566 validation of the superblock and global block group
2567 descriptors.
2568
2569 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
2570 (nearly) all global variables and moved them to the e2fsck
2571 context structure.
2572
2573 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
2574 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
2575 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
2576
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00002577Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2578
2579 * message.c: Add compression for the word "Illegal"
2580
2581 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
2582 PR_2_BAD_BLOCK_DEV
2583
2584Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2585
2586 * pass1.c (pass1, check_device_inode), pass2.c
2587 (process_bad_inode): Use a more stringent test for a valid
2588 device.
2589
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00002590Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2591
2592 * e2fsck.c (check_mount): Add stronger warning message about the
2593 perils of running e2fsck on a mounted filesystem.
2594
Theodore Ts'o024996c1997-06-17 05:38:35 +00002595Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2596
2597 * Release of E2fsprogs 1.11
2598
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00002599Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2600
2601 * pass1.c (mark_table_blocks): Mark the superblock and group
2602 descriptor blocks first, so that any conflicts between
2603 these and the bitmap or inode table blocks is noticed.
2604
2605 * problem.c: Fix message printed out when a block or inode bitmap
2606 conflicts with other fs data, has the correct group number
2607 in it.
2608
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00002609Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2610
2611 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
2612
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002613Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2614
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00002615 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
2616 Hawes (whawes@star.net).
2617
Theodore Ts'of635d7f1997-05-09 02:50:16 +00002618 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
2619 bad blocks command so that all of the filesystem gets
2620 tested in the case where the blocksize 2048 or 4096.
2621
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00002622Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
2623
2624 * Release of E2fsprogs version 1.10
2625
2626Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2627
2628 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
2629 where ext2fs_get_next_inode returns the
2630 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
2631
2632Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2633
2634 * Release of E2fsprogs version 1.09
2635
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00002636Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2637
2638 * Release of E2fsprogs version 1.08
2639
Theodore Ts'o521e3681997-04-29 17:48:10 +00002640Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2641
2642 * pass1b.c (clone_file_block): If we clone a directory, we need to
2643 update the dblist entry so that we check (and correct) the
2644 right directory block.
2645
2646Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2647
2648 * pass1.c (process_block): Don't clear blocks references to
2649 filesystem metadata; let pass 1B handle this case.
2650
2651 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
2652
2653 * pass1b.c (pass1d): Deal with a block which is shared with
2654 filesystem metadata.
2655
2656 * e2fsck.h: Make block_illegal_map be a global variable
2657
2658Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2659
2660 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
2661 feature.
2662 (get_backup_sb): New function which attempts to obtain the
2663 correct backup superblock (if possible).
2664
2665Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2666
2667 * e2fsck.c (main): Check the version of the library, and warn if
2668 the library is out of date; this happens generally due to
2669 users who manually install e2fsprogs.
2670
2671 * pass1.c (pass1_get_blocks): If the passed in inode number for
2672 get_blocks isn't what we're expecting pass back
2673 EXT2_ET_CALLBACK_NOT_HANDLED.
2674
Theodore Ts'o21c84b71997-04-29 16:15:03 +00002675Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
2676
2677 * Release of E2fsprogs version 1.07
2678
2679Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2680
2681 * icount.c: New file which implements an inode count abstraction.
2682 This significantly reduces amount of memory needed to
2683 check really large filesystems.
2684
2685 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
2686 abstraction.
2687
2688Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2689
2690 * dirinfo.c (dir_info_iter): New function which allows iteration
2691 over the directories in the dir_info map.
2692
2693 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
2694 over all directories in the dir_info structure, instead of
2695 iterating all inodes looking for directories, and then
2696 looking up the directories using get_dir_info().
2697
2698Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2699
2700 * pass1.c (pass1, process_block):
2701 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
2702 manual code to manage the directory block list information.
2703
2704 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
2705 (deallocate_inode): Call the ext2 library routine
2706 ext2_inode_has_valid_blocks() instead of
2707 inode_has_valid_blocks().
2708
2709 * swapfs.c (swap_inodes): Add check so that we don't try to call
2710 swap_inode_blocks unless the inode has valid blocks.
2711 (Otherwise a long fast symlink might cause
2712 swap_inode_blocks to erroneously get called.)
2713
2714Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2715
2716 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
2717 PR_2_DOT_DOT_NULL_TERM.
2718
2719 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
2720 .. entries are null-terminated, since the 2.0 kernel
2721 requires this (for no good reason).
2722
2723Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2724
2725 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
2726 that we can recover from missing inode tables.
2727
2728 * dirinfo.c (get_dir_info): If there are no directories in the
2729 dir_info abstraction, don't core dump (because dir_info is
2730 NULL).
2731
2732 * e2fsck.c (main): Don't try using the backup superblocks if there
2733 aren't any.
2734 (check_super_block): If there are illegal inode table or
2735 bitmaps, set the filesystem as being in error.
2736
2737Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2738
2739 * pass2.c (check_dir_block): Added check to make sure that rec_len
2740 is a a multiple of 4 (so that the directory entries are
2741 4-byte aligned).
2742
2743Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2744
2745 * Makefile.in (uninstall): Uninstall all programs in the PROGS
2746 line.
2747 (PROGS): Don't build and install the extend program by
2748 default.
2749
2750
2751Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2752
2753 * pass1.c (process_inodes): Make sure the stashed_ino variable is
2754 saved and restored as well.
2755 (pass1): For fast sym links, skip the check_blocks
2756 processing step altogether.
2757
2758Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2759
2760 * problem.c, message.c: New files, to completely refurbish how
2761 filesystem problems are reported to the user. The
2762 diagnostic messages are now encoded out in an easily
2763 customizable, extensible format. The messages printed out
2764 in preen mode are all on one line, and contain the device
2765 name.
2766
2767Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2768
2769 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
2770 deleted files.
2771
2772 * pass1.c (pass1): Ignore missing inode table errors during the
2773 scan, and just skip past those inodes.
2774
2775 * pass3.c (check_root): Remove root_ino argument, and assume that
2776 the root inode must be EXT2_ROOT_INO. Move responsibility
2777 of setting the parent of the root inode in the directory
2778 inode structure to pass2().
2779
2780 * pass2.c (check_dir_block): Don't allow links to the root
2781 directory.
2782
2783 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
2784 since the inode is no longer used.
2785
2786Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2787
2788 * e2fsck.c (main): If the superblock magic number is wrong, or the
2789 block group fails a sanity check, then automatically
2790 restart trying to use the backup superblocks.
2791
2792 * pass1.c (mark_table_blocks): Make the inode tables ahead of
2793 everything else; in the case where a bitmap block overlays
2794 the inode table, the inode table should take precedence.
2795
2796 * pass2.c (maybe_clear_entry): Make the deleted/unused error
2797 message fit on one line, since the error can happen during
2798 a preen pass. (We eventually need to revamp the whole
2799 e2fsck error reporting and prompting system, but that's a
2800 job for another day.)
2801
2802Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2803
2804 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
2805 for the benefit of the inode scan functions.
2806
2807 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
2808 indicating that an inode is in a bad block, mark that
2809 inode as being used, as well as in the inode "bb" map.
2810
2811 * pass2.c (maybe_clear_entry): New function which generalizes the
2812 error cases when a directory entry needs to be cleared.
2813 (check_dir_block): If an inode is in the "bb" map, offer
2814 to clear the directory entry, since the inode is in a bad
2815 block.
2816
2817 * pass4.c (pass4): If an inode is marked as used, but is is marked
2818 in the "bb" map, don't process it as a disconnected inode.
2819
2820Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2821
2822 * Release of E2fsprogs version 1.06
2823
Theodore Ts'o5c576471997-04-29 15:29:49 +00002824Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2825
2826 * e2fsck.c (main): Print out the version number of the shared
2827 library when using the -V option.
2828
2829 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
2830 consistency's sake.
2831
2832 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
2833 out the backup superblocks when we know we have a valid
2834 filesystem.
2835
2836Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2837
2838 * util.c (preenhalt): Make it explicit on preenhalt that running
2839 e2fsck manually means without the -a or -p flag.
2840
2841Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2842
2843 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
2844 (Linux/FT actually sets the mode bits, so we have to
2845 handle it specially.)
2846
2847 * e2fsck.c (check_if_skip): Print a message if the filesystem is
2848 just dirty, so that the user knows that it's about to be
2849 checked (since this will take a while).
2850
2851Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2852
2853 * pass4.c: If a disconnected inode is zero-length, prompt to
2854 delete it instead of connecting it to lost+found.
2855
2856Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2857
2858 * Release of E2fsprogs version 1.05
2859
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00002860Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2861
2862 * pass4.c (pass4): If the user refuses to connect an unattached
2863 inode to lost+found, don't try to set i_links_count. This
2864 is bad, since if the user says yes, the inode will be
2865 marked as unused, which is not necessarily the right
2866 thing, especially since the rest of the cleanup doesn't
2867 happen here.
2868
2869 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
2870 dellocating an inode. (Not strictly necessary, but...)
2871
2872 * pass4.c (pass4): Add "bonehead" explanation to the "programming
2873 error" message.
2874
2875Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2876
2877 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
2878 byte-swap the filesystem so that it is normalized. -S
2879 will byte-swap the filesystem regardless of its current
2880 byte-order.
2881
2882 * swapfs.c: New file, which will byte-swap a filesystem.
2883
2884Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2885
2886 * pass1.c (pass1): Change handling on files with non-zero dtime
2887 and non-zero i_link_count; before we treated them as
2888 deleted file per botched ext2 0.3c kernel behavior. We
2889 now clear dtime instead.
2890
2891Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2892
2893 * e2fsck.c (main): If e2fsck sets the clean bit, even if
2894 nothing else is changed, make sure FSCK_NONDESTRUCT is
2895 set (since after all having the filesystem set to
2896 invalid is an error. :-)
2897
2898Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2899
2900 * pass1.c (process_block): Make sure that meta data doesn't get
2901 accidentally set in the dir_blocks array (which could
2902 happen in some error condtions).
2903
2904 * pass1.c (pass1):
2905 * pass2.c (process_bad_inode): Check for fragments in a
2906 OS-independent fashion.
2907
2908Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2909
2910 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
2911 cleanup for the filesystem.
2912
2913Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2914
2915 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
2916
Theodore Ts'o62c06f71997-04-29 14:34:47 +00002917Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2918
2919 * Release of E2fsprogs version 1.04
2920
2921Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2922
2923 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
2924 try "e2fsck -b 8193" before allowing e2fsck to relocate
2925 inode table blocks.
2926
2927 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
2928 depending on the option to configure. Added targets for
2929 e2fsck.static and e2fsck.shared for people who want to
2930 build a static or shared variant manually.
2931
Theodore Ts'o7f88b041997-04-26 14:48:50 +00002932Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
2933
2934 * Release of E2fsprogs version 1.03
2935
2936Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
2937
2938 * e2fsck.c (show_stats): Don't use floating point to display
2939 percentage of non-contiguous files, as different libc
2940 handle result truncation differently, and this causes the
2941 test suite to bomb out depending on which libc you are
2942 using.
2943
2944 * util.c (allocate_memory): Fix error message to omit extraneous
2945 %%s.
2946
2947Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
2948
2949 * pass4.c (pass4):
2950 * pass2.c (check_dir_block):
2951 * pass1.c (pass1): Add support for dynamic first inode revision.
2952
2953Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
2954
2955 * pass3.c (check_root): Fix spelling typo
2956
2957Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
2958
2959 * e2fsck.c (check_super_block): If the superblock fails certain
2960 internal consistency checks, exit with a fatal error after
2961 printing the "superblock is corrupt message".
2962
Theodore Ts'o74becf31997-04-26 14:37:06 +00002963Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
2964
2965 * Release of E2fsprogs version 1.02
2966
2967Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
2968
2969 * pass1.c (process_block): Check to see if a file is "fragmented".
2970 i.e., non-contiguous. Note that any file which is larger
2971 than the block group is guaranteed to be non-contiguous.
2972 We may want to use a different hueristic for deciding
2973 whether or not a file is "fragmented".
2974
2975 * e2fsck.c (show_stats): Print statistics of how many
2976 non-contiguous files are on the system.
2977
2978Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
2979
2980 * badblocks.c (read_bad_blocks_file, test_disk): Fold
2981 functionality of test_disk() (which runs badblocks) into
2982 read_bad_blocks_file(); test_disk() now calls
2983 read_bad_blocks_file() with a NULL bad_blocks_file
2984 argument.
2985
2986Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
2987
2988 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
2989 #if defined(linux). The latter won't work if we're
2990 compiling -ansi.
2991
Theodore Ts'o297f47a1997-04-26 14:25:20 +00002992Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
2993
2994 * e2fsck.c (check_mount): For Linux systems, the check to see if
2995 the root is mounted read-only has to be done for all
2996 filesystems, not just for the root filesystem, due to the
2997 way that some /etc/rc scripts are set up.
2998
Theodore Ts'o50e1e101997-04-26 13:58:21 +00002999Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
3000
3001 * Makefile.in (install): Strip programs when they are installed.
3002 (e2fsck): Build e2fsck statically.
3003
3004Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
3005
3006 * util.c (preenhalt): Preenhalt now takes an argument, which is an
3007 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
3008 flag in the superblock in cases where preenhalt is called.
3009 All calls to preenhalt() were changed to either
3010 preenhalt(fs) or preenhalt(NULL) in a few cases where the
3011 fs pointer was not available. (Most notable, for block
3012 read/write errors.)
3013
3014Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
3015
3016 * ehandler.c:
3017 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
3018
3019Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
3020
3021 * e2fsck.c (show_stats): Show statistics about how many inodes
3022 have indirect, doubly indirect, and triply indirect
3023 blocks. Allow up to 8 digits for statistics, instead of
3024 merely 6, so things look pretty for large filesystems.
3025
3026 * pass1.c (pass1): Keep statistics about indirect, doubly
3027 indirect, and triply indirect blocks.
3028
3029 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
3030 pass 1.
3031
3032Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
3033
3034 * util.c, ehandler.c: Move #include of <sys/resource.h> after
3035 #include of "e2fsck.h", since sys/resource.h may depend on
3036 sys/time.h, which is #included in e2fsck.h.
3037
3038Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
3039
3040 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
3041 function to determine if the device is mounted.
3042
3043 * e2fsck.c (main): Add better error messages if ext2fs_open()
3044 fails.
3045
3046Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
3047
3048 * pass1.c (check_blocks): If we're clearing a directory, clear
3049 pb.is_dir so we don't do the following check of making
3050 sure the directory size matches; this is pointless, since
3051 we've already cleared the inode.
3052
3053Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3054
3055 * pass1.c (bad_primary_block): New function, called by
3056 process_bad_block, which explains the facts of life to the
3057 user when a block in the primary superblock or primary
3058 group descriptors is bad.
3059
3060 * pass2.c (check_dot): Handle the case where the first directory
3061 entry is used, but not ".".
3062
3063 * pass2.c (check_dotdot): Handle the case where the second directory
3064 entry is used, but is not "..".
3065
3066Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3067
3068 * e2fsck.c (check_super_block): Get the size of the physical
3069 device and if it is smaller than the reported size of the
3070 filesystem, report an error.
3071
3072Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
3073
3074 * e2fsck.c (check_if_skip): Print the number of allocated files and
3075 blocks on clean filesystems.
3076
3077Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
3078
3079 * e2fsck.8: Updated date and version number.
3080
3081Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
3082
3083 * pass1.c (check_blocks): Check that directory size matches *exactly*
3084 the count of allocated blocks.
3085
3086Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
3087
3088 * pass1b.c (pass1d): Free the shared[] array when we're done with
3089 it to avoid a memory leak.
3090
3091 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
3092 block_dup_map.
3093
3094 * pass2.c (process_bad_inode): When clearing the inode, make sure
3095 the pathname is freed, to prevent a memory leak.
3096
3097 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
3098 when we're finished with them.
3099 (check_block_bitmaps): Free free_array when we're finished
3100 with them.
3101
3102 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
3103 linking the executable.
3104
3105 * pass2.c (process_bad_inode): Even on OS's that don't support the
3106 fragment fields, make sure the Linux equivalent fields are
3107 set to zero. If an OS wants to reuse these fields, which
3108 is probably a bad idea (although we may get desperate in
3109 the future) this code will have to be changed.
3110
3111 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
3112 on the inode field, and then blockcnt field. This is just
3113 to keep the ordering of dir_blocks the same on all
3114 platforms when there are more than on missing directory
3115 blocks, which are indicated directories with holes, which
3116 are indicated with the block number being set to zero.
3117
3118Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3119
3120 * pass1.c (check_blocks, process_block): check_blocks() modified
3121 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
3122 the inode is a directory. process_block() now checks to
3123 see if a directory has a "hole", or missing block. If so,
3124 this fact is recorded in the directory block list so that
3125 the problem can be resolved in pass #2.
3126
3127 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
3128 allocate new blocks for directories with "holes". Called
3129 out of check_dir_block if a block in the directory block
3130 list is zero.
3131
3132 * pass3.c (get_lost_and_found): Move location of free(block) to
3133 prevent possible memory leak.
3134
3135Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3136
3137 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
3138 instead of alloca() --- alloca is not portable! Check to
3139 make sure the filename is not longer than EXT2_NAME_LEN,
3140 and offer to fix it by truncating it, since it should
3141 never happen.
3142
3143 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
3144 not portable!! In any case putenv() in some systems must
3145 take a static character array or malloc()'ed memory;
3146 passing memory allocated using alloca() to putenv() is not
3147 advisable.
3148
3149 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
3150 alloca() --- alloca() is not portable!!!
3151
3152Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
3153
3154 * pass1b.c (pass1c):
3155 * pass3.c (check_root, get_lost_and_found):
3156 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
3157 to read/write the directory block.
3158
3159Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
3160
3161 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
3162 make sure VMIN and VTIME are set correct.
3163
3164Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
3165
3166 * pass1.c (mark_block_used): Change to be an inline function.
3167 Assume that the block validity checks are already done,
3168 and use the fast variant of the bitmap functions.
3169
3170Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
3171
3172 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
3173 bounds of the bitmaps in advance, and then use the fast
3174 variant of e2fs_test_{block,inode}_bitmap.
3175
3176 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
3177 the bounds checking has already been done earlier.
3178
3179Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
3180
3181 * pass1.c (pass1): Allocate and free the block_illegal_map, which
3182 is used for shortcut processing in process_block.
3183 (mark_table_blocks): Initialize block_illegal_map with the
3184 filesystem blocks.
3185 (describe_illegal_block): New helper function that
3186 describes why a block is illegal.
3187 (process_block): Use block_illegal_map as a shortcut
3188 to determine whether a block is bad. Use
3189 describe_illegal_block to print out why the block is illegal.
3190
3191Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
3192
3193 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
3194
3195 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
3196 <mntent.h> if they don't exist. (Mostly so that "make
3197 depend" works.)
3198
3199 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
3200 it exists).
3201
3202 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
3203 exist.
3204
3205Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3206
3207 * pass2.c (process_bad_inode, check_for_zero_long,
3208 check_for_zero_char): Change long to u32, and char to u8.
3209
3210Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3211
3212 * util.c (inode_has_valid_blocks):
3213 * pass2.c (process_bad_inode):
3214 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
3215 LINUX_S_IS* instead of S_IS*.
3216
3217 * e2fsck.h: Don't #include <sys/stat.h>
3218
3219 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
3220 this program is pretty much useless if BLKFLSBUF isn't
3221 supported.)
3222
3223 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
3224 used.
3225
3226Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
3227
3228 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
3229 to allocate space for file names instead of using fixed size buffers.
3230 (process_bad_inode): Only check inode frag fields if
3231 HAVE_EXT2_FRAGS is defined (by configure).
3232 * pass1.c (pass1): Only check the inode frag fields if
3233 HAVE_EXT2_FRAGS is defined (by configure).
3234
3235 * e2fsck.c (check_mount): Only check for a mounted filesystem if
3236 HAVE_MNTENT_H is defined (by configure).
3237 (PRS): Use alloca to allocate the new path string, instead of
3238 having a fixed size buffer (which was the wrong size anyway).
3239 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
3240 is defined.
3241
3242 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
3243 defined (by configure).
3244
3245 * Makefile.in: Rewritten to conform to GNU coding standards and
3246 support separate compilation directories.
3247
3248Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
3249
3250 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
3251
Theodore Ts'of3db3561997-04-26 13:34:30 +00003252Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
3253
3254 * pass1.c (unwind_pass1): Clear the file type statistics counter
3255 when pass 1 needs to be restarted from scratch.
3256
3257 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
3258 being reallocated to blocks in the next block group,
3259 instead of the current block grup.
3260
3261 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
3262 inode.i_links_count is set.
3263
3264Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
3265
3266 * pass1.c (process_block): Add checks for if the block is
3267 trepassing on a superblock or group descriptor table.
3268
3269Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
3270
3271 * main.c (corrupt_msg): Extend the message which is printed out
3272 when the superblock is corrupt, to include the suggestion
3273 of using the -b option to specify an alternate superblock.
3274
3275Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
3276
3277 * badblocks.c (read_bad_blocks_file): If we are adding or
3278 replacing bad blocks in the bad blocks inode, sanity check
3279 the bad block inode first, and clear out any illegal blocks.
3280
3281 * pass2.c (check_name): Don't bomb out if the attempt to get the
3282 pathname of the containing directory returns an error; the
3283 directory may be too badly damaged to expect that
3284 ext2fs_get_pathname will always succeed. Use "???" if the
3285 pathname can't be obtained (it's only for a printf to the
3286 user anyway).
3287
3288 The name of the containing directory and the bad filename
3289 were incorrectly interchanged in the user message. Fixed.
3290
3291 * pass2.c (check_name, check_dir_block): Use a common static
3292 string for the unknown pathname.
3293
3294Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
3295
3296 * Fixed lots of printf formats to make sure that block and inode
3297 numbers are printed as unsigned integers.
3298
3299Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
3300
3301 * pass5.c (check_block_end): Fix calculation of how the last block
3302 in the block bitmap should be calculated.
3303
3304Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
3305
3306 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
3307 be an ext2fs_inode_bitmap, and free it properly.
3308
3309 * e2fsck.h
3310 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
3311 level to the superblock.
3312
3313Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
3314
3315 * e2fsck.c (usage): Fixed bogus usage message.
3316
3317Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
3318
3319 * pass1.c (process_bad_block): Fixed bug so that blocks in the
3320 backup superblocks and group descriptors are handled gracefully.
3321