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