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