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