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