blob: bb03b0a7617f6bdb4c2b7b2122cd6abd1e9c4145 [file] [log] [blame]
Theodore Ts'od7b64722007-06-24 17:32:47 -040012006-06-24 Theodore Ts'o <tytso@mit.edu>
2
3 * Release of E2fsprogs 1.40
4
Andreas Dilgera34c6ff2007-06-22 02:22:38 -040052007-06-22 Theodore Tso <tytso@mit.edu>
6
7 * pass1.c (check_ext_attr): Adds an extra validity test in
8 check_ext_attr(). If an attribute's e_value_size is zero
9 the current code does not allocate a region for it and as
10 a result the e_value_offs value is not verified. However,
11 if e_value_offs is very large then the later call to
12 ext2fs_ext_attr_hash_entry() can dereference bad memory
13 and crash e2fsck.
14
Theodore Ts'o058ad1c2007-06-18 18:26:50 -0400152007-06-18 Theodore Tso <tytso@mit.edu>
16
17 * journal.c (e2fsck_run_ext3_journal), unix.c (main): Explicitly
18 add the EXT2_FLAG_MASTER_SB_ONLY flag to make sure we
19 won't write out the backup superblocks until we're sure
20 that we want write them out.
21
Theodore Ts'od2af1bd2007-06-04 01:14:52 -0400222007-06-04 Theodore Tso <tytso@mit.edu>
23
24 * super.c (check_super_block, e2fsck_get_device_size),
25 unix.c (main): Move device size logic into the main(), to
26 support the Linux floppy driver, which disallows another
27 (non-O_EXCL) open() if it has been opened with O_EXCL.
28 (Addresses Debian Bug: #410569)
29
30 * e2fsck.h (E2F_FLAG_GOT_DEVSIZE): New flag used in get_device logic
31
Brian Behlendorf8f234d92007-05-31 11:42:48 -0400322007-05-31 Theodore Tso <tytso@mit.edu>
33
Daniel Drakee7b5d3c2007-05-31 11:56:17 -040034 * util.c (get_backup_sb): Do basic sanity checking to make sure
35 the blocksize of the superblock passes muster.
36
Brian Behlendorf8f234d92007-05-31 11:42:48 -040037 * profile.c (profile_node_iterator): Avoid potential null
38 dereference bug.
39
Theodore Ts'o32460c12007-05-22 20:51:47 -0400402007-05-22 Theodore Tso <tytso@mit.edu>
41
Andreas Dilgerde8f3a72007-05-25 11:18:11 -040042 * message.c (expand_inode_expression, expand_percent_expression):
43 Fix gcc -Wall warnings on 64-bit systems.
44
Theodore Ts'of954ba02007-05-22 20:53:01 -040045 * pass1.c (e2fsck_pass1_check_device_inode): Mark the fs parameter
46 as unused.
47 (e2fsck_setup_tdb_icount): Use profile_get_uint() function
48 for reading the threshold. Remove unused variables.
49
50 * dirinfo.c (setup_tdb): Use the profile_get_uint() function for
51 reading the threshold.
52 (setup_db): Declare it as static
53 (setup_tdb): #include uuid.h since we use a uuid function
54 (e2fsck_get_dir_info, e2fsck_dir_info_iter_begin): Remove
55 unused variables
56 (e2fsck_dir_info_iter_end): Mark the ctx parameter as
57 unused.
58
Theodore Ts'o32460c12007-05-22 20:51:47 -040059 * profile.h, profile.c (profile_get_uint): New function which
60 returns an unsigned integer.
61
Kalpak Shah1a8c2c42007-05-08 01:07:30 -0400622007-05-08 Kalpak Shah <kalpak@clusterfs.com>
63
64 * pass1.c (check_ea_in_inode): Remove check that requires in-inode
65 EA's to be sorted, since they don't have to be.
66
Eric Sandeen5113a6e2007-05-08 00:10:54 -0400672007-05-08 Theodore Tso <tytso@mit.edu>
68
69 * message.c (expand_inode_expression): Use inode_uid() and
70 inode_gid() macros when printing the uid/gid.
71
Theodore Ts'oa4d7d902007-04-18 22:12:50 -0400722007-04-18 Theodore Tso <tytso@mit.edu>
73
74 * e2fsck.conf.5.in (apply): Fix minor typo.
75
Theodore Ts'oe94bc632007-04-14 09:29:02 -0400762007-04-14 Theodore Tso <tytso@mit.edu>
77
Bryn M. Reeves3f4c46e2007-04-14 14:00:31 -040078 * pass2.c (e2fsck_process_bad_inode): Remove special kludge that
79 dealt with long symlinks on big endian systems. It turns
80 out this was a workaround to a bug described in Red Hat
81 Bugzilla #232663, with an odd twist. See comment #12 for
82 more details.
83
Theodore Ts'oe94bc632007-04-14 09:29:02 -040084 * pass1.c, pass2.c, util.c: Add better ehandler_operation()
85 markers so it is clearer what e2fsck was doing when an I/O
86 error is reported.
87
Theodore Ts'o0eeb1542007-04-14 12:01:39 -040088 *pass1.c (check_is_really_dir): Fix a typo which could cause
89 e2fsck to throw an I/O error while doubling checking
90 whether or not a special device file was really an inode.
91 Also, don't do this tests on symbolic links since for
92 filesystems with a large numbers of symlinks it could
93 degrade performance and increases the risk for false
94 positives.
95
Jim Garlick3d51ff82007-04-10 22:55:09 -0400962007-04-10 Jim Garlick <garlick@llnl.gov>
97
98 * pass1b.c (search_dirent_proc): if a file has multiple hard
99 links, e2fsck pass1c search_dirent_proc() doesn't maintain
100 its count properly and may return DIRENT_ABORT before it
101 has found containing directories for all inodes sharing
102 blocks.
103
Theodore Ts'o34b9f792007-04-06 18:43:11 -04001042007-04-06 Theodore Tso <tytso@mit.edu>
105
Theodore Ts'o39efa4c2007-04-06 23:32:06 -0400106 * e2fsck.conf.5.in: Update man page to document the scratch_files
107 section.
108
Theodore Ts'o25a9fe22007-04-06 18:44:37 -0400109 * dirinfo.c: If e2fsck.conf configures a scratch_files directory
110 which is available, and the number of directories exceeds
111 scratch_files.numdirs_threshold, then try to use the tdb
112 library to store the directory information abstraction.
113 This allows us to check very large filesystems without
114 needing as much physical memory.
115
Theodore Ts'o34b9f792007-04-06 18:43:11 -0400116 * e2fsck.h, pass1.c, pass2.c: If e2fsck.conf configures a
117 scratch_files directory which is available, and the number
118 of directories exceeds scratch_files.numdirs_threshold,
119 then try to use the tdb library to store the inode count
120 abstraction. This allows us to check very large
121 filesystems without needing as much physical memory.
122
Theodore Ts'o86bc90f2007-04-04 21:42:42 -04001232007-04-04 Theodore Tso <tytso@mit.edu>
124
Theodore Ts'o28db82a2007-04-04 22:33:31 -0400125 * dirinfo.c, pass2.c, pass3.c, rehash.c, e2fsck.h: Change the
126 iterator abstraction and replace e2fsck_get_dir_info()
127 with e2fsck_dir_info_{set,get}_{parent,dotdot} so that we
128 can support an on-disk dirinfo implementation. This
129 allows e2fsck to check very large filesystems on systems
130 with smaller amounts of memory and/or address space.
131
Theodore Ts'o86bc90f2007-04-04 21:42:42 -0400132 * pass1.c (check_ext_attr): Make sure the region variable is
133 initialized to zero to avoid checking and then freeing an
134 uninitialized pointer if there is a corrupted EA block.
135
Theodore Ts'o441ab1e2007-03-31 18:56:09 -04001362007-03-31 Theodore Tso <tytso@mit.edu>
137
Theodore Ts'ofbc3f902007-04-02 10:08:59 -0400138 * pass1.c (e2fsck_pass1, check_is_really_dir): Check for an edge
139 condition where the mode of a directory is incorrect, and
140 looks like a special device, but it is really a directory.
141 We can't do this for regular files because of the
142 performance hit, but this will catch directories which
143 have their i_mode bits mutated so they looks like a
144 special device.
145
146 * problem.c, problem.h (PR_1_TREAT_AS_DIRECTORY): New problem code
147
Theodore Ts'occfbb262007-03-31 19:53:53 -0400148 * message.c (expand_percent_expression): Add support for %It, which
149 will print the type of the inode.
150
Theodore Ts'o56c8c592007-03-31 19:18:24 -0400151 * pass3.c (fix_dotdot_proc): Fix the filetype of the '..' entry to
152 be EXT2_FT_DIR. (Addresses Lustre BZ #11645)
153
Theodore Ts'o441ab1e2007-03-31 18:56:09 -0400154 * pass1.c (e2fsck_pass1_check_device_inode): Don't assume that a
155 special device is bogus just because i_blocks is non-zero.
156 The i_blocks field could get adjusted later, and if this
157 happens it will confuse the e2fsck_process_bad_inode() in
158 pass 2. In practice true garbage inodes will have random
159 non-zero values in i_blocks[4..15], so there's no point
160 doing the check for an illegal i_blocks value.
161
Brian Behlendorfcae542c2007-03-28 11:28:24 -04001622007-03-28 Theodore Tso <tytso@mit.edu>
163
Brian Behlendorf9d45b6e2007-03-28 11:57:20 -0400164 * pass1.c (e2fsck_pass1, check_ext_attr),
Brian Behlendorf1db4c432007-03-28 12:36:41 -0400165 pass5.c (check_block_bitmaps, check_inode_bitmaps),
Brian Behlendorf06c9c6f2007-03-28 12:43:05 -0400166 pass4.c (e2fsck_pass4), swapfs.c (swap_inodes),
Brian Behlendorf2bfe0bd2007-03-29 00:19:17 -0400167 journal.c (e2fsck_get_journal),
Brian Behlendorf49e2df22007-03-28 12:07:41 -0400168 unix.c (parse_extended_opts): Fix memory leaks
Brian Behlendorfcae542c2007-03-28 11:28:24 -0400169
Brian Behlendorf93503262007-03-21 16:14:37 -04001702007-03-21 Theodore Tso <tytso@mit.edu>
171
172 * profile.c (profile_open_file): Fix memory leak if malloc() fails
173 while setting up the profile data structure.
174
Brian Behlendorf12f91952007-03-19 08:36:45 -04001752007-03-19 Theodore Tso <tytso@mit.edu>
176
Brian Behlendorfa4b66fb2007-03-19 08:58:47 -0400177 * pass3.c (check_directory): Add error check in case
178 e2fsck_get_dir_info() returns NULL. Also fix another
179 error check for e2fsck_get_dir_info() to display the
180 correct inode number in case of this internal (should
181 never happen) error.
182
Brian Behlendorf538e6542007-03-19 08:52:10 -0400183 * pass1b.c (clone_file): Fix a coverity-found bug; add error
184 checking in case dict_lookup() returns NULL when looking up
185 an block or inode record after cloning the EA block.
186
Brian Behlendorf12f91952007-03-19 08:36:45 -0400187 * profile.c (profile_init, get_dirlist): Fix bug where if a
188 profile directory is completely empty, the profile library
189 would segfault.
190
Theodore Ts'oa6d83022006-12-26 03:38:07 -05001912006-12-22 Theodore Tso <tytso@mit.edu>
192
193 * unix.c (PRS, main): Use the new {add,remove}_error_table comerr
194 interfaces instead of initialize_*_error_table.
195
Theodore Ts'o642935c2006-11-14 23:38:17 -05001962006-11-14 Theodore Tso <tytso@mit.edu>
197
198 * unix.c (PRS): Always allocate the replacement PATH environment
199 passed to putenv() to avoid gcc -Wall warning.
200
201 * pass1.c, pass2.c, profile.c, super.c: Remove unused variables
202 and fixed signed vs unsigned and const gcc -Wall warning.
203
204 * message.c (expand_inode_expression): Fix const gcc -Wall warning.
205
206 * journal.c (e2fsck_fix_ext3_journal_hint): Remove unusued
207 variables retval and problem.
208
Theodore Ts'o5d171192006-11-11 06:32:03 -05002092006-11-11 Theodore Tso <tytso@mit.edu>
210
Theodore Ts'of77704e2006-11-11 22:32:35 -0500211 * super.c (e2fsck_fix_dirhash_hint, check_super_block): If neither
212 the signed or unsigned dirhash hint, set it based on
213 default signed vs. unsigned character type in use by the
214 platform.
215
216 * problem.c, problem.h (PR_0_DIRHASH_HINT): Add new problem code.
217
218 * pass2.c (check_dir_block), rehash.c (fill_dir_block): Check the
219 superblock flags to determine whether to use the signed or
220 unsigned version of the hash should be used.
221
Theodore Ts'o5d171192006-11-11 06:32:03 -0500222 * problem.c, problem.h (PR_2_BLOCKS_HI_ZERO): Add new problem code.
223
224 * pass1.c (e2fsck_pass1), pass2.c (e2fsck_process_bad_inode):
225 Replace check for l_i_frag and l_i_fsize with one for
226 i_blocks_hi.
227
Theodore Ts'o8ade4792006-11-08 00:41:50 -05002282006-11-08 Theodore Tso <tytso@mit.edu>
229
230 * badblocks.c (read_bad_blocks_file): Change the last_block
231 argument passed to the badblocks program to be consistent
232 with the change to badblocks.
233
Theodore Ts'o977ac872006-10-21 23:27:03 -04002342006-10-21 Theodore Tso <tytso@mit.edu>
235
236 * pass2.c (parse_int_node): Don't core dump if there is a corrupt
237 htree interior node. If the block number is larger than
238 the number of blocks in the directory, don't write past
239 the end of malloc'ed memory. (Addresses SourceForge Bug:
240 #1512778)
241
Theodore Ts'o2d1fa592006-10-02 08:38:44 -04002422006-10-02 Theodore Tso <tytso@mit.edu>
243
244 * e2fsck.conf.5.in: Minor correction to man page.
245 (Addresses Debian bug #369761)
246
Theodore Ts'occe2f492006-10-01 22:18:08 -04002472006-10-01 Theodore Tso <tytso@mit.edu>
248
249 * Makefile.in (DEPLIBBLKID): Use DEPLIBBLKID not LIBBLKID to
250 define the dependencies used by the blkid library.
251
Eric Sandeenbb1a46a2006-09-12 14:55:22 -04002522006-08-30 Eric Sandeen <esandeen@redhat.com>
253
Eric Sandeend1b4b852006-09-12 14:56:18 -0400254 * pass1.c (handle_bad_fs_blocks): use blk_t, not int for first_block.
255
2562006-08-30 Eric Sandeen <esandeen@redhat.com>
257
Eric Sandeenf3358642006-09-12 14:56:17 -0400258 * unix.c (show_stats): use ext2_ino_t for inode containers.
259
2602006-08-30 Eric Sandeen <esandeen@redhat.com>
261
Eric Sandeenabf23432006-09-12 14:56:16 -0400262 * pass1.c (new_table_block, handle_fs_bad_blocks):
263 * super.c (check_super_block):
264 Use new inlines to calculate group first & last blocks.
265
2662006-08-30 Eric Sandeen <esandeen@redhat.com>
267
Eric Sandeend0ff90d2006-09-12 14:56:15 -0400268 * e2fsck.h (e2fsck): Use unsigned types for filesystem counters.
269 * emptydir.c (add_empty_dirblock):
270 * iscan.c (main):
271 * unix.c (show_stats, check_if_skip): Fix printf formats.
272
2732006-08-30 Eric Sandeen <esandeen@redhat.com>
274
Eric Sandeen62c6d142006-09-12 14:56:12 -0400275 * pass1.c (handle_fs_bad_blocks): Remove unused variables.
276
2772006-08-30 Eric Sandeen <esandeen@redhat.com>
278
Eric Sandeenbb1a46a2006-09-12 14:55:22 -0400279 * pass1b.c (check_if_fs_block): Change block group loop to use
280 a common pattern of first_block/last_block, etc.
281
282 * super.c (check_super_block): Avoid overflows when iterating over
283 group descriptors on very large filesystems
284
Eric Sandeen5830d6b2006-08-30 02:16:55 -04002852006-08-30 Theodore Tso <tytso@mit.edu>
286
287 * pass5.c (check_inode_bitmaps, check_inode_end, check_block_end):
288 * pass4.c (e2fsck_pass4): Fix potential overflow problems when the
289 number of blocks is close to 2**31.
290
Theodore Ts'oa3e025c2006-08-29 17:12:18 -04002912006-08-29 Theodore Tso <tytso@mit.edu>
292
293 * super.c (release_inode_blocks): Fix silly spelling error.
294 (Addresses SourceForge Bug: #1531372)
295
Theodore Ts'o9c07dc02006-05-29 11:06:16 -04002962006-05-29 Theodore Tso <tytso@mit.edu>
297
298 * pass1b.c: Add missing semicolon when HAVE_INTPTR_T is not defined
299
Theodore Ts'o9447f382006-05-22 17:59:37 -04003002006-05-22 Theodore Tso <tytso@mit.edu>
301
302 * e2fsck.8.in: Fixed spelling mistake. (Addresses Debian Bug:
303 #368392)
304
Theodore Ts'o2aa362f2006-05-14 17:16:29 -04003052006-05-14 Theodore Tso <tytso@mit.edu>
306
307 * recovery.c (do_one_pass), journal.c (e2fsck_get_journal): Add
308 missing brelse() calls to avoid memory leaks in error
309 paths. (Thanks to Michael C. Thompson for pointing these
310 out; they were originally found using Coverity.)
311
Theodore Ts'of63978a2006-05-13 09:25:47 -04003122006-05-13 Theodore Tso <tytso@mit.edu>
313
314 * badblocks.c (read_bad_blocks_file): Pass the private option -X
315 to badblocks so that e2fsck -cc will work correctly.
316
Theodore Ts'of5fa2002006-05-08 20:17:26 -04003172006-05-08 Theodore Tso <tytso@mit.edu>
318
319 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add support
320 for the lazy_bg feature; if the block group does not have
321 an initialized block or inode bitmaps/table, emulate what
322 the allocation bitmap would look like if no blocks or
323 inodes have been allocated.
324
Theodore Ts'o1abdba42006-03-27 01:03:11 -05003252006-03-27 Theodore Ts'o <tytso@mit.edu>
326
Theodore Ts'ocd848232006-03-27 12:10:07 -0500327 * e2fsck.8.in: Add badblocks(8) to the See Also section.
328 (Addresses Debian Bug: #347295)
329
Theodore Ts'o1abdba42006-03-27 01:03:11 -0500330 * Makefile.in, e2fsck.conf.5.in: Add man page documenting the
331 configuration file /etc/e2fsck.conf.
332
Theodore Ts'o204ae372006-03-22 10:01:24 -05003332006-03-22 Theodore Ts'o <tytso@mit.edu>
334
335 * profile.c (profile_update_file, profile_parse_file, parse_line,
336 parse_std_line): Integrate profile_std_line() into
337 parse_line(), and profile_parse_file() into
338 profile_update_file() to make the code tighter.
339
Theodore Ts'o2e14e0c2006-03-18 20:01:09 -05003402006-03-18 Theodore Ts'o <tytso@mit.edu>
341
Takashi Sato8deb80a2006-03-18 21:43:46 -0500342 * unix.c (show_stats): Use blk_t instead of int when referring to
343 block numbers.
344
345 * emptydir.c, message.c, pass1b.c, pass2.c, recovery.c, unix.c:
346 Change printf statements to use %u instead of %d when
347 printing block numbers.
348
Theodore Ts'o2e14e0c2006-03-18 20:01:09 -0500349 * unix.c (main): If the filesystem is not mounted, open the
350 filesystem in exclusive mode (to prevent 2.6 kernels from
351 mounting the filesystem while it is being checked).
352
Theodore Ts'ob1c52b22006-03-10 15:25:59 -05003532006-03-10 Theodore Ts'o <tytso@mit.edu>
354
355 * e2fsck.h, journal.c (e2fsck_fix_ext3_journal_hint),
356 problem.c (PR_0_EXTERNAL_JOURNAL_HINT),
357 problem.h (PR_0_EXTERNAL_JOURNAL_HINT), super.c: Check
358 to see if the superblock hint for the external journal
359 needs to be updated, and if so, offer to update it.
360 (Addresses Debian Bug: #355644)
361
Theodore Ts'obc3392c2006-01-29 05:05:31 -05003622006-01-29 Theodore Ts'o <tytso@mit.edu>
363
364 * unix.c (check_if_skip): When skipping a check due to being on
Theodore Ts'oa5f37a92006-01-29 05:15:36 -0500365 battery, print an explanatory message to this effect. Add
366 an e2fsck configuration option defer_check_on_battery
367 which defaults to true. If the configuration option is
368 turned off, then e2fsck will not attempt to defer
369 filesystem checks when the system is running on battery.
Theodore Ts'obc3392c2006-01-29 05:05:31 -0500370 (Addresses Debain Bug: #350306)
371
Theodore Ts'o22fe6742006-01-06 15:04:39 -05003722006-01-06 Theodore Ts'o <tytso@mit.edu>
373
374 * profile.c (parse_std_line, dump_profile): Add support for
375 quoted strings in tag and section names. Changed
376 top-level section name parsing to ignore leading and
377 trailing whitespace.
378
Theodore Ts'o7d922f82006-01-05 03:56:19 -05003792006-01-05 Theodore Ts'o <tytso@mit.edu>
380
381 * profile.c (profile_init): If a directory is passed to
382 profile_init, then read all files which match [0-9a-zA-Z]*
383 in sort order. This allows handling of /etc/foo/conf.d
384 style directories.
385
Theodore Ts'of5f14fc2006-01-04 10:32:16 -05003862006-01-04 Theodore Ts'o <tytso@mit.edu>
387
Theodore Ts'od45544c2006-01-05 01:23:48 -0500388 * profile.c: Eliminate the prf_data_t data structure and fold it
389 back into prof_file_t. Eschew needless complexity!
390
Theodore Ts'o95a8d1d2006-01-05 00:47:34 -0500391 * profile.c: Change syntax accepted by the profile parser. The
392 value of profile relations must not contain spaces unless
393 it is quoted; otherwise the parser will throw an error.
394 Comments are allowed anywhere and can be started with
395 either a ';' or a '#' character. The only place where
396 comments will not be intepreted as beginning a comment is
397 in a quoted string.
398
Theodore Ts'of5f14fc2006-01-04 10:32:16 -0500399 * profile.c (profile_parse_file, profile_set_syntax_err_cb): Add
400 support for a syntax error callback to allow better error
401 reporting to the user.
402
403 * e2fsck(PRS): Set a profile syntax error callback so we can
404 report errors in /etc/e2fsck.conf.
405
Theodore Ts'o9a4c2092006-01-02 22:04:41 -05004062006-01-02 Theodore Ts'o <tytso@mit.edu>
407
408 * profile.c, profile_helpers.c, profile_helpers.h: Boil down and
409 simplify profile.c, and move extra functionality that's
410 not needed into profile_helpers.c
411
Theodore Ts'ocec71032006-01-01 21:31:45 -05004122006-01-01 Theodore Ts'o <tytso@mit.edu>
413
414 * profile.c: Fix #include of com_err.h so that it isn't required
415 that the com_err development environment be installed.
416 (Addresses Debian Bug: #345519)
417
Theodore Ts'oeb065cc2005-12-31 00:52:23 -05004182005-12-31 Theodore Ts'o <tytso@mit.edu>
419
Theodore Ts'o8fd98bb2005-12-31 16:33:33 -0500420 * problem.c (fix_problem), problemP.h: Add the ability for the
421 e2fsck configuration file to override the behaviour of
422 e2fsck when a particular filesystem problem is
423 encountered. This allows reconnecting an inode to
424 lost+found to not stop the boot sequence, if a system
425 administrator really badly wants this behaviour for some
426 specialized reason, for example.
427
Theodore Ts'oeb065cc2005-12-31 00:52:23 -0500428 * unix.c (main): If the e2fsck configuration file sets the
429 allow_cancellation option to be true, then if the
430 filesystem does not have any known problems, and was known
431 to be cleanly unmounted, then let e2fsck exit with a
432 status code of 0 instead of 32 (FSCK_CANCELED) so that the
433 bootup scripts will continue without stopping the boot.
434 (Addresses Debian Bug: #150295)
435
Theodore Ts'o2fa9ba92005-12-30 23:57:32 -05004362005-12-30 Theodore Ts'o <tytso@mit.edu>
437
Theodore Ts'o1017f652005-12-31 00:00:10 -0500438 * e2fsck.c (e2fsck_free_context), unix.c (PRS), e2fsck.h: Use
439 the profile library to read in the /etc/e2fsck.conf file
440 at startup.
441
Theodore Ts'o2fa9ba92005-12-30 23:57:32 -0500442 * profile.c, profile.h, prof_err.et: Add the profile library code
443 to e2fsck. The profile library was originally written by
444 Theodore Ts'o in 1995 for use in the MIT Kerberos v5
445 library. It has been modified/enhanced/bug-fixed over
446 time by other members of the MIT Kerberos team. This
447 version was originally taken from the Kerberos v5
448 distribution, version 1.4.2, and radically simplified for
449 use in e2fsprogs. (Support for locking for multi-threaded
450 operations, being able to modify and update the
451 configuration file programmatically, and Mac/Windows
452 portability have been removed. It has been folded into a
453 single C source file to make it easier to fold into an
454 application program.)
455
456 * argv_parse.c, argv_parse.h: Added auxiliary programs used only
457 for building the profile test program.
458
Theodore Ts'o311df052005-12-19 00:02:47 -05004592005-12-18 Theodore Ts'o <tytso@mit.edu>
460
461 * problem.c (PR_0_FUTURE_SB_LAST_MOUNT,
462 PR_0_FUTURE_SB_LAST_WRITE): Make these problems things
463 which can be fixd by preen, since Debian's boot sequence
464 bogusly doesn't set the time correctly until potentially
465 very late in the bootup process, and this can cause false
466 positives that will cause users' systems to fail to
467 booting. (Addresses Debian Bugs #343662 and #343645)
468
Theodore Ts'o84d35182005-12-09 17:28:56 -05004692005-12-09 Theodore Ts'o <tytso@mit.edu>
470
Theodore Ts'obba44f92005-12-09 18:18:06 -0500471 * e2fsck.8.in: Clarify that e2fsck -c does a read-only scan of the
472 device.
473
Theodore Ts'of4b6d2a2005-12-09 17:31:08 -0500474 * unix.c (PRS): Fix typo in error message; thanks to Solar
Theodore Ts'oae1182c2005-12-09 18:11:16 -0500475 Designer for pointing out the missing preposition.
476 (check_mount): Don't let the user run e2fsck -ccn on the
477 root partition, without warning that he or she might
478 be doing something Really Stupid.
Theodore Ts'of4b6d2a2005-12-09 17:31:08 -0500479
Theodore Ts'o84d35182005-12-09 17:28:56 -0500480 * e2fsck.8.in: Clarify description of differences between the -p,
481 -n, and -y options.
482
Theodore Ts'o8dceb922005-09-24 21:59:45 -04004832005-09-24 Theodore Ts'o <tytso@mit.edu>
484
485 * super.c (check_super_block), problem.c, problem.h: Detect if the
486 superblock's last mount field or last write field is in
487 the future, and offer to fix if so. (Addresses Debian Bug
488 #327580)
489
Theodore Ts'o27431592005-07-25 11:36:43 -05004902005-07-25 Theodore Ts'o <tytso@mit.edu>
491
Theodore Ts'ob28a6e92005-07-25 11:36:43 -0500492 * unix.c (main): Fix a use-after-free bug of the e2fsck context
493 structure at the very end of the e2fsck run.
494
Theodore Ts'o27431592005-07-25 11:36:43 -0500495 * pass1.c (pass1_write_inode): Fix false positive from valgrind;
496 don't do a needless structure copy via an assignment when
497 it is a no-op.
498
Theodore Ts'of76344f2005-07-04 12:53:36 -05004992005-07-04 Theodore Ts'o <tytso@mit.edu>
500
Theodore Ts'o49809dd2005-07-04 13:08:37 -0500501 * problem.c: Remove period from the Pass 1C header, to be
502 consistent with the other Pass headers.
503
Theodore Ts'of76344f2005-07-04 12:53:36 -0500504 * pass2.c (e2fsck_process_bad_inode): Fixed bug which could cause
505 e2fsck to core dump if a disconnected inode contained an
506 extended attribute. This was actually caused by two bugs.
507 The first bug is that if the inode has been fully fixed
508 up, the code will attempt to remove the inode from the
509 inode_bad_map without checking to see if this bitmap is
510 present. Since it is cleared at the end of pass 2, if
511 e2fsck_process_bad_inode is called in pass 4 (as it is for
512 disconnected inodes), this would result in a core dump.
513 This bug was mostly hidden by a second bug, which caused
514 e2fsck_process_bad_inode() to consider all inodes without
515 an extended attribute to be not fixed. (Addresses Debian
516 Bug: #316736)
517
Theodore Ts'o1f965c82005-06-30 20:06:45 -04005182006-06-30 Theodore Ts'o <tytso@mit.edu>
519
520 * Release of E2fsprogs 1.38
521
Theodore Ts'obb145b02005-06-20 08:35:27 -04005222005-06-20 Theodore Ts'o <tytso@mit.edu>
523
524 * unix.c (usage, parse_extended_opts): Clean up messages printed
Theodore Ts'o5327bb42005-06-26 22:12:40 -0400525 by e2fsck for grammar and consistency.
Theodore Ts'obb145b02005-06-20 08:35:27 -0400526
Theodore Ts'o73d1d492005-06-19 21:04:12 -04005272005-06-19 Theodore Ts'o <tytso@mit.edu>
528
529 * e2fsck.8.in: Make it clear that the -c, -l, and -L options are
530 never safe to use on a mounted filesystem, and in general,
531 running e2fsck on mounted filesystems is a bad idea.
532
Theodore Ts'o7ae19832005-06-19 09:45:36 -04005332005-06-16 Theodore Ts'o <tytso@mit.edu>
534
535 * message.c: Add @m (multiply-claimed) and @n (invalid)
536 expansions.
537
Theodore Ts'o5327bb42005-06-26 22:12:40 -0400538 * problem.c: Clean up the problem messages displayed by e2fsck,
539 mostly based on suggestions from Benno Schulenberg.
Theodore Ts'o7ae19832005-06-19 09:45:36 -0400540
Theodore Ts'o15f50512005-06-05 16:46:19 -04005412005-06-05 Theodore Ts'o <tytso@mit.edu>
542
543 * e2fsck.8.in: Add a request to the REPORTING BUGS section of the
544 man page to make sure that e2fsck's messages are printed
545 in English, and to send a raw e2image filesystem dump if
546 possible.
547
Theodore Ts'of37ab682005-05-05 23:15:55 -04005482005-05-05 Theodore Ts'o <tytso@mit.edu>
549
550 * badblocks.c (check_bb_inode_blocks): Clean up warning printf.
551 Thanks to Benno Schulenberg for the patch. (Addresses
552 Sourceforge Bug: #1189803)
553
Theodore Ts'o81393672005-04-16 14:05:09 -04005542005-04-16 Theodore Ts'o <tytso@mit.edu>
555
556 * e2fsck.8.in: Fix spelling mistakes in man pages. (Addresses
557 Debian Bugs: #304593)
558
Theodore Ts'o1f3ad142005-04-14 14:07:53 -04005592005-04-14 Theodore Ts'o <tytso@mit.edu>
560
Theodore Ts'o5e916142005-04-14 17:10:14 -0400561 * pass1b.c (pass1d): Don't offer to clone or delete the resize
562 inode; it's not allowed!
563
Theodore Ts'o1f3ad142005-04-14 14:07:53 -0400564 * e2fsck.c, e2fsck.h, journal.c, pass1.c, pass1b.c, pass2.c,
565 pass3.c, pass4.c, super.c, unix.c: Use a centrally stored
566 current time for "now" which can be overridden using the
567 E2FSCK_TIME environment variable, for better
568 reproducibility for regression tests.
569
Theodore Ts'o4147d9f2005-04-06 14:55:53 -04005702005-04-06 Theodore Ts'o <tytso@mit.edu>
571
572 * pass1.c (e2fsck_pass1): If the superblock last mount time (not
573 just the last write time) looks insane, then assume that
574 we can't do the LOW_DTIME checks.
575
Theodore Ts'ocebe48a2005-03-21 13:15:45 -05005762005-03-21 Theodore Ts'o <tytso@mit.edu>
577
Theodore Ts'ofd4b28e2005-03-21 22:37:03 -0500578 * Release of E2fsprogs 1.37
579
5802005-03-21 Theodore Ts'o <tytso@mit.edu>
581
Theodore Ts'ocebe48a2005-03-21 13:15:45 -0500582 * message.c, pass1.c, problem.c, problem.h, util.c: Integrate code
583 from Alex Thomas at Clusterfs to check extended attributes
584 stored in inodes.
585
586 * message.c (expand_inode_expression): Add support for %IS in
587 problem descriptions. Note that this only works if the
588 problem context has a pointer to a large inode!
589
590 * problem.h, problem.c (PR_1_EXTRA_ISIZE, PR_1_ATTR_NAME_LEN,
591 PR_1_ATTR_VALUE_OFFSET, PR_1_ATTR_VALUE_BLOCK,
592 PR_1_ATTR_VALUE_SIZE, PR_1_ATTR_HASH): Add new problem
593 codes.
594
595 * util.c (e2fsck_write_inode_full): New function.
596
597 * pass1.c (check_ea_in_inode, check_inode_extra_space): New
598 function which tests the validity of extended attributes
599 stored in a large inode.
600 (e2fsck_pass1): Call ext2fs_get_next_inode_full() instead
601 of get_next_inode(), and use an allocated inode which is
602 big enough to store extra portion of large inodes.
603
Theodore Ts'odc71f232005-03-20 16:57:10 -05006042005-03-20 Theodore Ts'o <tytso@mit.edu>
605
Theodore Ts'o89db86d2005-03-20 22:47:54 -0500606 * super.c (check_super_block): Add sanity checks for the
607 superblock's inode_size field.
608
Theodore Ts'o030970e2005-03-20 20:05:22 -0500609 * pass3.c (check_root, e2fsck_get_lost_and_found): Call
610 ext2fs_write_new_inode() instead of ext2fs_write_inode().
611
Theodore Ts'odc71f232005-03-20 16:57:10 -0500612 * pass1.c (check_blocks): Move counting the extended attribute
613 block earlier so that we don't have to worry about
614 num_blocks wrapping for files which are too big.
615
Theodore Ts'o3eee5e92005-02-05 18:26:03 -05006162006-02-05 Theodore Ts'o <tytso@mit.edu>
617
618 * Release of E2fsprogs 1.36
619
Theodore Ts'o33db8f82005-02-05 10:28:15 -05006202005-02-04 Theodore Ts'o <tytso@mit.edu>
621
622 * pass2.c (e2fsck_pass2), problem.c (PR_2_HTREE_FCLR), problem.h
623 (PR_2_HTREE_FCLR): Remove support for
624 --enable-clear-htree; this was only needed during the
625 early development of the htree patch.
626
Theodore Ts'oea774312005-01-28 11:45:28 -05006272005-01-28 Theodore Ts'o <tytso@mit.edu>
628
Theodore Ts'oa894eb42005-01-28 12:27:35 -0500629 * pass2.c (e2fsck_process_bad_inode): Fix a corner case involving
630 big-endian systems, long symlinks and i_file_acl set when
631 it shouldn't be. Without this bugfix, f_clear_xattr will
632 fail on big-endian machines.
633
Theodore Ts'oea774312005-01-28 11:45:28 -0500634 * super.c (check_resize_inode): Deal with the case where the
635 resize inode can't be read; don't try to recreate the
636 resize inode unless the resize feature is actually
637 enabled.
638
Theodore Ts'o6c313fd2005-01-27 14:28:41 -05006392005-01-27 Theodore Ts'o <tytso@mit.edu>
640
Theodore Ts'od4dc0a92005-01-27 18:47:51 -0500641 * super.c (check_resize_inode): If the resize inode has a zero
642 i_links_count or isn't a regular file, consider the resize
643 inode as invalid, and offer to recreate it.
644
Theodore Ts'o6c313fd2005-01-27 14:28:41 -0500645 * pass2.c (e2fsck_process_bad_inode): Offer to clear i_file_acl
646 before checking to see if an invalid inode should be
647 removed, since otherwise the fast symlink detection code
648 can get confused. Also clear the inode's entry in
649 inode_bad_map if the inode has been completely fixed.
650 (Addresses Red Hat Bugzilla #146284)
651
Theodore Ts'o550a4af2005-01-25 03:09:24 -05006522005-01-25 Theodore Ts'o <tytso@mit.edu>
653
654 * unix.c (main, check_if_skip): Set the valid flag earlier, and if
655 it is cleared by the superblock tests, then assume that
656 the filesystem contains errors and must be checked.
657
658 * super.c (check_super_block): Check the individual block group
659 inode and block free counts, as well as the filesystem
660 inode and block free counts. If any of the block/inode
661 free counts is too large, force a full filesystem check.
662 (Addresses Debian Bug: #291571)
663
Theodore Ts'o9214dcc2005-01-19 13:57:40 -05006642005-01-19 Theodore Ts'o <tytso@mit.edu>
665
666 * unix.c (e2fsck_simple_progress): Use fixed integer math
667 to check to see if we're at 0 or 100%
668 (is_on_batt): Clean up gcc -Wall warning
669 (main): Remove dead code
670
Matthias Andree4b137042005-01-13 03:35:29 +01006712005-01-13 Matthias Andree <matthias.andree@gmx.de>
672
673 * unix.c: Do not call closedir if the handle is zero, to avoid
674 crashes when the /proc/acpi/ac_adapter directory is
675 missing, for instance on non-ACPI or non-Linux systems.
676
Theodore Ts'od2ee56d2005-01-09 00:57:45 -05006772005-01-09 Theodore Ts'o <tytso@mit.edu>
678
679 * pass1b.c: As part of converting configure.in from using the
680 "broken by design" 2.13 version of AC_CHECK_TYPE to
681 AC_CHECK_TYPES, if intptr_t isn't defined, manually
682 typedef it to long. (Addresses Debian Bug #289133)
683
Theodore Ts'odc8ce342005-01-06 00:04:24 -05006842005-01-06 Theodore Ts'o <tytso@mit.edu>
685
686 * super.c (check_resize_inode): Use ext2fs_{read,write}_ind_block
687 so that byte swapping is handled on big-endian systems.
Theodore Ts'o22ba4c12005-01-06 14:05:17 -0500688 (check_super_block): Allow the number of reserved blocks
689 to be 50% of the number of blocks available, in order to
690 be consistent to what is allowed by tune2fs.
Theodore Ts'odc8ce342005-01-06 00:04:24 -0500691
Theodore Ts'oc3ffaf82004-12-24 01:42:22 -05006922004-12-24 Theodore Ts'o <tytso@mit.edu>
693
694 * pass1.c (e2fsck_pass1): At the end of the pass 1 processing, if
695 we have been signalled to do so, recreate the resize inode.
696
697 * super.c (check_resize_inode): New function which checks to make
698 sure the resize inode is valid. It is called by
699 check_super_block(). If it is invalid, it will signal to
700 pass1.c that the resize inode needs to recreate.
701
702 * e2fsck.h (E2F_FLAG_RESIZE_INODE): New flag
703
704 * problem.c, problem.h (PR_0_RESIZE_INODE_INVALID,
705 PR_1_RESIZE_INODE_CREATE): Add new problem codes.
706
Theodore Ts'o71669d02004-12-23 21:49:05 -05007072004-12-23 Theodore Ts'o <tytso@mit.edu>
708
709 * swapfs.c (swap_inodes): Since swap_inodes bypasses the inode
710 cache for speed reasons, we must flush it to avoid cache
711 coherency problems.
712
Theodore Ts'oe75cfc52004-12-16 20:13:45 -05007132004-12-16 Theodore Ts'o <tytso@mit.edu>
714
715 * super.c (check_super_block): If the resize_inode feature is not
716 set, check to make sure that s_reserved_gdt_blocks is
717 zero, and that the resize inode is clear.
718
719 * problem.h (PR_0_NONZERO_RESERVED_GDT_BLOCKS,
720 PR_0_CLEAR_RESIZE_INODE): Add new problem codes.
721
Theodore Ts'o22c68212004-12-15 17:26:32 -05007222004-12-15 Theodore Ts'o <tytso@mit.edu>
723
724 * pass1.c (process_block): Applied resize inode patch. Mark the
725 DIND block of the resize inode as being in use.
726
Theodore Ts'o6d402272004-12-14 21:46:26 -05007272004-12-14 Theodore Ts'o <tytso@mit.edu>
728
Theodore Ts'o522798d2004-12-15 11:28:55 -0500729 * Makefile.in: Move strip command to install-strip target.
730 Use Linux-kernel-style makefile output for "make install"
731
Theodore Ts'o6d402272004-12-14 21:46:26 -0500732 * Makefile.in (installdirs): Use $(MKINSTALLDIRS) macro.
733 Remove sync in the "all" target.
734
Theodore Ts'o47204ff2004-11-30 10:52:27 -05007352004-11-30 Theodore Ts'o <tytso@mit.edu>
736
Theodore Ts'o8ff1a862004-11-30 19:57:20 -0500737 * message.c (expand_inode_expression): If the TZ environment
738 variable is set to GMT, use gmtime() instead of
739 localtime() or ctime() to force the use of GMT. This is
740 because the dietlibc doesn't honor the TZ environment
741 variable.
742
Theodore Ts'o2e8ca9a2004-11-30 14:07:11 -0500743 * e2fsck.h: Add io_options to e2fsck_struct
744
745 * unix.c: If there is a question mark in the device name, separate
746 out the options to the IO layer, and pass it on to
747 ext2fs_open2().
748
Theodore Ts'o47204ff2004-11-30 10:52:27 -0500749 * Makefile.in: Use Linux-kernel-style makefile output to make it
750 easier to see errors/warnings.
751
Richard Mortimer6e4fbbe2004-10-04 17:56:24 +01007522004-10-04 Richard Mortimer <richm@oldelvet.org.uk>
753
754 * journal.c (e2fsck_check_ext3_journal): Attempt recovery of the
755 filesystem if the journal contains illegal block numbers.
756
Theodore Ts'o8421fb62004-07-26 20:11:49 -04007572004-07-26 Theodore Ts'o <tytso@mit.edu>
758
759 * pass1.c (process_block): Change the limit of directory size from
760 32 MB to 2GB.
761
Theodore Ts'o93effaa2004-05-26 20:58:45 -04007622004-05-11 Theodore Ts'o <tytso@mit.edu>
763
764 * journal.c (sync_blockdev): Flush I/O caches to preserve ordering
765 constraints required by the journal recovery code. Thanks
766 to Junfeng Yang from the Stanford Metacompilation group
767 for pointing this out.
768
769 * jfs_user.h: Define sync_blockdev() as an emulated function,
770 instead just being a no-op.
771
Theodore Ts'o66fbee82004-05-04 20:38:17 -04007722004-05-04 Theodore Ts'o <tytso@mit.edu>
773
774 * unix.c (check_if_skip): If the checkinterval is zero, then
775 disregard it when calculating when the next check will
776 take place.
777
Theodore Ts'oc07f9f22004-04-12 00:16:44 -04007782004-04-12 Theodore Ts'o <tytso@mit.edu>
779
780 * unix.c (is_on_batt): Be more flexible about the name of the ACPI
781 device that corresponds to the AC adapter. (Addresses
782 Debian bug #242136)
783
Theodore Ts'odd607052004-04-03 13:53:46 -05007842004-04-03 Theodore Ts'o <tytso@mit.edu>
785
786 * Makefile.in: Update the modtime even if subst doesn't need to
787 update the e2fsck man page, to avoid always re-running
788 subst, especially since there are no dependencies on the
789 man page.
790
Theodore Ts'ob70b1162004-02-28 10:52:35 -05007912004-02-28 Theodore Ts'o <tytso@mit.edu>
792
793 * Release of E2fsprogs 1.35
794
Theodore Ts'o4fb9d522004-02-24 00:16:09 -05007952004-02-24 Theodore Ts'o <tytso@mit.edu>
796
797 * unix.c (main, PRS), e2fsck.8.in: Add a new -k option which keeps
798 the existing badblocks list when using the -c option.
799 (Addresses Debian bug #229103)
800
Theodore Ts'oed52f622004-02-23 21:26:23 -05008012004-02-23 Theodore Ts'o <tytso@mit.edu>
802
803 * Makefile.in (PROFILED_LIBS, PROFILED_DEPLIBS): Fix reference to
804 libblkid so that the build will work with --enable-profile
805 (Addresses Sourceforge bug #811408)
806
Theodore Ts'obbbc92f2004-02-21 20:53:03 -05008072004-02-14 Theodore Ts'o <tytso@mit.edu>
808
809 * e2fsck.c (e2fsck_run): Clear the SETJMP_OK flag when returning
810 so we don't double longjump into an invalid stack frame.
811 (Thanks to Matthias Andree for providing this fix.)
812
Theodore Ts'o489f0022004-01-31 21:24:51 -05008132004-01-31 Theodore Ts'o <tytso@mit.edu>
814
815 * problem.c (fix_problem): Don't call print_e2fsck_message if the
816 message is empty; otherwise, the NLS substitution will
817 print the .po header, which is Just Wrong.
818
Theodore Ts'o1ba7a2f2004-01-30 01:48:06 -05008192004-01-30 Theodore Ts'o <tytso@mit.edu>
820
821 * pass2.c (deallocate_inode_block): Check to make sure the block
822 number is invalid before deallocating it, to avoid core
823 dumping e2fsck.
824
Theodore Ts'o2e5fcce2003-12-12 03:00:56 -05008252003-12-12 Theodore Ts'o <tytso@mit.edu>
826
827 * pass3.c (check_directory): When reconnecting a directory, we may
828 need to create a lost+found directory. This may
829 invalidate our pointer to the directory information, so we
830 must look it up again after calling
831 e2fsck_reconnect_file(). (Addresses Debian bug #219640).
832
Theodore Ts'o6c7d61d2003-12-11 01:00:21 -05008332003-12-10 Theodore Ts'o <tytso@mit.edu>
834
835 * e2fsck.h (E2F_FLAG_RESTARTED): Assign a unique flag bitfield to
836 E2F_FLAG_RESTARTED. This fixes a bug where if the user
837 specifies an alternate superblock, and the journal needs
838 to be replayed, e2fsck would erroneously assume that
839 journal had been run already without clearing the
840 NEEDS_RECOVERY flag, and bomb out with an error.
841
Theodore Ts'o3de085d2003-12-07 01:00:02 -05008422003-12-07 Theodore Ts'o <tytso@mit.edu>
843
Theodore Ts'o54434922003-12-07 01:28:50 -0500844 * badblocks.c, dict.c, ea_refcount.c, ehandler.c, journal.c,
845 pass1.c, pass1b.c, pass2.c, pass3.c, pass5.c, problem.c,
846 rehash.c, super.c, swapfs.c, unix.c, util.c, e2fsck.h: Fix
847 gcc -Wall nitpicks.
848
Theodore Ts'o3de085d2003-12-07 01:00:02 -0500849 * recovery.c, jfs_user.h: Sync recovery.c with latest 2.5 kernel
850 version.
851
Theodore Ts'o3ddf2f62003-12-02 07:56:42 -05008522003-12-02 Theodore Ts'o <tytso@mit.edu>
853
854 * unix.c (main): When testing a disk using e2fsck -c, use the list
855 of new bad blocks to replace the current list of bad
856 blocks. This way "e2fsck -c" can be used to recover from
857 a corrupted bad block inode.
858
859 * badblocks.c (test_disk): Remove the test_disk() file; e2fsck
860 will just call read_bad_blocks_file() directly with the
861 file parameter set to NULL.
862
Theodore Ts'o015b03d2003-11-21 11:02:22 -05008632003-09-14 Theodore Ts'o <tytso@mit.edu>
864
865 * unix.c (is_on_batt, check_if_skip): If running on battery, then
866 give an extra grace period before actually forcing a
867 check. That way the laptop will be biased to waiting
868 until we are on AC power before doing the filesystem
869 check. (Addresses Debian bug #205177)
870
Theodore Ts'o000ba402003-11-21 10:41:58 -05008712003-09-13 Theodore Ts'o <tytso@mit.edu>
872
Theodore Ts'o6de289c2003-11-21 10:54:54 -0500873 * unix.c (check_if_skip): If the number of mounts until the next
874 forced filesystem check is 5 or less, mention this to the
875 user. (Addresses Debian bug #157194)
876
Theodore Ts'o000ba402003-11-21 10:41:58 -0500877 * pass1.c (e2fsck_pass1), problem.h (PR_1_BB_FS_BLOCK),
878 problem.c (PR_1_BB_FS_BLOCK, PR_1_BBINODE_BAD_METABLOCK_PROMPT):
879 Fix up the handling of corrupted indirect blocks in the
880 bad block. We now correctly handle the case where there
881 is an overlap between a block group descriptor or
882 a superblock and a bad block indirect block. In the case
883 where the indirect block is corrupted, we now suggest
884 "e2fsck -c".
885
Theodore Ts'o817e49e2003-11-21 09:10:29 -05008862003-09-12 Theodore Ts'o <tytso@mit.edu>
887
888 * unix.c (PRS): Check the returned name from blkid_get_devname and
889 print an error if the requested LABEL/UUID does not exist.
890
Theodore Ts'oef344e12003-11-21 09:02:21 -05008912003-09-03 Theodore Ts'o <tytso@mit.edu>
892
893 * pass1.c (mark_table_blocks): Use the new function
894 ext2fs_reserve_super_and_bgd to calculate the blocks to be
895 reserved.
896
Theodore Ts'oa7ac1df2003-08-24 17:56:41 -04008972003-08-24 Theodore Ts'o <tytso@mit.edu>
898
Theodore Ts'o557ddb22003-08-24 21:36:38 -0400899 * util.c (get_backup_sb): Check to make sure the context is passed
900 in non-NULL before trying to dereference it. Otherwise we
901 might core dump when called to expand %S in a problem
902 description.
903
Theodore Ts'oa7ac1df2003-08-24 17:56:41 -0400904 * e2fsck.8.in: Adjust description line so that apropos
905 "ext2" or "ext3" will find the man page. (Addresses
906 Debian Bug #206845)
907
Theodore Ts'o27479eb2003-08-21 08:59:38 -04009082003-08-21 Theodore Ts'o <tytso@mit.edu>
909
910 * journal.c (e2fsck_move_ext3_journal): When moving the journal or
911 backing up the journal inode, make sure it gets written to
912 all the superblocks.
913
Theodore Ts'oa435ec32003-08-21 00:40:26 -04009142003-08-20 Theodore Ts'o <tytso@mit.edu>
915
916 * journal.c (e2fsck_move_ext3_journal): If the superblock's backup
917 journal information is not set, copy the journal inode
918 information to the superblock.
919 (e2fsck_get_journal): If the journal inode is corrupted,
920 synthesize one from the backup information in the
921 superblock.
922
923 * problem.c, problem.h (PR_0_BACKUP_JNL): Add new problem code
924 which is used when we make a backup of the journal inode.
925
Theodore Ts'o54a31a32003-08-19 10:08:34 -04009262003-08-19 Theodore Ts'o <tytso@mit.edu>
927
928 * e2fsck.h, unix.c (PRS, e2fsck_clear_progbar,
929 e2fsck_simple_progress): Don't print the ^A and ^B
930 characters which bracket the progress bar when the e2fsck
931 program is talking directly to a tty, but only when it is
932 being piped to another program. (Addresses Debian bug
933 #204137)
934 * unix.c: Move some initialized variables to the BSS segment to
935 shrink the size of the e2fsck executable.
936
Theodore Ts'oc4e3d3f2003-08-01 09:41:07 -04009372003-08-01 Philipp Thomas <pthomas@suse.de>
938
Theodore Ts'o0c193f82003-08-01 14:26:23 -0400939 * Include inttypes.h if present. New macros INT_TO_VOIDPTR and
940 VOIDPTR_TO_INT. Use them throughout for int<->void *
941 casts to fix 64-bit warnings.
942
Theodore Ts'oc4e3d3f2003-08-01 09:41:07 -0400943 * dirinfo.c, dx_dirinfo.c, e2fsck.c, ea_refcount.c, journal.c,
944 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
945 pass5.c, super.c, swapfs.c: ext2fs_getmem(),
946 ext2fs_free_mem(), and ext2fs_resize_mem() all now take a
947 'void *' instead of a 'void **' in order to avoid pointer
948 aliasing problems with GCC 3.x.
949
Theodore Ts'o9c7ec172003-07-26 01:03:34 -04009502003-07-25 Theodore Ts'o <tytso@mit.edu>
951
952 * Release of E2fsprogs 1.34
953
Theodore Ts'o48e6e812003-07-06 00:36:48 -04009542003-07-06 Theodore Ts'o <tytso@mit.edu>
955
956 * pass2.c: Fix gcc -Wall nitpicks (missing #include <string.h>)
957
958 * dict.c, dict.h: Fix gcc -Wall nitpicks (indented cpp directives)
959
Theodore Ts'od3128cc2003-06-24 18:06:03 -04009602003-06-8 Theodore Ts'o <tytso@mit.edu>
961
962 * problem.c: Fix spelling error.
963
Theodore Ts'o113e4052003-05-17 21:00:46 -04009642003-05-17 Theodore Ts'o <tytso@mit.edu>
965
966 * unix.c (show_stats), e2fsck.h: Use ngettext (abbreivated with
967 the macro P_(str1, str2, n)) to simplify the statistics
968 reporting.
969
Theodore Ts'o2a29f132003-05-05 12:08:47 -04009702003-05-05 Theodore Ts'o <tytso@mit.edu>
971
972 * unix.c (main): If --enable-testio-debug is set, then use the
973 test_io manager so we can watch what e2fsck is doing.
974
Theodore Ts'oa04eba32003-05-03 16:35:17 -04009752003-05-03 Theodore Ts'o <tytso@mit.edu>
976
Theodore Ts'oddc32a02003-05-03 18:45:55 -0400977 * unix.c (show_stats): Remove uneeded use of _() around string
978 under #ifndef NLS
979
980 * problem.c: Mark two strings (PR_1_RELOC_TO and
981 PR_2_NON_UNIQUE_FILE) as not being printf format strings.
982 Fix typo (doubled 'is') in PR_2_FILE_ACL_BAD.
983
Theodore Ts'oa04eba32003-05-03 16:35:17 -0400984 * Makefile.in: Add $(LIBINTL) to the link line so we can support
985 using the internal gettext library.
986
987 * e2fsck.h: Add #ifndef protection around LOCALEDIR definition.
988
Theodore Ts'o6177c412003-04-27 17:34:14 -04009892003-04-27 Theodore Ts'o <tytso@mit.edu>
990
991 * message.c (expand_at_expression): Fixed NLS support for message
992 abbreviations.
993
Theodore Ts'o71df0dc2003-04-21 16:17:09 -04009942003-04-21 Theodore Ts'o <tytso@mit.edu>
995
996 * Release of E2fsprogs 1.33
997
Theodore Ts'o520ead32003-04-19 13:48:27 -04009982003-04-19 Theodore Ts'o <tytso@mit.edu>
999
1000 * rehash.c: Fix lint warnings by including string.h and ctype.h
1001
1002 * pass2.c (dict_de_cmp): Fix lint warnings by using const pointers.
1003
1004 * unix.c (e2fsck_simple_progress), e2fsck.h: Fix lint warnings by
1005 using const pointers. Remove unused variables.
1006
Theodore Ts'o12dd69f2003-04-17 21:55:38 -040010072003-04-17 Theodore Ts'o <tytso@mit.edu>
1008
1009 * rehash.c (name_cmp): Sort the deleted inodes to the end of the
1010 list, for portability to systems that whose qsort does not
1011 perform a stable sort.
1012
Theodore Ts'obc34d6b2003-04-16 14:05:06 -040010132003-04-16 Theodore Ts'o <tytso@mit.edu>
1014
1015 * unix.c: Bracket progress bar output with control-A and control-B
1016 characters. These characters are used as in-band
1017 signalling to allow a logging program to filter out the
1018 progress bar.
Theodore Ts'o908b7852003-04-16 15:20:13 -04001019 (PRS): Use setvbuf instead of setbuf to force stdout and
1020 stderr to be non-buffered when the stdout/stderr are a pipe.
Theodore Ts'o12dd69f2003-04-17 21:55:38 -04001021 This fixes a cosmetic problem when using e2fsck under
1022 logsave.
Theodore Ts'o908b7852003-04-16 15:20:13 -04001023
Theodore Ts'offf45482003-04-13 00:44:19 -040010242003-04-12 Theodore Ts'o <tytso@mit.edu>
1025
1026 * unix.c: Add #ifdef around #include <sys/ioctl.h>
1027
Theodore Ts'o2a77a782003-04-05 22:50:44 -050010282003-04-05 Theodore Ts'o <tytso@mit.edu>
1029
1030 * super.c (check_super_block): Update the global free block and
1031 inode counters from the block group specific counters
1032 quietly. This is needed for an experimental patch which
1033 eliminates locking the entire filesystem when allocating
1034 blocks or inodes; if the filesystem is not unmounted
1035 cleanly, the global counts may not be accurate.
1036
Theodore Ts'oaa75ecc2003-03-17 10:01:22 -050010372003-03-17 Theodore Ts'o <tytso@mit.edu>
1038
1039 * util.c: Explicitly declare e2fsck_global_ctx as extern for the
1040 benefit of the Apple Darwin port.
1041
Theodore Ts'o1d2eef42003-03-15 13:30:07 -050010422003-03-15 Theodore Ts'o <tytso@mit.edu>
1043
1044 * rehash.c (e2fsck_rehash_dir): If user specified the -n option,
1045 skip trying to write out directory.
1046 (e2fsck_rehash_directories): Fix the percentage
1047 calculation in the progress bar.
1048
Theodore Ts'ob0700a12003-03-14 01:43:56 -050010492003-03-14 Theodore Ts'o <tytso@mit.edu>
1050
Theodore Ts'o12dd69f2003-04-17 21:55:38 -04001051 * problem.c, problem.h (PR_2_REPORT_DUP_DIRENT): Add new problem
1052 code.
Theodore Ts'o09266682003-03-14 22:19:10 -05001053
1054 * pass2.c (check_dir_block): Check for duplicate filenames within
1055 a single directory block (because this is the easy case;
1056 we don't currently check for duplicates that span
1057 directory blocks, for now. Eventually for htree
1058 directories we can do this by searching for all directory
1059 blocks that have a hash overflow, and then searching the
1060 adjacent blocks to find all other potential duplicates.)
1061
Theodore Ts'oe71d8732003-03-14 02:13:48 -05001062 * iscan.c, scantest.c, unix.c: And #ifdef protection around
1063 #include of malloc.h
1064
Theodore Ts'ob0700a12003-03-14 01:43:56 -05001065 * rehash.c (duplicate_search_and_fix): Now search for duplicates
1066 filenames, and either prompt to remove a complete
1067 duplicate entry, or to rename a duplicate filename.
1068 (e2fsck_rehash_dir): Use a progress bar to report
1069 progress, and don't print all of the directory inodes as
1070 they are optimized.
1071
1072 * problem.c, problem.h (PR_2_DUPLICATE_DIRENT,
1073 PR_2_NON_UNIQUE_FILE): New problem codes.
1074
1075 * unix.c (e2fsck_simple_progress), e2fsck.h: New function which
1076 can be called to provide specialized progress bars that
1077 are not related to the top-level pass-based completion
1078 percentage.
1079
1080 * pass3.c (e2fsck_adjust_inode_count), e2fsck.h: Export previously
1081 static function.
1082
Theodore Ts'o77be4d22003-03-06 12:39:55 -050010832003-03-06 <tytso@mit.edu>
1084
1085 * e2fsck.8.in: Fix minor nit in the -C option. (Addresses Debian
1086 bug #173612)
1087
Theodore Ts'of3640932003-03-01 19:47:44 -050010882003-03-01 Theodore Ts'o <tytso@mit.edu>
1089
1090 * Makefile.in, journal.c, unix.c: Use blkid functions to find the
1091 journal from the UUID, and to interpret the device
1092 specification.
1093
1094 * e2fsck.c: Free the blkid_cache when releasing the e2fsck context
1095 structure.
1096
1097 * e2fsck.h: If strnlen is not present, define it as a macro which
1098 calls e2fsck_strlen(). Add prototype for string_copy().
1099 Add blkid_cache to e2fsck context, and make
1100 filesystem_name, device_name, and journal_name be
1101 non-const variables.
1102
1103 * pass1.c, pass2.c: Remove static strnlen function
1104
1105 * util.c (string_copy, e2fsck_strnlen): New functions
1106
Theodore Ts'o19445ef2003-01-29 21:04:52 -050011072003-01-29 Theodore Ts'o <tytso@mit.edu>
1108
1109 * unix.c (usage): Make descripton -c be a bit more explicit
1110
Theodore Ts'o4f489282003-01-22 18:28:15 -050011112003-01-22 Theodore Ts'o <tytso@mit.edu>
1112
1113 * pass1.c (check_blocks): Use the EXT2_I_SIZE macro.
1114
Theodore Ts'ob92ae152003-01-02 16:53:54 -050011152003-01-02 Theodore Ts'o <tytso@mit.edu>
1116
1117 * unix.c (main): Detect if there is an attempt to run the journal
1118 twice, and abort with an error if this is the case.
1119 (Address IBM Bugzilla bug #1226)
1120
Theodore Ts'oe34bf432002-12-18 18:28:10 -050011212002-12-18 Theodore Ts'o <tytso@mit.edu>
1122
1123 * pass2.c (strnlen): Provide strnlen if libc doesn't.
1124
Theodore Ts'o8161a742003-01-02 16:36:44 -050011252003-11-19 Theodore Ts'o <tytso@mit.edu>
1126
1127 * unix.c (PRS): Print an error if more than one of the -p/-a, -n
1128 or -y options are specified.
1129
Theodore Ts'o54779c62002-11-13 07:00:16 -050011302002-11-12 Theodore Ts'o <tytso@mit.edu>
1131
1132 * problem.c: Make HTREE problems PR_PREEN_OK, so that we don't
1133 abort an e2fsck after the filesystem has been mounted
1134 using the 2.4 ext2 codebase.
1135
Theodore Ts'o38513012002-11-09 15:00:56 -050011362002-11-09 Theodore Ts'o <tytso@mit.edu>
1137
1138 * Release of E2fsprogs 1.32
1139
Theodore Ts'oae65b292002-11-08 20:08:48 -050011402002-11-08 Theodore Ts'o <tytso@mit.edu>
1141
1142 * Release of E2fsprogs 1.31
1143
Theodore Ts'o299d7422002-11-08 11:10:28 -050011442002-11-08 <tytso@snap.thunk.org>
1145
Theodore Ts'oc1637bd2002-11-08 15:55:17 -05001146 * unix.c (main): Fix a bug where e2fsck could erroneously mark a
1147 filesystem as being valid if it was being checked and it
1148 is interrupted with a ^C. (Bug introduced in e2fsprogs
1149 1.28.)
1150
Theodore Ts'o5e72cdb2002-11-08 15:35:13 -05001151 * unix.c (PRS), journal.c: Set the default level of journal
1152 debugging to be 0, and allow the user to set the level of
1153 journal debugging by using the E2FSCK_JBD_DEBUG
1154 environment variable.
1155
Theodore Ts'o299d7422002-11-08 11:10:28 -05001156 * pass1.c (new_table_block), super.c (check_super_block), swapfs.c
1157 (swap_filesys): Clear EXT2_FLAG_MASTER_SB_ONLY to make
1158 sure the backup superblocks and group descriptors are
1159 updated when we make an important change to the
1160 superblocks and/or group descriptors. (i.e., generating a
1161 UUID, allocating filesystem metadata, or byte-swapping the
1162 filesystem.)
1163
Theodore Ts'oee895132002-11-07 16:16:55 -050011642002-11-07 Theodore Ts'o <tytso@mit.edu>
1165
1166 * e2fsck.h, unix.c (main, check_mount): Fix e2fsck so that it
1167 returns the appropriate exit code, so that the boot
1168 scripts will be told that they need to automatically
1169 reboot.
1170
Theodore Ts'obe93ef02002-10-31 18:38:55 -050011712002-10-31 Theodore Ts'o <tytso@mit.edu>
1172
Theodore Ts'o5d823a42002-11-01 02:13:53 -05001173 * Release of E2fsprogs 1.30
1174
11752002-10-31 Theodore Ts'o <tytso@mit.edu>
1176
Theodore Ts'ob40ffd72002-10-31 19:30:24 -05001177 * unix.c (usage), e2fsck.8.in: Add the -D option to the usage and
1178 command synopsis. (Addresses Debian bug #167108)
1179
Theodore Ts'obe93ef02002-10-31 18:38:55 -05001180 * pass1.c (e2fsck_pass1): Check the superblock write time to see
1181 whether or not we can safely do the LOW_DTIME checks.
1182 (Addresses Sourceforge bug #620980)
1183
Theodore Ts'o76dd5e52002-10-30 23:07:21 -050011842002-10-30 Theodore Ts'o <tytso@mit.edu>
1185
Theodore Ts'o482afc42002-10-31 03:32:34 -05001186 * Makefile.in (install): Search all compression extensions when
1187 deleting old man pages.
1188
Theodore Ts'o76dd5e52002-10-30 23:07:21 -05001189 * pass1.c (mark_table_blocks): Fix bug in meta_bg support; only
1190 mark blocks legacy group descriptor blocks up to
1191 s_first_meta_bg.
1192
Theodore Ts'oa49929b2002-10-20 00:58:08 -040011932002-10-20 Theodore Ts'o <tytso@valinux.com>
1194
1195 * pass1.c (mark_table_blocks): Add support for the meta_blockgroup
1196 filesystem format.
1197
Theodore Ts'o3e699062002-10-13 23:56:28 -040011982002-10-13 Theodore Ts'o <tytso@mit.edu>
1199
1200 * pass3.c (e2fsck_get_lost_and_found): Pass in mode 700 to
1201 ext2fs_new_inode().
1202
1203 * unix.c (show_stats): Fix format bug if NLS is in use.
1204
1205 * journal.c, pass1.c, revoke.c, util.c: Fix gcc -Wall nits.
1206
Theodore Ts'o64aecc42002-10-11 17:44:12 -040012072002-10-08 Theodore Ts'o <tytso@mit.edu>
1208
1209 * pass3.c (e2fsck_get_lost_and_found): Create the lost+found
1210 directory with mode 0700.
1211
Theodore Ts'o8132d842002-10-02 22:07:17 -040012122002-10-02 Theodore Y. Ts'o <tytso@mit.edu>
1213
1214 * pass2.c (parse_int_node, check_dir_block): Add byte-swap
1215 functions around the htree code, so that it works on
1216 big-endian machines.
1217
1218 * swapfs.c (swap_filesys): For PPC machines, byte-swap the bitmap,
1219 since PPC big-endian filesystems were historically wierd.
1220 This is just for the regression test, since no one
1221 actually uses them anymore...
1222
Theodore Ts'oad4fa462002-09-30 11:19:19 -040012232002-09-30 Theodore Ts'o <tytso@mit.edu>
1224
1225 * problem.c, problem.h (PR_2_HTREE_BAD_LIMIT,
1226 PR_2_HTREE_BAD_COUNT, PR_2_HTREE_HASH_ORDER,
1227 PR_2_HTREE_BAD_DEPTH): Add new problem codes.
1228
1229 * pass2.c (salvage_directory, check_dir_block): Avoid counting
1230 directory entries twice during a directory salvage. Make
1231 the salvaging algorithm smarter about directory entry size
1232 overruns.
1233 (parse_int_node): Add check to make sure the limit and
1234 count fields in the node headers are sane. Also check
1235 to make sure the hash table in ascending order.
1236 (pass2, htree_depth): For all leaf nodes, determine their
1237 depth in the tree, and make sure it matches with the depth
1238 in the htree root information.
1239
Theodore Ts'ofe5b72d2002-09-29 19:05:26 -040012402002-09-29 Theodore Ts'o <tytso@mit.edu>
1241
Theodore Ts'oe8254bf2002-09-29 19:30:28 -04001242 * pass2.c (check_dir_block): Do a more paranoid check when trying
1243 to determine whether or not a directory entry is a
1244 completely empty leaf block or leaf node. Otherwise
1245 e2fsck might get confused into thinking that a valid dxdir
1246 was corrupted.
1247
Theodore Ts'ofe5b72d2002-09-29 19:05:26 -04001248 * rehash.c (e2fsck_rehash_dir): Apply patch from Christopher Li
1249 which avoids creating an empty directory entry at the end
1250 of the directory block. This screws up earlier versions
1251 of the indexed directory patch.
1252
Theodore Ts'oe70ae992002-09-28 09:16:28 -040012532002-09-28 Theodore Ts'o <tytso@mit.edu>
1254
1255 * rehash.c (write_directory): Clear the index flag if by
1256 reoptimizing the directory, we bring it back into a
1257 non-indexed state.
1258 (e2fsck_rehash_dir): Allow directories that contain two
1259 blocks to be indexed. Otherwise when they grow, they
1260 never will be indexed by the kernel.
1261
1262 * unix.c (main): Only update the master superblock; there's no
1263 point updating the backup superblocks, and it speeds up
1264 fsck slightly.
1265
1266 * pass2.c (salvage_directory): New function called by
1267 check_dir_block() which is much more sophisticated about
1268 how it salvages corrupted filesystems.
1269
Theodore Ts'oc6633052002-09-24 01:26:50 -040012702001-09-24 Theodore Tso <tytso@mit.edu>
1271
1272 * Release of E2fsprogs 1.29
1273
Theodore Ts'ocf3909e2002-09-06 10:14:12 -040012742002-09-06 Theodore Ts'o <tytso@mit.edu>
1275
1276 * rehash.c (copy_dir_entries): Fix bug which caused corrupted
1277 directories if there are 4 or 8 bytes left over in a
1278 directory page when optimizing/reindexing a directory.
1279
Theodore Ts'o87ee8dc2002-08-31 03:02:57 -040012802001-08-31 Theodore Tso <tytso@thunk.org>
1281
1282 * Release of E2fsprogs 1.28
1283
Theodore Ts'oceecbc72002-08-31 02:35:35 -040012842002-08-31 Theodore Ts'o <tytso@mit.edu>
1285
1286 * ehandler.c (e2fsck_handle_read_error): If the user asks to
1287 ignore the error, offer to try forcing a write of the
1288 block to the disk; sometimes this will cause the drive to
1289 remap the bad block.
1290
Theodore Ts'oea1959f2002-08-31 02:32:41 -040012912002-08-31 Theodore Ts'o <tytso@valinux.com>
1292
1293 * pass2.c (e2fsck_pass2): If this is a HTREE directory, sort the
1294 dblist so that the first block of all of the directories
1295 is handled first so we can read the hash version
1296 information.
1297 (check_dir_block): Examine the root node for correctness,
1298 and offer to clear it if it is not correct. Also copy the
1299 hash version to the dx_dir structure, so that the proper
1300 hash function can be used for other blocks in the
1301 directory.
1302
1303 * problem.c, problem.h (PR_2_HTREE_BAD_ROOT): Add new problem code.
1304
Theodore Ts'oa3da9d12002-08-21 12:52:03 -040013052002-08-21 Theodore Ts'o <tytso@mit.edu>
1306
1307 * problem.c: Fix PR_1_RELOC_BLOCK_ALLOCATE message to explain that
1308 it is necessary to find contiguous blocks in a particular
1309 block group.
1310
Theodore Ts'o0684a4f2002-08-17 10:19:44 -040013112002-08-17 Theodore Ts'o <tytso@mit.edu>
1312
Theodore Ts'of044b4d2002-08-17 13:32:21 -04001313 * e2fsck.8.in: Add clarifying text describing how e2fsck works
1314 with ext3 filesytems. (Addresses Debian bug #145044).
1315
1316 * pass1.c (handle_htree): Add support for EXT2_HASH_TEA
1317
Theodore Ts'o0684a4f2002-08-17 10:19:44 -04001318 * e2fsck.h, e2fsck.c (e2fsck_allocate_context): Add new field to
1319 the e2fsck context, ext_attr_ver, which specifies the EA
1320 format version.
1321
1322 * unix.c (usage, parse_extended_opts, PRS), e2fsck.8.in: Add new
1323 option -E, which allows the users to specify extended
1324 options. Added ea_ver extended option.
1325
1326 * pass1.c (e2fsck_pass1_check_device_inode): Add ext2_filsys
1327 argument to this function, so we can account for the
1328 presence of extended attribute blocks attached to device
1329 inodes.
1330 (e2fsck_pass1_check_symlink, e2fsck_pass1): Take into
1331 account the fact that symlinks can also have extended
1332 attribute blocks.
1333 (check_ext_attr): Don't be flexible about the EA format
1334 version. Check against the version number in
1335 ctx->ext_attr_ver.
1336 (check_blocks): Check all inodes, so that we account for
1337 extended attribute blocks belonging to special files.
1338 Clean up i_size checks.
1339
1340 * pass1b.c (pass1b): Check all inodes, so that we account for
1341 extended attribute blocks belonging to special files.
1342 (delete_file_block): Use ext2fs_alloc_block_stats() to
1343 update the filesystem statistics.
1344 (delete_file): Attempt to decrement the extended
1345 attribute refcount, and free the EA block if the count
1346 hits zero.
1347 (clone_file): Fixed bugs in EA handling. Don't call
1348 block_iterate on inodes that don't have a valid i_block[]
1349 array. Reread the base inode since it may have been
1350 changed by ext2fs_block_iterate. When updating inodes as
1351 part of cloning an EA block, write out the correct inode
1352 structure.
1353
1354 * pass2.c (deallocate_inode_block, deallocate_inode): Use standard
1355 ext2fs_alloc_*_stats functions to update the filesystem
1356 statistics.
1357 (deallocate_inode): Attempt to decrement the extended
1358 attribute refcount, and free the EA block if the count
1359 hits zero.
1360 (e2fsck_process_bad_inode): Add extra argument to calls
1361 to e2fsck_pass1_check_device_inode ().
1362
1363 * pass3.c (e2fsck_get_lost_and_found): Use standard
1364 ext2fs_alloc_*_stats functions to update the filesystem.
1365 statistics when creating /lost+found.
1366 (adjust_inode_count): Remove debugging code that can never
1367 be triggered.
1368
1369 * pass4.c (disconnect_inode): Add explanation about why we only
1370 clear inodes that have no data blocks and no EA blocks.
1371 Use ext2fs_inode_alloc_stats2 function to update the
1372 filesystem statistics when clearing a zero-length inode.
1373
1374 * problem.c, problem.h (PR_1B_ADJ_EA_REFCOUNT,
1375 PR_2_ADJ_EA_REFCOUNT): Add new problem codes.
1376
1377 * super.c (release_inode_block), (release_orphan_inodes): Use the
1378 standard ext2fs_alloc_*_stats functions to update the
1379 filesystem statistics.
1380 (release_inode_blocks): Attempt to decrement the extended
1381 attribute refcount, and free the EA block if the count
1382 hits zero.
1383
Theodore Ts'o838e7732002-08-01 12:37:00 -040013842002-08-01 Theodore Ts'o <tytso@mit.edu>
1385
1386 * dict.c, dict.h: New file from kazlib 1.20 which implements a
1387 red-black tree
1388
1389 * pass1b.c: Massive changes to take advantage of dict.c. This
1390 removes several O(n**2) algorithms from the rare case
1391 where there are a large number of blocks claimed by
1392 multiple inodes.
1393
Theodore Ts'o542867f2002-07-24 07:42:02 -040013942002-07-24 Theodore Ts'o <tytso@mit.edu>
1395
Theodore Ts'o850d05e2002-07-25 00:00:08 -04001396 * e2fsck.8.in, e2fsck.h, pass3.c (e2fsck_pass3), unix.c, rehash.c:
1397 Add new option -D, which requests e2fsck to optimize all
1398 directories. Rehash.c will also compress and sort
1399 non-indexed directories.
1400
1401 * problem.c, problem.h: Rename PR_3A_REHASH_* to PR_3A_OPTIMIZE_*
1402
1403 * unix.c (PRS): Make sure the signal_cancel is registered without
1404 SA_RESTART.
1405
1406 * rehash.c (e2fsck_rehash_dir, copy_dir_entries, calculate_tree):
1407 Restructured code in e2fsck_rehash_dir into two new
1408 subroutines to make the code more understandable/maintainable.
1409 (set_root_node): Fixed bug which caused the root node to
1410 be invalid on non-FILETYPE filesystems due to an
1411 unitialized variable.
1412 (calculate_tree): Fix bug where pointers which might get
1413 invalidated if realloc() moves outdir->buf around.
1414 (e2fsck_rehash_dir): Fix memory leak bug.
1415
1416 * pass3.c (e2fsck_get_lost_and_found), e2fsck.h, e2fsck.c:
1417 Exported as a public interface a function for finding the
1418 lost and found directory. Cache the location of the lost
1419 and found directory in the e2fsck context structure.
1420
Theodore Ts'o542867f2002-07-24 07:42:02 -04001421 * util.c (ask_yn, read_a_char): Note when the user has typed ^C,
1422 and abort processing by longjmp'ing to ctx->abort_loc.
1423
Theodore Ts'o3214a452002-07-23 12:00:00 -040014242002-07-23 Theodore Ts'o <tytso@mit.edu>
1425
1426 * pass1.c (e2fsck_pass1): If e2fsck is run with -n, don't create
1427 the dirs_to_hash list, since we don't want to reindex
1428 directories if the filesystem is opened read-only.
1429
Theodore Ts'o4cae0452002-07-21 14:14:03 -040014302002-07-21 Theodore Ts'o <tytso@mit.edu>
1431
1432 * e2fsck.8.in: Document new exit code FSCK_CANCELED
1433
1434 * unix.c (PRS, signal_cancel): Capture SIGINT and SIGTERM signals
1435 and set a flag in the e2fsck context indicating that
1436 cancellation has been requested, so that e2fsck will exit
1437 only at safe points.
1438 (main): Change the exit handling so that if a cancellation
1439 is requested, return FSCK_CANCELED (a new exit code 32).
1440 e2fsck can now return more than one exit code as part of a
1441 bitmask (as had been documented in the man page).
1442
1443 * pass2.c (e2fsck_pass2, check_dir_block), pass3.c (e2fsck_pass3),
1444 pass4.c (e2fsck_pass4): Check to see if a cancellation was
1445 requested, and abort processing if necessary.
1446
Theodore Ts'ob7a00562002-07-20 00:28:07 -040014472002-07-19 Theodore Ts'o <tytso@mit.edu>
1448
1449 * rehash.c, Makefile.in: New file which rewrites directories using
1450 the htree format.
1451
1452 * problem.c (fix_problem), problemP.h (PR_PREEN_NOHDR): Add option
1453 which suppresses the header printed when in preen mode.
1454
1455 * pass3.c (e2fsck_pass3): If there are entries on the dirs_to_hash
1456 list, call e2fsck_rehash_directories to reindex those
1457 directories.
1458 (e2fsck_expand_directory): Generalize the old
1459 expand_dirctory() function so it can expand a directory to
1460 a guaranteed minimum size.
1461
1462 * e2fsck.h (struct e2fsck_struct): Add the dirs_to_hash list. Add
1463 new function prototypes for rehash.c and for
1464 e2fsck_expand_directory().
1465
1466 * e2fsck.c (e2fsck_reset_context): Free the dirs_to_hash list.
1467
1468 * pass1.c (e2fsck_pass1): Initialize the dirs_to_hash list if the
1469 htree feature is present in the filesystem.
1470 (check_blocks): If a non-htree directory has more than 2
1471 blocks, put it on the dirs_to_hash list.
1472
1473 * pass2.c (clear_htree): Add corrupt htree directories to the
1474 dirs_to_hash list.
1475
1476 * problem.h, problem.c (PR_3A_PASS_HEADER, PR_3A_REHASH_ITER,
1477 PR_3A_REHASH_DIR_ERR, PR_3A_REHASH_DIR_HEADER,
1478 PR_3A_REHASH_DIR, PR_3A_REHASH_DIR_END): Add new problem codes
1479
1480 * pass2.c (parse_int_node), problem.c (PR_2_HTREE_BADBLK): Fix
1481 problem display.
1482
Theodore Ts'o62acaa12002-07-15 16:54:42 -040014832002-07-15 Theodore Ts'o <tytso@mit.edu>
1484
1485 * pass2.c (e2fsck_pass2): Use dx_dir->numblocks instead of
1486 dx_dir->ino to indicate that a bad inode was cleared.
1487
Theodore Ts'o503f9e72002-06-26 16:52:10 -040014882002-06-26 Theodore Ts'o <tytso@mit.edu>
1489
1490 * pass1.c (check_blocks): Move htree handling to handle_htree().
1491 Factor out calls to ext2fs_write_inode so that it happens
1492 if dirty_inode is non-zero.
1493 (handle_htree): Add checks for invalid htree root, invalid
1494 hash version, invalid hash version, and htree depth too deep.
1495
1496 * problem.h, problem.c (PR_1_HTREE_NODIR, PR_1_HTREE_BADROOT,
1497 PR_1_HTREE_HASHV, PR_1_HTREE_INCOMPAT, PR_1_HTREE_DEPTH):
1498 Add new problem codes.
1499
1500 * pass2.c (parse_int_node): Fix silly typo.
1501 (check_dir_block): Change to use new ext2fs_dirhash()
1502 function prototype.
1503 (pass2): Fixed two minor bugs discovered by the test case:
1504 Don't stop checking dxdir's after clearing a bad inode.
1505 If there is a bad max hash, make sure the bad_dir flag
1506 is set to make sure we try to clear inode.
1507
Theodore Ts'o8fdc9982002-06-25 23:26:34 -040015082002-06-25 Theodore Ts'o <tytso@mit.edu>
1509
1510 * e2fsck.c (e2fsck_reset_context): Free the dx_dirinfo structure.
1511
1512 * message.c: Add new abbrevations @h and @p, "HTREE directory
1513 inode" and "problem in".
1514
1515 * pass1.c (check_blocks): If the inode has the INDEX_FL flag,
1516 register the block into the indexed directory data
1517 structures. Or if the filesystem doesn't have the
1518 DIR_INDEX flag, offer to clear the INDEX_FL.
1519
1520 * pass2.c (e2fsck_pass2, parse_int_node): Add support check htree
1521 directories (we don't check all possible corruptions yet).
1522
1523 * problem.h, problem.h (PR_1_HTREE_SET, PR_2_HTREE_NOTREF,
1524 PR_2_HTREE_DUPREF, PR_2_HTREE_MIN_HASH, PR_2_HTREE_MAX_HASH,
1525 PR_2_HTREE_CLEAR, PR_2_HTREE_FCLR, PR_2_HTREE_BADBLK): Add
1526 new problem codes.
1527
1528 * unix.c (main): If ENABLE_HTREE is not defined, complain if the
1529 filesystem has the dir_index feature.
1530
1531 * Makefile.in, e2fsck.h, dx_dirinfo.c: New file (and group of
1532 functions) which keeps track of blocks in HTREE directory
1533 blocks.
1534
Andreas Dilgerb21bf262002-06-10 11:05:56 -060015352002-05-22 Andreas Dilger <adilger@clusterfs.com>
1536
1537 * super.c (check_superblock): Check that the number of inodes and
1538 blocks in a group is less than 2^16, so that the free inode
1539 and block counts for a group fit into the group descriptor
1540 table fields. Any more than that would need a COMPAT flag.
1541
Theodore Ts'o0d634672002-05-22 00:22:38 -040015422002-05-22 Theodore Ts'o <tytso@mit.edu>
1543
1544 * pass1.c (check_ext_attr): Update to support the V2 Bestbits EA
1545 format. We automatically determine from the first EA
1546 block we visit whether we are using the V1 or V2 format.
1547
Theodore Ts'oda307042002-05-21 21:19:14 -040015482002-05-21 Theodore Ts'o <tytso@mit.edu>
1549
1550 * pass1.c (process_block): If an inode has too many blocks or
1551 is too big, then offer to truncate the inode.
1552 (check_blocks): Don't bother checking the size to see if
1553 it's too big, since that's just a symptom, not the disease
1554 (which we're now appropriately checking in process_block).
1555
1556 * problem.c, problem.h: Add new problem codes PR_1_INODE_TOOBIG,
1557 PR_1_TOOBIG_DIR, PR_1_TOOBIG_REG, PR_1_TOOBIG_SYMLINK, and
1558 add the latch code PR_LATCH_TOOBIG.
1559
Theodore Ts'obcf9c5d2002-05-21 09:14:17 -040015602002-05-20 Theodore Ts'o <tytso@mit.edu>
1561
1562 * e2fsck.h, pass1.c (e2fsck_pass1_check_symlink), pass2.c
1563 (e2fsck_process_bad_inode): Add an extra
1564 argument so a scratch buffer can be passed into the
1565 function.
1566
1567 * pass1.c (e2fsck_pass1_check_device_inode,
1568 e2fsck_pass1_check_symlink): If the EXT2_INDEX_FL flag is
1569 set, then the device/FIFO is invalid.
1570 (check_immutable): Don't check for EXT2_INDEX_FL; we take
1571 care of that elsewhere now.
1572 (e2fsck_pass1): Check to see if the symlink is valid
1573 before we offer to clear any immutable bits. This matches
1574 the order in which we check other special files.
1575
1576 * pass2.c (e2fsck_pass2): Allocate a bigger scratch buffer so we
1577 can pass part of it to e2fsck_process_bad_inode.
1578
1579 * pass4.c (e2fsck_pass4): If we need to call
1580 e2fsck_process_bad_inode(), allocate the necessary scratch
1581 buffer.
1582
1583 * problem.h, problem.c: Change PR_2_SYMLINK_SIZE to be
1584 PR_2_INVALID_SYMLINK, and change the text
1585 accordingly. Revert the text change for PR_1_SET_IMMUTABLE
1586 since we no longer check for EXT2_INDEX_FL in
1587 check_immutable().
1588
15892002-05-18 Andreas Dilger <adilger@clusterfs.com>
1590
1591 * pass1.c (e2fsck_pass1_check_symlink): Remove checks of
1592 immutable/append-only checks, since this is handled by
1593 check_immutable. For non-fast symlinks, read in the
1594 data block and check the length to make sure it
1595 matches with the inode size.
1596 (check_immutable): Generalize to also check for the
1597 EXT2_INDEX_FL flag.
1598 (check_blocks): For non-regular files, signal a bad inode
1599 size if i_size_high is non-zero.
1600
1601 * pass2.c: Only count large files if they are regular files
1602 (not just if they aren't directories).
1603
1604 * problem.c, problem.h: Change comment for PR_2_SYMLINK_SIZE
1605 to indicate that it can be triggered by any symlink,
1606 not fast symlink. Change text for PR_1_SET_IMMUTABLE
1607 to indicate that it the EXT2_INDEX_FL was set.
1608
Theodore Ts'o31e29a12002-05-17 10:53:07 -040016092002-05-17 Theodore Ts'o <tytso@mit.edu>
1610
1611 * pass1.c (e2fsck_pass1): When calculating max_sizes, omit capping
1612 this value by the calculated value of max_sect_sizes.
1613 The inode may be a sparse inode, and the limit of
1614 max_sect_sizes assumed a non-sparse inode and a limit
1615 based on a 32-bit i_blocks field measured in 512 sectors.
1616
1617 * super.c (check_super_block): Fix check for s_log_block_size so
1618 that takes into account fact that there is an offset of
1619 EXT2_MIN_BLOCK_LOG_SIZE.
1620
1621 * pass1.c: Allocate max_sizes array to be big enough to support
1622 the larger block sizes.
1623
16242002-05-16 Andreas Dilger <adilger@clusterfs.com>
1625
1626 * unix.c (main), util.c (get_backup_sb): Use EXT2_MAX_BLOCK_SIZE
1627 instead of using a hardcoded value of 4096.
1628
1629 * super.c (check_super_block): Change checks for s_log_block_size
1630 s_log_frag_size so they support the larger block sizes.
1631
1632 * pass1.c (e2fsck_pass1): Calculate max_sizes array for block
1633 sizes up to EXT2_MAX_BLOCK_SIZE (to support block sizes
1634 greater than 4k).
1635
Theodore Ts'oa8e77242002-03-08 03:12:14 -050016362002-03-08 Theodore Tso <tytso@mit.edu>
1637
1638 * Release of E2fsprogs 1.27
1639
Theodore Ts'o546a1ff2002-03-07 23:52:56 -050016402002-03-07 Theodore Tso <tytso@mit.edu>
1641
1642 * journal.c, pass5.c, revoke.c: Fix gcc -Wall complaints
1643
16442002-03-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'of2d5c932002-03-07 03:13:07 -05001645
1646 * unix.c (main): Don't close the filesystem before calling
1647 fatal_error(); this just causes a needless warning about a
1648 bad I/O manager magic number.
1649
1650 * journal.c (e2fsck_check_ext3_journal): Offer to clear the inode
1651 in case the journal is too small, or the inode number in
1652 the superblock doesn't appear to be random.
1653
Theodore Ts'o546a1ff2002-03-07 23:52:56 -050016542002-03-06 Theodore Tso <tytso@mit.edu>
Theodore Ts'of1226322002-03-07 02:47:07 -05001655
1656 * problem.h, problem.c: PR_5_BLOCK_RANGE_UNUSED,
1657 PR_5_BLOCK_RANGE_USED, PR_5_INODE_RANGE_UNUSED,
1658 PR_5_INODE_RANGE_USED: Add new problem codes.
1659
1660 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Collapse
1661 reporting of adjacent blocks and inodes into a range.
1662
Theodore Ts'o14308a52002-03-05 03:26:52 -050016632002-03-04 Philipp Thomas <pthomas@suse.de>
1664
1665 * unix.c (main): Newer libintl needs LC_CTYPE to be set in
1666 addition to LC_MESSAGES.
1667
Theodore Ts'o57173d02002-02-26 14:59:39 -050016682002-02-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'ob9f40922002-02-24 03:08:57 -05001669
1670 * Makefile.in (install): Install hard links for man pages for
1671 fsck.ext2 and fsck.ext3. Remove any compressed man
1672 pages before installing the man pages.
1673
Theodore Ts'o57173d02002-02-26 14:59:39 -050016742002-02-22 Theodore Tso <tytso@mit.edu>
Theodore Ts'od1a21822002-02-22 00:17:59 -05001675
1676 * journal.c: Improve code maintainability and reduce code size by
1677 moving common code paths in e2fsck_journal_init_dev() and
1678 e2fsck_journal_init_inode() into e2fsck_get_journal().
1679 Also fixed a memory leak in recover_ext3_journal().
1680
1681 * super.c (release_orphan_inodes): Fix memory leak.
1682
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -050016832002-02-03 Theodore Tso <tytso@thunk.org>
1684
1685 * Release of E2fsprogs 1.26
1686
16872001-12-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o3ed57c22001-12-24 15:01:59 -05001688
1689 * unix.c (PRS): Don't allow the -c and -l/-L options to be
1690 specified at the same time.
1691
1692 * e2fsck.h (E2F_OPT_WRITECHECK), unix.c (PRS),
1693 badblocks.c (read_bad_blocks_file): If two -c options are
1694 specified, then perform a non-destructive read/write scan
1695 of the disk.
1696
1697 * e2fsck.8.in: Document the double -c option; also encourage users
1698 to use -c instead of the -l/-L options since it's too hard
1699 for users to get things like the blocksize parameter correct.
1700
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -050017012001-12-23 Theodore Tso <tytso@mit.edu>
Theodore Ts'o19007e52001-12-23 19:33:51 -05001702
Theodore Ts'of1a17612001-12-23 22:27:52 -05001703 * util.c (get_backup_sb): This function now searches for the
1704 backup superblock by iterating over possible blocksizes
1705 instead of defaulting a guess of 8193 if the superblock
1706 isn't available.
1707
1708 * message.c (expand_percent_expression), unix.c (main): Pass in
1709 new parameters to get_backup_sb. Also, in unix.c, use the
1710 blocksize paramter in the e2fsck context structure instead
1711 of using a static variable, since get_backup_sb wants to
1712 be able to set the blocksize paramter.
1713
1714 * e2fsck.h: Update function prototype for get_backup_sb; also add
1715 the blocksize parameter to the e2fsck context structure.
1716
Theodore Ts'o19007e52001-12-23 19:33:51 -05001717 * Makefile.in, jfs_user.h: Move linux/jbd.h to
1718 ext2fs/kernel-jbd.h, to avoid using the system header
1719 file version of hbd.h when using diet glibc (since it
1720 forcibly adds /usr/include to the beginning of the
1721 include search path.)
1722
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -050017232001-12-21 Theodore Tso <tytso@mit.edu>
Theodore Ts'od37066a2001-12-21 23:28:54 -05001724
Theodore Ts'o6a50c5e2001-12-21 23:29:35 -05001725 * problem.c (fix_problem): Use ctx->filesystem_name if the
1726 ctx->device_name is NULL.
1727
Theodore Ts'od37066a2001-12-21 23:28:54 -05001728 * journal.c (e2fsck_check_ext3_journal): Give the opportunity to
1729 run the journal even if recovery flag is cleared. If
1730 we're using a backup superblock, run the journal by
1731 default.
1732
1733 * e2fsck.h (E2F_OPT_FORCE), unix.c (PRS, check_if_skip): Use a
1734 bitfield in the e2fsck context flags word to indicate
1735 whether or not a check should be forced. This allows the
1736 journal code to set the option if necessary to force a
1737 filesystem check.
1738
1739 * problem.h, problem.c: Remove PR_0_JOURNAL_RESET_JOURNAL, and add
1740 PR_0_JOURNAL_RUN and PR_0_JOURNAL_RUN_DEFAULT. Update
1741 problem decription texts.
1742
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -050017432001-12-16 Theodore Tso <tytso@mit.edu>
Theodore Ts'o8cf93332001-12-16 02:23:36 -05001744
Theodore Ts'o4ea7bd02001-12-16 23:23:37 -05001745 * e2fsck.h (ext2fs_get_refcount_size), unix.c (check_mount, PRS),
1746 pass1.c (adjust_extattr_refcount),
1747 ea_refcount.c (ea_refcount_create): Fix gcc -Wall nits.
1748
Theodore Ts'o8cf93332001-12-16 02:23:36 -05001749 * recovery.c, revoke.c: Update to versions from 2.4.17-pre8.
1750
1751 * journal.c, jfs_user.h: Update support code for new version of
1752 recover.c and revoke.c. Fix support for filesystems with
1753 external journals.
1754
Gabriel Paubertb3b3d462001-11-30 13:45:28 +010017552001-11-30 Gabriel Paubert <paubert@iram.es>
1756
1757 * journal.c (e2fsck_journal_load): Fix an endianness bug.
1758
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -050017592001-11-26 Theodore Tso <tytso@mit.edu>
Theodore Ts'o24bfb442001-11-26 15:51:14 -05001760
1761 * super.c (check_super_block): Make sure that if the inode table
1762 or allocation bitmap is zero, that it is marked as
1763 invalid, so that in pass #1, a new bitmap/inode table gets
1764 properly allocated. (Addresses Debian Bug #116975)
1765
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -050017662001-11-24 Theodore Tso <tytso@mit.edu>
Theodore Ts'o1e9a7e02001-11-24 16:40:57 -05001767
1768 * e2fsck.8.in: Fix minor typo in man page and clarify device
1769 specification.
1770
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -050017712001-10-07 Theodore Tso <tytso@mit.edu>
Theodore Ts'o62e3e7f2001-10-07 02:13:30 -04001772
1773 * journal.c (clear_v2_journal_fields, e2fsck_journal_load): If the
1774 V2 fields are set on a V1 journal superblock, or an
1775 internal V2 journal has s_nr_users is non-zero, clear the
1776 entire journal superblock beyond the V1 superblock. This
1777 fixes botched V1->V2 updates.
1778
1779 * problem.c, problem.h (PR_0_CLEAR_V2_JOURNAL): Add new problem code.
1780
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -050017812001-09-20 Theodore Tso <tytso@mit.edu>
Theodore Ts'o773fd8a2001-10-06 21:26:27 -04001782
1783 * e2fsck.h, journal.c (e2fsck_move_ext3_journal): Add new function
1784 which will automatically relocate the ext3 journal from a
1785 visible file to an invisible journal file if the
1786 filesystem has been opened read/write.
1787
1788 * super.c (check_super_block): Add call to e2fsck_move_ext3_journal
1789
1790 * problem.c, problem.h (PR_0_MOVE_JOURNAL, PR_0_ERR_MOVE_JOURNAL):
1791 Add new problem codes.
1792
Theodore Ts'ofbf91112001-09-20 10:47:47 -040017932001-09-20 Theodore Tso <tytso@thunk.org>
1794
1795 * Release of E2fsprogs 1.25
1796
Theodore Ts'oa5f3f5c2002-02-03 01:00:22 -050017972001-09-19 Theodore Tso <tytso@mit.edu>
Theodore Ts'oae6cdcf2001-09-19 15:17:25 -04001798
1799 * unix.c (main): If a superblock is specified explicitly by the
1800 user, don't try to automatically fall back to an
1801 alternate superblock.
1802
Theodore Ts'ofb707752001-09-04 15:00:37 -040018032001-09-02 Theodore Tso <tytso@thunk.org>
1804
1805 * Release of E2fsprogs 1.24a
1806
Theodore Ts'o109624a2001-08-31 00:59:55 -040018072001-08-30 Theodore Tso <tytso@thunk.org>
1808
1809 * Release of E2fsprogs 1.24
1810
Theodore Ts'ob1f204f2001-08-30 16:42:09 -040018112001-08-30 Theodore Tso <tytso@valinux.com>
1812
1813 * pass1.c (e2fsck_pass1): For EXT2_RESIZE_INO, allow its i_mode to
1814 either be zero or a regular file (for compatibility with
1815 Andreas's on-line resizing programs).
1816
Theodore Ts'o53abed02001-08-27 12:18:16 -040018172001-08-27 Theodore Tso <tytso@valinux.com>
1818
Theodore Ts'o0f8973f2001-08-27 12:44:23 -04001819 * unix.c (main): Remove EXT2FS_VERSION from the version display,
1820 since it only confuses people.
1821
Theodore Ts'o53abed02001-08-27 12:18:16 -04001822 * pass1.c (strnlen): Provide strnlen if libc doesn't.
1823
Theodore Ts'o943ed872001-08-27 12:29:22 -040018242001-08-15 Theodore Tso <tytso@valinux.com>
1825
1826 * Release of E2fsprogs 1.23
1827
Theodore Ts'o85645a6f2001-08-13 06:11:39 -040018282001-08-13 Theodore Tso <tytso@valinux.com>
1829
Theodore Ts'oeb4ab512001-08-13 10:58:41 -04001830 * super.c (release_orphan_inodes): If the filesystem contains
1831 errors, don't run the orphan * list, since the orphan list
1832 can't be trusted.
1833
Theodore Ts'o85645a6f2001-08-13 06:11:39 -04001834 * pass1.c (check_size): Fix logic in check_size; the previous code
1835 only offered to clear the inode size fields if both size
1836 and i_size_high were zero.
Theodore Ts'oa40ecbb2001-08-13 06:15:36 -04001837 (e2fsck_pass1_check_device_inode): If i_blocks is
1838 non-zero, then assume that the device/socket/fifo inode
1839 is bogus.
Theodore Ts'o85645a6f2001-08-13 06:11:39 -04001840
Theodore Ts'o2b94c652001-08-09 04:08:52 -040018412001-08-09 Theodore Tso <tytso@valinux.com>
1842
Theodore Ts'oa4742692001-08-09 04:14:04 -04001843 * pass1.c, pass2.c, problem.c, problem.h: Fix bug introduced by
1844 Andreas's symlink code; check_blocks() was unconditionally
1845 testing inode_bad_map without checking to see if it
1846 existed first. Fixed problem a different way; we now no
1847 longer check inode_bad_map at all, since the file might
1848 not get deleted in pass 2 anyway. We move the large file
1849 feature reconciliation code to to e2fsck_pass2(), and in
1850 deallocate_inode() in pass2.c, we decrement the large
1851 files counter if we're about to delete a large file.
1852
Theodore Ts'o2b94c652001-08-09 04:08:52 -04001853 * unix.c (show_stats): Print the number of large files in verbose
1854 mode.
1855
Theodore Ts'oc0a083f2001-08-07 10:17:41 -040018562001-08-07 Theodore Tso <tytso@valinux.com>
1857
1858 * journal.c (recover_ext3_journal): If s_errno is set in the
1859 journal superblock, set the EXT2_ERROR_FS flag in the
1860 filesystem superblock after the journal is run.
1861
Theodore Ts'obd512b62001-08-04 21:33:03 -040018622001-08-04 Andreas Dilger <root@lynx.adilger.int>
1863
1864 * message.c: Change comments for %D and %d expansion in e2fsck
1865 problem codes. It was not consistent which was for dirent
1866 expansion, and which was for directory number expansion.
1867
1868 * problem.c (PR_2_FINAL_RECLEN, PR_2_BAD_FILETYPE): Fix problem
1869 codes which got caught by the confusion between %D and %d.
1870
Theodore Ts'od007cb42001-08-04 20:39:39 -040018712001-08-04 Theodore Tso <tytso@valinux.com>
1872
1873 * problem.c (PR_2_SYMLINK_SIZE): Change description to make it
1874 more clear (and remove %s expansion). Also add missing
1875 periods to the end of a number of problem descriptions.
1876
1877 * pass2.c (e2fsck_process_bad_inode): Remove unneeded problem
1878 context string set now that the problem description for
1879 PR_2_SYMLINK_SIZE has been changed.
1880
1881 * pass1.c (e2fsck_pass1_check_symlink): Consolidate some checks,
1882 and check the validity of the symlink block here (so that
1883 we detect this case here instead of later). Also use
1884 sizeof(inode->i_block) instead EXT2_LINK_DIR.
1885
Theodore Ts'o83e6ac82001-07-30 16:29:52 -040018862001-07-30 Theodore Tso <tytso@valinux.com>
1887
1888 * unix.c (check_mount): Remove the code which tested for the root
1889 filesystem being mounted read-only, and depend on the
1890 results flags from ext2fs_check_if_mounted.
1891
Theodore Ts'o1e165262001-07-29 11:48:10 -040018922001-07-29 Theodore Tso <tytso@valinux.com>
1893
Theodore Ts'o6d222f32001-07-29 12:06:58 -04001894 * unix.c (check_if_skip): Free the e2fsck context structure on a
1895 normal clean filesystem exit, to make it easier to find
1896 real memory leaks.
1897 (PRS): Only update the path to include /sbin at the
1898 beginning if the -c option is given, again to make it
1899 easier to find memory leaks.
Theodore Ts'o0628ae32001-07-29 12:26:46 -04001900 (main): Move the final print_resource_track call after the
1901 filesystem and the context are freed.
Theodore Ts'o6d222f32001-07-29 12:06:58 -04001902
1903 * journal.c (e2fsck_journal_init_dev): Avoid memory leak if we
1904 need to search for the journal device.
1905 (e2fsck_journal_release): Free the journal IO channel when
1906 we release the journal handle, to avoid a memory leak.
1907
Theodore Ts'o1e165262001-07-29 11:48:10 -04001908 * e2fsck.c (e2fsck_reset_context): Fix bug; only close the io
1909 channel if it is *different* from the filesystem io
1910 channel.
1911
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -040019122001-07-27 Theodore Tso <tytso@valinux.com>
1913
Theodore Ts'oa092c562001-07-27 22:40:09 -04001914 * problem.c (PR_1_SET_IMMUTABLE): Clarify problem message.
1915
Theodore Ts'ofd77b2c2001-07-27 22:10:01 -04001916 * pass1.c (e2fsck_pass1): Check for symlinks that have the
1917 immutable flag set (and offer to clear them).
1918
Theodore Ts'o24ceb242001-07-26 09:02:56 -040019192001-07-26 Theodore Tso <tytso@valinux.com>
1920
1921 * pass1.c (e2fsck_pass1): Free ctx->block_ea_map at the end of
1922 pass 1.
1923
Theodore Ts'o14fe1c32001-07-25 19:48:24 -040019242001-07-25 Theodore Tso <tytso@valinux.com>
1925
1926 * pass1.c (check_ext_attr): Skip zero-length EA entries.
1927
1928 * problem.c: PR_1_EA_ALLOC_COLLISION shouldn't abort, but should
1929 prompt to clear the EA block.
1930
Theodore Ts'oadee8d72001-07-23 00:17:49 -040019312001-07-22 Theodore Tso <tytso@valinux.com>
1932
1933 * journal.c (ll_rw_block): Use ctx->journal_io instead of the
1934 filesystem's io_channel.
1935 (e2fsck_journal_init_dev): New function which supports
1936 initialization of the external journal.
1937 (e2fsck_get_journal): Remove code which flagged an error
1938 if the superblock reported the use of an external journal.
1939 (ext3_journal_via_mount): Remove unsued, #ifdefed out function.
1940
1941 * problem.c, problem.h: Removed error codes no longer used
1942 (PR_0_JOURNAL_UNSUPP_DEV, PR_0_JOURNAL_BAD_DEV,
1943 PR_0_JOURNAL_UNSUPP_UUID) and replace them with new error
1944 codes related with failures in loading the external
1945 journal (PR_0_JOURNAL_UNSUPP_MULTIFS,
1946 PR_0_CANT_FIND_JOURNAL, PR_0_EXT_JOURNAL_BAD_SUPER).
1947 Also changed the text assocated with PR_0_JOURNAL_BAD_UUID
1948 to reflect the case where the external journal isn't
1949 correct for this filesystem.
1950
1951 * unix.c (PRS), e2fsck.8.in: Add new option -j which allows
1952 the user to specify the pathname to find the external journal.
1953
1954 * e2fsck.c (e2fsck_reset_context): Close journal_io if it isn't
1955 the same as the filesystem io_channel.
1956
1957 * e2fsck.h: Add new fields (journal_io and journal_name) in the
1958 context structure to support external journals.
1959
Theodore Ts'od3124012001-07-20 14:13:49 -040019602001-07-20 Theodore Tso <tytso@valinux.com>
1961
1962 * unix.c (main): Add an explicit warning when the filesystem is
1963 left not completely fixed when e2fsck exits. (Addresses
1964 Debian bug #104502.)
1965
Theodore Ts'o55fd07e2001-07-19 16:31:25 -040019662001-07-19 Theodore Tso <tytso@valinux.com>
1967
1968 * pass1.c (check_ext_attr): The entire EA block is now checked to
1969 make sure that parts of the EA block aren't being used for
1970 multiple purposes.
1971
1972 * Makefile.in e2fsck.h, region.c: New file which is used to detect
1973 collisions in extended attribute block.
1974
1975 * problem.h, problem.c (PR_1_EA_MULTI_BLOCK, PR_1_EA_ALLOC_REGION,
1976 PR_1_EA_ALLOC_COLLISION, PR_1_EA_BAD_NAME,
1977 PR_1_EA_BAD_VALUE): Add new problem codes.
1978
Theodore Ts'o3c6b8972001-07-10 14:27:58 -040019792001-07-10 Theodore Tso <tytso@valinux.com>
1980
1981 * journal.c (e2fsck_run_ext3_journal): Only call ext3_flush() if
1982 the superblock is dirty.
1983
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -040019842001-07-07 Theodore Tso <tytso@valinux.com>
1985
Theodore Ts'o7b63fff2001-07-07 23:01:31 -04001986 * pass1b.c (pass1b, process_pass1b_block): Change the num_bad
1987 field calculation so that it only counts EA block entries
1988 as a single multiply claimed block (since once we clone
1989 the EA blocks for one inode, we fix the problem for all of
1990 the other inodes). Also, I moved the num_bad calculation
1991 from process_pass1b_block to the end of pass1b. This
1992 fixes a *significant* performance bug in pass1b which hit
1993 people who had to had a lot of multiply claimed blocks.
1994 (Can you say O(n**3) boys and girls? I knew you could...
1995 Fortunately, this case didn't happen that much in actual
1996 practice.)
1997
1998 * pass1.c (e2fsck_pass1): Defer inodes which have an extended
1999 attribute block for later processing to avoid extra seeks
2000 across the disk.
2001 (process_inode_cmp): If there is no indirect block, sort
2002 by the extended attribute (i_file_acl) block.
2003
Theodore Ts'o7abb2bd2001-07-07 13:20:34 -04002004 * pass1b.c (clone_file_block): Fix bugs when cloning extended
2005 attribute blocks. Moved free of block_buf to after the
2006 code which clones the extattr block, and fixed logic for
2007 changing pointers to the extended attribute field in the
2008 inodes which were affected.
2009 (decrement_badcount): New function which is used whenever
2010 we need to decrement the number of files which claim a
2011 particular bad block. Fixed bug where delete_file wasn't
2012 checking check_if_fs_block() before clearing the entry in
2013 block_dup_map. This could cause a block which was claimed
2014 by multiple files as well as the filesystem metadata to
2015 not be completely fixed.
2016
Theodore Ts'oe8a3ee62001-07-07 11:12:50 -04002017 * pass1.c (adjust_extattr_refcount): Add new function which
2018 adjusts the reference counts of extended attribute blocks
2019 if needed, both up and down.
2020 (e2fsck_pass1): If the refcount or refcount_extra
2021 structure are present, call adjust_extattr_refcount(),
2022 and free it afterwards.
2023
2024 * problem.h, problem.c (PR_1_EXTATTR_READ_ABORT,
2025 PR_1_EXTATTR_REFCOUNT, PR_1_EXTATTR_WRITE): Add new
2026 problem codes.
2027
Theodore Ts'o342d8472001-07-02 11:54:09 -040020282001-07-02 Theodore Tso <tytso@valinux.com>
2029
2030 * pass1.c (e2fsck_pass1, check_ext_attr, check_blocks): Add
2031 initial support for scanning extended attribute blocks.
2032
2033 * e2fsck.c (e2fsck_reset_context): free extended attribute
2034 refcount structure.
2035
2036 * e2fsck.h: Add new fields for accounting for the extended
2037 attribute blocks.
2038
2039 * Makefile.in, ea_refcount.c, e2fsck.h: Add new file which
2040 implements a reference count abstraction.
2041
2042 * problem.c, problem.h: Add new problem codes PR_1_ALLOCATE_REFCOUNT,
2043 PR_1_READ_EA_BLOCK, PR_1_BAD_EA_BLOCK, PR_2_FILE_ACL_BAD
2044
2045 * message.c: Add "@a" as an abbreviation for "extended attribute"
2046
2047 * pass1b.c (clone_file): Add code which handles cloning an
2048 extended attribute block.
2049
2050 * pass1b.c (delete_file):
2051 * pass2.c (deallocate_inode): If the inode contains an extended
2052 attribute block in the file_acl field, clear it and
2053 deallocate the block.
2054
20552001-06-28 Theodore Tso <tytso@valinux.com>
2056
2057 * pass2.c (e2fsck_process_bad_inode): Deal with inodes which are
2058 marked bad because of an invalid file_acl (either because
2059 EXT2_FEATURE_COMPAT_EXT_ATTR is not set, or because the
2060 block number in file_acl is bad.
2061
Theodore Ts'o636a9542001-06-29 17:57:26 -040020622001-06-29 Theodore Tso <tytso@valinux.com>
2063
2064 * unix.c (show_stats): Use long long to calculate the percentage
2065 of the number of blocks in use in the filesystem.
2066
Theodore Ts'o67960132001-06-23 00:16:37 -040020672001-06-23 Theodore Tso <tytso@valinux.com>
2068
2069 * Release of E2fsprogs 1.22
2070
Theodore Ts'od90f3492001-06-22 21:01:17 -040020712001-06-22 Theodore Tso <tytso@valinux.com>
2072
2073 * flushb.c: Use platform independent method of defining the
2074 BLKFLSBUF ioctl. Also include sys/mount.h since on newer
2075 platforms BLKFLSBUF is defined there.
2076
Theodore Ts'o42475e22001-06-22 20:35:38 -040020772001-06-19 Theodore Tso <tytso@valinux.com>
2078
2079 * super.c (release_inode_blocks): Don't try to release the blocks
2080 if the orphaned inode is a device file, symlink, or some
2081 other kind of special file that doesn't have a block list.
2082
Theodore Ts'of4f75ba2001-06-16 01:14:28 +000020832001-06-15 Theodore Tso <tytso@valinux.com>
2084
2085 * Release of E2fsprogs 1.21
2086
Theodore Ts'ob6a08072001-06-14 01:16:17 +000020872001-06-13 Theodore Tso <tytso@valinux.com>
2088
2089 * unix.c (check_if_skip): Adapted patch from Andreas Dilger which
2090 prints the number of mounts or days elapsed since the last
2091 check when e2fsck is forced to check an otherwise clean
2092 filesystem.
2093
Theodore Ts'ocbbf0312001-06-13 00:12:04 +000020942001-06-12 Theodore Tso <tytso@valinux.com>
2095
2096 * badblocks.c: Stop using the compatibility badblocks function,
2097 and use the ext2fs_badblocks_* functions instead.
2098
Theodore Ts'o5df55d72001-06-11 07:00:04 +000020992001-06-11 Theodore Tso <tytso@valinux.com>
2100
Theodore Ts'o3034f622001-06-11 15:17:45 +00002101 * unix.c (PRS): Fix bug introduced in 1.20 which broke the -F
2102 flag.
2103
Theodore Ts'o5df55d72001-06-11 07:00:04 +00002104 * Makefile.in: Add message.c and swapfs.c to the list of source
2105 files to build the make depend.
2106
2107 * swapfs.c, unix.c: Only support the -s and -S options to e2fsck
2108 if ENABLE_SWAPFS is defined.
2109
Theodore Ts'o725c4742001-06-08 11:55:44 +000021102001-06-08 Theodore Tso <tytso@valinux.com>
2111
2112 * recover.c, revoke.c: Synchronize with ext3 0.7a
2113
Theodore Ts'ofdbdea02001-06-02 04:26:26 +000021142001-06-02 Theodore Tso <tytso@valinux.com>
2115
Theodore Ts'oa479fe62001-06-02 04:50:14 +00002116 * recovery.c (scan_revoke_records): Fix bug in recovery code;
2117 missing byte order conversion.
2118
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00002119 * pass1.c (mark_inode_bad): Replace alloc_bad_map with a function
2120 which sets the bit in the bad inode bitmap.
2121 (e2fsck_pass1): Check for fast symlinks with an invalid
2122 size, and set the bad inode map in that case.
Theodore Ts'o62b6d472001-06-02 04:37:02 +00002123 (check_size): Check i_size_high for special files and
2124 prompt to clear it along with i_size if non-zero.
Theodore Ts'ofdbdea02001-06-02 04:26:26 +00002125
2126 * pass2.c (e2fsck_process_bad_inode): Check for fast symlinks with
2127 an invalid size and prompt the user if the inode should be
2128 cleared.
2129
2130 * problem.h, problem.c (PR_2_SYMLINK_SIZE): Added new problem code.
2131
Theodore Ts'o71d521c2001-06-01 19:29:36 +000021322001-06-01 Theodore Tso <tytso@valinux.com>
2133
Theodore Ts'o2f686ac2001-06-02 00:38:40 +00002134 * problem.c, problem.h: Change PR_0_JOURNAL_UNSUPP_INCOMPAT and
2135 PR_0_JOURNAL_UNSUPP_ROCOMPAT so they aren't fatal errors,
2136 but prompt to see if the user should abort. Removed the
2137 PR_0_JOURNAL_RESET_COMPAT problem code.
2138
2139 * journal.c (e2fsck_journal_load): If there are incompatible
2140 journal flags, just return an error code.
2141 (e2fsck_check_ext3_journal): If e2fsck_journal_load
2142 returns an error code indicating that there are
2143 incompatible journal flag, check to see if we should
2144 abort, and then offer to clear the journal.
Theodore Ts'oe3338452001-06-14 07:11:33 +00002145 (Addresses Debian bug #98527.)
Theodore Ts'o2f686ac2001-06-02 00:38:40 +00002146
Theodore Ts'o797f5ef2001-06-01 23:49:46 +00002147 * Makefile.in: Move include/asm/types.h.in to
Theodore Ts'o36a23e12001-06-02 00:54:10 +00002148 lib/ext2fs/ext2_types.h.in.
Theodore Ts'o797f5ef2001-06-01 23:49:46 +00002149
21502001-06-01 Theodore Tso <tytso@valinux.com>
2151
Theodore Ts'o71d521c2001-06-01 19:29:36 +00002152 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
2153 pass1_check_directory): Add a safety check to make sure
2154 ctx->stashed_inode is non-zero.
2155
2156 * pass1b.c (pass1b): Use e2fsck_use_inode_shortcuts() to disable
2157 the inode shortcut processing, instead of manually
2158 clearing only half of the function pointers that needed to
2159 be NULL'ed out. This caused nasty bugs if the last inode
2160 in the filesystem needed dup block processing.
2161
2162 * pass1b.c (clone_file_block): When cloning a directory's metadata
2163 block, don't try to update the directory block list
2164 database, since indirect blocks aren't stored in the
2165 database and the resulting error will abort the file clone
2166 operation.
2167
Theodore Ts'o561cd4d2001-05-25 16:40:56 +000021682001-05-25 Theodore Tso <tytso@valinux.com>
2169
Theodore Ts'obb185862001-05-25 17:35:00 +00002170 * Release of E2fsprogs 1.20
2171
21722001-05-25 Theodore Tso <tytso@valinux.com>
2173
Theodore Ts'o561cd4d2001-05-25 16:40:56 +00002174 * journal.c (e2fsck_journal_reset_super): Remove extraneous line
2175
Theodore Ts'oc7f23362001-05-23 22:19:47 +000021762001-05-23 Theodore Tso <tytso@valinux.com>
2177
2178 * journal.c (e2fsck_journal_reset_super): Fix bug; the reset
2179 journal wasn't getting written out to disk since the dirty
2180 bit wasn't being set on the buffer.
2181 (e2fsck_journal_load): Don't print an error message if the
2182 journal version number is wrong; just return a error code
2183 reflecting this fact. If the block type in the journal
2184 superblcok is obviously not a version number, report the
2185 journal is corrupted.
2186 (e2fsck_check_ext3_journal): On an unsupported journal
2187 version, prompt to abort by default, but then offer a
2188 chance to clear the journal as corrupt.
2189
2190 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_VERSION): Added new
2191 problem code.
2192
Theodore Ts'o424cd2b2001-05-14 04:06:56 +000021932001-05-14 Theodore Tso <tytso@valinux.com>
2194
Theodore Ts'o21afac02001-05-14 12:47:41 +00002195 * pass1.c: Treat inodes with a low dtime (that were from a
2196 corrupted orphan list) specially.
2197
2198 * problem.c, problem.h: Add new problem codes PR_1_LOW_DTIME and
2199 PR_1_ORPHAN_LIST_REFUGEES, and a new latch group,
2200 PR_LATCH_LOW_DTIME.
2201
2202 * problemP.h: Expand the size of the problem flag to be an int
2203 instead of a short. Expand space in the flag word which
2204 is reserved for problem latch flags from 3 bits to 8 bits.
2205
Theodore Ts'o54c637d2001-05-14 11:45:38 +00002206 * e2fsck.h, scantest.c: Change location of ext2_fs.h to be
2207 ext2fs/ext2_fs.h
2208
Theodore Ts'o424cd2b2001-05-14 04:06:56 +00002209 * super.c (check_super_block): Be more strict on checking
2210 s_r_blocks_count superblock field.
2211
22122001-05-13 Theodore Tso <tytso@valinux.com>
2213
2214 * problem.c, problem.h (PR_0_JOURNAL_UNSUPP_ROCOMPAT,
2215 PR_0_JOURNAL_UNSUPP_INCOMPAT, PR_0_JOURNAL_RESET_COMPAT):
2216 New problem codes.
2217
2218 * journal.c (e2fsck_journal_load): Use a problem code to
2219 report unsupported feature flags. There is code to
2220 clear unsupported flags, but since this is dangerous,
2221 it's not allowed in the problem code table.
2222
22232001-05-11 Andreas Dilger <adilger@turbolinux.com>
2224
2225 * journal.c (e2fsck_journal_reset_super): initialize the journal
2226 sequence number to a random value to avoid recovering
2227 bad transactions from a corrupt journal.
2228
Theodore Ts'o328a5ce2001-05-13 20:21:25 +000022292001-05-13 Theodore Tso <tytso@valinux.com>
2230
2231 * journal.c: Code cleanup; initialize journal_enable_debug using
2232 an initializer.
2233
Theodore Ts'ofc9a69c2001-05-12 13:43:46 +000022342001-05-12 Theodore Tso <tytso@valinux.com>
2235
2236 * unix.c (PRS): Skip validation of -C's file descriptor if it is
2237 zero, since that is special case.
2238
Theodore Ts'of0b8c872001-05-09 06:03:58 +000022392001-05-09 Theodore Tso <tytso@valinux.com>
2240
2241 * super.c (release_orphan_inodes): Add gettext quoting around
2242 "Truncating" and "Clearing" for i18n.
2243
Theodore Ts'ob9852cd2001-05-05 05:14:59 +000022442001-05-05 Theodore Tso <tytso@valinux.com>
2245
Theodore Ts'oe39ac922001-05-05 06:47:24 +00002246 * util.c (fatal_error): Use the correct magic number when checking
2247 the magic number for the io_channel data structure. Also
2248 remove extraneous call to io_channel_flush() that was left
2249 over from an editing session.
2250
Theodore Ts'ob9852cd2001-05-05 05:14:59 +00002251 * pass2.c (check_dir_block): Ignore EXT2_ET_DIR_CORRUPTED errors
2252 from ext2fs_read_dir_block().
2253
Theodore Ts'o5f629b72001-05-01 20:01:08 +000022542001-05-01 Theodore Tso <tytso@valinux.com>
2255
Theodore Ts'oae8160e2001-05-01 21:13:37 +00002256 * unix.c (PRS): Validate the completion information file
2257 descriptor so that the completion bar won't get
2258 accidentally written onto the disk.
2259
Theodore Ts'o5f629b72001-05-01 20:01:08 +00002260 * e2fsck.8.in: Add explanation that you can use mke2fs -n -b
2261 blocksize to printout alternate superblock locations.
2262
Theodore Ts'obc57f152001-04-26 04:11:46 +000022632001-04-26 Theodore Tso <tytso@valinux.com>
2264
2265 * unix.c (check_if_skip): If the max_mount_count is zero, treat it
2266 as having no count set.
2267
Theodore Ts'oef059872001-04-17 00:40:02 +000022682001-04-16 Theodore Tso <tytso@valinux.com>
2269
2270 * super.c (check_super_block): Fix bad calculation of
2271 inodes_per_block, and tighten min/max checks to be a bit
2272 more paranoid. Thanks to Andreas Dilger for pointing out
2273 this bug.
2274
Theodore Ts'o1f735032001-03-29 19:00:50 +000022752001-03-29 Theodore Tso <tytso@valinux.com>
2276
Theodore Ts'o15986f72001-03-29 19:22:16 +00002277 * journal.c (mark_buffer_uptodate): Add emulation of kernel
2278 function mark_buffer_uptodate.
2279
Theodore Ts'o1f735032001-03-29 19:00:50 +00002280 * recovery.c, revoke.c: Synchronize with 0.6b ext3 files.
2281
Theodore Ts'od0515212001-02-13 04:32:53 +000022822001-02-12 Theodore Tso <tytso@valinux.com>
2283
2284 * journal.c (e2fsck_run_ext3_journal): Force a flush of the
2285 filesystem and io_channel before replaying the journal.
2286
Theodore Ts'oa5c33f22001-01-18 02:34:03 +000022872001-01-17 Theodore Ts'o <tytso@valinux.com>
2288
2289 * pass1.c (check_blocks): Fix large file checking code so that
2290 files > 2GB are considered large files, and restrict
2291 directories from being > 2GB.
2292
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +000022932001-01-12 Theodore Ts'o <tytso@valinux.com>
2294
Theodore Ts'oa9ca2012001-01-12 21:53:25 +00002295 * journal.c (e2fsck_journal_fix_unsupported_super): Remove unused
2296 function. Add FIXME notes to e2fsck_get_journal(), from
2297 Andreas Dilger.
2298
2299 * pass1.c (e2fsck_pass1): Cap the maximum legal size of a file by
2300 the limit caused by the fact that i_blocks is in 512 byte
2301 units, and that the Linux buffer cache also fundamentally
2302 assumes 512 byte sectors.
2303 Make sure that the journal inode is a regular file, and
2304 when clearing an unused journal inode, make sure the
2305 icount db is updated.
2306
2307 * problem.c, problem.h (PR_1_JOURNAL_BAD_MODE): Add new problem code.
2308
Theodore Ts'o37b6b292001-01-12 21:16:13 +00002309 * problem.c: For PR_1_RESERVED_BAD_MODE, print a description of
2310 the reserved inode. In PR_0_JOURNAL_HAS_JOURNAL, prompt
2311 to clear the journal, rather than deleting it (which is
2312 more accurate). (From Andreas Dilger.)
2313
Theodore Ts'o6a6d3d42001-01-12 21:11:24 +00002314 * journal.c: Make sure all functions which return an error code
2315 use the errcode_t return type, and not "int"
2316 (e2fsck_journal_release): Add new parameter, "drop",
2317 which is used when we just want to deallocate the journal
2318 without trying to write out any changes.
2319 (mark_buffer_clean): New function
2320 (e2fsck_check_ext3_journal): If we fail loading the
2321 journal, make sure we free all memory associated with it.
2322 (recover_ext3_journal): If we fail to load the journal or
2323 initialize the revoke data structures, make sure we free all
2324 memory associated with the journal.
2325
Theodore Ts'o721edd02001-01-12 21:05:57 +00002326 * message.c (special_inode_name): Add more special inode names
2327 (From Andreas Dilger)
2328
Theodore Ts'o58a75172001-01-12 20:59:19 +00002329 * util.c (fatal_error): Check to make sure the io_manager data
2330 structure is sane before trying to flush the io_channel.
2331 (From Andreas Dilger)
2332
Theodore Ts'o721edd02001-01-12 21:05:57 +00002333 * mtrace.h, super.c, pass2.c: Minor whitespace cleanups, from
2334 Andreas Dilger.
Theodore Ts'o4035f402001-01-12 20:25:50 +00002335
Theodore Ts'o7e92dfa2001-01-12 15:30:25 +00002336 * journal.c (e2fsck_journal_fix_bad_inode): Set pctx->ino to the
2337 bad journal number.
2338
2339 * problem.c (PR_0_JOURNAL_BAD_INODE): Use pctx->ino instead of
2340 pctx->num when printing the bad journal inode number.
2341
Theodore Ts'o86c627e2001-01-11 15:12:14 +000023422001-01-11 <tytso@snap.thunk.org>
2343
Theodore Ts'o5ba23cb2001-01-11 19:15:02 +00002344 * pass1.c (process_block): Remove dead code which was never
2345 getting executed.
2346
2347 * iscan.c, unix.c, e2fsck.h: Don't use NOARGS, and use
2348 ext2fs_sync_device() instead of using BLKFLSBUF.
2349
2350 * flushb.c: Don't use NOARGS anymore; everything is STDC these days.
2351
Theodore Ts'o86c627e2001-01-11 15:12:14 +00002352 * dirinfo.c, e2fsck.h, emptydir.c, iscan.c, jfs_user.h, journal.c,
2353 message.c, pass1.c, pass1b.c, pass2.c, pass3.c, pass4.c,
2354 pass5.c, problem.h, scantest.c, super.c, swapfs.c: Change
2355 ino_t to ext2_ino_t.
2356
Theodore Ts'o95a5bc92001-01-11 04:58:21 +000023572001-01-09 <tytso@snap.thunk.org>
2358
2359 * problem.c: Fix another broken @F vs @f problem.
2360
Theodore Ts'o53ef44c2001-01-06 05:55:58 +000023612001-01-06 <tytso@snap.thunk.org>
2362
2363 * journal.c, pass1.c, pass1b.c, pass3.c, recovery.c, revoke.c,
2364 super.c, unix.c, util.c: Fix random gcc -Wall complaints.
2365
2366 * jfs_user.h: Use more sophisticated inline handling to allow
2367 building with --enable-gcc-wall
2368
Theodore Ts'od3f35b62001-01-03 13:00:43 +000023692001-01-03 <tytso@snap.thunk.org>
2370
Theodore Ts'of18996c2001-01-03 16:57:24 +00002371 * pass1.c (e2fsck_pass1): Moved journal inode handling out to its
2372 own block; if the journal inode is not in use, and it
2373 contains data, offer to clear it.
2374
2375 * problem.h, problem.c (PR1_JOURNAL_INODE_NOT_CLEAR): Add new
2376 problem code.
2377
2378 * problem.c: Modified problem table to use a new abbreviations.
2379
Theodore Ts'od74edf42001-01-03 19:38:04 +00002380 * message.c: Add @j abbreviation for journal, and @v abbreviation
Theodore Ts'oe9044062001-01-03 15:39:37 +00002381 for device.
Theodore Ts'o1ce64532001-01-03 15:34:20 +00002382
Theodore Ts'occ7067b2001-01-03 13:24:06 +00002383 * jfs_user.h: Moved contents of jfs_e2fsck.h into jfs_user.h.
2384
Theodore Ts'od3f35b62001-01-03 13:00:43 +00002385 * journal.c (e2fsck_check_ext3_journal): Force a fsck if we remove
2386 the journal stored on a reserved inode. Also force a fsck
2387 if the journal appears to exist while !NEEDS_RECOVERY, and
2388 we forcibly reset the journal.
2389
Theodore Ts'of5ae75e2001-01-01 14:52:52 +000023902001-01-01 <tytso@snap.thunk.org>
2391
Theodore Ts'o5dd8f962001-01-01 15:51:50 +00002392 * journal.c, pass1.c, super.c, unix.c: Replace use of struct
2393 ext2fs_sb with struct ext2_super_block.
2394
Theodore Ts'of5ae75e2001-01-01 14:52:52 +00002395 * pass1.c (check_blocks): Remove use of EXT2_HAS_*_FEATURE macros.
2396
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +000023972000-12-31 <tytso@snap.thunk.org>
2398
2399 * jfs_compat.h: Remove uneeded header file.
2400
Theodore Ts'ob2f93192000-12-30 20:33:42 +000024012000-12-30 <tytso@snap.thunk.org>
2402
Theodore Ts'oc59a7042000-12-31 01:52:03 +00002403 * malloc.h, mtrace.c: Renamed malloc.h to mtrace.h to avoid
2404 conflicts with the system header file.
2405
Theodore Ts'ob2f93192000-12-30 20:33:42 +00002406 * problem.h: Fixed numbering of pass1 error messages; an extra 0
2407 had slipped into some of the numbers. (Pointed out by
2408 Andreas Dilger)
2409
2410 * journal.c (e2fsck_journal_fix_corrupt_super): Clean up
2411 unnecessary automatic variable. Add explanatory comment
2412 about the kernel emulation routines. (Suggested by
2413 Andreas Dilger)
2414
Theodore Ts'o060b5fb2000-12-13 18:07:23 +000024152000-12-13 Theodore Ts'o <tytso@valinux.com>
2416
Theodore Ts'o9b565752000-12-13 18:50:22 +00002417 * journal.c (e2fsck_check_ext3_journal): Check to make sure the
2418 journal fields are consistent if any of the superblock
2419 fields are set. (Backs out erroneous change made by sct,
2420 pointed out by Andreas.)
2421
2422 * unix.c (main): Clarify coments (no code changes)
2423
2424 * super.c (release_orphan_inodes): Fix spelling typo in error message.
2425
Theodore Ts'o8188c9e2000-12-13 18:39:14 +00002426 * pass1.c (e2fsck_pass1): Offer to update the filesystem revision
2427 level if we need to set large files flag. Patch from
2428 Andreas Dilger.
2429
Theodore Ts'o7b59f1e2000-12-13 18:11:44 +00002430 * super.c (check_super_block): If we have any of the compatibility
2431 flags set, we need to have a revision 1 filesystem. Most
2432 kernels will not check the flags on a rev 0 filesystem
2433 and we may have corruption issues because of the
2434 incompatible changes to the filesystem. Patch from Andreas
2435 Dilger.
2436
Theodore Ts'o060b5fb2000-12-13 18:07:23 +00002437 * problem.c, problem.h (PR_0_FS_REV_LEVEL, PR_1_FS_REV_LEVEL): Add
2438 new problem codes.
2439
Theodore Ts'o0e8a9562000-12-09 06:41:25 +000024402000-12-09 <tytso@snap.thunk.org>
2441
Theodore Ts'obf2d4992000-12-09 14:46:20 +00002442 * flushb.c: Fix flushb so that it does something other than waste
2443 disk space when built on systems with modern header files
2444 and add a non-subtle Copyright Licensing restriction so
2445 Yann will remove it from the Debian Distribution. (Now
2446 violates the Debian Free Software Guidelines, on purpose.)
2447
Theodore Ts'of43650c2000-12-09 06:47:56 +00002448 * journal.c (e2fsck_check_ext3_journal): If JFS_DEBUG is defined
2449 at the top level, set the JFS debuging level to 2.
2450
Theodore Ts'o0e8a9562000-12-09 06:41:25 +00002451 * jfs_e2fsck.h, jfs_user.h: Replaces jfs_compat.h. The jfs.h file
2452 has been moved to the include/linux directory.
2453
2454 * journal.c, revoke.c, recovery.c: Updated files from Stephen to
2455 support the V2 superblock and revoke processing. The
2456 journal.c and revoke.c files are copies from the ext3
2457 kernel source.
2458
2459 * Makefile.in: Added revoke.c to the list of source/object files.
2460
Theodore Ts'o133a56d2000-11-17 05:40:49 +000024612000-11-16 Theodore Ts'o <tytso@valinux.com>
2462
2463 * pass1b.c: Change routines to use PR_1B_BLOCK_ITERATE when
2464 reporting problems rather than using com_err directly.
2465
2466 * problem.c, problem.h (PR_1B_BLOCK_ITERATE): Add new problem code.
2467
2468 * message.c (expand_percent_expression): Add safety check. If
2469 ctx->str is NULL, print "NULL" instead of dereferencing
2470 the null pointer.
2471
2472 * pass1b.c, pass2.c, pass3.c: Change calls to ext2fs_block_iterate
2473 to ext2fs_block_iterate2, to support 64-bit filesizes and
2474 to speed things up slightly by avoiding the use of the
2475 ext2fs_block_iterate's compatibility shim layer.
2476
Theodore Ts'o3f65f1a2000-10-30 14:33:49 +000024772000-10-30 <tytso@snap.thunk.org>
2478
2479 * util.c (get_backup_sb): Calculate backup superblock correctly
2480 when the blocksize is > 1k.
2481
Theodore Ts'o241f2242000-10-26 20:42:07 +000024822000-10-26 <tytso@snap.thunk.org>
2483
2484 * jfs.h, jfs_compat.h, journal.c: Updated to include the
2485 definition of the new journal superblock format; still
2486 only supports V1 superblocks for now. (From sct)
2487
Theodore Ts'ob09a4b02000-10-24 21:16:09 +000024882000-10-24 <tytso@snap.thunk.org>
2489
Theodore Ts'o83949022000-10-25 01:38:50 +00002490 * super.c (release_inode_block, release_inode_blocks,
2491 release_orphan_inodes): Add code to deal with truncating
2492 inodes which are still in use (but which are on the orphan
2493 list because they need truncation).
2494
2495 * problem.c, problem.h: Rename PR_0_CLEAR_ORPHAN_INODE to
2496 PR_0_ORPHAN_CLEAR_INODE, and remove
2497 PR_0_ORPHAN_INODE_INUSE.
2498
2499 * journal.c (e2fsck_run_ext3_journal): Add i18n support, and print
2500 a message when the journal is being recovered.
2501
Theodore Ts'ob09a4b02000-10-24 21:16:09 +00002502 * pass1.c (e2fsck_pass1): Don't check the i_mode field for the
2503 journal inode, if it is in use.
2504
Theodore Ts'oadfca562000-09-12 21:24:36 +000025052000-09-12 <tytso@valinux.com>
2506
2507 * extend.c:
2508 * flushb.c: Add include of nls-enable.h which is necessary so that
2509 they can compile correctly.
2510
Theodore Ts'occ96b2b2000-08-22 21:30:11 +000025112000-08-22 <tytso@valinux.com>
2512
Theodore Ts'o2575fb02000-08-22 21:50:04 +00002513 * unix.c (main): If we're doing a read-only check, skip the
2514 journal playback, but don't abort the e2fsck run.
2515
Theodore Ts'o99a2cc92000-08-22 21:41:52 +00002516 * super.c (release_orphan_inodes): Fix typo; should do bounds
2517 checking on next_ino instead of ino.
2518
2519 * jfs_compat.h (J_ASSERT):
2520 * journal.c (e2fsck_run_ext3_journal):
2521 * pass3.c (adjust_inode_count): Use fatal_error() instead of exit().
2522
Theodore Ts'o243dc312000-08-22 21:37:47 +00002523 * unix.c: Use fatal_error() instead of exit() whenever possible.
2524 Also fix the fsck exit codes so that we use FSCK_USAGE
2525 when it is appropriate. Rename global_signal_ctx to
2526 e2fsck_global_ctx and let it be exported globally.
2527
Theodore Ts'occ96b2b2000-08-22 21:30:11 +00002528 * util.c (fatal_error): Try to flush the I/O manager before
2529 forcing an exit.
2530
Theodore Ts'oecf1b772000-08-20 22:06:31 +000025312000-08-20 <tytso@valinux.com>
2532
2533 * journal.c (e2fsck_journal_load): Fix **nasty** bug which caused
2534 e2fsck_check_ext3_journal to smash the journal because
2535 journal->j_transaction_sequence wasn't getting
2536 initialized.
2537
2538 * journal.c: (recover_ext3_journal, e2fsck_run_ext3_journal): Move
2539 call to e2fsck_clear_recover from recover_ext3_journal to
2540 after the filesystem has been closed and reopened.
2541 Otherwise, the superblock in the filesystem handle will
2542 probably be stale, and will overwrite the newer version of
2543 the superblock written by the log recovery.
2544
2545 * message.c (expand_inode_expression): Add support for %Iu and %Ig
2546
2547 * problem.h (PR_0_CLEAR_ORPHAN_INODE): Add new problem code.
2548
2549 * super.c (release_orphan_inodes, release_inode_block,
2550 release_inode_blocks): Update the block group descriptor
2551 counts when freeing the orphan inode. Use
2552 PR_0_CLEAR_ORPHAN_INODE to report when we clear an orphan.
2553
2554 * journal.c (e2fsck_run_ext3_journal): Fix a bug where we
2555 attempted to reopen the filesystem using the device name
2556 instead of the filesystem name.
2557
Theodore Ts'o80bfaa32000-08-18 15:08:37 +000025582000-08-18 <tytso@valinux.com>
2559
2560 * Makefile.in: Update the make dependencies
2561
2562 * problem.c, problem.h: Add the problem codes:
2563 PR_0_ORPHAN_ILLEGAL_BLOCK_NUM,
2564 PR_0_ORPHAN_ALREADY_CLEARED_BLOCK,
2565 PR_0_ORPHAN_ILLEGAL_HEAD_INODE,
2566 PR_0_ORPHAN_ILLEGAL_INODE, PR_0_ORPHAN_INODE_INUSE
2567
2568 * super.c (release_inode_blocks, release_orphan_inodes,
2569 check_super_block): Add support for clearing orphaned
2570 inodes from the unmounted filesystem.
2571
2572 * journal.c (e2fsck_recover_ext3_journal): Remove the last orphan
2573 check; this is now handled in check_super_block ---
2574 non-journaled filesystems can use the orphan list in the
2575 future. Also, move the the re-opening of the filesystem
2576 to e2fsck_run_ext3_journal().
2577
Theodore Ts'o3b5386d2000-08-14 14:25:19 +000025782000-07-12 Andreas Dilger <adilger@turbolinux.com>
2579
2580 * journal.c: implement loading of ext3 journal for recovery code
2581
2582 * problem.c (fix_problem): return answer from PR_AFTER_CODE to caller.
2583 Add journal problems.
2584
2585 * recovery.c (journal_recover): user-space ext3 journal recovery code
2586
2587 * unix.c (main) : check journal and do recovery in separate steps
2588
Theodore Ts'ob8d164c2000-08-08 03:17:04 +000025892000-08-07 <tytso@snap.thunk.org>
2590
2591 * unix.c (calc_percent): Make sure that we don't take a floating
2592 exception if the max value is zero. (should normally
2593 never happen, but...)
2594
Theodore Ts'of9e67062000-07-13 23:25:54 +000025952000-07-13 <tytso@valinux.com>
2596
2597 * Release of E2fsprogs 1.19
2598
Theodore Ts'o17390c02000-07-07 04:13:21 +000025992000-07-06 Theodore Ts'o <tytso@valinux.com>
2600
2601 * unix.c (check_if_skip): Modify algorithm for checking
2602 s_max_mnt_count to match with the kernel. (If
2603 s_max_mnt_count is negative, ignore the mnt_count check.)
2604
2605 * unix.c (e2fsck_update_progress): Adjust the width of the
2606 progress bar dynamically, based on the filesystem name
2607 that we need to display.
2608
2609 * unix.c (main): If the ext3 needs_recovery flag is set, call
2610 e2fsck_run_ext3_journal() and then restart the e2fsck run.
2611
2612 * journal.c (e2fsck_run_ext3_journal): New file which contains
2613 logic to recover the ext3 journal. This version relies on
2614 the kernel being able to mount the filesystem in order to
2615 run the journal.
2616
Theodore Ts'o92269042000-07-05 18:25:59 +000026172000-07-05 Theodore Ts'o <tytso@valinux.com>
2618
2619 * unix.c (e2fsck_update_progress): Only save and check the last
2620 percentage after multiplying it by 10, nor 1000, since we
2621 only need to save values to a tenth of a percent (and the
2622 percentage is already from 0 .. 100%, not 0 .. 1).
Theodore Ts'oe4c8e882000-07-05 23:54:46 +00002623 Also, re-arrange the logic so that we do the time
2624 check only after doing the percentage check, and we
2625 only advance the spinner if we're about to display it.
Theodore Ts'o92269042000-07-05 18:25:59 +00002626
Theodore Ts'o9cbfb8d2000-07-04 19:51:22 +000026272000-07-04 Theodore Ts'o <tytso@valinux.com>
2628
2629 * pass1.c (e2fsck_pass1): Check to see if the ext3 s_last_orphan
2630 field is set; if so, clear it, so that ext3 mounting code
2631 won't get confused by the fact that we've cleared out the
2632 orphaned inodes.
2633
Theodore Ts'obbd47d72000-06-10 19:21:33 +000026342000-06-10 Theodore Ts'o <tytso@valinux.com>
2635
2636 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Add error
2637 checking for a "should never happen case".
2638
2639 * problem.c, problem.h (PR_5_COPY_IBITMAP_ERROR,
2640 PR_5_COPY_BBITMAP_ERROR): Add new error codes.
2641
Theodore Ts'od647a1e2000-05-27 14:40:09 +000026422000-05-27 Theodore Ts'o <tytso@valinux.com>
2643
2644 * pass1.c (pass1, check_size): Apply patch from Chris Wedgewood
2645 (cw@foof.org) which checks to see if special devices have
2646 a non-zero size, and deals with it.
2647
2648 * problem.c, problem.h (PR1_SET_NONZSIZE): Add new problem code.
2649
Theodore Ts'o1d279212000-05-19 02:38:14 +000026502000-05-18 Theodore Ts'o <tytso@valinux.com>
2651
2652 * Makefile.in (install): Create a symbolic link for fsck.ext3 as
2653 well.
2654
Theodore Ts'o4ea0a112000-05-08 13:33:17 +000026552000-05-08 Theodore Ts'o <tytso@valinux.com>
2656
2657 * problem.c, problem.h (PR_0_HURD_CLEAR_FILETYPE): Add new problem
2658 code.
2659
2660 * super.c (check_super_block): If the OS type in the superblock is
2661 the Hurd, check to see if the filetype feature is set, and
2662 offer to clear it if so. This needs to be done since the
2663 Hurd doesn't properly support the filetype feature.
2664 (And since the hurd allows the transmogrification of files
2665 to special files and vice versa --- for no good reason
2666 that I can understand --- it can't support the filetype
2667 feature for the forseeable future, either.)
2668
Theodore Ts'o373b8332000-04-03 16:22:35 +000026692000-04-03 Theodore Ts'o <tytso@valinux.com>
2670
2671 * unix.c: For platforms that don't define optarg.h, manually
2672 define optarg and optind.
2673
Theodore Ts'o01fbc702000-04-03 13:57:21 +000026742000-03-20 Theodore Ts'o <tytso@valinux.com>
2675
2676 * pass1.c (check_immutable, e2fsck_pass1_check_device_inode):
2677 Check for the append-only as well as the immutable flag.
2678
2679 * problem.c (PR_1_SET_IMMUTABLE): Adjust message to include
2680 append-only flag. Fix comment for compression flag.
2681
Theodore Ts'o06012322000-02-12 20:12:43 +000026822000-02-12 <tytso@snap.thunk.org>
2683
2684 * unix.c (e2fsck_update_progress): Limit the number of updates to
2685 the progress bars to 8 times a second. This allows a 9600
2686 baud console link to keep up.
2687
Theodore Ts'o19178752000-02-11 15:55:07 +000026882000-02-11 <tytso@snap.thunk.org>
2689
2690 * unix.c (main): If compression is enabled on the filesystem,
2691 print a warning message (for now).
2692
2693 * message.c: Add new compression shortcut: @c == compress
2694
2695 * problem.c, problem.h (PR_1_COMPR_SET): Add new error code.
2696
2697 * pass1.c (check_blocks): If the inode has EXT2_COMPRBLK_FL flag
2698 set, check to see if the filesystem supports compression.
2699 If it does pass this information down to process_block()
2700 so it can treat the compressed block flag words
2701 correctly. If not, offer to clear the flag, since it
2702 shouldn't be set.
2703 (process_block): If an inode has the compressed inode flag
2704 set, allow EXT2FS_COMPRESSED_BLKADDR.
2705
2706 * pass1b.c (process_pass1b_block, delete_file_block,
2707 clone_file_block):
2708 * pass2.c (deallocate_inode_block): Use HOLE_BLKADDR to check to
2709 see if the block can be skipped.
2710
Theodore Ts'o28ffafb2000-02-08 19:14:02 +000027112000-02-08 <tytso@snap.thunk.org>
2712
Theodore Ts'o4ee4ad32000-02-08 23:22:19 +00002713 * util.c: Make resource tracking message more concise.
2714
Theodore Ts'o80c5d7e2000-02-08 23:19:32 +00002715 * e2fsck.h:
2716 * pass1.c (mark_table_blocks, e2fsck_pass1): Remove
2717 ctx->block_illegal_map, since it's not needed by pass1,
2718 and pass1b has been modified to calculate it manually if
2719 needed. This reduces the memory footprint needed by e2fsck.
2720
2721 * pass1b.c (check_if_fs_block): New static function which returns
2722 whether or not a block overlaps with filesystem metadata.
2723 This replaces consulting the block_illegal_map bitmap.
2724
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00002725 * Makefile.in: Call sync after finishing building all in this
2726 directory.
2727
2728 * unix.c (PRS): sync the filesystem before trying to use
2729 BLKFLSBUF, to minimize the chance of causing dirty blocks
2730 to get dropped.
2731
2732 * e2fsck.h: Manually define BLKFLSBUF if not defined, and we're on
2733 a Linux/i386 system.
2734
2735 * pass3.c (check_directory): Only do the loop detection algorithm
2736 if we've searched over 2048 parent directories and haven't
2737 found the end yet. This means that in the common case, we
2738 don't allocate or clear the inode_loop_detection bitmap,
2739 which for large systems, merely clearing the bitmap for
2740 each directory was turning out to be quite expensive.
2741 Thanks to Jani Jaakkola (jjaakkol@cs.helsinki.fi) for
2742 identifying this problem.
2743
Theodore Ts'o0c4a0722000-02-07 03:11:03 +000027442000-02-06 Theodore Ts'o <tytso@valinux.com>
2745
2746 * badblocks.c, e2fsck.h, ehandler.c, emptydir.c, extend.c,
2747 flushb.c, iscan.c, message.c, pass1.c, pass1b.c, pass3.c
2748 pass4.c, pass5.c, problem.c, scantest.c, swapfs.c,
2749 unix.c, util.c: Add Internationalization support as
2750 suggested by Marco d'Itri <md@linux.it>.
2751
Theodore Ts'o80e808f2000-02-02 16:19:59 +000027522000-02-02 Theodore Ts'o <tytso@valinux.com>
2753
2754 * e2fsck.h, flushb.c, scantest.c: Remove uneeded include of
2755 linux/fs.h
2756
Theodore Ts'o894edb22000-01-18 21:27:12 +000027572000-01-18 Theodore Ts'o <tytso@valinux.com>
2758
2759 * Makefile.in: Since LIBUUID can sometimes include "-lsocket"
2760 we need a separate DEPLIBUUID that can be used in
2761 Makefile's dependency rules.
2762
Theodore Ts'oa1ccadb1999-11-23 13:57:16 +000027631999-11-23 <tytso@valinux.com>
2764
2765 * e2fsck.8.in: Update language about where to find a backup
2766 superblock.
2767
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +000027681999-11-19 <tytso@valinux.com>
2769
Theodore Ts'o86a63e91999-11-23 13:52:48 +00002770 * pass1.c (process_inodes): Add shortcut handling; if
2771 process_inodes_count is zero, return right away, to avoid
2772 calling qsort with a non-positive count.
2773
Theodore Ts'oec8d2c31999-11-19 18:52:36 +00002774 * message.c (safe_print): Fix to properly display ^A, ^B, etc. and
2775 to print Delete as ^?
2776
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00002777 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
2778 the source directory.
2779
Theodore Ts'oa846d2f1999-11-10 15:50:24 +000027801999-11-10 <tytso@valinux.com>
2781
Theodore Ts'ocd086361999-11-10 16:00:39 +00002782 * Release of E2fsprogs 1.18
2783
27841999-11-10 <tytso@valinux.com>
2785
Theodore Ts'oa846d2f1999-11-10 15:50:24 +00002786 * problem.c (fix_problem): Support a new flag, PR_PREEN_NO which
2787 means the answer is assumed to be no in preen mode. This
2788 is now used in the PR_1_SET_IMMUTABLE code, so that in
2789 preen mode we ignore these inodes and just print a warning
2790 message.
2791
Theodore Ts'o6fdc7a31999-11-10 13:34:40 +000027921999-11-09 <tytso@valinux.com>
2793
2794 * pass1.c (e2fsck_pass1): If the filesystem does not support
2795 imagic inodes, if an inode has the imagic flag set, offer
2796 to clear the imagic flag. If a valid device/fifo/socket
2797 has the immutable flag set, call the new helper function
2798 check_immutable() to offerto clear the immutable flag.
2799
2800 * pass2.c (check_filetype): Use the new ext2_file_type() helper
2801 function instead of calculating the file_type information
2802 manually.
2803
2804 * pass3.c (e2fsck_reconnect_file): When adding a link to
2805 lost+found, calculate the filetype information so that
2806 ext2fs_link() can use the information if applicable.
2807 (get_lost_and_found): Create the /lost+found directory
2808 with the correct filetype information if applicable.
2809
2810 * util.c (ext2_file_type), e2fsck.h: New function which returns
2811 the directory entry file type information given the
2812 inode's mode bits.
2813
2814 * problem.c, problem.h: Added new problem codes PR_1_SET_IMAGIC
2815 and PR_1_SET_IMMUTABLE.
2816
Theodore Ts'o7142db01999-11-08 18:46:54 +000028171999-11-07 <tytso@valinux.com>
2818
2819 * pass4.c (e2fsck_pass4): Clear inode_imagic_map after freeing it,
2820 to prevent it from getting freed twice.
2821
28221999-11-06 <tytso@valinux.com>
2823
2824 * unix.c (main): Close the filesystem before freeing the context,
2825 so that in the event of a free()-related segmentation
2826 violation, the filesystem is properly closed and written
2827 out.
2828
28291999-10-27 <tytso@valinux.com>
2830
2831 * e2fsck.c (e2fsck_reset_context): When freeing
2832 ctx->inode_reg_map, we weren't zero'ing
2833 ctx->inode_reg_map, which could cause a segfault later on
2834 in the e2fsck run.
2835
28361999-10-26 <tytso@valinux.com>
2837
2838 * problem.h (PR_2_SPLIT_DOT): Fix excess zero in problem code (now
2839 matches the standard convention).
2840
Theodore Ts'of68aa411999-10-26 14:20:22 +000028411999-10-26 <tytso@valinux.com>
2842
Theodore Ts'o28e11941999-10-26 18:17:20 +00002843 * Release of E2fsprogs 1.17
2844
28451999-10-26 <tytso@valinux.com>
2846
Theodore Ts'of68aa411999-10-26 14:20:22 +00002847 * message.c (safe_print): Make safe_print take an char instead of
2848 an unsigned char to fix gcc warnings.
2849
Theodore Ts'oc40db6d1999-10-25 21:03:34 +000028501999-10-25 <tytso@valinux.com>
2851
Theodore Ts'oe6597041999-10-26 02:30:16 +00002852 * util.c: For NT portability, don't redefine getchar(), since
2853 stdio defines that. Instead we introduce a new
2854 abstract macro read_a_char() which is #defined to the
2855 right function as necessary.
2856
Theodore Ts'oc40db6d1999-10-25 21:03:34 +00002857 * problem.c, problem.h (PR_2_NULL_NAME): Add new problem code.
2858
2859 * pass2.c (check_dir_block): Require that the length of the
2860 directory entry be at least 12 bytes. Check to see if the
2861 filename is zero-length, and flag that as an error.
2862
Theodore Ts'o7847c1d1999-10-22 15:11:42 +000028631999-10-22 <tytso@valinux.com>
2864
Theodore Ts'o614fdfd1999-10-23 03:19:51 +00002865 * Release of E2fsprogs 1.16
2866
28671999-10-22 <tytso@valinux.com>
2868
Theodore Ts'o7847c1d1999-10-22 15:11:42 +00002869 * pass2.c (check_filetype): If the filetype filesystem feature is
2870 not set, and a directory entry has a dirent feature, offer
2871 to clear it (since 2.0 kernels will do complain will
2872 interpret it as a very large name length field).
2873
2874 * problem.c (PR_2_CLEAR_FILETYPE): Add new problem code.
2875
Theodore Ts'oaa4115a1999-10-21 19:33:18 +000028761999-10-21 <tytso@valinux.com>
2877
Theodore Ts'ocaf8ce41999-10-21 19:56:34 +00002878 * e2fsck.8.in: Update man page to use a more standard format (bold
2879 option flags and italicized variables), as suggested by
2880 Andreas Dilger (adilger@enel.ucalgary.ca)
2881
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00002882 * pass4.c (e2fsck_pass4): If an inode is set in the
2883 inode_imagic_map bitmap, don't check to see if it is
2884 disconnected from the inode tree (because it almost
2885 certainly will be). Free inode_imagic_map at the end of
2886 pass 4.
2887
2888 * pass2.c (check_dir_block, check_filetype): If the FILETYPE
2889 feature is set, check the directory entry's filetype
2890 information field, and fix/set it if necessary.
2891 (e2fsck_pass2): Free the inode_reg_map bitmap at the end
2892 of pass 2.
2893
2894 * pass1.c (e2fsck_pass1, alloc_imagic_map): Allocate and fill in
2895 information for inode_reg_map and inode_imagic_map, which
2896 indicates which inodes are regular files and AFS inodes,
2897 respectively.
2898 Since only the master superblock is written during a
2899 restart, force that superblock to be used after a restart;
2900 otherwise changes to the block group descriptors end up
2901 getting ignored.
2902
2903 * problem.c, problemP.h: If e2fsck is run -n, make def_yn variable
2904 be 0 for "no". Add support for a new flag, PR_NO_NOMSG,
2905 which supresses the problem message if e2fsck is run with
2906 the -n option.
2907
2908 * problem.c, problem.h (PR_2_SET_FILETYPE, PR_2_BAD_FILETYPE): Add
2909 new problem codes.
2910
2911 * message.c (expand_dirent_expression): Add support for %dt which
2912 prints the dirent type information.
2913
2914 * e2fsck.c (e2fsck_reset_context): Free new bitmaps (inode_reg_map
2915 and inode_imagic_map).
2916
2917 * e2fsck.h (e2fsck_t): Add new inode_reg_map and inode_magic_map
2918 to the context structure.
2919
Theodore Ts'o9ecd8be1999-10-20 18:24:31 +000029201999-09-24 <tytso@valinux.com>
2921
2922 * unix.c (PRS), util.c (ask_yn): Add #ifdef's to make
2923 e2fsprogs easier to port to non-Unix platforms.
2924
29251999-09-07 <tytso@valinux.com>
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +00002926
2927 * pass3.c (adjust_inode_count): Fix bug where we didn't keep the
2928 internal and external inode counts in sync when we
2929 decremented an inode whose link count was already zero.
2930 Now we skip incrementing or decrementing both link counts
2931 if we would cause an overflow condition.
2932 (expand_dir, expand_dir_proc): Change where we update the
2933 inode block count and size files so that the block count
2934 field is updated correctly when we create an indirect block.
2935
Theodore Ts'o78cf0541999-10-20 18:29:18 +000029361999-08-05 <tytso@valinux.com>
2937
2938 * super.c (check_super_block): Check to see whether the
2939 inodes_per_group value in the superblock is insanely too
2940 high.
2941
Theodore Ts'oc1faf9c1999-09-14 20:00:54 +000029421999-08-02 <tytso@valinux.com>
2943
2944 * pass1b.c (clone_file_block): Don't clear the dup_map flag if
2945 the block also shares data with the fs metadata when
2946 the count drops to 1, since the block should still be
2947 cloned, as fs metadata isn't included in the count.
2948
29491999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +00002950
2951 * Release of E2fsprogs 1.15
2952
Theodore Ts'ob55199e1999-07-19 15:37:46 +000029531999-07-19 <tytso@valinux.com>
2954
2955 * unix.c (usage): Add minimalist emergency help to the usage
2956 message.
2957
Theodore Ts'o5596def1999-07-19 15:27:37 +000029581999-07-18 <tytso@valinux.com>
2959
2960 * unix.c: Add support for calculating a progress bar if the -C0
2961 option is given. The function e2fsck_clear_progbar()
2962 clears the progress bar and must be called before any
2963 message is issued. SIGUSR1 will enable the progress bar,
2964 and SIGUSR2 will disable the progress bar. This is used
2965 by fsck to handle parallel filesystem checks. Also, set
2966 the device_name from the filesystem label if it is
2967 available.
2968
2969 * e2fsck.h: Add new flags E2F_FLAG_PROG_BAR and
2970 E2F_FLAG_PROG_SUPRESS. Add new field in the e2fsck
2971 structure which contains the last tenth of a percent
2972 printed for the user.
2973
2974 * message.c (print_e2fsck_message): Add call to
2975 e2fsck_clear_progbar().
2976
2977 * pass1.c (e2fsck_pass1):
2978 * pass2.c (e2fsck_pass2):
2979 * pass3.c (e2fsck_pass3):
2980 * pass4.c (e2fsck_pass4):
2981 * pass5.c (e2fsck_pass5): Add call to e2fsck_clear_progbar when
2982 printing the resource tracking information.
2983
2984 * pass5.c (check_block_bitmaps, check_inode_bitmaps): If there is
2985 an error in the bitmaps, suppress printing the progress
2986 bar using the suppression flag for the remainder of the
2987 check, in order to clean up the display.
2988
Theodore Ts'o74033351999-07-01 03:00:47 +000029891999-06-30 <tytso@valinux.com>
2990
2991 * unix.c (check_mount): Clean up the abort message displayed when
2992 the filesystem is mounted and either stdout or stdin isn't
2993 a tty.
2994
29951999-06-25 <tytso@valinux.com>
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +00002996
2997 * e2fsck.h:
2998 * pass1.c (pass1_get_blocks, pass1_read_inode, pass1_write_inode,
2999 pass1_check_directory, e2fsck_use_inode_shortcuts): Make
3000 pass1_* be private static functions, and create new
3001 function e2fsck_use_inode_shortcuts which sets and clears
3002 the inode shortcut functions in the fs structure.
3003
3004 * e2fsck.h:
3005 * pass2.c (e2fsck_process_bad_inode): Make process_bad_inode() an
3006 exported function.
3007
3008 * pass4.c (e2fsck_pass4): Call e2fsck_process_bad_inode to check
3009 if a disconnected inode has any problems before
3010 connecting it to /lost+found. Bug and suggested fix by
3011 Pavel Machek <pavel@bug.ucw.cz>
3012
30131999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +00003014
3015 * unix.c (main): Add missing space in the disk write-protected
3016 message.
3017
Theodore Ts'od4b0ce01999-06-18 01:09:29 +000030181999-05-22 <tytso@rsts-11.mit.edu>
3019
3020 * problem.c, problem.h (PR_0_INODE_COUNT_WRONG): Add new problem
3021 code.
3022
3023 * super.c (check_super_block): Add check to make sure the total
3024 number of inodes is sane, since this can be calculated
3025 from the number of groups times the number of inodes per
3026 group. Offer to correct it if it is incorrect.
3027
Theodore Ts'oe79d1b21999-06-18 01:06:59 +000030281999-03-19 <tytso@rsts-11.mit.edu>
3029
3030 * pass5.c (check_block_end): Fix fencepost condition where when
3031 clearing the block padding we were missing the last position
3032 in the bitmap.
3033
Theodore Ts'o75d83be1999-05-18 03:16:36 +000030341999-05-17 <tytso@rsts-11.mit.edu>
3035
3036 * unix.c (reserve_stdio_fds): Add safety check in case
3037 reserve_stdio_fds couldn't open /dev/null.
3038
Theodore Ts'o4a9f5931999-03-16 19:32:52 +000030391999-03-14 Theodore Ts'o <tytso@rsts-11.mit.edu>
3040
3041 * util.c (print_resource_track): Use mallinfo if present to get
3042 more accurate malloc statistics.
3043
3044 * pass3.c (get_lost_and_found): Check to see if lost+found is a
Theodore Ts'oc54b3c31999-07-03 07:20:06 +00003045 plain file; if so, offer to unlink it.
Theodore Ts'o4a9f5931999-03-16 19:32:52 +00003046
3047 * problem.c, problem.h (PR_3_LPF_NOTDIR): Add new problem code.
3048
30491999-03-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
3050
3051 * problem.c: Fix problem message for PR_1_BAD_GROUP_DESCRIPTORS so
3052 that the block group number is printed. Add new prompt,
3053 PROMPT_UNLINK.
3054
30551999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
3056
3057 * Release of E2fsprogs 1.14
3058
Theodore Ts'o9e51eca1999-01-09 16:32:31 +000030591999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
3060
3061 * message.c (safe_print): New function which prints strings,
3062 converting non-printable characters using the '^' and
3063 M-notation. This function is now used to print directory
3064 name entries and pathnames.
3065
Theodore Ts'o73f17cf1999-01-04 07:35:45 +00003066Mon Jan 4 02:28:59 1999 Theodore Y. Ts'o <tytso@mit.edu>
3067
3068 * unix.c (main): Reset the context before calling ext2fs_close(),
3069 to avoid referencing already freed memory.
3070
Theodore Ts'o556ad131998-12-19 08:10:58 +000030711998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
3072
3073 * Release of E2fsprogs 1.13
3074
Theodore Ts'o5a679c81998-12-03 16:40:38 +000030751998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
3076
3077 * Makefile.in: Updated dependencies.
3078
30791998-11-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
3080
3081 * pass3.c (get_lost_and_found): If the filesystem is not opened
3082 read-only, then force /lost+found to be created if it is
3083 not present.
3084
3085 * problem.c: Allow PR_3_NO_LF_DIR to be handled during a preen
3086 operation.
3087
Theodore Ts'o1dde43f1998-11-14 04:18:28 +000030881998-10-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
3089
3090 * unix.c (main): Move ext2fs_close() after e2fsck_free_context()
3091 since e2fsck_free_context may reference data in ctx->fs.
3092
3093 * e2fsck.c (e2fsck_reset_context): Make sure ctx->fs is non-NULL
3094 before checking ctx->fs->dblist.
3095
30961998-10-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
3097
3098 * pass1.c (e2fsck_pass1): Use the device check subroutine on
3099 FIFO's and Socket's, so that we catch bogus immutable inodes.
3100
3101 * pass2.c (process_bad_inode): Process bad socket and fifo's.
3102
3103 * problem.h, problem.c: Define new problem codes PR_2_BAD_FIFO and
3104 PR_2_BAD_SOCKET.
3105
Theodore Ts'o7f813ba1998-09-03 01:26:03 +000031061998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
3107
3108 * problem.c: Add PR_3_NO_DIRINFO error code.
3109
3110 * super.c (check_super_value): Rename min and max to min_val and
3111 max_val to avoid possible cpp macro conflicts.
3112
3113 * pass4.c (e2fsck_pass4): Rename max to maxgroup, to avoid
3114 possible cpp macro conflicts.
3115
3116 * pass3.c (e2fsck_pass3): Rename max to maxdirs, to avoid possible
3117 cpp macro conflicts.
3118 (check_directory): Fix logic to avoid possible core dump
3119 in the case of ext2fs_get_dir_info returning NULL. (By
3120 the time we get here, it should never happen, but...).
3121 Also simply/streamline the control flow of the function.
3122
Theodore Ts'o24fc5031998-08-26 15:23:31 +000031231998-08-17 Theodore Ts'o <tytso@rsts-11.mit.edu>
3124
3125 * unix.c (check_if_skip): Move the "not cleanly mounted" check
3126 ahead of the maximal mount and too long since checked tests.
3127 (reserve_stdio_fds): Make sure 0,1,2 file descriptors are
3128 open, so that we don't open the filesystem using the same
3129 file descriptor as stdout or stderr.
3130
Theodore Ts'of75c28d1998-08-01 04:18:06 +000031311998-08-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
3132
3133 * pass2.c (e2fsck_pass2): Fix the progress accounting so that we
3134 get to 100%.
3135
3136 * pass3.c (e2fsck_pass3): Change progress accounting to be
3137 consistent with the other e2fsck passes.
3138
3139 * e2fsck.c (e2fsck_run): At the end of each pass, call the
3140 progress function with the pass number set to zero.
3141
3142 * unix.c (e2fsck_update_progress): If the pass number is zero,
3143 ignore the call, since that indicates that we just want to
3144 deallocate any progress structures.
3145
Theodore Ts'o8144d671998-07-09 05:33:18 +000031461998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
3147
Theodore Ts'o4a5fa191998-07-09 05:42:45 +00003148 * Release of E2fsprogs 1.12
3149
31501998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
3151
Theodore Ts'o8144d671998-07-09 05:33:18 +00003152 * unix.c (main): Fix typo in checking the incompat feature set; it
3153 should be checked against EXT2_LIB_FEATURE_INCOMPAT_SUPP.
3154
Theodore Ts'o1fad9041998-07-07 05:44:43 +000031551998-07-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
3156
3157 * badblocks.c (test_disk): Don't clear the existing bad blocks
3158 list when using e2fsck -c, since it may cause blocks with
3159 marginal errors to be dropped from the bad blocks list.
3160
Theodore Ts'o874b4d21998-07-06 14:33:12 +00003161Mon Jul 6 10:32:11 1998 Theodre Ts'o <tytso@lurch.mit.edu>
3162
3163 * pass1.c (e2fsck_pass1): Use ext2fs_sb structure for
3164 compatibility with older kernels.
3165
Theodore Ts'o818180c1998-06-27 05:11:14 +000031661998-06-25 Theodore Ts'o <tytso@rsts-11.mit.edu>
3167
3168 * unix.c (e2fsck_update_progress): Remove unused variables.
3169
Theodore Ts'o9d1bd3d1998-06-10 20:45:22 +000031701998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
3171
3172 * pass1.c, problem.h: Change blkcnt_t to be e2_blkcnt_t to avoid
3173 collision with LFS API.
3174
3175 * pass1.c (e2fsck_pass1): Fix bug so that ext2_max_sizes is
3176 properly initialized.
3177 (e2fsck_pass1): Don't allow the the boot loader inode to
3178 be a directory (clear the inode mode field if so).
3179
Theodore Ts'oefac9a11998-05-07 05:02:00 +000031801998-05-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
3181
3182 * unix.c (PRS): Added new option -C, which causes e2fsck to print
3183 progress updates so that callers can keep track of the
3184 completion progress of e2fsck. Designed for use by
3185 progress, except for -C 0, which prints a spinning report
3186 which may be useful for some users.
3187
3188 * pass5.c (e2fsck_pass5): Use a finer-grained progress reporting
3189 scheme (useful for larger filesystems).
3190
3191 * e2fsck.h: Add progress_fd and progress_pos, for use by the Unix
3192 progress reporting functions.
3193
Theodore Ts'o4c77fe51998-04-30 17:35:59 +000031941998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
3195
3196 * pass1.c (process_inode_cmp): Use EXT2_QSORT_TYPE to define the
3197 appropriate return type for comparison functions for qsort.
3198
3199 * e2fsck.h: Add #ifdef protection for unistd.h
3200
3201 * super.c: Remove header files already included by e2fsck.h
3202
Theodore Ts'o76f875d1998-04-27 01:41:13 +000032031998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
3204
3205 * dirinfo.c (e2fsck_add_dir_info): Update function to pass the old
3206 size of the memory to be resized to ext2fs_resize_mem().
3207
Theodore Ts'o7e44f241998-04-01 03:16:29 +000032081998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
3209
3210 * Makefile.in: Change to use new installation directory variables
3211 convention. Fix uninstall rules to take $(DESTDIR) into
3212 account. Remove cat8dir from the installdirs target,
3213 since modern man package don't necessarily put the cat
3214 directory in /usr/man/cat?.
3215
Theodore Ts'o17dba281998-03-30 01:16:26 +000032161998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
3217
3218 * super.c, e2fsck.h: Always declare e2fsck_get_device_size() as an
3219 extern in e2fsck.h to prevent -Wall warnings.
3220
3221 * pass4.c (e2fsck_pass4): Remove unused variable 'j'.
3222
32231998-03-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
3224
3225 * super.c (check_super_block): Fix broken superblock sanity check
3226 when calculating blocks_per_group if s_log_frag_size !=
3227 s_log_block_size. Since we don't support fragments, this
3228 isn't a bug deal, but it's good to get it fixed.
3229
Theodore Ts'o246501c1998-03-24 16:22:38 +000032301998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
3231
3232 * unix.c: Fix bug in check of feature set, to make sure we can
3233 really fix this filesystem.
3234
3235 * problem.h: Make blkcount type to be of type blkcnt_t. Make the
3236 num field be a 64 bit type. Add the problem code
3237 PR_1_FEATURE_LARGE_FILES
3238
3239 * problem.c: Add table entry for the problem code
3240 PR_1_FEATURE_LARGE_FILES.
3241
3242 * pass1.c (e2fsck_pass1): A non-zero i_dir_acl field is only
3243 a problem for directory inodes. (Since it is also
3244 i_size_high now.) If there are no large_files, then
3245 clear the LARGE_FLAG feature flag. If there are
3246 large_files, but the LARGE_FLAG feature flag is not set,
3247 complain and offer to fix it.
3248 (check_blocks): Add support to deal with non-directory
3249 inodes that have i_size_high set (i.e., large_files).
3250 Don't give an error if a directory has preallocated
3251 blocks, to support the DIR_PREALLOC feature.
3252 (process_block, process_bad_block): The blockcnt variable
3253 is a type of blkcnt_t, for conversion to the new
3254 block_iterate2.
3255
3256 * pass2.c (process_bad_inode): A non-zero i_dir_acl field is only
3257 a problem for directory inodes. (Since it is also
3258 i_size_high now.)
3259
3260 * message.c (expand_inode_expression): Print a 64-bits of the
3261 inode size for non-directory inodes. (Directory inodes
3262 can only use a 32-bit directory acl size, since
3263 i_size_high is shared with i_dir_acl.) Add sanity check
3264 so that trying to print out the directory acl on a
3265 non-directory inode will print zero.
3266 (expand_percent_expression): %B and %N, which print
3267 pctx->blkcount and pctx->num, can now be 64 bit
3268 variables. Print them using the "%lld" format if
3269 EXT2_NO_64_TYPE is not defined.
3270
3271 * e2fsck.h: Add the large_flagsfield to the e2fsck context.
3272
3273 * e2fsck.c (e2fsck_reset_context): Clear the large_flags
3274 field.
3275
Theodore Ts'ob6f79831998-03-09 13:10:37 +00003276Sun Mar 8 23:08:08 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
3277
3278 * pass3.c (fix_dotdot_proc):
3279 * pass2.c (check_dot, check_dotdot, check_name, check_dir_block):
3280 * message.c (expand_dirent_expression): Mask off the high eight
3281 bits of the directory entry's name_len field, so that it
3282 can be used for other purposes.
3283
Theodore Ts'o2df1f6a1998-02-27 05:03:48 +00003284Fri Feb 27 00:01:39 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
3285
3286 * e2fsck.c (e2fsck_run): Since E2F_FLAG_SIGNAL_MASK doesn't
3287 include EXT2_FLAG_RESTART anymore, we need to adjust this
3288 routine so that it *does* return in the case of it seeing
3289 EXT2_FLAG_RESTART.
3290
3291 * pass1.c (e2fsck_pass1): ext2_get_next_inode() may call the group
3292 done callback function, which may set context abort
3293 flags. So we need to test the context abort flags after
3294 we call ext2_get_next_inode().
3295 (process_inodes): If we abort due out of process_inodes,
3296 do a clean exit by breaking out of the for loop instead of
3297 just returning.
3298
3299 * e2fsck.h (E2F_FLAG_SIGNAL_MASK): EXT2_FLAG_RESTART shouldn't be
3300 considered a SIGNAL mask (i.e., requiring an immediate
3301 abort of processing to restart). FLAG_RESTART just means
3302 that we want to restart once pass 1 is complete.
3303
Theodore Ts'oa02ce9d1998-02-24 20:22:23 +00003304Tue Feb 24 15:19:40 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
3305
3306 * Change the progress function to return an integer; if returns 1,
3307 then the progress function is expected to have set the
3308 e2fsck context flag signalling a user abort, and the
3309 caller should also initiate a user abort.
3310
Theodore Ts'o63c49691998-02-20 05:24:59 +00003311Tue Feb 17 19:03:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
3312
3313 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Don't call
3314 end_problem_latch() unless there was actually a problem
3315 latched. Simplifies semantics of the latch processing.
3316
Theodore Ts'o43139321998-02-16 22:34:46 +00003317Mon Feb 16 17:31:44 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
3318
3319 * e2fsck.h: Add new field, priv_data to the e2fsck context
3320 structure. It should be used by callers of the e2fsck
3321 functions only, and not by anything in e2fsck itself.
3322
3323Mon Feb 7 17:31:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
3324
3325 * super.c: Instead of call ext2fs_get_device_size(), define and call
3326 e2fsck_get_device_size(). (This function may be stubbed
3327 out in special versions of e2fsck.)
3328
3329 * pass3.c, pass4.c: Remove extra calls to the progress function
3330 that weren't needed.
3331
3332 * mke2fs.8.in: Update man page to note that the format of the bad
3333 block file is the same as the one generated by badblocks.
3334
Theodore Ts'o54be2cc1998-02-01 12:58:48 +00003335Sun Feb 1 07:57:14 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
3336
3337 * dirinfo.c, e2fsck.c: Don't include com_err.h; it isn't needed.
3338
3339 * e2fsck.h: Include <time.h> since it is needed
3340
3341 * super.c: If EXT2_SKIP_UUID is defined, then skip the UUID
3342 processing.
3343
Theodore Ts'o24dd4021998-02-01 00:16:40 +00003344Tue Jan 20 15:37:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
3345
3346 * unix.c (main): In the case where the filesystem revision is too
3347 high, print the message about the superblock possibly
3348 being corrupt.
3349
3350 * e2fsck.8.in: Add expanded comments about how the -b option
3351 works.
3352
Theodore Ts'o54dc7ca1998-01-19 14:50:49 +00003353Sat Jan 17 13:02:16 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
3354
3355 * e2fsck.h: If EXT2_FLAT_INCLUDES is defined, then assume all of
3356 the ext2-specific header files are in a flat directory.
3357
3358 * dirinfo.c, ehandler.c, pass1.c, pass1b.c, pass2.c, pass5.c,
3359 super.c, swapfs.c, unix.c: Explicitly cast all assignments
3360 from void * to be compatible with C++.
3361
3362Tue Jan 6 11:30:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
3363
3364 * unix.c (sync_disk): Remove sync_disk and calls to that function,
3365 since ext2fs_close() now takes care of this.
3366
3367Mon Dec 29 14:45:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3368
3369 * pass1.c, pass1b.c, pass2.c, pass3.c, swapfs, badblocks.c,
3370 ehandler.c, unix.c: Change use of private to be priv_data,
3371 to avoid C++ reserved name clash.
3372
Theodore Ts'o5be8dc21997-12-01 18:24:10 +00003373Fri Nov 28 09:30:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3374
3375 * dirinfo.c (e2fsck_add_dir_info): Use ext2fs_get_num_dirs instead
3376 of e2fsck_get_num_dirs, which has been removed.
3377
3378Tue Nov 25 15:54:35 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3379
3380 * Makefile.in (PROGS): Remove @EXTRA_PROGS@, since we don't want
3381 to compile and install flushb.
3382
Theodore Ts'o7fdfabd1997-11-24 11:51:17 +00003383Mon Nov 24 06:48:00 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3384
3385 * pass1.c (e2fsck_pass1_check_device_inode): For now, only check
3386 to make sure the extra i_blocks in a device are cleared if
3387 the immutable flag is set.
3388
3389 * util.c (print_resource_track): Fix typo which caused the
3390 time/resource tracking to print "Pass 1 :" instead of
3391 "Pass 1: ".
3392
Theodore Ts'ob8647fa1997-11-20 21:52:43 +00003393Thu Nov 20 16:02:23 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3394
3395 * pass3.c (expand_directory): Fix bug which could cause core dump
3396 when expanding the directory, and the bitmaps hadn't yet
3397 been read in. Also, only use ext2fs_write_dir_block when
3398 writing a directory block, not when writing out a fresh
3399 indirect block.
3400
Theodore Ts'o8039c481997-11-19 21:39:13 +00003401Wed Nov 19 16:15:44 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3402
3403 * pass1.c (process_bad_block): Fix bug where first_block wasn't
3404 getting incremented, which caused user to get a
3405 "Programming error?" warning if there was a bad block in a
3406 non-primary superblock/group_descriptor. Also fixed
3407 another bug so that ext2fs_bg_has_super() is consulted, to
3408 avoid problems when using a filesystem with the
3409 sparse_groups option set and there are bad blocks at the
3410 beginning of a group which doesn't have a superblock.
3411
Theodore Ts'of8188ff1997-11-14 05:23:04 +00003412Thu Nov 6 16:10:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3413
3414 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c: Add calls to the
3415 progress indicator function.
3416
3417 * pass1.c (scan_callback): Add call to the progress feedback
3418 function (if it exists).
3419
3420Tue Nov 4 09:45:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3421
3422 * super.c (check_super_block): Skip the device size check if the
3423 get_device_size returns EXT2_EXT_UNIMPLEMENTED.
3424
3425 * iscan.c (main): Don't use fatal_error() anymore.
3426
3427 * pass1b.c, swapfs.c, badblocks.c: Set E2F_FLAG_ABORT instead of
3428 calling fatal_error(0).
3429
3430 * problem.c, pass3.c (PR_3_ROOT_NOT_DIR_ABORT,
3431 PR_3_NO_ROOT_INODE_ABORT): New problem codes.
3432
3433 * problem.c, pass2.c (PR_2_SPLIT_DOT): New problem code.
3434
3435 * problem.c, pass1.c (PR_1_SUPPRESS_MESSAGES): New problem code.
3436
3437 * problemP.h: New file which separates out the private fix_problem
3438 data structures.
3439
3440 * util.c, dirinfo.c, pass1.c, pass1b.c, pass2.c, pass5.c, super.c,
3441 swapfs.c util.c: allocate_memory() now takes a e2fsck
3442 context as its first argument, and rename it to be
3443 e2fsck_allocate_memory().
3444
Theodore Ts'o08b21301997-11-03 19:42:40 +00003445Mon Nov 3 14:35:29 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3446
Theodore Ts'o68227541997-11-04 04:25:22 +00003447 * unix.c (main): Add a special case check for the error code EROFS
3448 and display an appropriate error message for this case.
3449
Theodore Ts'o08b21301997-11-03 19:42:40 +00003450 * [lots of files]: Change ext2fs_read_inode, ext2fs_write_inode
3451 to take the e2fsck context as their first argument.
3452 Change dir_info.c routines to take an e2fsck_context,
3453 renamed them to start with e2fsck_ to avoid namespace
3454 issues, and changed them to store the directory
3455 information inside the e2fsck context.
3456 Added e2fsck_run() which calls all of the e2fsck passes in
3457 the correct order, and which handles the return of abort
3458 codes. Added abort processing, both via setjmp/longjmp
3459 and via flags in the e2fsck context. Use a flag in the
3460 e2fsck context instead of the restart_e2fsck global
3461 variable. Change uses of free and malloc to
3462 ext2fs_free_mem and ext2fs_get_mem.
3463
Theodore Ts'o291c9041997-10-31 06:17:08 +00003464Fri Oct 31 01:12:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3465
3466 * pass1.c, pass3.c: Rename new error codes to _ET_ in them for
3467 consistency.
3468
Theodore Ts'oc555aeb1997-10-25 04:16:53 +00003469Sat Oct 25 00:10:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3470
3471 * pass3.c (get_lost_and_found): Check error return of
3472 EXT2_FILE_NOT_FOUND instead of ENOTDIR
3473
3474 * pass1.c (pass1_check_directory): Return EXT2_NO_DIRECTORY
3475 instead of ENOTDIR
3476
Theodore Ts'o622f5f21997-10-24 04:18:21 +00003477Fri Oct 24 00:12:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3478
Theodore Ts'o519149f1997-10-25 03:49:49 +00003479 * unix.c (PRS): Make the variable which getopt returns into be
3480 an int, so that it won't lose on platforms where char is
3481 unsigned.
3482
Theodore Ts'o622f5f21997-10-24 04:18:21 +00003483 * pass1b.c (clone_file): Fix bug in error reporting in the case
3484 where cs.errcode is non-zero.
3485
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00003486Sun Oct 19 21:12:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3487
Theodore Ts'o8bf191e1997-10-20 01:38:32 +00003488 * pass*.c, super.c, unix.c, util.c, e2fsck.h: Place #ifdef
3489 RESOURCE_TRACK around code which uses init_resource_track
3490 and print_resource_track. (Not all systems have timeval)
3491
Theodore Ts'ob2da22d1997-10-20 01:16:35 +00003492 * super.c: Remove excess #includes which are not necessary.
3493
3494 * e2fsck.h: Add #ifdef's for HAVE_SYS_TYPES_H and HAVE_SYS_TIME_H
3495
Theodore Ts'o1b6bf171997-10-03 17:48:10 +00003496Fri Oct 3 13:40:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3497
3498 * pass*.c, super.c: Massive changes to avoid using printf and
3499 com_err routines. All diagnostic messages are now routed
3500 through the fix_problem interface.
3501
3502Sat Sep 6 17:13:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3503
3504 * pass2.c (check_dir_block): Check for duplicate '.' and '..'
3505 entries.
3506
3507 * problem.c, problem.h: Add new problem codes PR_2_DUP_DOT and
3508 PR_2_DUP_DOT_DOT.
3509
3510Tue Sep 2 09:04:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3511
3512 * problem.c: Added new problem codes for some of the
3513 superblock corruption checks, and for the pass header
3514 messages. ("Pass 1: xxxxx")
3515
3516 * util.c (print_resource_track): Now takes a description
3517 argument.
3518
3519Mon Aug 25 10:23:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3520
3521 * super.c, unix.c, e2fsck.c: New files to separate out the
3522 operating-specific operations out from e2fsck.c.
3523 e2fsck.c now contains the global e2fsck context management
3524 routines, and super.c contains the "pass 0" initial
3525 validation of the superblock and global block group
3526 descriptors.
3527
3528 * pass1.c, pass2.c, pass3.c, pass4.c, pass5.c, util.c: Eliminate
3529 (nearly) all global variables and moved them to the e2fsck
3530 context structure.
3531
3532 * problem.c, problem.h: Added new problem codes PR_0_SB_CORRUPT,
3533 PR_0_FS_SIZE_WRONG, PR_0_NO_FRAGMENTS,
3534 PR_0_BLOCKS_PER_GROUP, PR_0_FIRST_DATA_BLOCK
3535
Theodore Ts'o7cf73dc1997-08-14 17:17:16 +00003536Thu Aug 14 10:55:21 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3537
3538 * message.c: Add compression for the word "Illegal"
3539
3540 * problem.c: Added entries for PR_2_BAD_CHAR_DEV and
3541 PR_2_BAD_BLOCK_DEV
3542
3543Wed Aug 13 09:55:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3544
3545 * pass1.c (pass1, check_device_inode), pass2.c
3546 (process_bad_inode): Use a more stringent test for a valid
3547 device.
3548
Theodore Ts'oa47b66e1997-08-10 23:02:21 +00003549Sun Aug 10 18:58:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3550
3551 * e2fsck.c (check_mount): Add stronger warning message about the
3552 perils of running e2fsck on a mounted filesystem.
3553
Theodore Ts'o024996c1997-06-17 05:38:35 +00003554Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3555
3556 * Release of E2fsprogs 1.11
3557
Theodore Ts'oda2e97f1997-06-12 04:28:07 +00003558Thu Jun 12 00:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3559
3560 * pass1.c (mark_table_blocks): Mark the superblock and group
3561 descriptor blocks first, so that any conflicts between
3562 these and the bitmap or inode table blocks is noticed.
3563
3564 * problem.c: Fix message printed out when a block or inode bitmap
3565 conflicts with other fs data, has the correct group number
3566 in it.
3567
Theodore Ts'o7ac02a51997-06-11 18:32:35 +00003568Tue Jun 10 12:07:37 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3569
3570 * pass2.c (pass2): Check the error return from ext2fs_dblist_iterate.
3571
Theodore Ts'of635d7f1997-05-09 02:50:16 +00003572Thu May 8 22:45:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3573
Theodore Ts'o583ccdc1997-05-09 03:06:31 +00003574 * e2fsck.8.in: Fix minor typos and grammer oops found by Bill
3575 Hawes (whawes@star.net).
3576
Theodore Ts'of635d7f1997-05-09 02:50:16 +00003577 * badblocks.c (read_bad_blocks_file): Pass the blocksize to the
3578 bad blocks command so that all of the filesystem gets
3579 tested in the case where the blocksize 2048 or 4096.
3580
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00003581Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
3582
3583 * Release of E2fsprogs version 1.10
3584
3585Mon Apr 21 22:43:08 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3586
3587 * pass1b.c (pass1b): While scanning for inodes, simply skip inodes
3588 where ext2fs_get_next_inode returns the
3589 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE error.
3590
3591Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3592
3593 * Release of E2fsprogs version 1.09
3594
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00003595Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3596
3597 * Release of E2fsprogs version 1.08
3598
Theodore Ts'o521e3681997-04-29 17:48:10 +00003599Thu Apr 10 13:51:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3600
3601 * pass1b.c (clone_file_block): If we clone a directory, we need to
3602 update the dblist entry so that we check (and correct) the
3603 right directory block.
3604
3605Sun Apr 6 09:13:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3606
3607 * pass1.c (process_block): Don't clear blocks references to
3608 filesystem metadata; let pass 1B handle this case.
3609
3610 * problem.c, problem.h: Add new problem, PR_1B_SHARE_METADATA.
3611
3612 * pass1b.c (pass1d): Deal with a block which is shared with
3613 filesystem metadata.
3614
3615 * e2fsck.h: Make block_illegal_map be a global variable
3616
3617Sat Apr 5 11:51:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3618
3619 * e2fsck.c, pass1.c (mark_table_blocks): Support the sparse_super
3620 feature.
3621 (get_backup_sb): New function which attempts to obtain the
3622 correct backup superblock (if possible).
3623
3624Fri Apr 4 10:46:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3625
3626 * e2fsck.c (main): Check the version of the library, and warn if
3627 the library is out of date; this happens generally due to
3628 users who manually install e2fsprogs.
3629
3630 * pass1.c (pass1_get_blocks): If the passed in inode number for
3631 get_blocks isn't what we're expecting pass back
3632 EXT2_ET_CALLBACK_NOT_HANDLED.
3633
Theodore Ts'o21c84b71997-04-29 16:15:03 +00003634Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
3635
3636 * Release of E2fsprogs version 1.07
3637
3638Tue Mar 11 10:31:47 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3639
3640 * icount.c: New file which implements an inode count abstraction.
3641 This significantly reduces amount of memory needed to
3642 check really large filesystems.
3643
3644 * pass1.c, pass2.c, pass3.c, pass4.c: Modified to use the icount
3645 abstraction.
3646
3647Fri Mar 7 08:28:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3648
3649 * dirinfo.c (dir_info_iter): New function which allows iteration
3650 over the directories in the dir_info map.
3651
3652 * pass3.c (pass3, check_directory): Speed up pass 3 by iterating
3653 over all directories in the dir_info structure, instead of
3654 iterating all inodes looking for directories, and then
3655 looking up the directories using get_dir_info().
3656
3657Sat Feb 1 11:33:43 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3658
3659 * pass1.c (pass1, process_block):
3660 * pass2.c (pass2): Use the ext2_dblist abstraction instead of
3661 manual code to manage the directory block list information.
3662
3663 * pass1.c (check_blocks), pass1b.c (pass1b), pass2.c
3664 (deallocate_inode): Call the ext2 library routine
3665 ext2_inode_has_valid_blocks() instead of
3666 inode_has_valid_blocks().
3667
3668 * swapfs.c (swap_inodes): Add check so that we don't try to call
3669 swap_inode_blocks unless the inode has valid blocks.
3670 (Otherwise a long fast symlink might cause
3671 swap_inode_blocks to erroneously get called.)
3672
3673Wed Jan 22 14:42:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3674
3675 * problem.c, problem.h: Added entries for PR_2_DOT_NULL_TERM and
3676 PR_2_DOT_DOT_NULL_TERM.
3677
3678 * pass2.c (check_dot, check_dot_dot): Make sure the new . and
3679 .. entries are null-terminated, since the 2.0 kernel
3680 requires this (for no good reason).
3681
3682Mon Jan 20 20:05:11 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3683
3684 * pass1.c (pass1): Set the EXT2_SF_SKIP_MISSING_ITABLE flag so
3685 that we can recover from missing inode tables.
3686
3687 * dirinfo.c (get_dir_info): If there are no directories in the
3688 dir_info abstraction, don't core dump (because dir_info is
3689 NULL).
3690
3691 * e2fsck.c (main): Don't try using the backup superblocks if there
3692 aren't any.
3693 (check_super_block): If there are illegal inode table or
3694 bitmaps, set the filesystem as being in error.
3695
3696Wed Jan 15 11:32:01 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
3697
3698 * pass2.c (check_dir_block): Added check to make sure that rec_len
3699 is a a multiple of 4 (so that the directory entries are
3700 4-byte aligned).
3701
3702Sat Dec 28 12:16:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3703
3704 * Makefile.in (uninstall): Uninstall all programs in the PROGS
3705 line.
3706 (PROGS): Don't build and install the extend program by
3707 default.
3708
3709
3710Sat Dec 7 16:41:02 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3711
3712 * pass1.c (process_inodes): Make sure the stashed_ino variable is
3713 saved and restored as well.
3714 (pass1): For fast sym links, skip the check_blocks
3715 processing step altogether.
3716
3717Mon Dec 2 09:28:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3718
3719 * problem.c, message.c: New files, to completely refurbish how
3720 filesystem problems are reported to the user. The
3721 diagnostic messages are now encoded out in an easily
3722 customizable, extensible format. The messages printed out
3723 in preen mode are all on one line, and contain the device
3724 name.
3725
3726Fri Nov 29 20:26:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3727
3728 * swapfs.c (swap_inodes): When swapping a filesystem, ignore
3729 deleted files.
3730
3731 * pass1.c (pass1): Ignore missing inode table errors during the
3732 scan, and just skip past those inodes.
3733
3734 * pass3.c (check_root): Remove root_ino argument, and assume that
3735 the root inode must be EXT2_ROOT_INO. Move responsibility
3736 of setting the parent of the root inode in the directory
3737 inode structure to pass2().
3738
3739 * pass2.c (check_dir_block): Don't allow links to the root
3740 directory.
3741
3742 * dirinfo.c (add_dir_info): Remove last argument to add_dir_info,
3743 since the inode is no longer used.
3744
3745Tue Oct 15 00:06:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3746
3747 * e2fsck.c (main): If the superblock magic number is wrong, or the
3748 block group fails a sanity check, then automatically
3749 restart trying to use the backup superblocks.
3750
3751 * pass1.c (mark_table_blocks): Make the inode tables ahead of
3752 everything else; in the case where a bitmap block overlays
3753 the inode table, the inode table should take precedence.
3754
3755 * pass2.c (maybe_clear_entry): Make the deleted/unused error
3756 message fit on one line, since the error can happen during
3757 a preen pass. (We eventually need to revamp the whole
3758 e2fsck error reporting and prompting system, but that's a
3759 job for another day.)
3760
3761Mon Oct 14 22:29:49 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3762
3763 * e2fsck.c (main): Read in the list badblocks into fs->badblocks
3764 for the benefit of the inode scan functions.
3765
3766 * pass1.c (pass1): If ext2fs_get_next_inode() returns an error
3767 indicating that an inode is in a bad block, mark that
3768 inode as being used, as well as in the inode "bb" map.
3769
3770 * pass2.c (maybe_clear_entry): New function which generalizes the
3771 error cases when a directory entry needs to be cleared.
3772 (check_dir_block): If an inode is in the "bb" map, offer
3773 to clear the directory entry, since the inode is in a bad
3774 block.
3775
3776 * pass4.c (pass4): If an inode is marked as used, but is is marked
3777 in the "bb" map, don't process it as a disconnected inode.
3778
3779Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3780
3781 * Release of E2fsprogs version 1.06
3782
Theodore Ts'o5c576471997-04-29 15:29:49 +00003783Mon Oct 7 00:45:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3784
3785 * e2fsck.c (main): Print out the version number of the shared
3786 library when using the -V option.
3787
3788 * swapfs.c (swap_filesys): Change EXT2_SWAP to EXT2_FLAG_SWAP for
3789 consistency's sake.
3790
3791 * e2fsck.c (main): By setting EXT2_FLAG_MASTER_SB_ONLY, only write
3792 out the backup superblocks when we know we have a valid
3793 filesystem.
3794
3795Tue Oct 1 22:00:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3796
3797 * util.c (preenhalt): Make it explicit on preenhalt that running
3798 e2fsck manually means without the -a or -p flag.
3799
3800Fri Sep 27 14:41:08 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3801
3802 * pass1.c (pass1): Add support for the EXT2_BOOT_LOADER inode.
3803 (Linux/FT actually sets the mode bits, so we have to
3804 handle it specially.)
3805
3806 * e2fsck.c (check_if_skip): Print a message if the filesystem is
3807 just dirty, so that the user knows that it's about to be
3808 checked (since this will take a while).
3809
3810Mon Sep 16 17:00:01 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3811
3812 * pass4.c: If a disconnected inode is zero-length, prompt to
3813 delete it instead of connecting it to lost+found.
3814
3815Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3816
3817 * Release of E2fsprogs version 1.05
3818
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00003819Fri Aug 30 20:24:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3820
3821 * pass4.c (pass4): If the user refuses to connect an unattached
3822 inode to lost+found, don't try to set i_links_count. This
3823 is bad, since if the user says yes, the inode will be
3824 marked as unused, which is not necessarily the right
3825 thing, especially since the rest of the cleanup doesn't
3826 happen here.
3827
3828 * pass2.c (deallocate_inode): Set inode_link_info[ino] when
3829 dellocating an inode. (Not strictly necessary, but...)
3830
3831 * pass4.c (pass4): Add "bonehead" explanation to the "programming
3832 error" message.
3833
3834Tue Aug 27 11:26:32 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3835
3836 * e2fsck.c (PRS,main): Added new options -s and -S. -s will
3837 byte-swap the filesystem so that it is normalized. -S
3838 will byte-swap the filesystem regardless of its current
3839 byte-order.
3840
3841 * swapfs.c: New file, which will byte-swap a filesystem.
3842
3843Tue Aug 20 09:41:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3844
3845 * pass1.c (pass1): Change handling on files with non-zero dtime
3846 and non-zero i_link_count; before we treated them as
3847 deleted file per botched ext2 0.3c kernel behavior. We
3848 now clear dtime instead.
3849
3850Mon Aug 19 23:33:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3851
3852 * e2fsck.c (main): If e2fsck sets the clean bit, even if
3853 nothing else is changed, make sure FSCK_NONDESTRUCT is
3854 set (since after all having the filesystem set to
3855 invalid is an error. :-)
3856
3857Fri Aug 9 10:25:13 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3858
3859 * pass1.c (process_block): Make sure that meta data doesn't get
3860 accidentally set in the dir_blocks array (which could
3861 happen in some error condtions).
3862
3863 * pass1.c (pass1):
3864 * pass2.c (process_bad_inode): Check for fragments in a
3865 OS-independent fashion.
3866
3867Thu Aug 8 15:20:54 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3868
3869 * e2fsck.c (check_if_skip): Close the filesystem when skipping the
3870 cleanup for the filesystem.
3871
3872Mon Jul 22 22:03:28 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3873
3874 * e2fsck.c: Improve corrupt_msg, so that it's less confusing.
3875
Theodore Ts'o62c06f71997-04-29 14:34:47 +00003876Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3877
3878 * Release of E2fsprogs version 1.04
3879
3880Wed May 15 21:41:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
3881
3882 * e2fsck.c (relocate_hint): Issue a hint that the user may wish to
3883 try "e2fsck -b 8193" before allowing e2fsck to relocate
3884 inode table blocks.
3885
3886 * Makefile.in (e2fsck): Build e2fsck statically or dynamically
3887 depending on the option to configure. Added targets for
3888 e2fsck.static and e2fsck.shared for people who want to
3889 build a static or shared variant manually.
3890
Theodore Ts'o7f88b041997-04-26 14:48:50 +00003891Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
3892
3893 * Release of E2fsprogs version 1.03
3894
3895Tue Mar 26 12:03:42 1996 <tytso@rsts-11.mit.edu>
3896
3897 * e2fsck.c (show_stats): Don't use floating point to display
3898 percentage of non-contiguous files, as different libc
3899 handle result truncation differently, and this causes the
3900 test suite to bomb out depending on which libc you are
3901 using.
3902
3903 * util.c (allocate_memory): Fix error message to omit extraneous
3904 %%s.
3905
3906Tue Mar 5 03:50:40 1996 <tytso@rsts-11.mit.edu>
3907
3908 * pass4.c (pass4):
3909 * pass2.c (check_dir_block):
3910 * pass1.c (pass1): Add support for dynamic first inode revision.
3911
3912Wed Feb 14 16:27:30 1996 <tytso@rsts-11.mit.edu>
3913
3914 * pass3.c (check_root): Fix spelling typo
3915
3916Mon Feb 5 22:30:30 1996 <tytso@rsts-11.mit.edu>
3917
3918 * e2fsck.c (check_super_block): If the superblock fails certain
3919 internal consistency checks, exit with a fatal error after
3920 printing the "superblock is corrupt message".
3921
Theodore Ts'o74becf31997-04-26 14:37:06 +00003922Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
3923
3924 * Release of E2fsprogs version 1.02
3925
3926Wed Dec 15 21:24:26 1996 <tytso@rsts-11.mit.edu>
3927
3928 * pass1.c (process_block): Check to see if a file is "fragmented".
3929 i.e., non-contiguous. Note that any file which is larger
3930 than the block group is guaranteed to be non-contiguous.
3931 We may want to use a different hueristic for deciding
3932 whether or not a file is "fragmented".
3933
3934 * e2fsck.c (show_stats): Print statistics of how many
3935 non-contiguous files are on the system.
3936
3937Fri Dec 15 19:19:47 1995 <tytso@rsts-11.mit.edu>
3938
3939 * badblocks.c (read_bad_blocks_file, test_disk): Fold
3940 functionality of test_disk() (which runs badblocks) into
3941 read_bad_blocks_file(); test_disk() now calls
3942 read_bad_blocks_file() with a NULL bad_blocks_file
3943 argument.
3944
3945Mon Nov 20 18:30:10 1995 <tytso@rsts-11.mit.edu>
3946
3947 * e2fsck.c (check_mount): Use #if defined(__linux__) instead of
3948 #if defined(linux). The latter won't work if we're
3949 compiling -ansi.
3950
Theodore Ts'o297f47a1997-04-26 14:25:20 +00003951Mon Oct 30 20:31:17 1995 <tytso@rsts-11.mit.edu>
3952
3953 * e2fsck.c (check_mount): For Linux systems, the check to see if
3954 the root is mounted read-only has to be done for all
3955 filesystems, not just for the root filesystem, due to the
3956 way that some /etc/rc scripts are set up.
3957
Theodore Ts'o50e1e101997-04-26 13:58:21 +00003958Thu Oct 26 12:05:30 1995 <tytso@rsts-11.mit.edu>
3959
3960 * Makefile.in (install): Strip programs when they are installed.
3961 (e2fsck): Build e2fsck statically.
3962
3963Wed Oct 25 21:18:16 1995 <tytso@rsts-11.mit.edu>
3964
3965 * util.c (preenhalt): Preenhalt now takes an argument, which is an
3966 ext2fs_filsys; this allows it to set the EXT2_ERROR_FS
3967 flag in the superblock in cases where preenhalt is called.
3968 All calls to preenhalt() were changed to either
3969 preenhalt(fs) or preenhalt(NULL) in a few cases where the
3970 fs pointer was not available. (Most notable, for block
3971 read/write errors.)
3972
3973Mon Sep 4 21:41:03 1995 Remy Card <card@bbj>
3974
3975 * ehandler.c:
3976 util.c: Include <sys/time.h> before <sys/resource.h>. BSD needs it.
3977
3978Mon Sep 4 10:14:49 1995 <tytso@rsts-11.mit.edu>
3979
3980 * e2fsck.c (show_stats): Show statistics about how many inodes
3981 have indirect, doubly indirect, and triply indirect
3982 blocks. Allow up to 8 digits for statistics, instead of
3983 merely 6, so things look pretty for large filesystems.
3984
3985 * pass1.c (pass1): Keep statistics about indirect, doubly
3986 indirect, and triply indirect blocks.
3987
3988 * pass1.c (unwind_pass1): Clear the above statistics when unwinding
3989 pass 1.
3990
3991Fri Aug 18 15:17:10 1995 Theodore Y. Ts'o <tytso@dcl>
3992
3993 * util.c, ehandler.c: Move #include of <sys/resource.h> after
3994 #include of "e2fsck.h", since sys/resource.h may depend on
3995 sys/time.h, which is #included in e2fsck.h.
3996
3997Thu Aug 17 22:33:37 1995 <tytso@rsts-11.mit.edu>
3998
3999 * e2fsck.c (check_mount): Use the new ext2fs_check_if_mounted()
4000 function to determine if the device is mounted.
4001
4002 * e2fsck.c (main): Add better error messages if ext2fs_open()
4003 fails.
4004
4005Wed Aug 16 16:25:02 1995 <tytso@rsts-11.mit.edu>
4006
4007 * pass1.c (check_blocks): If we're clearing a directory, clear
4008 pb.is_dir so we don't do the following check of making
4009 sure the directory size matches; this is pointless, since
4010 we've already cleared the inode.
4011
4012Fri Aug 11 09:08:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
4013
4014 * pass1.c (bad_primary_block): New function, called by
4015 process_bad_block, which explains the facts of life to the
4016 user when a block in the primary superblock or primary
4017 group descriptors is bad.
4018
4019 * pass2.c (check_dot): Handle the case where the first directory
4020 entry is used, but not ".".
4021
4022 * pass2.c (check_dotdot): Handle the case where the second directory
4023 entry is used, but is not "..".
4024
4025Thu Aug 10 10:05:10 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
4026
4027 * e2fsck.c (check_super_block): Get the size of the physical
4028 device and if it is smaller than the reported size of the
4029 filesystem, report an error.
4030
4031Sat Aug 12 03:39:18 1995 Remy Card <card@bbj>
4032
4033 * e2fsck.c (check_if_skip): Print the number of allocated files and
4034 blocks on clean filesystems.
4035
4036Fri Aug 11 14:15:36 1995 Remy Card <card@bbj>
4037
4038 * e2fsck.8: Updated date and version number.
4039
4040Thu Aug 10 14:26:01 1995 Remy Card <card@bbj>
4041
4042 * pass1.c (check_blocks): Check that directory size matches *exactly*
4043 the count of allocated blocks.
4044
4045Wed Aug 9 21:21:24 1995 Theodore Y. Ts'o <tytso@dcl>
4046
4047 * pass1b.c (pass1d): Free the shared[] array when we're done with
4048 it to avoid a memory leak.
4049
4050 * pass1.c (unwind_pass1): Use ext2fs_free_block_bitmap to free the
4051 block_dup_map.
4052
4053 * pass2.c (process_bad_inode): When clearing the inode, make sure
4054 the pathname is freed, to prevent a memory leak.
4055
4056 * pass5.c (check_inode_bitmaps): Free free_array and dir_array
4057 when we're finished with them.
4058 (check_block_bitmaps): Free free_array when we're finished
4059 with them.
4060
4061 * Makefile.in (e2fsck, flushb): Use $(LD) instead of $(CC) when
4062 linking the executable.
4063
4064 * pass2.c (process_bad_inode): Even on OS's that don't support the
4065 fragment fields, make sure the Linux equivalent fields are
4066 set to zero. If an OS wants to reuse these fields, which
4067 is probably a bad idea (although we may get desperate in
4068 the future) this code will have to be changed.
4069
4070 * pass1.c (dir_block_cmp): If the block numbers are equal, compare
4071 on the inode field, and then blockcnt field. This is just
4072 to keep the ordering of dir_blocks the same on all
4073 platforms when there are more than on missing directory
4074 blocks, which are indicated directories with holes, which
4075 are indicated with the block number being set to zero.
4076
4077Sun Aug 6 15:40:58 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
4078
4079 * pass1.c (check_blocks, process_block): check_blocks() modified
4080 to call the ext2fs_block_iterate() with BLOCK_FLAG_HOLE if
4081 the inode is a directory. process_block() now checks to
4082 see if a directory has a "hole", or missing block. If so,
4083 this fact is recorded in the directory block list so that
4084 the problem can be resolved in pass #2.
4085
4086 * pass2.c (allocate_dir_block): Added allocate_dir_block() to
4087 allocate new blocks for directories with "holes". Called
4088 out of check_dir_block if a block in the directory block
4089 list is zero.
4090
4091 * pass3.c (get_lost_and_found): Move location of free(block) to
4092 prevent possible memory leak.
4093
4094Sat Aug 5 12:42:22 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
4095
4096 * pass2.c (check_dir_block): Use a automatic, fixed-saize array
4097 instead of alloca() --- alloca is not portable! Check to
4098 make sure the filename is not longer than EXT2_NAME_LEN,
4099 and offer to fix it by truncating it, since it should
4100 never happen.
4101
4102 * e2fsck.c (PRS): Use malloc() instead of alloca() --- alloca() is
4103 not portable!! In any case putenv() in some systems must
4104 take a static character array or malloc()'ed memory;
4105 passing memory allocated using alloca() to putenv() is not
4106 advisable.
4107
4108 * pass2.c (check_dot, check_dotdot): Use malloc() instead of
4109 alloca() --- alloca() is not portable!!!
4110
4111Tue Jul 18 20:04:02 1995 <tytso@rsx-11.mit.edu>
4112
4113 * pass1b.c (pass1c):
4114 * pass3.c (check_root, get_lost_and_found):
4115 * pass2.c (check_dir_block): Use ext2fs_{read,write}_dir_block
4116 to read/write the directory block.
4117
4118Mon Jul 17 04:00:56 1995 <tytso@rsx-11.mit.edu>
4119
4120 * util.c (ask_yn): Apply patch supplied by Peter A. Zaitcev to
4121 make sure VMIN and VTIME are set correct.
4122
4123Fri Jul 14 19:26:29 1995 <tytso@rsx-11.mit.edu>
4124
4125 * pass1.c (mark_block_used): Change to be an inline function.
4126 Assume that the block validity checks are already done,
4127 and use the fast variant of the bitmap functions.
4128
4129Thu Jul 13 08:10:55 1995 <tytso@rsx-11.mit.edu>
4130
4131 * pass5.c (check_block_bitmaps, check_inode_bitmaps): Check the
4132 bounds of the bitmaps in advance, and then use the fast
4133 variant of e2fs_test_{block,inode}_bitmap.
4134
4135 * pass1.c (mark_block_used): Use ext2_fast_mark_block_bitmap since
4136 the bounds checking has already been done earlier.
4137
4138Wed Jul 12 02:22:46 1995 <tytso@rsx-11.mit.edu>
4139
4140 * pass1.c (pass1): Allocate and free the block_illegal_map, which
4141 is used for shortcut processing in process_block.
4142 (mark_table_blocks): Initialize block_illegal_map with the
4143 filesystem blocks.
4144 (describe_illegal_block): New helper function that
4145 describes why a block is illegal.
4146 (process_block): Use block_illegal_map as a shortcut
4147 to determine whether a block is bad. Use
4148 describe_illegal_block to print out why the block is illegal.
4149
4150Mon Jun 12 19:11:06 1995 Theodore Y. Ts'o (tytso@dcl)
4151
4152 * flushb.c: Don't include <linux/fs.h> if it doesn't exist.
4153
4154 * scantest.c: Don't include <linux/fs.h>, <getopt.h>, or
4155 <mntent.h> if they don't exist. (Mostly so that "make
4156 depend" works.)
4157
4158 * pass1.c, pass1b.c, pass3.c, badblocks.c: Include <errno.h> (if
4159 it exists).
4160
4161 * e2fsck.c, scantest.c: Don't include <getopt.h> if it doesn't
4162 exist.
4163
4164Mon Jun 12 08:37:49 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
4165
4166 * pass2.c (process_bad_inode, check_for_zero_long,
4167 check_for_zero_char): Change long to u32, and char to u8.
4168
4169Sun Jun 11 15:05:57 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
4170
4171 * util.c (inode_has_valid_blocks):
4172 * pass2.c (process_bad_inode):
4173 * pass1.c (pass1, check_blocks, pass1_check_directory): Use
4174 LINUX_S_IS* instead of S_IS*.
4175
4176 * e2fsck.h: Don't #include <sys/stat.h>
4177
4178 * flushb.c (main): Add #ifdef BLKFLSBUF around ioctl. (Although
4179 this program is pretty much useless if BLKFLSBUF isn't
4180 supported.)
4181
4182 * e2fsck.c, badblocks.c: Add #include <errno.h>, since errno is
4183 used.
4184
4185Thu Jun 8 12:31:19 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
4186
4187 * pass2.c (check_dot, check_dotdot, check_dir_block): Use alloca
4188 to allocate space for file names instead of using fixed size buffers.
4189 (process_bad_inode): Only check inode frag fields if
4190 HAVE_EXT2_FRAGS is defined (by configure).
4191 * pass1.c (pass1): Only check the inode frag fields if
4192 HAVE_EXT2_FRAGS is defined (by configure).
4193
4194 * e2fsck.c (check_mount): Only check for a mounted filesystem if
4195 HAVE_MNTENT_H is defined (by configure).
4196 (PRS): Use alloca to allocate the new path string, instead of
4197 having a fixed size buffer (which was the wrong size anyway).
4198 (PRS): Only support the -F (flush) option if the BLKFLSBUF ioctl
4199 is defined.
4200
4201 * e2fsck.h: Only include <linux/fs.h> if HAVE_LINUX_FS_H is
4202 defined (by configure).
4203
4204 * Makefile.in: Rewritten to conform to GNU coding standards and
4205 support separate compilation directories.
4206
4207Thu Apr 6 15:04:36 1995 Remy Card <card@bbj.ibp.fr>
4208
4209 * pass1.c (pass1): Test the mode in reserved inodes (must be zero).
4210
Theodore Ts'of3db3561997-04-26 13:34:30 +00004211Sat Mar 11 13:12:16 1995 Theodore Y. Ts'o <tytso@localhost>
4212
4213 * pass1.c (unwind_pass1): Clear the file type statistics counter
4214 when pass 1 needs to be restarted from scratch.
4215
4216 * pass1.c (handle_fs_bad_blocks): Fix bug where bitmap blocks were
4217 being reallocated to blocks in the next block group,
4218 instead of the current block grup.
4219
4220 * pass1.c (pass1, check_blocks): Set inode_link_info[ino] whenever
4221 inode.i_links_count is set.
4222
4223Tue Feb 14 01:38:04 1995 Theodore Y. Ts'o (tytso@rt-11)
4224
4225 * pass1.c (process_block): Add checks for if the block is
4226 trepassing on a superblock or group descriptor table.
4227
4228Sat Dec 31 00:52:11 1994 <tytso@rsx-11.mit.edu>
4229
4230 * main.c (corrupt_msg): Extend the message which is printed out
4231 when the superblock is corrupt, to include the suggestion
4232 of using the -b option to specify an alternate superblock.
4233
4234Thu Nov 24 09:29:58 1994 Theodore Y. Ts'o (tytso@rt-11)
4235
4236 * badblocks.c (read_bad_blocks_file): If we are adding or
4237 replacing bad blocks in the bad blocks inode, sanity check
4238 the bad block inode first, and clear out any illegal blocks.
4239
4240 * pass2.c (check_name): Don't bomb out if the attempt to get the
4241 pathname of the containing directory returns an error; the
4242 directory may be too badly damaged to expect that
4243 ext2fs_get_pathname will always succeed. Use "???" if the
4244 pathname can't be obtained (it's only for a printf to the
4245 user anyway).
4246
4247 The name of the containing directory and the bad filename
4248 were incorrectly interchanged in the user message. Fixed.
4249
4250 * pass2.c (check_name, check_dir_block): Use a common static
4251 string for the unknown pathname.
4252
4253Mon Nov 7 22:30:54 1994 Remy Card <card@bbj>
4254
4255 * Fixed lots of printf formats to make sure that block and inode
4256 numbers are printed as unsigned integers.
4257
4258Mon Oct 24 14:10:46 1994 (tytso@rsx-11)
4259
4260 * pass5.c (check_block_end): Fix calculation of how the last block
4261 in the block bitmap should be calculated.
4262
4263Wed Sep 7 10:01:13 1994 (tytso@rsx-11)
4264
4265 * pass1b.c (pass1_dupblocks): Fix declaration of dup_inode_map to
4266 be an ext2fs_inode_bitmap, and free it properly.
4267
4268 * e2fsck.h
4269 * e2fsck.c (main): Folded in Remy Card's changes to add a revision
4270 level to the superblock.
4271
4272Wed Aug 17 22:00:20 1994 Remy Card (card@bbj)
4273
4274 * e2fsck.c (usage): Fixed bogus usage message.
4275
4276Wed Aug 17 11:21:45 1994 Theodore Y. Ts'o (tytso@rt-11)
4277
4278 * pass1.c (process_bad_block): Fixed bug so that blocks in the
4279 backup superblocks and group descriptors are handled gracefully.
4280