blob: 7fd1f7a237a2146f9cdaa57840cf092c6419622f [file] [log] [blame]
Theodore Ts'occ96b2b2000-08-22 21:30:11 +000012000-08-22 <tytso@valinux.com>
2
Theodore Ts'o2575fb02000-08-22 21:50:04 +00003 * unix.c (main): If we're doing a read-only check, skip the
4 journal playback, but don't abort the e2fsck run.
5
Theodore Ts'o99a2cc92000-08-22 21:41:52 +00006 * super.c (release_orphan_inodes): Fix typo; should do bounds
7 checking on next_ino instead of ino.
8
9 * jfs_compat.h (J_ASSERT):
10 * journal.c (e2fsck_run_ext3_journal):
11 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
12
Theodore Ts'o243dc312000-08-22 21:37:47 +000013 * unix.c: Use fatal_error() instead of exit() whenever possible.
14 Also fix the fsck exit codes so that we use FSCK_USAGE
15 when it is appropriate. Rename global_signal_ctx to
16 e2fsck_global_ctx and let it be exported globally.
17
Theodore Ts'occ96b2b2000-08-22 21:30:11 +000018 * util.c (fatal_error): Try to flush the I/O manager before
19 forcing an exit.
20
Theodore Ts'oecf1b772000-08-20 22:06:31 +0000212000-08-20 <tytso@valinux.com>
22
23 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
24 e2fsck_check_ext3_journal to smash the journal because
25 journal->j_transaction_sequence wasn't getting
26 initialized.
27
28 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
29 call to e2fsck_clear_recover from recover_ext3_journal to
30 after the filesystem has been closed and reopened.
31 Otherwise, the superblock in the filesystem handle will
32 probably be stale, and will overwrite the newer version of
33 the superblock written by the log recovery.
34
35 * message.c (expand_inode_expression): Add support for %Iu and %Ig
36
37 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
38
39 * super.c (release_orphan_inodes, release_inode_block,
40 release_inode_blocks): Update the block group descriptor
41 counts when freeing the orphan inode. Use
42 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
43
44 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
45 attempted to reopen the filesystem using the device name
46 instead of the filesystem name.
47
Theodore Ts'o80bfaa32000-08-18 15:08:37 +0000482000-08-18 <tytso@valinux.com>
49
50 * Makefile.in: Update the make dependencies
51
52 * problem.c, problem.h: Add the problem codes:
53 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
54 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
55 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
56 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
57
58 * super.c (release_inode_blocks, release_orphan_inodes,
59 check_super_block): Add support for clearing orphaned
60 inodes from the unmounted filesystem.
61
62 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
63 check; this is now handled in check_super_block ---
64 non-journaled filesystems can use the orphan list in the
65 future. Also, move the the re-opening of the filesystem
66 to e2fsck_run_ext3_journal().
67
Theodore Ts'o3b5386d2000-08-14 14:25:19 +0000682000-07-12 Andreas Dilger <adilger@turbolinux.com>
69
70 * journal.c: implement loading of ext3 journal for recovery code
71
72 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
73 Add journal problems.
74
75 * recovery.c (journal_recover): user-space ext3 journal recovery code
76
77 * unix.c (main) : check journal and do recovery in separate steps
78
Theodore Ts'ob8d164c2000-08-08 03:17:04 +0000792000-08-07 <tytso@snap.thunk.org>
80
81 * unix.c (calc_percent): Make sure that we don't take a floating
82 exception if the max value is zero. (should normally
83 never happen, but...)
84
Theodore Ts'of9e67062000-07-13 23:25:54 +0000852000-07-13 <tytso@valinux.com>
86
87 * Release of E2fsprogs 1.19
88
Theodore Ts'o17390c02000-07-07 04:13:21 +0000892000-07-06 Theodore Ts'o <tytso@valinux.com>
90
91 * unix.c (check_if_skip): Modify algorithm for checking
92 s_max_mnt_count to match with the kernel. (If
93 s_max_mnt_count is negative, ignore the mnt_count check.)
94
95 * unix.c (e2fsck_update_progress): Adjust the width of the
96 progress bar dynamically, based on the filesystem name
97 that we need to display.
98
99 * unix.c (main): If the ext3 needs_recovery flag is set, call
100 e2fsck_run_ext3_journal() and then restart the e2fsck run.
101
102 * journal.c (e2fsck_run_ext3_journal): New file which contains
103 logic to recover the ext3 journal. This version relies on
104 the kernel being able to mount the filesystem in order to
105 run the journal.
106
Theodore Ts'o92269042000-07-05 18:25:59 +00001072000-07-05 Theodore Ts'o <tytso@valinux.com>
108
109 * unix.c (e2fsck_update_progress): Only save and check the last
110 percentage after multiplying it by 10, nor 1000, since we
111 only need to save values to a tenth of a percent (and the
112 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +0000113 Also, re-arrange the logic so that we do the time
114 check only after doing the percentage check, and we
115 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +0000116
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +00001172000-07-04 Theodore Ts'o <tytso@valinux.com>
118
119 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
120 field is set; if so, clear it, so that ext3 mounting code
121 won't get confused by the fact that we've cleared out the
122 orphaned inodes.
123
Theodore Ts'obbd47d72000-06-10 19:21:33 +00001242000-06-10 Theodore Ts'o <tytso@valinux.com>
125
126 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
127 checking for a "should never happen case".
128
129 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
130 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
131
Theodore Ts'od647a1e2000-05-27 14:40:09 +00001322000-05-27 Theodore Ts'o <tytso@valinux.com>
133
134 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
135 (cw@foof.org) which checks to see if special devices have
136 a non-zero size, and deals with it.
137
138 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
139
Theodore Ts'o1d279212000-05-19 02:38:14 +00001402000-05-18 Theodore Ts'o <tytso@valinux.com>
141
142 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
143 well.
144
Theodore Ts'o4ea0a112000-05-08 13:33:17 +00001452000-05-08 Theodore Ts'o <tytso@valinux.com>
146
147 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
148 code.
149
150 * super.c (check_super_block): If the OS type in the superblock is
151 the Hurd, check to see if the filetype feature is set, and
152 offer to clear it if so. This needs to be done since the
153 Hurd doesn't properly support the filetype feature.
154 (And since the hurd allows the transmogrification of files
155 to special files and vice versa --- for no good reason
156 that I can understand --- it can't support the filetype
157 feature for the forseeable future, either.)
158
Theodore Ts'o373b8332000-04-03 16:22:35 +00001592000-04-03 Theodore Ts'o <tytso@valinux.com>
160
161 * unix.c: For platforms that don't define optarg.h, manually
162 define optarg and optind.
163
Theodore Ts'o01fbc702000-04-03 13:57:21 +00001642000-03-20 Theodore Ts'o <tytso@valinux.com>
165
166 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
167 Check for the append-only as well as the immutable flag.
168
169 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
170 append-only flag. Fix comment for compression flag.
171
Theodore Ts'o06012322000-02-12 20:12:43 +00001722000-02-12 <tytso@snap.thunk.org>
173
174 * unix.c (e2fsck_update_progress): Limit the number of updates to
175 the progress bars to 8 times a second. This allows a 9600
176 baud console link to keep up.
177
Theodore Ts'o19178752000-02-11 15:55:07 +00001782000-02-11 <tytso@snap.thunk.org>
179
180 * unix.c (main): If compression is enabled on the filesystem,
181 print a warning message (for now).
182
183 * message.c: Add new compression shortcut: @c == compress
184
185 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
186
187 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
188 set, check to see if the filesystem supports compression.
189 If it does pass this information down to process_block()
190 so it can treat the compressed block flag words
191 correctly. If not, offer to clear the flag, since it
192 shouldn't be set.
193 (process_block): If an inode has the compressed inode flag
194 set, allow EXT2FS_COMPRESSED_BLKADDR.
195
196 * pass1b.c (process_pass1b_block, delete_file_block,
197 clone_file_block):
198 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
199 see if the block can be skipped.
200
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00002012000-02-08 <tytso@snap.thunk.org>
202
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +0000203 * util.c: Make resource tracking message more concise.
204
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +0000205 * e2fsck.h:
206 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
207 ctx->block_illegal_map, since it's not needed by pass1,
208 and pass1b has been modified to calculate it manually if
209 needed. This reduces the memory footprint needed by e2fsck.
210
211 * pass1b.c (check_if_fs_block): New static function which returns
212 whether or not a block overlaps with filesystem metadata.
213 This replaces consulting the block_illegal_map bitmap.
214
Theodore Ts'o28ffafb2000-02-08 19:14:02 +0000215 * Makefile.in: Call sync after finishing building all in this
216 directory.
217
218 * unix.c (PRS): sync the filesystem before trying to use
219 BLKFLSBUF, to minimize the chance of causing dirty blocks
220 to get dropped.
221
222 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
223 a Linux/i386 system.
224
225 * pass3.c (check_directory): Only do the loop detection algorithm
226 if we've searched over 2048 parent directories and haven't
227 found the end yet. This means that in the common case, we
228 don't allocate or clear the inode_loop_detection bitmap,
229 which for large systems, merely clearing the bitmap for
230 each directory was turning out to be quite expensive.
231 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
232 identifying this problem.
233
Theodore Ts'o0c4a0722000-02-07 03:11:03 +00002342000-02-06 Theodore Ts'o <tytso@valinux.com>
235
236 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
237 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
238 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
239 unix.c, util.c: Add Internationalization support as
240 suggested by Marco d'Itri <md@linux.it>.
241
Theodore Ts'o80e808f2000-02-02 16:19:59 +00002422000-02-02 Theodore Ts'o <tytso@valinux.com>
243
244 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
245 linux/fs.h
246
Theodore Ts'o894edb22000-01-18 21:27:12 +00002472000-01-18 Theodore Ts'o <tytso@valinux.com>
248
249 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
250 we need a separate DEPLIBUUID that can be used in
251 Makefile's dependency rules.
252
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +00002531999-11-23 <tytso@valinux.com>
254
255 * e2fsck.8.in: Update language about where to find a backup
256 superblock.
257
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00002581999-11-19 <tytso@valinux.com>
259
Theodore Ts'o86a63e91999-11-23 13:52:48 +0000260 * pass1.c (process_inodes): Add shortcut handling; if
261 process_inodes_count is zero, return right away, to avoid
262 calling qsort with a non-positive count.
263
Theodore Ts'oec8d2c31999-11-19 18:52:36 +0000264 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
265 to print Delete as ^?
266
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +0000267 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
268 the source directory.
269
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00002701999-11-10 <tytso@valinux.com>
271
Theodore Ts'ocd086361999-11-10 16:00:39 +0000272 * Release of E2fsprogs 1.18
273
2741999-11-10 <tytso@valinux.com>
275
Theodore Ts'oa846d2f1999-11-10 15:50:24 +0000276 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
277 means the answer is assumed to be no in preen mode. This
278 is now used in the PR_1_SET_IMMUTABLE code, so that in
279 preen mode we ignore these inodes and just print a warning
280 message.
281
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +00002821999-11-09 <tytso@valinux.com>
283
284 * pass1.c (e2fsck_pass1): If the filesystem does not support
285 imagic inodes, if an inode has the imagic flag set, offer
286 to clear the imagic flag. If a valid device/fifo/socket
287 has the immutable flag set, call the new helper function
288 check_immutable() to offerto clear the immutable flag.
289
290 * pass2.c (check_filetype): Use the new ext2_file_type() helper
291 function instead of calculating the file_type information
292 manually.
293
294 * pass3.c (e2fsck_reconnect_file): When adding a link to
295 lost+found, calculate the filetype information so that
296 ext2fs_link() can use the information if applicable.
297 (get_lost_and_found): Create the /lost+found directory
298 with the correct filetype information if applicable.
299
300 * util.c (ext2_file_type), e2fsck.h: New function which returns
301 the directory entry file type information given the
302 inode's mode bits.
303
304 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
305 and PR_1_SET_IMMUTABLE.
306
Theodore Ts'o7142db01999-11-08 18:46:54 +00003071999-11-07 <tytso@valinux.com>
308
309 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
310 to prevent it from getting freed twice.
311
3121999-11-06 <tytso@valinux.com>
313
314 * unix.c (main): Close the filesystem before freeing the context,
315 so that in the event of a free()-related segmentation
316 violation, the filesystem is properly closed and written
317 out.
318
3191999-10-27 <tytso@valinux.com>
320
321 * e2fsck.c (e2fsck_reset_context): When freeing
322 ctx->inode_reg_map, we weren't zero'ing
323 ctx->inode_reg_map, which could cause a segfault later on
324 in the e2fsck run.
325
3261999-10-26 <tytso@valinux.com>
327
328 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
329 matches the standard convention).
330
Theodore Ts'of68aa411999-10-26 14:20:22 +00003311999-10-26 <tytso@valinux.com>
332
Theodore Ts'o28e11941999-10-26 18:17:20 +0000333 * Release of E2fsprogs 1.17
334
3351999-10-26 <tytso@valinux.com>
336
Theodore Ts'of68aa411999-10-26 14:20:22 +0000337 * message.c (safe_print): Make safe_print take an char instead of
338 an unsigned char to fix gcc warnings.
339
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00003401999-10-25 <tytso@valinux.com>
341
Theodore Ts'oe6597041999-10-26 02:30:16 +0000342 * util.c: For NT portability, don't redefine getchar(), since
343 stdio defines that. Instead we introduce a new
344 abstract macro read_a_char() which is #defined to the
345 right function as necessary.
346
Theodore Ts'oc40db6d1999-10-25 21:03:34 +0000347 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
348
349 * pass2.c (check_dir_block): Require that the length of the
350 directory entry be at least 12 bytes. Check to see if the
351 filename is zero-length, and flag that as an error.
352
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00003531999-10-22 <tytso@valinux.com>
354
Theodore Ts'o614fdfd1999-10-23 03:19:51 +0000355 * Release of E2fsprogs 1.16
356
3571999-10-22 <tytso@valinux.com>
358
Theodore Ts'o7847c1d1999-10-22 15:11:42 +0000359 * pass2.c (check_filetype): If the filetype filesystem feature is
360 not set, and a directory entry has a dirent feature, offer
361 to clear it (since 2.0 kernels will do complain will
362 interpret it as a very large name length field).
363
364 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
365
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00003661999-10-21 <tytso@valinux.com>
367
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +0000368 * e2fsck.8.in: Update man page to use a more standard format (bold
369 option flags and italicized variables), as suggested by
370 Andreas Dilger (adilger@enel.ucalgary.ca)
371
Theodore Ts'oaa4115a1999-10-21 19:33:18 +0000372 * pass4.c (e2fsck_pass4): If an inode is set in the
373 inode_imagic_map bitmap, don't check to see if it is
374 disconnected from the inode tree (because it almost
375 certainly will be). Free inode_imagic_map at the end of
376 pass 4.
377
378 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
379 feature is set, check the directory entry's filetype
380 information field, and fix/set it if necessary.
381 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
382 of pass 2.
383
384 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
385 information for inode_reg_map and inode_imagic_map, which
386 indicates which inodes are regular files and AFS inodes,
387 respectively.
388 Since only the master superblock is written during a
389 restart, force that superblock to be used after a restart;
390 otherwise changes to the block group descriptors end up
391 getting ignored.
392
393 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
394 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
395 which supresses the problem message if e2fsck is run with
396 the -n option.
397
398 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
399 new problem codes.
400
401 * message.c (expand_dirent_expression): Add support for %dt which
402 prints the dirent type information.
403
404 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
405 and inode_imagic_map).
406
407 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
408 to the context structure.
409
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +00004101999-09-24 <tytso@valinux.com>
411
412 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
413 e2fsprogs easier to port to non-Unix platforms.
414
4151999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +0000416
417 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
418 internal and external inode counts in sync when we
419 decremented an inode whose link count was already zero.
420 Now we skip incrementing or decrementing both link counts
421 if we would cause an overflow condition.
422 (expand_dir, expand_dir_proc): Change where we update the
423 inode block count and size files so that the block count
424 field is updated correctly when we create an indirect block.
425
Theodore Ts'o78cf0541999-10-20 18:29:18 +00004261999-08-05 <tytso@valinux.com>
427
428 * super.c (check_super_block): Check to see whether the
429 inodes_per_group value in the superblock is insanely too
430 high.
431
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00004321999-08-02 <tytso@valinux.com>
433
434 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
435 the block also shares data with the fs metadata when
436 the count drops to 1, since the block should still be
437 cloned, as fs metadata isn't included in the count.
438
4391999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +0000440
441 * Release of E2fsprogs 1.15
442
Theodore Ts'ob55199e1999-07-19 15:37:46 +00004431999-07-19 <tytso@valinux.com>
444
445 * unix.c (usage): Add minimalist emergency help to the usage
446 message.
447
Theodore Ts'o5596def1999-07-19 15:27:37 +00004481999-07-18 <tytso@valinux.com>
449
450 * unix.c: Add support for calculating a progress bar if the -C0
451 option is given. The function e2fsck_clear_progbar()
452 clears the progress bar and must be called before any
453 message is issued. SIGUSR1 will enable the progress bar,
454 and SIGUSR2 will disable the progress bar. This is used
455 by fsck to handle parallel filesystem checks. Also, set
456 the device_name from the filesystem label if it is
457 available.
458
459 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
460 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
461 structure which contains the last tenth of a percent
462 printed for the user.
463
464 * message.c (print_e2fsck_message): Add call to
465 e2fsck_clear_progbar().
466
467 * pass1.c (e2fsck_pass1):
468 * pass2.c (e2fsck_pass2):
469 * pass3.c (e2fsck_pass3):
470 * pass4.c (e2fsck_pass4):
471 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
472 printing the resource tracking information.
473
474 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
475 an error in the bitmaps, suppress printing the progress
476 bar using the suppression flag for the remainder of the
477 check, in order to clean up the display.
478
Theodore Ts'o74033351999-07-01 03:00:47 +00004791999-06-30 <tytso@valinux.com>
480
481 * unix.c (check_mount): Clean up the abort message displayed when
482 the filesystem is mounted and either stdout or stdin isn't
483 a tty.
484
4851999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +0000486
487 * e2fsck.h:
488 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
489 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
490 pass1_* be private static functions, and create new
491 function e2fsck_use_inode_shortcuts which sets and clears
492 the inode shortcut functions in the fs structure.
493
494 * e2fsck.h:
495 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
496 exported function.
497
498 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
499 if a disconnected inode has any problems before
500 connecting it to /lost+found. Bug and suggested fix by
501 Pavel Machek <pavel@bug.ucw.cz>
502
5031999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +0000504
505 * unix.c (main): Add missing space in the disk write-protected
506 message.
507
Theodore Ts'od4b0ce01999-06-18 01:09:29 +00005081999-05-22 <tytso@rsts-11.mit.edu>
509
510 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
511 code.
512
513 * super.c (check_super_block): Add check to make sure the total
514 number of inodes is sane, since this can be calculated
515 from the number of groups times the number of inodes per
516 group. Offer to correct it if it is incorrect.
517
Theodore Ts'oe79d1b21999-06-18 01:06:59 +00005181999-03-19 <tytso@rsts-11.mit.edu>
519
520 * pass5.c (check_block_end): Fix fencepost condition where when
521 clearing the block padding we were missing the last position
522 in the bitmap.
523
Theodore Ts'o75d83be1999-05-18 03:16:36 +00005241999-05-17 <tytso@rsts-11.mit.edu>
525
526 * unix.c (reserve_stdio_fds): Add safety check in case
527 reserve_stdio_fds couldn't open /dev/null.
528
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00005291999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
530
531 * util.c (print_resource_track): Use mallinfo if present to get
532 more accurate malloc statistics.
533
534 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +0000535 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +0000536
537 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
538
5391999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
540
541 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
542 that the block group number is printed. Add new prompt,
543 PROMPT_UNLINK.
544
5451999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
546
547 * Release of E2fsprogs 1.14
548
Theodore Ts'o9e51eca1999-01-09 16:32:31 +00005491999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
550
551 * message.c (safe_print): New function which prints strings,
552 converting non-printable characters using the '^' and
553 M-notation. This function is now used to print directory
554 name entries and pathnames.
555
Theodore Ts'o73f17cf1999-01-04 07:35:45 +0000556Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
557
558 * unix.c (main): Reset the context before calling ext2fs_close(),
559 to avoid referencing already freed memory.
560
Theodore Ts'o556ad131998-12-19 08:10:58 +00005611998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
562
563 * Release of E2fsprogs 1.13
564
Theodore Ts'o5a679c81998-12-03 16:40:38 +00005651998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
566
567 * Makefile.in: Updated dependencies.
568
5691998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
570
571 * pass3.c (get_lost_and_found): If the filesystem is not opened
572 read-only, then force /lost+found to be created if it is
573 not present.
574
575 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
576 operation.
577
Theodore Ts'o1dde43f1998-11-14 04:18:28 +00005781998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
579
580 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
581 since e2fsck_free_context may reference data in ctx->fs.
582
583 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
584 before checking ctx->fs->dblist.
585
5861998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
587
588 * pass1.c (e2fsck_pass1): Use the device check subroutine on
589 FIFO's and Socket's, so that we catch bogus immutable inodes.
590
591 * pass2.c (process_bad_inode): Process bad socket and fifo's.
592
593 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
594 PR_2_BAD_SOCKET.
595
Theodore Ts'o7f813ba1998-09-03 01:26:03 +00005961998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
597
598 * problem.c: Add PR_3_NO_DIRINFO error code.
599
600 * super.c (check_super_value): Rename min and max to min_val and
601 max_val to avoid possible cpp macro conflicts.
602
603 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
604 possible cpp macro conflicts.
605
606 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
607 cpp macro conflicts.
608 (check_directory): Fix logic to avoid possible core dump
609 in the case of ext2fs_get_dir_info returning NULL. (By
610 the time we get here, it should never happen, but...).
611 Also simply/streamline the control flow of the function.
612
Theodore Ts'o24fc5031998-08-26 15:23:31 +00006131998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
614
615 * unix.c (check_if_skip): Move the "not cleanly mounted" check
616 ahead of the maximal mount and too long since checked tests.
617 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
618 open, so that we don't open the filesystem using the same
619 file descriptor as stdout or stderr.
620
Theodore Ts'of75c28d1998-08-01 04:18:06 +00006211998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
622
623 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
624 get to 100%.
625
626 * pass3.c (e2fsck_pass3): Change progress accounting to be
627 consistent with the other e2fsck passes.
628
629 * e2fsck.c (e2fsck_run): At the end of each pass, call the
630 progress function with the pass number set to zero.
631
632 * unix.c (e2fsck_update_progress): If the pass number is zero,
633 ignore the call, since that indicates that we just want to
634 deallocate any progress structures.
635
Theodore Ts'o8144d671998-07-09 05:33:18 +00006361998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
637
Theodore Ts'o4a5fa191998-07-09 05:42:45 +0000638 * Release of E2fsprogs 1.12
639
6401998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
641
Theodore Ts'o8144d671998-07-09 05:33:18 +0000642 * unix.c (main): Fix typo in checking the incompat feature set; it
643 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
644
Theodore Ts'o1fad9041998-07-07 05:44:43 +00006451998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
646
647 * badblocks.c (test_disk): Don't clear the existing bad blocks
648 list when using e2fsck -c, since it may cause blocks with
649 marginal errors to be dropped from the bad blocks list.
650
Theodore Ts'o874b4d21998-07-06 14:33:12 +0000651Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
652
653 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
654 compatibility with older kernels.
655
Theodore Ts'o818180c1998-06-27 05:11:14 +00006561998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
657
658 * unix.c (e2fsck_update_progress): Remove unused variables.
659
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +00006601998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
661
662 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
663 collision with LFS API.
664
665 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
666 properly initialized.
667 (e2fsck_pass1): Don't allow the the boot loader inode to
668 be a directory (clear the inode mode field if so).
669
Theodore Ts'oefac9a11998-05-07 05:02:00 +00006701998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
671
672 * unix.c (PRS): Added new option -C, which causes e2fsck to print
673 progress updates so that callers can keep track of the
674 completion progress of e2fsck. Designed for use by
675 progress, except for -C 0, which prints a spinning report
676 which may be useful for some users.
677
678 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
679 scheme (useful for larger filesystems).
680
681 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
682 progress reporting functions.
683
Theodore Ts'o4c77fe51998-04-30 17:35:59 +00006841998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
685
686 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
687 appropriate return type for comparison functions for qsort.
688
689 * e2fsck.h: Add #ifdef protection for unistd.h
690
691 * super.c: Remove header files already included by e2fsck.h
692
Theodore Ts'o76f875d1998-04-27 01:41:13 +00006931998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
694
695 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
696 size of the memory to be resized to ext2fs_resize_mem().
697
Theodore Ts'o7e44f241998-04-01 03:16:29 +00006981998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
699
700 * Makefile.in: Change to use new installation directory variables
701 convention. Fix uninstall rules to take $(DESTDIR) into
702 account. Remove cat8dir from the installdirs target,
703 since modern man package don't necessarily put the cat
704 directory in /usr/man/cat?.
705
Theodore Ts'o17dba281998-03-30 01:16:26 +00007061998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
707
708 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
709 extern in e2fsck.h to prevent -Wall warnings.
710
711 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
712
7131998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
714
715 * super.c (check_super_block): Fix broken superblock sanity check
716 when calculating blocks_per_group if s_log_frag_size !=
717 s_log_block_size. Since we don't support fragments, this
718 isn't a bug deal, but it's good to get it fixed.
719
Theodore Ts'o246501c1998-03-24 16:22:38 +00007201998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
721
722 * unix.c: Fix bug in check of feature set, to make sure we can
723 really fix this filesystem.
724
725 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
726 num field be a 64 bit type. Add the problem code
727 PR_1_FEATURE_LARGE_FILES
728
729 * problem.c: Add table entry for the problem code
730 PR_1_FEATURE_LARGE_FILES.
731
732 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
733 a problem for directory inodes. (Since it is also
734 i_size_high now.) If there are no large_files, then
735 clear the LARGE_FLAG feature flag. If there are
736 large_files, but the LARGE_FLAG feature flag is not set,
737 complain and offer to fix it.
738 (check_blocks): Add support to deal with non-directory
739 inodes that have i_size_high set (i.e., large_files).
740 Don't give an error if a directory has preallocated
741 blocks, to support the DIR_PREALLOC feature.
742 (process_block, process_bad_block): The blockcnt variable
743 is a type of blkcnt_t, for conversion to the new
744 block_iterate2.
745
746 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
747 a problem for directory inodes. (Since it is also
748 i_size_high now.)
749
750 * message.c (expand_inode_expression): Print a 64-bits of the
751 inode size for non-directory inodes. (Directory inodes
752 can only use a 32-bit directory acl size, since
753 i_size_high is shared with i_dir_acl.) Add sanity check
754 so that trying to print out the directory acl on a
755 non-directory inode will print zero.
756 (expand_percent_expression): %B and %N, which print
757 pctx->blkcount and pctx->num, can now be 64 bit
758 variables. Print them using the "%lld" format if
759 EXT2_NO_64_TYPE is not defined.
760
761 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
762
763 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
764 field.
765
Theodore Ts'ob6f79831998-03-09 13:10:37 +0000766Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
767
768 * pass3.c (fix_dotdot_proc):
769 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
770 * message.c (expand_dirent_expression): Mask off the high eight
771 bits of the directory entry's name_len field, so that it
772 can be used for other purposes.
773
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +0000774Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
775
776 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
777 include EXT2_FLAG_RESTART anymore, we need to adjust this
778 routine so that it *does* return in the case of it seeing
779 EXT2_FLAG_RESTART.
780
781 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
782 done callback function, which may set context abort
783 flags. So we need to test the context abort flags after
784 we call ext2_get_next_inode().
785 (process_inodes): If we abort due out of process_inodes,
786 do a clean exit by breaking out of the for loop instead of
787 just returning.
788
789 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
790 considered a SIGNAL mask (i.e., requiring an immediate
791 abort of processing to restart). FLAG_RESTART just means
792 that we want to restart once pass 1 is complete.
793
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +0000794Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
795
796 * Change the progress function to return an integer; if returns 1,
797 then the progress function is expected to have set the
798 e2fsck context flag signalling a user abort, and the
799 caller should also initiate a user abort.
800
Theodore Ts'o63c49691998-02-20 05:24:59 +0000801Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
802
803 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
804 end_problem_latch() unless there was actually a problem
805 latched. Simplifies semantics of the latch processing.
806
Theodore Ts'o43139321998-02-16 22:34:46 +0000807Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
808
809 * e2fsck.h: Add new field, priv_data to the e2fsck context
810 structure. It should be used by callers of the e2fsck
811 functions only, and not by anything in e2fsck itself.
812
813Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
814
815 * super.c: Instead of call ext2fs_get_device_size(), define and call
816 e2fsck_get_device_size(). (This function may be stubbed
817 out in special versions of e2fsck.)
818
819 * pass3.c, pass4.c: Remove extra calls to the progress function
820 that weren't needed.
821
822 * mke2fs.8.in: Update man page to note that the format of the bad
823 block file is the same as the one generated by badblocks.
824
Theodore Ts'o54be2cc1998-02-01 12:58:48 +0000825Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
826
827 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
828
829 * e2fsck.h: Include <time.h> since it is needed
830
831 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
832 processing.
833
Theodore Ts'o24dd4021998-02-01 00:16:40 +0000834Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
835
836 * unix.c (main): In the case where the filesystem revision is too
837 high, print the message about the superblock possibly
838 being corrupt.
839
840 * e2fsck.8.in: Add expanded comments about how the -b option
841 works.
842
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +0000843Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
844
845 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
846 the ext2-specific header files are in a flat directory.
847
848 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
849 super.c, swapfs.c, unix.c: Explicitly cast all assignments
850 from void * to be compatible with C++.
851
852Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
853
854 * unix.c (sync_disk): Remove sync_disk and calls to that function,
855 since ext2fs_close() now takes care of this.
856
857Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
858
859 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
860 ehandler.c, unix.c: Change use of private to be priv_data,
861 to avoid C++ reserved name clash.
862
Theodore Ts'o5be8dc21997-12-01 18:24:10 +0000863Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
864
865 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
866 of e2fsck_get_num_dirs, which has been removed.
867
868Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
869
870 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
871 to compile and install flushb.
872
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +0000873Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
874
875 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
876 to make sure the extra i_blocks in a device are cleared if
877 the immutable flag is set.
878
879 * util.c (print_resource_track): Fix typo which caused the
880 time/resource tracking to print "Pass 1 :" instead of
881 "Pass 1: ".
882
Theodore Ts'ob8647fa1997-11-20 21:52:43 +0000883Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
884
885 * pass3.c (expand_directory): Fix bug which could cause core dump
886 when expanding the directory, and the bitmaps hadn't yet
887 been read in. Also, only use ext2fs_write_dir_block when
888 writing a directory block, not when writing out a fresh
889 indirect block.
890
Theodore Ts'o8039c481997-11-19 21:39:13 +0000891Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
892
893 * pass1.c (process_bad_block): Fix bug where first_block wasn't
894 getting incremented, which caused user to get a
895 "Programming error?" warning if there was a bad block in a
896 non-primary superblock/group_descriptor. Also fixed
897 another bug so that ext2fs_bg_has_super() is consulted, to
898 avoid problems when using a filesystem with the
899 sparse_groups option set and there are bad blocks at the
900 beginning of a group which doesn't have a superblock.
901
Theodore Ts'of8188ff1997-11-14 05:23:04 +0000902Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
903
904 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
905 progress indicator function.
906
907 * pass1.c (scan_callback): Add call to the progress feedback
908 function (if it exists).
909
910Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
911
912 * super.c (check_super_block): Skip the device size check if the
913 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
914
915 * iscan.c (main): Don't use fatal_error() anymore.
916
917 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
918 calling fatal_error(0).
919
920 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
921 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
922
923 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
924
925 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
926
927 * problemP.h: New file which separates out the private fix_problem
928 data structures.
929
930 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
931 swapfs.c util.c: allocate_memory() now takes a e2fsck
932 context as its first argument, and rename it to be
933 e2fsck_allocate_memory().
934
Theodore Ts'o08b21301997-11-03 19:42:40 +0000935Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
936
Theodore Ts'o68227541997-11-04 04:25:22 +0000937 * unix.c (main): Add a special case check for the error code EROFS
938 and display an appropriate error message for this case.
939
Theodore Ts'o08b21301997-11-03 19:42:40 +0000940 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
941 to take the e2fsck context as their first argument.
942 Change dir_info.c routines to take an e2fsck_context,
943 renamed them to start with e2fsck_ to avoid namespace
944 issues, and changed them to store the directory
945 information inside the e2fsck context.
946 Added e2fsck_run() which calls all of the e2fsck passes in
947 the correct order, and which handles the return of abort
948 codes. Added abort processing, both via setjmp/longjmp
949 and via flags in the e2fsck context. Use a flag in the
950 e2fsck context instead of the restart_e2fsck global
951 variable. Change uses of free and malloc to
952 ext2fs_free_mem and ext2fs_get_mem.
953
Theodore Ts'o291c9041997-10-31 06:17:08 +0000954Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
955
956 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
957 consistency.
958
Theodore Ts'oc555aeb1997-10-25 04:16:53 +0000959Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
960
961 * pass3.c (get_lost_and_found): Check error return of
962 EXT2_FILE_NOT_FOUND instead of ENOTDIR
963
964 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
965 instead of ENOTDIR
966
Theodore Ts'o622f5f21997-10-24 04:18:21 +0000967Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
968
Theodore Ts'o519149f1997-10-25 03:49:49 +0000969 * unix.c (PRS): Make the variable which getopt returns into be
970 an int, so that it won't lose on platforms where char is
971 unsigned.
972
Theodore Ts'o622f5f21997-10-24 04:18:21 +0000973 * pass1b.c (clone_file): Fix bug in error reporting in the case
974 where cs.errcode is non-zero.
975
Theodore Ts'ob2da22d1997-10-20 01:16:35 +0000976Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
977
Theodore Ts'o8bf191e1997-10-20 01:38:32 +0000978 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
979 RESOURCE_TRACK around code which uses init_resource_track
980 and print_resource_track. (Not all systems have timeval)
981
Theodore Ts'ob2da22d1997-10-20 01:16:35 +0000982 * super.c: Remove excess #includes which are not necessary.
983
984 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
985
Theodore Ts'o1b6bf171997-10-03 17:48:10 +0000986Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
987
988 * pass*.c, super.c: Massive changes to avoid using printf and
989 com_err routines. All diagnostic messages are now routed
990 through the fix_problem interface.
991
992Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
993
994 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
995 entries.
996
997 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
998 PR_2_DUP_DOT_DOT.
999
1000Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1001
1002 * problem.c: Added new problem codes for some of the
1003 superblock corruption checks, and for the pass header
1004 messages. ("Pass 1: xxxxx")
1005
1006 * util.c (print_resource_track): Now takes a description
1007 argument.
1008
1009Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1010
1011 * super.c, unix.c, e2fsck.c: New files to separate out the
1012 operating-specific operations out from e2fsck.c.
1013 e2fsck.c now contains the global e2fsck context management
1014 routines, and super.c contains the "pass 0" initial
1015 validation of the superblock and global block group
1016 descriptors.
1017
1018 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
1019 (nearly) all global variables and moved them to the e2fsck
1020 context structure.
1021
1022 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
1023 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
1024 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
1025
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00001026Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1027
1028 * message.c: Add compression for the word "Illegal"
1029
1030 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
1031 PR_2_BAD_BLOCK_DEV
1032
1033Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1034
1035 * pass1.c (pass1, check_device_inode), pass2.c
1036 (process_bad_inode): Use a more stringent test for a valid
1037 device.
1038
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00001039Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1040
1041 * e2fsck.c (check_mount): Add stronger warning message about the
1042 perils of running e2fsck on a mounted filesystem.
1043
Theodore Ts'o024996c1997-06-17 05:38:35 +00001044Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1045
1046 * Release of E2fsprogs 1.11
1047
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00001048Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1049
1050 * pass1.c (mark_table_blocks): Mark the superblock and group
1051 descriptor blocks first, so that any conflicts between
1052 these and the bitmap or inode table blocks is noticed.
1053
1054 * problem.c: Fix message printed out when a block or inode bitmap
1055 conflicts with other fs data, has the correct group number
1056 in it.
1057
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00001058Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1059
1060 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
1061
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001062Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1063
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00001064 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
1065 Hawes (whawes@star.net).
1066
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001067 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
1068 bad blocks command so that all of the filesystem gets
1069 tested in the case where the blocksize 2048 or 4096.
1070
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00001071Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
1072
1073 * Release of E2fsprogs version 1.10
1074
1075Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1076
1077 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
1078 where ext2fs_get_next_inode returns the
1079 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
1080
1081Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1082
1083 * Release of E2fsprogs version 1.09
1084
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00001085Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1086
1087 * Release of E2fsprogs version 1.08
1088
Theodore Ts'o521e3681997-04-29 17:48:10 +00001089Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1090
1091 * pass1b.c (clone_file_block): If we clone a directory, we need to
1092 update the dblist entry so that we check (and correct) the
1093 right directory block.
1094
1095Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1096
1097 * pass1.c (process_block): Don't clear blocks references to
1098 filesystem metadata; let pass 1B handle this case.
1099
1100 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
1101
1102 * pass1b.c (pass1d): Deal with a block which is shared with
1103 filesystem metadata.
1104
1105 * e2fsck.h: Make block_illegal_map be a global variable
1106
1107Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1108
1109 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
1110 feature.
1111 (get_backup_sb): New function which attempts to obtain the
1112 correct backup superblock (if possible).
1113
1114Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1115
1116 * e2fsck.c (main): Check the version of the library, and warn if
1117 the library is out of date; this happens generally due to
1118 users who manually install e2fsprogs.
1119
1120 * pass1.c (pass1_get_blocks): If the passed in inode number for
1121 get_blocks isn't what we're expecting pass back
1122 EXT2_ET_CALLBACK_NOT_HANDLED.
1123
Theodore Ts'o21c84b71997-04-29 16:15:03 +00001124Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
1125
1126 * Release of E2fsprogs version 1.07
1127
1128Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1129
1130 * icount.c: New file which implements an inode count abstraction.
1131 This significantly reduces amount of memory needed to
1132 check really large filesystems.
1133
1134 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
1135 abstraction.
1136
1137Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1138
1139 * dirinfo.c (dir_info_iter): New function which allows iteration
1140 over the directories in the dir_info map.
1141
1142 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
1143 over all directories in the dir_info structure, instead of
1144 iterating all inodes looking for directories, and then
1145 looking up the directories using get_dir_info().
1146
1147Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1148
1149 * pass1.c (pass1, process_block):
1150 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
1151 manual code to manage the directory block list information.
1152
1153 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
1154 (deallocate_inode): Call the ext2 library routine
1155 ext2_inode_has_valid_blocks() instead of
1156 inode_has_valid_blocks().
1157
1158 * swapfs.c (swap_inodes): Add check so that we don't try to call
1159 swap_inode_blocks unless the inode has valid blocks.
1160 (Otherwise a long fast symlink might cause
1161 swap_inode_blocks to erroneously get called.)
1162
1163Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1164
1165 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
1166 PR_2_DOT_DOT_NULL_TERM.
1167
1168 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
1169 .. entries are null-terminated, since the 2.0 kernel
1170 requires this (for no good reason).
1171
1172Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1173
1174 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
1175 that we can recover from missing inode tables.
1176
1177 * dirinfo.c (get_dir_info): If there are no directories in the
1178 dir_info abstraction, don't core dump (because dir_info is
1179 NULL).
1180
1181 * e2fsck.c (main): Don't try using the backup superblocks if there
1182 aren't any.
1183 (check_super_block): If there are illegal inode table or
1184 bitmaps, set the filesystem as being in error.
1185
1186Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1187
1188 * pass2.c (check_dir_block): Added check to make sure that rec_len
1189 is a a multiple of 4 (so that the directory entries are
1190 4-byte aligned).
1191
1192Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1193
1194 * Makefile.in (uninstall): Uninstall all programs in the PROGS
1195 line.
1196 (PROGS): Don't build and install the extend program by
1197 default.
1198
1199
1200Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1201
1202 * pass1.c (process_inodes): Make sure the stashed_ino variable is
1203 saved and restored as well.
1204 (pass1): For fast sym links, skip the check_blocks
1205 processing step altogether.
1206
1207Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1208
1209 * problem.c, message.c: New files, to completely refurbish how
1210 filesystem problems are reported to the user. The
1211 diagnostic messages are now encoded out in an easily
1212 customizable, extensible format. The messages printed out
1213 in preen mode are all on one line, and contain the device
1214 name.
1215
1216Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1217
1218 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
1219 deleted files.
1220
1221 * pass1.c (pass1): Ignore missing inode table errors during the
1222 scan, and just skip past those inodes.
1223
1224 * pass3.c (check_root): Remove root_ino argument, and assume that
1225 the root inode must be EXT2_ROOT_INO. Move responsibility
1226 of setting the parent of the root inode in the directory
1227 inode structure to pass2().
1228
1229 * pass2.c (check_dir_block): Don't allow links to the root
1230 directory.
1231
1232 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
1233 since the inode is no longer used.
1234
1235Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1236
1237 * e2fsck.c (main): If the superblock magic number is wrong, or the
1238 block group fails a sanity check, then automatically
1239 restart trying to use the backup superblocks.
1240
1241 * pass1.c (mark_table_blocks): Make the inode tables ahead of
1242 everything else; in the case where a bitmap block overlays
1243 the inode table, the inode table should take precedence.
1244
1245 * pass2.c (maybe_clear_entry): Make the deleted/unused error
1246 message fit on one line, since the error can happen during
1247 a preen pass. (We eventually need to revamp the whole
1248 e2fsck error reporting and prompting system, but that's a
1249 job for another day.)
1250
1251Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1252
1253 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
1254 for the benefit of the inode scan functions.
1255
1256 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
1257 indicating that an inode is in a bad block, mark that
1258 inode as being used, as well as in the inode "bb" map.
1259
1260 * pass2.c (maybe_clear_entry): New function which generalizes the
1261 error cases when a directory entry needs to be cleared.
1262 (check_dir_block): If an inode is in the "bb" map, offer
1263 to clear the directory entry, since the inode is in a bad
1264 block.
1265
1266 * pass4.c (pass4): If an inode is marked as used, but is is marked
1267 in the "bb" map, don't process it as a disconnected inode.
1268
1269Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1270
1271 * Release of E2fsprogs version 1.06
1272
Theodore Ts'o5c576471997-04-29 15:29:49 +00001273Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1274
1275 * e2fsck.c (main): Print out the version number of the shared
1276 library when using the -V option.
1277
1278 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
1279 consistency's sake.
1280
1281 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
1282 out the backup superblocks when we know we have a valid
1283 filesystem.
1284
1285Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1286
1287 * util.c (preenhalt): Make it explicit on preenhalt that running
1288 e2fsck manually means without the -a or -p flag.
1289
1290Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1291
1292 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
1293 (Linux/FT actually sets the mode bits, so we have to
1294 handle it specially.)
1295
1296 * e2fsck.c (check_if_skip): Print a message if the filesystem is
1297 just dirty, so that the user knows that it's about to be
1298 checked (since this will take a while).
1299
1300Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1301
1302 * pass4.c: If a disconnected inode is zero-length, prompt to
1303 delete it instead of connecting it to lost+found.
1304
1305Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1306
1307 * Release of E2fsprogs version 1.05
1308
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00001309Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1310
1311 * pass4.c (pass4): If the user refuses to connect an unattached
1312 inode to lost+found, don't try to set i_links_count. This
1313 is bad, since if the user says yes, the inode will be
1314 marked as unused, which is not necessarily the right
1315 thing, especially since the rest of the cleanup doesn't
1316 happen here.
1317
1318 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
1319 dellocating an inode. (Not strictly necessary, but...)
1320
1321 * pass4.c (pass4): Add "bonehead" explanation to the "programming
1322 error" message.
1323
1324Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1325
1326 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
1327 byte-swap the filesystem so that it is normalized. -S
1328 will byte-swap the filesystem regardless of its current
1329 byte-order.
1330
1331 * swapfs.c: New file, which will byte-swap a filesystem.
1332
1333Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1334
1335 * pass1.c (pass1): Change handling on files with non-zero dtime
1336 and non-zero i_link_count; before we treated them as
1337 deleted file per botched ext2 0.3c kernel behavior. We
1338 now clear dtime instead.
1339
1340Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1341
1342 * e2fsck.c (main): If e2fsck sets the clean bit, even if
1343 nothing else is changed, make sure FSCK_NONDESTRUCT is
1344 set (since after all having the filesystem set to
1345 invalid is an error. :-)
1346
1347Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1348
1349 * pass1.c (process_block): Make sure that meta data doesn't get
1350 accidentally set in the dir_blocks array (which could
1351 happen in some error condtions).
1352
1353 * pass1.c (pass1):
1354 * pass2.c (process_bad_inode): Check for fragments in a
1355 OS-independent fashion.
1356
1357Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1358
1359 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
1360 cleanup for the filesystem.
1361
1362Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1363
1364 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
1365
Theodore Ts'o62c06f71997-04-29 14:34:47 +00001366Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1367
1368 * Release of E2fsprogs version 1.04
1369
1370Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1371
1372 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
1373 try "e2fsck -b 8193" before allowing e2fsck to relocate
1374 inode table blocks.
1375
1376 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
1377 depending on the option to configure. Added targets for
1378 e2fsck.static and e2fsck.shared for people who want to
1379 build a static or shared variant manually.
1380
Theodore Ts'o7f88b041997-04-26 14:48:50 +00001381Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
1382
1383 * Release of E2fsprogs version 1.03
1384
1385Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
1386
1387 * e2fsck.c (show_stats): Don't use floating point to display
1388 percentage of non-contiguous files, as different libc
1389 handle result truncation differently, and this causes the
1390 test suite to bomb out depending on which libc you are
1391 using.
1392
1393 * util.c (allocate_memory): Fix error message to omit extraneous
1394 %%s.
1395
1396Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
1397
1398 * pass4.c (pass4):
1399 * pass2.c (check_dir_block):
1400 * pass1.c (pass1): Add support for dynamic first inode revision.
1401
1402Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
1403
1404 * pass3.c (check_root): Fix spelling typo
1405
1406Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
1407
1408 * e2fsck.c (check_super_block): If the superblock fails certain
1409 internal consistency checks, exit with a fatal error after
1410 printing the "superblock is corrupt message".
1411
Theodore Ts'o74becf31997-04-26 14:37:06 +00001412Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
1413
1414 * Release of E2fsprogs version 1.02
1415
1416Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
1417
1418 * pass1.c (process_block): Check to see if a file is "fragmented".
1419 i.e., non-contiguous. Note that any file which is larger
1420 than the block group is guaranteed to be non-contiguous.
1421 We may want to use a different hueristic for deciding
1422 whether or not a file is "fragmented".
1423
1424 * e2fsck.c (show_stats): Print statistics of how many
1425 non-contiguous files are on the system.
1426
1427Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
1428
1429 * badblocks.c (read_bad_blocks_file, test_disk): Fold
1430 functionality of test_disk() (which runs badblocks) into
1431 read_bad_blocks_file(); test_disk() now calls
1432 read_bad_blocks_file() with a NULL bad_blocks_file
1433 argument.
1434
1435Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
1436
1437 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
1438 #if defined(linux). The latter won't work if we're
1439 compiling -ansi.
1440
Theodore Ts'o297f47a1997-04-26 14:25:20 +00001441Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
1442
1443 * e2fsck.c (check_mount): For Linux systems, the check to see if
1444 the root is mounted read-only has to be done for all
1445 filesystems, not just for the root filesystem, due to the
1446 way that some /etc/rc scripts are set up.
1447
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001448Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
1449
1450 * Makefile.in (install): Strip programs when they are installed.
1451 (e2fsck): Build e2fsck statically.
1452
1453Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
1454
1455 * util.c (preenhalt): Preenhalt now takes an argument, which is an
1456 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
1457 flag in the superblock in cases where preenhalt is called.
1458 All calls to preenhalt() were changed to either
1459 preenhalt(fs) or preenhalt(NULL) in a few cases where the
1460 fs pointer was not available. (Most notable, for block
1461 read/write errors.)
1462
1463Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
1464
1465 * ehandler.c:
1466 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
1467
1468Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
1469
1470 * e2fsck.c (show_stats): Show statistics about how many inodes
1471 have indirect, doubly indirect, and triply indirect
1472 blocks. Allow up to 8 digits for statistics, instead of
1473 merely 6, so things look pretty for large filesystems.
1474
1475 * pass1.c (pass1): Keep statistics about indirect, doubly
1476 indirect, and triply indirect blocks.
1477
1478 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
1479 pass 1.
1480
1481Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
1482
1483 * util.c, ehandler.c: Move #include of <sys/resource.h> after
1484 #include of "e2fsck.h", since sys/resource.h may depend on
1485 sys/time.h, which is #included in e2fsck.h.
1486
1487Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
1488
1489 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
1490 function to determine if the device is mounted.
1491
1492 * e2fsck.c (main): Add better error messages if ext2fs_open()
1493 fails.
1494
1495Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
1496
1497 * pass1.c (check_blocks): If we're clearing a directory, clear
1498 pb.is_dir so we don't do the following check of making
1499 sure the directory size matches; this is pointless, since
1500 we've already cleared the inode.
1501
1502Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1503
1504 * pass1.c (bad_primary_block): New function, called by
1505 process_bad_block, which explains the facts of life to the
1506 user when a block in the primary superblock or primary
1507 group descriptors is bad.
1508
1509 * pass2.c (check_dot): Handle the case where the first directory
1510 entry is used, but not ".".
1511
1512 * pass2.c (check_dotdot): Handle the case where the second directory
1513 entry is used, but is not "..".
1514
1515Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1516
1517 * e2fsck.c (check_super_block): Get the size of the physical
1518 device and if it is smaller than the reported size of the
1519 filesystem, report an error.
1520
1521Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
1522
1523 * e2fsck.c (check_if_skip): Print the number of allocated files and
1524 blocks on clean filesystems.
1525
1526Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
1527
1528 * e2fsck.8: Updated date and version number.
1529
1530Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
1531
1532 * pass1.c (check_blocks): Check that directory size matches *exactly*
1533 the count of allocated blocks.
1534
1535Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
1536
1537 * pass1b.c (pass1d): Free the shared[] array when we're done with
1538 it to avoid a memory leak.
1539
1540 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
1541 block_dup_map.
1542
1543 * pass2.c (process_bad_inode): When clearing the inode, make sure
1544 the pathname is freed, to prevent a memory leak.
1545
1546 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
1547 when we're finished with them.
1548 (check_block_bitmaps): Free free_array when we're finished
1549 with them.
1550
1551 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
1552 linking the executable.
1553
1554 * pass2.c (process_bad_inode): Even on OS's that don't support the
1555 fragment fields, make sure the Linux equivalent fields are
1556 set to zero. If an OS wants to reuse these fields, which
1557 is probably a bad idea (although we may get desperate in
1558 the future) this code will have to be changed.
1559
1560 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
1561 on the inode field, and then blockcnt field. This is just
1562 to keep the ordering of dir_blocks the same on all
1563 platforms when there are more than on missing directory
1564 blocks, which are indicated directories with holes, which
1565 are indicated with the block number being set to zero.
1566
1567Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1568
1569 * pass1.c (check_blocks, process_block): check_blocks() modified
1570 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
1571 the inode is a directory. process_block() now checks to
1572 see if a directory has a "hole", or missing block. If so,
1573 this fact is recorded in the directory block list so that
1574 the problem can be resolved in pass #2.
1575
1576 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
1577 allocate new blocks for directories with "holes". Called
1578 out of check_dir_block if a block in the directory block
1579 list is zero.
1580
1581 * pass3.c (get_lost_and_found): Move location of free(block) to
1582 prevent possible memory leak.
1583
1584Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1585
1586 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
1587 instead of alloca() --- alloca is not portable! Check to
1588 make sure the filename is not longer than EXT2_NAME_LEN,
1589 and offer to fix it by truncating it, since it should
1590 never happen.
1591
1592 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
1593 not portable!! In any case putenv() in some systems must
1594 take a static character array or malloc()'ed memory;
1595 passing memory allocated using alloca() to putenv() is not
1596 advisable.
1597
1598 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
1599 alloca() --- alloca() is not portable!!!
1600
1601Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
1602
1603 * pass1b.c (pass1c):
1604 * pass3.c (check_root, get_lost_and_found):
1605 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
1606 to read/write the directory block.
1607
1608Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
1609
1610 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
1611 make sure VMIN and VTIME are set correct.
1612
1613Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
1614
1615 * pass1.c (mark_block_used): Change to be an inline function.
1616 Assume that the block validity checks are already done,
1617 and use the fast variant of the bitmap functions.
1618
1619Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
1620
1621 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
1622 bounds of the bitmaps in advance, and then use the fast
1623 variant of e2fs_test_{block,inode}_bitmap.
1624
1625 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
1626 the bounds checking has already been done earlier.
1627
1628Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
1629
1630 * pass1.c (pass1): Allocate and free the block_illegal_map, which
1631 is used for shortcut processing in process_block.
1632 (mark_table_blocks): Initialize block_illegal_map with the
1633 filesystem blocks.
1634 (describe_illegal_block): New helper function that
1635 describes why a block is illegal.
1636 (process_block): Use block_illegal_map as a shortcut
1637 to determine whether a block is bad. Use
1638 describe_illegal_block to print out why the block is illegal.
1639
1640Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
1641
1642 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
1643
1644 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
1645 <mntent.h> if they don't exist. (Mostly so that "make
1646 depend" works.)
1647
1648 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
1649 it exists).
1650
1651 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
1652 exist.
1653
1654Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1655
1656 * pass2.c (process_bad_inode, check_for_zero_long,
1657 check_for_zero_char): Change long to u32, and char to u8.
1658
1659Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1660
1661 * util.c (inode_has_valid_blocks):
1662 * pass2.c (process_bad_inode):
1663 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
1664 LINUX_S_IS* instead of S_IS*.
1665
1666 * e2fsck.h: Don't #include <sys/stat.h>
1667
1668 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
1669 this program is pretty much useless if BLKFLSBUF isn't
1670 supported.)
1671
1672 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
1673 used.
1674
1675Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
1676
1677 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
1678 to allocate space for file names instead of using fixed size buffers.
1679 (process_bad_inode): Only check inode frag fields if
1680 HAVE_EXT2_FRAGS is defined (by configure).
1681 * pass1.c (pass1): Only check the inode frag fields if
1682 HAVE_EXT2_FRAGS is defined (by configure).
1683
1684 * e2fsck.c (check_mount): Only check for a mounted filesystem if
1685 HAVE_MNTENT_H is defined (by configure).
1686 (PRS): Use alloca to allocate the new path string, instead of
1687 having a fixed size buffer (which was the wrong size anyway).
1688 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
1689 is defined.
1690
1691 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
1692 defined (by configure).
1693
1694 * Makefile.in: Rewritten to conform to GNU coding standards and
1695 support separate compilation directories.
1696
1697Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
1698
1699 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
1700
Theodore Ts'of3db3561997-04-26 13:34:30 +00001701Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
1702
1703 * pass1.c (unwind_pass1): Clear the file type statistics counter
1704 when pass 1 needs to be restarted from scratch.
1705
1706 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
1707 being reallocated to blocks in the next block group,
1708 instead of the current block grup.
1709
1710 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
1711 inode.i_links_count is set.
1712
1713Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
1714
1715 * pass1.c (process_block): Add checks for if the block is
1716 trepassing on a superblock or group descriptor table.
1717
1718Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
1719
1720 * main.c (corrupt_msg): Extend the message which is printed out
1721 when the superblock is corrupt, to include the suggestion
1722 of using the -b option to specify an alternate superblock.
1723
1724Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
1725
1726 * badblocks.c (read_bad_blocks_file): If we are adding or
1727 replacing bad blocks in the bad blocks inode, sanity check
1728 the bad block inode first, and clear out any illegal blocks.
1729
1730 * pass2.c (check_name): Don't bomb out if the attempt to get the
1731 pathname of the containing directory returns an error; the
1732 directory may be too badly damaged to expect that
1733 ext2fs_get_pathname will always succeed. Use "???" if the
1734 pathname can't be obtained (it's only for a printf to the
1735 user anyway).
1736
1737 The name of the containing directory and the bad filename
1738 were incorrectly interchanged in the user message. Fixed.
1739
1740 * pass2.c (check_name, check_dir_block): Use a common static
1741 string for the unknown pathname.
1742
1743Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
1744
1745 * Fixed lots of printf formats to make sure that block and inode
1746 numbers are printed as unsigned integers.
1747
1748Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
1749
1750 * pass5.c (check_block_end): Fix calculation of how the last block
1751 in the block bitmap should be calculated.
1752
1753Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
1754
1755 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
1756 be an ext2fs_inode_bitmap, and free it properly.
1757
1758 * e2fsck.h
1759 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
1760 level to the superblock.
1761
1762Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
1763
1764 * e2fsck.c (usage): Fixed bogus usage message.
1765
1766Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
1767
1768 * pass1.c (process_bad_block): Fixed bug so that blocks in the
1769 backup superblocks and group descriptors are handled gracefully.
1770