]> git.ipfire.org Git - thirdparty/e2fsprogs.git/blame - e2fsck/ChangeLog
Include inttypes.h if present. New macros INT_TO_VOIDPTR and
[thirdparty/e2fsprogs.git] / e2fsck / ChangeLog
CommitLineData
c4e3d3f3
TT
12003-08-01 Philipp Thomas <pthomas@suse.de>
2
0c193f82
TT
3 * Include inttypes.h if present. New macros INT_TO_VOIDPTR and
4 VOIDPTR_TO_INT. Use them throughout for int<->void *
5 casts to fix 64-bit warnings.
6
c4e3d3f3
TT
7 * dirinfo.c, dx_dirinfo.c, e2fsck.c, ea_refcount.c, journal.c,
8 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
9 pass5.c, super.c, swapfs.c: ext2fs_getmem(),
10 ext2fs_free_mem(), and ext2fs_resize_mem() all now take a
11 'void *' instead of a 'void **' in order to avoid pointer
12 aliasing problems with GCC 3.x.
13
9c7ec178
TT
142003-07-25 Theodore Ts'o <tytso@mit.edu>
15
16 * Release of E2fsprogs 1.34
17
48e6e813
TT
182003-07-06 Theodore Ts'o <tytso@mit.edu>
19
20 * pass2.c: Fix gcc -Wall nitpicks (missing #include <string.h>)
21
22 * dict.c, dict.h: Fix gcc -Wall nitpicks (indented cpp directives)
23
d3128ccb
TT
242003-06-8 Theodore Ts'o <tytso@mit.edu>
25
26 * problem.c: Fix spelling error.
27
113e405b
TT
282003-05-17 Theodore Ts'o <tytso@mit.edu>
29
30 * unix.c (show_stats), e2fsck.h: Use ngettext (abbreivated with
31 the macro P_(str1, str2, n)) to simplify the statistics
32 reporting.
33
2a29f135
TT
342003-05-05 Theodore Ts'o <tytso@mit.edu>
35
36 * unix.c (main): If --enable-testio-debug is set, then use the
37 test_io manager so we can watch what e2fsck is doing.
38
a04eba3f
TT
392003-05-03 Theodore Ts'o <tytso@mit.edu>
40
ddc32a04
TT
41 * unix.c (show_stats): Remove uneeded use of _() around string
42 under #ifndef NLS
43
44 * problem.c: Mark two strings (PR_1_RELOC_TO and
45 PR_2_NON_UNIQUE_FILE) as not being printf format strings.
46 Fix typo (doubled 'is') in PR_2_FILE_ACL_BAD.
47
a04eba3f
TT
48 * Makefile.in: Add $(LIBINTL) to the link line so we can support
49 using the internal gettext library.
50
51 * e2fsck.h: Add #ifndef protection around LOCALEDIR definition.
52
6177c41f
TT
532003-04-27 Theodore Ts'o <tytso@mit.edu>
54
55 * message.c (expand_at_expression): Fixed NLS support for message
56 abbreviations.
57
71df0dc3
TT
582003-04-21 Theodore Ts'o <tytso@mit.edu>
59
60 * Release of E2fsprogs 1.33
61
520ead37
TT
622003-04-19 Theodore Ts'o <tytso@mit.edu>
63
64 * rehash.c: Fix lint warnings by including string.h and ctype.h
65
66 * pass2.c (dict_de_cmp): Fix lint warnings by using const pointers.
67
68 * unix.c (e2fsck_simple_progress), e2fsck.h: Fix lint warnings by
69 using const pointers. Remove unused variables.
70
12dd69f5
TT
712003-04-17 Theodore Ts'o <tytso@mit.edu>
72
73 * rehash.c (name_cmp): Sort the deleted inodes to the end of the
74 list, for portability to systems that whose qsort does not
75 perform a stable sort.
76
bc34d6be
TT
772003-04-16 Theodore Ts'o <tytso@mit.edu>
78
79 * unix.c: Bracket progress bar output with control-A and control-B
80 characters. These characters are used as in-band
81 signalling to allow a logging program to filter out the
82 progress bar.
908b785c
TT
83 (PRS): Use setvbuf instead of setbuf to force stdout and
84 stderr to be non-buffered when the stdout/stderr are a pipe.
12dd69f5
TT
85 This fixes a cosmetic problem when using e2fsck under
86 logsave.
908b785c 87
fff45483
TT
882003-04-12 Theodore Ts'o <tytso@mit.edu>
89
90 * unix.c: Add #ifdef around #include <sys/ioctl.h>
91
2a77a784
TT
922003-04-05 Theodore Ts'o <tytso@mit.edu>
93
94 * super.c (check_super_block): Update the global free block and
95 inode counters from the block group specific counters
96 quietly. This is needed for an experimental patch which
97 eliminates locking the entire filesystem when allocating
98 blocks or inodes; if the filesystem is not unmounted
99 cleanly, the global counts may not be accurate.
100
aa75eccc
TT
1012003-03-17 Theodore Ts'o <tytso@mit.edu>
102
103 * util.c: Explicitly declare e2fsck_global_ctx as extern for the
104 benefit of the Apple Darwin port.
105
1d2eef42
TT
1062003-03-15 Theodore Ts'o <tytso@mit.edu>
107
108 * rehash.c (e2fsck_rehash_dir): If user specified the -n option,
109 skip trying to write out directory.
110 (e2fsck_rehash_directories): Fix the percentage
111 calculation in the progress bar.
112
b0700a1b
TT
1132003-03-14 Theodore Ts'o <tytso@mit.edu>
114
12dd69f5
TT
115 * problem.c, problem.h (PR_2_REPORT_DUP_DIRENT): Add new problem
116 code.
0926668d
TT
117
118 * pass2.c (check_dir_block): Check for duplicate filenames within
119 a single directory block (because this is the easy case;
120 we don't currently check for duplicates that span
121 directory blocks, for now. Eventually for htree
122 directories we can do this by searching for all directory
123 blocks that have a hash overflow, and then searching the
124 adjacent blocks to find all other potential duplicates.)
125
e71d8731
TT
126 * iscan.c, scantest.c, unix.c: And #ifdef protection around
127 #include of malloc.h
128
b0700a1b
TT
129 * rehash.c (duplicate_search_and_fix): Now search for duplicates
130 filenames, and either prompt to remove a complete
131 duplicate entry, or to rename a duplicate filename.
132 (e2fsck_rehash_dir): Use a progress bar to report
133 progress, and don't print all of the directory inodes as
134 they are optimized.
135
136 * problem.c, problem.h (PR_2_DUPLICATE_DIRENT,
137 PR_2_NON_UNIQUE_FILE): New problem codes.
138
139 * unix.c (e2fsck_simple_progress), e2fsck.h: New function which
140 can be called to provide specialized progress bars that
141 are not related to the top-level pass-based completion
142 percentage.
143
144 * pass3.c (e2fsck_adjust_inode_count), e2fsck.h: Export previously
145 static function.
146
77be4d2d
TT
1472003-03-06 <tytso@mit.edu>
148
149 * e2fsck.8.in: Fix minor nit in the -C option. (Addresses Debian
150 bug #173612)
151
f364093b
TT
1522003-03-01 Theodore Ts'o <tytso@mit.edu>
153
154 * Makefile.in, journal.c, unix.c: Use blkid functions to find the
155 journal from the UUID, and to interpret the device
156 specification.
157
158 * e2fsck.c: Free the blkid_cache when releasing the e2fsck context
159 structure.
160
161 * e2fsck.h: If strnlen is not present, define it as a macro which
162 calls e2fsck_strlen(). Add prototype for string_copy().
163 Add blkid_cache to e2fsck context, and make
164 filesystem_name, device_name, and journal_name be
165 non-const variables.
166
167 * pass1.c, pass2.c: Remove static strnlen function
168
169 * util.c (string_copy, e2fsck_strnlen): New functions
170
19445ef9
TT
1712003-01-29 Theodore Ts'o <tytso@mit.edu>
172
173 * unix.c (usage): Make descripton -c be a bit more explicit
174
4f489285
TT
1752003-01-22 Theodore Ts'o <tytso@mit.edu>
176
177 * pass1.c (check_blocks): Use the EXT2_I_SIZE macro.
178
b92ae153
TT
1792003-01-02 Theodore Ts'o <tytso@mit.edu>
180
181 * unix.c (main): Detect if there is an attempt to run the journal
182 twice, and abort with an error if this is the case.
183 (Address IBM Bugzilla bug #1226)
184
e34bf43a
TT
1852002-12-18 Theodore Ts'o <tytso@mit.edu>
186
187 * pass2.c (strnlen): Provide strnlen if libc doesn't.
188
8161a748
TT
1892003-11-19 Theodore Ts'o <tytso@mit.edu>
190
191 * unix.c (PRS): Print an error if more than one of the -p/-a, -n
192 or -y options are specified.
193
54779c66
TT
1942002-11-12 Theodore Ts'o <tytso@mit.edu>
195
196 * problem.c: Make HTREE problems PR_PREEN_OK, so that we don't
197 abort an e2fsck after the filesystem has been mounted
198 using the 2.4 ext2 codebase.
199
38513011
TT
2002002-11-09 Theodore Ts'o <tytso@mit.edu>
201
202 * Release of E2fsprogs 1.32
203
ae65b29f
TT
2042002-11-08 Theodore Ts'o <tytso@mit.edu>
205
206 * Release of E2fsprogs 1.31
207
299d7424
TT
2082002-11-08 <tytso@snap.thunk.org>
209
c1637bd3
TT
210 * unix.c (main): Fix a bug where e2fsck could erroneously mark a
211 filesystem as being valid if it was being checked and it
212 is interrupted with a ^C. (Bug introduced in e2fsprogs
213 1.28.)
214
5e72cdbe
TT
215 * unix.c (PRS), journal.c: Set the default level of journal
216 debugging to be 0, and allow the user to set the level of
217 journal debugging by using the E2FSCK_JBD_DEBUG
218 environment variable.
219
299d7424
TT
220 * pass1.c (new_table_block), super.c (check_super_block), swapfs.c
221 (swap_filesys): Clear EXT2_FLAG_MASTER_SB_ONLY to make
222 sure the backup superblocks and group descriptors are
223 updated when we make an important change to the
224 superblocks and/or group descriptors. (i.e., generating a
225 UUID, allocating filesystem metadata, or byte-swapping the
226 filesystem.)
227
ee895139
TT
2282002-11-07 Theodore Ts'o <tytso@mit.edu>
229
230 * e2fsck.h, unix.c (main, check_mount): Fix e2fsck so that it
231 returns the appropriate exit code, so that the boot
232 scripts will be told that they need to automatically
233 reboot.
234
5d823a47
TT
2352002-10-31 Theodore Ts'o <tytso@mit.edu>
236
237 * Release of E2fsprogs 1.30
238
be93ef0c
TT
2392002-10-31 Theodore Ts'o <tytso@mit.edu>
240
b40ffd79
TT
241 * unix.c (usage), e2fsck.8.in: Add the -D option to the usage and
242 command synopsis. (Addresses Debian bug #167108)
243
be93ef0c
TT
244 * pass1.c (e2fsck_pass1): Check the superblock write time to see
245 whether or not we can safely do the LOW_DTIME checks.
246 (Addresses Sourceforge bug #620980)
247
76dd5e5c
TT
2482002-10-30 Theodore Ts'o <tytso@mit.edu>
249
482afc44
TT
250 * Makefile.in (install): Search all compression extensions when
251 deleting old man pages.
252
76dd5e5c
TT
253 * pass1.c (mark_table_blocks): Fix bug in meta_bg support; only
254 mark blocks legacy group descriptor blocks up to
255 s_first_meta_bg.
256
a49929b6
TT
2572002-10-20 Theodore Ts'o <tytso@valinux.com>
258
259 * pass1.c (mark_table_blocks): Add support for the meta_blockgroup
260 filesystem format.
261
3e699064
TT
2622002-10-13 Theodore Ts'o <tytso@mit.edu>
263
264 * pass3.c (e2fsck_get_lost_and_found): Pass in mode 700 to
265 ext2fs_new_inode().
266
267 * unix.c (show_stats): Fix format bug if NLS is in use.
268
269 * journal.c, pass1.c, revoke.c, util.c: Fix gcc -Wall nits.
270
64aecc4d
TT
2712002-10-08 Theodore Ts'o <tytso@mit.edu>
272
273 * pass3.c (e2fsck_get_lost_and_found): Create the lost+found
274 directory with mode 0700.
275
8132d840
TT
2762002-10-02 Theodore Y. Ts'o <tytso@mit.edu>
277
278 * pass2.c (parse_int_node, check_dir_block): Add byte-swap
279 functions around the htree code, so that it works on
280 big-endian machines.
281
282 * swapfs.c (swap_filesys): For PPC machines, byte-swap the bitmap,
283 since PPC big-endian filesystems were historically wierd.
284 This is just for the regression test, since no one
285 actually uses them anymore...
286
ad4fa466
TT
2872002-09-30 Theodore Ts'o <tytso@mit.edu>
288
289 * problem.c, problem.h (PR_2_HTREE_BAD_LIMIT,
290 PR_2_HTREE_BAD_COUNT, PR_2_HTREE_HASH_ORDER,
291 PR_2_HTREE_BAD_DEPTH): Add new problem codes.
292
293 * pass2.c (salvage_directory, check_dir_block): Avoid counting
294 directory entries twice during a directory salvage. Make
295 the salvaging algorithm smarter about directory entry size
296 overruns.
297 (parse_int_node): Add check to make sure the limit and
298 count fields in the node headers are sane. Also check
299 to make sure the hash table in ascending order.
300 (pass2, htree_depth): For all leaf nodes, determine their
301 depth in the tree, and make sure it matches with the depth
302 in the htree root information.
303
fe5b72d1
TT
3042002-09-29 Theodore Ts'o <tytso@mit.edu>
305
e8254bfd
TT
306 * pass2.c (check_dir_block): Do a more paranoid check when trying
307 to determine whether or not a directory entry is a
308 completely empty leaf block or leaf node. Otherwise
309 e2fsck might get confused into thinking that a valid dxdir
310 was corrupted.
311
fe5b72d1
TT
312 * rehash.c (e2fsck_rehash_dir): Apply patch from Christopher Li
313 which avoids creating an empty directory entry at the end
314 of the directory block. This screws up earlier versions
315 of the indexed directory patch.
316
e70ae99e
TT
3172002-09-28 Theodore Ts'o <tytso@mit.edu>
318
319 * rehash.c (write_directory): Clear the index flag if by
320 reoptimizing the directory, we bring it back into a
321 non-indexed state.
322 (e2fsck_rehash_dir): Allow directories that contain two
323 blocks to be indexed. Otherwise when they grow, they
324 never will be indexed by the kernel.
325
326 * unix.c (main): Only update the master superblock; there's no
327 point updating the backup superblocks, and it speeds up
328 fsck slightly.
329
330 * pass2.c (salvage_directory): New function called by
331 check_dir_block() which is much more sophisticated about
332 how it salvages corrupted filesystems.
333
c6633059
TT
3342001-09-24 Theodore Tso <tytso@mit.edu>
335
336 * Release of E2fsprogs 1.29
337
cf3909ed
TT
3382002-09-06 Theodore Ts'o <tytso@mit.edu>
339
340 * rehash.c (copy_dir_entries): Fix bug which caused corrupted
341 directories if there are 4 or 8 bytes left over in a
342 directory page when optimizing/reindexing a directory.
343
87ee8dca
TT
3442001-08-31 Theodore Tso <tytso@thunk.org>
345
346 * Release of E2fsprogs 1.28
347
ceecbc75
TT
3482002-08-31 Theodore Ts'o <tytso@mit.edu>
349
350 * ehandler.c (e2fsck_handle_read_error): If the user asks to
351 ignore the error, offer to try forcing a write of the
352 block to the disk; sometimes this will cause the drive to
353 remap the bad block.
354
ea1959f0
TT
3552002-08-31 Theodore Ts'o <tytso@valinux.com>
356
357 * pass2.c (e2fsck_pass2): If this is a HTREE directory, sort the
358 dblist so that the first block of all of the directories
359 is handled first so we can read the hash version
360 information.
361 (check_dir_block): Examine the root node for correctness,
362 and offer to clear it if it is not correct. Also copy the
363 hash version to the dx_dir structure, so that the proper
364 hash function can be used for other blocks in the
365 directory.
366
367 * problem.c, problem.h (PR_2_HTREE_BAD_ROOT): Add new problem code.
368
a3da9d1d
TT
3692002-08-21 Theodore Ts'o <tytso@mit.edu>
370
371 * problem.c: Fix PR_1_RELOC_BLOCK_ALLOCATE message to explain that
372 it is necessary to find contiguous blocks in a particular
373 block group.
374
0684a4f3
TT
3752002-08-17 Theodore Ts'o <tytso@mit.edu>
376
f044b4d8
TT
377 * e2fsck.8.in: Add clarifying text describing how e2fsck works
378 with ext3 filesytems. (Addresses Debian bug #145044).
379
380 * pass1.c (handle_htree): Add support for EXT2_HASH_TEA
381
0684a4f3
TT
382 * e2fsck.h, e2fsck.c (e2fsck_allocate_context): Add new field to
383 the e2fsck context, ext_attr_ver, which specifies the EA
384 format version.
385
386 * unix.c (usage, parse_extended_opts, PRS), e2fsck.8.in: Add new
387 option -E, which allows the users to specify extended
388 options. Added ea_ver extended option.
389
390 * pass1.c (e2fsck_pass1_check_device_inode): Add ext2_filsys
391 argument to this function, so we can account for the
392 presence of extended attribute blocks attached to device
393 inodes.
394 (e2fsck_pass1_check_symlink, e2fsck_pass1): Take into
395 account the fact that symlinks can also have extended
396 attribute blocks.
397 (check_ext_attr): Don't be flexible about the EA format
398 version. Check against the version number in
399 ctx->ext_attr_ver.
400 (check_blocks): Check all inodes, so that we account for
401 extended attribute blocks belonging to special files.
402 Clean up i_size checks.
403
404 * pass1b.c (pass1b): Check all inodes, so that we account for
405 extended attribute blocks belonging to special files.
406 (delete_file_block): Use ext2fs_alloc_block_stats() to
407 update the filesystem statistics.
408 (delete_file): Attempt to decrement the extended
409 attribute refcount, and free the EA block if the count
410 hits zero.
411 (clone_file): Fixed bugs in EA handling. Don't call
412 block_iterate on inodes that don't have a valid i_block[]
413 array. Reread the base inode since it may have been
414 changed by ext2fs_block_iterate. When updating inodes as
415 part of cloning an EA block, write out the correct inode
416 structure.
417
418 * pass2.c (deallocate_inode_block, deallocate_inode): Use standard
419 ext2fs_alloc_*_stats functions to update the filesystem
420 statistics.
421 (deallocate_inode): Attempt to decrement the extended
422 attribute refcount, and free the EA block if the count
423 hits zero.
424 (e2fsck_process_bad_inode): Add extra argument to calls
425 to e2fsck_pass1_check_device_inode ().
426
427 * pass3.c (e2fsck_get_lost_and_found): Use standard
428 ext2fs_alloc_*_stats functions to update the filesystem.
429 statistics when creating /lost+found.
430 (adjust_inode_count): Remove debugging code that can never
431 be triggered.
432
433 * pass4.c (disconnect_inode): Add explanation about why we only
434 clear inodes that have no data blocks and no EA blocks.
435 Use ext2fs_inode_alloc_stats2 function to update the
436 filesystem statistics when clearing a zero-length inode.
437
438 * problem.c, problem.h (PR_1B_ADJ_EA_REFCOUNT,
439 PR_2_ADJ_EA_REFCOUNT): Add new problem codes.
440
441 * super.c (release_inode_block), (release_orphan_inodes): Use the
442 standard ext2fs_alloc_*_stats functions to update the
443 filesystem statistics.
444 (release_inode_blocks): Attempt to decrement the extended
445 attribute refcount, and free the EA block if the count
446 hits zero.
447
838e773e
TT
4482002-08-01 Theodore Ts'o <tytso@mit.edu>
449
450 * dict.c, dict.h: New file from kazlib 1.20 which implements a
451 red-black tree
452
453 * pass1b.c: Massive changes to take advantage of dict.c. This
454 removes several O(n**2) algorithms from the rare case
455 where there are a large number of blocks claimed by
456 multiple inodes.
457
542867fb
TT
4582002-07-24 Theodore Ts'o <tytso@mit.edu>
459
850d05e9
TT
460 * e2fsck.8.in, e2fsck.h, pass3.c (e2fsck_pass3), unix.c, rehash.c:
461 Add new option -D, which requests e2fsck to optimize all
462 directories. Rehash.c will also compress and sort
463 non-indexed directories.
464
465 * problem.c, problem.h: Rename PR_3A_REHASH_* to PR_3A_OPTIMIZE_*
466
467 * unix.c (PRS): Make sure the signal_cancel is registered without
468 SA_RESTART.
469
470 * rehash.c (e2fsck_rehash_dir, copy_dir_entries, calculate_tree):
471 Restructured code in e2fsck_rehash_dir into two new
472 subroutines to make the code more understandable/maintainable.
473 (set_root_node): Fixed bug which caused the root node to
474 be invalid on non-FILETYPE filesystems due to an
475 unitialized variable.
476 (calculate_tree): Fix bug where pointers which might get
477 invalidated if realloc() moves outdir->buf around.
478 (e2fsck_rehash_dir): Fix memory leak bug.
479
480 * pass3.c (e2fsck_get_lost_and_found), e2fsck.h, e2fsck.c:
481 Exported as a public interface a function for finding the
482 lost and found directory. Cache the location of the lost
483 and found directory in the e2fsck context structure.
484
542867fb
TT
485 * util.c (ask_yn, read_a_char): Note when the user has typed ^C,
486 and abort processing by longjmp'ing to ctx->abort_loc.
487
3214a453
TT
4882002-07-23 Theodore Ts'o <tytso@mit.edu>
489
490 * pass1.c (e2fsck_pass1): If e2fsck is run with -n, don't create
491 the dirs_to_hash list, since we don't want to reindex
492 directories if the filesystem is opened read-only.
493
4cae0452
TT
4942002-07-21 Theodore Ts'o <tytso@mit.edu>
495
496 * e2fsck.8.in: Document new exit code FSCK_CANCELED
497
498 * unix.c (PRS, signal_cancel): Capture SIGINT and SIGTERM signals
499 and set a flag in the e2fsck context indicating that
500 cancellation has been requested, so that e2fsck will exit
501 only at safe points.
502 (main): Change the exit handling so that if a cancellation
503 is requested, return FSCK_CANCELED (a new exit code 32).
504 e2fsck can now return more than one exit code as part of a
505 bitmask (as had been documented in the man page).
506
507 * pass2.c (e2fsck_pass2, check_dir_block), pass3.c (e2fsck_pass3),
508 pass4.c (e2fsck_pass4): Check to see if a cancellation was
509 requested, and abort processing if necessary.
510
b7a00563
TT
5112002-07-19 Theodore Ts'o <tytso@mit.edu>
512
513 * rehash.c, Makefile.in: New file which rewrites directories using
514 the htree format.
515
516 * problem.c (fix_problem), problemP.h (PR_PREEN_NOHDR): Add option
517 which suppresses the header printed when in preen mode.
518
519 * pass3.c (e2fsck_pass3): If there are entries on the dirs_to_hash
520 list, call e2fsck_rehash_directories to reindex those
521 directories.
522 (e2fsck_expand_directory): Generalize the old
523 expand_dirctory() function so it can expand a directory to
524 a guaranteed minimum size.
525
526 * e2fsck.h (struct e2fsck_struct): Add the dirs_to_hash list. Add
527 new function prototypes for rehash.c and for
528 e2fsck_expand_directory().
529
530 * e2fsck.c (e2fsck_reset_context): Free the dirs_to_hash list.
531
532 * pass1.c (e2fsck_pass1): Initialize the dirs_to_hash list if the
533 htree feature is present in the filesystem.
534 (check_blocks): If a non-htree directory has more than 2
535 blocks, put it on the dirs_to_hash list.
536
537 * pass2.c (clear_htree): Add corrupt htree directories to the
538 dirs_to_hash list.
539
540 * problem.h, problem.c (PR_3A_PASS_HEADER, PR_3A_REHASH_ITER,
541 PR_3A_REHASH_DIR_ERR, PR_3A_REHASH_DIR_HEADER,
542 PR_3A_REHASH_DIR, PR_3A_REHASH_DIR_END): Add new problem codes
543
544 * pass2.c (parse_int_node), problem.c (PR_2_HTREE_BADBLK): Fix
545 problem display.
546
62acaa1d
TT
5472002-07-15 Theodore Ts'o <tytso@mit.edu>
548
549 * pass2.c (e2fsck_pass2): Use dx_dir->numblocks instead of
550 dx_dir->ino to indicate that a bad inode was cleared.
551
503f9e7f
TT
5522002-06-26 Theodore Ts'o <tytso@mit.edu>
553
554 * pass1.c (check_blocks): Move htree handling to handle_htree().
555 Factor out calls to ext2fs_write_inode so that it happens
556 if dirty_inode is non-zero.
557 (handle_htree): Add checks for invalid htree root, invalid
558 hash version, invalid hash version, and htree depth too deep.
559
560 * problem.h, problem.c (PR_1_HTREE_NODIR, PR_1_HTREE_BADROOT,
561 PR_1_HTREE_HASHV, PR_1_HTREE_INCOMPAT, PR_1_HTREE_DEPTH):
562 Add new problem codes.
563
564 * pass2.c (parse_int_node): Fix silly typo.
565 (check_dir_block): Change to use new ext2fs_dirhash()
566 function prototype.
567 (pass2): Fixed two minor bugs discovered by the test case:
568 Don't stop checking dxdir's after clearing a bad inode.
569 If there is a bad max hash, make sure the bad_dir flag
570 is set to make sure we try to clear inode.
571
8fdc9985
TT
5722002-06-25 Theodore Ts'o <tytso@mit.edu>
573
574 * e2fsck.c (e2fsck_reset_context): Free the dx_dirinfo structure.
575
576 * message.c: Add new abbrevations @h and @p, "HTREE directory
577 inode" and "problem in".
578
579 * pass1.c (check_blocks): If the inode has the INDEX_FL flag,
580 register the block into the indexed directory data
581 structures. Or if the filesystem doesn't have the
582 DIR_INDEX flag, offer to clear the INDEX_FL.
583
584 * pass2.c (e2fsck_pass2, parse_int_node): Add support check htree
585 directories (we don't check all possible corruptions yet).
586
587 * problem.h, problem.h (PR_1_HTREE_SET, PR_2_HTREE_NOTREF,
588 PR_2_HTREE_DUPREF, PR_2_HTREE_MIN_HASH, PR_2_HTREE_MAX_HASH,
589 PR_2_HTREE_CLEAR, PR_2_HTREE_FCLR, PR_2_HTREE_BADBLK): Add
590 new problem codes.
591
592 * unix.c (main): If ENABLE_HTREE is not defined, complain if the
593 filesystem has the dir_index feature.
594
595 * Makefile.in, e2fsck.h, dx_dirinfo.c: New file (and group of
596 functions) which keeps track of blocks in HTREE directory
597 blocks.
598
b21bf267
AD
5992002-05-22 Andreas Dilger <adilger@clusterfs.com>
600
601 * super.c (check_superblock): Check that the number of inodes and
602 blocks in a group is less than 2^16, so that the free inode
603 and block counts for a group fit into the group descriptor
604 table fields. Any more than that would need a COMPAT flag.
605
0d63467d
TT
6062002-05-22 Theodore Ts'o <tytso@mit.edu>
607
608 * pass1.c (check_ext_attr): Update to support the V2 Bestbits EA
609 format. We automatically determine from the first EA
610 block we visit whether we are using the V1 or V2 format.
611
da307041
TT
6122002-05-21 Theodore Ts'o <tytso@mit.edu>
613
614 * pass1.c (process_block): If an inode has too many blocks or
615 is too big, then offer to truncate the inode.
616 (check_blocks): Don't bother checking the size to see if
617 it's too big, since that's just a symptom, not the disease
618 (which we're now appropriately checking in process_block).
619
620 * problem.c, problem.h: Add new problem codes PR_1_INODE_TOOBIG,
621 PR_1_TOOBIG_DIR, PR_1_TOOBIG_REG, PR_1_TOOBIG_SYMLINK, and
622 add the latch code PR_LATCH_TOOBIG.
623
bcf9c5d4
TT
6242002-05-20 Theodore Ts'o <tytso@mit.edu>
625
626 * e2fsck.h, pass1.c (e2fsck_pass1_check_symlink), pass2.c
627 (e2fsck_process_bad_inode): Add an extra
628 argument so a scratch buffer can be passed into the
629 function.
630
631 * pass1.c (e2fsck_pass1_check_device_inode,
632 e2fsck_pass1_check_symlink): If the EXT2_INDEX_FL flag is
633 set, then the device/FIFO is invalid.
634 (check_immutable): Don't check for EXT2_INDEX_FL; we take
635 care of that elsewhere now.
636 (e2fsck_pass1): Check to see if the symlink is valid
637 before we offer to clear any immutable bits. This matches
638 the order in which we check other special files.
639
640 * pass2.c (e2fsck_pass2): Allocate a bigger scratch buffer so we
641 can pass part of it to e2fsck_process_bad_inode.
642
643 * pass4.c (e2fsck_pass4): If we need to call
644 e2fsck_process_bad_inode(), allocate the necessary scratch
645 buffer.
646
647 * problem.h, problem.c: Change PR_2_SYMLINK_SIZE to be
648 PR_2_INVALID_SYMLINK, and change the text
649 accordingly. Revert the text change for PR_1_SET_IMMUTABLE
650 since we no longer check for EXT2_INDEX_FL in
651 check_immutable().
652
6532002-05-18 Andreas Dilger <adilger@clusterfs.com>
654
655 * pass1.c (e2fsck_pass1_check_symlink): Remove checks of
656 immutable/append-only checks, since this is handled by
657 check_immutable. For non-fast symlinks, read in the
658 data block and check the length to make sure it
659 matches with the inode size.
660 (check_immutable): Generalize to also check for the
661 EXT2_INDEX_FL flag.
662 (check_blocks): For non-regular files, signal a bad inode
663 size if i_size_high is non-zero.
664
665 * pass2.c: Only count large files if they are regular files
666 (not just if they aren't directories).
667
668 * problem.c, problem.h: Change comment for PR_2_SYMLINK_SIZE
669 to indicate that it can be triggered by any symlink,
670 not fast symlink. Change text for PR_1_SET_IMMUTABLE
671 to indicate that it the EXT2_INDEX_FL was set.
672
31e29a12
TT
6732002-05-17 Theodore Ts'o <tytso@mit.edu>
674
675 * pass1.c (e2fsck_pass1): When calculating max_sizes, omit capping
676 this value by the calculated value of max_sect_sizes.
677 The inode may be a sparse inode, and the limit of
678 max_sect_sizes assumed a non-sparse inode and a limit
679 based on a 32-bit i_blocks field measured in 512 sectors.
680
681 * super.c (check_super_block): Fix check for s_log_block_size so
682 that takes into account fact that there is an offset of
683 EXT2_MIN_BLOCK_LOG_SIZE.
684
685 * pass1.c: Allocate max_sizes array to be big enough to support
686 the larger block sizes.
687
6882002-05-16 Andreas Dilger <adilger@clusterfs.com>
689
690 * unix.c (main), util.c (get_backup_sb): Use EXT2_MAX_BLOCK_SIZE
691 instead of using a hardcoded value of 4096.
692
693 * super.c (check_super_block): Change checks for s_log_block_size
694 s_log_frag_size so they support the larger block sizes.
695
696 * pass1.c (e2fsck_pass1): Calculate max_sizes array for block
697 sizes up to EXT2_MAX_BLOCK_SIZE (to support block sizes
698 greater than 4k).
699
a8e77249
TT
7002002-03-08 Theodore Tso <tytso@mit.edu>
701
702 * Release of E2fsprogs 1.27
703
546a1ff1
TT
7042002-03-07 Theodore Tso <tytso@mit.edu>
705
706 * journal.c, pass5.c, revoke.c: Fix gcc -Wall complaints
707
7082002-03-07 Theodore Tso <tytso@mit.edu>
f2d5c937
TT
709
710 * unix.c (main): Don't close the filesystem before calling
711 fatal_error(); this just causes a needless warning about a
712 bad I/O manager magic number.
713
714 * journal.c (e2fsck_check_ext3_journal): Offer to clear the inode
715 in case the journal is too small, or the inode number in
716 the superblock doesn't appear to be random.
717
546a1ff1 7182002-03-06 Theodore Tso <tytso@mit.edu>
f122632e
TT
719
720 * problem.h, problem.c: PR_5_BLOCK_RANGE_UNUSED,
721 PR_5_BLOCK_RANGE_USED, PR_5_INODE_RANGE_UNUSED,
722 PR_5_INODE_RANGE_USED: Add new problem codes.
723
724 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Collapse
725 reporting of adjacent blocks and inodes into a range.
726
14308a53
TT
7272002-03-04 Philipp Thomas <pthomas@suse.de>
728
729 * unix.c (main): Newer libintl needs LC_CTYPE to be set in
730 addition to LC_MESSAGES.
731
57173d0f 7322002-02-24 Theodore Tso <tytso@mit.edu>
b9f40925
TT
733
734 * Makefile.in (install): Install hard links for man pages for
735 fsck.ext2 and fsck.ext3. Remove any compressed man
736 pages before installing the man pages.
737
57173d0f 7382002-02-22 Theodore Tso <tytso@mit.edu>
d1a2182a
TT
739
740 * journal.c: Improve code maintainability and reduce code size by
741 moving common code paths in e2fsck_journal_init_dev() and
742 e2fsck_journal_init_inode() into e2fsck_get_journal().
743 Also fixed a memory leak in recover_ext3_journal().
744
745 * super.c (release_orphan_inodes): Fix memory leak.
746
a5f3f5c1
TT
7472002-02-03 Theodore Tso <tytso@thunk.org>
748
749 * Release of E2fsprogs 1.26
750
7512001-12-24 Theodore Tso <tytso@mit.edu>
3ed57c27
TT
752
753 * unix.c (PRS): Don't allow the -c and -l/-L options to be
754 specified at the same time.
755
756 * e2fsck.h (E2F_OPT_WRITECHECK), unix.c (PRS),
757 badblocks.c (read_bad_blocks_file): If two -c options are
758 specified, then perform a non-destructive read/write scan
759 of the disk.
760
761 * e2fsck.8.in: Document the double -c option; also encourage users
762 to use -c instead of the -l/-L options since it's too hard
763 for users to get things like the blocksize parameter correct.
764
a5f3f5c1 7652001-12-23 Theodore Tso <tytso@mit.edu>
19007e51 766
f1a1761d
TT
767 * util.c (get_backup_sb): This function now searches for the
768 backup superblock by iterating over possible blocksizes
769 instead of defaulting a guess of 8193 if the superblock
770 isn't available.
771
772 * message.c (expand_percent_expression), unix.c (main): Pass in
773 new parameters to get_backup_sb. Also, in unix.c, use the
774 blocksize paramter in the e2fsck context structure instead
775 of using a static variable, since get_backup_sb wants to
776 be able to set the blocksize paramter.
777
778 * e2fsck.h: Update function prototype for get_backup_sb; also add
779 the blocksize parameter to the e2fsck context structure.
780
19007e51
TT
781 * Makefile.in, jfs_user.h: Move linux/jbd.h to
782 ext2fs/kernel-jbd.h, to avoid using the system header
783 file version of hbd.h when using diet glibc (since it
784 forcibly adds /usr/include to the beginning of the
785 include search path.)
786
a5f3f5c1 7872001-12-21 Theodore Tso <tytso@mit.edu>
d37066a9 788
6a50c5ed
TT
789 * problem.c (fix_problem): Use ctx->filesystem_name if the
790 ctx->device_name is NULL.
791
d37066a9
TT
792 * journal.c (e2fsck_check_ext3_journal): Give the opportunity to
793 run the journal even if recovery flag is cleared. If
794 we're using a backup superblock, run the journal by
795 default.
796
797 * e2fsck.h (E2F_OPT_FORCE), unix.c (PRS, check_if_skip): Use a
798 bitfield in the e2fsck context flags word to indicate
799 whether or not a check should be forced. This allows the
800 journal code to set the option if necessary to force a
801 filesystem check.
802
803 * problem.h, problem.c: Remove PR_0_JOURNAL_RESET_JOURNAL, and add
804 PR_0_JOURNAL_RUN and PR_0_JOURNAL_RUN_DEFAULT. Update
805 problem decription texts.
806
a5f3f5c1 8072001-12-16 Theodore Tso <tytso@mit.edu>
8cf93332 808
4ea7bd04
TT
809 * e2fsck.h (ext2fs_get_refcount_size), unix.c (check_mount, PRS),
810 pass1.c (adjust_extattr_refcount),
811 ea_refcount.c (ea_refcount_create): Fix gcc -Wall nits.
812
8cf93332
TT
813 * recovery.c, revoke.c: Update to versions from 2.4.17-pre8.
814
815 * journal.c, jfs_user.h: Update support code for new version of
816 recover.c and revoke.c. Fix support for filesystems with
817 external journals.
818
b3b3d465
GP
8192001-11-30 Gabriel Paubert <paubert@iram.es>
820
821 * journal.c (e2fsck_journal_load): Fix an endianness bug.
822
a5f3f5c1 8232001-11-26 Theodore Tso <tytso@mit.edu>
24bfb443
TT
824
825 * super.c (check_super_block): Make sure that if the inode table
826 or allocation bitmap is zero, that it is marked as
827 invalid, so that in pass #1, a new bitmap/inode table gets
828 properly allocated. (Addresses Debian Bug #116975)
829
a5f3f5c1 8302001-11-24 Theodore Tso <tytso@mit.edu>
1e9a7e02
TT
831
832 * e2fsck.8.in: Fix minor typo in man page and clarify device
833 specification.
834
a5f3f5c1 8352001-10-07 Theodore Tso <tytso@mit.edu>
62e3e7fe
TT
836
837 * journal.c (clear_v2_journal_fields, e2fsck_journal_load): If the
838 V2 fields are set on a V1 journal superblock, or an
839 internal V2 journal has s_nr_users is non-zero, clear the
840 entire journal superblock beyond the V1 superblock. This
841 fixes botched V1->V2 updates.
842
843 * problem.c, problem.h (PR_0_CLEAR_V2_JOURNAL): Add new problem code.
844
a5f3f5c1 8452001-09-20 Theodore Tso <tytso@mit.edu>
773fd8a1
TT
846
847 * e2fsck.h, journal.c (e2fsck_move_ext3_journal): Add new function
848 which will automatically relocate the ext3 journal from a
849 visible file to an invisible journal file if the
850 filesystem has been opened read/write.
851
852 * super.c (check_super_block): Add call to e2fsck_move_ext3_journal
853
854 * problem.c, problem.h (PR_0_MOVE_JOURNAL, PR_0_ERR_MOVE_JOURNAL):
855 Add new problem codes.
856
fbf91112
TT
8572001-09-20 Theodore Tso <tytso@thunk.org>
858
859 * Release of E2fsprogs 1.25
860
a5f3f5c1 8612001-09-19 Theodore Tso <tytso@mit.edu>
ae6cdcf7
TT
862
863 * unix.c (main): If a superblock is specified explicitly by the
864 user, don't try to automatically fall back to an
865 alternate superblock.
866
fb70775b
TT
8672001-09-02 Theodore Tso <tytso@thunk.org>
868
869 * Release of E2fsprogs 1.24a
870
109624a1
TT
8712001-08-30 Theodore Tso <tytso@thunk.org>
872
873 * Release of E2fsprogs 1.24
874
b1f204f7
TT
8752001-08-30 Theodore Tso <tytso@valinux.com>
876
877 * pass1.c (e2fsck_pass1): For EXT2_RESIZE_INO, allow its i_mode to
878 either be zero or a regular file (for compatibility with
879 Andreas's on-line resizing programs).
880
53abed0a
TT
8812001-08-27 Theodore Tso <tytso@valinux.com>
882
0f8973fb
TT
883 * unix.c (main): Remove EXT2FS_VERSION from the version display,
884 since it only confuses people.
885
53abed0a
TT
886 * pass1.c (strnlen): Provide strnlen if libc doesn't.
887
943ed874
TT
8882001-08-15 Theodore Tso <tytso@valinux.com>
889
890 * Release of E2fsprogs 1.23
891
85645a6f
TT
8922001-08-13 Theodore Tso <tytso@valinux.com>
893
eb4ab510
TT
894 * super.c (release_orphan_inodes): If the filesystem contains
895 errors, don't run the orphan * list, since the orphan list
896 can't be trusted.
897
85645a6f
TT
898 * pass1.c (check_size): Fix logic in check_size; the previous code
899 only offered to clear the inode size fields if both size
900 and i_size_high were zero.
a40ecbb1
TT
901 (e2fsck_pass1_check_device_inode): If i_blocks is
902 non-zero, then assume that the device/socket/fifo inode
903 is bogus.
85645a6f 904
2b94c658
TT
9052001-08-09 Theodore Tso <tytso@valinux.com>
906
a4742691
TT
907 * pass1.c, pass2.c, problem.c, problem.h: Fix bug introduced by
908 Andreas's symlink code; check_blocks() was unconditionally
909 testing inode_bad_map without checking to see if it
910 existed first. Fixed problem a different way; we now no
911 longer check inode_bad_map at all, since the file might
912 not get deleted in pass 2 anyway. We move the large file
913 feature reconciliation code to to e2fsck_pass2(), and in
914 deallocate_inode() in pass2.c, we decrement the large
915 files counter if we're about to delete a large file.
916
2b94c658
TT
917 * unix.c (show_stats): Print the number of large files in verbose
918 mode.
919
c0a083fa
TT
9202001-08-07 Theodore Tso <tytso@valinux.com>
921
922 * journal.c (recover_ext3_journal): If s_errno is set in the
923 journal superblock, set the EXT2_ERROR_FS flag in the
924 filesystem superblock after the journal is run.
925
bd512b68
TT
9262001-08-04 Andreas Dilger <root@lynx.adilger.int>
927
928 * message.c: Change comments for %D and %d expansion in e2fsck
929 problem codes. It was not consistent which was for dirent
930 expansion, and which was for directory number expansion.
931
932 * problem.c (PR_2_FINAL_RECLEN, PR_2_BAD_FILETYPE): Fix problem
933 codes which got caught by the confusion between %D and %d.
934
d007cb4c
TT
9352001-08-04 Theodore Tso <tytso@valinux.com>
936
937 * problem.c (PR_2_SYMLINK_SIZE): Change description to make it
938 more clear (and remove %s expansion). Also add missing
939 periods to the end of a number of problem descriptions.
940
941 * pass2.c (e2fsck_process_bad_inode): Remove unneeded problem
942 context string set now that the problem description for
943 PR_2_SYMLINK_SIZE has been changed.
944
945 * pass1.c (e2fsck_pass1_check_symlink): Consolidate some checks,
946 and check the validity of the symlink block here (so that
947 we detect this case here instead of later). Also use
948 sizeof(inode->i_block) instead EXT2_LINK_DIR.
949
83e6ac84
TT
9502001-07-30 Theodore Tso <tytso@valinux.com>
951
952 * unix.c (check_mount): Remove the code which tested for the root
953 filesystem being mounted read-only, and depend on the
954 results flags from ext2fs_check_if_mounted.
955
1e16526b
TT
9562001-07-29 Theodore Tso <tytso@valinux.com>
957
6d222f32
TT
958 * unix.c (check_if_skip): Free the e2fsck context structure on a
959 normal clean filesystem exit, to make it easier to find
960 real memory leaks.
961 (PRS): Only update the path to include /sbin at the
962 beginning if the -c option is given, again to make it
963 easier to find memory leaks.
0628ae39
TT
964 (main): Move the final print_resource_track call after the
965 filesystem and the context are freed.
6d222f32
TT
966
967 * journal.c (e2fsck_journal_init_dev): Avoid memory leak if we
968 need to search for the journal device.
969 (e2fsck_journal_release): Free the journal IO channel when
970 we release the journal handle, to avoid a memory leak.
971
1e16526b
TT
972 * e2fsck.c (e2fsck_reset_context): Fix bug; only close the io
973 channel if it is *different* from the filesystem io
974 channel.
975
fd77b2c7
TT
9762001-07-27 Theodore Tso <tytso@valinux.com>
977
a092c563
TT
978 * problem.c (PR_1_SET_IMMUTABLE): Clarify problem message.
979
fd77b2c7
TT
980 * pass1.c (e2fsck_pass1): Check for symlinks that have the
981 immutable flag set (and offer to clear them).
982
24ceb248
TT
9832001-07-26 Theodore Tso <tytso@valinux.com>
984
985 * pass1.c (e2fsck_pass1): Free ctx->block_ea_map at the end of
986 pass 1.
987
14fe1c33
TT
9882001-07-25 Theodore Tso <tytso@valinux.com>
989
990 * pass1.c (check_ext_attr): Skip zero-length EA entries.
991
992 * problem.c: PR_1_EA_ALLOC_COLLISION shouldn't abort, but should
993 prompt to clear the EA block.
994
adee8d75
TT
9952001-07-22 Theodore Tso <tytso@valinux.com>
996
997 * journal.c (ll_rw_block): Use ctx->journal_io instead of the
998 filesystem's io_channel.
999 (e2fsck_journal_init_dev): New function which supports
1000 initialization of the external journal.
1001 (e2fsck_get_journal): Remove code which flagged an error
1002 if the superblock reported the use of an external journal.
1003 (ext3_journal_via_mount): Remove unsued, #ifdefed out function.
1004
1005 * problem.c, problem.h: Removed error codes no longer used
1006 (PR_0_JOURNAL_UNSUPP_DEV, PR_0_JOURNAL_BAD_DEV,
1007 PR_0_JOURNAL_UNSUPP_UUID) and replace them with new error
1008 codes related with failures in loading the external
1009 journal (PR_0_JOURNAL_UNSUPP_MULTIFS,
1010 PR_0_CANT_FIND_JOURNAL, PR_0_EXT_JOURNAL_BAD_SUPER).
1011 Also changed the text assocated with PR_0_JOURNAL_BAD_UUID
1012 to reflect the case where the external journal isn't
1013 correct for this filesystem.
1014
1015 * unix.c (PRS), e2fsck.8.in: Add new option -j which allows
1016 the user to specify the pathname to find the external journal.
1017
1018 * e2fsck.c (e2fsck_reset_context): Close journal_io if it isn't
1019 the same as the filesystem io_channel.
1020
1021 * e2fsck.h: Add new fields (journal_io and journal_name) in the
1022 context structure to support external journals.
1023
d3124019
TT
10242001-07-20 Theodore Tso <tytso@valinux.com>
1025
1026 * unix.c (main): Add an explicit warning when the filesystem is
1027 left not completely fixed when e2fsck exits. (Addresses
1028 Debian bug #104502.)
1029
55fd07ed
TT
10302001-07-19 Theodore Tso <tytso@valinux.com>
1031
1032 * pass1.c (check_ext_attr): The entire EA block is now checked to
1033 make sure that parts of the EA block aren't being used for
1034 multiple purposes.
1035
1036 * Makefile.in e2fsck.h, region.c: New file which is used to detect
1037 collisions in extended attribute block.
1038
1039 * problem.h, problem.c (PR_1_EA_MULTI_BLOCK, PR_1_EA_ALLOC_REGION,
1040 PR_1_EA_ALLOC_COLLISION, PR_1_EA_BAD_NAME,
1041 PR_1_EA_BAD_VALUE): Add new problem codes.
1042
3c6b8977
TT
10432001-07-10 Theodore Tso <tytso@valinux.com>
1044
1045 * journal.c (e2fsck_run_ext3_journal): Only call ext3_flush() if
1046 the superblock is dirty.
1047
e8a3ee62
TT
10482001-07-07 Theodore Tso <tytso@valinux.com>
1049
7b63fff9
TT
1050 * pass1b.c (pass1b, process_pass1b_block): Change the num_bad
1051 field calculation so that it only counts EA block entries
1052 as a single multiply claimed block (since once we clone
1053 the EA blocks for one inode, we fix the problem for all of
1054 the other inodes). Also, I moved the num_bad calculation
1055 from process_pass1b_block to the end of pass1b. This
1056 fixes a *significant* performance bug in pass1b which hit
1057 people who had to had a lot of multiply claimed blocks.
1058 (Can you say O(n**3) boys and girls? I knew you could...
1059 Fortunately, this case didn't happen that much in actual
1060 practice.)
1061
1062 * pass1.c (e2fsck_pass1): Defer inodes which have an extended
1063 attribute block for later processing to avoid extra seeks
1064 across the disk.
1065 (process_inode_cmp): If there is no indirect block, sort
1066 by the extended attribute (i_file_acl) block.
1067
7abb2bdc
TT
1068 * pass1b.c (clone_file_block): Fix bugs when cloning extended
1069 attribute blocks. Moved free of block_buf to after the
1070 code which clones the extattr block, and fixed logic for
1071 changing pointers to the extended attribute field in the
1072 inodes which were affected.
1073 (decrement_badcount): New function which is used whenever
1074 we need to decrement the number of files which claim a
1075 particular bad block. Fixed bug where delete_file wasn't
1076 checking check_if_fs_block() before clearing the entry in
1077 block_dup_map. This could cause a block which was claimed
1078 by multiple files as well as the filesystem metadata to
1079 not be completely fixed.
1080
e8a3ee62
TT
1081 * pass1.c (adjust_extattr_refcount): Add new function which
1082 adjusts the reference counts of extended attribute blocks
1083 if needed, both up and down.
1084 (e2fsck_pass1): If the refcount or refcount_extra
1085 structure are present, call adjust_extattr_refcount(),
1086 and free it afterwards.
1087
1088 * problem.h, problem.c (PR_1_EXTATTR_READ_ABORT,
1089 PR_1_EXTATTR_REFCOUNT, PR_1_EXTATTR_WRITE): Add new
1090 problem codes.
1091
342d847d
TT
10922001-07-02 Theodore Tso <tytso@valinux.com>
1093
1094 * pass1.c (e2fsck_pass1, check_ext_attr, check_blocks): Add
1095 initial support for scanning extended attribute blocks.
1096
1097 * e2fsck.c (e2fsck_reset_context): free extended attribute
1098 refcount structure.
1099
1100 * e2fsck.h: Add new fields for accounting for the extended
1101 attribute blocks.
1102
1103 * Makefile.in, ea_refcount.c, e2fsck.h: Add new file which
1104 implements a reference count abstraction.
1105
1106 * problem.c, problem.h: Add new problem codes PR_1_ALLOCATE_REFCOUNT,
1107 PR_1_READ_EA_BLOCK, PR_1_BAD_EA_BLOCK, PR_2_FILE_ACL_BAD
1108
1109 * message.c: Add "@a" as an abbreviation for "extended attribute"
1110
1111 * pass1b.c (clone_file): Add code which handles cloning an
1112 extended attribute block.
1113
1114 * pass1b.c (delete_file):
1115 * pass2.c (deallocate_inode): If the inode contains an extended
1116 attribute block in the file_acl field, clear it and
1117 deallocate the block.
1118
11192001-06-28 Theodore Tso <tytso@valinux.com>
1120
1121 * pass2.c (e2fsck_process_bad_inode): Deal with inodes which are
1122 marked bad because of an invalid file_acl (either because
1123 EXT2_FEATURE_COMPAT_EXT_ATTR is not set, or because the
1124 block number in file_acl is bad.
1125
636a954a
TT
11262001-06-29 Theodore Tso <tytso@valinux.com>
1127
1128 * unix.c (show_stats): Use long long to calculate the percentage
1129 of the number of blocks in use in the filesystem.
1130
67960139
TT
11312001-06-23 Theodore Tso <tytso@valinux.com>
1132
1133 * Release of E2fsprogs 1.22
1134
d90f3494
TT
11352001-06-22 Theodore Tso <tytso@valinux.com>
1136
1137 * flushb.c: Use platform independent method of defining the
1138 BLKFLSBUF ioctl. Also include sys/mount.h since on newer
1139 platforms BLKFLSBUF is defined there.
1140
42475e28
TT
11412001-06-19 Theodore Tso <tytso@valinux.com>
1142
1143 * super.c (release_inode_blocks): Don't try to release the blocks
1144 if the orphaned inode is a device file, symlink, or some
1145 other kind of special file that doesn't have a block list.
1146
f4f75bae
TT
11472001-06-15 Theodore Tso <tytso@valinux.com>
1148
1149 * Release of E2fsprogs 1.21
1150
b6a0807b
TT
11512001-06-13 Theodore Tso <tytso@valinux.com>
1152
1153 * unix.c (check_if_skip): Adapted patch from Andreas Dilger which
1154 prints the number of mounts or days elapsed since the last
1155 check when e2fsck is forced to check an otherwise clean
1156 filesystem.
1157
cbbf031b
TT
11582001-06-12 Theodore Tso <tytso@valinux.com>
1159
1160 * badblocks.c: Stop using the compatibility badblocks function,
1161 and use the ext2fs_badblocks_* functions instead.
1162
5df55d7f
TT
11632001-06-11 Theodore Tso <tytso@valinux.com>
1164
3034f62a
TT
1165 * unix.c (PRS): Fix bug introduced in 1.20 which broke the -F
1166 flag.
1167
5df55d7f
TT
1168 * Makefile.in: Add message.c and swapfs.c to the list of source
1169 files to build the make depend.
1170
1171 * swapfs.c, unix.c: Only support the -s and -S options to e2fsck
1172 if ENABLE_SWAPFS is defined.
1173
725c474f
TT
11742001-06-08 Theodore Tso <tytso@valinux.com>
1175
1176 * recover.c, revoke.c: Synchronize with ext3 0.7a
1177
fdbdea09
TT
11782001-06-02 Theodore Tso <tytso@valinux.com>
1179
a479fe60
TT
1180 * recovery.c (scan_revoke_records): Fix bug in recovery code;
1181 missing byte order conversion.
1182
fdbdea09
TT
1183 * pass1.c (mark_inode_bad): Replace alloc_bad_map with a function
1184 which sets the bit in the bad inode bitmap.
1185 (e2fsck_pass1): Check for fast symlinks with an invalid
1186 size, and set the bad inode map in that case.
62b6d479
TT
1187 (check_size): Check i_size_high for special files and
1188 prompt to clear it along with i_size if non-zero.
fdbdea09
TT
1189
1190 * pass2.c (e2fsck_process_bad_inode): Check for fast symlinks with
1191 an invalid size and prompt the user if the inode should be
1192 cleared.
1193
1194 * problem.h, problem.c (PR_2_SYMLINK_SIZE): Added new problem code.
1195
797f5ef1
TT
11962001-06-01 Theodore Tso <tytso@valinux.com>
1197
2f686ace
TT
1198 * problem.c, problem.h: Change PR_0_JOURNAL_UNSUPP_INCOMPAT and
1199 PR_0_JOURNAL_UNSUPP_ROCOMPAT so they aren't fatal errors,
1200 but prompt to see if the user should abort. Removed the
1201 PR_0_JOURNAL_RESET_COMPAT problem code.
1202
1203 * journal.c (e2fsck_journal_load): If there are incompatible
1204 journal flags, just return an error code.
1205 (e2fsck_check_ext3_journal): If e2fsck_journal_load
1206 returns an error code indicating that there are
1207 incompatible journal flag, check to see if we should
1208 abort, and then offer to clear the journal.
e333845b 1209 (Addresses Debian bug #98527.)
2f686ace 1210
797f5ef1 1211 * Makefile.in: Move include/asm/types.h.in to
36a23e18 1212 lib/ext2fs/ext2_types.h.in.
797f5ef1 1213
71d521c6
TT
12142001-06-01 Theodore Tso <tytso@valinux.com>
1215
1216 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
1217 pass1_check_directory): Add a safety check to make sure
1218 ctx->stashed_inode is non-zero.
1219
1220 * pass1b.c (pass1b): Use e2fsck_use_inode_shortcuts() to disable
1221 the inode shortcut processing, instead of manually
1222 clearing only half of the function pointers that needed to
1223 be NULL'ed out. This caused nasty bugs if the last inode
1224 in the filesystem needed dup block processing.
1225
1226 * pass1b.c (clone_file_block): When cloning a directory's metadata
1227 block, don't try to update the directory block list
1228 database, since indirect blocks aren't stored in the
1229 database and the resulting error will abort the file clone
1230 operation.
1231
bb185861
TT
12322001-05-25 Theodore Tso <tytso@valinux.com>
1233
1234 * Release of E2fsprogs 1.20
1235
561cd4dd
TT
12362001-05-25 Theodore Tso <tytso@valinux.com>
1237
1238 * journal.c (e2fsck_journal_reset_super): Remove extraneous line
1239
c7f23364
TT
12402001-05-23 Theodore Tso <tytso@valinux.com>
1241
1242 * journal.c (e2fsck_journal_reset_super): Fix bug; the reset
1243 journal wasn't getting written out to disk since the dirty
1244 bit wasn't being set on the buffer.
1245 (e2fsck_journal_load): Don't print an error message if the
1246 journal version number is wrong; just return a error code
1247 reflecting this fact. If the block type in the journal
1248 superblcok is obviously not a version number, report the
1249 journal is corrupted.
1250 (e2fsck_check_ext3_journal): On an unsupported journal
1251 version, prompt to abort by default, but then offer a
1252 chance to clear the journal as corrupt.
1253
1254 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_VERSION): Added new
1255 problem code.
1256
424cd2be
TT
12572001-05-14 Theodore Tso <tytso@valinux.com>
1258
21afac09
TT
1259 * pass1.c: Treat inodes with a low dtime (that were from a
1260 corrupted orphan list) specially.
1261
1262 * problem.c, problem.h: Add new problem codes PR_1_LOW_DTIME and
1263 PR_1_ORPHAN_LIST_REFUGEES, and a new latch group,
1264 PR_LATCH_LOW_DTIME.
1265
1266 * problemP.h: Expand the size of the problem flag to be an int
1267 instead of a short. Expand space in the flag word which
1268 is reserved for problem latch flags from 3 bits to 8 bits.
1269
54c637d4
TT
1270 * e2fsck.h, scantest.c: Change location of ext2_fs.h to be
1271 ext2fs/ext2_fs.h
1272
424cd2be
TT
1273 * super.c (check_super_block): Be more strict on checking
1274 s_r_blocks_count superblock field.
1275
12762001-05-13 Theodore Tso <tytso@valinux.com>
1277
1278 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_ROCOMPAT,
1279 PR_0_JOURNAL_UNSUPP_INCOMPAT, PR_0_JOURNAL_RESET_COMPAT):
1280 New problem codes.
1281
1282 * journal.c (e2fsck_journal_load): Use a problem code to
1283 report unsupported feature flags. There is code to
1284 clear unsupported flags, but since this is dangerous,
1285 it's not allowed in the problem code table.
1286
12872001-05-11 Andreas Dilger <adilger@turbolinux.com>
1288
1289 * journal.c (e2fsck_journal_reset_super): initialize the journal
1290 sequence number to a random value to avoid recovering
1291 bad transactions from a corrupt journal.
1292
328a5ce4
TT
12932001-05-13 Theodore Tso <tytso@valinux.com>
1294
1295 * journal.c: Code cleanup; initialize journal_enable_debug using
1296 an initializer.
1297
fc9a69ca
TT
12982001-05-12 Theodore Tso <tytso@valinux.com>
1299
1300 * unix.c (PRS): Skip validation of -C's file descriptor if it is
1301 zero, since that is special case.
1302
f0b8c87d
TT
13032001-05-09 Theodore Tso <tytso@valinux.com>
1304
1305 * super.c (release_orphan_inodes): Add gettext quoting around
1306 "Truncating" and "Clearing" for i18n.
1307
b9852cd8
TT
13082001-05-05 Theodore Tso <tytso@valinux.com>
1309
e39ac922
TT
1310 * util.c (fatal_error): Use the correct magic number when checking
1311 the magic number for the io_channel data structure. Also
1312 remove extraneous call to io_channel_flush() that was left
1313 over from an editing session.
1314
b9852cd8
TT
1315 * pass2.c (check_dir_block): Ignore EXT2_ET_DIR_CORRUPTED errors
1316 from ext2fs_read_dir_block().
1317
5f629b74
TT
13182001-05-01 Theodore Tso <tytso@valinux.com>
1319
ae8160e6
TT
1320 * unix.c (PRS): Validate the completion information file
1321 descriptor so that the completion bar won't get
1322 accidentally written onto the disk.
1323
5f629b74
TT
1324 * e2fsck.8.in: Add explanation that you can use mke2fs -n -b
1325 blocksize to printout alternate superblock locations.
1326
bc57f153
TT
13272001-04-26 Theodore Tso <tytso@valinux.com>
1328
1329 * unix.c (check_if_skip): If the max_mount_count is zero, treat it
1330 as having no count set.
1331
ef059870
TT
13322001-04-16 Theodore Tso <tytso@valinux.com>
1333
1334 * super.c (check_super_block): Fix bad calculation of
1335 inodes_per_block, and tighten min/max checks to be a bit
1336 more paranoid. Thanks to Andreas Dilger for pointing out
1337 this bug.
1338
1f735038
TT
13392001-03-29 Theodore Tso <tytso@valinux.com>
1340
15986f79
TT
1341 * journal.c (mark_buffer_uptodate): Add emulation of kernel
1342 function mark_buffer_uptodate.
1343
1f735038
TT
1344 * recovery.c, revoke.c: Synchronize with 0.6b ext3 files.
1345
d0515212
TT
13462001-02-12 Theodore Tso <tytso@valinux.com>
1347
1348 * journal.c (e2fsck_run_ext3_journal): Force a flush of the
1349 filesystem and io_channel before replaying the journal.
1350
a5c33f26
TT
13512001-01-17 Theodore Ts'o <tytso@valinux.com>
1352
1353 * pass1.c (check_blocks): Fix large file checking code so that
1354 files > 2GB are considered large files, and restrict
1355 directories from being > 2GB.
1356
7e92dfae
TT
13572001-01-12 Theodore Ts'o <tytso@valinux.com>
1358
a9ca2016
TT
1359 * journal.c (e2fsck_journal_fix_unsupported_super): Remove unused
1360 function. Add FIXME notes to e2fsck_get_journal(), from
1361 Andreas Dilger.
1362
1363 * pass1.c (e2fsck_pass1): Cap the maximum legal size of a file by
1364 the limit caused by the fact that i_blocks is in 512 byte
1365 units, and that the Linux buffer cache also fundamentally
1366 assumes 512 byte sectors.
1367 Make sure that the journal inode is a regular file, and
1368 when clearing an unused journal inode, make sure the
1369 icount db is updated.
1370
1371 * problem.c, problem.h (PR_1_JOURNAL_BAD_MODE): Add new problem code.
1372
37b6b297
TT
1373 * problem.c: For PR_1_RESERVED_BAD_MODE, print a description of
1374 the reserved inode. In PR_0_JOURNAL_HAS_JOURNAL, prompt
1375 to clear the journal, rather than deleting it (which is
1376 more accurate). (From Andreas Dilger.)
1377
6a6d3d44
TT
1378 * journal.c: Make sure all functions which return an error code
1379 use the errcode_t return type, and not "int"
1380 (e2fsck_journal_release): Add new parameter, "drop",
1381 which is used when we just want to deallocate the journal
1382 without trying to write out any changes.
1383 (mark_buffer_clean): New function
1384 (e2fsck_check_ext3_journal): If we fail loading the
1385 journal, make sure we free all memory associated with it.
1386 (recover_ext3_journal): If we fail to load the journal or
1387 initialize the revoke data structures, make sure we free all
1388 memory associated with the journal.
1389
721edd0e
TT
1390 * message.c (special_inode_name): Add more special inode names
1391 (From Andreas Dilger)
1392
58a75177
TT
1393 * util.c (fatal_error): Check to make sure the io_manager data
1394 structure is sane before trying to flush the io_channel.
1395 (From Andreas Dilger)
1396
721edd0e
TT
1397 * mtrace.h, super.c, pass2.c: Minor whitespace cleanups, from
1398 Andreas Dilger.
4035f40b 1399
7e92dfae
TT
1400 * journal.c (e2fsck_journal_fix_bad_inode): Set pctx->ino to the
1401 bad journal number.
1402
1403 * problem.c (PR_0_JOURNAL_BAD_INODE): Use pctx->ino instead of
1404 pctx->num when printing the bad journal inode number.
1405
86c627ec
TT
14062001-01-11 <tytso@snap.thunk.org>
1407
5ba23cb1
TT
1408 * pass1.c (process_block): Remove dead code which was never
1409 getting executed.
1410
1411 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
1412 ext2fs_sync_device() instead of using BLKFLSBUF.
1413
1414 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
1415
86c627ec
TT
1416 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
1417 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
1418 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
1419 ino_t to ext2_ino_t.
1420
95a5bc91
TT
14212001-01-09 <tytso@snap.thunk.org>
1422
1423 * problem.c: Fix another broken @F vs @f problem.
1424
53ef44c4
TT
14252001-01-06 <tytso@snap.thunk.org>
1426
1427 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
1428 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
1429
1430 * jfs_user.h: Use more sophisticated inline handling to allow
1431 building with --enable-gcc-wall
1432
d3f35b64
TT
14332001-01-03 <tytso@snap.thunk.org>
1434
f18996c8
TT
1435 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
1436 own block; if the journal inode is not in use, and it
1437 contains data, offer to clear it.
1438
1439 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
1440 problem code.
1441
1442 * problem.c: Modified problem table to use a new abbreviations.
1443
d74edf4e 1444 * message.c: Add @j abbreviation for journal, and @v abbreviation
e904406e 1445 for device.
1ce64539 1446
cc7067b4
TT
1447 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
1448
d3f35b64
TT
1449 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
1450 the journal stored on a reserved inode. Also force a fsck
1451 if the journal appears to exist while !NEEDS_RECOVERY, and
1452 we forcibly reset the journal.
1453
f5ae75e5
TT
14542001-01-01 <tytso@snap.thunk.org>
1455
5dd8f963
TT
1456 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
1457 ext2fs_sb with struct ext2_super_block.
1458
f5ae75e5
TT
1459 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
1460
2fe1efe2
TT
14612000-12-31 <tytso@snap.thunk.org>
1462
1463 * jfs_compat.h: Remove uneeded header file.
1464
b2f93192
TT
14652000-12-30 <tytso@snap.thunk.org>
1466
c59a704b
TT
1467 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
1468 conflicts with the system header file.
1469
b2f93192
TT
1470 * problem.h: Fixed numbering of pass1 error messages; an extra 0
1471 had slipped into some of the numbers. (Pointed out by
1472 Andreas Dilger)
1473
1474 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
1475 unnecessary automatic variable. Add explanatory comment
1476 about the kernel emulation routines. (Suggested by
1477 Andreas Dilger)
1478
060b5fbf
TT
14792000-12-13 Theodore Ts'o <tytso@valinux.com>
1480
9b565759
TT
1481 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
1482 journal fields are consistent if any of the superblock
1483 fields are set. (Backs out erroneous change made by sct,
1484 pointed out by Andreas.)
1485
1486 * unix.c (main): Clarify coments (no code changes)
1487
1488 * super.c (release_orphan_inodes): Fix spelling typo in error message.
1489
8188c9e6
TT
1490 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
1491 level if we need to set large files flag. Patch from
1492 Andreas Dilger.
1493
7b59f1ef
TT
1494 * super.c (check_super_block): If we have any of the compatibility
1495 flags set, we need to have a revision 1 filesystem. Most
1496 kernels will not check the flags on a rev 0 filesystem
1497 and we may have corruption issues because of the
1498 incompatible changes to the filesystem. Patch from Andreas
1499 Dilger.
1500
060b5fbf
TT
1501 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
1502 new problem codes.
1503
0e8a9560
TT
15042000-12-09 <tytso@snap.thunk.org>
1505
bf2d4999
TT
1506 * flushb.c: Fix flushb so that it does something other than waste
1507 disk space when built on systems with modern header files
1508 and add a non-subtle Copyright Licensing restriction so
1509 Yann will remove it from the Debian Distribution. (Now
1510 violates the Debian Free Software Guidelines, on purpose.)
1511
f43650c3
TT
1512 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
1513 at the top level, set the JFS debuging level to 2.
1514
0e8a9560
TT
1515 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
1516 has been moved to the include/linux directory.
1517
1518 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
1519 support the V2 superblock and revoke processing. The
1520 journal.c and revoke.c files are copies from the ext3
1521 kernel source.
1522
1523 * Makefile.in: Added revoke.c to the list of source/object files.
1524
133a56dc
TT
15252000-11-16 Theodore Ts'o <tytso@valinux.com>
1526
1527 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
1528 reporting problems rather than using com_err directly.
1529
1530 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
1531
1532 * message.c (expand_percent_expression): Add safety check. If
1533 ctx->str is NULL, print "NULL" instead of dereferencing
1534 the null pointer.
1535
1536 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
1537 to ext2fs_block_iterate2, to support 64-bit filesizes and
1538 to speed things up slightly by avoiding the use of the
1539 ext2fs_block_iterate's compatibility shim layer.
1540
3f65f1ac
TT
15412000-10-30 <tytso@snap.thunk.org>
1542
1543 * util.c (get_backup_sb): Calculate backup superblock correctly
1544 when the blocksize is > 1k.
1545
241f224f
TT
15462000-10-26 <tytso@snap.thunk.org>
1547
1548 * jfs.h, jfs_compat.h, journal.c: Updated to include the
1549 definition of the new journal superblock format; still
1550 only supports V1 superblocks for now. (From sct)
1551
b09a4b0c
TT
15522000-10-24 <tytso@snap.thunk.org>
1553
8394902e
TT
1554 * super.c (release_inode_block, release_inode_blocks,
1555 release_orphan_inodes): Add code to deal with truncating
1556 inodes which are still in use (but which are on the orphan
1557 list because they need truncation).
1558
1559 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
1560 PR_0_ORPHAN_CLEAR_INODE, and remove
1561 PR_0_ORPHAN_INODE_INUSE.
1562
1563 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
1564 a message when the journal is being recovered.
1565
b09a4b0c
TT
1566 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
1567 journal inode, if it is in use.
1568
adfca56f
TT
15692000-09-12 <tytso@valinux.com>
1570
1571 * extend.c:
1572 * flushb.c: Add include of nls-enable.h which is necessary so that
1573 they can compile correctly.
1574
cc96b2b0
TT
15752000-08-22 <tytso@valinux.com>
1576
2575fb04
TT
1577 * unix.c (main): If we're doing a read-only check, skip the
1578 journal playback, but don't abort the e2fsck run.
1579
99a2cc96
TT
1580 * super.c (release_orphan_inodes): Fix typo; should do bounds
1581 checking on next_ino instead of ino.
1582
1583 * jfs_compat.h (J_ASSERT):
1584 * journal.c (e2fsck_run_ext3_journal):
1585 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
1586
243dc31f
TT
1587 * unix.c: Use fatal_error() instead of exit() whenever possible.
1588 Also fix the fsck exit codes so that we use FSCK_USAGE
1589 when it is appropriate. Rename global_signal_ctx to
1590 e2fsck_global_ctx and let it be exported globally.
1591
cc96b2b0
TT
1592 * util.c (fatal_error): Try to flush the I/O manager before
1593 forcing an exit.
1594
ecf1b776
TT
15952000-08-20 <tytso@valinux.com>
1596
1597 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
1598 e2fsck_check_ext3_journal to smash the journal because
1599 journal->j_transaction_sequence wasn't getting
1600 initialized.
1601
1602 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
1603 call to e2fsck_clear_recover from recover_ext3_journal to
1604 after the filesystem has been closed and reopened.
1605 Otherwise, the superblock in the filesystem handle will
1606 probably be stale, and will overwrite the newer version of
1607 the superblock written by the log recovery.
1608
1609 * message.c (expand_inode_expression): Add support for %Iu and %Ig
1610
1611 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
1612
1613 * super.c (release_orphan_inodes, release_inode_block,
1614 release_inode_blocks): Update the block group descriptor
1615 counts when freeing the orphan inode. Use
1616 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
1617
1618 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
1619 attempted to reopen the filesystem using the device name
1620 instead of the filesystem name.
1621
80bfaa3e
TT
16222000-08-18 <tytso@valinux.com>
1623
1624 * Makefile.in: Update the make dependencies
1625
1626 * problem.c, problem.h: Add the problem codes:
1627 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
1628 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
1629 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
1630 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
1631
1632 * super.c (release_inode_blocks, release_orphan_inodes,
1633 check_super_block): Add support for clearing orphaned
1634 inodes from the unmounted filesystem.
1635
1636 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
1637 check; this is now handled in check_super_block ---
1638 non-journaled filesystems can use the orphan list in the
1639 future. Also, move the the re-opening of the filesystem
1640 to e2fsck_run_ext3_journal().
1641
3b5386dc
TT
16422000-07-12 Andreas Dilger <adilger@turbolinux.com>
1643
1644 * journal.c: implement loading of ext3 journal for recovery code
1645
1646 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
1647 Add journal problems.
1648
1649 * recovery.c (journal_recover): user-space ext3 journal recovery code
1650
1651 * unix.c (main) : check journal and do recovery in separate steps
1652
b8d164cd
TT
16532000-08-07 <tytso@snap.thunk.org>
1654
1655 * unix.c (calc_percent): Make sure that we don't take a floating
1656 exception if the max value is zero. (should normally
1657 never happen, but...)
1658
f9e67064
TT
16592000-07-13 <tytso@valinux.com>
1660
1661 * Release of E2fsprogs 1.19
1662
17390c04
TT
16632000-07-06 Theodore Ts'o <tytso@valinux.com>
1664
1665 * unix.c (check_if_skip): Modify algorithm for checking
1666 s_max_mnt_count to match with the kernel. (If
1667 s_max_mnt_count is negative, ignore the mnt_count check.)
1668
1669 * unix.c (e2fsck_update_progress): Adjust the width of the
1670 progress bar dynamically, based on the filesystem name
1671 that we need to display.
1672
1673 * unix.c (main): If the ext3 needs_recovery flag is set, call
1674 e2fsck_run_ext3_journal() and then restart the e2fsck run.
1675
1676 * journal.c (e2fsck_run_ext3_journal): New file which contains
1677 logic to recover the ext3 journal. This version relies on
1678 the kernel being able to mount the filesystem in order to
1679 run the journal.
1680
9226904b
TT
16812000-07-05 Theodore Ts'o <tytso@valinux.com>
1682
1683 * unix.c (e2fsck_update_progress): Only save and check the last
1684 percentage after multiplying it by 10, nor 1000, since we
1685 only need to save values to a tenth of a percent (and the
1686 percentage is already from 0 .. 100%, not 0 .. 1).
e4c8e885
TT
1687 Also, re-arrange the logic so that we do the time
1688 check only after doing the percentage check, and we
1689 only advance the spinner if we're about to display it.
9226904b 1690
9cbfb8d0
TT
16912000-07-04 Theodore Ts'o <tytso@valinux.com>
1692
1693 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
1694 field is set; if so, clear it, so that ext3 mounting code
1695 won't get confused by the fact that we've cleared out the
1696 orphaned inodes.
1697
bbd47d76
TT
16982000-06-10 Theodore Ts'o <tytso@valinux.com>
1699
1700 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
1701 checking for a "should never happen case".
1702
1703 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
1704 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
1705
d647a1ea
TT
17062000-05-27 Theodore Ts'o <tytso@valinux.com>
1707
1708 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
1709 (cw@foof.org) which checks to see if special devices have
1710 a non-zero size, and deals with it.
1711
1712 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
1713
1d279218
TT
17142000-05-18 Theodore Ts'o <tytso@valinux.com>
1715
1716 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
1717 well.
1718
4ea0a110
TT
17192000-05-08 Theodore Ts'o <tytso@valinux.com>
1720
1721 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
1722 code.
1723
1724 * super.c (check_super_block): If the OS type in the superblock is
1725 the Hurd, check to see if the filetype feature is set, and
1726 offer to clear it if so. This needs to be done since the
1727 Hurd doesn't properly support the filetype feature.
1728 (And since the hurd allows the transmogrification of files
1729 to special files and vice versa --- for no good reason
1730 that I can understand --- it can't support the filetype
1731 feature for the forseeable future, either.)
1732
373b8337
TT
17332000-04-03 Theodore Ts'o <tytso@valinux.com>
1734
1735 * unix.c: For platforms that don't define optarg.h, manually
1736 define optarg and optind.
1737
01fbc701
TT
17382000-03-20 Theodore Ts'o <tytso@valinux.com>
1739
1740 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
1741 Check for the append-only as well as the immutable flag.
1742
1743 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
1744 append-only flag. Fix comment for compression flag.
1745
06012323
TT
17462000-02-12 <tytso@snap.thunk.org>
1747
1748 * unix.c (e2fsck_update_progress): Limit the number of updates to
1749 the progress bars to 8 times a second. This allows a 9600
1750 baud console link to keep up.
1751
1917875f
TT
17522000-02-11 <tytso@snap.thunk.org>
1753
1754 * unix.c (main): If compression is enabled on the filesystem,
1755 print a warning message (for now).
1756
1757 * message.c: Add new compression shortcut: @c == compress
1758
1759 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
1760
1761 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
1762 set, check to see if the filesystem supports compression.
1763 If it does pass this information down to process_block()
1764 so it can treat the compressed block flag words
1765 correctly. If not, offer to clear the flag, since it
1766 shouldn't be set.
1767 (process_block): If an inode has the compressed inode flag
1768 set, allow EXT2FS_COMPRESSED_BLKADDR.
1769
1770 * pass1b.c (process_pass1b_block, delete_file_block,
1771 clone_file_block):
1772 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
1773 see if the block can be skipped.
1774
28ffafb0
TT
17752000-02-08 <tytso@snap.thunk.org>
1776
4ee4ad37
TT
1777 * util.c: Make resource tracking message more concise.
1778
80c5d7e4
TT
1779 * e2fsck.h:
1780 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
1781 ctx->block_illegal_map, since it's not needed by pass1,
1782 and pass1b has been modified to calculate it manually if
1783 needed. This reduces the memory footprint needed by e2fsck.
1784
1785 * pass1b.c (check_if_fs_block): New static function which returns
1786 whether or not a block overlaps with filesystem metadata.
1787 This replaces consulting the block_illegal_map bitmap.
1788
28ffafb0
TT
1789 * Makefile.in: Call sync after finishing building all in this
1790 directory.
1791
1792 * unix.c (PRS): sync the filesystem before trying to use
1793 BLKFLSBUF, to minimize the chance of causing dirty blocks
1794 to get dropped.
1795
1796 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
1797 a Linux/i386 system.
1798
1799 * pass3.c (check_directory): Only do the loop detection algorithm
1800 if we've searched over 2048 parent directories and haven't
1801 found the end yet. This means that in the common case, we
1802 don't allocate or clear the inode_loop_detection bitmap,
1803 which for large systems, merely clearing the bitmap for
1804 each directory was turning out to be quite expensive.
1805 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
1806 identifying this problem.
1807
0c4a0726
TT
18082000-02-06 Theodore Ts'o <tytso@valinux.com>
1809
1810 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
1811 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
1812 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
1813 unix.c, util.c: Add Internationalization support as
1814 suggested by Marco d'Itri <md@linux.it>.
1815
80e808fc
TT
18162000-02-02 Theodore Ts'o <tytso@valinux.com>
1817
1818 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
1819 linux/fs.h
1820
894edb2e
TT
18212000-01-18 Theodore Ts'o <tytso@valinux.com>
1822
1823 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
1824 we need a separate DEPLIBUUID that can be used in
1825 Makefile's dependency rules.
1826
a1ccadb4
TT
18271999-11-23 <tytso@valinux.com>
1828
1829 * e2fsck.8.in: Update language about where to find a backup
1830 superblock.
1831
5c36a2f8
TT
18321999-11-19 <tytso@valinux.com>
1833
86a63e92
TT
1834 * pass1.c (process_inodes): Add shortcut handling; if
1835 process_inodes_count is zero, return right away, to avoid
1836 calling qsort with a non-positive count.
1837
ec8d2c3f
TT
1838 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
1839 to print Delete as ^?
1840
5c36a2f8
TT
1841 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
1842 the source directory.
1843
cd086361
TT
18441999-11-10 <tytso@valinux.com>
1845
1846 * Release of E2fsprogs 1.18
1847
a846d2f4
TT
18481999-11-10 <tytso@valinux.com>
1849
1850 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
1851 means the answer is assumed to be no in preen mode. This
1852 is now used in the PR_1_SET_IMMUTABLE code, so that in
1853 preen mode we ignore these inodes and just print a warning
1854 message.
1855
6fdc7a32
TT
18561999-11-09 <tytso@valinux.com>
1857
1858 * pass1.c (e2fsck_pass1): If the filesystem does not support
1859 imagic inodes, if an inode has the imagic flag set, offer
1860 to clear the imagic flag. If a valid device/fifo/socket
1861 has the immutable flag set, call the new helper function
1862 check_immutable() to offerto clear the immutable flag.
1863
1864 * pass2.c (check_filetype): Use the new ext2_file_type() helper
1865 function instead of calculating the file_type information
1866 manually.
1867
1868 * pass3.c (e2fsck_reconnect_file): When adding a link to
1869 lost+found, calculate the filetype information so that
1870 ext2fs_link() can use the information if applicable.
1871 (get_lost_and_found): Create the /lost+found directory
1872 with the correct filetype information if applicable.
1873
1874 * util.c (ext2_file_type), e2fsck.h: New function which returns
1875 the directory entry file type information given the
1876 inode's mode bits.
1877
1878 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
1879 and PR_1_SET_IMMUTABLE.
1880
7142db08
TT
18811999-11-07 <tytso@valinux.com>
1882
1883 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
1884 to prevent it from getting freed twice.
1885
18861999-11-06 <tytso@valinux.com>
1887
1888 * unix.c (main): Close the filesystem before freeing the context,
1889 so that in the event of a free()-related segmentation
1890 violation, the filesystem is properly closed and written
1891 out.
1892
18931999-10-27 <tytso@valinux.com>
1894
1895 * e2fsck.c (e2fsck_reset_context): When freeing
1896 ctx->inode_reg_map, we weren't zero'ing
1897 ctx->inode_reg_map, which could cause a segfault later on
1898 in the e2fsck run.
1899
19001999-10-26 <tytso@valinux.com>
1901
1902 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
1903 matches the standard convention).
1904
28e1194e
TT
19051999-10-26 <tytso@valinux.com>
1906
1907 * Release of E2fsprogs 1.17
1908
f68aa414
TT
19091999-10-26 <tytso@valinux.com>
1910
1911 * message.c (safe_print): Make safe_print take an char instead of
1912 an unsigned char to fix gcc warnings.
1913
c40db6d5
TT
19141999-10-25 <tytso@valinux.com>
1915
e6597048
TT
1916 * util.c: For NT portability, don't redefine getchar(), since
1917 stdio defines that. Instead we introduce a new
1918 abstract macro read_a_char() which is #defined to the
1919 right function as necessary.
1920
c40db6d5
TT
1921 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
1922
1923 * pass2.c (check_dir_block): Require that the length of the
1924 directory entry be at least 12 bytes. Check to see if the
1925 filename is zero-length, and flag that as an error.
1926
614fdfd5
TT
19271999-10-22 <tytso@valinux.com>
1928
1929 * Release of E2fsprogs 1.16
1930
7847c1d4
TT
19311999-10-22 <tytso@valinux.com>
1932
1933 * pass2.c (check_filetype): If the filetype filesystem feature is
1934 not set, and a directory entry has a dirent feature, offer
1935 to clear it (since 2.0 kernels will do complain will
1936 interpret it as a very large name length field).
1937
1938 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
1939
aa4115a4
TT
19401999-10-21 <tytso@valinux.com>
1941
caf8ce4c
TT
1942 * e2fsck.8.in: Update man page to use a more standard format (bold
1943 option flags and italicized variables), as suggested by
1944 Andreas Dilger (adilger@enel.ucalgary.ca)
1945
aa4115a4
TT
1946 * pass4.c (e2fsck_pass4): If an inode is set in the
1947 inode_imagic_map bitmap, don't check to see if it is
1948 disconnected from the inode tree (because it almost
1949 certainly will be). Free inode_imagic_map at the end of
1950 pass 4.
1951
1952 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
1953 feature is set, check the directory entry's filetype
1954 information field, and fix/set it if necessary.
1955 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
1956 of pass 2.
1957
1958 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
1959 information for inode_reg_map and inode_imagic_map, which
1960 indicates which inodes are regular files and AFS inodes,
1961 respectively.
1962 Since only the master superblock is written during a
1963 restart, force that superblock to be used after a restart;
1964 otherwise changes to the block group descriptors end up
1965 getting ignored.
1966
1967 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
1968 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
1969 which supresses the problem message if e2fsck is run with
1970 the -n option.
1971
1972 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
1973 new problem codes.
1974
1975 * message.c (expand_dirent_expression): Add support for %dt which
1976 prints the dirent type information.
1977
1978 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
1979 and inode_imagic_map).
1980
1981 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
1982 to the context structure.
1983
9ecd8bec
TT
19841999-09-24 <tytso@valinux.com>
1985
1986 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
1987 e2fsprogs easier to port to non-Unix platforms.
1988
19891999-09-07 <tytso@valinux.com>
c1faf9cc
TT
1990
1991 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
1992 internal and external inode counts in sync when we
1993 decremented an inode whose link count was already zero.
1994 Now we skip incrementing or decrementing both link counts
1995 if we would cause an overflow condition.
1996 (expand_dir, expand_dir_proc): Change where we update the
1997 inode block count and size files so that the block count
1998 field is updated correctly when we create an indirect block.
1999
78cf0547
TT
20001999-08-05 <tytso@valinux.com>
2001
2002 * super.c (check_super_block): Check to see whether the
2003 inodes_per_group value in the superblock is insanely too
2004 high.
2005
c1faf9cc
TT
20061999-08-02 <tytso@valinux.com>
2007
2008 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
2009 the block also shares data with the fs metadata when
2010 the count drops to 1, since the block should still be
2011 cloned, as fs metadata isn't included in the count.
2012
20131999-07-18 Theodore Ts'o <tytso@valinux.com>
657cb975
TT
2014
2015 * Release of E2fsprogs 1.15
2016
b55199ea
TT
20171999-07-19 <tytso@valinux.com>
2018
2019 * unix.c (usage): Add minimalist emergency help to the usage
2020 message.
2021
5596defa
TT
20221999-07-18 <tytso@valinux.com>
2023
2024 * unix.c: Add support for calculating a progress bar if the -C0
2025 option is given. The function e2fsck_clear_progbar()
2026 clears the progress bar and must be called before any
2027 message is issued. SIGUSR1 will enable the progress bar,
2028 and SIGUSR2 will disable the progress bar. This is used
2029 by fsck to handle parallel filesystem checks. Also, set
2030 the device_name from the filesystem label if it is
2031 available.
2032
2033 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
2034 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
2035 structure which contains the last tenth of a percent
2036 printed for the user.
2037
2038 * message.c (print_e2fsck_message): Add call to
2039 e2fsck_clear_progbar().
2040
2041 * pass1.c (e2fsck_pass1):
2042 * pass2.c (e2fsck_pass2):
2043 * pass3.c (e2fsck_pass3):
2044 * pass4.c (e2fsck_pass4):
2045 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
2046 printing the resource tracking information.
2047
2048 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
2049 an error in the bitmaps, suppress printing the progress
2050 bar using the suppression flag for the remainder of the
2051 check, in order to clean up the display.
2052
74033350
TT
20531999-06-30 <tytso@valinux.com>
2054
2055 * unix.c (check_mount): Clean up the abort message displayed when
2056 the filesystem is mounted and either stdout or stdin isn't
2057 a tty.
2058
20591999-06-25 <tytso@valinux.com>
e72a9ba3
TT
2060
2061 * e2fsck.h:
2062 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
2063 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
2064 pass1_* be private static functions, and create new
2065 function e2fsck_use_inode_shortcuts which sets and clears
2066 the inode shortcut functions in the fs structure.
2067
2068 * e2fsck.h:
2069 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
2070 exported function.
2071
2072 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
2073 if a disconnected inode has any problems before
2074 connecting it to /lost+found. Bug and suggested fix by
2075 Pavel Machek <pavel@bug.ucw.cz>
2076
20771999-06-21 <tytso@valinux.com>
813bbb25
TT
2078
2079 * unix.c (main): Add missing space in the disk write-protected
2080 message.
2081
d4b0ce03
TT
20821999-05-22 <tytso@rsts-11.mit.edu>
2083
2084 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
2085 code.
2086
2087 * super.c (check_super_block): Add check to make sure the total
2088 number of inodes is sane, since this can be calculated
2089 from the number of groups times the number of inodes per
2090 group. Offer to correct it if it is incorrect.
2091
e79d1b23
TT
20921999-03-19 <tytso@rsts-11.mit.edu>
2093
2094 * pass5.c (check_block_end): Fix fencepost condition where when
2095 clearing the block padding we were missing the last position
2096 in the bitmap.
2097
75d83bec
TT
20981999-05-17 <tytso@rsts-11.mit.edu>
2099
2100 * unix.c (reserve_stdio_fds): Add safety check in case
2101 reserve_stdio_fds couldn't open /dev/null.
2102
4a9f5936
TT
21031999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
2104
2105 * util.c (print_resource_track): Use mallinfo if present to get
2106 more accurate malloc statistics.
2107
2108 * pass3.c (get_lost_and_found): Check to see if lost+found is a
c54b3c3c 2109 plain file; if so, offer to unlink it.
4a9f5936
TT
2110
2111 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
2112
21131999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2114
2115 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
2116 that the block group number is printed. Add new prompt,
2117 PROMPT_UNLINK.
2118
21191999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2120
2121 * Release of E2fsprogs 1.14
2122
9e51eca7
TT
21231999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2124
2125 * message.c (safe_print): New function which prints strings,
2126 converting non-printable characters using the '^' and
2127 M-notation. This function is now used to print directory
2128 name entries and pathnames.
2129
73f17cfc
TT
2130Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
2131
2132 * unix.c (main): Reset the context before calling ext2fs_close(),
2133 to avoid referencing already freed memory.
2134
556ad132
TT
21351998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
2136
2137 * Release of E2fsprogs 1.13
2138
5a679c8f
TT
21391998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
2140
2141 * Makefile.in: Updated dependencies.
2142
21431998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
2144
2145 * pass3.c (get_lost_and_found): If the filesystem is not opened
2146 read-only, then force /lost+found to be created if it is
2147 not present.
2148
2149 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
2150 operation.
2151
1dde43f0
TT
21521998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2153
2154 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
2155 since e2fsck_free_context may reference data in ctx->fs.
2156
2157 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
2158 before checking ctx->fs->dblist.
2159
21601998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2161
2162 * pass1.c (e2fsck_pass1): Use the device check subroutine on
2163 FIFO's and Socket's, so that we catch bogus immutable inodes.
2164
2165 * pass2.c (process_bad_inode): Process bad socket and fifo's.
2166
2167 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
2168 PR_2_BAD_SOCKET.
2169
7f813ba3
TT
21701998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
2171
2172 * problem.c: Add PR_3_NO_DIRINFO error code.
2173
2174 * super.c (check_super_value): Rename min and max to min_val and
2175 max_val to avoid possible cpp macro conflicts.
2176
2177 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
2178 possible cpp macro conflicts.
2179
2180 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
2181 cpp macro conflicts.
2182 (check_directory): Fix logic to avoid possible core dump
2183 in the case of ext2fs_get_dir_info returning NULL. (By
2184 the time we get here, it should never happen, but...).
2185 Also simply/streamline the control flow of the function.
2186
24fc5032
TT
21871998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
2188
2189 * unix.c (check_if_skip): Move the "not cleanly mounted" check
2190 ahead of the maximal mount and too long since checked tests.
2191 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
2192 open, so that we don't open the filesystem using the same
2193 file descriptor as stdout or stderr.
2194
f75c28de
TT
21951998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
2196
2197 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
2198 get to 100%.
2199
2200 * pass3.c (e2fsck_pass3): Change progress accounting to be
2201 consistent with the other e2fsck passes.
2202
2203 * e2fsck.c (e2fsck_run): At the end of each pass, call the
2204 progress function with the pass number set to zero.
2205
2206 * unix.c (e2fsck_update_progress): If the pass number is zero,
2207 ignore the call, since that indicates that we just want to
2208 deallocate any progress structures.
2209
4a5fa192
TT
22101998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2211
2212 * Release of E2fsprogs 1.12
2213
8144d679
TT
22141998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
2215
2216 * unix.c (main): Fix typo in checking the incompat feature set; it
2217 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
2218
1fad9048
TT
22191998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
2220
2221 * badblocks.c (test_disk): Don't clear the existing bad blocks
2222 list when using e2fsck -c, since it may cause blocks with
2223 marginal errors to be dropped from the bad blocks list.
2224
874b4d26
TT
2225Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
2226
2227 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
2228 compatibility with older kernels.
2229
818180cd
TT
22301998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
2231
2232 * unix.c (e2fsck_update_progress): Remove unused variables.
2233
9d1bd3de
TT
22341998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
2235
2236 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
2237 collision with LFS API.
2238
2239 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
2240 properly initialized.
2241 (e2fsck_pass1): Don't allow the the boot loader inode to
2242 be a directory (clear the inode mode field if so).
2243
efac9a1b
TT
22441998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
2245
2246 * unix.c (PRS): Added new option -C, which causes e2fsck to print
2247 progress updates so that callers can keep track of the
2248 completion progress of e2fsck. Designed for use by
2249 progress, except for -C 0, which prints a spinning report
2250 which may be useful for some users.
2251
2252 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
2253 scheme (useful for larger filesystems).
2254
2255 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
2256 progress reporting functions.
2257
4c77fe50
TT
22581998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2259
2260 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
2261 appropriate return type for comparison functions for qsort.
2262
2263 * e2fsck.h: Add #ifdef protection for unistd.h
2264
2265 * super.c: Remove header files already included by e2fsck.h
2266
76f875da
TT
22671998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
2268
2269 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
2270 size of the memory to be resized to ext2fs_resize_mem().
2271
7e44f242
TT
22721998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
2273
2274 * Makefile.in: Change to use new installation directory variables
2275 convention. Fix uninstall rules to take $(DESTDIR) into
2276 account. Remove cat8dir from the installdirs target,
2277 since modern man package don't necessarily put the cat
2278 directory in /usr/man/cat?.
2279
17dba281
TT
22801998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
2281
2282 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
2283 extern in e2fsck.h to prevent -Wall warnings.
2284
2285 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
2286
22871998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
2288
2289 * super.c (check_super_block): Fix broken superblock sanity check
2290 when calculating blocks_per_group if s_log_frag_size !=
2291 s_log_block_size. Since we don't support fragments, this
2292 isn't a bug deal, but it's good to get it fixed.
2293
246501c6
TT
22941998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
2295
2296 * unix.c: Fix bug in check of feature set, to make sure we can
2297 really fix this filesystem.
2298
2299 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
2300 num field be a 64 bit type. Add the problem code
2301 PR_1_FEATURE_LARGE_FILES
2302
2303 * problem.c: Add table entry for the problem code
2304 PR_1_FEATURE_LARGE_FILES.
2305
2306 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
2307 a problem for directory inodes. (Since it is also
2308 i_size_high now.) If there are no large_files, then
2309 clear the LARGE_FLAG feature flag. If there are
2310 large_files, but the LARGE_FLAG feature flag is not set,
2311 complain and offer to fix it.
2312 (check_blocks): Add support to deal with non-directory
2313 inodes that have i_size_high set (i.e., large_files).
2314 Don't give an error if a directory has preallocated
2315 blocks, to support the DIR_PREALLOC feature.
2316 (process_block, process_bad_block): The blockcnt variable
2317 is a type of blkcnt_t, for conversion to the new
2318 block_iterate2.
2319
2320 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
2321 a problem for directory inodes. (Since it is also
2322 i_size_high now.)
2323
2324 * message.c (expand_inode_expression): Print a 64-bits of the
2325 inode size for non-directory inodes. (Directory inodes
2326 can only use a 32-bit directory acl size, since
2327 i_size_high is shared with i_dir_acl.) Add sanity check
2328 so that trying to print out the directory acl on a
2329 non-directory inode will print zero.
2330 (expand_percent_expression): %B and %N, which print
2331 pctx->blkcount and pctx->num, can now be 64 bit
2332 variables. Print them using the "%lld" format if
2333 EXT2_NO_64_TYPE is not defined.
2334
2335 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
2336
2337 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
2338 field.
2339
b6f79831
TT
2340Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2341
2342 * pass3.c (fix_dotdot_proc):
2343 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
2344 * message.c (expand_dirent_expression): Mask off the high eight
2345 bits of the directory entry's name_len field, so that it
2346 can be used for other purposes.
2347
2df1f6aa
TT
2348Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2349
2350 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
2351 include EXT2_FLAG_RESTART anymore, we need to adjust this
2352 routine so that it *does* return in the case of it seeing
2353 EXT2_FLAG_RESTART.
2354
2355 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
2356 done callback function, which may set context abort
2357 flags. So we need to test the context abort flags after
2358 we call ext2_get_next_inode().
2359 (process_inodes): If we abort due out of process_inodes,
2360 do a clean exit by breaking out of the for loop instead of
2361 just returning.
2362
2363 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
2364 considered a SIGNAL mask (i.e., requiring an immediate
2365 abort of processing to restart). FLAG_RESTART just means
2366 that we want to restart once pass 1 is complete.
2367
a02ce9df
TT
2368Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2369
2370 * Change the progress function to return an integer; if returns 1,
2371 then the progress function is expected to have set the
2372 e2fsck context flag signalling a user abort, and the
2373 caller should also initiate a user abort.
2374
63c4969c
TT
2375Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2376
2377 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
2378 end_problem_latch() unless there was actually a problem
2379 latched. Simplifies semantics of the latch processing.
2380
4313932c
TT
2381Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2382
2383 * e2fsck.h: Add new field, priv_data to the e2fsck context
2384 structure. It should be used by callers of the e2fsck
2385 functions only, and not by anything in e2fsck itself.
2386
2387Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2388
2389 * super.c: Instead of call ext2fs_get_device_size(), define and call
2390 e2fsck_get_device_size(). (This function may be stubbed
2391 out in special versions of e2fsck.)
2392
2393 * pass3.c, pass4.c: Remove extra calls to the progress function
2394 that weren't needed.
2395
2396 * mke2fs.8.in: Update man page to note that the format of the bad
2397 block file is the same as the one generated by badblocks.
2398
54be2ccc
TT
2399Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2400
2401 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
2402
2403 * e2fsck.h: Include <time.h> since it is needed
2404
2405 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
2406 processing.
2407
24dd4028
TT
2408Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2409
2410 * unix.c (main): In the case where the filesystem revision is too
2411 high, print the message about the superblock possibly
2412 being corrupt.
2413
2414 * e2fsck.8.in: Add expanded comments about how the -b option
2415 works.
2416
54dc7ca2
TT
2417Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2418
2419 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
2420 the ext2-specific header files are in a flat directory.
2421
2422 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
2423 super.c, swapfs.c, unix.c: Explicitly cast all assignments
2424 from void * to be compatible with C++.
2425
2426Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2427
2428 * unix.c (sync_disk): Remove sync_disk and calls to that function,
2429 since ext2fs_close() now takes care of this.
2430
2431Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2432
2433 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
2434 ehandler.c, unix.c: Change use of private to be priv_data,
2435 to avoid C++ reserved name clash.
2436
5be8dc21
TT
2437Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2438
2439 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
2440 of e2fsck_get_num_dirs, which has been removed.
2441
2442Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2443
2444 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
2445 to compile and install flushb.
2446
7fdfabd3
TT
2447Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2448
2449 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
2450 to make sure the extra i_blocks in a device are cleared if
2451 the immutable flag is set.
2452
2453 * util.c (print_resource_track): Fix typo which caused the
2454 time/resource tracking to print "Pass 1 :" instead of
2455 "Pass 1: ".
2456
b8647faa
TT
2457Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2458
2459 * pass3.c (expand_directory): Fix bug which could cause core dump
2460 when expanding the directory, and the bitmaps hadn't yet
2461 been read in. Also, only use ext2fs_write_dir_block when
2462 writing a directory block, not when writing out a fresh
2463 indirect block.
2464
8039c480
TT
2465Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2466
2467 * pass1.c (process_bad_block): Fix bug where first_block wasn't
2468 getting incremented, which caused user to get a
2469 "Programming error?" warning if there was a bad block in a
2470 non-primary superblock/group_descriptor. Also fixed
2471 another bug so that ext2fs_bg_has_super() is consulted, to
2472 avoid problems when using a filesystem with the
2473 sparse_groups option set and there are bad blocks at the
2474 beginning of a group which doesn't have a superblock.
2475
f8188fff
TT
2476Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2477
2478 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
2479 progress indicator function.
2480
2481 * pass1.c (scan_callback): Add call to the progress feedback
2482 function (if it exists).
2483
2484Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2485
2486 * super.c (check_super_block): Skip the device size check if the
2487 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
2488
2489 * iscan.c (main): Don't use fatal_error() anymore.
2490
2491 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
2492 calling fatal_error(0).
2493
2494 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
2495 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
2496
2497 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
2498
2499 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
2500
2501 * problemP.h: New file which separates out the private fix_problem
2502 data structures.
2503
2504 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
2505 swapfs.c util.c: allocate_memory() now takes a e2fsck
2506 context as its first argument, and rename it to be
2507 e2fsck_allocate_memory().
2508
08b21301
TT
2509Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2510
68227542
TT
2511 * unix.c (main): Add a special case check for the error code EROFS
2512 and display an appropriate error message for this case.
2513
08b21301
TT
2514 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
2515 to take the e2fsck context as their first argument.
2516 Change dir_info.c routines to take an e2fsck_context,
2517 renamed them to start with e2fsck_ to avoid namespace
2518 issues, and changed them to store the directory
2519 information inside the e2fsck context.
2520 Added e2fsck_run() which calls all of the e2fsck passes in
2521 the correct order, and which handles the return of abort
2522 codes. Added abort processing, both via setjmp/longjmp
2523 and via flags in the e2fsck context. Use a flag in the
2524 e2fsck context instead of the restart_e2fsck global
2525 variable. Change uses of free and malloc to
2526 ext2fs_free_mem and ext2fs_get_mem.
2527
291c9049
TT
2528Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2529
2530 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
2531 consistency.
2532
c555aebd
TT
2533Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2534
2535 * pass3.c (get_lost_and_found): Check error return of
2536 EXT2_FILE_NOT_FOUND instead of ENOTDIR
2537
2538 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
2539 instead of ENOTDIR
2540
622f5f27
TT
2541Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2542
519149fb
TT
2543 * unix.c (PRS): Make the variable which getopt returns into be
2544 an int, so that it won't lose on platforms where char is
2545 unsigned.
2546
622f5f27
TT
2547 * pass1b.c (clone_file): Fix bug in error reporting in the case
2548 where cs.errcode is non-zero.
2549
b2da22d1
TT
2550Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2551
8bf191e8
TT
2552 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
2553 RESOURCE_TRACK around code which uses init_resource_track
2554 and print_resource_track. (Not all systems have timeval)
2555
b2da22d1
TT
2556 * super.c: Remove excess #includes which are not necessary.
2557
2558 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
2559
1b6bf175
TT
2560Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2561
2562 * pass*.c, super.c: Massive changes to avoid using printf and
2563 com_err routines. All diagnostic messages are now routed
2564 through the fix_problem interface.
2565
2566Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2567
2568 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
2569 entries.
2570
2571 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
2572 PR_2_DUP_DOT_DOT.
2573
2574Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2575
2576 * problem.c: Added new problem codes for some of the
2577 superblock corruption checks, and for the pass header
2578 messages. ("Pass 1: xxxxx")
2579
2580 * util.c (print_resource_track): Now takes a description
2581 argument.
2582
2583Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2584
2585 * super.c, unix.c, e2fsck.c: New files to separate out the
2586 operating-specific operations out from e2fsck.c.
2587 e2fsck.c now contains the global e2fsck context management
2588 routines, and super.c contains the "pass 0" initial
2589 validation of the superblock and global block group
2590 descriptors.
2591
2592 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
2593 (nearly) all global variables and moved them to the e2fsck
2594 context structure.
2595
2596 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
2597 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
2598 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
2599
7cf73dcd
TT
2600Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2601
2602 * message.c: Add compression for the word "Illegal"
2603
2604 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
2605 PR_2_BAD_BLOCK_DEV
2606
2607Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2608
2609 * pass1.c (pass1, check_device_inode), pass2.c
2610 (process_bad_inode): Use a more stringent test for a valid
2611 device.
2612
a47b66ee
TT
2613Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2614
2615 * e2fsck.c (check_mount): Add stronger warning message about the
2616 perils of running e2fsck on a mounted filesystem.
2617
024996cf
TT
2618Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2619
2620 * Release of E2fsprogs 1.11
2621
da2e97f7
TT
2622Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2623
2624 * pass1.c (mark_table_blocks): Mark the superblock and group
2625 descriptor blocks first, so that any conflicts between
2626 these and the bitmap or inode table blocks is noticed.
2627
2628 * problem.c: Fix message printed out when a block or inode bitmap
2629 conflicts with other fs data, has the correct group number
2630 in it.
2631
7ac02a5e
TT
2632Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2633
2634 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
2635
f635d7f6
TT
2636Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2637
583ccdc3
TT
2638 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
2639 Hawes (whawes@star.net).
2640
f635d7f6
TT
2641 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
2642 bad blocks command so that all of the filesystem gets
2643 tested in the case where the blocksize 2048 or 4096.
2644
a29f4d30
TT
2645Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
2646
2647 * Release of E2fsprogs version 1.10
2648
2649Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2650
2651 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
2652 where ext2fs_get_next_inode returns the
2653 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
2654
2655Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2656
2657 * Release of E2fsprogs version 1.09
2658
2ecc6fef
TT
2659Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2660
2661 * Release of E2fsprogs version 1.08
2662
521e3685
TT
2663Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2664
2665 * pass1b.c (clone_file_block): If we clone a directory, we need to
2666 update the dblist entry so that we check (and correct) the
2667 right directory block.
2668
2669Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2670
2671 * pass1.c (process_block): Don't clear blocks references to
2672 filesystem metadata; let pass 1B handle this case.
2673
2674 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
2675
2676 * pass1b.c (pass1d): Deal with a block which is shared with
2677 filesystem metadata.
2678
2679 * e2fsck.h: Make block_illegal_map be a global variable
2680
2681Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2682
2683 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
2684 feature.
2685 (get_backup_sb): New function which attempts to obtain the
2686 correct backup superblock (if possible).
2687
2688Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2689
2690 * e2fsck.c (main): Check the version of the library, and warn if
2691 the library is out of date; this happens generally due to
2692 users who manually install e2fsprogs.
2693
2694 * pass1.c (pass1_get_blocks): If the passed in inode number for
2695 get_blocks isn't what we're expecting pass back
2696 EXT2_ET_CALLBACK_NOT_HANDLED.
2697
21c84b71
TT
2698Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
2699
2700 * Release of E2fsprogs version 1.07
2701
2702Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2703
2704 * icount.c: New file which implements an inode count abstraction.
2705 This significantly reduces amount of memory needed to
2706 check really large filesystems.
2707
2708 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
2709 abstraction.
2710
2711Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2712
2713 * dirinfo.c (dir_info_iter): New function which allows iteration
2714 over the directories in the dir_info map.
2715
2716 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
2717 over all directories in the dir_info structure, instead of
2718 iterating all inodes looking for directories, and then
2719 looking up the directories using get_dir_info().
2720
2721Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2722
2723 * pass1.c (pass1, process_block):
2724 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
2725 manual code to manage the directory block list information.
2726
2727 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
2728 (deallocate_inode): Call the ext2 library routine
2729 ext2_inode_has_valid_blocks() instead of
2730 inode_has_valid_blocks().
2731
2732 * swapfs.c (swap_inodes): Add check so that we don't try to call
2733 swap_inode_blocks unless the inode has valid blocks.
2734 (Otherwise a long fast symlink might cause
2735 swap_inode_blocks to erroneously get called.)
2736
2737Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2738
2739 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
2740 PR_2_DOT_DOT_NULL_TERM.
2741
2742 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
2743 .. entries are null-terminated, since the 2.0 kernel
2744 requires this (for no good reason).
2745
2746Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2747
2748 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
2749 that we can recover from missing inode tables.
2750
2751 * dirinfo.c (get_dir_info): If there are no directories in the
2752 dir_info abstraction, don't core dump (because dir_info is
2753 NULL).
2754
2755 * e2fsck.c (main): Don't try using the backup superblocks if there
2756 aren't any.
2757 (check_super_block): If there are illegal inode table or
2758 bitmaps, set the filesystem as being in error.
2759
2760Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2761
2762 * pass2.c (check_dir_block): Added check to make sure that rec_len
2763 is a a multiple of 4 (so that the directory entries are
2764 4-byte aligned).
2765
2766Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2767
2768 * Makefile.in (uninstall): Uninstall all programs in the PROGS
2769 line.
2770 (PROGS): Don't build and install the extend program by
2771 default.
2772
2773
2774Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2775
2776 * pass1.c (process_inodes): Make sure the stashed_ino variable is
2777 saved and restored as well.
2778 (pass1): For fast sym links, skip the check_blocks
2779 processing step altogether.
2780
2781Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2782
2783 * problem.c, message.c: New files, to completely refurbish how
2784 filesystem problems are reported to the user. The
2785 diagnostic messages are now encoded out in an easily
2786 customizable, extensible format. The messages printed out
2787 in preen mode are all on one line, and contain the device
2788 name.
2789
2790Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2791
2792 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
2793 deleted files.
2794
2795 * pass1.c (pass1): Ignore missing inode table errors during the
2796 scan, and just skip past those inodes.
2797
2798 * pass3.c (check_root): Remove root_ino argument, and assume that
2799 the root inode must be EXT2_ROOT_INO. Move responsibility
2800 of setting the parent of the root inode in the directory
2801 inode structure to pass2().
2802
2803 * pass2.c (check_dir_block): Don't allow links to the root
2804 directory.
2805
2806 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
2807 since the inode is no longer used.
2808
2809Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2810
2811 * e2fsck.c (main): If the superblock magic number is wrong, or the
2812 block group fails a sanity check, then automatically
2813 restart trying to use the backup superblocks.
2814
2815 * pass1.c (mark_table_blocks): Make the inode tables ahead of
2816 everything else; in the case where a bitmap block overlays
2817 the inode table, the inode table should take precedence.
2818
2819 * pass2.c (maybe_clear_entry): Make the deleted/unused error
2820 message fit on one line, since the error can happen during
2821 a preen pass. (We eventually need to revamp the whole
2822 e2fsck error reporting and prompting system, but that's a
2823 job for another day.)
2824
2825Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2826
2827 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
2828 for the benefit of the inode scan functions.
2829
2830 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
2831 indicating that an inode is in a bad block, mark that
2832 inode as being used, as well as in the inode "bb" map.
2833
2834 * pass2.c (maybe_clear_entry): New function which generalizes the
2835 error cases when a directory entry needs to be cleared.
2836 (check_dir_block): If an inode is in the "bb" map, offer
2837 to clear the directory entry, since the inode is in a bad
2838 block.
2839
2840 * pass4.c (pass4): If an inode is marked as used, but is is marked
2841 in the "bb" map, don't process it as a disconnected inode.
2842
2843Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2844
2845 * Release of E2fsprogs version 1.06
2846
5c576477
TT
2847Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2848
2849 * e2fsck.c (main): Print out the version number of the shared
2850 library when using the -V option.
2851
2852 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
2853 consistency's sake.
2854
2855 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
2856 out the backup superblocks when we know we have a valid
2857 filesystem.
2858
2859Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2860
2861 * util.c (preenhalt): Make it explicit on preenhalt that running
2862 e2fsck manually means without the -a or -p flag.
2863
2864Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2865
2866 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
2867 (Linux/FT actually sets the mode bits, so we have to
2868 handle it specially.)
2869
2870 * e2fsck.c (check_if_skip): Print a message if the filesystem is
2871 just dirty, so that the user knows that it's about to be
2872 checked (since this will take a while).
2873
2874Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2875
2876 * pass4.c: If a disconnected inode is zero-length, prompt to
2877 delete it instead of connecting it to lost+found.
2878
2879Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2880
2881 * Release of E2fsprogs version 1.05
2882
1e3472c5
TT
2883Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2884
2885 * pass4.c (pass4): If the user refuses to connect an unattached
2886 inode to lost+found, don't try to set i_links_count. This
2887 is bad, since if the user says yes, the inode will be
2888 marked as unused, which is not necessarily the right
2889 thing, especially since the rest of the cleanup doesn't
2890 happen here.
2891
2892 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
2893 dellocating an inode. (Not strictly necessary, but...)
2894
2895 * pass4.c (pass4): Add "bonehead" explanation to the "programming
2896 error" message.
2897
2898Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2899
2900 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
2901 byte-swap the filesystem so that it is normalized. -S
2902 will byte-swap the filesystem regardless of its current
2903 byte-order.
2904
2905 * swapfs.c: New file, which will byte-swap a filesystem.
2906
2907Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2908
2909 * pass1.c (pass1): Change handling on files with non-zero dtime
2910 and non-zero i_link_count; before we treated them as
2911 deleted file per botched ext2 0.3c kernel behavior. We
2912 now clear dtime instead.
2913
2914Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2915
2916 * e2fsck.c (main): If e2fsck sets the clean bit, even if
2917 nothing else is changed, make sure FSCK_NONDESTRUCT is
2918 set (since after all having the filesystem set to
2919 invalid is an error. :-)
2920
2921Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2922
2923 * pass1.c (process_block): Make sure that meta data doesn't get
2924 accidentally set in the dir_blocks array (which could
2925 happen in some error condtions).
2926
2927 * pass1.c (pass1):
2928 * pass2.c (process_bad_inode): Check for fragments in a
2929 OS-independent fashion.
2930
2931Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2932
2933 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
2934 cleanup for the filesystem.
2935
2936Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2937
2938 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
2939
62c06f79
TT
2940Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2941
2942 * Release of E2fsprogs version 1.04
2943
2944Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2945
2946 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
2947 try "e2fsck -b 8193" before allowing e2fsck to relocate
2948 inode table blocks.
2949
2950 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
2951 depending on the option to configure. Added targets for
2952 e2fsck.static and e2fsck.shared for people who want to
2953 build a static or shared variant manually.
2954
7f88b043
TT
2955Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
2956
2957 * Release of E2fsprogs version 1.03
2958
2959Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
2960
2961 * e2fsck.c (show_stats): Don't use floating point to display
2962 percentage of non-contiguous files, as different libc
2963 handle result truncation differently, and this causes the
2964 test suite to bomb out depending on which libc you are
2965 using.
2966
2967 * util.c (allocate_memory): Fix error message to omit extraneous
2968 %%s.
2969
2970Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
2971
2972 * pass4.c (pass4):
2973 * pass2.c (check_dir_block):
2974 * pass1.c (pass1): Add support for dynamic first inode revision.
2975
2976Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
2977
2978 * pass3.c (check_root): Fix spelling typo
2979
2980Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
2981
2982 * e2fsck.c (check_super_block): If the superblock fails certain
2983 internal consistency checks, exit with a fatal error after
2984 printing the "superblock is corrupt message".
2985
74becf3c
TT
2986Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
2987
2988 * Release of E2fsprogs version 1.02
2989
2990Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
2991
2992 * pass1.c (process_block): Check to see if a file is "fragmented".
2993 i.e., non-contiguous. Note that any file which is larger
2994 than the block group is guaranteed to be non-contiguous.
2995 We may want to use a different hueristic for deciding
2996 whether or not a file is "fragmented".
2997
2998 * e2fsck.c (show_stats): Print statistics of how many
2999 non-contiguous files are on the system.
3000
3001Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
3002
3003 * badblocks.c (read_bad_blocks_file, test_disk): Fold
3004 functionality of test_disk() (which runs badblocks) into
3005 read_bad_blocks_file(); test_disk() now calls
3006 read_bad_blocks_file() with a NULL bad_blocks_file
3007 argument.
3008
3009Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
3010
3011 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
3012 #if defined(linux). The latter won't work if we're
3013 compiling -ansi.
3014
297f47a1
TT
3015Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
3016
3017 * e2fsck.c (check_mount): For Linux systems, the check to see if
3018 the root is mounted read-only has to be done for all
3019 filesystems, not just for the root filesystem, due to the
3020 way that some /etc/rc scripts are set up.
3021
50e1e10f
TT
3022Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
3023
3024 * Makefile.in (install): Strip programs when they are installed.
3025 (e2fsck): Build e2fsck statically.
3026
3027Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
3028
3029 * util.c (preenhalt): Preenhalt now takes an argument, which is an
3030 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
3031 flag in the superblock in cases where preenhalt is called.
3032 All calls to preenhalt() were changed to either
3033 preenhalt(fs) or preenhalt(NULL) in a few cases where the
3034 fs pointer was not available. (Most notable, for block
3035 read/write errors.)
3036
3037Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
3038
3039 * ehandler.c:
3040 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
3041
3042Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
3043
3044 * e2fsck.c (show_stats): Show statistics about how many inodes
3045 have indirect, doubly indirect, and triply indirect
3046 blocks. Allow up to 8 digits for statistics, instead of
3047 merely 6, so things look pretty for large filesystems.
3048
3049 * pass1.c (pass1): Keep statistics about indirect, doubly
3050 indirect, and triply indirect blocks.
3051
3052 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
3053 pass 1.
3054
3055Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
3056
3057 * util.c, ehandler.c: Move #include of <sys/resource.h> after
3058 #include of "e2fsck.h", since sys/resource.h may depend on
3059 sys/time.h, which is #included in e2fsck.h.
3060
3061Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
3062
3063 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
3064 function to determine if the device is mounted.
3065
3066 * e2fsck.c (main): Add better error messages if ext2fs_open()
3067 fails.
3068
3069Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
3070
3071 * pass1.c (check_blocks): If we're clearing a directory, clear
3072 pb.is_dir so we don't do the following check of making
3073 sure the directory size matches; this is pointless, since
3074 we've already cleared the inode.
3075
3076Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3077
3078 * pass1.c (bad_primary_block): New function, called by
3079 process_bad_block, which explains the facts of life to the
3080 user when a block in the primary superblock or primary
3081 group descriptors is bad.
3082
3083 * pass2.c (check_dot): Handle the case where the first directory
3084 entry is used, but not ".".
3085
3086 * pass2.c (check_dotdot): Handle the case where the second directory
3087 entry is used, but is not "..".
3088
3089Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3090
3091 * e2fsck.c (check_super_block): Get the size of the physical
3092 device and if it is smaller than the reported size of the
3093 filesystem, report an error.
3094
3095Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
3096
3097 * e2fsck.c (check_if_skip): Print the number of allocated files and
3098 blocks on clean filesystems.
3099
3100Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
3101
3102 * e2fsck.8: Updated date and version number.
3103
3104Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
3105
3106 * pass1.c (check_blocks): Check that directory size matches *exactly*
3107 the count of allocated blocks.
3108
3109Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
3110
3111 * pass1b.c (pass1d): Free the shared[] array when we're done with
3112 it to avoid a memory leak.
3113
3114 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
3115 block_dup_map.
3116
3117 * pass2.c (process_bad_inode): When clearing the inode, make sure
3118 the pathname is freed, to prevent a memory leak.
3119
3120 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
3121 when we're finished with them.
3122 (check_block_bitmaps): Free free_array when we're finished
3123 with them.
3124
3125 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
3126 linking the executable.
3127
3128 * pass2.c (process_bad_inode): Even on OS's that don't support the
3129 fragment fields, make sure the Linux equivalent fields are
3130 set to zero. If an OS wants to reuse these fields, which
3131 is probably a bad idea (although we may get desperate in
3132 the future) this code will have to be changed.
3133
3134 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
3135 on the inode field, and then blockcnt field. This is just
3136 to keep the ordering of dir_blocks the same on all
3137 platforms when there are more than on missing directory
3138 blocks, which are indicated directories with holes, which
3139 are indicated with the block number being set to zero.
3140
3141Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3142
3143 * pass1.c (check_blocks, process_block): check_blocks() modified
3144 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
3145 the inode is a directory. process_block() now checks to
3146 see if a directory has a "hole", or missing block. If so,
3147 this fact is recorded in the directory block list so that
3148 the problem can be resolved in pass #2.
3149
3150 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
3151 allocate new blocks for directories with "holes". Called
3152 out of check_dir_block if a block in the directory block
3153 list is zero.
3154
3155 * pass3.c (get_lost_and_found): Move location of free(block) to
3156 prevent possible memory leak.
3157
3158Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3159
3160 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
3161 instead of alloca() --- alloca is not portable! Check to
3162 make sure the filename is not longer than EXT2_NAME_LEN,
3163 and offer to fix it by truncating it, since it should
3164 never happen.
3165
3166 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
3167 not portable!! In any case putenv() in some systems must
3168 take a static character array or malloc()'ed memory;
3169 passing memory allocated using alloca() to putenv() is not
3170 advisable.
3171
3172 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
3173 alloca() --- alloca() is not portable!!!
3174
3175Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
3176
3177 * pass1b.c (pass1c):
3178 * pass3.c (check_root, get_lost_and_found):
3179 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
3180 to read/write the directory block.
3181
3182Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
3183
3184 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
3185 make sure VMIN and VTIME are set correct.
3186
3187Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
3188
3189 * pass1.c (mark_block_used): Change to be an inline function.
3190 Assume that the block validity checks are already done,
3191 and use the fast variant of the bitmap functions.
3192
3193Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
3194
3195 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
3196 bounds of the bitmaps in advance, and then use the fast
3197 variant of e2fs_test_{block,inode}_bitmap.
3198
3199 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
3200 the bounds checking has already been done earlier.
3201
3202Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
3203
3204 * pass1.c (pass1): Allocate and free the block_illegal_map, which
3205 is used for shortcut processing in process_block.
3206 (mark_table_blocks): Initialize block_illegal_map with the
3207 filesystem blocks.
3208 (describe_illegal_block): New helper function that
3209 describes why a block is illegal.
3210 (process_block): Use block_illegal_map as a shortcut
3211 to determine whether a block is bad. Use
3212 describe_illegal_block to print out why the block is illegal.
3213
3214Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
3215
3216 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
3217
3218 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
3219 <mntent.h> if they don't exist. (Mostly so that "make
3220 depend" works.)
3221
3222 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
3223 it exists).
3224
3225 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
3226 exist.
3227
3228Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3229
3230 * pass2.c (process_bad_inode, check_for_zero_long,
3231 check_for_zero_char): Change long to u32, and char to u8.
3232
3233Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
3234
3235 * util.c (inode_has_valid_blocks):
3236 * pass2.c (process_bad_inode):
3237 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
3238 LINUX_S_IS* instead of S_IS*.
3239
3240 * e2fsck.h: Don't #include <sys/stat.h>
3241
3242 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
3243 this program is pretty much useless if BLKFLSBUF isn't
3244 supported.)
3245
3246 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
3247 used.
3248
3249Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
3250
3251 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
3252 to allocate space for file names instead of using fixed size buffers.
3253 (process_bad_inode): Only check inode frag fields if
3254 HAVE_EXT2_FRAGS is defined (by configure).
3255 * pass1.c (pass1): Only check the inode frag fields if
3256 HAVE_EXT2_FRAGS is defined (by configure).
3257
3258 * e2fsck.c (check_mount): Only check for a mounted filesystem if
3259 HAVE_MNTENT_H is defined (by configure).
3260 (PRS): Use alloca to allocate the new path string, instead of
3261 having a fixed size buffer (which was the wrong size anyway).
3262 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
3263 is defined.
3264
3265 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
3266 defined (by configure).
3267
3268 * Makefile.in: Rewritten to conform to GNU coding standards and
3269 support separate compilation directories.
3270
3271Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
3272
3273 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
3274
f3db3566
TT
3275Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
3276
3277 * pass1.c (unwind_pass1): Clear the file type statistics counter
3278 when pass 1 needs to be restarted from scratch.
3279
3280 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
3281 being reallocated to blocks in the next block group,
3282 instead of the current block grup.
3283
3284 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
3285 inode.i_links_count is set.
3286
3287Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
3288
3289 * pass1.c (process_block): Add checks for if the block is
3290 trepassing on a superblock or group descriptor table.
3291
3292Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
3293
3294 * main.c (corrupt_msg): Extend the message which is printed out
3295 when the superblock is corrupt, to include the suggestion
3296 of using the -b option to specify an alternate superblock.
3297
3298Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
3299
3300 * badblocks.c (read_bad_blocks_file): If we are adding or
3301 replacing bad blocks in the bad blocks inode, sanity check
3302 the bad block inode first, and clear out any illegal blocks.
3303
3304 * pass2.c (check_name): Don't bomb out if the attempt to get the
3305 pathname of the containing directory returns an error; the
3306 directory may be too badly damaged to expect that
3307 ext2fs_get_pathname will always succeed. Use "???" if the
3308 pathname can't be obtained (it's only for a printf to the
3309 user anyway).
3310
3311 The name of the containing directory and the bad filename
3312 were incorrectly interchanged in the user message. Fixed.
3313
3314 * pass2.c (check_name, check_dir_block): Use a common static
3315 string for the unknown pathname.
3316
3317Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
3318
3319 * Fixed lots of printf formats to make sure that block and inode
3320 numbers are printed as unsigned integers.
3321
3322Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
3323
3324 * pass5.c (check_block_end): Fix calculation of how the last block
3325 in the block bitmap should be calculated.
3326
3327Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
3328
3329 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
3330 be an ext2fs_inode_bitmap, and free it properly.
3331
3332 * e2fsck.h
3333 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
3334 level to the superblock.
3335
3336Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
3337
3338 * e2fsck.c (usage): Fixed bogus usage message.
3339
3340Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
3341
3342 * pass1.c (process_bad_block): Fixed bug so that blocks in the
3343 backup superblocks and group descriptors are handled gracefully.
3344