blob: fcab1e68a8713e5571080a70b0f2a108e6ed1215 [file] [log] [blame]
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00001Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2
3 * pass4.c (pass4): If the user refuses to connect an unattached
4 inode to lost+found, don't try to set i_links_count. This
5 is bad, since if the user says yes, the inode will be
6 marked as unused, which is not necessarily the right
7 thing, especially since the rest of the cleanup doesn't
8 happen here.
9
10 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
11 dellocating an inode. (Not strictly necessary, but...)
12
13 * pass4.c (pass4): Add "bonehead" explanation to the "programming
14 error" message.
15
16Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
17
18 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
19 byte-swap the filesystem so that it is normalized. -S
20 will byte-swap the filesystem regardless of its current
21 byte-order.
22
23 * swapfs.c: New file, which will byte-swap a filesystem.
24
25Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
26
27 * pass1.c (pass1): Change handling on files with non-zero dtime
28 and non-zero i_link_count; before we treated them as
29 deleted file per botched ext2 0.3c kernel behavior. We
30 now clear dtime instead.
31
32Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
33
34 * e2fsck.c (main): If e2fsck sets the clean bit, even if
35 nothing else is changed, make sure FSCK_NONDESTRUCT is
36 set (since after all having the filesystem set to
37 invalid is an error. :-)
38
39Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
40
41 * pass1.c (process_block): Make sure that meta data doesn't get
42 accidentally set in the dir_blocks array (which could
43 happen in some error condtions).
44
45 * pass1.c (pass1):
46 * pass2.c (process_bad_inode): Check for fragments in a
47 OS-independent fashion.
48
49Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
50
51 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
52 cleanup for the filesystem.
53
54Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
55
56 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
57
Theodore Ts'o62c06f71997-04-29 14:34:47 +000058Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
59
60 * Release of E2fsprogs version 1.04
61
62Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
63
64 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
65 try "e2fsck -b 8193" before allowing e2fsck to relocate
66 inode table blocks.
67
68 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
69 depending on the option to configure. Added targets for
70 e2fsck.static and e2fsck.shared for people who want to
71 build a static or shared variant manually.
72
Theodore Ts'o7f88b041997-04-26 14:48:50 +000073Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
74
75 * Release of E2fsprogs version 1.03
76
77Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
78
79 * e2fsck.c (show_stats): Don't use floating point to display
80 percentage of non-contiguous files, as different libc
81 handle result truncation differently, and this causes the
82 test suite to bomb out depending on which libc you are
83 using.
84
85 * util.c (allocate_memory): Fix error message to omit extraneous
86 %%s.
87
88Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
89
90 * pass4.c (pass4):
91 * pass2.c (check_dir_block):
92 * pass1.c (pass1): Add support for dynamic first inode revision.
93
94Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
95
96 * pass3.c (check_root): Fix spelling typo
97
98Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
99
100 * e2fsck.c (check_super_block): If the superblock fails certain
101 internal consistency checks, exit with a fatal error after
102 printing the "superblock is corrupt message".
103
Theodore Ts'o74becf31997-04-26 14:37:06 +0000104Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
105
106 * Release of E2fsprogs version 1.02
107
108Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
109
110 * pass1.c (process_block): Check to see if a file is "fragmented".
111 i.e., non-contiguous. Note that any file which is larger
112 than the block group is guaranteed to be non-contiguous.
113 We may want to use a different hueristic for deciding
114 whether or not a file is "fragmented".
115
116 * e2fsck.c (show_stats): Print statistics of how many
117 non-contiguous files are on the system.
118
119Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
120
121 * badblocks.c (read_bad_blocks_file, test_disk): Fold
122 functionality of test_disk() (which runs badblocks) into
123 read_bad_blocks_file(); test_disk() now calls
124 read_bad_blocks_file() with a NULL bad_blocks_file
125 argument.
126
127Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
128
129 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
130 #if defined(linux). The latter won't work if we're
131 compiling -ansi.
132
Theodore Ts'o297f47a1997-04-26 14:25:20 +0000133Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
134
135 * e2fsck.c (check_mount): For Linux systems, the check to see if
136 the root is mounted read-only has to be done for all
137 filesystems, not just for the root filesystem, due to the
138 way that some /etc/rc scripts are set up.
139
Theodore Ts'o50e1e101997-04-26 13:58:21 +0000140Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
141
142 * Makefile.in (install): Strip programs when they are installed.
143 (e2fsck): Build e2fsck statically.
144
145Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
146
147 * util.c (preenhalt): Preenhalt now takes an argument, which is an
148 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
149 flag in the superblock in cases where preenhalt is called.
150 All calls to preenhalt() were changed to either
151 preenhalt(fs) or preenhalt(NULL) in a few cases where the
152 fs pointer was not available. (Most notable, for block
153 read/write errors.)
154
155Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
156
157 * ehandler.c:
158 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
159
160Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
161
162 * e2fsck.c (show_stats): Show statistics about how many inodes
163 have indirect, doubly indirect, and triply indirect
164 blocks. Allow up to 8 digits for statistics, instead of
165 merely 6, so things look pretty for large filesystems.
166
167 * pass1.c (pass1): Keep statistics about indirect, doubly
168 indirect, and triply indirect blocks.
169
170 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
171 pass 1.
172
173Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
174
175 * util.c, ehandler.c: Move #include of <sys/resource.h> after
176 #include of "e2fsck.h", since sys/resource.h may depend on
177 sys/time.h, which is #included in e2fsck.h.
178
179Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
180
181 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
182 function to determine if the device is mounted.
183
184 * e2fsck.c (main): Add better error messages if ext2fs_open()
185 fails.
186
187Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
188
189 * pass1.c (check_blocks): If we're clearing a directory, clear
190 pb.is_dir so we don't do the following check of making
191 sure the directory size matches; this is pointless, since
192 we've already cleared the inode.
193
194Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
195
196 * pass1.c (bad_primary_block): New function, called by
197 process_bad_block, which explains the facts of life to the
198 user when a block in the primary superblock or primary
199 group descriptors is bad.
200
201 * pass2.c (check_dot): Handle the case where the first directory
202 entry is used, but not ".".
203
204 * pass2.c (check_dotdot): Handle the case where the second directory
205 entry is used, but is not "..".
206
207Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
208
209 * e2fsck.c (check_super_block): Get the size of the physical
210 device and if it is smaller than the reported size of the
211 filesystem, report an error.
212
213Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
214
215 * e2fsck.c (check_if_skip): Print the number of allocated files and
216 blocks on clean filesystems.
217
218Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
219
220 * e2fsck.8: Updated date and version number.
221
222Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
223
224 * pass1.c (check_blocks): Check that directory size matches *exactly*
225 the count of allocated blocks.
226
227Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
228
229 * pass1b.c (pass1d): Free the shared[] array when we're done with
230 it to avoid a memory leak.
231
232 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
233 block_dup_map.
234
235 * pass2.c (process_bad_inode): When clearing the inode, make sure
236 the pathname is freed, to prevent a memory leak.
237
238 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
239 when we're finished with them.
240 (check_block_bitmaps): Free free_array when we're finished
241 with them.
242
243 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
244 linking the executable.
245
246 * pass2.c (process_bad_inode): Even on OS's that don't support the
247 fragment fields, make sure the Linux equivalent fields are
248 set to zero. If an OS wants to reuse these fields, which
249 is probably a bad idea (although we may get desperate in
250 the future) this code will have to be changed.
251
252 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
253 on the inode field, and then blockcnt field. This is just
254 to keep the ordering of dir_blocks the same on all
255 platforms when there are more than on missing directory
256 blocks, which are indicated directories with holes, which
257 are indicated with the block number being set to zero.
258
259Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
260
261 * pass1.c (check_blocks, process_block): check_blocks() modified
262 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
263 the inode is a directory. process_block() now checks to
264 see if a directory has a "hole", or missing block. If so,
265 this fact is recorded in the directory block list so that
266 the problem can be resolved in pass #2.
267
268 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
269 allocate new blocks for directories with "holes". Called
270 out of check_dir_block if a block in the directory block
271 list is zero.
272
273 * pass3.c (get_lost_and_found): Move location of free(block) to
274 prevent possible memory leak.
275
276Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
277
278 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
279 instead of alloca() --- alloca is not portable! Check to
280 make sure the filename is not longer than EXT2_NAME_LEN,
281 and offer to fix it by truncating it, since it should
282 never happen.
283
284 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
285 not portable!! In any case putenv() in some systems must
286 take a static character array or malloc()'ed memory;
287 passing memory allocated using alloca() to putenv() is not
288 advisable.
289
290 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
291 alloca() --- alloca() is not portable!!!
292
293Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
294
295 * pass1b.c (pass1c):
296 * pass3.c (check_root, get_lost_and_found):
297 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
298 to read/write the directory block.
299
300Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
301
302 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
303 make sure VMIN and VTIME are set correct.
304
305Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
306
307 * pass1.c (mark_block_used): Change to be an inline function.
308 Assume that the block validity checks are already done,
309 and use the fast variant of the bitmap functions.
310
311Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
312
313 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
314 bounds of the bitmaps in advance, and then use the fast
315 variant of e2fs_test_{block,inode}_bitmap.
316
317 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
318 the bounds checking has already been done earlier.
319
320Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
321
322 * pass1.c (pass1): Allocate and free the block_illegal_map, which
323 is used for shortcut processing in process_block.
324 (mark_table_blocks): Initialize block_illegal_map with the
325 filesystem blocks.
326 (describe_illegal_block): New helper function that
327 describes why a block is illegal.
328 (process_block): Use block_illegal_map as a shortcut
329 to determine whether a block is bad. Use
330 describe_illegal_block to print out why the block is illegal.
331
332Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
333
334 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
335
336 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
337 <mntent.h> if they don't exist. (Mostly so that "make
338 depend" works.)
339
340 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
341 it exists).
342
343 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
344 exist.
345
346Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
347
348 * pass2.c (process_bad_inode, check_for_zero_long,
349 check_for_zero_char): Change long to u32, and char to u8.
350
351Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
352
353 * util.c (inode_has_valid_blocks):
354 * pass2.c (process_bad_inode):
355 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
356 LINUX_S_IS* instead of S_IS*.
357
358 * e2fsck.h: Don't #include <sys/stat.h>
359
360 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
361 this program is pretty much useless if BLKFLSBUF isn't
362 supported.)
363
364 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
365 used.
366
367Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
368
369 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
370 to allocate space for file names instead of using fixed size buffers.
371 (process_bad_inode): Only check inode frag fields if
372 HAVE_EXT2_FRAGS is defined (by configure).
373 * pass1.c (pass1): Only check the inode frag fields if
374 HAVE_EXT2_FRAGS is defined (by configure).
375
376 * e2fsck.c (check_mount): Only check for a mounted filesystem if
377 HAVE_MNTENT_H is defined (by configure).
378 (PRS): Use alloca to allocate the new path string, instead of
379 having a fixed size buffer (which was the wrong size anyway).
380 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
381 is defined.
382
383 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
384 defined (by configure).
385
386 * Makefile.in: Rewritten to conform to GNU coding standards and
387 support separate compilation directories.
388
389Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
390
391 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
392
Theodore Ts'of3db3561997-04-26 13:34:30 +0000393Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
394
395 * pass1.c (unwind_pass1): Clear the file type statistics counter
396 when pass 1 needs to be restarted from scratch.
397
398 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
399 being reallocated to blocks in the next block group,
400 instead of the current block grup.
401
402 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
403 inode.i_links_count is set.
404
405Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
406
407 * pass1.c (process_block): Add checks for if the block is
408 trepassing on a superblock or group descriptor table.
409
410Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
411
412 * main.c (corrupt_msg): Extend the message which is printed out
413 when the superblock is corrupt, to include the suggestion
414 of using the -b option to specify an alternate superblock.
415
416Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
417
418 * badblocks.c (read_bad_blocks_file): If we are adding or
419 replacing bad blocks in the bad blocks inode, sanity check
420 the bad block inode first, and clear out any illegal blocks.
421
422 * pass2.c (check_name): Don't bomb out if the attempt to get the
423 pathname of the containing directory returns an error; the
424 directory may be too badly damaged to expect that
425 ext2fs_get_pathname will always succeed. Use "???" if the
426 pathname can't be obtained (it's only for a printf to the
427 user anyway).
428
429 The name of the containing directory and the bad filename
430 were incorrectly interchanged in the user message. Fixed.
431
432 * pass2.c (check_name, check_dir_block): Use a common static
433 string for the unknown pathname.
434
435Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
436
437 * Fixed lots of printf formats to make sure that block and inode
438 numbers are printed as unsigned integers.
439
440Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
441
442 * pass5.c (check_block_end): Fix calculation of how the last block
443 in the block bitmap should be calculated.
444
445Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
446
447 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
448 be an ext2fs_inode_bitmap, and free it properly.
449
450 * e2fsck.h
451 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
452 level to the superblock.
453
454Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
455
456 * e2fsck.c (usage): Fixed bogus usage message.
457
458Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
459
460 * pass1.c (process_bad_block): Fixed bug so that blocks in the
461 backup superblocks and group descriptors are handled gracefully.
462