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