]> git.ipfire.org Git - thirdparty/e2fsprogs.git/blob - lib/ext2fs/ChangeLog
Update files for 1.30 release.
[thirdparty/e2fsprogs.git] / lib / ext2fs / ChangeLog
1 2002-10-31 Theodore Ts'o <tytso@mit.edu>
2
3 * Release of E2fsprogs 1.30
4
5 2002-10-31 Theodore Ts'o <tytso@mit.edu>
6
7 * ext2_fs.h: Add support for a new inode flag, which is to be used
8 for indicating the top of directory hierarchies for the
9 Orlov block allocator.
10
11 * ismounted.c (check_mntent, check_mntent_file): Add better
12 support for loopback-mounted filesystems. Check /etc/mtab
13 if /proc/mounts doesn't turn up any mount flags, since
14 /etc/mtab has the loopback image filename, instead of
15 /dev/loop0. Also, check based on st_dev and st_ino, so
16 that if a relative pathname or a pathnames using symbolic
17 links are used, we can detect the the filesystem correctly
18 in those cases. (Addresses Sourceforge bug #619119)
19
20 * flushb.c (ext2fs_sync_device): If the BLKFLSBUF ioctl succeeds,
21 don't try the FDFLUSH ioctl that was required for floppies
22 with older kernels. This avoids needless whining from the
23 MD device driver. (Addresses Sourceforge bug #545832).
24
25 * openfs.c (ext2fs_open): Fix bug which caused us to pass the
26 wrong group_block to ext2fs_descriptor_block_loc if we're
27 using the backup superblock/block group descriptors.
28 (ext2fs_descriptor_block_loc): If we're using the backup
29 superblock descriptors, use the backup descriptor block in
30 the next block group.
31
32 2002-10-30 Theodore Ts'o <tytso@mit.edu>
33
34 * alloc_tables.c (ext2fs_allocate_group_table): Allocate the inode
35 table so that it buts up against the bitmap blocks, to
36 avoid block fragmentation.
37
38 * closefs.c (write_bgdesc), initalize.c (ext2fs_initialize): Fix
39 bug; only allocate group descriptor blocks up to
40 s_first_meta_bg.
41
42 2002-10-25 Theodore Ts'o <tytso@mit.edu>
43
44 * ext2_fs.h: Add a new superblock field, s_mkfs_time, so that we
45 know when a filesystem was created. (Sometimes this can
46 be useful...)
47
48 * initialize.c (ext2fs_initialize): Set the s_mkfs_time field.
49
50 2002-10-20 Theodore Ts'o <tytso@valinux.com>
51
52 * ext2_fs.h (EXT3_DEFM_JMODE): Add new default mount options for
53 the journal data mode.
54
55 * closefs.c (ext2fs_flush, write_bgdesc), ext2_fs.h, ext2fs.h,
56 openfs.c (ext2fs_descriptor_block_loc, ext2fs_open), initialize.c
57 (ext2fs_initialize), swapfs.c (ext2fs_swap_super): Add support for
58 the meta_blockgroup filesystem format.
59
60 2002-10-15 <tytso@snap.thunk.org>
61
62 * ext2_fs.h: Add new field in superblock for default mount options.
63
64 2002-10-13 Theodore Ts'o <tytso@mit.edu>
65
66 * ext2fs.h: Add #include of header files necessary for ext2fs.h to
67 compile cleanly.
68
69 2002-10-02 Theodore Y. Ts'o <tytso@mit.edu>
70
71 * rw_bitmaps.c (ext2fs_write_block_bitmap,
72 ext2fs_read_block_bitmap): Don't set the CHANGED bit just
73 because the bitmap is getting written to disk. Make
74 ext2fs_swap_bitmap be a static function, since it's not
75 intended to be exported.
76
77 * swapfs.c (ext2fs_swap_super): Byte-swap the hash seed
78
79 2001-09-24 Theodore Tso <tytso@mit.edu>
80
81 * Release of E2fsprogs 1.29
82
83 2001-08-31 Theodore Tso <tytso@thunk.org>
84
85 * Release of E2fsprogs 1.28
86
87 2002-08-31 Theodore Ts'o <tytso@valinux.com>
88
89 * dblist.c (ext2fs_dblist_sort): New function which allows the
90 caller to pass in a special sort comparison function.
91
92 2002-08-20 Theodore Ts'o <tytso@mit.edu>
93
94 * valid_blk.c (ext2fs_inode_has_valid_blocks): Fix bug which
95 failed to accurately characterize non-standard slow
96 symlinks. (Which don't appear in practice on real-life
97 systems, fortunately.)
98
99 2002-08-17 Theodore Ts'o <tytso@mit.edu>
100
101 * Makefile.in: Remove inode_io.o from the standard object files,
102 and only build it if debugfs is enabled (it requires
103 fileio.o, which is only built if --disable-debugfs isn't
104 specified to configure).
105
106 * dirhash.c (ext2fs_dirhash): Change the MD4 hash in a backwards
107 incompatible way so that it is no longer
108 endian-dependent. Add the TEA hash. Allow the seed
109 parameter to be optional.
110
111 * ext2_fs.h: Remove the HALF_MD4_SEED and HALF_MD4_64 hashes.
112 These features are all now in the HALF_MD4 hash. Add
113 definition for EXT2_HASH_TEA.
114
115 * ext2fs.h (ext2fs_dirhash): Change function prototype so it takes
116 a pointer instead of an array.
117
118 2002-08-16 Theodore Ts'o <tytso@mit.edu>
119
120 * ext2_err.et.in (EXT2_ET_BAD_EA_BLOCK_NUM): New error code
121
122 * ext2fs.h (ext2fs_inode_data_blocks): New function which returns
123 the number of data blocks used by an inode exclusive of
124 the EA block.
125
126 * ext_attr.c (ext2fs_adjust_ea_refcount): New function which
127 adjusts the reference count in an extended attribute block.
128
129 * valid_blk.c (ext2fs_inode_has_valid_blocks): Add code to
130 correctly deal with extended attribute blocks in symbolic
131 links.
132
133 2002-08-13 <tytso@snap.thunk.org>
134
135 * Makefile.in: Move dupfs.o and test_io.o from the
136 needed-by-debugfs object list to the needed-by-resizer
137 object list. Fixes compile problem if the system is built
138 with only --disable-debugfs.
139
140 2002-07-29 Theodore Ts'o <tytso@mit.edu>
141
142 * link.c (ext2fs_link): When adding a new link to a directory,
143 clear the HTREE bit.
144
145 2002-07-23 Theodore Ts'o <tytso@mit.edu>
146
147 * dirhash.c (ext2fs_dirhash): Fix bug which caused MD4
148 calculations for names > 32 characters to be completely
149 bogus. Changed MD4 calculation to match what is currently
150 being used in the CVS gkernel tree.
151
152 2002-07-19 Theodore Ts'o <tytso@mit.edu>
153
154 * ext2_fs.h: Add s_hash_seed and s_def_hash_version to the
155 superblock definition.
156
157 * badblocks.c, freefs.c, ext2fs.h: Use the badblocks functions to
158 create a set of u32_list functions.
159
160 * dirhash.c (halfMD4Transform): Shift the hash by one bit,
161 since that's required by the directory indexing code.
162
163 2002-07-14 Theodore Ts'o <tytso@mit.edu>
164
165 * ext2fs.h, read_bb_file.c: Change private to priv_data, to avoid
166 using a C++ reserved word.
167
168 * unix_io.c (unix_open): Only attempt the setrlimit workaround if
169 the kernel version is 2.4.10 -- 2.4.17, since otherwise an
170 old version of glibc (built against 2.2 headers) will
171 interact badly with the workaround to actually cause more
172 problems. I hate it when the glibc folks think they're
173 being smarter than the kernel....
174
175 2002-06-28 Andreas Dilger <adilger@clusterfs.com>
176
177 * ext2_fs.h: Add superblock field for reserved group descriptors.
178
179 2002-06-28 Theodore Ts'o <tytso@mit.edu>
180
181 * bitops.h: Add #define's for ext2fs_{l,b}e{32,16}_to_cpu and
182 ext2fs_cpu_to_{l,b}e{32,16}
183
184 2002-06-27 Theodore Ts'o <tytso@mit.edu>
185
186 * ismounted.c (check_mntent): In AIX 4.3, MOUNTED isn't defined.
187 Add appropriate fallbacks in this case.
188
189 2002-06-26 Theodore Ts'o <tytso@mit.edu>
190
191 * dirhash.c (ext2fs_dirhash): Change function signature to support
192 a hash seed, and to return the minor hash (for 64-bit hash
193 support). Add support for the half MD4, half MD4 with
194 seed, and half MD4 with seed and 64 bits.
195
196 2002-06-15 Theodore Ts'o <tytso@mit.edu>
197
198 * ext2_fs.h (EXT2_DIRSYNC_FL): Add new file.
199
200 2002-06-09 Andreas Dilger <adilger@clusterfs.com>
201
202 * ext2_fs.h: Add macros for maximum block/inode counts:
203 EXT2_INODES_PER_BLOCK, EXT2_MAX_BLOCKS_PER_GROUP,
204 and EXT2_MAX_INODES_PER_GROUP.
205
206 * openfs.c (ext2fs_open): Check that the number of blocks in a group
207 is less than 2^16, otherwise we need an INCOMPAT flag (not
208 in existence yet, if ever) to open such a filesystem.
209
210 * initialize.c (ext2fs_initialize): Limit the number of blocks and
211 inodes in a group to less than 2^16.
212
213 2002-06-09 Andreas Dilger <adilger@clusterfs.com>
214
215 * ext2_fs.h: Further minor cleanups of the header. Consolidate
216 some checks for __KERNEL__ into one place.
217
218 2002-05-22 Andreas Dilger <adilger@clusterfs.com>
219
220 * ext2_fs.h: Remove macros accessing u.ext2_sb field and use
221 the EXT2_SB() macro instead. Remove kernel function
222 prototypes also. This matches the 2.5 kernel, and
223 is also cleaner for other reasons. Whitespace cleanup.
224
225 2002-05-21 Theodore Ts'o <tytso@mit.edu>
226
227 * ext2_ext_attr.h: Update to V2 version of the Bestbits format.
228
229 2002-05-16 Andreas Dilger <adilger@clusterfs.com>
230
231 * ext2_fs.h: Change limits to support filesystems with 8k blocks.
232
233 * initialize.c (ext2fs_initialize): Remove assumption that
234 blocksizes are always <= 4k.
235
236 2002-05-11 Theodore Ts'o <tytso@mit.edu>
237
238 * bmap.c (ext2fs_bmap): Fix bug which caused ext2fs_bmap to fail
239 silently if inode pointer is NULL (and ext2fs_bmap is
240 expected to read the inode itself).
241
242 2002-04-27 Theodore Ts'o <tytso@mit.edu>
243
244 * ismounted.c (check_mntent_file, is_swap_device): Verify that the
245 file we are checking is a block device file before looking
246 at st_rdev, since it's not valid for normal files.
247 (is_swap_device): Move so that it is outside the
248 HAVE_MNTENT_H, so that it is always built.
249
250 2002-03-11 Theodore Tso <tytso@mit.edu>
251
252 * dirblock.c (ext2fs_read_dir_block2, ext2fs_write_dir_block): New
253 functions which take an extra flags argument. The flag
254 EXT2_DIRBLOCK_V2_STRUCT will reverse when the name_len
255 field is byte swampped on big-endian machines, since in
256 the V2 structure, name_len is a char field which is
257 doesn't need to be byte swapped --- except if an
258 old-style kernel had byte-swapped the name_len field
259 as part of the V1 structure.
260
261 * ext2_err.et.in (EXT2_ET_DIRHASH_UNSUPP): New error code
262
263 * dirhash.c (ext2fs_dirhash): New function which calculates the
264 hash for a filename in an indexed directory.
265
266 2002-03-08 Theodore Tso <tytso@mit.edu>
267
268 * Release of E2fsprogs 1.27
269
270 2002-03-07 Theodore Tso <tytso@mit.edu>
271
272 * ext2fs.h (ext2fs_inode_io_intern): Add missing function prototype.
273
274 * bmap.c, fileio.c, inode_io.c, tst_badblocks.c,
275 tst_byteswap.c: Fix gcc -Wall complaints
276
277 * Makefile.in (check): Use LD_LIBRARY_PATH to run test programs.
278 (From Philipp Thomas <pthomas@suse.de>)
279
280 2002-02-25 Theodore Tso <tytso@mit.edu>
281
282 * ext2_fs.h: Add structure definitions for the directory indexing
283 extension.
284
285 2002-02-23 Theodore Tso <tytso@mit.edu>
286
287 * unix_io.c (unix_open): Fix 2.4 resource limit workaround so that
288 it doesn't break things on mis32, sparc32, and alpha
289 platforms.
290
291 2002-02-21 Theodore Tso <tytso@mit.edu>
292
293 * ismounted.c (is_swap_device): Fix file descriptor/memory leak;
294 we were missing an fclose().
295
296 2002-02-20 Theodore Tso <tytso@mit.edu>
297
298 * Makefile.in, inode_io.c, ext2fs.h, ext2_err.et.in: Add new io
299 abstraction interface which exports an ext2 inode.
300
301 * ext2fs.h, fileio.c (ext2fs_file_flush): Export ext2fs_file_flush
302 as a public interface. Change void * to const void * in
303 ext2fs_file_write's interface.
304
305 * test_io.c (test_close), unix_io.c (unix_close): Remove unneeded
306 conditional; save a few bytes.
307
308 2002-02-12 Theodore Tso <tytso@mit.edu>
309
310 * Makefile.in (tst_badblocks): Add some extra .o files when
311 linking the debugging program tst_badblocks which are
312 needed if we aren't compiling with inline functions enable.
313
314 * kernel-list.h (__inline__): On non-gcc and non-Watcom compilers,
315 define away __inline__ since it may not be supported.
316
317 * kernel-jbd.h (jbd_debug): For systems that don't do STDC, use a
318 stripped down jbd_debug that doesn't use variadic
319 arguments. This will cause warnings under AIX, but things
320 should still build.
321
322 2002-02-03 Theodore Tso <tytso@thunk.org>
323
324 * Release of E2fsprogs 1.26
325
326 2002-02-03 Theodore Tso <tytso@mit.edu>
327
328 * mkdir.c (ext2fs_mkdir): Change to use ext2fs_inode_alloc_stats2
329 so that the number of directories in use is adjusted
330 appropriately.
331
332 * alloc_stats.c (ext2fs_inode_alloc_stats2): Add new function
333 which optionally will modify the number of directories
334 count.
335
336 2002-01-03 Theodore Tso <tytso@mit.edu>
337
338 * dir_iterate.c (ext2fs_dir_iterate2, ext2fs_process_dir_block):
339 Add support for a new flag, DIRENT_FLAG_INCLUDE_REMOVED,
340 which will return deleted directory entries.
341 ext2fs_dir_iterate2 takes a new callback function which
342 is identical with the one used by
343 ext2fs_dblist_dir_iterate(). If the directory entry is
344 deleted, the callback function will be called with the
345 entry paraemter set to DIRENT_DELETED_FILE.
346
347 * Makefile.in, alloc_stats.c (ext2fs_inode_alloc_stats,
348 ext2fs_block_alloc_stats): New functions which update
349 block/inode allocation statistics in the bitmaps, block
350 group descriptors, and superblock.
351
352 * mkjournal.c (mkjournal_proc), mkdir.c (ext2fs_mkdir),
353 expanddir.c (expand_dir_proc), bb_inode.c
354 (clear_bad_block_proc, set_bad_block_proc,
355 ext2fs_update_bb_inode), alloc.c (ext2fs_alloc_block):
356 Update to use new block/inode allocation statistics.
357
358 2001-12-24 Theodore Tso <tytso@mit.edu>
359
360 * ismounted.c (is_swap_device): New function used by
361 ext2fs_check_if_mounted and ext2fs_check_mount_point which
362 determines whether or not the specified device is a swap
363 device by using /proc/swaps. More bulletproofing for
364 idiotic/careless system administrators!
365
366 * ext2fs.h, openfs.c (ext2fs_open), initialize.c
367 (ext2fs_initialize), mkdir.c (ext2fs_mkdir): Add a new
368 field to struct_ext2_filsys, umask. This field is
369 initialize to 022, and affects ext2fs_mkdir in the obvious
370 way. (In the future umask should also affect new file
371 creation routines, but the fileio functions don't
372 currently support this yes.)
373
374 * ismounted.c (check_mntent_file): Stat all of the entries in
375 /etc/mtab and/or /proc/mounts in order to catch dim-witted
376 system administrators who might have created alias
377 devices.
378
379 2001-12-23 Theodore Tso <tytso@mit.edu>
380
381 * Makefile.in, jfs_user.h: Move linux/jbd.h to
382 ext2fs/kernel-jbd.h, to avoid using the system header
383 file version of hbd.h when using diet glibc (since it
384 forcibly adds /usr/include to the beginning of the
385 include search path.)
386
387 * kernel-jbd.h, kernel-list.h, jfs_compat.h: Move files from
388 include/linux directory.
389
390 2001-12-16 Theodore Tso <tytso@mit.edu>
391
392 * bitops.h (ext2fs_mark_generic_bitmap, ext2fs_unmark_generic_bitmap),
393 ext_attr.c (ext2fs_read_ext_attr, ext2fs_write_ext_attr),
394 fileio.c (ext2fs_file_write): Fix gcc -Wall nits
395
396 * Makefile.in, jfs_user.h: linux/jfs.h has been renamed to
397 linux/jbd.h
398
399 2001-12-03 Theodore Tso <tytso@mit.edu>
400
401 * unix_io.c (unix_open): Make sure the ulimit workaround works
402 regardless of the version of glibc which is used to
403 compild e2fsprogs.
404
405 2001-11-26 Theodore Tso <tytso@mit.edu>
406
407 * unix_io.c (unix_open): Work around a bug in 2.4.10+ kernels by
408 trying to unset the filesize limit if at all possible,
409 if a block device is getting opened. (The filesize limit
410 shouldn't be applied against writes to a block device, but
411 starting in 2.4.10, the kernel is doing this.)
412
413 2001-11-05 Theodore Tso <tytso@mit.edu>
414
415 * mkjournal.c (ext2fs_add_journal_inode): When creating a .journal
416 file on adding a journal to an already-mounted filesystem,
417 try to clear the ext2 file attributes on an already
418 existing .journal file so that we don't fail if on a
419 partially added journal to the filesystem.
420
421 * ext2_fs.h: Define a new ext2 file attribute, EXT2_NOTAIL_FL,
422 which signals that a particular inode should not have the
423 last bits of data (the "tail") be merged with another
424 file. This is necessary to keep LILO happy.
425
426 2001-09-20 Theodore Tso <tytso@thunk.org>
427
428 * Release of E2fsprogs 1.25
429
430 2001-09-16 Theodore Tso <tytso@mit.edu>
431
432 * ext2_ext_attr.h: Remove unneeded #include of <linux/config.h>
433 which was breaking the build on the Hurd. (Addresses
434 Debian bug #112414).
435
436 2001-09-13 Theodore Ts'o <tytso@mit.edu>
437
438 * ismounted.c (check_mntent_file): We now validate the entry in
439 /etc/mtab to make sure the filesystem is really mounted,
440 since some broken distributions (read: Slackware) have
441 buggy boot scripts that don't initialize /etc/mtab before
442 checking non-root filesystems. (Slackware also doesn't
443 check the root filesystem separately, and reboot if the
444 root filesystem had changes applied to it, which is
445 dangerous and broken.)
446
447 2001-09-02 Theodore Tso <tytso@thunk.org>
448
449 * Release of E2fsprogs 1.24a
450
451 2001-08-30 Theodore Tso <tytso@thunk.org>
452
453 * Release of E2fsprogs 1.24
454
455 2001-08-30 Theodore Tso <tytso@valinux.com>
456
457 * getsize.c (ext2fs_get_device_size): Back out BLKGETSIZE64
458 changes, since the ioctl number has been reused by another
459 unofficial patch.
460
461 2001-08-15 Theodore Tso <tytso@valinux.com>
462
463 * Release of E2fsprogs 1.23
464
465 2001-08-05 Theodore Tso <tytso@valinux.com>
466
467 * alloc.c (ext2fs_new_inode, ext2fs_new_block): Use the fast
468 version of the bitmap test routines to speed up these
469 routines. (At some point I may want to make these
470 routines use the find_first_bit functions, but that will
471 add a lot of complexity since it means that these
472 functions will have to break the bitmap abstraction
473 boundary. It's not clear it's worth it.)
474
475 * mkjournal.c (mkjournal_proc): Remember the last block allocated
476 to speed up ext2fs_new_block().
477
478 2001-07-29 Theodore Tso <tytso@valinux.com>
479
480 * finddev.c (scan_dir): Fix memory leak; we weren't calling
481 closedir() when exiting the function in all cases.
482
483 2001-07-27 Theodore Tso <tytso@valinux.com>
484
485 * mkjournal.c (ext2fs_create_journal_superblock): Set the first
486 block usable in the journal for external journals to be 2
487 or 3, depending on the blocksize, so that the existing
488 kernel code does the right thing.
489
490 * getsize.c (ext2fs_get_device_size): Add support for the
491 BLKGETSIZE64 ioctl. (Ioctl defined by unofficial patches
492 from Ben LaHaise, but it's likely this interface won't
493 change.)
494
495 * mkjournal.c (ext2fs_add_journal_device): Use the correct block
496 when writing the journal superblock, too. (Oops! Needed
497 to make 1k filesystems with external journal to work.)
498
499 2001-07-26 Theodore Tso <tytso@valinux.com>
500
501 * mkjournal.c (ext2fs_add_journal_device): Use the correct block
502 to find the journal superblock if the blocksize is 1024.
503
504 2001-07-21 Theodore Tso <tytso@valinux.com>
505
506 * ext2_err.et.in (EXT2_ET_LOAD_EXT_JOURNAL): Add new error code
507
508 2001-07-20 Theodore Tso <tytso@valinux.com>
509
510 * ext_attr.c (ext2fs_write_ext_attr): When writing the extended
511 attribute block, set the filesystem changed bit.
512
513 * bitops.h (ext2fs_find_first_bit_set, ext2fs_find_next_bit_set):
514 Comment out these functions since we're not using them.
515
516 2001-07-10 Theodore Tso <tytso@valinux.com>
517
518 * closefs.c (write_primary_superblock): After writing changes to
519 the primary superblock, update the original superblock
520 copy so we don't have to re-write those changes in the
521 future.
522 (ext2fs_flush): Clear the superblock dirty flag after
523 we've flushed out changes to disk.
524
525 2001-07-07 Theodore Tso <tytso@valinux.com>
526
527 * bitops.h (ext2fs_find_first_bit_set): Use %esi instead of %ebx
528 to avoid register conflicts when compiling in PIC mode.
529
530 2001-07-04 Theodore Tso <tytso@valinux.com>
531
532 * bitops.h (ext2fs_find_first_bit_set, ext2fs_find_next_bit_set):
533 Add new functions (C and in i386 assembler) which quickly
534 find bits set in a bitmask.
535
536 2001-06-23 Theodore Tso <tytso@valinux.com>
537
538 * Makefile.in, ext_attr.c, ext2_attr.c, ext2fs.h: Add new files
539 ext2_ext_attr.h and ext_attr.c for extended attributes
540 support.
541
542 * Release of E2fsprogs 1.22
543
544 2001-06-22 Theodore Tso <tytso@valinux.com>
545
546 * mkjournal.c (ext2fs_add_journal_inode): Move close of file
547 descriptor so that adding a journal to a mounted
548 filesystem doesn't die. (Fixes a bug accidentally
549 introduced in e2fsprogs 1.21.)
550
551 * mkjournal.c (ext2fs_add_journal_inode): Only use fchflags if
552 HAVE_CHFLAGS and UF_NODUMP are defined, since the Hurd has
553 fchflags without defining UF_NODUMP. (Addresses Debian
554 bug #101361)
555
556 * flushb.c: Use platform independent method of defining the
557 BLKFLSBUF and FDFLUSH ioctl's. Also include sys/mount.h
558 since on newer glibc's BLKFLSBUF is defined there.
559
560 * bitops.h: The C language versions of ext2fs_swab16/32 need to be
561 included if EXT2FS_ENABLE_SWAPFS is defined, since we need
562 to support byte swapping even if we don't support the
563 conversion functions. (Fixes Debian bug #101686).
564
565 * dirblock.c (ext2fs_read_dir_block): Remove use of dir_entry_2
566 since the byte-swapping code all assumes the
567 ext2_dir_entry structure. (It's a question of whether or
568 not name_len should be byte-swapped or not, and whether
569 it's a 16 bit or 8 bit field.)
570
571 2001-06-15 Theodore Tso <tytso@valinux.com>
572
573 * Release of E2fsprogs 1.21
574
575 2001-06-15 Theodore Tso <tytso@valinux.com>
576
577 * Makefile.in: Fix bug in installation of ext2_types.h. It is a
578 file which is generated and is therefore found in the
579 build directory, not source directory.
580
581 * ismounted.c (check_mntent_file): Use a test file in / to check
582 to see if the root filesystem is mounted read-only. This
583 protects against the case where /etc might not be on /, as
584 well as the case where /etc/mtab doesn't exist. (Both are
585 should-never happen scenarios, but you never know...)
586
587 2001-06-14 Theodore Tso <tytso@valinux.com>
588
589 * ismounted.c (ext2fs_check_if_mounted): Fix grammer in comment.
590 Remove unneeded #pragma argsused, since the arguments are
591 always used.
592
593 2001-06-13 Theodore Tso <tytso@valinux.com>
594
595 * ext2_types.h.in: If linux/types.h has been defined, then don't
596 try to redefine the typedefs.
597
598 * Makefile.in (HFILES): Add ext2_types.h to the list of files
599 which should be installed.
600
601 * ismounted.c (check_mntent_file): Work around GNU hurd brain
602 damage. Addresses Debian bug #100304.
603
604 * Makefile.in: Limit some .o files from being included into the
605 library if --disable-debugfs, --disable-swapfs,
606 --disable-imager, or --disable-resizer are used.
607
608 2001-06-12 Theodore Tso <tytso@valinux.com>
609
610 * inode.c, tst_iscan.c: Stop using the compatibility badblocks
611 function, and use the ext2fs_badblocks_* functions
612 instead.
613
614 2001-06-11 Theodore Tso <tytso@valinux.com>
615
616 * Makefile.in, gen_bitmap.c, bitops.h: Move inline functions
617 ext2fs_mark_generic_bitmap and
618 ext2fs_unmark_generic_bitmap to gen_bitmap.c as normal
619 functions. (This saves space and doesn't significantly
620 change the speed of e2fsck on a P-III.)
621
622 * ext2fs.h, bitops.h, block.c, bmap.c, closefs.c, dirblock.c,
623 inode.c, native.c, openfs.c, rw_bitmaps.c, swapfs.c: Only
624 include the byte-swapping logic if ENABLE_SWAPFS is turned
625 on or if we're on a big-endian machine.
626
627 * initialize.c (ext2fs_initialize):Use WORDS_BIGENDIAN directly to
628 set EXT2_FLAG_SWAP_BYTES, instead of using
629 ext2fs_native_flag.
630
631 * native.c (ext2fs_native_flag): Use WORDS_BIGENDIAN provided by
632 autoconf to determine whether or not return
633 EXT2_FLAG_SWAP_BYTES.
634
635 2001-06-10 Theodore Tso <tytso@valinux.com>
636
637 * Makefile.in: Remove the dependence on the libe2p library.
638
639 * mkjournal.c (ext2fs_add_journal_inode): Replace use of fsetflags
640 with direct usage of the ioctl/fchflags so that we don't
641 have to depend on the libe2p library.
642
643 2001-06-08 Theodore Tso <tytso@valinux.com>
644
645 * ext2_types.h.in: Use unsigned ints in favor of unsigned longs
646 when trying to find a 32-bit wide type.
647
648 * icount.c (insert_icount_el): Fix the code used to estimate the
649 size of the new icount array to be more intelligent, to
650 avoid reallocating the array too many times. Thanks to
651 Enrique Perez-Terron for pointing this out.
652
653 2001-06-02 Theodore Tso <tytso@valinux.com>
654
655 * valid_blk.c (ext2fs_inode_has_valid_blocks): Only check i_blocks
656 for a symlink to determine whether it is a fast symlink.
657
658 2001-06-01 Theodore Tso <tytso@valinux.com>
659
660 * Makefile.in, dosio.c, ext2_fs.h, ext2_types.h.in, ext2fs.h:
661 Move include/asm/types.h.in to lib/ext2fs/ext2_types.h.in.
662
663 2001-05-25 Theodore Tso <tytso@valinux.com>
664
665 * Release of E2fsprogs 1.20
666
667 2001-05-25 Theodore Tso <tytso@valinux.com>
668
669 * ismounted.c: More cleanups for ismounted.c, some from Andreas,
670 some to clean up Andreas's patches. Use strncpy instead
671 of strcpy to save the root's mountpoint. Clean up #ifdef
672 structure. Remove uneeded variable in testing/debug driver.
673
674 2001-05-24 Andreas Dilger <adilger@turbolinux.com>
675
676 * ismounted.c: Add check for root device which doesn't depend on
677 /etc/fstab or /proc/mounts to be correct. Don't call
678 endmntent() before we are done with mnt struct.
679
680 2001-05-23 Theodore Tso <tytso@valinux.com>
681
682 * ext2_err.et.in (EXT2_ET_JOURNAL_UNSUPP_VERSION): Added new error
683 code.
684
685 2001-05-21 Theodore Tso <tytso@valinux.com>
686
687 * ext2_fs.h: Change assignment of EXT2_FEATURE_COMPAT_DIR_INDEX to
688 make room for pre-existing usage of
689 EXT2_FEATURE_COMPAT_EXT_ATTR. Add flag EXT2_INDEX_FL with
690 the same codepoint as EXT2_BTREE_FL.
691
692 2001-05-20 Theodore Tso <tytso@valinux.com>
693
694 * ext2fs.h: #include <> instead of "" for ext2fs and et header
695 files, since they will be installed in /usr/include
696
697 2001-05-14 Theodore Tso <tytso@valinux.com>
698
699 * alloc.c, alloc_tables.c, badblocks.c, bb_compat.c, bb_inode.c,
700 bitmaps.c, bitops.c, block.c, bmap.c, bmove.c, brel_ma.c,
701 check_desc.c, closefs.c, cmp_bitmaps.c, dblist.c,
702 dblist_dir.c, dir_iterate.c, dirblock.c, dupfs.c,
703 expanddir.c, ext2_fs.h, fileio.c, finddev.c, flushb.c,
704 freefs.c, get_pathname.c, getsize.c, icount.c, imager.c,
705 initialize.c, inline.c, inode.c, irel_ma.c, ismounted.c,
706 link.c, lookup.c, mkdir.c, mkjournal.c, namei.c, native.c,
707 newdir.c, nt_io.c, openfs.c, read_bb.c, read_bb_file.c,
708 rs_bitmap.c, rw_bitmaps.c, swapfs.c, test_io.c,
709 tst_badblocks.c, tst_byteswap.c, tst_getsize.c,
710 tst_iscan.c, unix_io.c, unlink.c, valid_blk.c, version.c,
711 write_bb_file.c, ext2_fs.h: Moved file from include/linux.
712 Adjust all files in this directroy to include this file.
713
714 * mkjournal.c (ext2fs_create_journal_superblock): Remove redundant
715 code.
716
717 2001-05-05 Theodore Tso <tytso@valinux.com>
718
719 * fileio.c (ext2fs_file_read): Factored out common code and
720 cleaned up function. Fixed a bug where if there was an
721 error reading from the disk, the number of bytes read
722 wasn't reliably set. (Fixes Debian bug #79163)
723 (ext2fs_file_write): Factored out common code and made
724 function more efficient; if writing a full block, don't
725 bother to do a read-modify-write cycle.
726
727 2001-05-04 Theodore Tso <tytso@valinux.com>
728
729 * dirblock.c (ext2fs_read_dir_block): Check for an directory
730 record length which isn't a multiple four, and treat that
731 as an invalid. Scan the directory and return an error
732 (EXT2_ET_DIR_CORRUPTED) if the directory records are
733 corrupted.
734 (ext2fs_write_dir_block): If while byte-swapping the
735 directory block, if there's an error, abort and return
736 EXT2_ET_DIR_CORRUPTED.
737
738 2001-05-02 Theodore Tso <tytso@valinux.com>
739
740 * ext2fs.h (EXT2_FLAG_IMAGE_FILE): Add new flag, and add
741 image_header field in the ext2_filsys structure
742
743 * block.c (block_iterate_ind, block_iterate_dind, block_iterate_tind):
744 * inode.c (ext2fs_read_inode):
745 * rw_bitmaps.c (read_bitmaps):
746 * openfs.c (ext2fs_open): Add support for EXT2_FLAG_IMAGE_FILE
747
748 * imager.c (ext2fs_image_bitmap_read): Fix bug in imager to make
749 sure the full bitmap is saved.
750
751 2001-05-01 Theodore Tso <tytso@valinux.com>
752
753 * e2image.h (struct ext2_image_hdr): Add space for the device name
754 in the image header.
755
756 * dir_iterate.c (ext2fs_process_dir_block): Add a double-check to
757 make sure the rec_len is a multiple of 4, to prevent
758 bus-errors on architectures which care about mis-aligned
759 pointer references.
760
761 2001-04-25 Theodore Tso <tytso@valinux.com>
762
763 * getsize.c (ext2fs_get_device_size): Use an unsigned long to
764 query the device sizes using the BLKGETSIZE ioctl.
765
766 2001-04-16 Theodore Tso <tytso@valinux.com>
767
768 * ismounted.c (check_mntent): Check /proc/mounts on Linux systems
769 before checking /etc/mtab. The EXT2_MF_READONLY flag is
770 now set from the /etc/mtab options field for all
771 filesystems, not just the root filesystem. Add debugging
772 code to make it easier to test ext2fs_check_if_mounted().
773
774 * mkjournal.c (ext2fs_create_journal_superblock): Add safety
775 check; return an error if there's an attempt to create a
776 journal less than 1024 filesystem blocks.
777
778 * ext2_err.et.in, mkjournal.c: Change EXT2_JOURNAL_NOT_BLOCK and
779 EXT2_NO_JOURNAL_SB to be EXT2_ET_*.
780
781 2001-02-20 Theodore Tso <tytso@valinux.com>
782
783 * bitops.h (ext2fs_swab16, ext2fs_swab32): Add i386 assembly
784 inline functions.
785
786 * tst_byteswap.c: New function to test the byteswap functions.
787 Add to regression test suite.
788
789 2001-02-08 Theodore Tso <tytso@valinux.com>
790
791 * e2image.h (struct ext2_image_hdr): Fix type for fs_hostname
792
793 2001-02-07 Theodore Tso <tytso@valinux.com>
794
795 * mkjournal.c (ext2fs_create_journal_superblock): Fix the setting
796 of s_first for external devices to always be 1, since
797 jsb->s_first is always relative to the start of the
798 journal superblock. Use htonl(1) when setting s_nr_users.
799
800 2001-01-17 Theodore Ts'o <tytso@valinux.com>
801
802 * mkjournal.c (ext2fs_add_journal_device): Fix bug where the
803 device number of the filesystem (instead of the journal)
804 was being dropped into s_journal_dev.
805
806 2001-01-15 Theodore Ts'o <tytso@valinux.com>
807
808 * initialize.c (ext2fs_initialize): Add support for initializing
809 the ext2 superblock for external journal devices. This
810 basically means we don't bother to allocate any block
811 group descriptors.
812
813 * openfs.c (ext2fs_open): Only open external journal devices if
814 the new flag EXT2_FLAG_JOURNAL_DEV_OK is passed to
815 ext2fs_open. When opening such devices, don't try to read
816 the block group descriptors, since they're not there.
817
818 * ext2_err.et.in (EXT2_NO_JOURNAL_SB): Add new error code
819
820 * mkjournal.c: Export a new function,
821 ext2fs_create_journal_superblock(), which allocates and
822 returns a buffer containing a journal superblock. This is
823 needed by mke2fs to create an external journal. Rewrote
824 ext2fs_add_journal_device() so that it no longer creates
825 the external journal, but rather adds a filesystem to an
826 existing external journal. It handles all of the UUID
827 manipulation.
828
829 * ext2fs.h: List the EXT3_FEATURE_JOURNAL_DEV as a flag supported
830 by the library. Define the EXT2_FLAG_JOURNAL_DEV_OK.
831 Changed function prototype for ext2fs_add_journal_device().
832
833 2001-01-14 Theodore Ts'o <tytso@valinux.com>
834
835 * closefs.c (ext2fs_flush): Don't write out anything beyond the
836 primary superblock if EXT2_INCOMPAT_JOURNAL_DEV is
837 listed.
838
839 2001-01-12 Theodore Ts'o <tytso@valinux.com>
840
841 * imager.c: Fix gcc -Wall complaints and a series of bugs where
842 retval wasn't set correctly. (Thanks to Andreas Dilger
843 for pointing this out.)
844
845 2001-01-11 <tytso@snap.thunk.org>
846
847 * flushb.c (ext2fs_sync_device): New function which centralizes
848 all of the places which might try to use the BLKFLSBUF
849 or FDFLUSH ioctls (and usually failing to define them
850 since the system header files don't usually do this for
851 us, and we're trying to avoid usage of kernel include
852 files now).
853
854 2001-01-10 <tytso@snap.thunk.org>
855
856 * alloc.c, bb_inode.c, bitmaps.c, bitops.h, block.c, bmap.c,
857 bmove.c, brel.h, cmp_bitmaps.c, dblist.c, dblist_dir.c,
858 dir_iterate.c, expanddir.c, ext2fs.h, ext2fsP.h, fileio.c,
859 finddev.c, get_pathname.c, icount.c, inode.c, irel.h,
860 irel_ma.c, ismounted.c, link.c, lookup.c, mkdir.c,
861 mkjournal.c, namei.c, newdir.c, read_bb_file.c, test_io.c,
862 tst_iscan.c, unix_io.c, unlink.c: Change use of ino_t to
863 ext2_ino_t, to protect applications that attempt to
864 compile -D_FILE_OFFSET_BITS=64, since this inexplicably
865 changes ino_t(!?). So we use ext2_ino_t to avoid an
866 unexpected ABI change.
867
868 2001-01-05 <tytso@snap.thunk.org>
869
870 * dirblock.c (ext2fs_read_dir_block): Fix a potential case where
871 we may overrun allocated memory in case of a corrupted
872 filesystem (or an e2fsck test case :-) when byte-swapping
873 the directory block.
874
875 * ext2fs.h: Indent the #warning to fix gcc -Wall complaint.
876
877 * mkjournal.c (ext2fs_add_journal_device): Fix various gcc -Wall
878 complaints including a missing return 0 at the end of
879 ext2fs_add_journal_device.
880
881 2001-01-03 <tytso@snap.thunk.org>
882
883 * Makefile.in: Link in libe2p when creating libext2fs as a shared
884 library, since mkjournal.c now references fsetflags().
885
886 * mkjournal.c (ext2fs_add_journal_inode): Folded in Andreas
887 Dilger's changes (with fixups) to allow on-line creation
888 of a journal file.
889
890 * ext2fs.h, closefs.c (ext2fs_flush): Add new flag,
891 EXT2_FLAG_SUPER_ONLY, which the close routines to only
892 update the superblock, and not the group descriptors.
893
894 2000-12-30 Andreas Dilger <adilger@turbolinux.com>
895
896 * ismounted.c: add ext2fs_check_mount_point() function, which will
897 optionally return the mount point of a device if mounted
898
899 2000-12-14 Andreas Dilger <adilger@turbolinux.com>
900
901 * mkjournal.c: rename ext2fs_add_journal_fs() to the more descriptive
902 ext2fs_add_journal_inode()
903
904 2001-01-01 <tytso@snap.thunk.org>
905
906 * ext2fs.h: Remove definition of ext2fs_sb. Note: this may break
907 source (but not binary) compatibility of some users of the
908 ext2 library. They should just simply do a global search
909 and replace of struct ext2fs_sb with struct
910 ext2_super_block, and use their own private copy of
911 ext2_fs.h if they aren't already.
912
913 * closefs.c, initialize.c, link.c, newdir.c, openfs.c, swapfs.c:
914 Replace use of ext2fs_sb with ext2_super_block.
915
916 2000-12-31 <tytso@snap.thunk.org>
917
918 * ext2fs.h: Cleaned up header file by removing definitions of
919 feature flags that might not have been defined in older
920 ext2 header files. Now that we're using our own
921 include/linux/ext2fs.h header file, this can never happen.
922
923 * jfs_dat.h: Removed old header file which is no longer needed.
924
925 2000-12-13 Theodore Ts'o <tytso@valinux.com>
926
927 * closefs.c (ext2fs_update_dynamic_rev): New function suggested
928 by Andreas Dilger to update the filesystem revision to
929 EXT2_DYNAMIC_REV.
930
931 * swapfs.c (ext2fs_swap_super): Add byte swapping for the journal
932 fields.
933
934 2000-12-09 <tytso@snap.thunk.org>
935
936 * ext2fs.h, mkjournal.c (ext2fs_add_journal_inode,
937 ext2fs_add_journal_device): Add a new argument to the APIs
938 of these function, which is a flags word. This is used to
939 allow the creation of a V1 superblock for those folks who
940 are using ext3 0.3b in production. Note, the user-land
941 interface for getting at this flag won't be documented, as
942 the V1 superblock is deprecated.
943
944 * mkjournal.c (init_journal_superblock): Sync Stephen's changes
945 which creates a V2 superblock instead of a V1 superblock.
946
947 2000-11-21 <tytso@snap.thunk.org>
948
949 * test_io.c (test_write_blk, test_write_byte): Fix typos pointed
950 out by Andreas Dilger.
951
952 2000-11-05 <tytso@snap.thunk.org>
953
954 * imager.c (ext2fs_image_{inode,super,bitmap}_{read,write},
955 ext2_fs.h, Makefile.in: New file that has routines that
956 save ext2fs metadata to a file.
957
958 * ext2_err.et.in (EXT2_ET_MAGIC_E2IMAGE): New error code assigned.
959
960 * e2image.h: New file which defines the file format for the ext2
961 image file. (Saved copy of ext2 metadata to a file as a
962 saving throw against worst-case damage.)
963
964 2000-11-01 <tytso@snap.thunk.org>
965
966 * inode.c (ext2fs_flush_icache): Add new function
967 ext2fs_flush_icache() which flushes the internal inode
968 cache. Applications which modify the inode table blocks
969 directly must call this function.
970
971 2000-10-26 <tytso@snap.thunk.org>
972
973 * mkjournal.c: Add #include of netinet/in.h, since Solaris
974 requires it for ntohl().
975
976 * ext2_io.h (io_channel_write_byte): Add new interface to allow
977 callers to write specific byte ranges. This is an
978 optional interface, which not all IO channels may
979 implement.
980
981 * unix_io.c (unix_write_byte):
982 * test_io.c (test_write_byte): Add implementation of the
983 write_byte function.
984
985 * closefs.c (write_primary_superblock, ext2fs_flush): Add a new
986 function which writes the primary superblock. If the IO
987 channel supports writing raw bytes directly, only fields
988 which were modified are written to the disk. This makes
989 it safe(r) to use utilities like tune2fs on a mounted
990 filesystem.
991
992 * freefs.c (ext2fs_free): Free the original superblock if it is
993 available.
994
995 * openfs.c (ext2fs_open): Store a copy of the original superblock
996 when opening it.
997
998 * ext2fs.h: Add a field to store the original superblock in the
999 ext2 context structure.
1000
1001 2000-10-24 <tytso@snap.thunk.org>
1002
1003 * llseek.c: Add #ifdef's for IA64 (it's a 64-bit platform, so we
1004 don't need to use llseek).
1005
1006 2000-10-24 <tytso@valinux.com>
1007
1008 * Makefile.in, ext2fs.h, jfs_dat.h, mkjournal.c: Add functions for
1009 creating an ext3 journal on a filesystem.
1010
1011 2000-08-21 <tytso@valinux.com>
1012
1013 * ext2_err.et.in (EXT2_JOURNAL_NOT_BLOCK): Add new error code.
1014
1015 2000-08-22 <tytso@valinux.com>
1016
1017 * unix_io.c: Make massive changes to support a multiple block
1018 writethrough cacheing.
1019
1020 * ext2_io.h: Added flags field to the io_channel structure.
1021
1022 2000-08-19 <tytso@valinux.com>
1023
1024 * finddev.c, ext2fs.h, Makefile.in: Add new file, finddev.c, which
1025 provides the function ext2fs_find_block_device(). This
1026 function returns the pathname to a block device, given its
1027 device number.
1028
1029 2000-07-13 <tytso@valinux.com>
1030
1031 * Release of E2fsprogs 1.19
1032
1033 2000-07-07 Theodore Ts'o <tytso@valinux.com>
1034
1035 * ext2fs.h (EXT2_LIB_FEATURE_INCOMPAT_SUPP): Add
1036 EXT3_FEATURE_INCOMPAT_RECOVER (aka needs_recovery) to the
1037 list of filesystem flags supported by the library.
1038
1039 2000-07-04 Theodore Ts'o <tytso@valinux.com>
1040
1041 * ext2fs.h: Update to include latest journalling additions to the
1042 superblock.
1043
1044 * dll/jump.funcs: Add new jumptable entries for
1045 ext2fs_write_bb_FILE, ext2fs_read_bb_FILE2, and
1046 ext2fs_badblocks_equal.
1047
1048 * tst_badblocks.c: Update test program to test
1049 ext2fs_read_bb_FILE2 and ext2fs_write_FILE.
1050
1051 * write_bb_file.c (ext2fs_write_bb_FILE): New function which
1052 writes out bad blocks list to a file.
1053
1054 * read_bb_file.c (ext2fs_read_bb_FILE2): Add new function which
1055 changes the callback function to take two additional
1056 arguments; a private blind pointer supplied by the caller,
1057 and pointer to a char * containing a pointer to the
1058 invalid string.
1059
1060 * badblocks.c (ext2fs_badblocks_equal): Add new function which
1061 returns true if two badblocks list are equal.
1062
1063 * Makefile.in: Remove explicit link of -lc in the shared library.
1064 (It shouldn't be necessary, and is harmful in some cases).
1065
1066 2000-06-10 Theodore Ts'o <tytso@valinux.com>
1067
1068 * getsize.c (main): Add debugging code under #ifdef DEBUG
1069
1070 2000-05-27 Theodore Ts'o <tytso@valinux.com>
1071
1072 * mkdir.c (ext2fs_mkdir): Read the parent directory's inode
1073 earlier, so that if there's an error reading it, we can
1074 more cleanly back out of the operation.
1075
1076 2000-05-25 <tytso@snap.thunk.org>
1077
1078 * getsize.c (ext2fs_get_device_size): Use open64() instead of
1079 open() if it exists. Under linux, manually define the
1080 ioctl for BLKGETSIZE if it isn't already defined and it's
1081 safe to do so.
1082
1083 * unix_io.c (unix_open): Use open64() instead of open() if it
1084 exists.
1085
1086 * llseek.c: Simplify header includes of unistd.h. If lseek64 is
1087 available (and prototypes are defined) use it in
1088 preference to llseek.
1089
1090 * Makefile: Add hack dependency rule so that parallel makes work
1091 correctly.
1092
1093 2000-05-18 Theodore Ts'o <tytso@valinux.com>
1094
1095 * ext2fs.h: Add appropriate ifdef's to support C++ compilation.
1096
1097 2000-04-03 Theodore Ts'o <tytso@valinux.com>
1098
1099 * block.c: Readibility tweak in conditionals involving
1100 ctx->fs->flags.
1101
1102 * ext2fs.h: Use AUTOCONF SIZEOF_* macros if available to determine
1103 how to define __s64 and __u64. Turn off "compression is
1104 experimental" warning if the cpp macro
1105 I_KNOW_THAT_COMPRESSION_IS_EXPERIMENTAL is defined.
1106
1107 2000-02-11 <tytso@snap.thunk.org>
1108
1109 * ext2fs.h: Define EXT2FS_COMPRESSED_BLKADDR and HOLE_BLKADDR.
1110 Conditionally include Compression as a supported type if
1111 ENABLE_COMPRESSION (via --enable-compression) is turned on.
1112
1113 * swapfs.c (ext2fs_swap_super): Swap the compression usage bitmap.
1114
1115 2000-02-08 <tytso@snap.thunk.org>
1116
1117 * bitops.h (ext2fs_mark_generic_bitmap, ext2fs_unmark_generic_bitmap,
1118 ext2fs_mark_block_bitmap, ext2fs_unmark_block_bitmap,
1119 ext2fs_mark_inode_bitmap, ext2fs_unmark_inode_bitmap):
1120 Change to return the previous state of the bit that is
1121 being marked or unmarked. For speed optimization.
1122
1123 2000-02-02 Theodore Ts'o <tytso@valinux.com>
1124
1125 * getsize.c, ismounted.c: Remove unneeded include of linux/fs.h
1126
1127 * swapfs.c: Remove #ifdef HAVE_EXT2_INODE_VERSION since it's not
1128 needed any more; we know it will always be i_generation.
1129 Add support for swapping the high bits of the uid and gid.
1130
1131 1999-11-19 <tytso@valinux.com>
1132
1133 * mkdir.c (ext2fs_mkdir): Only update the parent's inode link
1134 counts if the link was successful. Patch suggested by
1135 jeremy@goop.org.
1136
1137 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
1138 the source directory.
1139
1140 1999-11-10 <tytso@valinux.com>
1141
1142 * Release of E2fsprogs 1.18
1143
1144 1999-11-08 <tytso@valinux.com>
1145
1146 * Makefile.in (tst_badblocks): Add freefs.o to the object list,
1147 since ext2fs_badblocks_list_free was moved to freefs.c.
1148
1149 * tst_badblocks.c: Use the newer badblocks API names. Add
1150 duplicate blocks to the test inputs to test dealing with
1151 adding blocks which are already in the badblocks list.
1152
1153 * badblocks.c (ext2fs_badblocks_list_add): If appending to the end
1154 of the list, use a shortcut O(1) operations instead of an
1155 O(n) operation. (Idea suggested by David Beattie.)
1156
1157 * freefs.c (ext2fs_free): Use ext2fs_badblocks_list_free() instead
1158 of badblocks_list_free(), to save a procedure call.
1159
1160 1999-10-26 <tytso@valinux.com>
1161
1162 * Release of E2fsprogs 1.17
1163
1164 1999-10-26 <tytso@valinux.com>
1165
1166 * ext2fs.h: Add kludge to deal with the fact that egcs cpp doesn't
1167 seem to handle ~0UL the same way as they used to.
1168
1169 1999-10-25 <tytso@valinux.com>
1170
1171 * nt_io.c (_OpenNtName): Open the device using
1172 FILE_SYNCHRONOUS_IO_NONALERT instead of
1173 FILE_SYNCHRONOUS_IO_ALERT
1174 (nt_open): At the end of the device open routine, unlock
1175 the drive but do not dismount it.
1176
1177 * initialize.c (CREATOR_OS): Use __GNU__ instead of __gnu__ to
1178 detect the Hurd OS.
1179
1180 1999-10-22 <tytso@valinux.com>
1181
1182 * Release of E2fsprogs 1.16
1183
1184 1999-10-22 <tytso@valinux.com>
1185
1186 * mkdir.c (ext2fs_mkdir): Pass EXT2_FT_DIR flag to ext2fs_link().
1187
1188 * link.c (ext2fs_link): This call now uses the low three bits of
1189 the flags parameter to pass the directory filetype
1190 information; it will set the directory entry FILETYPE
1191 information if the filesystem supports it.
1192
1193 * newdir.c (ext2fs_new_dir_block): If the FILETYPE superblock
1194 option is set, then create the '.' and '..' entries with
1195 the filetype set to EXT2_FT_DIR.
1196
1197 1999-09-24 <tytso@valinux.com>
1198
1199 * nt_io.c: New file which supports I/O under Windows NT.
1200
1201 1999-09-07 <tytso@valinux.com>
1202
1203 * ext2fs.h: Add new fields for journalling and define new
1204 feature bits used by newer filesystems: IMAGIC_INODES,
1205 HAS_JOURNAL, RECOVER.
1206
1207 * expanddir.c (ext2fs_expand_dir, expand_dir_proc): Change where
1208 we update the inode block count and size files so that the
1209 block count field is updated correctly when we create an
1210 indirect block.
1211
1212 1999-07-18 Theodore Ts'o <tytso@valinux.com>
1213
1214 * Release of E2fsprogs 1.15
1215
1216 1999-06-23 <tytso@valinux.com>
1217
1218 * swapfs.c (ext2fs_swap_inode): Add compatibility for Linux 2.3
1219 kernels that use i_generation instead of i_version. Patch
1220 supplied by Jon Bright <sircus@sircus.demon.co.uk>.
1221
1222 1999-06-21 <tytso@valinux.com>
1223
1224 * dir_iterate.c (ext2fs_process_dir_block): Check for corrupted
1225 directory entry before calling the callback function.
1226 This should prevent some core dumps of insufficiently
1227 paranoid callback functions.
1228
1229 1999-05-29 <tytso@rsts-11.mit.edu>
1230
1231 * ext2fs.h: Add feature definition for AFS IMAGIC inodes.
1232
1233 * fileio.c (ext2fs_file_open): Remove obsolete comment stating
1234 that we don't handle writing yet (we do). Fixed bug where
1235 we weren't allocating a big enough buffer for ext2_bmap.
1236
1237 1999-05-03 <tytso@rsts-11.mit.edu>
1238
1239 * openfs.c (ext2fs_open): Check to make sure that the number of
1240 blocks per group is not zero --- if so, it must be a bad
1241 superblock!
1242
1243 1999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1244
1245 * Release of E2fsprogs 1.14
1246
1247 1999-01-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
1248
1249 * inode.c (ext2fs_read_inode, ext2fs_write_inode): Check to see if
1250 the inode number is zero; if it's zero, return
1251 EXT2_ET_BAD_INODE_NUM.
1252
1253 1998-12-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
1254
1255 * initialize.c (ext2fs_initialize): Use EXT2_FIRST_INODE instead
1256 of EXT2_FIRST_INO to ensure compatibility with Linux 1.2
1257 header files.
1258
1259 Mon Jan 4 02:32:09 1999 Theodore Y. Ts'o <tytso@mit.edu>
1260
1261 * llseek.c (ext2fs_llseek): Change ext2fs_llseek() in the
1262 non-Linux case to use EINVAL by default, unless it isn't
1263 defined, in which case we use EXT2_ET_INVALID_ARGUMENT
1264 instead.
1265
1266 1998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
1267
1268 * Release of E2fsprogs 1.13
1269
1270 1998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
1271
1272 * Makefile.in: Updated dependencies.
1273
1274 1998-09-22 Theodore Ts'o <tytso@rsts-11.mit.edu>
1275
1276 * initialize.c (ext2fs_initialize): Make sure that we allocate
1277 enough inodes so that we can make a valid filesystem.
1278
1279 1998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
1280
1281 * rw_bitmaps.c: Fixed signed/unsigned warnings.
1282
1283 * fileio.c (ext2fs_file_set_size): Remove unneeded extern from the
1284 function declaration.
1285
1286 * dblist.c (make_dblist): Add safety check in case the dblist
1287 pointer passed in is null (in which case, assign it to
1288 fs->dblist). Fixed some signed/unsigned warnings.
1289
1290 * bmap.c: Make addr_per_block be of type blk_t to avoid
1291 signed/unsigned warnings.
1292
1293 * namei.c (ext2fs_follow_link): Remove uneeded extern from the
1294 function declaration.
1295
1296 * get_pathname.c (get_pathname_proc): Use return value from
1297 ext2fs_get_mem, instead of checking if &gp->name is
1298 NULL.
1299
1300 * dir_iterate.c (ext2fs_process_dir_block):
1301 * dblist_dir.c (ext2fs_dblist_dir_iterate): Remove uneeded extern
1302 from the function declaration.
1303
1304 * block.c (ext2fs_block_iterate2): If the read_inode call fails,
1305 return the error directly instead of jumping to the
1306 cleanup routine, since we don't need to do any cleanup.
1307
1308 * alloc_table.c (ext2fs_allocate_group_table): Make this
1309 function take a dgrp_t for its group argument.
1310
1311 * ext2fs.h: Make dgrp_t an __u32 type, and make
1312 fs->desc_group_count be of type dgrp_t.
1313
1314 1998-07-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
1315
1316 * badblocks.c (ext2fs_badblocks_list_add): Use a bigger increment
1317 than 10 blocks when we need to expand the size of the
1318 badblocks list.
1319
1320 1998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
1321
1322 * Release of E2fsprogs 1.12
1323
1324 1998-06-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
1325
1326 * closefs.c (ext2fs_flush): Update the s_block_group_nr field as
1327 appropriate for all of the block group copies, so that
1328 it's clear where the beginning of the filesystem is on the
1329 disk. (For when the partition table gets scrod.)
1330
1331 * ext2fs.h: Change the name of the feature from
1332 EXT2_FEATURE_INCOMPAT_DIRNAME_SIZE to
1333 EXT2_FEATURE_INCOMPAT_FILESIZE (to match with the kernel).
1334
1335 1998-06-18 Theodore Ts'o <tytso@rsts-11.mit.edu>
1336
1337 * inode.c (get_next_blockgroup): Fix bug where if
1338 get_next_blockgroup() is called early because of a missing
1339 inode table in a block group, the current_inode counter
1340 wasn't incremented correctly.
1341
1342 1998-06-16 Theodore Ts'o <tytso@rsts-11.mit.edu>
1343
1344 * read_bb.c (ext2fs_read_bb_inode): Make function more robust
1345 against a completely trashed bad block inode.
1346
1347 1998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
1348
1349 * alloc_tables.c (ext2fs_allocate_group_table): Fix bug so that if
1350 the stride length hits a bad value, we retry the block
1351 allocation starting at the beginning of the block group.
1352
1353 * ext2fs.h, bb_inode.c, block.c, bmove.c, dir_iterate.c,
1354 expanddir.c, ext2fsP.h, read_bb.c: Change blkcnt_t to be
1355 e2_blkcnt_t to avoid collision with LFS API.
1356
1357 1998-05-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
1358
1359 * initialize.c (ext2fs_initialize): Initialize s_inodes_count in a
1360 way that avoids overflows on disk sizes greater than 4GB.
1361
1362 1998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
1363
1364 * ext2fs.h: Define EXT2_QSORT_TYPE appropriately for the
1365 return type for comparison functions for qsort.
1366
1367 * dblist.c (dir_block_cmp): Use EXT2_QSORT_TYPE in function
1368 declaration.
1369
1370 1998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
1371
1372 * ext2fs.h, bitops.h: Add support for the Watcom C compiler to do
1373 inline functions.
1374
1375 * ext2fs.h, dosio.c: Use asm/types.h instead of linux/types.h to
1376 evade a potential problem with glibc's header files trying
1377 to spike out linux/types.h.
1378
1379 * ext2fs.h (ext2fs_resize_mem): Change the function prototype to
1380 include the old size of the memory, which is needed for
1381 some braindamaged memory allocation systems that don't
1382 support realloc().
1383
1384 * badblocks.c (ext2fs_badblocks_list_add):
1385 bb_inode.c (clear_bad_block_proc):
1386 dblist.c (ext2fs_add_dir_block):
1387 icount.c (insert_icount_el):
1388 irel_ma.c (ima_put):
1389 rs_bitmap.c (ext2fs_resize_generic_bitmap): Update functions to
1390 pass the old size of the memory to be resized to
1391 ext2fs_resize_mem().
1392
1393 1998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
1394
1395 * Makefile.in: Change to use new installation directory variables
1396 convention. Fix uninstall rules to take $(DESTDIR) into
1397 account.
1398
1399 1998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
1400
1401 * ext2fs.h: If __STRICT_ANSI__ is defined and we're on a platform
1402 with 32 bit longs, then we need to manually define __s64
1403 and __u64, since the current kernel header files don't
1404 define these if __STRICT_ANSI__ is defined. This is a
1405 problem if we are compiling with full GCC warnings, since
1406 we do need 64 bit support.
1407
1408 * Makefile.in (OBJS): Remove bmove.o from files to be built,
1409 since we're not using ext2fs_move_blocks() and there
1410 is some question as to its usefulness in its current
1411 form.
1412
1413 * bmap.c (block_bmap): Remove unused function.
1414
1415 * bmove.c (process_block): Fix -Wall warning.
1416
1417 1998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
1418
1419 * block.c (ext2fs_block_iterate3): Make the ref_offset field
1420 contain the offset into the inode.i_blocks array when
1421 ref_block is zero. Since we haven't done a formal
1422 release of e2fsprogs since block_iterate2 was first
1423 introduced, I removed block_iterate2, and renamed
1424 block_iterate3 to be block_iterate2.
1425
1426 * bb_inode.c, bmove.c, dblist_dir.c, dir_iterate.c,
1427 expanddir.c, ext2fs.h, ext2fsP.h, read_bb.c: Change
1428 use of block_iterate and block_iterate2 to
1429 block_iterate2 with the new prototype for the
1430 interator function. (using blkcnt_t forr blockcount)
1431
1432 1998-03-21 Theodore Ts'o <tytso@rsts-11.mit.edu>
1433
1434 * ext2fs.h: Add new superblock fields (s_algorithm_usage_bitmap,
1435 s_prealloc_blocks, s_prealloc_dir_blocks). Added
1436 conditional defines of new features COMPAT_DIR_PREALLOC,
1437 RO_COMPAT_LARGE_FILE RO_COMPAT_BTREE_DIR,
1438 INCOMPAT_COMPRESSION, INCOMPAT_DIRNAME_SIZE. Changed
1439 the library to declare that we support COMPAT_DIR_PREALLOC,
1440 INCOMPAT_DIRNAME_SIZE, RO_COMPAT_LARGE_FILE.
1441
1442 * fileio.c: Rename function ext2fs_file_llseek to be
1443 ext2fs_file_lseek, which is more accurate.
1444
1445 * block.c: Add new function ext2fs_block_iterate3 which calls
1446 the iterator function with the blockcount argument of
1447 type blkcnt_t. This version of the function is
1448 allowed to handle large files; the other fucntions are
1449 not.
1450
1451 * ext2fs.h: Add new type blkcnt_t
1452
1453 * ext2_err.et.in: Add error code EXT2_ET_FILE_TOO_BIG
1454
1455 * block.c (ext2fs_block_iterate2): Fix bug where the block count
1456 field wasn't getting correctly incremented for sparse
1457 files when the indirect or doubly-indirect block
1458 specified in the inode was zero.
1459
1460 Sun Mar 8 22:42:47 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1461
1462 * unlink.c (unlink_proc):
1463 * lookup.c (lookup_proc):
1464 * link.c (link_proc):
1465 * get_pathname.c (get_pathname_proc):
1466 * dir_iterate.c (ext2fs_process_dir_block): Mask off high 8 bits
1467 from dirent->name_len, so it can be used for other
1468 purposes.
1469
1470 * ext2fs.h: Add definition of EXT2_FEATURE_INCOMPAT_DIRNAME_SIZE,
1471 and indicate that we have support for this incompatible
1472 option.
1473
1474 Mon Feb 23 08:46:33 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1475
1476 * ext2_err.et.in: Added new error code, EXT2_ET_CANCEL_REQUESTED.
1477
1478 Fri Feb 20 23:58:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1479
1480 * dblist.c (ext2fs_get_num_dirs): Improve the estimation of the
1481 number of directories when the block group information is
1482 unreliable.
1483
1484 1998-02-20 Theodore Y. Ts'o <tytso@edt.mit.edu>
1485
1486 * inode.c (ext2fs_get_next_inode): Always do the check to see if the
1487 inode table is missing so that we catch the case where the
1488 first block group is missing.
1489
1490 * getsize.c, ismounted.c, unix_io.c: #include errno.h since it's
1491 needed.
1492
1493 Mon Feb 16 16:16:00 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1494
1495 * ext2_io.h, ext2fs.h: Protect against being included multiple times.
1496
1497 * bmove.c: #include ext2fsP.h instead of "ext2fs/ext2fs.h"
1498
1499 * test_io.c (test_flush): Add a debugging printf when the flush
1500 method is called.
1501
1502 * rw_bitmaps.c (ext2fs_read_bitmaps): If the bitmaps are already
1503 read in, return right away.
1504
1505 Sun Feb 1 08:20:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1506
1507 * bitops.h: Don't try to do i386 inline asm functions if the
1508 compiler isn't GCC.
1509
1510 * ext2fs.h: If EXT2_FLAT_INCLUDES is defined, #include e2_types.h,
1511 instead of linux/types.h, and e2_bitops.h instead of
1512 ext2fs/bitops.h.
1513
1514 * icount.c, version.c: Don't #include <et/com_err.h>, as it isn't
1515 necessary.
1516
1517 Sat Jan 17 13:13:31 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1518
1519 * inode.c (ext2fs_open_inode_scan): Initialize the group variables
1520 so that we don't need to call get_next_blockgroup() the
1521 first time around. Saves a bit of time, and prevents us
1522 from needing to assign -1 to current_group (which is an
1523 unsigned value).
1524
1525 * icount.c (insert_icount_el): Cast the estimated number of inodes
1526 from a float to an ino_t.
1527
1528 * alloc.c, alloc_tables.c, badlbocks.c, bb_compat.c, bb_inode.c,
1529 bitmaps.c, bitops.c, block.c, bmap.c, bmove.c, brel_ma.c,
1530 check_desc.c, closefs.c, cmp_bitmaps.c, dblist.c,
1531 dblist_dir.c, dir_iterate.c, dirblock.c, dupfs.c,
1532 expanddir.c, ext2fs.h, fileio.c, freefs.c,
1533 get_pathname.c, getsize.c, icount.c, initialize.c,
1534 inline.c, inode.c, irel_ma.c, ismounted.c, link.c,
1535 lookup.c, mkdir.c, namei.c, native.c, newdir.c,
1536 openfs.c, read_bb.c, read_bb_file.c, rs_bitmap.c,
1537 rw_bitmaps.c, swapfs.c, test_io.c, tst_badblocks.c,
1538 tst_getsize.c, tst_iscan.c, unix_io.c, unlink.c,
1539 valid_blk.c, version.c: If EXT2_FLAT_INCLUDES is
1540 defined, then assume all of the
1541 ext2-specific header files are in a flat directory.
1542
1543 * block.c, bmove.c, dirblock.c, fileio.c: Explicitly cast
1544 all assignments from void * to be compatible with C++.
1545
1546 Tue Jan 6 11:28:15 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
1547
1548 * closefs.c (ext2fs_flush): Add a call to io_channel_flush() to
1549 make sure the contents of the disk are flushed to disk.
1550
1551 Mon Dec 29 14:39:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1552
1553 * dblist.c (ext2fs_add_dir_block): Change new to be new_entry to
1554 avoid C++ namespace clash.
1555
1556 * bitmaps.c (ext2fs_copy_bitmap): Change new to be new_map to
1557 avoid C++ namespace clash.
1558
1559 * ext2fs.h, bb_inode.c, block.c, bmove.c, brel.h, brel_ma.c,
1560 irel.h, irel_ma.c, dblist.c, dblist_dir.c, dir_iterate.c,
1561 ext2fsP.h, expanddir.c, get_pathname.c, inode.c, link.c,
1562 unlink.c: Change private to be priv_data (to avoid C++
1563 namespace clash)
1564
1565 Fri Nov 28 09:26:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1566
1567 * dblist.c (ext2fs_get_num_dirs): Make ext2fs_get_num_dirs more
1568 paranoid about validating the directory counts from the
1569 block group information.
1570
1571 * all files: Don't include stdlib.h anymore; include it in
1572 ext2_fs.h, since that file requires stdlib.h
1573
1574 Thu Nov 20 16:07:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1575
1576 * expanddir.c (ext2fs_expand_dir): Check to make sure the block
1577 bitmap is loaded, and return an error if it is not.
1578 (expand_dir_proc): Only use ext2fs_write_dir_block when
1579 writing a directory block, not when writing out a fresh
1580 indirect block.
1581
1582 Tue Nov 11 22:46:45 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1583
1584 * Makefile.in, tst_getsize.c: Added new file which is used to test
1585 the ext2fs_get_device_size function.
1586
1587 * ext2_err.et.in (EXT2_ET_UNIMPLEMENTED): Added new error code.
1588
1589 Sun Nov 2 20:36:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1590
1591 * ext2fs.h: Make ext2fs_get_mem take an unsigned argument.
1592
1593 * fileio.c (ext2fs_file_get_size, ext2fs_file_set_size,
1594 ext2fs_file_get_fs): New functions added.
1595
1596
1597 Fri Oct 31 12:16:52 1997 <tytso@EDT.MIT.EDU>
1598
1599 * bitops.c (ext2fs_warn_bitmap, ext2fs_warn_bitmap2): Don't call
1600 com_err if OMIT_COM_ERR is defined.
1601
1602 Thu Oct 30 11:33:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1603
1604 * Rename new error codes to _ET_ in them for consistency.
1605
1606 Sat Oct 25 00:06:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1607
1608 * [all files, basically]: Added definition of ext2fs_get_mem,
1609 ext2fs_free_mem, and ext2fs_resize_mem in ext2fs.h, and
1610 changed all library routines to use these wrapper functions.
1611
1612 * dblist.c, mkdir.c: use EXT2_DIR_EXISTS and EXT2_DB_NOT_FOUND
1613 instead of the system error messages.
1614
1615 * ext2_err.et.in: Added new error messages EXT2_DIR_EXISTS and
1616 EXT2_DB_NOT_FOUND
1617
1618 * ext2fs.h: Added function declarations and constants for bmap.c
1619 and fileio.c.
1620
1621 * ext2_err.et.in: Added new error messages EXT2_FILE_RO and
1622 EXT2_ET_MAGIC_EXT2_FILE
1623
1624 * Makefile.in: Added files bmap.c and fileio.c, and temporarily
1625 commented out brel_ma.c and irel_ma.c
1626
1627 * bmap.c: New file which maps a file's logical block number to its
1628 physical block number.
1629
1630 * fileio.c: New file which implements simple file reading and
1631 writing primitives.
1632
1633 * alloc.c (ext2fs_alloc_block): New function which allocates a
1634 block, zeros it, and updates the filesystem accounting
1635 records appropriately.
1636
1637 Wed Oct 22 16:47:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1638
1639 * ext2_err.et.in: Added new error codes: EXT2_NO_MEMORY,
1640 EXT2_INVALID_ARGUMENT, EXT2_BLOCK_ALLOC_FAIL,
1641 EXT2_INODE_ALLOC_FAIL, EXT2_NOT_DIRECTORY
1642
1643 * Change various library files to use these functions instead of
1644 EINVAL, ENOENT, etc.
1645
1646 Mon Oct 20 19:32:40 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1647
1648 * llseek.c: Check HAVE_LLSEEK_PROTOTYPE to see whether or not we
1649 need to declare llseek().
1650
1651 Sun Oct 19 18:56:22 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1652
1653 * Rename io.h to be ext2_io.h (avoid namespace collisions)
1654
1655 * Add #ifdef's for HAVE_SYS_STAT_H and HAVE_SYS_TYPES_H
1656
1657 Fri Oct 3 13:35:59 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1658
1659 * llseek.c (ext2fs_llseek): Fix type error for ext2fs_llseek()
1660
1661 * icount.c (ext2fs_icount_validate):
1662 * bmove.c (process_block): Fix lint error in type for fprintf().
1663
1664 Mon Sep 15 11:45:09 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1665
1666 * inode.c (ext2fs_check_directory): Add support for the callback
1667 to return the error code EXT2_ET_CALLBACK_NOTHANDLED.
1668
1669 Thu Sep 4 12:28:22 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1670
1671 * bitmaps.c (ext2fs_set_bitmap_padding): New function which sets the
1672 padding of the bitmap to be all one's.
1673
1674 Wed Sep 3 14:27:30 1997 Theodore Y. Ts'o <tytso@edt.mit.edu>
1675
1676 * llseek.c: Added missing semicolon to glibc fixup declaration of
1677 llseek().
1678
1679 * bmove.c: Add #include of errno.h
1680
1681 Sat Aug 23 22:47:46 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1682
1683 * Makefile.in (ELF_SO_VERSION): Bump version to be 2.4 since we've
1684 added a new field to the io_channel (app_data).
1685
1686 * io.h: Add a new element to the io_channel structure, app_data.
1687
1688 * initialize.c, openfs.c: Set io->app_data to point at the
1689 filesystem handle.
1690
1691 Thu Aug 14 08:14:17 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1692
1693 * io.h: Change the prototype of ext2fs_llseek() to use int's
1694 instead of unsigned int's.
1695
1696 * llseek.c: Change to allow PIC and !HAVE_LLSEEK. Add a prototype
1697 to make life easer for GNU Libc 2.
1698
1699 * rw_bitmaps.c: On the PowerPC, the big-endian variant of the ext2
1700 filesystem has its bitmaps stored as 32-bit words with bit
1701 0 as the LSB of each word. Thus a bitmap with only bit 0
1702 set would be, as a string of bytes, 00 00 00 01 00 ... To
1703 cope with this, we byte-reverse each word of a bitmap if
1704 we have a big-endian filesystem, that is, if we are *not*
1705 byte-swapping other word-sized numbers.
1706
1707 Mon Aug 11 03:30:48 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1708
1709 * dosio.c: New file to do DOS/BIOS disk accesses.
1710
1711 * namei.c (open_namei): Make pathlen be of type size_t.
1712
1713 * llseek.c: Always #include stdlib.h since it's need to define
1714 size_t.
1715
1716 * io.h: Use errcode_t for magic numbers.
1717
1718 * icount.c (get_icount_el): Use size_t where appropriate
1719
1720 * dupfs.c (ext2fs_dup_handle):
1721 * dblist.c (dir_block_cmp): Use size_t where appropriate.
1722
1723 * read_bb.c (ext2fs_read_bb_inode):
1724 * cmp_bitmaps.c (ext2fs_compare_inode_bitmap): Use blk_t, ino_t
1725 and size_t where appropriate.
1726
1727 * closefs.c (ext2fs_flush): Use dgrp_t instead of int where
1728 appropriate.
1729
1730 * openfs.c (ext2fs_open):
1731 * check_desc.c (ext2fs_check_desc): Use blk_t instead of int where
1732 appropriate.
1733
1734 * rw_bitmaps.c (read_bitmaps):
1735 * irel_ma.c:
1736 * inode.c (ext2fs_write_inode):
1737 * initialize.c (ext2fs_initialize):
1738 * brel_ma.c: Fix to make be 16-bit safe.
1739
1740 * link.c (ext2fs_link):
1741 * unlink.c (ext2fs_unlink):
1742 * lookup.c (lookup_proc):
1743 * ismounted.c (ext2fs_check_if_mounted):
1744 * block.c (xlate_func): Add #pragma argsused for Turbo C.
1745
1746 Sun Aug 10 10:05:22 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1747
1748 * block.c (ext2fs_block_iterate2): Use retval which is a errcode_t
1749 type.
1750
1751 * bitmaps.c (make_bitmap): Use size_t instead of int where
1752 appropriate.
1753
1754 * bb_inode.c (set_bad_block_proc): Add #pragma argsused for Turbo C.
1755
1756 * alloc.c (ext2fs_new_inode): Use ino_t instead of int for the
1757 group number.
1758
1759 * get_pathname.c: Use ino_t instead of int where appropriate.
1760
1761 * ext2fs.h: Make the magic structure element be errcode_t instead
1762 of int.
1763
1764 * alloc.c alloc_tables.c badblocks.c bb_compat.c bb_inode.c
1765 bitmaps.c block.c bmove.c brel_ma.c check_desc.c closefs.c
1766 cmp_bitmaps.c dblist.c dblist_dir.c dir_iterate.c
1767 dirblock.c dupfs.c expanddir.c freefs.c get_pathname.c
1768 icount.c initialize.c inline.c inode.c irel_ma.c link.c
1769 llseek.c lookup.c mkdir.c namei.c newdir.c read_bb.c
1770 read_bb_file.c rs_bitmap.c rw_bitmaps.c swapfs.c
1771 test_io.c tst_badblocks.c tst_iscan.c unix_io.c unlink.c
1772 valid_blk.c version.c: Add an #ifdef for HAVE_UNISTD_H
1773
1774 Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1775
1776 * unix_io.c (unix_read_blk): If ext2fs_llseek() fails, but errno
1777 is zero, then return EXT2_IO_LLSEEK_FAILED.
1778
1779 * ext2_err.et.in: Add a new error code, EXT2_IO_LLSEEK_FAILED.
1780
1781 * Release of E2fsprogs 1.11
1782
1783 Mon Jun 16 23:53:06 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1784
1785 * dblist.c (ext2fs_dblist_count): Added new function which returns
1786 the number of directory blocks in dblist.
1787
1788 Sat Jun 14 01:39:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1789
1790 * unix_io.c (unix_flush): Make the io_channel flush function do a
1791 fsync to flush the kernel buffers to disk.
1792
1793 Wed Jun 11 18:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1794
1795 * inode.c (ext2fs_inode_scan_goto_blockgroup): Fix bug; the
1796 current inode number wasn't being set by the
1797 goto_blockgroup function.
1798
1799 Mon Jun 9 10:45:48 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1800
1801 * bmove.c (ext2fs_move_blocks): New function which takes a bitmap
1802 of blocks which need to be moved, and moves those blocks
1803 to another location in the filesystem.
1804
1805 * rs_bitmap.c (ext2fs_resize_generic_bitmap): When expanding a
1806 bitmap, make sure all of the new parts of the bitmap are
1807 zero.
1808
1809 Sun Jun 8 16:24:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1810
1811 * bitmaps.c (ext2fs_copy_bitmap): Fix bug; the destination bitmap
1812 wasn't being returned to the caller.
1813
1814 * alloc_tables.c (ext2fs_allocate_group_table): Add new function
1815 ext2fs_allocate_group_table() which sets the group tables
1816 for a particular block group. The relevant code was
1817 factored out of ext2fs_allocate_tables().
1818
1819 * dblist.c (make_dblist): Adjust the initial size of the directory
1820 block list to be a bit more realistic (ten plus twice the
1821 number of directories in the filesystem).
1822
1823 Thu May 8 22:19:09 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1824
1825 * badblocks.c (ext2fs_badblocks_list_test): Fix bug where
1826 ext2fs_badblocks_list_test would test the list (and exceed
1827 array boundaries) if there were no bad blocks on the bad
1828 blocks list. (Showed up when user tried: mke2fs -c -b 4096).
1829
1830 Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
1831
1832 * Release of E2fsprogs version 1.10
1833
1834 Thu Apr 24 10:13:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
1835
1836 * alloc_tables.c (ext2fs_allocate_tables): Correctly place the
1837 inode and block bitmaps based on the RAID 0 stride
1838 parameter (which is passed by mke2fs).
1839
1840 * ext2fs.h: Add "stride" parameter to ext2_filsys, to be used by
1841 mke2fs to communicate the stride length to
1842 ext2fs_allocate_tables()
1843
1844 Wed Apr 23 21:50:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
1845
1846 * initialize.c (ext2fs_initialize): Fix to compile under Linux 1.2
1847 systems. (We can't assume that the new filesystem types
1848 are supported.)
1849
1850 Wed Apr 23 18:40:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1851
1852 * alloc_tables.c (ext2fs_allocate_tables): Make sure that we
1853 allocate the inode and block bitmaps inside block group at
1854 all times.
1855
1856 Mon Apr 21 00:06:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1857
1858 * alloc.c (ext2fs_new_block): Fix bug where if goal==0 and the
1859 filesystem has no free blocks, ext2fs_new_block would loop
1860 forever.
1861
1862 * dupfs.c (ext2fs_dup_handle): Duplicate an ext2 filesystem handle
1863
1864 * freefs.c (ext2fs_free_inode_cache): Decrement refcount and only
1865 free if refcount goes to zero.
1866
1867 * inode.c (create_icache): Initialize refcount to 1.
1868
1869 * ext2fsP.h: Added refcount to ext2_inode_cache
1870
1871 * dblist.c (ext2fs_copy_dblist): New function to copy a directory
1872 block list.
1873
1874 * badblocks.c (ext2fs_badblocks_copy): New function to copy a
1875 badblocks structure.
1876
1877 Sun Apr 20 23:19:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1878
1879 * bitmaps.c (ext2fs_copy_bitmap): New function to copy a bitmap.
1880
1881 * unix_io.c, test_io.c (unix_open, test_open): Initialize the
1882 refcount to 1.
1883 (unix_close, test_close): Decrement the refcount and only
1884 close the io_channel if the refcount goes to 0.
1885
1886 * io.h: Add refcount to the io_channel structure. Add new macro
1887 interface io_channel_bumpcount() to bump the refcount.
1888
1889 Thu Apr 17 20:25:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1890
1891 * inode.c (ext2fs_read_inode, ext2fs_write_inode): Use the inode
1892 cache in the filesystem handle, instead of the inode cache
1893 in a static variable.
1894
1895 * freefs.c: Added static function to free the inode cache (called by
1896 ext2fs_free).
1897
1898 * ext2fsP.h: Added definition of the ext2_inode_cache structures.
1899
1900 * ext2fs.h: Added pointer to the inode_cache structure.
1901
1902 * block.c (block_iterate_ind, block_iterate_dind,
1903 block_iterate_tind): If there are holes in the indirect,
1904 doubly indirect, or triply indirect blocks, increment the
1905 block count field automatically.
1906
1907 Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1908
1909 * Release of E2fsprogs version 1.09
1910
1911 Mon Apr 14 20:38:56 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1912
1913 * version.c (ext2fs_parse_version_string): Check the passed in
1914 version string (instead of the hard-coded one).
1915
1916 * alloc_tables.c (ext2fs_allocate_tables): If the last block is
1917 greater filesystem size, clamp it to prevent allocating a
1918 block or inode bitmap beyond the filesystem.
1919
1920 * initialize.c (ext2fs_initialize): Fix bug where the metatdata
1921 overhead calculation was accidentally removed.
1922
1923 Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1924
1925 * Release of E2fsprogs version 1.08
1926
1927 Thu Apr 10 13:15:15 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1928
1929 * dblist.c (ext2fs_set_dir_block): New function which sets the
1930 block of a dblist entry, given the directory inode and
1931 blockcnt.
1932
1933 Sat Apr 5 12:42:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1934
1935 * alloc_tables.c (ext2fs_allocate_tables): Allocate the bitmap and
1936 inode bitmaps at staggered locations across the block
1937 groups, to avoid concentrating the bitmaps on a small
1938 number of disks when using striped RAID arrays.
1939
1940 * initialize.c (ext2fs_initialize): By default, choose the maximum
1941 possible number of blocks per group (based on the size of
1942 the bitmaps in the blocksize).
1943
1944 Fri Apr 4 11:28:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1945
1946 * initialize.c (ext2fs_initialize): Add support for
1947 EXT2_COMPAT_SPARSE_SUPER feature.
1948
1949 * closefs.c (ext2fs_bg_has_super): New function to determine
1950 whether or a particular block group should have a
1951 superblock and block group descriptor. Used for the
1952 EXT2_COMPAT_SPARSE_SUPER feature is turned on.
1953 (ext2fs_flush): Check ext2fs_bg_has_super to see whether
1954 or not the superblock should be written out for the block
1955 group.
1956
1957 * ext2fs.h (EXT2_COMPAT_SPARSE_SUPER): Define compatibility flag
1958 for sparse duplicate superblocks.
1959
1960 * version.c (ext2fs_get_library_version): New function which
1961 returns the library version.
1962
1963 * version.c (ext2fs_parse_version_string): New function which
1964 parses a version string and returns a version number,
1965 so application programs can compare version numbers as
1966 integers.
1967
1968 Wed Mar 26 00:43:52 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1969
1970 * icount.c (ext2fs_create_icount): Change function so that it also
1971 takes a new argument which contains a "hint" icount
1972 structure. This "hint" icount allows the create function
1973 to set up the sorted list in advance. This reduces
1974 significantly the amount of data moving needed to insert
1975 these inodes into the list later.
1976
1977 * icount.c (ext2fs_icount_validate): New function which validates
1978 that the icount structure's rep invariant.
1979
1980 * icount.c (get_icount_el): Completely revamped implementation
1981 to subsume put_icount_el(). Put_icount_el() used to
1982 use an O(N) implementation to insert in the middle
1983 of the icount list. It now uses a O(ln N) to search
1984 for where the icount should be inserted, and then uses
1985 a memcpy to move the list down (instead of a for loop).
1986
1987 * icount.c (ext2fs_icount_fetch, ext2fs_icount_store,
1988 ext2fs_icount_increment, ext2fs_icount_decrement): Check
1989 to see if the inode is within bounds; if it isn't, return
1990 EINVAL.
1991
1992 * bitops.h (ext2fs_test_generic_bitmap): Fix error message given
1993 when a bad inode number is passed to test_generic_bitmap
1994 to be EXT2FS_TEST_ERROR instead of the wrong
1995 EXT2FS_UNMARK_ERROR.
1996
1997 Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
1998
1999 * Release of E2fsprogs version 1.07
2000
2001 Sun Mar 2 16:46:18 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2002
2003 * Makefile.in (ELF_VERSION): Change version to be 2.2
2004
2005 Tue Feb 11 14:54:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2006
2007 * alloc.c (ext2fs_get_free_blocks): Change routine to use
2008 ext2fs_fast_test_block_bitmap_range().
2009
2010 * bitops.h (ext2fs_fast_test_block_bitmap_range,
2011 ext2fs_test_block_bitmap_range: New inline functions which
2012 test to see whether a contiguous range of blocks is
2013 available.
2014
2015 Thu Feb 6 10:00:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2016
2017 * badblocks.c (ext2fs_badblocks_list_create): Rename sybmols to use
2018 use ext2fs_badblocks_* instead of badblocks_*
2019
2020 * bb_compat.c: New file which translates between old badblocks_*()
2021 names to ext2fs_badblocks_*()
2022
2023 * unlink.c (ext2fs_unlink): New file, moved ext2fs_unlink() from
2024 link.c (since e2fsck doesn't use ext2fs_unlink()).
2025
2026 * rs_bitmap.c (ext2fs_resize_generic_bitmap): New file, contains
2027 bitmap resizing routine moved from bitmaps.c, since e2fsck
2028 doesn't need to use this function.
2029
2030 * lookup.c (ext2fs_lookup): Moved ext2fs_lookup to its own file,
2031 since e2fsck only needs ext2fs_lookup.
2032
2033 Mon Feb 3 10:11:40 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2034
2035 * inode.c (ext2fs_open_inode_scan): Set fs->badblocks if it is not
2036 already set; this is needed so that programs like dump
2037 which use the inode scan functions will deal with
2038 filesystems that have bad blocks in the inode table.
2039
2040 Sun Feb 2 00:17:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2041
2042 * ext2fs.h (struct_badblocks_list, struct_badblocks_iterate):
2043 Moved to ext2fsP.h, since it doesn't need to be part of
2044 the public interface.
2045
2046 * dir_iterate.c: Move ext2_dir_iterate out of namei.c.
2047
2048 Sat Feb 1 10:14:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2049
2050 * dblist.c (ext2fs_get_num_dirs): New file, which implements a
2051 directory block list abstraction. (Code moved from
2052 e2fsck).
2053
2054 * ext2fs.h, inode.c: Moved definition of ext2_struct_inode_scan to
2055 to inode.c (since no one else should be peeking inside it!)
2056
2057 * valid_blk.c (ext2_inode_has_valid_blocks): New function.
2058
2059 * openfs.c (ext2fs_open): Check the feature set in the ext2
2060 superblock, and refuse to open filesystems if they contain
2061 incompatible features. (Can be overriden with the
2062 EXT2_FLAG_FORCE
2063
2064 Sun Jan 12 11:31:46 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2065
2066 * block.c (ext2fs_block_iterate2): Added new function
2067 ext2fs_block_iterate2 which changes the function
2068 signature of the callback function to include the
2069 referencing block and offset.
2070
2071 * inode.c (ext2fs_inode_scan_goto_blockgroup): Added new function
2072 ext2fs_inode_scan_goto_blockgroup which allows an
2073 application to jump to a particular block group while
2074 doing an inode scan.
2075
2076 Wed Jan 1 23:50:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
2077
2078 * dirblock.c: Include string.h, since we use memcpy().
2079
2080 Tue Dec 3 12:27:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2081
2082 * getsize.c (ext2fs_get_device_size): The ioctl BLKGETSIZE returns
2083 a long not an int; this doesn't matter on i386 machines,
2084 but it does on Alpha's.
2085
2086 Fri Nov 29 20:57:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2087
2088 * inode.c (ext2fs_write_inode, ext2fs_read_inode): If the inode
2089 table pointer is NULL, then return an error indicating
2090 that the inode table is missing.
2091 (get_next_blockgroup, get_next_blocks,
2092 ext2fs_get_next_inode): Don't treat a missing inode table
2093 as permanent error. Return MISSING_INODE_TABLE, but as an
2094 advisory error code, much like BAD_BLOCK_IN_INODE_TABLE.
2095
2096 * rw_bitmaps.c (ext2fs_write_block_bitmap,
2097 ext2fs_write_inode_bitmap): If the inode or block bitmap
2098 block is zero, then don't write out the inode or block
2099 bitmap. The idea here is to avoid stomping on the
2100 superblock.
2101 (read_bitmaps): If the inode or block bitmap block is
2102 zero, then fill in that portion of the inode or block
2103 bitmap with all zeros.
2104
2105 * inode.c (ext2fs_get_next_inode): Fix bug in handling of bad
2106 blocks in inode table when the inode table size is
2107 non-standard (and can therefore span blocks).
2108
2109 Tue Oct 29 20:13:14 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2110
2111 * alloc.c (ext2fs_new_block): Fix fencepost error in
2112 ext2fs_new_block; make sure we don't try to allocate the
2113 first block beyond the end of the filesystem.
2114
2115 Mon Oct 14 11:00:48 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2116
2117 * inode.c (check_for_inode_bad_blocks): New function called by
2118 get_next_blocks() to avoid reading in bad blocks marked in
2119 fs->badblocks. Inodes located in bad blocks are returned
2120 by ext2fs_get_next_inode() returns the error code
2121 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE.
2122
2123 * alloc_tables.c (ext2fs_allocate_tables): New function which
2124 performs the part of mke2fs's job of allocating the
2125 filesystem tables.
2126
2127 * test_io.c (test_close): IO manager which is used for testing
2128 purposes.
2129
2130 Sun Oct 13 04:31:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2131
2132 * inode.c (ext2fs_get_next_inode): Separate out the function of
2133 setting up for a new block group to get_next_blockgroup().
2134 Separate out the function of reading in blocks of the
2135 inode table to get_next_blocks().
2136
2137 * ext2fs.h: Add the badblocks list to the ext2_filsys entry
2138
2139 * badblocks.c (badblocks_list_add, badblocks_list_test): Add
2140 blocks to the badblock list in sorted order. This allows
2141 badblocks_list_test to be coded using a binary search for
2142 speed.
2143
2144 Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2145
2146 * Release of E2fsprogs version 1.06
2147
2148 Mon Oct 7 00:44:17 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2149
2150 * ext2fs.h, block.c, closefs.c, dirblock.c, inode.c, native.c,
2151 open.c: Change EXT2_SWAP to EXT2_FLAG_SWAP for
2152 consistency's sake.
2153
2154 * closefs.c (ext2fs_flush): If the flag EXT2_MASTER_SB_ONLY is
2155 set, then only write out the master superblock.
2156
2157 Sun Oct 6 21:45:26 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2158
2159 * block.c (ext2fs_block_iterate): Fixed bug which caused
2160 block_iterate to fail to handle HURD created filesystems;
2161 it tested the inode translator field before the inode was
2162 loaded.
2163
2164 Tue Sep 17 14:08:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2165
2166 * initialize.c (ext2fs_initialize): Make sure the description for
2167 the inode bitmap is set correctly.
2168
2169 * bitmaps.c (ext2fs_allocate_generic_bitmap): Fix minor type typo.
2170
2171 Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2172
2173 * Release of E2fsprogs version 1.05
2174
2175 Sat Sep 7 07:36:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2176
2177 * initialize.c: Override the kernel's idea of default
2178 checkinterval from 0 (never) to 180 days.
2179
2180 Wed Aug 28 03:20:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2181
2182 * namei.c (ext2fs_namei_follow): New function which follows
2183 symbolic link (if any) at the target.
2184
2185 Tue Aug 27 01:48:43 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2186
2187 * inode.c (ext2fs_read_inode, ext2fs_write_inode): Add support
2188 for shortcut function fs->read_inode() and fs->write_inode().
2189 Added inode_cache to reduce CPU time spent in doing
2190 byte swapping.
2191
2192 * swapfs.c (ext2fs_swap_super): Swap the new fields in a V2
2193 superblock.
2194
2195 * namei.c (ext2fs_follow_link): New function.
2196 (ext2fs_namei): Extended to have support for chasing
2197 symbolic links. ext2fs_namei() still returns an inode
2198 which is a symbolic link. Symbolic links are only chased
2199 while resolving the containing directory. To chase
2200 symbolic links of the final result, use
2201 ext2fs_follow_link().
2202
2203 Mon Aug 26 23:46:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2204
2205 * ext2_err.et.in: Added new error code EXT2_ET_SYMLINK_LOOP.
2206
2207 * bitops.h (ext2fs_set_bit, ext2fs_celar_bit): Use asm inlines
2208 provided by Pete A. Zaitcev (zaitcev@lab.sun.mcst.ru).
2209
2210 Thu Aug 22 00:40:18 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2211
2212 * initialize.c (ext2fs_initialize): On systems where the byte
2213 order is not i386 compatible, set the swap_byte flag.
2214
2215 * inode.c (inocpy_with_swap): Check to see if inode contains a
2216 fast symlink before swapping the inode block fields. This
2217 required adding a new argument to inocpy_with_swap to
2218 determine whether the mode field is in host order or not.
2219
2220 Wed Aug 21 00:45:42 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2221
2222 * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit): On
2223 the sparc, if EXT2_STD_BITOPS set, use the standard
2224 i386-compatible bitmask operations, instead on the
2225 non-standard native bitmask operators.
2226
2227 Fri Aug 9 11:11:35 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2228
2229 * block.c (ext2fs_block_iterate): Cause block iterator to return
2230 the HURD translator block (along with everything else).
2231 If the flag BLOCK_FLAG_DATA_ONLY is passed to the block
2232 iterator, then don't return any meta data blocks
2233 (including the HURD translator).
2234
2235 Wed Jul 17 17:13:34 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2236
2237 * gen_uuid.c: New file, which generates DCE-compatible UUIDs.
2238
2239 * uuid.c: New file, containing UUID utility functions.
2240
2241 Tue Jul 16 10:19:16 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2242
2243 * ext2fs.h: Add a definition of the "real" ext2 superblock.
2244
2245 Fri May 24 14:54:55 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2246
2247 * ext2fs.h: Fix erroneous ino_t type used in block_bitmap type.
2248
2249 Sun May 19 15:39:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2250
2251 * openfs.c (ext2fs_open): If the blocksize in the superblock is
2252 zero, return the error EXT2_ET_CORRUPT_SUPERBLOCK, since
2253 that's a basic value that must be correct for the rest of
2254 the library to work.
2255
2256 * ext2_err.et.in (EXT2_ET_CORRUPT_SUPERBLOCK): Added new error
2257 code.
2258
2259 Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
2260
2261 * Release of E2fsprogs version 1.04
2262
2263 Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
2264
2265 * Release of E2fsprogs version 1.03
2266
2267 Tue Mar 26 12:06:32 1996 <tytso@rsts-11.mit.edu>
2268
2269 * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit):
2270 Change the m68k bit numbering for bitmasks to match with
2271 the bit numbering used by all other ext2 implementations.
2272
2273 Thu Mar 7 03:37:00 1996 <tytso@rsts-11.mit.edu>
2274
2275 * inode.c (ext2fs_get_next_inode, ext2fs_close_inode_scan,
2276 ext2fs_open_inode_scan): Support dynamically-sized inodes.
2277
2278 Wed Mar 6 12:26:29 1996 <tytso@rsts-11.mit.edu>
2279
2280 * inode.c (ext2fs_read_inode, ext2fs_write_inode): Support
2281 dynamically-sized inodes.
2282
2283 * openfs.c (ext2fs_open): Allow dynamic revision filesystem to be
2284 loaded.
2285
2286 Tue Mar 5 03:49:37 1996 <tytso@rsts-11.mit.edu>
2287
2288 * initialize.c (ext2fs_initialize): Catch an error condition where
2289 the passed in size is *really* too small.
2290
2291 * alloc.c (ext2fs_new_inode):
2292 * ext2fs.h (EXT2_FIRST_INODE): Add support for dynamic revision to
2293 get first inode.
2294
2295 Wed Feb 21 15:56:17 1996 <tytso@rsts-11.mit.edu>
2296
2297 * getsize.c (ext2fs_get_device_size): Open the device read-only
2298 when trying to determine its size.
2299
2300 Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
2301
2302 * Release of E2fsprogs version 1.02
2303
2304 Sat Dec 9 09:57:50 1995 <tytso@rsts-11.mit.edu>
2305
2306 * rw_bitops.c (ext2fs_write_block_bitmap):
2307 * bitops.c (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
2308 * bitops.h (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
2309 Rename {test,set,clear}_bit to ext2fs_{test,set,clear}_bit,
2310 to avoid conflicts with with kernel include files. Also
2311 rename ADDR and CONST_ADDR to EXT2FS_ADDR and
2312 EXT2FS_CONST_ADDR.
2313
2314 Thu Oct 26 12:09:16 1995 <tytso@rsts-11.mit.edu>
2315
2316 * ext2_err.et: Updated message in EXT2_ET_BASE to say version 0.5c
2317
2318 * swapfs.c (ext2fs_swap_super): Put an #ifdef check around
2319 s_def_resuid and s_def_resgid for backwards compatibility.
2320
2321 Fri Oct 20 23:33:31 1995 <tytso@rsts-11.mit.edu>
2322
2323 * bitops.h: Added #ifdef's for Sparc.
2324
2325 Wed Sep 6 22:14:46 1995 <tytso@rsts-11.mit.edu>
2326
2327 * getsize.c: #include <sys/ioctl.h> under Linux to pick up ioctl()
2328 declaration
2329
2330 * closefs.c: #include <string.h> to pick up memset() declaration
2331
2332 Mon Sep 4 21:45:29 1995 Remy Card <card@bbj>
2333
2334 * Makefile.in: Added support for BSD shared libraries.
2335
2336 * initialize.c (ext2fs_initialize): Correctly set the s_creator_os
2337 flag.
2338
2339 Mon Sep 4 09:55:30 1995 <tytso@rsts-11.mit.edu>
2340
2341 * unix_io.c (unix_open): Add a double check; if the passed in name
2342 is NULL, return EXT2_ET_BAD_DEVICE_NAME.
2343
2344 * ext2_err.et (EXT2_ET_BAD_DEVICE_NAME): Added new error code
2345
2346 Wed Aug 16 15:44:10 1995 <tytso@rsts-11.mit.edu>
2347
2348 * inode.c (ext2fs_check_directory): Use LINUX_S_ISDIR instead of
2349 S_ISDIR.
2350
2351 Tue Aug 15 13:08:36 1995 <tytso@rsts-11.mit.edu>
2352
2353 * getsize.c (ext2fs_get_device_size): Add support for reading the
2354 partition size from a BSD disk label.
2355
2356 Thu Aug 10 09:33:26 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2357
2358 * getsize.c (ext2fs_get_device_size): New function that determins
2359 the size of a device. Used by mke2fs and e2fsck.
2360
2361 Sat Aug 12 03:09:54 1995 Remy Card <card@bbj>
2362
2363 * Makefile.in (install): Install static libraries in $(ulibdir)
2364 (/usr/lib on Linux) instead of $(libdir) (/lib on Linux).
2365
2366 Wed Aug 9 17:04:23 1995 Theodore Y. Ts'o <tytso@dcl>
2367
2368 * bitmaps.c (ext2fs_free_inode_bitmap, ext2fs_free_block_bitmap):
2369 Move these functions to freefs.c.
2370
2371 * closefs.c (ext2fs_flush): If swapping blocks, clear the group
2372 descriptors shadow memory to keep purify quiet. (This
2373 also has the nice benefit that the unused portion of the
2374 shadow descriptors are zeroed out.)
2375
2376 * dirblock.c (ext2fs_write_dir_block): We need to use
2377 dirent->rec_len *before* it's byteswapped to find the
2378 location of the next directory structure!
2379
2380 * alloc.c (ext2fs_new_inode): Fix bug which could potentially
2381 cause ext2fs_new_inode to loop infinitely if we're trying
2382 to allocate an inode in group #0 and there are no free
2383 inodes at all in the system.
2384
2385 * closefs.c: #include <errno.h> if it exists.
2386
2387 Sun Aug 6 13:27:50 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2388
2389 * ext2fs.h (BLOCK_FLAG_HOLE): Added new definition for
2390 BLOCK_FLAG_APPEND. Added documentation for the block
2391 interator flags.
2392
2393 Sat Aug 5 11:44:05 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2394
2395 * Makefile.in (DLL_INSTALL_DIR, ELF_INSTALL_DIR): Set the
2396 installation directories correctly.
2397
2398 Tue Jul 18 09:27:38 1995 <tytso@rsx-11.mit.edu>
2399
2400 * namei.c (process_dir_block):
2401 * mkdir.c (ext2fs_mkdir):
2402 * expanddir.c (expand_dir_proc): Use ext2fs_{read,write}_dir_block
2403 to read/write the directory block.
2404
2405 * dirblock.c (ext2fs_read_dir_block), ext2fs_write_dir_block): New
2406 file containing functions for reading and writing
2407 directory blocks (byte swapping if necesssary)
2408
2409 * block.c (block_iterate_ind, block_iterate_dind,
2410 block_iterate_tind): Byte swap the block addresses if
2411 EXT2_SWAP_BYTES is set (and swap them back before writing
2412 them out.)
2413
2414 * inode.c (inocpy_with_swap): New function.
2415 (ext2fs_get_next_inode, ext2fs_read_inode, ext2fs_write_inode):
2416 Call inocpy_with_swap if EXT2_SWAP_BYTES if set.
2417
2418 * closefs.c (ext2fs_flush): If EXT2_SWAP_BYTES is set, then swap
2419 the superblock and group descriptors before writing it out.
2420
2421 * openfs.c (ext2fs_open): If the magic number is byte-swapped,
2422 then set the EXT2_SWAP_BYTES and byte-swap the superblock
2423 and group descriptors.
2424
2425 * swapfs.c (ext2fs_swap_super, ext2fs_swap_group_desc): New functions
2426 to desp ext2 filesystem structures.
2427
2428 * bitops.c (set_bit, clear_bit, test_bit): Use modifications
2429 supplied by Pete A. Zaitcev so that the C language
2430 versions of these functions are more portable. They will
2431 now work on both little and big endian systems, and the
2432 assumption that 32-bit integers are used is gone.
2433
2434 * bitops.h (ext2_swab16, ext2_swab32): Added new functions for
2435 doing byte swapping.
2436
2437 * ext2fs.h (EXT2_SWAP_BYTES): Add new flag which indicates that
2438 byte swapping should take place.
2439
2440 Sun Jul 16 06:21:43 1995 <tytso@rsx-11.mit.edu>
2441
2442 * Makefile.in, cmp_bitmaps.c (ext2fs_compare_block_bitmap_end,
2443 ext2fs_compare_inode_bitmap_end): Added new file
2444 containing routines to compare bitmaps.
2445
2446 * ext2_err.et (EXT2_ET_NEQ_BLOCK_BITMAP, EXT2_ET_NEQ_INODE_BITMAP):
2447 Added new error codes.
2448
2449 Sat Jul 15 04:23:37 1995 <tytso@rsx-11.mit.edu>
2450
2451 * inode.c (ext2fs_get_next_inode): Don't check scan->inode_buffer;
2452 if the magic number is correct, it will be allocated.
2453
2454 Fri Jul 14 19:02:59 1995 <tytso@rsx-11.mit.edu>
2455
2456 * block.c (block_iterate_ind, block_iterate_dind,
2457 block_iterate_tind): Don't recompute block_nr each loop;
2458 just increment it! Factor check of BLOCK_FLAG_APPEND out
2459 of the loop. Factor mask of BLOCK_CHANGED into changed
2460 variable out of the loop. (block_iterate_ind, in
2461 particular, gets called a lot, so every little
2462 optimization helps.)
2463
2464 Thu Jul 13 08:02:45 1995 <tytso@rsx-11.mit.edu>
2465
2466 * block.c (block_iterate_ind, block_iterate_dind,
2467 block_iterate_tind): Precompute limit of loop to speed up
2468 block_iterate_ind and company.
2469
2470 * bitops.h (ext2fs_fast_mark_block_bitmap,
2471 ext2fs_fast_unmark_block_bitmap, ext2fs_fast_test_block_bitmap,
2472 ext2fs_fast_mark_inode_bitmap, ext2fs_fast_unmark_inode_bitmap,
2473 ext2fs_fast_test_inode_bitmap): Add fast version of these
2474 functions, which don't do range checking.
2475
2476 * bitops.h (ext2fs_get_block_bitmap_start,
2477 ext2fs_get_inode_bitmap_start, ext2fs_get_block_bitmap_end,
2478 ext2fs_get_inode_bitmap_end): Add new accessor functions
2479 which return the start and end points of the bitmaps.
2480
2481 Tue Jul 11 18:59:41 1995 <tytso@rsx-11.mit.edu>
2482
2483 * llseek.c (ext2_llseek): If the offset is small enough, use lseek
2484 instead of llseek. The errno if the offset is too large
2485 and lseek is not supported should be EINVAL, not -EINVAL.
2486
2487 Thu Jun 15 23:43:02 1995 Remy Card <card@bbj>
2488
2489 * Makefile.in: Added support for ELF shared libraries.
2490 Fixed typos in the compilation rules.
2491 (distclean): Added Makefile.
2492
2493 * llseek.c (llseek): New function, if llseek() does not exist in the
2494 C library.
2495 (ext2_llseek): Changed to call llseek().
2496
2497 Mon Jun 12 08:29:07 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2498
2499 * ext2fs.h: Use __u32 to define blk_t, instead of unsigned long.
2500
2501 Sun Jun 11 15:02:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2502
2503 * mkdir.c (ext2fs_mkdir): Use LINUX_S_IFDIR instead of S_IFDIR.
2504
2505 * ext2fs.h (LINUX_S_IFDIR): Define a linux specific versions of
2506 the S_*, which are normally defined in <sys/stat.h>. This
2507 allows us to compile e2fsprogs on a non-Linux system,
2508 which may have a different value for S_IFDIR.
2509
2510 Sat Jun 10 23:47:05 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
2511
2512 * bitops.c (clear_bit, set_bit): Remove calls to cli() and sti();
2513 this is a user-mode application!
2514
2515 Thu Jun 8 13:13:22 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
2516
2517 * llseek.c: Put the include of <linux/unistd.h> inside the #ifdef
2518 __linux__ so that non-linux systems won't see it.
2519
2520 * alloc.c: Include <errno.h> if possible.
2521 * badblocks.c: Ditto.
2522 * bb_inode.c: Ditto.
2523 * bitmaps.c: Ditto.
2524 * block.c: Ditto.
2525 * expanddir.c: Ditto.
2526 * get_pathname.c: Ditto.
2527 * initialize.c: Ditto.
2528 * inode.c: Ditto.
2529 * llseek.c: Ditto.
2530 * mkdir.c: Ditto.
2531 * namei.c: Ditto.
2532 * newdir.c: Ditto.
2533 * openfs.c: Ditto.
2534 * rw_bitmaps.c: Ditto.
2535 * unix_io.c: Ditto.
2536
2537 * Makefile.in: Rewritten to conform to GNU coding standards and
2538 support separate compilation directories.
2539
2540 Thu May 11 04:13:12 1995 <tytso@rsx-11.mit.edu>
2541
2542 * initialize.c (ext2fs_initialize): Don't allow more than one
2543 bitmaps's worth of inodes in a group.
2544
2545 Sat Mar 11 14:07:11 1995 Theodore Y. Ts'o <tytso@localhost>
2546
2547 * llseek.c (ext2_llseek): Added error checking to the llseek()
2548 compat code to protect against overflow. This only
2549 applies to 1.0 and early 1.1 kernels, which don't support
2550 the llseek() system call.
2551
2552 Thu Nov 24 16:29:00 1994 Theodore Y. Ts'o (tytso@rt-11)
2553
2554 * unix_io.c (unix_open): Initialize the read_error and write_error
2555 io_channel pointers to be null.
2556
2557 * bb_inode.c (clear_bad_block_proc): If an illegal block number is
2558 found, clear it but don't try to update the filesystem
2559 accounting information, since that's hopeless anyway.
2560
2561 * block.c (bloblock_iterate_ind, bloblock_iterate_dind,
2562 bloblock_iterate_tind): Check to see if the indirect blocks are
2563 valid before trying to read them.
2564
2565 * ext2_err.et (EXT2_ET_BAD_IND_BLOCK, EX2_ET_BAD_DIND_BLOCK,
2566 EXT2_ET_BAD_TIND_BLOCK): Add new error codes.
2567
2568 * bitops.h (ext2fs_mark_block_bitmap, ext2fs_unmark_block_bitmap,
2569 ext2fs_test_block_bitmap, ext2fs_mark_inode_bitmap,
2570 ext2fs_unmark_inode_bitmap, ext2fs_test_inode_bitmap): If an
2571 illegal block or inode number is passed in, return instead
2572 of trying to test, set, or clear the bit.
2573
2574 Mon Nov 7 21:32:33 1994 Remy Card <card@bbj>
2575
2576 * Makefile: Added a dummy install target in case shared libraries
2577 are not built.
2578
2579 Mon Oct 24 14:11:44 1994 (tytso@rsx-11)
2580
2581 * bitmaps.c (ext2fs_allocate_block_bitmap): Fix calculation of how
2582 the real last block of the bitmap should be calculated.
2583
2584 Wed Sep 7 10:05:36 1994 (tytso@rsx-11)
2585
2586 * bitmaps.c (ext2fs_fudge_inode_bitmap_end,
2587 ext2fs_fudge_block_bitmap_end, ext2fs_clear_inode_bitmap,
2588 ext2fs_clear_block_bitmap, ext2fs_free_inode_bitmap,
2589 ext2fs_free_block_bitmap): Add magic number checking for
2590 the inode and block bitmaps.
2591
2592 * bitmaps.c (ext2fs_allocate_block_bitmap): Fix to set the correct
2593 magic number for a block bitmap instead of an inode bitmap.
2594
2595 * inode.c (ext2fs_close_inode_scan, ext2fs_get_next_inode): Add
2596 magic number checking for the inode_scan structure.
2597
2598 * badblocks.c (badblocks_list_free, badblocks_list_add,
2599 badblocks_list_test, badblocks_list_iterate_begin,
2600 badblocks_list_iterate, badblocks_list_iterate_end): Add
2601 magic number checking for the badblocks_list and
2602 badblocks_iterate structures.
2603
2604 * ext2_err.et (EXT2_ET_MAGIC_UNIX_IO_CHANNEL):
2605 * unix_io.c (unix_open, unix_close, unix_set_blksize, unix_read_blk,
2606 unix_write_blk, unix_flush): Add magic number checking
2607 both for io_channel structure and unix_private_data
2608 structure.
2609
2610 * openfs.c (ext2fs_open): Add check for io_manager structure's
2611 magic number.
2612
2613 * rw_bitmaps.c (ext2fs_write_inode_bitmap, ext2fs_write_block_bitmap,
2614 ext2fs_read_inode_bitmap, ext2fs_read_block_bitmap,
2615 ext2fs_read_bitmaps, ext2fs_write_bitmaps):
2616 * read_bb.c (ext2fs_read_bb_inode):
2617 * read_bb_file.c (ext2fs_read_bb_FILE):
2618 * newdir.c (ext2fs_new_dir_block):
2619 * namei.c (ext2fs_dir_iterate, ext2fs_lookup, ext2fs_namei):
2620 * link.c (ext2fs_link, ext2fs_unlink):
2621 * inode.c (ext2fs_open_inode_scan, ext2fs_read_inode,
2622 ext2fs_write_inode, ext2fs_get_blocks,
2623 ext2fs_check_directory):
2624 * get_pathname.c (ext2fs_get_pathname):
2625 * expanddir.c (ext2fs_expand_dir):
2626 * block.c (ext2fs_block_iterate):
2627 * bitmaps.c (ext2fs_allocate_inode_bitmap,
2628 ext2fs_allocate_block_bitmap):
2629 * bb_inode.c (ext2fs_update_bb_inode):
2630 * alloc.c (ext2fs_new_inode,ext2fs_new_block,ext2fs_get_free_blocks):
2631 * check_desc.c (ext2fs_check_desc):
2632 * closefs.c (ext2fs_close, ext2fs_flush):
2633 * freefs.c (ext2fs_free): Add check for ext2_filsys magic number.
2634
2635 * Makefile:
2636 * ext2fs.h:
2637 * openfs.c:
2638 * check_desc.c (ext2fs_check_desc): Move ext2fs_check_desc from
2639 openfs.c into its own file.
2640
2641 * ext2fs.h (EXT2_CHECK_MAGIC): Added macro for checking for
2642 structure magic numbers.
2643
2644 * closefs.c (ext2fs_flush): Folded in Remy Card's changes to clear
2645 the EXT2_VALID_FS flag in the backup superblock blocks, so that if
2646 someone uses the -b option to specify the use of the backup
2647 superblock --- this usually means that the main superblock is
2648 toast. :-)
2649
2650 * ext2fs.h:
2651 * ext2_err.et (EXT2_ET_REV_TOO_HIGH):
2652 * openfs.c (ext2fs_open): Folded in Remy Card's changes to add a
2653 revision level to the superblock.
2654
2655 Sun Aug 21 00:50:08 1994 Theodore Y. Ts'o (tytso@rt-11)
2656
2657 * ext2fs.h:
2658 * bitmaps.c:
2659 * bitops.c
2660 * bitops.h:
2661 * openfs.c:
2662 * initialize.c: Completely revamped the inode and block bitmap
2663 structures, so that they can be better chance of being extensible
2664 in a shared library. They are now their own type, instead of
2665 being a char *. Also, the function signatures of
2666 ext2fs_test_block_bitmap, ext2fs_mark_block_bitmap,
2667 ext2fs_unmark_block_bitmap, ext2fs_test_inode_bitmap,
2668 ext2fs_mark_inode_bitmap, and ext2fs_unmark_inode_bitmap were
2669 changed to eliminate the ext2_filsys argument, since it is no
2670 longer necessary.
2671
2672 Wed Aug 17 21:46:44 1994 Remy Card (card@bbj)
2673
2674 * unix_io.c (unix_read_blk and unix_write_blk): use the llseek
2675 system call if available.
2676
2677 * llseek.c: new file. This is the stub calling the llseek system
2678 call which allows supports for 2GB+ file systems.
2679
2680 * initialize.c (ext2fs_initialize): Ext2fs_initialize now stores
2681 the creator operating system.
2682
2683 Wed Aug 17 10:03:24 1994 Theodore Y. Ts'o (tytso@rt-11)
2684
2685 * initialize.c (ext2fs_initialize): Ext2fs_initialize now sets up
2686 the group descriptor statistics in addition to everything else.
2687 This relieves mke2fs of the responsibility of doing it.
2688
2689 * bitops.c, bitops.h: Add assembly inline functions for the 68000.
2690 Added a new #define, _EXT2_HAVE_ASM_BITOPS_ to control whether or
2691 not the generic C function equivalents should be included or not.
2692
2693 * openfs.c (ext2fs_open): If a superblock is specified, then use
2694 the backup group descriptors that go along with this superblock,
2695 instead of using the primary group descriptors. This allows
2696 e2fsck to recover filesystems where the primary group descriptors
2697 have been trashed.
2698
2699