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