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