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