blob: 36dc54a85f07e339eb0546cf649f65f6cd46e7c9 [file] [log] [blame]
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +00001Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
2
3 * Change the progress function to return an integer; if returns 1,
4 then the progress function is expected to have set the
5 e2fsck context flag signalling a user abort, and the
6 caller should also initiate a user abort.
7
Theodore Ts'o63c49691998-02-20 05:24:59 +00008Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
9
10 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
11 end_problem_latch() unless there was actually a problem
12 latched. Simplifies semantics of the latch processing.
13
Theodore Ts'o43139321998-02-16 22:34:46 +000014Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
15
16 * e2fsck.h: Add new field, priv_data to the e2fsck context
17 structure. It should be used by callers of the e2fsck
18 functions only, and not by anything in e2fsck itself.
19
20Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
21
22 * super.c: Instead of call ext2fs_get_device_size(), define and call
23 e2fsck_get_device_size(). (This function may be stubbed
24 out in special versions of e2fsck.)
25
26 * pass3.c, pass4.c: Remove extra calls to the progress function
27 that weren't needed.
28
29 * mke2fs.8.in: Update man page to note that the format of the bad
30 block file is the same as the one generated by badblocks.
31
Theodore Ts'o54be2cc1998-02-01 12:58:48 +000032Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
33
34 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
35
36 * e2fsck.h: Include <time.h> since it is needed
37
38 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
39 processing.
40
Theodore Ts'o24dd4021998-02-01 00:16:40 +000041Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
42
43 * unix.c (main): In the case where the filesystem revision is too
44 high, print the message about the superblock possibly
45 being corrupt.
46
47 * e2fsck.8.in: Add expanded comments about how the -b option
48 works.
49
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +000050Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
51
52 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
53 the ext2-specific header files are in a flat directory.
54
55 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
56 super.c, swapfs.c, unix.c: Explicitly cast all assignments
57 from void * to be compatible with C++.
58
59Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
60
61 * unix.c (sync_disk): Remove sync_disk and calls to that function,
62 since ext2fs_close() now takes care of this.
63
64Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
65
66 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
67 ehandler.c, unix.c: Change use of private to be priv_data,
68 to avoid C++ reserved name clash.
69
Theodore Ts'o5be8dc21997-12-01 18:24:10 +000070Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
71
72 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
73 of e2fsck_get_num_dirs, which has been removed.
74
75Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
76
77 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
78 to compile and install flushb.
79
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +000080Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
81
82 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
83 to make sure the extra i_blocks in a device are cleared if
84 the immutable flag is set.
85
86 * util.c (print_resource_track): Fix typo which caused the
87 time/resource tracking to print "Pass 1 :" instead of
88 "Pass 1: ".
89
Theodore Ts'ob8647fa1997-11-20 21:52:43 +000090Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
91
92 * pass3.c (expand_directory): Fix bug which could cause core dump
93 when expanding the directory, and the bitmaps hadn't yet
94 been read in. Also, only use ext2fs_write_dir_block when
95 writing a directory block, not when writing out a fresh
96 indirect block.
97
Theodore Ts'o8039c481997-11-19 21:39:13 +000098Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
99
100 * pass1.c (process_bad_block): Fix bug where first_block wasn't
101 getting incremented, which caused user to get a
102 "Programming error?" warning if there was a bad block in a
103 non-primary superblock/group_descriptor. Also fixed
104 another bug so that ext2fs_bg_has_super() is consulted, to
105 avoid problems when using a filesystem with the
106 sparse_groups option set and there are bad blocks at the
107 beginning of a group which doesn't have a superblock.
108
Theodore Ts'of8188ff1997-11-14 05:23:04 +0000109Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
110
111 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
112 progress indicator function.
113
114 * pass1.c (scan_callback): Add call to the progress feedback
115 function (if it exists).
116
117Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
118
119 * super.c (check_super_block): Skip the device size check if the
120 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
121
122 * iscan.c (main): Don't use fatal_error() anymore.
123
124 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
125 calling fatal_error(0).
126
127 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
128 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
129
130 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
131
132 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
133
134 * problemP.h: New file which separates out the private fix_problem
135 data structures.
136
137 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
138 swapfs.c util.c: allocate_memory() now takes a e2fsck
139 context as its first argument, and rename it to be
140 e2fsck_allocate_memory().
141
Theodore Ts'o08b21301997-11-03 19:42:40 +0000142Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
143
Theodore Ts'o68227541997-11-04 04:25:22 +0000144 * unix.c (main): Add a special case check for the error code EROFS
145 and display an appropriate error message for this case.
146
Theodore Ts'o08b21301997-11-03 19:42:40 +0000147 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
148 to take the e2fsck context as their first argument.
149 Change dir_info.c routines to take an e2fsck_context,
150 renamed them to start with e2fsck_ to avoid namespace
151 issues, and changed them to store the directory
152 information inside the e2fsck context.
153 Added e2fsck_run() which calls all of the e2fsck passes in
154 the correct order, and which handles the return of abort
155 codes. Added abort processing, both via setjmp/longjmp
156 and via flags in the e2fsck context. Use a flag in the
157 e2fsck context instead of the restart_e2fsck global
158 variable. Change uses of free and malloc to
159 ext2fs_free_mem and ext2fs_get_mem.
160
Theodore Ts'o291c9041997-10-31 06:17:08 +0000161Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
162
163 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
164 consistency.
165
Theodore Ts'oc555aeb1997-10-25 04:16:53 +0000166Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
167
168 * pass3.c (get_lost_and_found): Check error return of
169 EXT2_FILE_NOT_FOUND instead of ENOTDIR
170
171 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
172 instead of ENOTDIR
173
Theodore Ts'o622f5f21997-10-24 04:18:21 +0000174Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
175
Theodore Ts'o519149f1997-10-25 03:49:49 +0000176 * unix.c (PRS): Make the variable which getopt returns into be
177 an int, so that it won't lose on platforms where char is
178 unsigned.
179
Theodore Ts'o622f5f21997-10-24 04:18:21 +0000180 * pass1b.c (clone_file): Fix bug in error reporting in the case
181 where cs.errcode is non-zero.
182
Theodore Ts'ob2da22d1997-10-20 01:16:35 +0000183Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
184
Theodore Ts'o8bf191e1997-10-20 01:38:32 +0000185 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
186 RESOURCE_TRACK around code which uses init_resource_track
187 and print_resource_track. (Not all systems have timeval)
188
Theodore Ts'ob2da22d1997-10-20 01:16:35 +0000189 * super.c: Remove excess #includes which are not necessary.
190
191 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
192
Theodore Ts'o1b6bf171997-10-03 17:48:10 +0000193Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
194
195 * pass*.c, super.c: Massive changes to avoid using printf and
196 com_err routines. All diagnostic messages are now routed
197 through the fix_problem interface.
198
199Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
200
201 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
202 entries.
203
204 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
205 PR_2_DUP_DOT_DOT.
206
207Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
208
209 * problem.c: Added new problem codes for some of the
210 superblock corruption checks, and for the pass header
211 messages. ("Pass 1: xxxxx")
212
213 * util.c (print_resource_track): Now takes a description
214 argument.
215
216Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
217
218 * super.c, unix.c, e2fsck.c: New files to separate out the
219 operating-specific operations out from e2fsck.c.
220 e2fsck.c now contains the global e2fsck context management
221 routines, and super.c contains the "pass 0" initial
222 validation of the superblock and global block group
223 descriptors.
224
225 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
226 (nearly) all global variables and moved them to the e2fsck
227 context structure.
228
229 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
230 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
231 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
232
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +0000233Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
234
235 * message.c: Add compression for the word "Illegal"
236
237 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
238 PR_2_BAD_BLOCK_DEV
239
240Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
241
242 * pass1.c (pass1, check_device_inode), pass2.c
243 (process_bad_inode): Use a more stringent test for a valid
244 device.
245
Theodore Ts'oa47b66e1997-08-10 23:02:21 +0000246Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
247
248 * e2fsck.c (check_mount): Add stronger warning message about the
249 perils of running e2fsck on a mounted filesystem.
250
Theodore Ts'o024996c1997-06-17 05:38:35 +0000251Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
252
253 * Release of E2fsprogs 1.11
254
Theodore Ts'oda2e97f1997-06-12 04:28:07 +0000255Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
256
257 * pass1.c (mark_table_blocks): Mark the superblock and group
258 descriptor blocks first, so that any conflicts between
259 these and the bitmap or inode table blocks is noticed.
260
261 * problem.c: Fix message printed out when a block or inode bitmap
262 conflicts with other fs data, has the correct group number
263 in it.
264
Theodore Ts'o7ac02a51997-06-11 18:32:35 +0000265Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
266
267 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
268
Theodore Ts'of635d7f1997-05-09 02:50:16 +0000269Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
270
Theodore Ts'o583ccdc1997-05-09 03:06:31 +0000271 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
272 Hawes (whawes@star.net).
273
Theodore Ts'of635d7f1997-05-09 02:50:16 +0000274 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
275 bad blocks command so that all of the filesystem gets
276 tested in the case where the blocksize 2048 or 4096.
277
Theodore Ts'oa29f4d31997-04-29 21:26:48 +0000278Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
279
280 * Release of E2fsprogs version 1.10
281
282Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
283
284 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
285 where ext2fs_get_next_inode returns the
286 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
287
288Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
289
290 * Release of E2fsprogs version 1.09
291
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +0000292Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
293
294 * Release of E2fsprogs version 1.08
295
Theodore Ts'o521e3681997-04-29 17:48:10 +0000296Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
297
298 * pass1b.c (clone_file_block): If we clone a directory, we need to
299 update the dblist entry so that we check (and correct) the
300 right directory block.
301
302Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
303
304 * pass1.c (process_block): Don't clear blocks references to
305 filesystem metadata; let pass 1B handle this case.
306
307 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
308
309 * pass1b.c (pass1d): Deal with a block which is shared with
310 filesystem metadata.
311
312 * e2fsck.h: Make block_illegal_map be a global variable
313
314Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
315
316 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
317 feature.
318 (get_backup_sb): New function which attempts to obtain the
319 correct backup superblock (if possible).
320
321Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
322
323 * e2fsck.c (main): Check the version of the library, and warn if
324 the library is out of date; this happens generally due to
325 users who manually install e2fsprogs.
326
327 * pass1.c (pass1_get_blocks): If the passed in inode number for
328 get_blocks isn't what we're expecting pass back
329 EXT2_ET_CALLBACK_NOT_HANDLED.
330
Theodore Ts'o21c84b71997-04-29 16:15:03 +0000331Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
332
333 * Release of E2fsprogs version 1.07
334
335Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
336
337 * icount.c: New file which implements an inode count abstraction.
338 This significantly reduces amount of memory needed to
339 check really large filesystems.
340
341 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
342 abstraction.
343
344Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
345
346 * dirinfo.c (dir_info_iter): New function which allows iteration
347 over the directories in the dir_info map.
348
349 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
350 over all directories in the dir_info structure, instead of
351 iterating all inodes looking for directories, and then
352 looking up the directories using get_dir_info().
353
354Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
355
356 * pass1.c (pass1, process_block):
357 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
358 manual code to manage the directory block list information.
359
360 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
361 (deallocate_inode): Call the ext2 library routine
362 ext2_inode_has_valid_blocks() instead of
363 inode_has_valid_blocks().
364
365 * swapfs.c (swap_inodes): Add check so that we don't try to call
366 swap_inode_blocks unless the inode has valid blocks.
367 (Otherwise a long fast symlink might cause
368 swap_inode_blocks to erroneously get called.)
369
370Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
371
372 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
373 PR_2_DOT_DOT_NULL_TERM.
374
375 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
376 .. entries are null-terminated, since the 2.0 kernel
377 requires this (for no good reason).
378
379Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
380
381 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
382 that we can recover from missing inode tables.
383
384 * dirinfo.c (get_dir_info): If there are no directories in the
385 dir_info abstraction, don't core dump (because dir_info is
386 NULL).
387
388 * e2fsck.c (main): Don't try using the backup superblocks if there
389 aren't any.
390 (check_super_block): If there are illegal inode table or
391 bitmaps, set the filesystem as being in error.
392
393Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
394
395 * pass2.c (check_dir_block): Added check to make sure that rec_len
396 is a a multiple of 4 (so that the directory entries are
397 4-byte aligned).
398
399Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
400
401 * Makefile.in (uninstall): Uninstall all programs in the PROGS
402 line.
403 (PROGS): Don't build and install the extend program by
404 default.
405
406
407Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
408
409 * pass1.c (process_inodes): Make sure the stashed_ino variable is
410 saved and restored as well.
411 (pass1): For fast sym links, skip the check_blocks
412 processing step altogether.
413
414Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
415
416 * problem.c, message.c: New files, to completely refurbish how
417 filesystem problems are reported to the user. The
418 diagnostic messages are now encoded out in an easily
419 customizable, extensible format. The messages printed out
420 in preen mode are all on one line, and contain the device
421 name.
422
423Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
424
425 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
426 deleted files.
427
428 * pass1.c (pass1): Ignore missing inode table errors during the
429 scan, and just skip past those inodes.
430
431 * pass3.c (check_root): Remove root_ino argument, and assume that
432 the root inode must be EXT2_ROOT_INO. Move responsibility
433 of setting the parent of the root inode in the directory
434 inode structure to pass2().
435
436 * pass2.c (check_dir_block): Don't allow links to the root
437 directory.
438
439 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
440 since the inode is no longer used.
441
442Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
443
444 * e2fsck.c (main): If the superblock magic number is wrong, or the
445 block group fails a sanity check, then automatically
446 restart trying to use the backup superblocks.
447
448 * pass1.c (mark_table_blocks): Make the inode tables ahead of
449 everything else; in the case where a bitmap block overlays
450 the inode table, the inode table should take precedence.
451
452 * pass2.c (maybe_clear_entry): Make the deleted/unused error
453 message fit on one line, since the error can happen during
454 a preen pass. (We eventually need to revamp the whole
455 e2fsck error reporting and prompting system, but that's a
456 job for another day.)
457
458Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
459
460 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
461 for the benefit of the inode scan functions.
462
463 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
464 indicating that an inode is in a bad block, mark that
465 inode as being used, as well as in the inode "bb" map.
466
467 * pass2.c (maybe_clear_entry): New function which generalizes the
468 error cases when a directory entry needs to be cleared.
469 (check_dir_block): If an inode is in the "bb" map, offer
470 to clear the directory entry, since the inode is in a bad
471 block.
472
473 * pass4.c (pass4): If an inode is marked as used, but is is marked
474 in the "bb" map, don't process it as a disconnected inode.
475
476Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
477
478 * Release of E2fsprogs version 1.06
479
Theodore Ts'o5c576471997-04-29 15:29:49 +0000480Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
481
482 * e2fsck.c (main): Print out the version number of the shared
483 library when using the -V option.
484
485 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
486 consistency's sake.
487
488 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
489 out the backup superblocks when we know we have a valid
490 filesystem.
491
492Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
493
494 * util.c (preenhalt): Make it explicit on preenhalt that running
495 e2fsck manually means without the -a or -p flag.
496
497Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
498
499 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
500 (Linux/FT actually sets the mode bits, so we have to
501 handle it specially.)
502
503 * e2fsck.c (check_if_skip): Print a message if the filesystem is
504 just dirty, so that the user knows that it's about to be
505 checked (since this will take a while).
506
507Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
508
509 * pass4.c: If a disconnected inode is zero-length, prompt to
510 delete it instead of connecting it to lost+found.
511
512Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
513
514 * Release of E2fsprogs version 1.05
515
Theodore Ts'o1e3472c1997-04-29 14:53:37 +0000516Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
517
518 * pass4.c (pass4): If the user refuses to connect an unattached
519 inode to lost+found, don't try to set i_links_count. This
520 is bad, since if the user says yes, the inode will be
521 marked as unused, which is not necessarily the right
522 thing, especially since the rest of the cleanup doesn't
523 happen here.
524
525 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
526 dellocating an inode. (Not strictly necessary, but...)
527
528 * pass4.c (pass4): Add "bonehead" explanation to the "programming
529 error" message.
530
531Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
532
533 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
534 byte-swap the filesystem so that it is normalized. -S
535 will byte-swap the filesystem regardless of its current
536 byte-order.
537
538 * swapfs.c: New file, which will byte-swap a filesystem.
539
540Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
541
542 * pass1.c (pass1): Change handling on files with non-zero dtime
543 and non-zero i_link_count; before we treated them as
544 deleted file per botched ext2 0.3c kernel behavior. We
545 now clear dtime instead.
546
547Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
548
549 * e2fsck.c (main): If e2fsck sets the clean bit, even if
550 nothing else is changed, make sure FSCK_NONDESTRUCT is
551 set (since after all having the filesystem set to
552 invalid is an error. :-)
553
554Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
555
556 * pass1.c (process_block): Make sure that meta data doesn't get
557 accidentally set in the dir_blocks array (which could
558 happen in some error condtions).
559
560 * pass1.c (pass1):
561 * pass2.c (process_bad_inode): Check for fragments in a
562 OS-independent fashion.
563
564Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
565
566 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
567 cleanup for the filesystem.
568
569Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
570
571 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
572
Theodore Ts'o62c06f71997-04-29 14:34:47 +0000573Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
574
575 * Release of E2fsprogs version 1.04
576
577Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
578
579 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
580 try "e2fsck -b 8193" before allowing e2fsck to relocate
581 inode table blocks.
582
583 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
584 depending on the option to configure. Added targets for
585 e2fsck.static and e2fsck.shared for people who want to
586 build a static or shared variant manually.
587
Theodore Ts'o7f88b041997-04-26 14:48:50 +0000588Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
589
590 * Release of E2fsprogs version 1.03
591
592Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
593
594 * e2fsck.c (show_stats): Don't use floating point to display
595 percentage of non-contiguous files, as different libc
596 handle result truncation differently, and this causes the
597 test suite to bomb out depending on which libc you are
598 using.
599
600 * util.c (allocate_memory): Fix error message to omit extraneous
601 %%s.
602
603Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
604
605 * pass4.c (pass4):
606 * pass2.c (check_dir_block):
607 * pass1.c (pass1): Add support for dynamic first inode revision.
608
609Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
610
611 * pass3.c (check_root): Fix spelling typo
612
613Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
614
615 * e2fsck.c (check_super_block): If the superblock fails certain
616 internal consistency checks, exit with a fatal error after
617 printing the "superblock is corrupt message".
618
Theodore Ts'o74becf31997-04-26 14:37:06 +0000619Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
620
621 * Release of E2fsprogs version 1.02
622
623Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
624
625 * pass1.c (process_block): Check to see if a file is "fragmented".
626 i.e., non-contiguous. Note that any file which is larger
627 than the block group is guaranteed to be non-contiguous.
628 We may want to use a different hueristic for deciding
629 whether or not a file is "fragmented".
630
631 * e2fsck.c (show_stats): Print statistics of how many
632 non-contiguous files are on the system.
633
634Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
635
636 * badblocks.c (read_bad_blocks_file, test_disk): Fold
637 functionality of test_disk() (which runs badblocks) into
638 read_bad_blocks_file(); test_disk() now calls
639 read_bad_blocks_file() with a NULL bad_blocks_file
640 argument.
641
642Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
643
644 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
645 #if defined(linux). The latter won't work if we're
646 compiling -ansi.
647
Theodore Ts'o297f47a1997-04-26 14:25:20 +0000648Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
649
650 * e2fsck.c (check_mount): For Linux systems, the check to see if
651 the root is mounted read-only has to be done for all
652 filesystems, not just for the root filesystem, due to the
653 way that some /etc/rc scripts are set up.
654
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000655Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
656
657 * Makefile.in (install): Strip programs when they are installed.
658 (e2fsck): Build e2fsck statically.
659
660Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
661
662 * util.c (preenhalt): Preenhalt now takes an argument, which is an
663 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
664 flag in the superblock in cases where preenhalt is called.
665 All calls to preenhalt() were changed to either
666 preenhalt(fs) or preenhalt(NULL) in a few cases where the
667 fs pointer was not available. (Most notable, for block
668 read/write errors.)
669
670Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
671
672 * ehandler.c:
673 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
674
675Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
676
677 * e2fsck.c (show_stats): Show statistics about how many inodes
678 have indirect, doubly indirect, and triply indirect
679 blocks. Allow up to 8 digits for statistics, instead of
680 merely 6, so things look pretty for large filesystems.
681
682 * pass1.c (pass1): Keep statistics about indirect, doubly
683 indirect, and triply indirect blocks.
684
685 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
686 pass 1.
687
688Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
689
690 * util.c, ehandler.c: Move #include of <sys/resource.h> after
691 #include of "e2fsck.h", since sys/resource.h may depend on
692 sys/time.h, which is #included in e2fsck.h.
693
694Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
695
696 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
697 function to determine if the device is mounted.
698
699 * e2fsck.c (main): Add better error messages if ext2fs_open()
700 fails.
701
702Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
703
704 * pass1.c (check_blocks): If we're clearing a directory, clear
705 pb.is_dir so we don't do the following check of making
706 sure the directory size matches; this is pointless, since
707 we've already cleared the inode.
708
709Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
710
711 * pass1.c (bad_primary_block): New function, called by
712 process_bad_block, which explains the facts of life to the
713 user when a block in the primary superblock or primary
714 group descriptors is bad.
715
716 * pass2.c (check_dot): Handle the case where the first directory
717 entry is used, but not ".".
718
719 * pass2.c (check_dotdot): Handle the case where the second directory
720 entry is used, but is not "..".
721
722Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
723
724 * e2fsck.c (check_super_block): Get the size of the physical
725 device and if it is smaller than the reported size of the
726 filesystem, report an error.
727
728Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
729
730 * e2fsck.c (check_if_skip): Print the number of allocated files and
731 blocks on clean filesystems.
732
733Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
734
735 * e2fsck.8: Updated date and version number.
736
737Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
738
739 * pass1.c (check_blocks): Check that directory size matches *exactly*
740 the count of allocated blocks.
741
742Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
743
744 * pass1b.c (pass1d): Free the shared[] array when we're done with
745 it to avoid a memory leak.
746
747 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
748 block_dup_map.
749
750 * pass2.c (process_bad_inode): When clearing the inode, make sure
751 the pathname is freed, to prevent a memory leak.
752
753 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
754 when we're finished with them.
755 (check_block_bitmaps): Free free_array when we're finished
756 with them.
757
758 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
759 linking the executable.
760
761 * pass2.c (process_bad_inode): Even on OS's that don't support the
762 fragment fields, make sure the Linux equivalent fields are
763 set to zero. If an OS wants to reuse these fields, which
764 is probably a bad idea (although we may get desperate in
765 the future) this code will have to be changed.
766
767 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
768 on the inode field, and then blockcnt field. This is just
769 to keep the ordering of dir_blocks the same on all
770 platforms when there are more than on missing directory
771 blocks, which are indicated directories with holes, which
772 are indicated with the block number being set to zero.
773
774Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
775
776 * pass1.c (check_blocks, process_block): check_blocks() modified
777 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
778 the inode is a directory. process_block() now checks to
779 see if a directory has a "hole", or missing block. If so,
780 this fact is recorded in the directory block list so that
781 the problem can be resolved in pass #2.
782
783 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
784 allocate new blocks for directories with "holes". Called
785 out of check_dir_block if a block in the directory block
786 list is zero.
787
788 * pass3.c (get_lost_and_found): Move location of free(block) to
789 prevent possible memory leak.
790
791Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
792
793 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
794 instead of alloca() --- alloca is not portable! Check to
795 make sure the filename is not longer than EXT2_NAME_LEN,
796 and offer to fix it by truncating it, since it should
797 never happen.
798
799 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
800 not portable!! In any case putenv() in some systems must
801 take a static character array or malloc()'ed memory;
802 passing memory allocated using alloca() to putenv() is not
803 advisable.
804
805 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
806 alloca() --- alloca() is not portable!!!
807
808Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
809
810 * pass1b.c (pass1c):
811 * pass3.c (check_root, get_lost_and_found):
812 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
813 to read/write the directory block.
814
815Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
816
817 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
818 make sure VMIN and VTIME are set correct.
819
820Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
821
822 * pass1.c (mark_block_used): Change to be an inline function.
823 Assume that the block validity checks are already done,
824 and use the fast variant of the bitmap functions.
825
826Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
827
828 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
829 bounds of the bitmaps in advance, and then use the fast
830 variant of e2fs_test_{block,inode}_bitmap.
831
832 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
833 the bounds checking has already been done earlier.
834
835Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
836
837 * pass1.c (pass1): Allocate and free the block_illegal_map, which
838 is used for shortcut processing in process_block.
839 (mark_table_blocks): Initialize block_illegal_map with the
840 filesystem blocks.
841 (describe_illegal_block): New helper function that
842 describes why a block is illegal.
843 (process_block): Use block_illegal_map as a shortcut
844 to determine whether a block is bad. Use
845 describe_illegal_block to print out why the block is illegal.
846
847Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
848
849 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
850
851 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
852 <mntent.h> if they don't exist. (Mostly so that "make
853 depend" works.)
854
855 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
856 it exists).
857
858 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
859 exist.
860
861Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
862
863 * pass2.c (process_bad_inode, check_for_zero_long,
864 check_for_zero_char): Change long to u32, and char to u8.
865
866Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
867
868 * util.c (inode_has_valid_blocks):
869 * pass2.c (process_bad_inode):
870 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
871 LINUX_S_IS* instead of S_IS*.
872
873 * e2fsck.h: Don't #include <sys/stat.h>
874
875 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
876 this program is pretty much useless if BLKFLSBUF isn't
877 supported.)
878
879 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
880 used.
881
882Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
883
884 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
885 to allocate space for file names instead of using fixed size buffers.
886 (process_bad_inode): Only check inode frag fields if
887 HAVE_EXT2_FRAGS is defined (by configure).
888 * pass1.c (pass1): Only check the inode frag fields if
889 HAVE_EXT2_FRAGS is defined (by configure).
890
891 * e2fsck.c (check_mount): Only check for a mounted filesystem if
892 HAVE_MNTENT_H is defined (by configure).
893 (PRS): Use alloca to allocate the new path string, instead of
894 having a fixed size buffer (which was the wrong size anyway).
895 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
896 is defined.
897
898 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
899 defined (by configure).
900
901 * Makefile.in: Rewritten to conform to GNU coding standards and
902 support separate compilation directories.
903
904Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
905
906 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
907
Theodore Ts'of3db3561997-04-26 13:34:30 +0000908Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
909
910 * pass1.c (unwind_pass1): Clear the file type statistics counter
911 when pass 1 needs to be restarted from scratch.
912
913 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
914 being reallocated to blocks in the next block group,
915 instead of the current block grup.
916
917 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
918 inode.i_links_count is set.
919
920Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
921
922 * pass1.c (process_block): Add checks for if the block is
923 trepassing on a superblock or group descriptor table.
924
925Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
926
927 * main.c (corrupt_msg): Extend the message which is printed out
928 when the superblock is corrupt, to include the suggestion
929 of using the -b option to specify an alternate superblock.
930
931Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
932
933 * badblocks.c (read_bad_blocks_file): If we are adding or
934 replacing bad blocks in the bad blocks inode, sanity check
935 the bad block inode first, and clear out any illegal blocks.
936
937 * pass2.c (check_name): Don't bomb out if the attempt to get the
938 pathname of the containing directory returns an error; the
939 directory may be too badly damaged to expect that
940 ext2fs_get_pathname will always succeed. Use "???" if the
941 pathname can't be obtained (it's only for a printf to the
942 user anyway).
943
944 The name of the containing directory and the bad filename
945 were incorrectly interchanged in the user message. Fixed.
946
947 * pass2.c (check_name, check_dir_block): Use a common static
948 string for the unknown pathname.
949
950Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
951
952 * Fixed lots of printf formats to make sure that block and inode
953 numbers are printed as unsigned integers.
954
955Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
956
957 * pass5.c (check_block_end): Fix calculation of how the last block
958 in the block bitmap should be calculated.
959
960Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
961
962 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
963 be an ext2fs_inode_bitmap, and free it properly.
964
965 * e2fsck.h
966 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
967 level to the superblock.
968
969Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
970
971 * e2fsck.c (usage): Fixed bogus usage message.
972
973Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
974
975 * pass1.c (process_bad_block): Fixed bug so that blocks in the
976 backup superblocks and group descriptors are handled gracefully.
977