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