6 | | Add support for the ext4 metadata checksum, checksum seed, inline |
7 | | data, encryption, project quota, and read-only features. |
8 | | |
9 | | Support for the very old, experimental, and never-added-to-mainline |
10 | | compression feature has been removed. |
11 | | |
12 | | Mke2fs will now create file systems with the metadata_csum and 64bit |
13 | | features enabled by default. |
14 | | |
15 | | The mke2fs program will now support multiple -O options (instead of |
16 | | just ignoring all but the last -O option). |
17 | | |
18 | | Mke2fs will now correctly determine the size of a file system and |
19 | | handle the discard operation correctly when the "-E offset=NNN" is |
20 | | used. (Addresses Debian Bug: #803629) |
21 | | |
22 | | The tune2fs program will ask the user for confirmation before starting |
23 | | dangerous operations if the terminal is available, and it will replay |
24 | | the journal if necessary. |
25 | | |
26 | | Add an ext2/3/4 FUSE server |
27 | | |
28 | | Debugfs can now modify extended attributes and journal transactions. |
29 | | |
30 | | Debugfs now can properly display and set extended timestamps. |
31 | | |
32 | | E2fsck will offer to fix extended timestamps that were incorrectly |
33 | | encoded by older kernels. |
34 | | |
35 | | Fix miscellaneous MMP bugs in debugfs. |
36 | | |
37 | | Fix sparse_super2 bugs in mke2fs and resize2fs. |
38 | | |
39 | | Fix or improve offset support in mke2fs, e2undo, and libext2fs. |
40 | | |
41 | | The resize2fs command can now convert file systems between 64-bit and |
42 | | 32-bit mode. |
43 | | |
44 | | Fix potential out-of-bounds memory access in resize2fs when doing a |
45 | | large off-line file system grow operation. |
46 | | |
47 | | We now use a new e2undo file format which is much more efficient and |
48 | | faster than the old tdb-based scheme. Since it so much faster, |
49 | | e2fsck, tune2fs, debugfs, and resize2fs now also can support using |
50 | | creating an undo file. |
51 | | |
52 | | The mke2fs command can now set the error behavior when initializing |
53 | | the file system (so the administrator doesn't have to issue a separate |
54 | | tune2fs -e command). |
55 | | |
56 | | Teach mke2fs to parse a human-readable argument for -i option. |
57 | | |
58 | | Teach mke2fs to automatically handle creating file systems > 500T by |
59 | | automatically enable the meta_bg feature. |
60 | | |
61 | | Mke2fs will now prompt for user verification before rewriting a file |
62 | | system's superblock using the -S option. |
63 | | |
64 | | Mke2fs no longer complains if the user tries to create a file system |
65 | | using the entire block device (e.g., without using a partition). The |
66 | | minor number convention is not used by all block devices, and it's |
67 | | quite normal in some circumstances to create a file system on /dev/sdc |
68 | | instead of /dev/sdc1. |
69 | | |
70 | | Fix an "mke2fs -d" bug which could create inodes with invalid |
71 | | extended attribute blocks |
72 | | |
73 | | E2fsck is now much more paranoid about not freeing or corrupting |
74 | | critical metadata blocks, such as inode table blocks, even if |
75 | | corrupted indirect blocks or extent trees point at these blocks. |
76 | | |
77 | | E2fsck now prints block ranges in pass1b instead of listing all of the |
78 | | blocks exhaustively. |
79 | | |
80 | | E2fsck will try to expand the root directory if the lost+found can't |
81 | | be linked to the root directory. Also, offer to use the root |
82 | | directory if lost+found can't be created. |
83 | | |
84 | | E2fsck is now more paranoid handling corrupted extent trees as well as |
85 | | corrupted journals. |
86 | | |
87 | | E2fsck can now rebuild extent trees, either (a) to optimize them, (b) |
88 | | to recover from a corrupted extent tree, or (c) to convert |
89 | | block-mapped inodes to use extents. |
90 | | |
91 | | E2fsck now has a readahead mechanism which can significantly speed its |
92 | | performance, especially on RAID arrays. |
93 | | |
94 | | E2fsck now has a "yes to all" option which the user can give if she is |
95 | | tired of answering 'y' to a very large number of questions. |
96 | | |
97 | | E2fsck will now ignore the badblocks inode if the contents of the |
98 | | badblocks inode indicate that the portion inode table containing the |
99 | | badblocks inode is bad. (We must go deeper...) |
100 | | |
101 | | E2fsck can now correctly fix directory with holes on bigalloc file |
102 | | systems. |
103 | | |
104 | | E2fsck will now check for extent mapped inodes with no extent header |
105 | | and clear them if found. |
106 | | |
107 | | E2fsck now checks to make sure the extended attribute header doesn't |
108 | | result in the xattr extending beyond the bounds of the inode |
109 | | |
110 | | Fixed a bug in e2fsck to avoid overrunning a buffer containing jbd2 |
111 | | revoke records if the journal is corrupted. |
112 | | |
113 | | Fixed a bug in e2fsck which could cause it loop forever if a special |
114 | | inode has too many invalid block mappings. |
115 | | |
116 | | Fixed a bug in e2fsck which could cause pass1b/c/d processing to get |
117 | | confused if an attempt to allocate a block can't find any free space |
118 | | in the file system. |
119 | | |
120 | | E2fsck will no longer try to force rewrite blocks located beyond the |
121 | | file system. |
122 | | |
123 | | The e2fsck program will no longer update the quota inodes when it is |
124 | | interrupted. |
125 | | |
126 | | Fix a bug which in rare cases would cause e2fsck -fD to corrupt an |
127 | | extent-mapped directory. |
128 | | |
129 | | Fixed a bug in resize2fs which could lead to resize2fs crashing or a |
130 | | corrupted file system if the file system is almost completely full |
131 | | when trying grow a file system and we need to allocate blocks to grow |
132 | | the block group descriptors. |
133 | | |
134 | | Fixed a bug in resize2fs which could cause it to get fooled trying to |
135 | | determinthe the RAID array's stride when flex_bg is enabled. |
136 | | |
137 | | Fix resize2fs bug that could leave block allocation bitmaps |
138 | | uninitialized. |
139 | | |
140 | | The dumpe2fs output has been improved so it is cleaner and always fits |
141 | | within 80 columns. Also added a more easily machine-parsable output |
142 | | of dumpe2fs. |
143 | | |
144 | | The mke2fs program can now pre-populate a file system from a directory |
145 | | hierarchy using the -d option. |
146 | | |
147 | | The mke2fs program now skips zeroing inode table blocks if they were |
148 | | already zeroed using the discard feature. |
149 | | |
150 | | Check to make sure file system features which can not be supported by |
151 | | HURD are not enabled if the file system is created to be |
152 | | HURD-compatible. |
153 | | |
154 | | Added a new e2fuzz command that will fuzz an ext4 image for testing |
155 | | purposes. |
156 | | |
157 | | The debugfs logdump command can now deal with 64-bit revoke tables |
158 | | correctly. Also, "logdump -O" will print the old log contents (before |
159 | | the journal was replayed). |
160 | | |
161 | | The debugfs bmap command can now be used to set or allocate a physical |
162 | | block. |
163 | | |
164 | | Fixed a bug so "filefrag -B -e -v" does not return a separate entry |
165 | | for each block. |
166 | | |
167 | | The filefrag program now accounts for holes in sparse files created by |
168 | | the file punch operation as an expected/optimal mapping. |
169 | | |
170 | | The file I/O functions now correctly handle inodes containing |
171 | | uninitialized blocks. |
172 | | |
173 | | Fix a bug in tune2fs so that removing uninit_bg feature on a bigalloc |
174 | | file system won't result in corrupted block bitmaps. |
175 | | |
176 | | Updated/fixed various man pages. (Addresses Debian Bug: #798425) |
177 | | |
178 | | |
179 | | Programmer's Notes |
180 | | ------------------ |
181 | | |
182 | | Fixed coverity, sparce gcc -Wall, and clang warnings/nits. |
183 | | |
184 | | Added Android build files so that e2fsprogs can be built in the |
185 | | Android source tree. |
186 | | |
187 | | Reduce the use of libc functions in libext2fs that may not be present |
188 | | in the boot loader environment, at least for those functions that are |
189 | | needed by boot loadsers such as yaboot. |
190 | | |
191 | | Developers can now overide the debugging and optimization flags by |
192 | | redefining the CFLAGS makefile macro. |
193 | | |
194 | | The libext2fs library now has support for fallocate. |
195 | | |
196 | | The mke2fs command will now ask the user for confirmation if block |
197 | | device or image file contains an existing file system image, and |
198 | | stdout and stdin are connected to a tty. |
199 | | |
200 | | The libext2fs library now picks a more intelligent goal block when |
201 | | doing block allocations. |
202 | | |
203 | | The libext2fs library will now automatically set the BLOCK_UNINT flag |
204 | | if all of the blocks in a block group are free, to speed up future |
205 | | e2fsck and dumpe2fs operations on the file system. |
206 | | |
207 | | Add two new functions ext2fs_new_range() and ext2fs_alloc_range() to |
208 | | libext2fs. |
209 | | |
210 | | The ext2fs_zero_blocks() command will use FALLOC_FL_ZERO_RANGE for |
211 | | file-based images. |
212 | | |
213 | | The ext2fs_bmap() function supports new flags BMAP_UNINIT and |
214 | | BMAP_ZERO. |
215 | | |
216 | | The ext2fs_new_block2() function will now call the alloc_block hook |
217 | | before checking fs->block_map. |
218 | | |
219 | | Support for the MMP feature can now be disabled at compile time. |
220 | | |
221 | | Added support to manipulate extended attributes to libext2fs. |
222 | | |
223 | | Added a lot of new regression tests. |
224 | | |
225 | | Added endian annotations so it's possible to scan e2fsprogs for endian |
226 | | problems using a static code analyzer. |
227 | | |
228 | | Fixed memory leaks in libext2fs. |
229 | | |
230 | | The e2fsck jbd2 handling code has been resynced with the 3.16 kernel. |
231 | | There is now a script in the contrib directory which automates most of |
232 | | the resync process. |
233 | | |
234 | | The build system will now run cppcheck (a static code analysis tool) |
235 | | via "make C=1" |
236 | | }}} |
237 | | I haven't seen any real differences when building or using it compared to previous versions, though the configure script does now autodetect more libs to determine what to build. This means we don't need to specify configure switches to disable libuuid, libblkid, or uuidd, it will automatically detect and use the system versions from Util-linux. So, the configure command (at least for 32 and Pure64) can look like this: |
238 | | {{{ |
239 | | ../configure \ |
240 | | --prefix=/usr \ |
241 | | --bindir=/bin \ |
242 | | --with-root-prefix="" \ |
243 | | --enable-elf-shlibs \ |
244 | | --disable-fsck |
245 | | }}} |
| 3 | Release notes |
| 4 | [https://lwn.net/Articles/713244/] |