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