blob: a3e2d70705ffb2fe69b53befcd3fec942a66316a [file] [log] [blame]
Theodore Ts'o17390c02000-07-07 04:13:21 +000012000-07-06 Theodore Ts'o <tytso@valinux.com>
2
3 * unix.c (check_if_skip): Modify algorithm for checking
4 s_max_mnt_count to match with the kernel. (If
5 s_max_mnt_count is negative, ignore the mnt_count check.)
6
7 * unix.c (e2fsck_update_progress): Adjust the width of the
8 progress bar dynamically, based on the filesystem name
9 that we need to display.
10
11 * unix.c (main): If the ext3 needs_recovery flag is set, call
12 e2fsck_run_ext3_journal() and then restart the e2fsck run.
13
14 * journal.c (e2fsck_run_ext3_journal): New file which contains
15 logic to recover the ext3 journal. This version relies on
16 the kernel being able to mount the filesystem in order to
17 run the journal.
18
Theodore Ts'o92269042000-07-05 18:25:59 +0000192000-07-05 Theodore Ts'o <tytso@valinux.com>
20
21 * unix.c (e2fsck_update_progress): Only save and check the last
22 percentage after multiplying it by 10, nor 1000, since we
23 only need to save values to a tenth of a percent (and the
24 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +000025 Also, re-arrange the logic so that we do the time
26 check only after doing the percentage check, and we
27 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +000028
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +0000292000-07-04 Theodore Ts'o <tytso@valinux.com>
30
31 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
32 field is set; if so, clear it, so that ext3 mounting code
33 won't get confused by the fact that we've cleared out the
34 orphaned inodes.
35
Theodore Ts'obbd47d72000-06-10 19:21:33 +0000362000-06-10 Theodore Ts'o <tytso@valinux.com>
37
38 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
39 checking for a "should never happen case".
40
41 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
42 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
43
Theodore Ts'od647a1e2000-05-27 14:40:09 +0000442000-05-27 Theodore Ts'o <tytso@valinux.com>
45
46 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
47 (cw@foof.org) which checks to see if special devices have
48 a non-zero size, and deals with it.
49
50 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
51
Theodore Ts'o1d279212000-05-19 02:38:14 +0000522000-05-18 Theodore Ts'o <tytso@valinux.com>
53
54 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
55 well.
56
Theodore Ts'o4ea0a112000-05-08 13:33:17 +0000572000-05-08 Theodore Ts'o <tytso@valinux.com>
58
59 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
60 code.
61
62 * super.c (check_super_block): If the OS type in the superblock is
63 the Hurd, check to see if the filetype feature is set, and
64 offer to clear it if so. This needs to be done since the
65 Hurd doesn't properly support the filetype feature.
66 (And since the hurd allows the transmogrification of files
67 to special files and vice versa --- for no good reason
68 that I can understand --- it can't support the filetype
69 feature for the forseeable future, either.)
70
Theodore Ts'o373b8332000-04-03 16:22:35 +0000712000-04-03 Theodore Ts'o <tytso@valinux.com>
72
73 * unix.c: For platforms that don't define optarg.h, manually
74 define optarg and optind.
75
Theodore Ts'o01fbc702000-04-03 13:57:21 +0000762000-03-20 Theodore Ts'o <tytso@valinux.com>
77
78 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
79 Check for the append-only as well as the immutable flag.
80
81 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
82 append-only flag. Fix comment for compression flag.
83
Theodore Ts'o06012322000-02-12 20:12:43 +0000842000-02-12 <tytso@snap.thunk.org>
85
86 * unix.c (e2fsck_update_progress): Limit the number of updates to
87 the progress bars to 8 times a second. This allows a 9600
88 baud console link to keep up.
89
Theodore Ts'o19178752000-02-11 15:55:07 +0000902000-02-11 <tytso@snap.thunk.org>
91
92 * unix.c (main): If compression is enabled on the filesystem,
93 print a warning message (for now).
94
95 * message.c: Add new compression shortcut: @c == compress
96
97 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
98
99 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
100 set, check to see if the filesystem supports compression.
101 If it does pass this information down to process_block()
102 so it can treat the compressed block flag words
103 correctly. If not, offer to clear the flag, since it
104 shouldn't be set.
105 (process_block): If an inode has the compressed inode flag
106 set, allow EXT2FS_COMPRESSED_BLKADDR.
107
108 * pass1b.c (process_pass1b_block, delete_file_block,
109 clone_file_block):
110 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
111 see if the block can be skipped.
112
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00001132000-02-08 <tytso@snap.thunk.org>
114
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +0000115 * util.c: Make resource tracking message more concise.
116
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +0000117 * e2fsck.h:
118 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
119 ctx->block_illegal_map, since it's not needed by pass1,
120 and pass1b has been modified to calculate it manually if
121 needed. This reduces the memory footprint needed by e2fsck.
122
123 * pass1b.c (check_if_fs_block): New static function which returns
124 whether or not a block overlaps with filesystem metadata.
125 This replaces consulting the block_illegal_map bitmap.
126
Theodore Ts'o28ffafb2000-02-08 19:14:02 +0000127 * Makefile.in: Call sync after finishing building all in this
128 directory.
129
130 * unix.c (PRS): sync the filesystem before trying to use
131 BLKFLSBUF, to minimize the chance of causing dirty blocks
132 to get dropped.
133
134 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
135 a Linux/i386 system.
136
137 * pass3.c (check_directory): Only do the loop detection algorithm
138 if we've searched over 2048 parent directories and haven't
139 found the end yet. This means that in the common case, we
140 don't allocate or clear the inode_loop_detection bitmap,
141 which for large systems, merely clearing the bitmap for
142 each directory was turning out to be quite expensive.
143 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
144 identifying this problem.
145
Theodore Ts'o0c4a0722000-02-07 03:11:03 +00001462000-02-06 Theodore Ts'o <tytso@valinux.com>
147
148 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
149 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
150 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
151 unix.c, util.c: Add Internationalization support as
152 suggested by Marco d'Itri <md@linux.it>.
153
Theodore Ts'o80e808f2000-02-02 16:19:59 +00001542000-02-02 Theodore Ts'o <tytso@valinux.com>
155
156 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
157 linux/fs.h
158
Theodore Ts'o894edb22000-01-18 21:27:12 +00001592000-01-18 Theodore Ts'o <tytso@valinux.com>
160
161 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
162 we need a separate DEPLIBUUID that can be used in
163 Makefile's dependency rules.
164
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +00001651999-11-23 <tytso@valinux.com>
166
167 * e2fsck.8.in: Update language about where to find a backup
168 superblock.
169
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00001701999-11-19 <tytso@valinux.com>
171
Theodore Ts'o86a63e91999-11-23 13:52:48 +0000172 * pass1.c (process_inodes): Add shortcut handling; if
173 process_inodes_count is zero, return right away, to avoid
174 calling qsort with a non-positive count.
175
Theodore Ts'oec8d2c31999-11-19 18:52:36 +0000176 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
177 to print Delete as ^?
178
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +0000179 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
180 the source directory.
181
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00001821999-11-10 <tytso@valinux.com>
183
Theodore Ts'ocd086361999-11-10 16:00:39 +0000184 * Release of E2fsprogs 1.18
185
1861999-11-10 <tytso@valinux.com>
187
Theodore Ts'oa846d2f1999-11-10 15:50:24 +0000188 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
189 means the answer is assumed to be no in preen mode. This
190 is now used in the PR_1_SET_IMMUTABLE code, so that in
191 preen mode we ignore these inodes and just print a warning
192 message.
193
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +00001941999-11-09 <tytso@valinux.com>
195
196 * pass1.c (e2fsck_pass1): If the filesystem does not support
197 imagic inodes, if an inode has the imagic flag set, offer
198 to clear the imagic flag. If a valid device/fifo/socket
199 has the immutable flag set, call the new helper function
200 check_immutable() to offerto clear the immutable flag.
201
202 * pass2.c (check_filetype): Use the new ext2_file_type() helper
203 function instead of calculating the file_type information
204 manually.
205
206 * pass3.c (e2fsck_reconnect_file): When adding a link to
207 lost+found, calculate the filetype information so that
208 ext2fs_link() can use the information if applicable.
209 (get_lost_and_found): Create the /lost+found directory
210 with the correct filetype information if applicable.
211
212 * util.c (ext2_file_type), e2fsck.h: New function which returns
213 the directory entry file type information given the
214 inode's mode bits.
215
216 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
217 and PR_1_SET_IMMUTABLE.
218
Theodore Ts'o7142db01999-11-08 18:46:54 +00002191999-11-07 <tytso@valinux.com>
220
221 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
222 to prevent it from getting freed twice.
223
2241999-11-06 <tytso@valinux.com>
225
226 * unix.c (main): Close the filesystem before freeing the context,
227 so that in the event of a free()-related segmentation
228 violation, the filesystem is properly closed and written
229 out.
230
2311999-10-27 <tytso@valinux.com>
232
233 * e2fsck.c (e2fsck_reset_context): When freeing
234 ctx->inode_reg_map, we weren't zero'ing
235 ctx->inode_reg_map, which could cause a segfault later on
236 in the e2fsck run.
237
2381999-10-26 <tytso@valinux.com>
239
240 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
241 matches the standard convention).
242
Theodore Ts'of68aa411999-10-26 14:20:22 +00002431999-10-26 <tytso@valinux.com>
244
Theodore Ts'o28e11941999-10-26 18:17:20 +0000245 * Release of E2fsprogs 1.17
246
2471999-10-26 <tytso@valinux.com>
248
Theodore Ts'of68aa411999-10-26 14:20:22 +0000249 * message.c (safe_print): Make safe_print take an char instead of
250 an unsigned char to fix gcc warnings.
251
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00002521999-10-25 <tytso@valinux.com>
253
Theodore Ts'oe6597041999-10-26 02:30:16 +0000254 * util.c: For NT portability, don't redefine getchar(), since
255 stdio defines that. Instead we introduce a new
256 abstract macro read_a_char() which is #defined to the
257 right function as necessary.
258
Theodore Ts'oc40db6d1999-10-25 21:03:34 +0000259 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
260
261 * pass2.c (check_dir_block): Require that the length of the
262 directory entry be at least 12 bytes. Check to see if the
263 filename is zero-length, and flag that as an error.
264
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00002651999-10-22 <tytso@valinux.com>
266
Theodore Ts'o614fdfd1999-10-23 03:19:51 +0000267 * Release of E2fsprogs 1.16
268
2691999-10-22 <tytso@valinux.com>
270
Theodore Ts'o7847c1d1999-10-22 15:11:42 +0000271 * pass2.c (check_filetype): If the filetype filesystem feature is
272 not set, and a directory entry has a dirent feature, offer
273 to clear it (since 2.0 kernels will do complain will
274 interpret it as a very large name length field).
275
276 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
277
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00002781999-10-21 <tytso@valinux.com>
279
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +0000280 * e2fsck.8.in: Update man page to use a more standard format (bold
281 option flags and italicized variables), as suggested by
282 Andreas Dilger (adilger@enel.ucalgary.ca)
283
Theodore Ts'oaa4115a1999-10-21 19:33:18 +0000284 * pass4.c (e2fsck_pass4): If an inode is set in the
285 inode_imagic_map bitmap, don't check to see if it is
286 disconnected from the inode tree (because it almost
287 certainly will be). Free inode_imagic_map at the end of
288 pass 4.
289
290 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
291 feature is set, check the directory entry's filetype
292 information field, and fix/set it if necessary.
293 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
294 of pass 2.
295
296 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
297 information for inode_reg_map and inode_imagic_map, which
298 indicates which inodes are regular files and AFS inodes,
299 respectively.
300 Since only the master superblock is written during a
301 restart, force that superblock to be used after a restart;
302 otherwise changes to the block group descriptors end up
303 getting ignored.
304
305 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
306 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
307 which supresses the problem message if e2fsck is run with
308 the -n option.
309
310 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
311 new problem codes.
312
313 * message.c (expand_dirent_expression): Add support for %dt which
314 prints the dirent type information.
315
316 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
317 and inode_imagic_map).
318
319 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
320 to the context structure.
321
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +00003221999-09-24 <tytso@valinux.com>
323
324 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
325 e2fsprogs easier to port to non-Unix platforms.
326
3271999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +0000328
329 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
330 internal and external inode counts in sync when we
331 decremented an inode whose link count was already zero.
332 Now we skip incrementing or decrementing both link counts
333 if we would cause an overflow condition.
334 (expand_dir, expand_dir_proc): Change where we update the
335 inode block count and size files so that the block count
336 field is updated correctly when we create an indirect block.
337
Theodore Ts'o78cf0541999-10-20 18:29:18 +00003381999-08-05 <tytso@valinux.com>
339
340 * super.c (check_super_block): Check to see whether the
341 inodes_per_group value in the superblock is insanely too
342 high.
343
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00003441999-08-02 <tytso@valinux.com>
345
346 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
347 the block also shares data with the fs metadata when
348 the count drops to 1, since the block should still be
349 cloned, as fs metadata isn't included in the count.
350
3511999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +0000352
353 * Release of E2fsprogs 1.15
354
Theodore Ts'ob55199e1999-07-19 15:37:46 +00003551999-07-19 <tytso@valinux.com>
356
357 * unix.c (usage): Add minimalist emergency help to the usage
358 message.
359
Theodore Ts'o5596def1999-07-19 15:27:37 +00003601999-07-18 <tytso@valinux.com>
361
362 * unix.c: Add support for calculating a progress bar if the -C0
363 option is given. The function e2fsck_clear_progbar()
364 clears the progress bar and must be called before any
365 message is issued. SIGUSR1 will enable the progress bar,
366 and SIGUSR2 will disable the progress bar. This is used
367 by fsck to handle parallel filesystem checks. Also, set
368 the device_name from the filesystem label if it is
369 available.
370
371 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
372 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
373 structure which contains the last tenth of a percent
374 printed for the user.
375
376 * message.c (print_e2fsck_message): Add call to
377 e2fsck_clear_progbar().
378
379 * pass1.c (e2fsck_pass1):
380 * pass2.c (e2fsck_pass2):
381 * pass3.c (e2fsck_pass3):
382 * pass4.c (e2fsck_pass4):
383 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
384 printing the resource tracking information.
385
386 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
387 an error in the bitmaps, suppress printing the progress
388 bar using the suppression flag for the remainder of the
389 check, in order to clean up the display.
390
Theodore Ts'o74033351999-07-01 03:00:47 +00003911999-06-30 <tytso@valinux.com>
392
393 * unix.c (check_mount): Clean up the abort message displayed when
394 the filesystem is mounted and either stdout or stdin isn't
395 a tty.
396
3971999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +0000398
399 * e2fsck.h:
400 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
401 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
402 pass1_* be private static functions, and create new
403 function e2fsck_use_inode_shortcuts which sets and clears
404 the inode shortcut functions in the fs structure.
405
406 * e2fsck.h:
407 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
408 exported function.
409
410 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
411 if a disconnected inode has any problems before
412 connecting it to /lost+found. Bug and suggested fix by
413 Pavel Machek <pavel@bug.ucw.cz>
414
4151999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +0000416
417 * unix.c (main): Add missing space in the disk write-protected
418 message.
419
Theodore Ts'od4b0ce01999-06-18 01:09:29 +00004201999-05-22 <tytso@rsts-11.mit.edu>
421
422 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
423 code.
424
425 * super.c (check_super_block): Add check to make sure the total
426 number of inodes is sane, since this can be calculated
427 from the number of groups times the number of inodes per
428 group. Offer to correct it if it is incorrect.
429
Theodore Ts'oe79d1b21999-06-18 01:06:59 +00004301999-03-19 <tytso@rsts-11.mit.edu>
431
432 * pass5.c (check_block_end): Fix fencepost condition where when
433 clearing the block padding we were missing the last position
434 in the bitmap.
435
Theodore Ts'o75d83be1999-05-18 03:16:36 +00004361999-05-17 <tytso@rsts-11.mit.edu>
437
438 * unix.c (reserve_stdio_fds): Add safety check in case
439 reserve_stdio_fds couldn't open /dev/null.
440
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00004411999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
442
443 * util.c (print_resource_track): Use mallinfo if present to get
444 more accurate malloc statistics.
445
446 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +0000447 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +0000448
449 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
450
4511999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
452
453 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
454 that the block group number is printed. Add new prompt,
455 PROMPT_UNLINK.
456
4571999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
458
459 * Release of E2fsprogs 1.14
460
Theodore Ts'o9e51eca1999-01-09 16:32:31 +00004611999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
462
463 * message.c (safe_print): New function which prints strings,
464 converting non-printable characters using the '^' and
465 M-notation. This function is now used to print directory
466 name entries and pathnames.
467
Theodore Ts'o73f17cf1999-01-04 07:35:45 +0000468Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
469
470 * unix.c (main): Reset the context before calling ext2fs_close(),
471 to avoid referencing already freed memory.
472
Theodore Ts'o556ad131998-12-19 08:10:58 +00004731998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
474
475 * Release of E2fsprogs 1.13
476
Theodore Ts'o5a679c81998-12-03 16:40:38 +00004771998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
478
479 * Makefile.in: Updated dependencies.
480
4811998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
482
483 * pass3.c (get_lost_and_found): If the filesystem is not opened
484 read-only, then force /lost+found to be created if it is
485 not present.
486
487 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
488 operation.
489
Theodore Ts'o1dde43f1998-11-14 04:18:28 +00004901998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
491
492 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
493 since e2fsck_free_context may reference data in ctx->fs.
494
495 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
496 before checking ctx->fs->dblist.
497
4981998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
499
500 * pass1.c (e2fsck_pass1): Use the device check subroutine on
501 FIFO's and Socket's, so that we catch bogus immutable inodes.
502
503 * pass2.c (process_bad_inode): Process bad socket and fifo's.
504
505 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
506 PR_2_BAD_SOCKET.
507
Theodore Ts'o7f813ba1998-09-03 01:26:03 +00005081998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
509
510 * problem.c: Add PR_3_NO_DIRINFO error code.
511
512 * super.c (check_super_value): Rename min and max to min_val and
513 max_val to avoid possible cpp macro conflicts.
514
515 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
516 possible cpp macro conflicts.
517
518 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
519 cpp macro conflicts.
520 (check_directory): Fix logic to avoid possible core dump
521 in the case of ext2fs_get_dir_info returning NULL. (By
522 the time we get here, it should never happen, but...).
523 Also simply/streamline the control flow of the function.
524
Theodore Ts'o24fc5031998-08-26 15:23:31 +00005251998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
526
527 * unix.c (check_if_skip): Move the "not cleanly mounted" check
528 ahead of the maximal mount and too long since checked tests.
529 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
530 open, so that we don't open the filesystem using the same
531 file descriptor as stdout or stderr.
532
Theodore Ts'of75c28d1998-08-01 04:18:06 +00005331998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
534
535 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
536 get to 100%.
537
538 * pass3.c (e2fsck_pass3): Change progress accounting to be
539 consistent with the other e2fsck passes.
540
541 * e2fsck.c (e2fsck_run): At the end of each pass, call the
542 progress function with the pass number set to zero.
543
544 * unix.c (e2fsck_update_progress): If the pass number is zero,
545 ignore the call, since that indicates that we just want to
546 deallocate any progress structures.
547
Theodore Ts'o8144d671998-07-09 05:33:18 +00005481998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
549
Theodore Ts'o4a5fa191998-07-09 05:42:45 +0000550 * Release of E2fsprogs 1.12
551
5521998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
553
Theodore Ts'o8144d671998-07-09 05:33:18 +0000554 * unix.c (main): Fix typo in checking the incompat feature set; it
555 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
556
Theodore Ts'o1fad9041998-07-07 05:44:43 +00005571998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
558
559 * badblocks.c (test_disk): Don't clear the existing bad blocks
560 list when using e2fsck -c, since it may cause blocks with
561 marginal errors to be dropped from the bad blocks list.
562
Theodore Ts'o874b4d21998-07-06 14:33:12 +0000563Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
564
565 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
566 compatibility with older kernels.
567
Theodore Ts'o818180c1998-06-27 05:11:14 +00005681998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
569
570 * unix.c (e2fsck_update_progress): Remove unused variables.
571
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +00005721998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
573
574 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
575 collision with LFS API.
576
577 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
578 properly initialized.
579 (e2fsck_pass1): Don't allow the the boot loader inode to
580 be a directory (clear the inode mode field if so).
581
Theodore Ts'oefac9a11998-05-07 05:02:00 +00005821998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
583
584 * unix.c (PRS): Added new option -C, which causes e2fsck to print
585 progress updates so that callers can keep track of the
586 completion progress of e2fsck. Designed for use by
587 progress, except for -C 0, which prints a spinning report
588 which may be useful for some users.
589
590 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
591 scheme (useful for larger filesystems).
592
593 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
594 progress reporting functions.
595
Theodore Ts'o4c77fe51998-04-30 17:35:59 +00005961998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
597
598 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
599 appropriate return type for comparison functions for qsort.
600
601 * e2fsck.h: Add #ifdef protection for unistd.h
602
603 * super.c: Remove header files already included by e2fsck.h
604
Theodore Ts'o76f875d1998-04-27 01:41:13 +00006051998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
606
607 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
608 size of the memory to be resized to ext2fs_resize_mem().
609
Theodore Ts'o7e44f241998-04-01 03:16:29 +00006101998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
611
612 * Makefile.in: Change to use new installation directory variables
613 convention. Fix uninstall rules to take $(DESTDIR) into
614 account. Remove cat8dir from the installdirs target,
615 since modern man package don't necessarily put the cat
616 directory in /usr/man/cat?.
617
Theodore Ts'o17dba281998-03-30 01:16:26 +00006181998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
619
620 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
621 extern in e2fsck.h to prevent -Wall warnings.
622
623 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
624
6251998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
626
627 * super.c (check_super_block): Fix broken superblock sanity check
628 when calculating blocks_per_group if s_log_frag_size !=
629 s_log_block_size. Since we don't support fragments, this
630 isn't a bug deal, but it's good to get it fixed.
631
Theodore Ts'o246501c1998-03-24 16:22:38 +00006321998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
633
634 * unix.c: Fix bug in check of feature set, to make sure we can
635 really fix this filesystem.
636
637 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
638 num field be a 64 bit type. Add the problem code
639 PR_1_FEATURE_LARGE_FILES
640
641 * problem.c: Add table entry for the problem code
642 PR_1_FEATURE_LARGE_FILES.
643
644 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
645 a problem for directory inodes. (Since it is also
646 i_size_high now.) If there are no large_files, then
647 clear the LARGE_FLAG feature flag. If there are
648 large_files, but the LARGE_FLAG feature flag is not set,
649 complain and offer to fix it.
650 (check_blocks): Add support to deal with non-directory
651 inodes that have i_size_high set (i.e., large_files).
652 Don't give an error if a directory has preallocated
653 blocks, to support the DIR_PREALLOC feature.
654 (process_block, process_bad_block): The blockcnt variable
655 is a type of blkcnt_t, for conversion to the new
656 block_iterate2.
657
658 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
659 a problem for directory inodes. (Since it is also
660 i_size_high now.)
661
662 * message.c (expand_inode_expression): Print a 64-bits of the
663 inode size for non-directory inodes. (Directory inodes
664 can only use a 32-bit directory acl size, since
665 i_size_high is shared with i_dir_acl.) Add sanity check
666 so that trying to print out the directory acl on a
667 non-directory inode will print zero.
668 (expand_percent_expression): %B and %N, which print
669 pctx->blkcount and pctx->num, can now be 64 bit
670 variables. Print them using the "%lld" format if
671 EXT2_NO_64_TYPE is not defined.
672
673 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
674
675 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
676 field.
677
Theodore Ts'ob6f79831998-03-09 13:10:37 +0000678Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
679
680 * pass3.c (fix_dotdot_proc):
681 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
682 * message.c (expand_dirent_expression): Mask off the high eight
683 bits of the directory entry's name_len field, so that it
684 can be used for other purposes.
685
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +0000686Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
687
688 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
689 include EXT2_FLAG_RESTART anymore, we need to adjust this
690 routine so that it *does* return in the case of it seeing
691 EXT2_FLAG_RESTART.
692
693 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
694 done callback function, which may set context abort
695 flags. So we need to test the context abort flags after
696 we call ext2_get_next_inode().
697 (process_inodes): If we abort due out of process_inodes,
698 do a clean exit by breaking out of the for loop instead of
699 just returning.
700
701 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
702 considered a SIGNAL mask (i.e., requiring an immediate
703 abort of processing to restart). FLAG_RESTART just means
704 that we want to restart once pass 1 is complete.
705
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +0000706Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
707
708 * Change the progress function to return an integer; if returns 1,
709 then the progress function is expected to have set the
710 e2fsck context flag signalling a user abort, and the
711 caller should also initiate a user abort.
712
Theodore Ts'o63c49691998-02-20 05:24:59 +0000713Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
714
715 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
716 end_problem_latch() unless there was actually a problem
717 latched. Simplifies semantics of the latch processing.
718
Theodore Ts'o43139321998-02-16 22:34:46 +0000719Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
720
721 * e2fsck.h: Add new field, priv_data to the e2fsck context
722 structure. It should be used by callers of the e2fsck
723 functions only, and not by anything in e2fsck itself.
724
725Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
726
727 * super.c: Instead of call ext2fs_get_device_size(), define and call
728 e2fsck_get_device_size(). (This function may be stubbed
729 out in special versions of e2fsck.)
730
731 * pass3.c, pass4.c: Remove extra calls to the progress function
732 that weren't needed.
733
734 * mke2fs.8.in: Update man page to note that the format of the bad
735 block file is the same as the one generated by badblocks.
736
Theodore Ts'o54be2cc1998-02-01 12:58:48 +0000737Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
738
739 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
740
741 * e2fsck.h: Include <time.h> since it is needed
742
743 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
744 processing.
745
Theodore Ts'o24dd4021998-02-01 00:16:40 +0000746Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
747
748 * unix.c (main): In the case where the filesystem revision is too
749 high, print the message about the superblock possibly
750 being corrupt.
751
752 * e2fsck.8.in: Add expanded comments about how the -b option
753 works.
754
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +0000755Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
756
757 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
758 the ext2-specific header files are in a flat directory.
759
760 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
761 super.c, swapfs.c, unix.c: Explicitly cast all assignments
762 from void * to be compatible with C++.
763
764Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
765
766 * unix.c (sync_disk): Remove sync_disk and calls to that function,
767 since ext2fs_close() now takes care of this.
768
769Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
770
771 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
772 ehandler.c, unix.c: Change use of private to be priv_data,
773 to avoid C++ reserved name clash.
774
Theodore Ts'o5be8dc21997-12-01 18:24:10 +0000775Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
776
777 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
778 of e2fsck_get_num_dirs, which has been removed.
779
780Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
781
782 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
783 to compile and install flushb.
784
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +0000785Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
786
787 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
788 to make sure the extra i_blocks in a device are cleared if
789 the immutable flag is set.
790
791 * util.c (print_resource_track): Fix typo which caused the
792 time/resource tracking to print "Pass 1 :" instead of
793 "Pass 1: ".
794
Theodore Ts'ob8647fa1997-11-20 21:52:43 +0000795Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
796
797 * pass3.c (expand_directory): Fix bug which could cause core dump
798 when expanding the directory, and the bitmaps hadn't yet
799 been read in. Also, only use ext2fs_write_dir_block when
800 writing a directory block, not when writing out a fresh
801 indirect block.
802
Theodore Ts'o8039c481997-11-19 21:39:13 +0000803Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
804
805 * pass1.c (process_bad_block): Fix bug where first_block wasn't
806 getting incremented, which caused user to get a
807 "Programming error?" warning if there was a bad block in a
808 non-primary superblock/group_descriptor. Also fixed
809 another bug so that ext2fs_bg_has_super() is consulted, to
810 avoid problems when using a filesystem with the
811 sparse_groups option set and there are bad blocks at the
812 beginning of a group which doesn't have a superblock.
813
Theodore Ts'of8188ff1997-11-14 05:23:04 +0000814Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
815
816 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
817 progress indicator function.
818
819 * pass1.c (scan_callback): Add call to the progress feedback
820 function (if it exists).
821
822Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
823
824 * super.c (check_super_block): Skip the device size check if the
825 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
826
827 * iscan.c (main): Don't use fatal_error() anymore.
828
829 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
830 calling fatal_error(0).
831
832 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
833 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
834
835 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
836
837 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
838
839 * problemP.h: New file which separates out the private fix_problem
840 data structures.
841
842 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
843 swapfs.c util.c: allocate_memory() now takes a e2fsck
844 context as its first argument, and rename it to be
845 e2fsck_allocate_memory().
846
Theodore Ts'o08b21301997-11-03 19:42:40 +0000847Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
848
Theodore Ts'o68227541997-11-04 04:25:22 +0000849 * unix.c (main): Add a special case check for the error code EROFS
850 and display an appropriate error message for this case.
851
Theodore Ts'o08b21301997-11-03 19:42:40 +0000852 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
853 to take the e2fsck context as their first argument.
854 Change dir_info.c routines to take an e2fsck_context,
855 renamed them to start with e2fsck_ to avoid namespace
856 issues, and changed them to store the directory
857 information inside the e2fsck context.
858 Added e2fsck_run() which calls all of the e2fsck passes in
859 the correct order, and which handles the return of abort
860 codes. Added abort processing, both via setjmp/longjmp
861 and via flags in the e2fsck context. Use a flag in the
862 e2fsck context instead of the restart_e2fsck global
863 variable. Change uses of free and malloc to
864 ext2fs_free_mem and ext2fs_get_mem.
865
Theodore Ts'o291c9041997-10-31 06:17:08 +0000866Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
867
868 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
869 consistency.
870
Theodore Ts'oc555aeb1997-10-25 04:16:53 +0000871Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
872
873 * pass3.c (get_lost_and_found): Check error return of
874 EXT2_FILE_NOT_FOUND instead of ENOTDIR
875
876 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
877 instead of ENOTDIR
878
Theodore Ts'o622f5f21997-10-24 04:18:21 +0000879Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
880
Theodore Ts'o519149f1997-10-25 03:49:49 +0000881 * unix.c (PRS): Make the variable which getopt returns into be
882 an int, so that it won't lose on platforms where char is
883 unsigned.
884
Theodore Ts'o622f5f21997-10-24 04:18:21 +0000885 * pass1b.c (clone_file): Fix bug in error reporting in the case
886 where cs.errcode is non-zero.
887
Theodore Ts'ob2da22d1997-10-20 01:16:35 +0000888Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
889
Theodore Ts'o8bf191e1997-10-20 01:38:32 +0000890 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
891 RESOURCE_TRACK around code which uses init_resource_track
892 and print_resource_track. (Not all systems have timeval)
893
Theodore Ts'ob2da22d1997-10-20 01:16:35 +0000894 * super.c: Remove excess #includes which are not necessary.
895
896 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
897
Theodore Ts'o1b6bf171997-10-03 17:48:10 +0000898Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
899
900 * pass*.c, super.c: Massive changes to avoid using printf and
901 com_err routines. All diagnostic messages are now routed
902 through the fix_problem interface.
903
904Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
905
906 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
907 entries.
908
909 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
910 PR_2_DUP_DOT_DOT.
911
912Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
913
914 * problem.c: Added new problem codes for some of the
915 superblock corruption checks, and for the pass header
916 messages. ("Pass 1: xxxxx")
917
918 * util.c (print_resource_track): Now takes a description
919 argument.
920
921Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
922
923 * super.c, unix.c, e2fsck.c: New files to separate out the
924 operating-specific operations out from e2fsck.c.
925 e2fsck.c now contains the global e2fsck context management
926 routines, and super.c contains the "pass 0" initial
927 validation of the superblock and global block group
928 descriptors.
929
930 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
931 (nearly) all global variables and moved them to the e2fsck
932 context structure.
933
934 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
935 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
936 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
937
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +0000938Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
939
940 * message.c: Add compression for the word "Illegal"
941
942 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
943 PR_2_BAD_BLOCK_DEV
944
945Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
946
947 * pass1.c (pass1, check_device_inode), pass2.c
948 (process_bad_inode): Use a more stringent test for a valid
949 device.
950
Theodore Ts'oa47b66e1997-08-10 23:02:21 +0000951Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
952
953 * e2fsck.c (check_mount): Add stronger warning message about the
954 perils of running e2fsck on a mounted filesystem.
955
Theodore Ts'o024996c1997-06-17 05:38:35 +0000956Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
957
958 * Release of E2fsprogs 1.11
959
Theodore Ts'oda2e97f1997-06-12 04:28:07 +0000960Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
961
962 * pass1.c (mark_table_blocks): Mark the superblock and group
963 descriptor blocks first, so that any conflicts between
964 these and the bitmap or inode table blocks is noticed.
965
966 * problem.c: Fix message printed out when a block or inode bitmap
967 conflicts with other fs data, has the correct group number
968 in it.
969
Theodore Ts'o7ac02a51997-06-11 18:32:35 +0000970Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
971
972 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
973
Theodore Ts'of635d7f1997-05-09 02:50:16 +0000974Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
975
Theodore Ts'o583ccdc1997-05-09 03:06:31 +0000976 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
977 Hawes (whawes@star.net).
978
Theodore Ts'of635d7f1997-05-09 02:50:16 +0000979 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
980 bad blocks command so that all of the filesystem gets
981 tested in the case where the blocksize 2048 or 4096.
982
Theodore Ts'oa29f4d31997-04-29 21:26:48 +0000983Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
984
985 * Release of E2fsprogs version 1.10
986
987Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
988
989 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
990 where ext2fs_get_next_inode returns the
991 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
992
993Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
994
995 * Release of E2fsprogs version 1.09
996
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +0000997Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
998
999 * Release of E2fsprogs version 1.08
1000
Theodore Ts'o521e3681997-04-29 17:48:10 +00001001Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1002
1003 * pass1b.c (clone_file_block): If we clone a directory, we need to
1004 update the dblist entry so that we check (and correct) the
1005 right directory block.
1006
1007Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1008
1009 * pass1.c (process_block): Don't clear blocks references to
1010 filesystem metadata; let pass 1B handle this case.
1011
1012 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
1013
1014 * pass1b.c (pass1d): Deal with a block which is shared with
1015 filesystem metadata.
1016
1017 * e2fsck.h: Make block_illegal_map be a global variable
1018
1019Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1020
1021 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
1022 feature.
1023 (get_backup_sb): New function which attempts to obtain the
1024 correct backup superblock (if possible).
1025
1026Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1027
1028 * e2fsck.c (main): Check the version of the library, and warn if
1029 the library is out of date; this happens generally due to
1030 users who manually install e2fsprogs.
1031
1032 * pass1.c (pass1_get_blocks): If the passed in inode number for
1033 get_blocks isn't what we're expecting pass back
1034 EXT2_ET_CALLBACK_NOT_HANDLED.
1035
Theodore Ts'o21c84b71997-04-29 16:15:03 +00001036Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
1037
1038 * Release of E2fsprogs version 1.07
1039
1040Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1041
1042 * icount.c: New file which implements an inode count abstraction.
1043 This significantly reduces amount of memory needed to
1044 check really large filesystems.
1045
1046 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
1047 abstraction.
1048
1049Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1050
1051 * dirinfo.c (dir_info_iter): New function which allows iteration
1052 over the directories in the dir_info map.
1053
1054 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
1055 over all directories in the dir_info structure, instead of
1056 iterating all inodes looking for directories, and then
1057 looking up the directories using get_dir_info().
1058
1059Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1060
1061 * pass1.c (pass1, process_block):
1062 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
1063 manual code to manage the directory block list information.
1064
1065 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
1066 (deallocate_inode): Call the ext2 library routine
1067 ext2_inode_has_valid_blocks() instead of
1068 inode_has_valid_blocks().
1069
1070 * swapfs.c (swap_inodes): Add check so that we don't try to call
1071 swap_inode_blocks unless the inode has valid blocks.
1072 (Otherwise a long fast symlink might cause
1073 swap_inode_blocks to erroneously get called.)
1074
1075Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1076
1077 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
1078 PR_2_DOT_DOT_NULL_TERM.
1079
1080 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
1081 .. entries are null-terminated, since the 2.0 kernel
1082 requires this (for no good reason).
1083
1084Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1085
1086 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
1087 that we can recover from missing inode tables.
1088
1089 * dirinfo.c (get_dir_info): If there are no directories in the
1090 dir_info abstraction, don't core dump (because dir_info is
1091 NULL).
1092
1093 * e2fsck.c (main): Don't try using the backup superblocks if there
1094 aren't any.
1095 (check_super_block): If there are illegal inode table or
1096 bitmaps, set the filesystem as being in error.
1097
1098Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1099
1100 * pass2.c (check_dir_block): Added check to make sure that rec_len
1101 is a a multiple of 4 (so that the directory entries are
1102 4-byte aligned).
1103
1104Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1105
1106 * Makefile.in (uninstall): Uninstall all programs in the PROGS
1107 line.
1108 (PROGS): Don't build and install the extend program by
1109 default.
1110
1111
1112Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1113
1114 * pass1.c (process_inodes): Make sure the stashed_ino variable is
1115 saved and restored as well.
1116 (pass1): For fast sym links, skip the check_blocks
1117 processing step altogether.
1118
1119Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1120
1121 * problem.c, message.c: New files, to completely refurbish how
1122 filesystem problems are reported to the user. The
1123 diagnostic messages are now encoded out in an easily
1124 customizable, extensible format. The messages printed out
1125 in preen mode are all on one line, and contain the device
1126 name.
1127
1128Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1129
1130 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
1131 deleted files.
1132
1133 * pass1.c (pass1): Ignore missing inode table errors during the
1134 scan, and just skip past those inodes.
1135
1136 * pass3.c (check_root): Remove root_ino argument, and assume that
1137 the root inode must be EXT2_ROOT_INO. Move responsibility
1138 of setting the parent of the root inode in the directory
1139 inode structure to pass2().
1140
1141 * pass2.c (check_dir_block): Don't allow links to the root
1142 directory.
1143
1144 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
1145 since the inode is no longer used.
1146
1147Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1148
1149 * e2fsck.c (main): If the superblock magic number is wrong, or the
1150 block group fails a sanity check, then automatically
1151 restart trying to use the backup superblocks.
1152
1153 * pass1.c (mark_table_blocks): Make the inode tables ahead of
1154 everything else; in the case where a bitmap block overlays
1155 the inode table, the inode table should take precedence.
1156
1157 * pass2.c (maybe_clear_entry): Make the deleted/unused error
1158 message fit on one line, since the error can happen during
1159 a preen pass. (We eventually need to revamp the whole
1160 e2fsck error reporting and prompting system, but that's a
1161 job for another day.)
1162
1163Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1164
1165 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
1166 for the benefit of the inode scan functions.
1167
1168 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
1169 indicating that an inode is in a bad block, mark that
1170 inode as being used, as well as in the inode "bb" map.
1171
1172 * pass2.c (maybe_clear_entry): New function which generalizes the
1173 error cases when a directory entry needs to be cleared.
1174 (check_dir_block): If an inode is in the "bb" map, offer
1175 to clear the directory entry, since the inode is in a bad
1176 block.
1177
1178 * pass4.c (pass4): If an inode is marked as used, but is is marked
1179 in the "bb" map, don't process it as a disconnected inode.
1180
1181Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1182
1183 * Release of E2fsprogs version 1.06
1184
Theodore Ts'o5c576471997-04-29 15:29:49 +00001185Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1186
1187 * e2fsck.c (main): Print out the version number of the shared
1188 library when using the -V option.
1189
1190 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
1191 consistency's sake.
1192
1193 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
1194 out the backup superblocks when we know we have a valid
1195 filesystem.
1196
1197Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1198
1199 * util.c (preenhalt): Make it explicit on preenhalt that running
1200 e2fsck manually means without the -a or -p flag.
1201
1202Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1203
1204 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
1205 (Linux/FT actually sets the mode bits, so we have to
1206 handle it specially.)
1207
1208 * e2fsck.c (check_if_skip): Print a message if the filesystem is
1209 just dirty, so that the user knows that it's about to be
1210 checked (since this will take a while).
1211
1212Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1213
1214 * pass4.c: If a disconnected inode is zero-length, prompt to
1215 delete it instead of connecting it to lost+found.
1216
1217Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1218
1219 * Release of E2fsprogs version 1.05
1220
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00001221Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1222
1223 * pass4.c (pass4): If the user refuses to connect an unattached
1224 inode to lost+found, don't try to set i_links_count. This
1225 is bad, since if the user says yes, the inode will be
1226 marked as unused, which is not necessarily the right
1227 thing, especially since the rest of the cleanup doesn't
1228 happen here.
1229
1230 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
1231 dellocating an inode. (Not strictly necessary, but...)
1232
1233 * pass4.c (pass4): Add "bonehead" explanation to the "programming
1234 error" message.
1235
1236Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1237
1238 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
1239 byte-swap the filesystem so that it is normalized. -S
1240 will byte-swap the filesystem regardless of its current
1241 byte-order.
1242
1243 * swapfs.c: New file, which will byte-swap a filesystem.
1244
1245Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1246
1247 * pass1.c (pass1): Change handling on files with non-zero dtime
1248 and non-zero i_link_count; before we treated them as
1249 deleted file per botched ext2 0.3c kernel behavior. We
1250 now clear dtime instead.
1251
1252Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1253
1254 * e2fsck.c (main): If e2fsck sets the clean bit, even if
1255 nothing else is changed, make sure FSCK_NONDESTRUCT is
1256 set (since after all having the filesystem set to
1257 invalid is an error. :-)
1258
1259Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1260
1261 * pass1.c (process_block): Make sure that meta data doesn't get
1262 accidentally set in the dir_blocks array (which could
1263 happen in some error condtions).
1264
1265 * pass1.c (pass1):
1266 * pass2.c (process_bad_inode): Check for fragments in a
1267 OS-independent fashion.
1268
1269Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1270
1271 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
1272 cleanup for the filesystem.
1273
1274Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1275
1276 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
1277
Theodore Ts'o62c06f71997-04-29 14:34:47 +00001278Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1279
1280 * Release of E2fsprogs version 1.04
1281
1282Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1283
1284 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
1285 try "e2fsck -b 8193" before allowing e2fsck to relocate
1286 inode table blocks.
1287
1288 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
1289 depending on the option to configure. Added targets for
1290 e2fsck.static and e2fsck.shared for people who want to
1291 build a static or shared variant manually.
1292
Theodore Ts'o7f88b041997-04-26 14:48:50 +00001293Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
1294
1295 * Release of E2fsprogs version 1.03
1296
1297Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
1298
1299 * e2fsck.c (show_stats): Don't use floating point to display
1300 percentage of non-contiguous files, as different libc
1301 handle result truncation differently, and this causes the
1302 test suite to bomb out depending on which libc you are
1303 using.
1304
1305 * util.c (allocate_memory): Fix error message to omit extraneous
1306 %%s.
1307
1308Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
1309
1310 * pass4.c (pass4):
1311 * pass2.c (check_dir_block):
1312 * pass1.c (pass1): Add support for dynamic first inode revision.
1313
1314Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
1315
1316 * pass3.c (check_root): Fix spelling typo
1317
1318Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
1319
1320 * e2fsck.c (check_super_block): If the superblock fails certain
1321 internal consistency checks, exit with a fatal error after
1322 printing the "superblock is corrupt message".
1323
Theodore Ts'o74becf31997-04-26 14:37:06 +00001324Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
1325
1326 * Release of E2fsprogs version 1.02
1327
1328Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
1329
1330 * pass1.c (process_block): Check to see if a file is "fragmented".
1331 i.e., non-contiguous. Note that any file which is larger
1332 than the block group is guaranteed to be non-contiguous.
1333 We may want to use a different hueristic for deciding
1334 whether or not a file is "fragmented".
1335
1336 * e2fsck.c (show_stats): Print statistics of how many
1337 non-contiguous files are on the system.
1338
1339Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
1340
1341 * badblocks.c (read_bad_blocks_file, test_disk): Fold
1342 functionality of test_disk() (which runs badblocks) into
1343 read_bad_blocks_file(); test_disk() now calls
1344 read_bad_blocks_file() with a NULL bad_blocks_file
1345 argument.
1346
1347Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
1348
1349 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
1350 #if defined(linux). The latter won't work if we're
1351 compiling -ansi.
1352
Theodore Ts'o297f47a1997-04-26 14:25:20 +00001353Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
1354
1355 * e2fsck.c (check_mount): For Linux systems, the check to see if
1356 the root is mounted read-only has to be done for all
1357 filesystems, not just for the root filesystem, due to the
1358 way that some /etc/rc scripts are set up.
1359
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001360Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
1361
1362 * Makefile.in (install): Strip programs when they are installed.
1363 (e2fsck): Build e2fsck statically.
1364
1365Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
1366
1367 * util.c (preenhalt): Preenhalt now takes an argument, which is an
1368 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
1369 flag in the superblock in cases where preenhalt is called.
1370 All calls to preenhalt() were changed to either
1371 preenhalt(fs) or preenhalt(NULL) in a few cases where the
1372 fs pointer was not available. (Most notable, for block
1373 read/write errors.)
1374
1375Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
1376
1377 * ehandler.c:
1378 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
1379
1380Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
1381
1382 * e2fsck.c (show_stats): Show statistics about how many inodes
1383 have indirect, doubly indirect, and triply indirect
1384 blocks. Allow up to 8 digits for statistics, instead of
1385 merely 6, so things look pretty for large filesystems.
1386
1387 * pass1.c (pass1): Keep statistics about indirect, doubly
1388 indirect, and triply indirect blocks.
1389
1390 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
1391 pass 1.
1392
1393Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
1394
1395 * util.c, ehandler.c: Move #include of <sys/resource.h> after
1396 #include of "e2fsck.h", since sys/resource.h may depend on
1397 sys/time.h, which is #included in e2fsck.h.
1398
1399Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
1400
1401 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
1402 function to determine if the device is mounted.
1403
1404 * e2fsck.c (main): Add better error messages if ext2fs_open()
1405 fails.
1406
1407Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
1408
1409 * pass1.c (check_blocks): If we're clearing a directory, clear
1410 pb.is_dir so we don't do the following check of making
1411 sure the directory size matches; this is pointless, since
1412 we've already cleared the inode.
1413
1414Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1415
1416 * pass1.c (bad_primary_block): New function, called by
1417 process_bad_block, which explains the facts of life to the
1418 user when a block in the primary superblock or primary
1419 group descriptors is bad.
1420
1421 * pass2.c (check_dot): Handle the case where the first directory
1422 entry is used, but not ".".
1423
1424 * pass2.c (check_dotdot): Handle the case where the second directory
1425 entry is used, but is not "..".
1426
1427Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1428
1429 * e2fsck.c (check_super_block): Get the size of the physical
1430 device and if it is smaller than the reported size of the
1431 filesystem, report an error.
1432
1433Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
1434
1435 * e2fsck.c (check_if_skip): Print the number of allocated files and
1436 blocks on clean filesystems.
1437
1438Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
1439
1440 * e2fsck.8: Updated date and version number.
1441
1442Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
1443
1444 * pass1.c (check_blocks): Check that directory size matches *exactly*
1445 the count of allocated blocks.
1446
1447Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
1448
1449 * pass1b.c (pass1d): Free the shared[] array when we're done with
1450 it to avoid a memory leak.
1451
1452 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
1453 block_dup_map.
1454
1455 * pass2.c (process_bad_inode): When clearing the inode, make sure
1456 the pathname is freed, to prevent a memory leak.
1457
1458 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
1459 when we're finished with them.
1460 (check_block_bitmaps): Free free_array when we're finished
1461 with them.
1462
1463 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
1464 linking the executable.
1465
1466 * pass2.c (process_bad_inode): Even on OS's that don't support the
1467 fragment fields, make sure the Linux equivalent fields are
1468 set to zero. If an OS wants to reuse these fields, which
1469 is probably a bad idea (although we may get desperate in
1470 the future) this code will have to be changed.
1471
1472 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
1473 on the inode field, and then blockcnt field. This is just
1474 to keep the ordering of dir_blocks the same on all
1475 platforms when there are more than on missing directory
1476 blocks, which are indicated directories with holes, which
1477 are indicated with the block number being set to zero.
1478
1479Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1480
1481 * pass1.c (check_blocks, process_block): check_blocks() modified
1482 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
1483 the inode is a directory. process_block() now checks to
1484 see if a directory has a "hole", or missing block. If so,
1485 this fact is recorded in the directory block list so that
1486 the problem can be resolved in pass #2.
1487
1488 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
1489 allocate new blocks for directories with "holes". Called
1490 out of check_dir_block if a block in the directory block
1491 list is zero.
1492
1493 * pass3.c (get_lost_and_found): Move location of free(block) to
1494 prevent possible memory leak.
1495
1496Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1497
1498 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
1499 instead of alloca() --- alloca is not portable! Check to
1500 make sure the filename is not longer than EXT2_NAME_LEN,
1501 and offer to fix it by truncating it, since it should
1502 never happen.
1503
1504 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
1505 not portable!! In any case putenv() in some systems must
1506 take a static character array or malloc()'ed memory;
1507 passing memory allocated using alloca() to putenv() is not
1508 advisable.
1509
1510 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
1511 alloca() --- alloca() is not portable!!!
1512
1513Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
1514
1515 * pass1b.c (pass1c):
1516 * pass3.c (check_root, get_lost_and_found):
1517 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
1518 to read/write the directory block.
1519
1520Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
1521
1522 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
1523 make sure VMIN and VTIME are set correct.
1524
1525Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
1526
1527 * pass1.c (mark_block_used): Change to be an inline function.
1528 Assume that the block validity checks are already done,
1529 and use the fast variant of the bitmap functions.
1530
1531Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
1532
1533 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
1534 bounds of the bitmaps in advance, and then use the fast
1535 variant of e2fs_test_{block,inode}_bitmap.
1536
1537 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
1538 the bounds checking has already been done earlier.
1539
1540Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
1541
1542 * pass1.c (pass1): Allocate and free the block_illegal_map, which
1543 is used for shortcut processing in process_block.
1544 (mark_table_blocks): Initialize block_illegal_map with the
1545 filesystem blocks.
1546 (describe_illegal_block): New helper function that
1547 describes why a block is illegal.
1548 (process_block): Use block_illegal_map as a shortcut
1549 to determine whether a block is bad. Use
1550 describe_illegal_block to print out why the block is illegal.
1551
1552Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
1553
1554 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
1555
1556 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
1557 <mntent.h> if they don't exist. (Mostly so that "make
1558 depend" works.)
1559
1560 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
1561 it exists).
1562
1563 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
1564 exist.
1565
1566Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1567
1568 * pass2.c (process_bad_inode, check_for_zero_long,
1569 check_for_zero_char): Change long to u32, and char to u8.
1570
1571Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1572
1573 * util.c (inode_has_valid_blocks):
1574 * pass2.c (process_bad_inode):
1575 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
1576 LINUX_S_IS* instead of S_IS*.
1577
1578 * e2fsck.h: Don't #include <sys/stat.h>
1579
1580 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
1581 this program is pretty much useless if BLKFLSBUF isn't
1582 supported.)
1583
1584 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
1585 used.
1586
1587Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
1588
1589 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
1590 to allocate space for file names instead of using fixed size buffers.
1591 (process_bad_inode): Only check inode frag fields if
1592 HAVE_EXT2_FRAGS is defined (by configure).
1593 * pass1.c (pass1): Only check the inode frag fields if
1594 HAVE_EXT2_FRAGS is defined (by configure).
1595
1596 * e2fsck.c (check_mount): Only check for a mounted filesystem if
1597 HAVE_MNTENT_H is defined (by configure).
1598 (PRS): Use alloca to allocate the new path string, instead of
1599 having a fixed size buffer (which was the wrong size anyway).
1600 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
1601 is defined.
1602
1603 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
1604 defined (by configure).
1605
1606 * Makefile.in: Rewritten to conform to GNU coding standards and
1607 support separate compilation directories.
1608
1609Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
1610
1611 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
1612
Theodore Ts'of3db3561997-04-26 13:34:30 +00001613Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
1614
1615 * pass1.c (unwind_pass1): Clear the file type statistics counter
1616 when pass 1 needs to be restarted from scratch.
1617
1618 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
1619 being reallocated to blocks in the next block group,
1620 instead of the current block grup.
1621
1622 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
1623 inode.i_links_count is set.
1624
1625Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
1626
1627 * pass1.c (process_block): Add checks for if the block is
1628 trepassing on a superblock or group descriptor table.
1629
1630Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
1631
1632 * main.c (corrupt_msg): Extend the message which is printed out
1633 when the superblock is corrupt, to include the suggestion
1634 of using the -b option to specify an alternate superblock.
1635
1636Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
1637
1638 * badblocks.c (read_bad_blocks_file): If we are adding or
1639 replacing bad blocks in the bad blocks inode, sanity check
1640 the bad block inode first, and clear out any illegal blocks.
1641
1642 * pass2.c (check_name): Don't bomb out if the attempt to get the
1643 pathname of the containing directory returns an error; the
1644 directory may be too badly damaged to expect that
1645 ext2fs_get_pathname will always succeed. Use "???" if the
1646 pathname can't be obtained (it's only for a printf to the
1647 user anyway).
1648
1649 The name of the containing directory and the bad filename
1650 were incorrectly interchanged in the user message. Fixed.
1651
1652 * pass2.c (check_name, check_dir_block): Use a common static
1653 string for the unknown pathname.
1654
1655Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
1656
1657 * Fixed lots of printf formats to make sure that block and inode
1658 numbers are printed as unsigned integers.
1659
1660Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
1661
1662 * pass5.c (check_block_end): Fix calculation of how the last block
1663 in the block bitmap should be calculated.
1664
1665Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
1666
1667 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
1668 be an ext2fs_inode_bitmap, and free it properly.
1669
1670 * e2fsck.h
1671 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
1672 level to the superblock.
1673
1674Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
1675
1676 * e2fsck.c (usage): Fixed bogus usage message.
1677
1678Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
1679
1680 * pass1.c (process_bad_block): Fixed bug so that blocks in the
1681 backup superblocks and group descriptors are handled gracefully.
1682