1Need to process the bad block inode *before* doing the inode scan.
2
3Also check to see if the first block of the inode table is not on the
4bad block scan, and fix that.  We need to check for an inaccurate
5blocks, and fix them before we start doing anything else with the
6filesystem!
7
8---------------------------------------------------
9User request:
10
11BTW: Could you please add some sort of deleted and possibly corrupted file
12     and inode list to e2fsck report. There should be filenames deleted
13     from directory inodes, files with duplicate blocks e.t.c.
14     It's pretty annoying to filter this information from e2fsck output
15     by hand :-
16
17------------------------------------------
18
19Add a "answer Yes always to this class of question" response.
20
21----------------------------------
22
23ext2fs_flush() should return a different error message for primary
24versus backup superblock flushing, so that mke2fs can print an
25appropriate error message.
26
27---------------------------------
28Date: Mon, 08 Mar 1999 21:46:14 +0100
29From: Sergio Polini <s.polini@mclink.it>
30
31
32I'm reading the sorce code of e2fsck 1.14.
33In pass2.c, lines 352-357, I read:
34
35if ((dirent->name_len & 0xFF) > EXT2_NAME_LEN) {
36        if (fix_problem(ctx, PR_2_FILENAME_LONG, &cd->pctx)) {
37                dirent->name_len = EXT2_NAME_LEN;
38                dir_modified++;
39        }
40}
41
42I think that I'll never see any messages about too long filenames,
43because "whatever & 0xFF" can never be "> 0xFF".
44Am I wrong?
45--------------------------------------
46
47Add chmod command to debugfs.
48
49------------------------------------------
50
51Date: Tue, 18 Jan 2000 17:54:53 -0800 (PST)
52From: Alan Blanchard <alan@abraxas.to>
53To: tytso@MIT.EDU
54Subject: DEBUGFS - thanks and a feature idea
55Content-Type: TEXT/PLAIN; charset=US-ASCII
56
57Theodore:
58
59First, let me thank you for writing debugfs. Recently, my Linux box
60(RH 6.0, 400 MHz PIII, on a DSL line) was hacked into.  The intruder did
61an "rm -Rf" on a 34 GB drive with about 5GB of data on it.  I was able to
62restore essentially the entire thing with debugfs and a bit of C code and Perl.
63Actually, I could have done the entire thing with debugfs and Perl, but I
64thought it would be too slow.
65
66During this exercise, I noticed that one small feature was lacking that would
67have made my job a bit easier.  The length of a deleted directory is
68reported as 0, hence debugfs won't dump the contents of the directory to a
69file using the "dump" command.  The only thing that saved me was that the
70list of disk blocks is not zeroed out.  I was able to dump the contents of the
71directories by using debugfs to get the relevant block numbers, then
72using dd to get the actual data.
73
74If debugfs had a feature where it ignored the size of a directory reported by
75the inode and instead just dumped all the blocks, it would have facilited
76things a bit. This seems like a very easy feature to add.
77
78Again, thanks for writing debugfs (and all the other Linux stuff you've written!).
79
80Cheers,
81Alan Blanchard
82alan@abraxas.to
83
84
85-------------------------------------------------------------------
86
87Date: Fri, 21 Jan 2000 14:07:12 -0800
88From: "H. Peter Anvin" <hpa@www.transmeta.com>
89Subject: mkfs -cc and fsck -c
90
91b) An option to mkfs to zero the partition.  Yes, it can be done with
92dd, but it would be a nicer way of doing it.
93
94------------------------------------------------------------------
95
96Add support for in ext2fs_block_iterate() for a returning the
97compressed flag blocks to block_iterate.  Change default to not return
98EXT2_COMPRESSED_BLKADDR.  Change e2fsck to pass this flag in.
99
100(The old compression patches did this by default all the time, which
101is bad, since it meant e2fsck never saw the EXT2_COMPRESSED_BLKADDR
102flagword.
103
104------------------------------------------------------------
105
106E2fsck should offer to clear all the blocks in an indirect block, not
107the entire inode, so there's better recovery for when an indirect
108block gets trashed.
109
110
111-------------------------------------------------------------
112
113From: Yann Dirson - LOGATIQUE <Yann.Dirson@France.Sun.COM>
114Date: Thu, 2 Mar 2000 13:52:13 +0100 (MET)
115
116During my experiments on the broken system, I noticed the following in
117the badblocks program (which I'm aware is not designed for IDE drives)
118- I'd probably have already fixed them if my home system was up :(
119
120* the syntax summary documents 2nd arg as blocks_count, which should
121probably read something like end_count.
122
123* testing past end of device is not detected, and lists those blocks
124as bad, whereas they simply do not exist.
125
126
127I think I'll probably add a "max count" option to findsuper(8), so
128that I do not have to wait for the whole disk to be scanned when the
129system had to be launched with "init=/bin/sh", in which case Ctrl-[CZ]
130and friends appear to be absolutely ignored.
131
132
133Somewhat unrelated, I just noticed the
134http://web.mit.edu/tytso/www/linux/ext2.html could be updated:
135
136- could mention SGI xfs (http://oss.sgi.com/projects/xfs/ - they just
137  release 0.03 snapshot)
138
139----------------------------------------------------------------
140
141Return-Path: <tytso@MIT.EDU>
142Date: Thu, 10 Feb 2000 13:20:14 -0500
143From: "Theodore Y. Ts'o" <tytso@MIT.EDU>
144To: R.E.Wolff@BitWizard.nl
145In-Reply-To: Rogier Wolff's message of Thu, 10 Feb 2000 08:46:30 +0100 (MET),
146	<200002100746.IAA24573@cave.bitwizard.nl>
147Subject: Re: e2fsck request for enhancement.
148Phone: (781) 391-3464
149
150   Date: Thu, 10 Feb 2000 08:46:30 +0100 (MET)
151   From: R.E.Wolff@BitWizard.nl (Rogier Wolff)
152
153   Lately, while trying to recover a broken disk, my system froze (twice,
154   until I tried something else) while copying the disk.
155
156   So I had a file of about 50Mb that was growing frantically at the
157   moment of the crash.
158
159   e2fsck, then finds an indirect block that is completely bogus. It
160   starts by asking me if it's ok to clear a few of the referenced
161   blocks. I say yes. Then it comes to the conclusion: 
162
163      too many invalid blocks. Clear inode?
164
165   and then I get the option to delete the whole file. Not to truncate
166   the file to a "working" size.
167
168
169   I'd MUCH rather have e2fsck say something like:
170
171      inode 1234 references an invalid block 134345454. Hmm.
172      inode 1234 references 567 out of 50176 invalid blocks, 
173			  all near the end. Truncate file to 49152 blocks?
174
175   Here you can see that of the 1024 blocks near the end of the file,
176   only 567 were detected as invalid. However now 48Mb of the file will
177   be recovered, instead of thrown away.
178
179That's a good point.  Actually, the right thing is for e2fsck to offer
180to clear all of the bad blocks in a particular indirect block.  I don't
181know how hard it would be to do that, but I'll put it on my e2fsprogs
182TODO list.
183
184							- Ted
185
186---------------------------------------------------------------
187From e2fsprogs Debian TODO file as of 1.10-13.
188
189* Maybe make -dbg packages. Look at how others do it.
190
191---------------------------------------------------------------
192
193Add --lba option to debian icheck command, and have ways of making it
194easier to translate LBA to filesystem block numbers.
195
196-------------------------------------------------------
197
198
199
200List of projects for e2fsprogs:
201
202
2031) Make debugfs's "ncheck <inode>" command list all of the pathnames
204to an inode, not just only the first link to the inode which is found.
205(A good "intro to libext2fs programming interfaces project)
206
207	Difficulty: Low		Priority: Low
208
2092) Use a code coverage tool such as Rational's PureCoverage to see
210what kind of code coverage we have for e2fsck, and try to add test
211cases to increase the code coverage for e2fsck.
212
213	Difficulty: Medium	Priorty: Low
214
2153) Use a code coverage tool such as Rational's PureCoverage to see
216what kind of code coverage we have for resize2fs, and try to add test
217cases to increase the code coverage for resize2fs.
218
219	Difficulty: Medium	Priorty: Medium
220
2214) Create a new I/O manager (i.e., test_io.c, unix_io.c, et.al.) which
222layers on top of an existing I/O manager which provides copy-on-write
223functionality.  This COW I/O manager takes will take two open I/O
224managers, call them "base" and "changed".  The "base" I/O manager is
225opened read/only, so any changes are written instead to the "changed"
226I/O manager, in a compact, non-sparse format containing the intended
227modification to the "base" filesystem.  
228
229This will allow resize2fs to figure out what changes need to made to
230extend a filesystem, or expand the size of inodes in the inode table,
231and the changes can be pushed the filesystem in one fell swoop.  (If
232the system crashes; the program which runs the "changed" file can be
233re-run, much like a journal replay.  My assumption is that the COW
234file will contain the filesystem UUID in a the COW superblock, and the
235COW file will be stored in some place such as /var/state/e2fsprogs,
236with an init.d file to automate the replay so we can recover cleanly
237from a crash during the resize2fs process.)
238
239	Difficulty: Medium	Priority: Medium
240
2415) Create a new I/O manager (i.e., test_io.c, unix_io.c, et.al.) which
242layers on top of an existing I/O manager which provides an "undo"
243functionality.  This undo I/O manager takes will take two open I/O
244managers, call them "base" and "undo".  The "base" I/O manager is be
245opened read/write, and when any writes are sent to the I/O manager,
246the I/O manager will check the "undo" I/O manager, using a file format
247identical to the one found in (5) above.  
248
249This is useful for allowing e2fsck to create an "undo" file, which
250would make things like "e2fsck -y" much safer.
251
252	Difficulty: Low (once 5 is done)  Priority: Low
253
2546) Modify resize2fs so that it can relocate and reorganize the
255filesystem in the following ways: (1) increase the inode size, so that
256an existing filesystem can use the EA-in-inode kernel patch, (2)
257reserve blocks in the resize inode to allow for on-line resizing.  Use
258the COW I/O manager described in (5) in order to provide robustness in
259case of a crash during the resize/reorganization operation.  
260
261	Difficulty: High	Priority: Medium
262
2637) Review the EA-in-inode patches to e2fsck for correctness/code
264cleanliness.  (I will probably have to do this myself -- Ted)
265
266	Difficulty: High	Priorty: Medium
267
2688) Add support for extent maps to e2fsprogs.  I need to review the
269extent maps first/in parallel. 
270
271	Difficulty: High	Priority: Medium
272
273----------------------------------
274
275Need to deal with the case where the resize inode overlaps with the
276bad blocks inode.
277
278