blob: 82f8c34dc44013dd1b654b1cc5355dd8addef30f [file] [log] [blame]
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +000011999-06-25 <tytso@rsts-11.mit.edu>
2
3 * e2fsck.h:
4 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
5 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
6 pass1_* be private static functions, and create new
7 function e2fsck_use_inode_shortcuts which sets and clears
8 the inode shortcut functions in the fs structure.
9
10 * e2fsck.h:
11 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
12 exported function.
13
14 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
15 if a disconnected inode has any problems before
16 connecting it to /lost+found. Bug and suggested fix by
17 Pavel Machek <pavel@bug.ucw.cz>
18
191999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +000020
21 * unix.c (main): Add missing space in the disk write-protected
22 message.
23
Theodore Ts'od4b0ce01999-06-18 01:09:29 +0000241999-05-22 <tytso@rsts-11.mit.edu>
25
26 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
27 code.
28
29 * super.c (check_super_block): Add check to make sure the total
30 number of inodes is sane, since this can be calculated
31 from the number of groups times the number of inodes per
32 group. Offer to correct it if it is incorrect.
33
Theodore Ts'oe79d1b21999-06-18 01:06:59 +0000341999-03-19 <tytso@rsts-11.mit.edu>
35
36 * pass5.c (check_block_end): Fix fencepost condition where when
37 clearing the block padding we were missing the last position
38 in the bitmap.
39
Theodore Ts'o75d83be1999-05-18 03:16:36 +0000401999-05-17 <tytso@rsts-11.mit.edu>
41
42 * unix.c (reserve_stdio_fds): Add safety check in case
43 reserve_stdio_fds couldn't open /dev/null.
44
Theodore Ts'o4a9f5931999-03-16 19:32:52 +0000451999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
46
47 * util.c (print_resource_track): Use mallinfo if present to get
48 more accurate malloc statistics.
49
50 * pass3.c (get_lost_and_found): Check to see if lost+found is a
51 plain fail; if so, offer to unlink it.
52
53 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
54
551999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
56
57 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
58 that the block group number is printed. Add new prompt,
59 PROMPT_UNLINK.
60
611999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
62
63 * Release of E2fsprogs 1.14
64
Theodore Ts'o9e51eca1999-01-09 16:32:31 +0000651999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
66
67 * message.c (safe_print): New function which prints strings,
68 converting non-printable characters using the '^' and
69 M-notation. This function is now used to print directory
70 name entries and pathnames.
71
Theodore Ts'o73f17cf1999-01-04 07:35:45 +000072Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
73
74 * unix.c (main): Reset the context before calling ext2fs_close(),
75 to avoid referencing already freed memory.
76
Theodore Ts'o556ad131998-12-19 08:10:58 +0000771998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
78
79 * Release of E2fsprogs 1.13
80
Theodore Ts'o5a679c81998-12-03 16:40:38 +0000811998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
82
83 * Makefile.in: Updated dependencies.
84
851998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
86
87 * pass3.c (get_lost_and_found): If the filesystem is not opened
88 read-only, then force /lost+found to be created if it is
89 not present.
90
91 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
92 operation.
93
Theodore Ts'o1dde43f1998-11-14 04:18:28 +0000941998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
95
96 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
97 since e2fsck_free_context may reference data in ctx->fs.
98
99 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
100 before checking ctx->fs->dblist.
101
1021998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
103
104 * pass1.c (e2fsck_pass1): Use the device check subroutine on
105 FIFO's and Socket's, so that we catch bogus immutable inodes.
106
107 * pass2.c (process_bad_inode): Process bad socket and fifo's.
108
109 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
110 PR_2_BAD_SOCKET.
111
Theodore Ts'o7f813ba1998-09-03 01:26:03 +00001121998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
113
114 * problem.c: Add PR_3_NO_DIRINFO error code.
115
116 * super.c (check_super_value): Rename min and max to min_val and
117 max_val to avoid possible cpp macro conflicts.
118
119 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
120 possible cpp macro conflicts.
121
122 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
123 cpp macro conflicts.
124 (check_directory): Fix logic to avoid possible core dump
125 in the case of ext2fs_get_dir_info returning NULL. (By
126 the time we get here, it should never happen, but...).
127 Also simply/streamline the control flow of the function.
128
Theodore Ts'o24fc5031998-08-26 15:23:31 +00001291998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
130
131 * unix.c (check_if_skip): Move the "not cleanly mounted" check
132 ahead of the maximal mount and too long since checked tests.
133 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
134 open, so that we don't open the filesystem using the same
135 file descriptor as stdout or stderr.
136
Theodore Ts'of75c28d1998-08-01 04:18:06 +00001371998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
138
139 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
140 get to 100%.
141
142 * pass3.c (e2fsck_pass3): Change progress accounting to be
143 consistent with the other e2fsck passes.
144
145 * e2fsck.c (e2fsck_run): At the end of each pass, call the
146 progress function with the pass number set to zero.
147
148 * unix.c (e2fsck_update_progress): If the pass number is zero,
149 ignore the call, since that indicates that we just want to
150 deallocate any progress structures.
151
Theodore Ts'o8144d671998-07-09 05:33:18 +00001521998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
153
Theodore Ts'o4a5fa191998-07-09 05:42:45 +0000154 * Release of E2fsprogs 1.12
155
1561998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
157
Theodore Ts'o8144d671998-07-09 05:33:18 +0000158 * unix.c (main): Fix typo in checking the incompat feature set; it
159 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
160
Theodore Ts'o1fad9041998-07-07 05:44:43 +00001611998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
162
163 * badblocks.c (test_disk): Don't clear the existing bad blocks
164 list when using e2fsck -c, since it may cause blocks with
165 marginal errors to be dropped from the bad blocks list.
166
Theodore Ts'o874b4d21998-07-06 14:33:12 +0000167Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
168
169 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
170 compatibility with older kernels.
171
Theodore Ts'o818180c1998-06-27 05:11:14 +00001721998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
173
174 * unix.c (e2fsck_update_progress): Remove unused variables.
175
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +00001761998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
177
178 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
179 collision with LFS API.
180
181 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
182 properly initialized.
183 (e2fsck_pass1): Don't allow the the boot loader inode to
184 be a directory (clear the inode mode field if so).
185
Theodore Ts'oefac9a11998-05-07 05:02:00 +00001861998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
187
188 * unix.c (PRS): Added new option -C, which causes e2fsck to print
189 progress updates so that callers can keep track of the
190 completion progress of e2fsck. Designed for use by
191 progress, except for -C 0, which prints a spinning report
192 which may be useful for some users.
193
194 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
195 scheme (useful for larger filesystems).
196
197 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
198 progress reporting functions.
199
Theodore Ts'o4c77fe51998-04-30 17:35:59 +00002001998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
201
202 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
203 appropriate return type for comparison functions for qsort.
204
205 * e2fsck.h: Add #ifdef protection for unistd.h
206
207 * super.c: Remove header files already included by e2fsck.h
208
Theodore Ts'o76f875d1998-04-27 01:41:13 +00002091998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
210
211 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
212 size of the memory to be resized to ext2fs_resize_mem().
213
Theodore Ts'o7e44f241998-04-01 03:16:29 +00002141998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
215
216 * Makefile.in: Change to use new installation directory variables
217 convention. Fix uninstall rules to take $(DESTDIR) into
218 account. Remove cat8dir from the installdirs target,
219 since modern man package don't necessarily put the cat
220 directory in /usr/man/cat?.
221
Theodore Ts'o17dba281998-03-30 01:16:26 +00002221998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
223
224 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
225 extern in e2fsck.h to prevent -Wall warnings.
226
227 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
228
2291998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
230
231 * super.c (check_super_block): Fix broken superblock sanity check
232 when calculating blocks_per_group if s_log_frag_size !=
233 s_log_block_size. Since we don't support fragments, this
234 isn't a bug deal, but it's good to get it fixed.
235
Theodore Ts'o246501c1998-03-24 16:22:38 +00002361998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
237
238 * unix.c: Fix bug in check of feature set, to make sure we can
239 really fix this filesystem.
240
241 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
242 num field be a 64 bit type. Add the problem code
243 PR_1_FEATURE_LARGE_FILES
244
245 * problem.c: Add table entry for the problem code
246 PR_1_FEATURE_LARGE_FILES.
247
248 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
249 a problem for directory inodes. (Since it is also
250 i_size_high now.) If there are no large_files, then
251 clear the LARGE_FLAG feature flag. If there are
252 large_files, but the LARGE_FLAG feature flag is not set,
253 complain and offer to fix it.
254 (check_blocks): Add support to deal with non-directory
255 inodes that have i_size_high set (i.e., large_files).
256 Don't give an error if a directory has preallocated
257 blocks, to support the DIR_PREALLOC feature.
258 (process_block, process_bad_block): The blockcnt variable
259 is a type of blkcnt_t, for conversion to the new
260 block_iterate2.
261
262 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
263 a problem for directory inodes. (Since it is also
264 i_size_high now.)
265
266 * message.c (expand_inode_expression): Print a 64-bits of the
267 inode size for non-directory inodes. (Directory inodes
268 can only use a 32-bit directory acl size, since
269 i_size_high is shared with i_dir_acl.) Add sanity check
270 so that trying to print out the directory acl on a
271 non-directory inode will print zero.
272 (expand_percent_expression): %B and %N, which print
273 pctx->blkcount and pctx->num, can now be 64 bit
274 variables. Print them using the "%lld" format if
275 EXT2_NO_64_TYPE is not defined.
276
277 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
278
279 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
280 field.
281
Theodore Ts'ob6f79831998-03-09 13:10:37 +0000282Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
283
284 * pass3.c (fix_dotdot_proc):
285 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
286 * message.c (expand_dirent_expression): Mask off the high eight
287 bits of the directory entry's name_len field, so that it
288 can be used for other purposes.
289
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +0000290Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
291
292 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
293 include EXT2_FLAG_RESTART anymore, we need to adjust this
294 routine so that it *does* return in the case of it seeing
295 EXT2_FLAG_RESTART.
296
297 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
298 done callback function, which may set context abort
299 flags. So we need to test the context abort flags after
300 we call ext2_get_next_inode().
301 (process_inodes): If we abort due out of process_inodes,
302 do a clean exit by breaking out of the for loop instead of
303 just returning.
304
305 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
306 considered a SIGNAL mask (i.e., requiring an immediate
307 abort of processing to restart). FLAG_RESTART just means
308 that we want to restart once pass 1 is complete.
309
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +0000310Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
311
312 * Change the progress function to return an integer; if returns 1,
313 then the progress function is expected to have set the
314 e2fsck context flag signalling a user abort, and the
315 caller should also initiate a user abort.
316
Theodore Ts'o63c49691998-02-20 05:24:59 +0000317Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
318
319 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
320 end_problem_latch() unless there was actually a problem
321 latched. Simplifies semantics of the latch processing.
322
Theodore Ts'o43139321998-02-16 22:34:46 +0000323Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
324
325 * e2fsck.h: Add new field, priv_data to the e2fsck context
326 structure. It should be used by callers of the e2fsck
327 functions only, and not by anything in e2fsck itself.
328
329Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
330
331 * super.c: Instead of call ext2fs_get_device_size(), define and call
332 e2fsck_get_device_size(). (This function may be stubbed
333 out in special versions of e2fsck.)
334
335 * pass3.c, pass4.c: Remove extra calls to the progress function
336 that weren't needed.
337
338 * mke2fs.8.in: Update man page to note that the format of the bad
339 block file is the same as the one generated by badblocks.
340
Theodore Ts'o54be2cc1998-02-01 12:58:48 +0000341Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
342
343 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
344
345 * e2fsck.h: Include <time.h> since it is needed
346
347 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
348 processing.
349
Theodore Ts'o24dd4021998-02-01 00:16:40 +0000350Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
351
352 * unix.c (main): In the case where the filesystem revision is too
353 high, print the message about the superblock possibly
354 being corrupt.
355
356 * e2fsck.8.in: Add expanded comments about how the -b option
357 works.
358
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +0000359Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
360
361 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
362 the ext2-specific header files are in a flat directory.
363
364 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
365 super.c, swapfs.c, unix.c: Explicitly cast all assignments
366 from void * to be compatible with C++.
367
368Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
369
370 * unix.c (sync_disk): Remove sync_disk and calls to that function,
371 since ext2fs_close() now takes care of this.
372
373Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
374
375 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
376 ehandler.c, unix.c: Change use of private to be priv_data,
377 to avoid C++ reserved name clash.
378
Theodore Ts'o5be8dc21997-12-01 18:24:10 +0000379Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
380
381 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
382 of e2fsck_get_num_dirs, which has been removed.
383
384Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
385
386 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
387 to compile and install flushb.
388
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +0000389Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
390
391 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
392 to make sure the extra i_blocks in a device are cleared if
393 the immutable flag is set.
394
395 * util.c (print_resource_track): Fix typo which caused the
396 time/resource tracking to print "Pass 1 :" instead of
397 "Pass 1: ".
398
Theodore Ts'ob8647fa1997-11-20 21:52:43 +0000399Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
400
401 * pass3.c (expand_directory): Fix bug which could cause core dump
402 when expanding the directory, and the bitmaps hadn't yet
403 been read in. Also, only use ext2fs_write_dir_block when
404 writing a directory block, not when writing out a fresh
405 indirect block.
406
Theodore Ts'o8039c481997-11-19 21:39:13 +0000407Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
408
409 * pass1.c (process_bad_block): Fix bug where first_block wasn't
410 getting incremented, which caused user to get a
411 "Programming error?" warning if there was a bad block in a
412 non-primary superblock/group_descriptor. Also fixed
413 another bug so that ext2fs_bg_has_super() is consulted, to
414 avoid problems when using a filesystem with the
415 sparse_groups option set and there are bad blocks at the
416 beginning of a group which doesn't have a superblock.
417
Theodore Ts'of8188ff1997-11-14 05:23:04 +0000418Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
419
420 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
421 progress indicator function.
422
423 * pass1.c (scan_callback): Add call to the progress feedback
424 function (if it exists).
425
426Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
427
428 * super.c (check_super_block): Skip the device size check if the
429 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
430
431 * iscan.c (main): Don't use fatal_error() anymore.
432
433 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
434 calling fatal_error(0).
435
436 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
437 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
438
439 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
440
441 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
442
443 * problemP.h: New file which separates out the private fix_problem
444 data structures.
445
446 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
447 swapfs.c util.c: allocate_memory() now takes a e2fsck
448 context as its first argument, and rename it to be
449 e2fsck_allocate_memory().
450
Theodore Ts'o08b21301997-11-03 19:42:40 +0000451Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
452
Theodore Ts'o68227541997-11-04 04:25:22 +0000453 * unix.c (main): Add a special case check for the error code EROFS
454 and display an appropriate error message for this case.
455
Theodore Ts'o08b21301997-11-03 19:42:40 +0000456 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
457 to take the e2fsck context as their first argument.
458 Change dir_info.c routines to take an e2fsck_context,
459 renamed them to start with e2fsck_ to avoid namespace
460 issues, and changed them to store the directory
461 information inside the e2fsck context.
462 Added e2fsck_run() which calls all of the e2fsck passes in
463 the correct order, and which handles the return of abort
464 codes. Added abort processing, both via setjmp/longjmp
465 and via flags in the e2fsck context. Use a flag in the
466 e2fsck context instead of the restart_e2fsck global
467 variable. Change uses of free and malloc to
468 ext2fs_free_mem and ext2fs_get_mem.
469
Theodore Ts'o291c9041997-10-31 06:17:08 +0000470Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
471
472 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
473 consistency.
474
Theodore Ts'oc555aeb1997-10-25 04:16:53 +0000475Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
476
477 * pass3.c (get_lost_and_found): Check error return of
478 EXT2_FILE_NOT_FOUND instead of ENOTDIR
479
480 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
481 instead of ENOTDIR
482
Theodore Ts'o622f5f21997-10-24 04:18:21 +0000483Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
484
Theodore Ts'o519149f1997-10-25 03:49:49 +0000485 * unix.c (PRS): Make the variable which getopt returns into be
486 an int, so that it won't lose on platforms where char is
487 unsigned.
488
Theodore Ts'o622f5f21997-10-24 04:18:21 +0000489 * pass1b.c (clone_file): Fix bug in error reporting in the case
490 where cs.errcode is non-zero.
491
Theodore Ts'ob2da22d1997-10-20 01:16:35 +0000492Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
493
Theodore Ts'o8bf191e1997-10-20 01:38:32 +0000494 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
495 RESOURCE_TRACK around code which uses init_resource_track
496 and print_resource_track. (Not all systems have timeval)
497
Theodore Ts'ob2da22d1997-10-20 01:16:35 +0000498 * super.c: Remove excess #includes which are not necessary.
499
500 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
501
Theodore Ts'o1b6bf171997-10-03 17:48:10 +0000502Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
503
504 * pass*.c, super.c: Massive changes to avoid using printf and
505 com_err routines. All diagnostic messages are now routed
506 through the fix_problem interface.
507
508Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
509
510 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
511 entries.
512
513 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
514 PR_2_DUP_DOT_DOT.
515
516Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
517
518 * problem.c: Added new problem codes for some of the
519 superblock corruption checks, and for the pass header
520 messages. ("Pass 1: xxxxx")
521
522 * util.c (print_resource_track): Now takes a description
523 argument.
524
525Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
526
527 * super.c, unix.c, e2fsck.c: New files to separate out the
528 operating-specific operations out from e2fsck.c.
529 e2fsck.c now contains the global e2fsck context management
530 routines, and super.c contains the "pass 0" initial
531 validation of the superblock and global block group
532 descriptors.
533
534 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
535 (nearly) all global variables and moved them to the e2fsck
536 context structure.
537
538 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
539 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
540 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
541
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +0000542Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
543
544 * message.c: Add compression for the word "Illegal"
545
546 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
547 PR_2_BAD_BLOCK_DEV
548
549Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
550
551 * pass1.c (pass1, check_device_inode), pass2.c
552 (process_bad_inode): Use a more stringent test for a valid
553 device.
554
Theodore Ts'oa47b66e1997-08-10 23:02:21 +0000555Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
556
557 * e2fsck.c (check_mount): Add stronger warning message about the
558 perils of running e2fsck on a mounted filesystem.
559
Theodore Ts'o024996c1997-06-17 05:38:35 +0000560Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
561
562 * Release of E2fsprogs 1.11
563
Theodore Ts'oda2e97f1997-06-12 04:28:07 +0000564Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
565
566 * pass1.c (mark_table_blocks): Mark the superblock and group
567 descriptor blocks first, so that any conflicts between
568 these and the bitmap or inode table blocks is noticed.
569
570 * problem.c: Fix message printed out when a block or inode bitmap
571 conflicts with other fs data, has the correct group number
572 in it.
573
Theodore Ts'o7ac02a51997-06-11 18:32:35 +0000574Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
575
576 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
577
Theodore Ts'of635d7f1997-05-09 02:50:16 +0000578Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
579
Theodore Ts'o583ccdc1997-05-09 03:06:31 +0000580 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
581 Hawes (whawes@star.net).
582
Theodore Ts'of635d7f1997-05-09 02:50:16 +0000583 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
584 bad blocks command so that all of the filesystem gets
585 tested in the case where the blocksize 2048 or 4096.
586
Theodore Ts'oa29f4d31997-04-29 21:26:48 +0000587Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
588
589 * Release of E2fsprogs version 1.10
590
591Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
592
593 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
594 where ext2fs_get_next_inode returns the
595 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
596
597Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
598
599 * Release of E2fsprogs version 1.09
600
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +0000601Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
602
603 * Release of E2fsprogs version 1.08
604
Theodore Ts'o521e3681997-04-29 17:48:10 +0000605Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
606
607 * pass1b.c (clone_file_block): If we clone a directory, we need to
608 update the dblist entry so that we check (and correct) the
609 right directory block.
610
611Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
612
613 * pass1.c (process_block): Don't clear blocks references to
614 filesystem metadata; let pass 1B handle this case.
615
616 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
617
618 * pass1b.c (pass1d): Deal with a block which is shared with
619 filesystem metadata.
620
621 * e2fsck.h: Make block_illegal_map be a global variable
622
623Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
624
625 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
626 feature.
627 (get_backup_sb): New function which attempts to obtain the
628 correct backup superblock (if possible).
629
630Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
631
632 * e2fsck.c (main): Check the version of the library, and warn if
633 the library is out of date; this happens generally due to
634 users who manually install e2fsprogs.
635
636 * pass1.c (pass1_get_blocks): If the passed in inode number for
637 get_blocks isn't what we're expecting pass back
638 EXT2_ET_CALLBACK_NOT_HANDLED.
639
Theodore Ts'o21c84b71997-04-29 16:15:03 +0000640Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
641
642 * Release of E2fsprogs version 1.07
643
644Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
645
646 * icount.c: New file which implements an inode count abstraction.
647 This significantly reduces amount of memory needed to
648 check really large filesystems.
649
650 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
651 abstraction.
652
653Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
654
655 * dirinfo.c (dir_info_iter): New function which allows iteration
656 over the directories in the dir_info map.
657
658 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
659 over all directories in the dir_info structure, instead of
660 iterating all inodes looking for directories, and then
661 looking up the directories using get_dir_info().
662
663Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
664
665 * pass1.c (pass1, process_block):
666 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
667 manual code to manage the directory block list information.
668
669 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
670 (deallocate_inode): Call the ext2 library routine
671 ext2_inode_has_valid_blocks() instead of
672 inode_has_valid_blocks().
673
674 * swapfs.c (swap_inodes): Add check so that we don't try to call
675 swap_inode_blocks unless the inode has valid blocks.
676 (Otherwise a long fast symlink might cause
677 swap_inode_blocks to erroneously get called.)
678
679Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
680
681 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
682 PR_2_DOT_DOT_NULL_TERM.
683
684 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
685 .. entries are null-terminated, since the 2.0 kernel
686 requires this (for no good reason).
687
688Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
689
690 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
691 that we can recover from missing inode tables.
692
693 * dirinfo.c (get_dir_info): If there are no directories in the
694 dir_info abstraction, don't core dump (because dir_info is
695 NULL).
696
697 * e2fsck.c (main): Don't try using the backup superblocks if there
698 aren't any.
699 (check_super_block): If there are illegal inode table or
700 bitmaps, set the filesystem as being in error.
701
702Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
703
704 * pass2.c (check_dir_block): Added check to make sure that rec_len
705 is a a multiple of 4 (so that the directory entries are
706 4-byte aligned).
707
708Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
709
710 * Makefile.in (uninstall): Uninstall all programs in the PROGS
711 line.
712 (PROGS): Don't build and install the extend program by
713 default.
714
715
716Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
717
718 * pass1.c (process_inodes): Make sure the stashed_ino variable is
719 saved and restored as well.
720 (pass1): For fast sym links, skip the check_blocks
721 processing step altogether.
722
723Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
724
725 * problem.c, message.c: New files, to completely refurbish how
726 filesystem problems are reported to the user. The
727 diagnostic messages are now encoded out in an easily
728 customizable, extensible format. The messages printed out
729 in preen mode are all on one line, and contain the device
730 name.
731
732Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
733
734 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
735 deleted files.
736
737 * pass1.c (pass1): Ignore missing inode table errors during the
738 scan, and just skip past those inodes.
739
740 * pass3.c (check_root): Remove root_ino argument, and assume that
741 the root inode must be EXT2_ROOT_INO. Move responsibility
742 of setting the parent of the root inode in the directory
743 inode structure to pass2().
744
745 * pass2.c (check_dir_block): Don't allow links to the root
746 directory.
747
748 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
749 since the inode is no longer used.
750
751Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
752
753 * e2fsck.c (main): If the superblock magic number is wrong, or the
754 block group fails a sanity check, then automatically
755 restart trying to use the backup superblocks.
756
757 * pass1.c (mark_table_blocks): Make the inode tables ahead of
758 everything else; in the case where a bitmap block overlays
759 the inode table, the inode table should take precedence.
760
761 * pass2.c (maybe_clear_entry): Make the deleted/unused error
762 message fit on one line, since the error can happen during
763 a preen pass. (We eventually need to revamp the whole
764 e2fsck error reporting and prompting system, but that's a
765 job for another day.)
766
767Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
768
769 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
770 for the benefit of the inode scan functions.
771
772 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
773 indicating that an inode is in a bad block, mark that
774 inode as being used, as well as in the inode "bb" map.
775
776 * pass2.c (maybe_clear_entry): New function which generalizes the
777 error cases when a directory entry needs to be cleared.
778 (check_dir_block): If an inode is in the "bb" map, offer
779 to clear the directory entry, since the inode is in a bad
780 block.
781
782 * pass4.c (pass4): If an inode is marked as used, but is is marked
783 in the "bb" map, don't process it as a disconnected inode.
784
785Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
786
787 * Release of E2fsprogs version 1.06
788
Theodore Ts'o5c576471997-04-29 15:29:49 +0000789Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
790
791 * e2fsck.c (main): Print out the version number of the shared
792 library when using the -V option.
793
794 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
795 consistency's sake.
796
797 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
798 out the backup superblocks when we know we have a valid
799 filesystem.
800
801Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
802
803 * util.c (preenhalt): Make it explicit on preenhalt that running
804 e2fsck manually means without the -a or -p flag.
805
806Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
807
808 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
809 (Linux/FT actually sets the mode bits, so we have to
810 handle it specially.)
811
812 * e2fsck.c (check_if_skip): Print a message if the filesystem is
813 just dirty, so that the user knows that it's about to be
814 checked (since this will take a while).
815
816Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
817
818 * pass4.c: If a disconnected inode is zero-length, prompt to
819 delete it instead of connecting it to lost+found.
820
821Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
822
823 * Release of E2fsprogs version 1.05
824
Theodore Ts'o1e3472c1997-04-29 14:53:37 +0000825Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
826
827 * pass4.c (pass4): If the user refuses to connect an unattached
828 inode to lost+found, don't try to set i_links_count. This
829 is bad, since if the user says yes, the inode will be
830 marked as unused, which is not necessarily the right
831 thing, especially since the rest of the cleanup doesn't
832 happen here.
833
834 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
835 dellocating an inode. (Not strictly necessary, but...)
836
837 * pass4.c (pass4): Add "bonehead" explanation to the "programming
838 error" message.
839
840Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
841
842 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
843 byte-swap the filesystem so that it is normalized. -S
844 will byte-swap the filesystem regardless of its current
845 byte-order.
846
847 * swapfs.c: New file, which will byte-swap a filesystem.
848
849Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
850
851 * pass1.c (pass1): Change handling on files with non-zero dtime
852 and non-zero i_link_count; before we treated them as
853 deleted file per botched ext2 0.3c kernel behavior. We
854 now clear dtime instead.
855
856Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
857
858 * e2fsck.c (main): If e2fsck sets the clean bit, even if
859 nothing else is changed, make sure FSCK_NONDESTRUCT is
860 set (since after all having the filesystem set to
861 invalid is an error. :-)
862
863Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
864
865 * pass1.c (process_block): Make sure that meta data doesn't get
866 accidentally set in the dir_blocks array (which could
867 happen in some error condtions).
868
869 * pass1.c (pass1):
870 * pass2.c (process_bad_inode): Check for fragments in a
871 OS-independent fashion.
872
873Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
874
875 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
876 cleanup for the filesystem.
877
878Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
879
880 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
881
Theodore Ts'o62c06f71997-04-29 14:34:47 +0000882Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
883
884 * Release of E2fsprogs version 1.04
885
886Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
887
888 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
889 try "e2fsck -b 8193" before allowing e2fsck to relocate
890 inode table blocks.
891
892 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
893 depending on the option to configure. Added targets for
894 e2fsck.static and e2fsck.shared for people who want to
895 build a static or shared variant manually.
896
Theodore Ts'o7f88b041997-04-26 14:48:50 +0000897Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
898
899 * Release of E2fsprogs version 1.03
900
901Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
902
903 * e2fsck.c (show_stats): Don't use floating point to display
904 percentage of non-contiguous files, as different libc
905 handle result truncation differently, and this causes the
906 test suite to bomb out depending on which libc you are
907 using.
908
909 * util.c (allocate_memory): Fix error message to omit extraneous
910 %%s.
911
912Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
913
914 * pass4.c (pass4):
915 * pass2.c (check_dir_block):
916 * pass1.c (pass1): Add support for dynamic first inode revision.
917
918Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
919
920 * pass3.c (check_root): Fix spelling typo
921
922Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
923
924 * e2fsck.c (check_super_block): If the superblock fails certain
925 internal consistency checks, exit with a fatal error after
926 printing the "superblock is corrupt message".
927
Theodore Ts'o74becf31997-04-26 14:37:06 +0000928Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
929
930 * Release of E2fsprogs version 1.02
931
932Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
933
934 * pass1.c (process_block): Check to see if a file is "fragmented".
935 i.e., non-contiguous. Note that any file which is larger
936 than the block group is guaranteed to be non-contiguous.
937 We may want to use a different hueristic for deciding
938 whether or not a file is "fragmented".
939
940 * e2fsck.c (show_stats): Print statistics of how many
941 non-contiguous files are on the system.
942
943Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
944
945 * badblocks.c (read_bad_blocks_file, test_disk): Fold
946 functionality of test_disk() (which runs badblocks) into
947 read_bad_blocks_file(); test_disk() now calls
948 read_bad_blocks_file() with a NULL bad_blocks_file
949 argument.
950
951Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
952
953 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
954 #if defined(linux). The latter won't work if we're
955 compiling -ansi.
956
Theodore Ts'o297f47a1997-04-26 14:25:20 +0000957Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
958
959 * e2fsck.c (check_mount): For Linux systems, the check to see if
960 the root is mounted read-only has to be done for all
961 filesystems, not just for the root filesystem, due to the
962 way that some /etc/rc scripts are set up.
963
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000964Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
965
966 * Makefile.in (install): Strip programs when they are installed.
967 (e2fsck): Build e2fsck statically.
968
969Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
970
971 * util.c (preenhalt): Preenhalt now takes an argument, which is an
972 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
973 flag in the superblock in cases where preenhalt is called.
974 All calls to preenhalt() were changed to either
975 preenhalt(fs) or preenhalt(NULL) in a few cases where the
976 fs pointer was not available. (Most notable, for block
977 read/write errors.)
978
979Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
980
981 * ehandler.c:
982 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
983
984Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
985
986 * e2fsck.c (show_stats): Show statistics about how many inodes
987 have indirect, doubly indirect, and triply indirect
988 blocks. Allow up to 8 digits for statistics, instead of
989 merely 6, so things look pretty for large filesystems.
990
991 * pass1.c (pass1): Keep statistics about indirect, doubly
992 indirect, and triply indirect blocks.
993
994 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
995 pass 1.
996
997Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
998
999 * util.c, ehandler.c: Move #include of <sys/resource.h> after
1000 #include of "e2fsck.h", since sys/resource.h may depend on
1001 sys/time.h, which is #included in e2fsck.h.
1002
1003Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
1004
1005 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
1006 function to determine if the device is mounted.
1007
1008 * e2fsck.c (main): Add better error messages if ext2fs_open()
1009 fails.
1010
1011Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
1012
1013 * pass1.c (check_blocks): If we're clearing a directory, clear
1014 pb.is_dir so we don't do the following check of making
1015 sure the directory size matches; this is pointless, since
1016 we've already cleared the inode.
1017
1018Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1019
1020 * pass1.c (bad_primary_block): New function, called by
1021 process_bad_block, which explains the facts of life to the
1022 user when a block in the primary superblock or primary
1023 group descriptors is bad.
1024
1025 * pass2.c (check_dot): Handle the case where the first directory
1026 entry is used, but not ".".
1027
1028 * pass2.c (check_dotdot): Handle the case where the second directory
1029 entry is used, but is not "..".
1030
1031Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1032
1033 * e2fsck.c (check_super_block): Get the size of the physical
1034 device and if it is smaller than the reported size of the
1035 filesystem, report an error.
1036
1037Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
1038
1039 * e2fsck.c (check_if_skip): Print the number of allocated files and
1040 blocks on clean filesystems.
1041
1042Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
1043
1044 * e2fsck.8: Updated date and version number.
1045
1046Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
1047
1048 * pass1.c (check_blocks): Check that directory size matches *exactly*
1049 the count of allocated blocks.
1050
1051Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
1052
1053 * pass1b.c (pass1d): Free the shared[] array when we're done with
1054 it to avoid a memory leak.
1055
1056 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
1057 block_dup_map.
1058
1059 * pass2.c (process_bad_inode): When clearing the inode, make sure
1060 the pathname is freed, to prevent a memory leak.
1061
1062 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
1063 when we're finished with them.
1064 (check_block_bitmaps): Free free_array when we're finished
1065 with them.
1066
1067 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
1068 linking the executable.
1069
1070 * pass2.c (process_bad_inode): Even on OS's that don't support the
1071 fragment fields, make sure the Linux equivalent fields are
1072 set to zero. If an OS wants to reuse these fields, which
1073 is probably a bad idea (although we may get desperate in
1074 the future) this code will have to be changed.
1075
1076 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
1077 on the inode field, and then blockcnt field. This is just
1078 to keep the ordering of dir_blocks the same on all
1079 platforms when there are more than on missing directory
1080 blocks, which are indicated directories with holes, which
1081 are indicated with the block number being set to zero.
1082
1083Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1084
1085 * pass1.c (check_blocks, process_block): check_blocks() modified
1086 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
1087 the inode is a directory. process_block() now checks to
1088 see if a directory has a "hole", or missing block. If so,
1089 this fact is recorded in the directory block list so that
1090 the problem can be resolved in pass #2.
1091
1092 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
1093 allocate new blocks for directories with "holes". Called
1094 out of check_dir_block if a block in the directory block
1095 list is zero.
1096
1097 * pass3.c (get_lost_and_found): Move location of free(block) to
1098 prevent possible memory leak.
1099
1100Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1101
1102 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
1103 instead of alloca() --- alloca is not portable! Check to
1104 make sure the filename is not longer than EXT2_NAME_LEN,
1105 and offer to fix it by truncating it, since it should
1106 never happen.
1107
1108 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
1109 not portable!! In any case putenv() in some systems must
1110 take a static character array or malloc()'ed memory;
1111 passing memory allocated using alloca() to putenv() is not
1112 advisable.
1113
1114 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
1115 alloca() --- alloca() is not portable!!!
1116
1117Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
1118
1119 * pass1b.c (pass1c):
1120 * pass3.c (check_root, get_lost_and_found):
1121 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
1122 to read/write the directory block.
1123
1124Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
1125
1126 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
1127 make sure VMIN and VTIME are set correct.
1128
1129Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
1130
1131 * pass1.c (mark_block_used): Change to be an inline function.
1132 Assume that the block validity checks are already done,
1133 and use the fast variant of the bitmap functions.
1134
1135Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
1136
1137 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
1138 bounds of the bitmaps in advance, and then use the fast
1139 variant of e2fs_test_{block,inode}_bitmap.
1140
1141 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
1142 the bounds checking has already been done earlier.
1143
1144Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
1145
1146 * pass1.c (pass1): Allocate and free the block_illegal_map, which
1147 is used for shortcut processing in process_block.
1148 (mark_table_blocks): Initialize block_illegal_map with the
1149 filesystem blocks.
1150 (describe_illegal_block): New helper function that
1151 describes why a block is illegal.
1152 (process_block): Use block_illegal_map as a shortcut
1153 to determine whether a block is bad. Use
1154 describe_illegal_block to print out why the block is illegal.
1155
1156Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
1157
1158 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
1159
1160 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
1161 <mntent.h> if they don't exist. (Mostly so that "make
1162 depend" works.)
1163
1164 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
1165 it exists).
1166
1167 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
1168 exist.
1169
1170Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1171
1172 * pass2.c (process_bad_inode, check_for_zero_long,
1173 check_for_zero_char): Change long to u32, and char to u8.
1174
1175Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1176
1177 * util.c (inode_has_valid_blocks):
1178 * pass2.c (process_bad_inode):
1179 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
1180 LINUX_S_IS* instead of S_IS*.
1181
1182 * e2fsck.h: Don't #include <sys/stat.h>
1183
1184 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
1185 this program is pretty much useless if BLKFLSBUF isn't
1186 supported.)
1187
1188 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
1189 used.
1190
1191Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
1192
1193 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
1194 to allocate space for file names instead of using fixed size buffers.
1195 (process_bad_inode): Only check inode frag fields if
1196 HAVE_EXT2_FRAGS is defined (by configure).
1197 * pass1.c (pass1): Only check the inode frag fields if
1198 HAVE_EXT2_FRAGS is defined (by configure).
1199
1200 * e2fsck.c (check_mount): Only check for a mounted filesystem if
1201 HAVE_MNTENT_H is defined (by configure).
1202 (PRS): Use alloca to allocate the new path string, instead of
1203 having a fixed size buffer (which was the wrong size anyway).
1204 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
1205 is defined.
1206
1207 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
1208 defined (by configure).
1209
1210 * Makefile.in: Rewritten to conform to GNU coding standards and
1211 support separate compilation directories.
1212
1213Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
1214
1215 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
1216
Theodore Ts'of3db3561997-04-26 13:34:30 +00001217Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
1218
1219 * pass1.c (unwind_pass1): Clear the file type statistics counter
1220 when pass 1 needs to be restarted from scratch.
1221
1222 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
1223 being reallocated to blocks in the next block group,
1224 instead of the current block grup.
1225
1226 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
1227 inode.i_links_count is set.
1228
1229Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
1230
1231 * pass1.c (process_block): Add checks for if the block is
1232 trepassing on a superblock or group descriptor table.
1233
1234Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
1235
1236 * main.c (corrupt_msg): Extend the message which is printed out
1237 when the superblock is corrupt, to include the suggestion
1238 of using the -b option to specify an alternate superblock.
1239
1240Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
1241
1242 * badblocks.c (read_bad_blocks_file): If we are adding or
1243 replacing bad blocks in the bad blocks inode, sanity check
1244 the bad block inode first, and clear out any illegal blocks.
1245
1246 * pass2.c (check_name): Don't bomb out if the attempt to get the
1247 pathname of the containing directory returns an error; the
1248 directory may be too badly damaged to expect that
1249 ext2fs_get_pathname will always succeed. Use "???" if the
1250 pathname can't be obtained (it's only for a printf to the
1251 user anyway).
1252
1253 The name of the containing directory and the bad filename
1254 were incorrectly interchanged in the user message. Fixed.
1255
1256 * pass2.c (check_name, check_dir_block): Use a common static
1257 string for the unknown pathname.
1258
1259Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
1260
1261 * Fixed lots of printf formats to make sure that block and inode
1262 numbers are printed as unsigned integers.
1263
1264Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
1265
1266 * pass5.c (check_block_end): Fix calculation of how the last block
1267 in the block bitmap should be calculated.
1268
1269Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
1270
1271 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
1272 be an ext2fs_inode_bitmap, and free it properly.
1273
1274 * e2fsck.h
1275 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
1276 level to the superblock.
1277
1278Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
1279
1280 * e2fsck.c (usage): Fixed bogus usage message.
1281
1282Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
1283
1284 * pass1.c (process_bad_block): Fixed bug so that blocks in the
1285 backup superblocks and group descriptors are handled gracefully.
1286