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