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