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