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