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