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