Changeset 0af6afa


Ignore:
Timestamp:
Apr 5, 2007, 5:10:20 PM (18 years ago)
Author:
Joe Ciccone <jciccone@…>
Branches:
clfs-1.2, clfs-2.1, clfs-3.0.0-systemd, clfs-3.0.0-sysvinit, master, systemd, sysvinit
Children:
2085aed
Parents:
32c37aa8
Message:

Update the silo fixes patch so silo builds with newer versions of bash.

Files:
2 edited
1 moved

Legend:

Unmodified
Added
Removed
  • BOOK/general.ent

    r32c37aa8 r0af6afa  
    33<!ENTITY month "04"> <!-- Use two digits -->
    44<!ENTITY month_name "April">
    5 <!ENTITY day "02"> <!-- Use two digits -->
     5<!ENTITY day "05"> <!-- Use two digits -->
    66<!ENTITY year "2007"> <!-- Use four digits -->
    77
  • BOOK/patches.ent

    r32c37aa8 r0af6afa  
    265265<!ENTITY kbd-sparc_kbdrate-patch-size "1 KB">
    266266
    267 <!ENTITY silo-fixes-patch "silo-&silo-version;-fixes-2.patch">
    268 <!ENTITY silo-fixes-patch-md5 "f3225c019b17f1d628f5d55b7a7aee1e">
     267<!ENTITY silo-fixes-patch "silo-&silo-version;-fixes-3.patch">
     268<!ENTITY silo-fixes-patch-md5 "e5a0ad2cb470ed1c895a731f2316a741">
    269269<!ENTITY silo-fixes-patch-size "668 KB">
    270270
  • patches/silo-1.4.13-fixes-3.patch

    r32c37aa8 r0af6afa  
    11Submitted By: Joe Ciccone <joeciccone at crazyeyesoft dot com>
    2 Date: 2006-11-02
     2Date: 2007-04-05
    33Initial Package Version: 1.4.13
    44Upstream Status: Unknown
     
    88        and work properly on pure64 systems.
    99
    10 diff -Naur silo-1.4.13.orig/Makefile silo-1.4.13/Makefile
    11 --- silo-1.4.13.orig/Makefile   2006-06-01 10:24:53.000000000 -0700
    12 +++ silo-1.4.13/Makefile        2006-11-02 19:21:44.204761742 -0800
    13 @@ -3,7 +3,7 @@
    14  
    15  # These only get built on Linux
    16  ifeq ($(OPSYS),Linux)
    17 -  SUBDIRS  = common first second first-isofs tilo
    18 +  SUBDIRS  = common first libext2fs second first-isofs tilo
    19    MANPAGES = maketilo.1 tilo.1
    20  endif
    21  
    22 diff -Naur silo-1.4.13.orig/Rules.make silo-1.4.13/Rules.make
    23 --- silo-1.4.13.orig/Rules.make 2006-06-21 00:51:03.000000000 -0700
    24 +++ silo-1.4.13/Rules.make      2006-11-02 19:21:44.204761742 -0800
    25 @@ -1,12 +1,14 @@
    26  VERSION=1.4.13
    27  IMGVERSION=0.99
    28  RM=rm -f
    29 -# We want to force 32-bit builds
    30 -CC=gcc -m32
    31 -LD=ld -m elf32_sparc
    32 -AS=as
    33 -STRIP=strip
    34 -NM=nm
    35 +CC=$(CROSS_COMPILE)gcc
    36 +CC-SILO=$(CC) -m32 -Wa,-32 -I../include/emul_32
    37 +BUILD_CC=gcc
    38 +LD=$(CROSS_COMPILE)ld -m elf32_sparc
    39 +AS=$(CROSS_COMPILE)as
    40 +STRIP=$(CROSS_COMPILE)strip
    41 +NM=$(CROSS_COMPILE)nm
    42 +
    43  ELFTOAOUT=elftoaout
    44  BIN2H=../common/bin2h
    45  
    4610diff -Naur silo-1.4.13.orig/common/Makefile silo-1.4.13/common/Makefile
    47 --- silo-1.4.13.orig/common/Makefile    2006-06-01 10:24:53.000000000 -0700
    48 +++ silo-1.4.13/common/Makefile 2006-11-02 19:21:44.204761742 -0800
     11--- silo-1.4.13.orig/common/Makefile    2006-06-01 13:24:53.000000000 -0400
     12+++ silo-1.4.13/common/Makefile 2007-04-03 17:02:53.000000000 -0400
    4913@@ -5,19 +5,22 @@
    5014 include ../Rules.make
     
    7741+
    7842diff -Naur silo-1.4.13.orig/first/Makefile silo-1.4.13/first/Makefile
    79 --- silo-1.4.13.orig/first/Makefile     2006-06-01 10:24:53.000000000 -0700
    80 +++ silo-1.4.13/first/Makefile  2006-11-02 19:21:44.204761742 -0800
     43--- silo-1.4.13.orig/first/Makefile     2006-06-01 13:24:53.000000000 -0400
     44+++ silo-1.4.13/first/Makefile  2007-04-05 19:48:31.000000000 -0400
     45@@ -1,4 +1,4 @@
     46-##
     47+#
     48 ## Linux Loader for SPARC
     49 ##
     50 #
    8151@@ -13,7 +13,7 @@
    8252 LDFLAGS=-N -Ttext 0x4000
     
    10676 ultra: ultra.o
    10777        $(LD) $(LDFLAGS) -o ultra ultra.o
    108 @@ -60,7 +60,7 @@
     78@@ -56,11 +56,11 @@
     79 ultra.b: ultra
     80        $(ELFTOAOUT) -o ultra.b ultra
     81        echo -n 'SILO'$(IMGVERSION) | $(DD) of=ultra.b bs=8 conv=notrunc seek=3 count=1
     82-       echo -n -e '\340' | $(DD) of=ultra.b bs=1 count=1 seek=7 conv=notrunc
     83+       /bin/echo -n -e '\0340' | $(DD) of=ultra.b bs=1 count=1 seek=7 conv=notrunc
    10984        $(DD) if=/dev/zero of=ultra.b bs=4 count=1 seek=127
    11085 
     
    11590 generic: generic.o
    11691        $(LD) $(LDFLAGS) -o generic generic.o
    117 @@ -74,7 +74,7 @@
     92@@ -70,11 +70,11 @@
     93 generic.b: generic
     94        $(ELFTOAOUT) -o generic.b generic
     95        echo -n 'SILO'$(IMGVERSION) | $(DD) of=generic.b bs=8 conv=notrunc seek=3 count=1
     96-       echo -n -e '\340' | $(DD) of=generic.b bs=1 count=1 seek=7 conv=notrunc
     97+       echo -n -e '\0340' | $(DD) of=generic.b bs=1 count=1 seek=7 conv=notrunc
    11898        $(DD) if=/dev/zero of=generic.b bs=4 count=1 seek=255
    11999 
     
    124104 fd: fd.o
    125105        $(LD) $(LDFLAGS) -o fd fd.o
    126 @@ -88,7 +88,7 @@
     106@@ -84,11 +84,11 @@
     107 fd.b: fd
     108        $(ELFTOAOUT) -o fd.b fd
     109        echo -n 'SILO'$(IMGVERSION) | $(DD) of=fd.b bs=8 conv=notrunc seek=3 count=1
     110-       echo -n -e '\340' | $(DD) of=fd.b bs=1 count=1 seek=7 conv=notrunc
     111+       echo -n -e '\0340' | $(DD) of=fd.b bs=1 count=1 seek=7 conv=notrunc
    127112        $(DD) if=/dev/zero of=fd.b bs=4 count=1 seek=255
    128113 
     
    134119        $(LD) $(LDFLAGS) -o ieee32.b ieee32.o
    135120diff -Naur silo-1.4.13.orig/first-isofs/Makefile silo-1.4.13/first-isofs/Makefile
    136 --- silo-1.4.13.orig/first-isofs/Makefile       2006-06-01 10:24:53.000000000 -0700
    137 +++ silo-1.4.13/first-isofs/Makefile    2006-11-02 19:21:44.204761742 -0800
     121--- silo-1.4.13.orig/first-isofs/Makefile       2006-06-01 13:24:53.000000000 -0400
     122+++ silo-1.4.13/first-isofs/Makefile    2007-04-03 17:02:53.000000000 -0400
    138123@@ -11,10 +11,10 @@
    139124 all: $(NAME).b
     
    159144        $(RM) *.o $(NAME) $(NAME).b $(NAME).aout
    160145diff -Naur silo-1.4.13.orig/include/emul_32/asm/elf.h silo-1.4.13/include/emul_32/asm/elf.h
    161 --- silo-1.4.13.orig/include/emul_32/asm/elf.h  1969-12-31 16:00:00.000000000 -0800
    162 +++ silo-1.4.13/include/emul_32/asm/elf.h       2006-11-02 19:21:44.204761742 -0800
     146--- silo-1.4.13.orig/include/emul_32/asm/elf.h  1969-12-31 19:00:00.000000000 -0500
     147+++ silo-1.4.13/include/emul_32/asm/elf.h       2007-04-03 17:02:53.000000000 -0400
    163148@@ -0,0 +1,162 @@
    164149+#ifndef __ASMSPARC_ELF_H
     
    325310+#endif /* !(__ASMSPARC_ELF_H) */
    326311diff -Naur silo-1.4.13.orig/include/emul_32/asm/posix_types.h silo-1.4.13/include/emul_32/asm/posix_types.h
    327 --- silo-1.4.13.orig/include/emul_32/asm/posix_types.h  1969-12-31 16:00:00.000000000 -0800
    328 +++ silo-1.4.13/include/emul_32/asm/posix_types.h       2006-11-02 19:21:44.208761609 -0800
     312--- silo-1.4.13.orig/include/emul_32/asm/posix_types.h  1969-12-31 19:00:00.000000000 -0500
     313+++ silo-1.4.13/include/emul_32/asm/posix_types.h       2007-04-03 17:02:53.000000000 -0400
    329314@@ -0,0 +1,122 @@
    330315+#ifndef __ARCH_SPARC_POSIX_TYPES_H
     
    451436+#endif /* !(__ARCH_SPARC_POSIX_TYPES_H) */
    452437diff -Naur silo-1.4.13.orig/include/emul_32/asm/types.h silo-1.4.13/include/emul_32/asm/types.h
    453 --- silo-1.4.13.orig/include/emul_32/asm/types.h        1969-12-31 16:00:00.000000000 -0800
    454 +++ silo-1.4.13/include/emul_32/asm/types.h     2006-11-02 19:21:44.208761609 -0800
     438--- silo-1.4.13.orig/include/emul_32/asm/types.h        1969-12-31 19:00:00.000000000 -0500
     439+++ silo-1.4.13/include/emul_32/asm/types.h     2007-04-03 17:02:53.000000000 -0400
    455440@@ -0,0 +1,41 @@
    456441+#ifndef _SPARC_TYPES_H
     
    496481+#endif /* defined(_SPARC_TYPES_H) */
    497482diff -Naur silo-1.4.13.orig/include/ext2fs/ext2_err.h silo-1.4.13/include/ext2fs/ext2_err.h
    498 --- silo-1.4.13.orig/include/ext2fs/ext2_err.h  2006-06-01 10:24:53.000000000 -0700
    499 +++ silo-1.4.13/include/ext2fs/ext2_err.h       2006-11-02 19:21:44.208761609 -0800
     483--- silo-1.4.13.orig/include/ext2fs/ext2_err.h  2006-06-01 13:24:53.000000000 -0400
     484+++ silo-1.4.13/include/ext2fs/ext2_err.h       2007-04-03 17:02:53.000000000 -0400
    500485@@ -3,6 +3,8 @@
    501486  * This file is automatically generated; please do not edit it.
     
    545530 /* for compatibility with older versions... */
    546531diff -Naur silo-1.4.13.orig/include/ext2fs/ext2_io.h silo-1.4.13/include/ext2fs/ext2_io.h
    547 --- silo-1.4.13.orig/include/ext2fs/ext2_io.h   2006-06-01 10:24:53.000000000 -0700
    548 +++ silo-1.4.13/include/ext2fs/ext2_io.h        2006-11-02 19:21:44.208761609 -0800
     532--- silo-1.4.13.orig/include/ext2fs/ext2_io.h   2006-06-01 13:24:53.000000000 -0400
     533+++ silo-1.4.13/include/ext2fs/ext2_io.h        2007-04-03 17:02:53.000000000 -0400
    549534@@ -27,6 +27,8 @@
    550535 typedef struct struct_io_manager *io_manager;
     
    593578 extern io_manager unix_io_manager;
    594579 
    595 diff -Naur silo-1.4.13.orig/libext2fs/ChangeLog silo-1.4.13/libext2fs/ChangeLog
    596 --- silo-1.4.13.orig/libext2fs/ChangeLog        1969-12-31 16:00:00.000000000 -0800
    597 +++ silo-1.4.13/libext2fs/ChangeLog     2006-11-02 19:21:44.212761475 -0800
    598 @@ -0,0 +1,3311 @@
    599 +2006-06-30  Theodore Ts'o  <tytso@mit.edu>
    600 +
    601 +       * Release of E2fsprogs 1.38
    602 +
    603 +2005-06-30  Theodore Ts'o  <tytso@mit.edu>
    604 +
    605 +       * bitops.h, bitops.c (ext2fs_set_bit, ext2fs_clear_bit,
    606 +               ext2fs_test_bit): Change these function prototypes to be
    607 +               unsigned int's.  Negative bit numbers were never allowed
    608 +               (and never made any sense), so this should be a safe
    609 +               change.  This is needed to allow safe use of block numbers
    610 +               greater than or equal to 2**31.
    611 +
    612 +2005-06-27  Stephen Tweedie  <sct@redhat.com>
    613 +
    614 +       * ext2fs.h (ext2fs_resize_mem): Fix C99 strict type aliasing
    615 +               problems.  Addresses Red Hat Bugzilla #161183.
    616 +
    617 +2005-06-19  Theodore Ts'o  <tytso@mit.edu>
    618 +
    619 +       * getsectsize.c (BLKSSZGET): Clean up test for when to manually
    620 +               define the BLKSSZGET ioctl.
    621 +
    622 +2005-05-29  Theodore Ts'o  <tytso@mit.edu>
    623 +
    624 +       * ismounted.c (ext2fs_check_mount_point): Add test to see if the
    625 +               device appears to be busy; this only works on Linux 2.6+
    626 +               systems, but provides some additional bullet-proofing in
    627 +               those cases.
    628 +
    629 +2005-05-08  Theodore Ts'o  <tytso@mit.edu>
    630 +
    631 +       * test_io.c (safe_getenv): Fix bug so it would fetch the right
    632 +               environment variable.
    633 +
    634 +2005-04-09  Theodore Ts'o  <tytso@mit.edu>
    635 +
    636 +       * inode.c (ext2fs_write_new_inode),
    637 +               ind_block.c (ext2fs_read_ind_block): Add missing return
    638 +               value in error return case.  (Otherwise we return garbage
    639 +               instead of the error code.)
    640 +
    641 +2005-03-31  Theodore Ts'o  <tytso@mit.edu>
    642 +
    643 +       * test_io.c (test_open): If called by a setuid/setgid or an
    644 +               otherwise privileged program, be paranoid and ignore the
    645 +               TEST_IO_* environment variables.
    646 +
    647 +2005-03-21  Theodore Ts'o  <tytso@mit.edu>
    648 +
    649 +       * Release of E2fsprogs 1.37
    650 +
    651 +2005-03-21  Theodore Ts'o  <tytso@mit.edu>
    652 +
    653 +       * ext2_ext_attr.h (EXT2_XATTR_LEN, EXT2_XATTR_SIZE): Add new
    654 +               convenience cpp macros.
    655 +
    656 +2005-03-20  Theodore Ts'o  <tytso@mit.edu>
    657 +
    658 +       * mkdir.c (ext2fs_mkdir): Call ext2fs_write_new_inode() instead of
    659 +               ext2fs_write_inode().
    660 +
    661 +       * inode.c (ext2fs_write_new_inode): New function which should be
    662 +               used when the caller is writing an inode for the first
    663 +               time.  It makes sure that the extra portion of the large
    664 +               inode is initialized properly.
    665 +
    666 +2005-03-18  Theodore Ts'o  <tytso@mit.edu>
    667 +
    668 +       * Makefile.in: Fix clean target to remove tst_getsectsize.
    669 +
    670 +       * getsize.c (ext2fs_get_device_size): Check to see if the number
    671 +               of blocks is greater than 2**32 when we are doing a binary
    672 +               search to determine the device size.  Thanks to Stephen
    673 +               Tweedie for the patch.
    674 +       
    675 +2006-02-05  Theodore Ts'o  <tytso@mit.edu>
    676 +
    677 +       * Release of E2fsprogs 1.36
    678 +
    679 +2005-02-05  Theodore Ts'o  <tytso@mit.edu>
    680 +
    681 +       * Makefile.in: Remove ext2fs.pc on a "make distclean"
    682 +
    683 +2005-02-04  Theodore Ts'o  <tytso@mit.edu>
    684 +
    685 +       * Makefile.in (clean): Remove tst_getsize when doing a make clean
    686 +
    687 +2005-02-03  Theodore Ts'o  <tytso@mit.edu>
    688 +
    689 +       * bitops.c: Make the generic functions more efficient.
    690 +
    691 +       * bitops.h: Drop SPARC assembly code. It's less efficient than GCC
    692 +               3.4 compiled code and also triggers nasty compiler
    693 +               warnings on sparc64.  Thanks to Matthias Andree for his
    694 +               analysis and suggestion.
    695 +       
    696 +2005-01-27  Theodore Ts'o  <tytso@mit.edu>
    697 +
    698 +       * res_gdt.c (ext2fs_create_resize_inode): Create the resize inode
    699 +               even if s_reserved_gdt_blocks is zero.
    700 +
    701 +2005-01-26  Theodore Ts'o  <tytso@mit.edu>
    702 +
    703 +       * ext2fs.pc.in: Add pkg-config files.
    704 +
    705 +2005-01-25  Theodore Ts'o  <tytso@mit.edu>
    706 +
    707 +       * ext2fs.h: Add definition of struct ext2_inode_large
    708 +
    709 +       * ext2_fs.h: Add new function prototypes
    710 +
    711 +       * ext_attr.c (ext2fs_read_ext_attr, ext2fs_write_ext_attr): The
    712 +               ext2fs_swap_ext_attr() has been moved to swapfs.c, and
    713 +               given a new argument, has_header.
    714 +
    715 +       * swapfs.c (ext2fs_swap_ext_attr): Moved from ext_attr.c, and
    716 +               takes an argument which controls whether or not there is
    717 +               an EA header which needs to be byteswaped.
    718 +               (ext2fs_swap_inode_full): New function which byte-swaps
    719 +               the EA in inode.
    720 +
    721 +       * inode.c (ext2fs_get_next_inode_full, ext2fs_read_inode_full,
    722 +               ext2fs_write_inode_full): New functions, originally from
    723 +               Alex Tomas, but which needed to be substantially fixed so
    724 +               that the tests wouldn't cause major stack overwrite bugs
    725 +               in byte-swapping is enabled.
    726 +       
    727 +2005-01-18  Theodore Ts'o  <tytso@mit.edu>
    728 +
    729 +       * Makefile.in: Fix the kernel compile-time echo commands to be
    730 +               consistent and portable
    731 +
    732 +2005-01-07  Theodore Ts'o  <tytso@mit.edu>
    733 +
    734 +       * unlink.c (ext2fs_unlink): If both the name and the inode number
    735 +               are unspecified, then return an error, so that we don't do
    736 +               something surprising such as unconditionally deleting the
    737 +               first directory entry.
    738 +               (unlink_proc): Delete directory entries by coalescing it
    739 +               with the previous entry, to avoid directory fragmentation.
    740 +
    741 +2005-01-06  Theodore Ts'o  <tytso@mit.edu>
    742 +
    743 +       * version.c (ext2fs_parse_version_string): Change parsing
    744 +               algorithm so that version strings such as 1.36-rc1 returns
    745 +               a non-surprising result (i.e., 136, and not 1361).
    746 +
    747 +2005-01-05  Theodore Ts'o  <tytso@mit.edu>
    748 +
    749 +       * block.c (block_iterate_ind, block_iterate_dind,
    750 +               block_iterate_tind): Move the code which byte swaps and
    751 +               read/writes indirect blocks to ext2fs_{read,write}_ind_block.
    752 +               This saves 400 bytes, and we need them for the
    753 +               resize_inode handling.
    754 +
    755 +       * ind_block.c (ext2fs_read_ind_block, ext2fs_write_ind_block): New
    756 +               functions.
    757 +
    758 +       * res_gdt.c (ext2fs_create_resize_inode): Use
    759 +               ext2fs_{read,write}_ind_block so that byte swapping is
    760 +               handled on big-endian systems.
    761 +
    762 +       * dupfs.c (ext2fs_dup_handle): Make sure the new filesystem handle
    763 +               has its own copy of the orig_super data structure.  (This
    764 +               is a better way of fixing a double-free problem in
    765 +               resize2fs which Fedora attempted to fix in
    766 +               e2fsprogs-1.35-double_free.patch.   Addresses Red Hat
    767 +               Bugzilla #132707.)
    768 +       
    769 +2004-12-23  Theodore Ts'o  <tytso@mit.edu>
    770 +
    771 +       * inode.c (ext2fs_flush_icache): When flushing the icache, clear
    772 +               the last-read block information as well.
    773 +
    774 +       * ext2fs.h (BMAP_SET), bmap.c (ext2fs_bmap): Add support for new
    775 +               flag, BMAP_SET, which allows the caller to set a
    776 +               particular logical->physical block mapping.
    777 +
    778 +       * ext2_err.et.in (EXT2_ET_SET_BMAP_NO_IND): New error code
    779 +
    780 +       * initialize.c (calc_reserved_gdt_blocks): #ifdef out all
    781 +               debugging printf statements.
    782 +       
    783 +       * res_gdt.c (ext2fs_create_resize_inode): Return
    784 +               EXT2_ET_RESIZE_INODE_CORRUPT if the resize inode is not
    785 +               what we expect.  #ifdef out all debugging printf
    786 +               statements.
    787 +
    788 +       * ext2_err.et.in (EXT2_ET_RESIZE_INODE_CORRUPT): Add new error code.
    789 +
    790 +2004-12-22  Theodore Ts'o  <tytso@mit.edu>
    791 +
    792 +       * swapfs.c (ext2fs_swap_super): Byteswap the reserved_gdt_blocks
    793 +               superblocks field.
    794 +
    795 +2004-12-15  Theodore Ts'o  <tytso@mit.edu>
    796 +
    797 +       * sparse.c (ext2fs_list_backups, ext2fs_bg_has_super),
    798 +               res_gdt.c (list_backups), closefs.c (ext2fs_bg_has_super),
    799 +               ext2fs.h: Move ext2fs_list_backups() to res_gdt.c, and
    800 +               ext2fs_bg_has_super() back to closefs.c.  There's no
    801 +               reason for the new file, since list_backups() isn't being
    802 +               used by any other functions, and can be made static, and
    803 +               all users of the ext2fs filesystem will have to call
    804 +               ext2fs_close() anyway.
    805 +
    806 +2004-12-15  Theodore Ts'o  <tytso@mit.edu>
    807 +
    808 +       * Applied resize inode patch from Andreas Dilger
    809 +
    810 +       * res_gdt.c (ext2fs_create_resize_inode): New function that
    811 +               creates the resize inode.
    812 +
    813 +       * initialize.c (ext2fs_initialize): Reserve space for the resize
    814 +               inode.
    815 +
    816 +       * ext2fs.h (EXT2_LIB_FEATURE_COMPAT_SUPP): Add
    817 +               EXT2_FEATURE_COMPAT_RESIZE_INODE to the list of supported
    818 +               capabilities.
    819 +               Add function prototypes for res_gdt.c and sparse.c.
    820 +
    821 +       * closefs.c (ext2fs_super_and_bgd_loc): Take the reserved blocks
    822 +               into account when calculating the number of overhead
    823 +               blocks.
    824 +
    825 +       * closefs.c (ext2fs_bg_has_super, test_root), sparse.c: Move these
    826 +               functions to the new file sparse.c
    827 +
    828 +       * alloc_sb.c (ext2fs_reserve_super_and_bgd): Reserve the blocks
    829 +               saved in the resize inode as being in use.
    830 +
    831 +       * ext2_err.et.in (EXT2_ET_RES_GDT_BLOCKS): Add new error code.
    832 +
    833 +       * Makefile.in (srcdir): Add res_gdt.c and sparse.c to the ext2fs
    834 +               library.
    835 +
    836 +2004-12-14  Theodore Ts'o  <tytso@mit.edu>
    837 +
    838 +       * Makefile.in: Use Linux-kernel-style makefile output for "make
    839 +               install"
    840 +
    841 +       * Makefile.in (installdirs): Use $(MKINSTALLDIRS) macro
    842 +               Update dependencies.
    843 +
    844 +2004-11-30  Theodore Ts'o  <tytso@mit.edu>
    845 +
    846 +       * unix_io.c (unix_set_option): Add support for the offset option.
    847 +
    848 +       * test_io.c (test_set_option): Add support for the set_option method.
    849 +
    850 +       * ext2_io.h: Add new io_channel method, set_option(), and change
    851 +               io_channel_write_byte() from a macro to a library function.
    852 +
    853 +       * ext2fs.h, openfs.c(ext2fs_open2): New version of ext2fs_open
    854 +               which adds a new parameter, io_options.
    855 +               (ext2fs_open): If there is a question mark in the
    856 +               filename, and no io_options are specified, assumed that
    857 +               the text following the question mark are io_options.
    858 +       
    859 +       * io_manager.c, Makefile.in: New source file which contains
    860 +               high-level functions for the io_channel layer.
    861 +
    862 +       * freefs.c (ext2fs_free): Make sure we don't free the io_channel
    863 +               if image_io is NULL.
    864 +
    865 +       * Makefile.in: Use Linux-kernel-style makefile output to make it
    866 +               easier to see errors/warnings.
    867 +
    868 +2004-11-29  Theodore Ts'o  <tytso@mit.edu>
    869 +
    870 +       * ext2_fs.h (EXT2_EXTENTS_FL, EXT3_FEATURE_INCOMPAT_EXTENTS,
    871 +               EXT2_MAX_BLOCK_LOG_SIZE): Add definition for extent
    872 +               feature and inode flag.  Change maximum allowable block
    873 +               size to be 65536.
    874 +
    875 +2004-10-08  Theodore Ts'o  <tytso@mit.edu>
    876 +
    877 +       * getsize.c (ext2fs_get_device_size): Add support for Windows
    878 +               9x/NT under Cygwin.  Thanks to Sam Robb
    879 +               (samrobb@users.sourceforge.net) for pointing this and the
    880 +               suggested code patch.
    881 +
    882 +2004-09-17  Theodore Ts'o  <tytso@mit.edu>
    883 +
    884 +       * getsize.c: Clean up header #include's.
    885 +
    886 +       * llseek.c (ext2fs_llseek): On non-linux systems, use lseek64() if
    887 +               it is present.  (Addresses Debian bug #269044)
    888 +
    889 +2004-07-28  Theodore Ts'o  <tytso@mit.edu>
    890 +
    891 +       * rw_bitmaps.c (read_bitmaps), block.c (block_iterate_ind,
    892 +               block_iterate_dind, block_iterate_tind), inode.c
    893 +               (ext2fs_read_inode): If EXT2_FLAG_IMAGE_FILE is set, so
    894 +               read the metadata from fs->image_io instead of fs->io.
    895 +
    896 +       * initialize.c (ext2fs_initialize), openfs.c (ext2fs_open):
    897 +               Initialize fs->image_io to be the same as fs->io.
    898 +       
    899 +       * ext2_err.et.in (EXT2_ET_NOT_IMAGE_FILE): Add new error code.
    900 +
    901 +       * openfs.c (ext2fs_get_data_io, ext2fs_set_data_io,
    902 +               ext2fs_rewrite_to_io): New functions that allow
    903 +               applications to manipulate fs->image_io and fs->io safely.
    904 +
    905 +       * freefs.c (ext2fs_free): If fs->image_io is different fs->io,
    906 +               then call io_channel_close on fs->image_io.
    907 +
    908 +       * ext2fs.h: Add image_io element to the ext2_filsys data
    909 +               structure.  Add ext2fs_get_data_io() ext2fs_set_data_io(),
    910 +               and ext2fs_rewrite_to_io() prototypes.
    911 +
    912 +2004-05-26  Theodore Ts'o  <tytso@mit.edu>
    913 +
    914 +       * closefs.c (ext2fs_flush): Make sure the master superblock is
    915 +               written last, and only after other I/O has been flushed to
    916 +               disk.  Thanks to Junfeng Yang from the Stanford
    917 +               Metacompilation group for pointing a potential ordering
    918 +               constraint problem if we don't write things out in the
    919 +               right order.
    920 +
    921 +       * test_io.c: Implement the ability to abort after n reads or
    922 +               writes to a particular block.  The block is specified by
    923 +               TEST_IO_BLOCK environment variable, and the read/write
    924 +               count by the TEST_IO_READ_ABORT and TEST_IO_WRITE_ABORT
    925 +               environment variables.  The block data is now only dumped
    926 +               if the 0x10 bit is set in TEST_IO_FLAGS.
    927 +
    928 +2004-04-03  Theodore Ts'o  <tytso@mit.edu>
    929 +
    930 +       * ext2_types.h.in: Remove check for _UUID_TYPES since uuid_types.h
    931 +               is no longer used.
    932 +
    933 +2004-03-08  Theodore Ts'o  <tytso@mit.edu>
    934 +
    935 +       * getsize.c (ext2fs_get_device_size): Only use the BLKGETSIZE64
    936 +               ioctl on Linux 2.6 since it is unreliable in Linux 2.4.
    937 +               (Addresses Debian Bug #236528).  Fix typo in the ioctl
    938 +               used for Mac OS X.
    939 +
    940 +2004-03-02  Theodore Ts'o  <tytso@mit.edu>
    941 +
    942 +       * getsize.c (ext2fs_get_device_size): Update getsize functions to
    943 +               use Apple Darwin and Linux 64-bit ioctl's
    944 +
    945 +2004-02-29  Brian Bergstrand  <brian@bergstrand.org>
    946 +
    947 +       * Makefile.in: Use $(BSDLIB_PIC_FLAG) to determine whether to use
    948 +               -fpic or -fPIC
    949 +
    950 +2004-02-28  Theodore Ts'o  <tytso@mit.edu>
    951 +
    952 +       * Release of E2fsprogs 1.35
    953 +
    954 +2004-02-21  Theodore Ts'o  <tytso@mit.edu>
    955 +
    956 +       * ext2fs.h (ext2fs_resize_mem): Fix C++ problem.  (Addresses Red
    957 +               Hat Bugzilla #112448; thanks Thomas Woerner from Red Hat.)
    958 +
    959 +2004-02-14  Theodore Ts'o  <tytso@mit.edu>
    960 +
    961 +       * namei.c (follow_link): Correctly deal with symlinks that have
    962 +               extended attribute information.  (Addresses Debian Bug
    963 +               #232328)
    964 +
    965 +2004-01-30  Theodore Ts'o  <tytso@mit.edu>
    966 +
    967 +       * ext2_fs.h: Reserve an extra 4 bytes for the journal backup,
    968 +               which we're using due to a typo in the e2fsck code.  (Oops)
    969 +
    970 +       * swapfs.c (ext2fs_swap_inode): Fix byte swap bug which causes SE
    971 +               Linux created symlinks with mandatory attributes to fail
    972 +               to be properly handled on big endian systems.  (Addresses
    973 +               Debian Bug #228723).
    974 +               (ext2fs_swap_super): Byte swap some new fields in the
    975 +               superblock, including the journal backup fields.
    976 +
    977 +2003-12-02  Theodore Ts'o  <tytso@mit.edu>
    978 +
    979 +       * alloc.c, bb_inode.c, bitops.c, block.c, check_desc.c, closefs.c,
    980 +               dir_iterate.c, dirblock.c, expanddir.c, ext2fs.h,
    981 +               get_pathname.c, icount.c, imager.c, initalize.c, inode.c,
    982 +               lookup.c, openfs.c, read_bb.c, read_bb_file.c,
    983 +               rw_bitmaps.c, unix_io.c, unlink.c, write_bb_file.c: Fix
    984 +               gcc -Wall complaints.  Mainly marking variables as being
    985 +               unsued, and catching signed vs. unsigned comparisons.
    986 +
    987 +2003-09-03  Theodore Ts'o  <tytso@mit.edu>
    988 +
    989 +       * closefs.c (ext2fs_super_and_bgd_loc): New function which
    990 +               centralizes the calculation of the superblock and block
    991 +               group descriptors.
    992 +               (ext2fs_flush): Use ext2fs_super_and_bgd_lock to figure
    993 +               out where to write the superblock and block group
    994 +               descriptors.
    995 +
    996 +       * alloc_sb.c (ext2fs_reserve_super_and_bgd): New function which
    997 +               reserves space in the block bitmap using
    998 +               ext2fs_super_and_bgd_loc.
    999 +
    1000 +       * initialize.c (ext2fs_initialize): Use
    1001 +               ext2fs_reserve_super_and_bgd to initialize the block bitmap.
    1002 +
    1003 +2003-08-20  Theodore Ts'o  <tytso@mit.edu>
    1004 +
    1005 +       * inode_io.c (ext2fs_inode_io_intern2), ext2fs.h: Add new function
    1006 +               allows the caller to pass in the inode data structure.
    1007 +
    1008 +       * fileio.c (ext2fs_file_open2), ext2fs.h: Add new function which
    1009 +               allows the caller to pass in the inode to be used in the
    1010 +               file I/O.
    1011 +
    1012 +       * ext2_fs.h: Add a backup of the location of the journal inode
    1013 +               blocks to the superblock.
    1014 +
    1015 +       * mkjournal.c (write_journal_inode): Save the location of the
    1016 +               journal inode to the backup location in the superblock.
    1017 +
    1018 +2003-08-01  Philipp Thomas <pthomas@suse.de>
    1019 +
    1020 +       * alloc.c, badblocks.c, bb_inode.c, bitmaps.c, block.c, bmap.c,
    1021 +               bmove.c, brel_ma.c, closefs.c, dblist.c, dblist_dir.c,
    1022 +               dir_iterate.c, dirblock.c, dupfs.c, expanddir.c, ext2fs.h,
    1023 +               ext_attr.c, fileio.c, freefs.c, get_pathname.c, icount.c,
    1024 +               initialize.c, inode.c, inode_io.c, irel_ma.c, mkdir.c,
    1025 +               mkjournal.c, namei.c, newdir.c, openfs.c, rs_bitmap.c,
    1026 +               rw_bitmaps.c, test_io.c, unix_io.c: ext2fs_getmem(),
    1027 +               ext2fs_free_mem(), and ext2fs_resize_mem() all now take a
    1028 +               'void *' instead of a 'void **' in order to avoid pointer
    1029 +               aliasing problems with GCC 3.x.
    1030 +
    1031 +2003-07-25  Theodore Ts'o  <tytso@mit.edu>
    1032 +
    1033 +       * Release of E2fsprogs 1.34
    1034 +
    1035 +2003-07-06  Theodore Ts'o  <tytso@mit.edu>
    1036 +
    1037 +       * kernel-jbd.h, flushb.c: Fix gcc -Wall nitpicks (indented cpp
    1038 +               directives)
    1039 +
    1040 +       * ext2_types.h.in, initialize.c: Fix gcc -Wall nitpicks
    1041 +               (don't use #elsif)
    1042 +
    1043 +       * ismounted.c: Fix gcc -Wall nitpicks (Don't use exit as a goto label)
    1044 +
    1045 +       * llseek.c: Fix gcc -Wall nitpicks (don't use #elsif)
    1046 +
    1047 +       * lookup.c, read_bb.c: Fix gcc -Wall nitpicks (indent
    1048 +               non-traditional #pragma)
    1049 +
    1050 +       * test_io.c: Fix gcc -Wall nitpicks (const/unsigned type issues)
    1051 +
    1052 +2003-06-24    <tytso@snap.thunk.org>
    1053 +
    1054 +       * badblocks.c, ext2fs.h (ext2fs_u32_list_find,
    1055 +               ext2fs_u32_list_test, ext2fs_u32_list_del,
    1056 +               ext2fs_badblocks_list_del): Add functions to delete a
    1057 +               block from the badblocks list.
    1058 +       * tst_badblocks.c: Add test cases for ext2fs_badblocks_list_del().
    1059 +
    1060 +2003-05-21  Theodore Ts'o  <tytso@mit.edu>
    1061 +
    1062 +       * getsectsize.c (ext2fs_get_device_sectsize): New function which
    1063 +               returns the hardware sector size (if it is available).
    1064 +
    1065 +2003-05-13  Theodore Ts'o  <tytso@mit.edu>
    1066 +
    1067 +       * unix_io.c: Add #ifdef NO_IO_CACHE which disables all userspace
    1068 +               caching by the unix_io layer.  Not enabled, only for
    1069 +               debugging.
    1070 +
    1071 +2003-05-05  Theodore Ts'o  <tytso@mit.edu>
    1072 +
    1073 +       * test_io.c: Pay attention to the environment variables
    1074 +               TEST_IO_LOGFILE, TEST_IO_FLAGS, and TEST_IO_BLOCK to
    1075 +               determine whether or not we should log io activity, and to
    1076 +               where.
    1077 +
    1078 +2003-05-03  Theodore Ts'o  <tytso@mit.edu>
    1079 +
    1080 +       * tst_badblocks.c (file_test): Use tmpfile() instead of mktemp().
    1081 +
    1082 +2003-04-29  Theodore Ts'o  <tytso@mit.edu>
    1083 +
    1084 +       * getsize.c (ext2fs_get_device_size): Allow windows code to get
    1085 +               the resize for filesystems that are in regular files.
    1086 +
    1087 +2003-04-21  Theodore Ts'o  <tytso@mit.edu>
    1088 +
    1089 +       * Release of E2fsprogs 1.33
    1090 +
    1091 +2003-04-21  Theodore Ts'o  <tytso@mit.edu>
    1092 +
    1093 +       * Makefile.in: Use DYLD_LIBRAY_PATH so that "make check" works on
    1094 +               Darwin systems when building with shared libraries.
    1095 +
    1096 +2003-04-18  Theodore Ts'o  <tytso@mit.edu>
    1097 +
    1098 +       * unix_io.c: Use __CYGWIN__ instead of CYGWIN.
    1099 +
    1100 +2003-04-17  Theodore Ts'o  <tytso@mit.edu>
    1101 +
    1102 +       * getsize.c: Add Cygwin/Windows version of ext2fs_get_device_size()
    1103 +
    1104 +2003-04-12  Theodore Ts'o  <tytso@mit.edu>
    1105 +
    1106 +       * unix_io.c (raw_read_blk): Add Cygwin support (the Windows block
    1107 +               device only accepts sector aligned read requests.
    1108 +
    1109 +       * ismounted.c (check_mntent_file): Deal with OS's that don't
    1110 +               define MNTOPT_RO.
    1111 +
    1112 +       * imager.c: If the OS doesn't define ssize_t, typedef it to int.
    1113 +
    1114 +2003-04-11  Theodore Ts'o  <tytso@mit.edu>
    1115 +
    1116 +       * ext2_fs.h (EXT2_FEATURE_RO_COMPAT_BTREE_DIR): Comment out unused
    1117 +               feature flag
    1118 +
    1119 +2003-03-30  Theodore Ts'o  <tytso@mit.edu>
    1120 +
    1121 +       * Makefile.in: Use the compile_et --build-tree option.
    1122 +
    1123 +2003-03-14  Theodore Ts'o  <tytso@mit.edu>
    1124 +
    1125 +       * getsize.c: Add support for Apple Darwin's ioctl to get the hard
    1126 +               disk size.
    1127 +
    1128 +       * badblocks.c (ext2fs_u32_list_count), ext2fs.h: Add new function
    1129 +               which returns the number of entries in the list.
    1130 +
    1131 +2003-03-10  Theodore Ts'o  <tytso@mit.edu>
    1132 +
    1133 +       * fileio.c (ext2fs_file_lseek): Fix bug added when adding 64-bit
    1134 +               support; avoid null dereference when ret_pos is NULL.
    1135 +
    1136 +2003-03-06  Theodore Tso  <tytso@mit.edu>
    1137 +
    1138 +       * ext2_types.h.in: Don't redefine types if other e2fsprogs
    1139 +               *_types.h files have been included already.
    1140 +
    1141 +       * kernel-jbd.h: Use C99 variadic cpp macros if not using GCC.
    1142 +               (Older GCC's don't support the C99 variadic macros.)
    1143 +
    1144 +       * flushb.c (ext2fs_sync_device),
    1145 +       ismounted.c (ext2fs_check_mount_point): Avoid GCC extension:
    1146 +       #warning not supported by Solaris suncc
    1147 +
    1148 +       * ext2_ext_attr.h: Avoid GCC extension: 0 length arrays in
    1149 +               structure definition.  Not needed for now in
    1150 +               ext2_ext_attr_entry.
    1151 +
    1152 +2003-01-25  Theodore Ts'o  <tytso@mit.edu>
    1153 +
    1154 +       * dirhash.c: Fix gcc -Wall nits.
    1155 +
    1156 +2003-01-22  Theodore Ts'o  <tytso@mit.edu>
    1157 +
    1158 +       * unix_io.c (unix_write_blk): Fix up GCC -Wall nits.
    1159 +
    1160 +2003-01-21  Theodore Ts'o  <tytso@mit.edu>
    1161 +
    1162 +       * fileio.c (ext2fs_file_read, ext2_file_lseek,
    1163 +               ext2_file_get_size): Add 64-bit support.
    1164 +
    1165 +       * ext2fs.h (EXT2_I_SIZE): Add macro which caluates a 64bit size
    1166 +               from i_size and i_size_high.
    1167 +
    1168 +2003-01-19  Theodore Ts'o  <tytso@mit.edu>
    1169 +
    1170 +       * initialize.c (ext2fs_initialize): If the user specifies a really
    1171 +               large number of inodes, then reduce the number of blocks
    1172 +               per group until we find a workable set of filesystem
    1173 +               parameters.
    1174 +
    1175 +       * ext2_err.et.in (EXT2_ET_TOO_MANY_INODES): Add new error code.
    1176 +
    1177 +2002-11-09  Theodore Ts'o  <tytso@mit.edu>
    1178 +
    1179 +       * Release of E2fsprogs 1.32
    1180 +
    1181 +2002-11-09  Theodore Ts'o  <tytso@mit.edu>
    1182 +
    1183 +       * unix_io.c (find_cached_block, reuse_cache, unix_read_blk,
    1184 +               unix_write_blk): Optimize routines so that we don't end up
    1185 +               searching the cache twice when a block isn't in the
    1186 +               cache.  If reads are larger than READ_DIRECT_SIZE, don't
    1187 +               let them go through the cache.
    1188 +
    1189 +       * unix_io.c (find_cached_block): Fixed bug which caused some clean
    1190 +               blocks to be erroneously marked as dirty, so they would
    1191 +               get written back to the disk before they are evicted from
    1192 +               the cache.  Harmless, but it slows down e2fsck
    1193 +               significantly.
    1194 +
    1195 +2002-11-08  Theodore Ts'o  <tytso@mit.edu>
    1196 +
    1197 +       * Release of E2fsprogs 1.31
    1198 +
    1199 +2002-11-08    <tytso@snap.thunk.org>
    1200 +
    1201 +       * Makefile.in (check): Skip trying to compile test_byteswap
    1202 +               if --disable-byteswaap had been given to configure.
    1203 +
    1204 +2002-11-07    <tytso@snap.thunk.org>
    1205 +
    1206 +       * closefs.c (write_bgdesc, ext2fs_flush): Fix bug in meta_bg
    1207 +               support when the MASTER_SB_ONLY flag is set.  Some of
    1208 +               the descriptor blocks that should have been written out
    1209 +               were getting skipped.
    1210 +
    1211 +2002-10-31  Theodore Ts'o  <tytso@mit.edu>
    1212 +
    1213 +       * Release of E2fsprogs 1.30
    1214 +
    1215 +2002-10-31  Theodore Ts'o  <tytso@mit.edu>
    1216 +
    1217 +       * ext2_fs.h: Add support for a new inode flag, which is to be used
    1218 +               for indicating the top of directory hierarchies for the
    1219 +               Orlov block allocator.
    1220 +       
    1221 +       * ismounted.c (check_mntent, check_mntent_file): Add better
    1222 +               support for loopback-mounted filesystems.  Check /etc/mtab
    1223 +               if /proc/mounts doesn't turn up any mount flags, since
    1224 +               /etc/mtab has the loopback image filename, instead of
    1225 +               /dev/loop0.  Also, check based on st_dev and st_ino, so
    1226 +               that if a relative pathname or a pathnames using symbolic
    1227 +               links are used, we can detect the the filesystem correctly
    1228 +               in those cases.  (Addresses Sourceforge bug #619119)
    1229 +
    1230 +       * flushb.c (ext2fs_sync_device): If the BLKFLSBUF ioctl succeeds,
    1231 +               don't try the FDFLUSH ioctl that was required for floppies
    1232 +               with older kernels.  This avoids needless whining from the
    1233 +               MD device driver.  (Addresses Sourceforge bug #545832).
    1234 +
    1235 +       * openfs.c (ext2fs_open): Fix bug which caused us to pass the
    1236 +               wrong group_block to ext2fs_descriptor_block_loc if we're
    1237 +               using the backup superblock/block group descriptors.
    1238 +               (ext2fs_descriptor_block_loc): If we're using the backup
    1239 +               superblock descriptors, use the backup descriptor block in
    1240 +               the next block group.
    1241 +
    1242 +2002-10-30  Theodore Ts'o  <tytso@mit.edu>
    1243 +
    1244 +       * alloc_tables.c (ext2fs_allocate_group_table): Allocate the inode
    1245 +               table so that it buts up against the bitmap blocks, to
    1246 +               avoid block fragmentation.
    1247 +
    1248 +       * closefs.c (write_bgdesc), initalize.c (ext2fs_initialize): Fix
    1249 +               bug; only allocate group descriptor blocks up to
    1250 +               s_first_meta_bg.
    1251 +
    1252 +2002-10-25  Theodore Ts'o  <tytso@mit.edu>
    1253 +
    1254 +       * ext2_fs.h: Add a new superblock field, s_mkfs_time, so that we
    1255 +               know when a filesystem was created.  (Sometimes this can
    1256 +               be useful...)
    1257 +
    1258 +       * initialize.c (ext2fs_initialize): Set the s_mkfs_time field.
    1259 +
    1260 +2002-10-20  Theodore Ts'o  <tytso@valinux.com>
    1261 +
    1262 +       * ext2_fs.h (EXT3_DEFM_JMODE): Add new default mount options for
    1263 +               the journal data mode.
    1264 +
    1265 +       * closefs.c (ext2fs_flush, write_bgdesc), ext2_fs.h, ext2fs.h,
    1266 +       openfs.c (ext2fs_descriptor_block_loc, ext2fs_open), initialize.c
    1267 +       (ext2fs_initialize), swapfs.c (ext2fs_swap_super): Add support for
    1268 +       the meta_blockgroup filesystem format.
    1269 +
    1270 +2002-10-15    <tytso@snap.thunk.org>
    1271 +
    1272 +       * ext2_fs.h: Add new field in superblock for default mount options.
    1273 +
    1274 +2002-10-13  Theodore Ts'o  <tytso@mit.edu>
    1275 +
    1276 +       * ext2fs.h: Add #include of header files necessary for ext2fs.h to
    1277 +               compile cleanly.
    1278 +
    1279 +2002-10-02  Theodore Y. Ts'o  <tytso@mit.edu>
    1280 +
    1281 +       * rw_bitmaps.c (ext2fs_write_block_bitmap,
    1282 +               ext2fs_read_block_bitmap): Don't set the CHANGED bit just
    1283 +               because the bitmap is getting written to disk.  Make
    1284 +               ext2fs_swap_bitmap be a static function, since it's not
    1285 +               intended to be exported.
    1286 +
    1287 +       * swapfs.c (ext2fs_swap_super): Byte-swap the hash seed
    1288 +
    1289 +2001-09-24  Theodore Tso  <tytso@mit.edu>
    1290 +
    1291 +       * Release of E2fsprogs 1.29
    1292 +
    1293 +2001-08-31  Theodore Tso  <tytso@thunk.org>
    1294 +
    1295 +       * Release of E2fsprogs 1.28
    1296 +
    1297 +2002-08-31  Theodore Ts'o  <tytso@valinux.com>
    1298 +
    1299 +       * dblist.c (ext2fs_dblist_sort): New function which allows the
    1300 +               caller to pass in a special sort comparison function.
    1301 +
    1302 +2002-08-20  Theodore Ts'o  <tytso@mit.edu>
    1303 +
    1304 +       * valid_blk.c (ext2fs_inode_has_valid_blocks): Fix bug which
    1305 +               failed to accurately characterize non-standard slow
    1306 +               symlinks.  (Which don't appear in practice on real-life
    1307 +               systems, fortunately.)
    1308 +
    1309 +2002-08-17  Theodore Ts'o  <tytso@mit.edu>
    1310 +
    1311 +       * Makefile.in: Remove inode_io.o from the standard object files,
    1312 +               and only build it if debugfs is enabled (it requires
    1313 +               fileio.o, which is only built if --disable-debugfs isn't
    1314 +               specified to configure).
    1315 +
    1316 +       * dirhash.c (ext2fs_dirhash): Change the MD4 hash in a backwards
    1317 +               incompatible way so that it is no longer
    1318 +               endian-dependent.  Add the TEA hash.  Allow the seed
    1319 +               parameter to be optional.
    1320 +
    1321 +       * ext2_fs.h: Remove the HALF_MD4_SEED and HALF_MD4_64 hashes.
    1322 +               These features are all now in the HALF_MD4 hash.  Add
    1323 +               definition for EXT2_HASH_TEA.
    1324 +
    1325 +       * ext2fs.h (ext2fs_dirhash): Change function prototype so it takes
    1326 +               a pointer instead of an array.
    1327 +
    1328 +2002-08-16  Theodore Ts'o  <tytso@mit.edu>
    1329 +
    1330 +       * ext2_err.et.in (EXT2_ET_BAD_EA_BLOCK_NUM): New error code
    1331 +
    1332 +       * ext2fs.h (ext2fs_inode_data_blocks): New function which returns
    1333 +               the number of data blocks used by an inode exclusive of
    1334 +               the EA block.
    1335 +
    1336 +       * ext_attr.c (ext2fs_adjust_ea_refcount): New function which
    1337 +               adjusts the reference count in an extended attribute block.
    1338 +
    1339 +       * valid_blk.c (ext2fs_inode_has_valid_blocks): Add code to
    1340 +               correctly deal with extended attribute blocks in symbolic
    1341 +               links.
    1342 +
    1343 +2002-08-13    <tytso@snap.thunk.org>
    1344 +
    1345 +       * Makefile.in: Move dupfs.o and test_io.o from the
    1346 +               needed-by-debugfs object list to the needed-by-resizer
    1347 +               object list.  Fixes compile problem if the system is built
    1348 +               with only --disable-debugfs.
    1349 +
    1350 +2002-07-29  Theodore Ts'o  <tytso@mit.edu>
    1351 +
    1352 +       * link.c (ext2fs_link): When adding a new link to a directory,
    1353 +               clear the HTREE bit.
    1354 +
    1355 +2002-07-23  Theodore Ts'o  <tytso@mit.edu>
    1356 +
    1357 +       * dirhash.c (ext2fs_dirhash): Fix bug which caused MD4
    1358 +               calculations for names > 32 characters to be completely
    1359 +               bogus.  Changed MD4 calculation to match what is currently
    1360 +               being used in the CVS gkernel tree.
    1361 +
    1362 +2002-07-19  Theodore Ts'o  <tytso@mit.edu>
    1363 +
    1364 +       * ext2_fs.h: Add s_hash_seed and s_def_hash_version to the
    1365 +               superblock definition.
    1366 +
    1367 +       * badblocks.c, freefs.c, ext2fs.h: Use the badblocks functions to
    1368 +               create a set of u32_list functions.
    1369 +
    1370 +       * dirhash.c (halfMD4Transform): Shift the hash by one bit,
    1371 +               since that's required by the directory indexing code.
    1372 +
    1373 +2002-07-14  Theodore Ts'o  <tytso@mit.edu>
    1374 +
    1375 +       * ext2fs.h, read_bb_file.c: Change private to priv_data, to avoid
    1376 +               using a C++ reserved word.
    1377 +
    1378 +       * unix_io.c (unix_open): Only attempt the setrlimit workaround if
    1379 +               the kernel version is 2.4.10 -- 2.4.17, since otherwise an
    1380 +               old version of glibc (built against 2.2 headers) will
    1381 +               interact badly with the workaround to actually cause more
    1382 +               problems.  I hate it when the glibc folks think they're
    1383 +               being smarter than the kernel....
    1384 +
    1385 +2002-06-28  Andreas Dilger <adilger@clusterfs.com>
    1386 +
    1387 +       * ext2_fs.h: Add superblock field for reserved group descriptors.
    1388 +
    1389 +2002-06-28  Theodore Ts'o  <tytso@mit.edu>
    1390 +
    1391 +       * bitops.h: Add #define's for ext2fs_{l,b}e{32,16}_to_cpu and
    1392 +               ext2fs_cpu_to_{l,b}e{32,16}
    1393 +
    1394 +2002-06-27  Theodore Ts'o  <tytso@mit.edu>
    1395 +
    1396 +       * ismounted.c (check_mntent): In AIX 4.3, MOUNTED isn't defined.
    1397 +               Add appropriate fallbacks in this case.
    1398 +
    1399 +2002-06-26  Theodore Ts'o  <tytso@mit.edu>
    1400 +
    1401 +       * dirhash.c (ext2fs_dirhash): Change function signature to support
    1402 +               a hash seed, and to return the minor hash (for 64-bit hash
    1403 +               support).   Add support for the half MD4, half MD4 with
    1404 +               seed, and half MD4 with seed and 64 bits.
    1405 +
    1406 +2002-06-15  Theodore Ts'o  <tytso@mit.edu>
    1407 +
    1408 +       * ext2_fs.h (EXT2_DIRSYNC_FL): Add new file.
    1409 +
    1410 +2002-06-09  Andreas Dilger <adilger@clusterfs.com>
    1411 +
    1412 +       * ext2_fs.h: Add macros for maximum block/inode counts:
    1413 +               EXT2_INODES_PER_BLOCK, EXT2_MAX_BLOCKS_PER_GROUP,
    1414 +               and EXT2_MAX_INODES_PER_GROUP.
    1415 +
    1416 +       * openfs.c (ext2fs_open): Check that the number of blocks in a group
    1417 +               is less than 2^16, otherwise we need an INCOMPAT flag (not
    1418 +               in existence yet, if ever) to open such a filesystem.
    1419 +
    1420 +       * initialize.c (ext2fs_initialize): Limit the number of blocks and
    1421 +               inodes in a group to less than 2^16.
    1422 +
    1423 +2002-06-09  Andreas Dilger <adilger@clusterfs.com>
    1424 +
    1425 +       * ext2_fs.h: Further minor cleanups of the header.  Consolidate
    1426 +               some checks for __KERNEL__ into one place.
    1427 +
    1428 +2002-05-22  Andreas Dilger <adilger@clusterfs.com>
    1429 +
    1430 +       * ext2_fs.h: Remove macros accessing u.ext2_sb field and use
    1431 +               the EXT2_SB() macro instead.  Remove kernel function
    1432 +               prototypes also.  This matches the 2.5 kernel, and
    1433 +               is also cleaner for other reasons.  Whitespace cleanup.
    1434 +
    1435 +2002-05-21  Theodore Ts'o  <tytso@mit.edu>
    1436 +
    1437 +       * ext2_ext_attr.h: Update to V2 version of the Bestbits format.
    1438 +
    1439 +2002-05-16  Andreas Dilger <adilger@clusterfs.com>
    1440 +
    1441 +       * ext2_fs.h: Change limits to support filesystems with 8k blocks.
    1442 +
    1443 +       * initialize.c (ext2fs_initialize): Remove assumption that
    1444 +               blocksizes are always <= 4k.
    1445 +
    1446 +2002-05-11  Theodore Ts'o  <tytso@mit.edu>
    1447 +
    1448 +       * bmap.c (ext2fs_bmap): Fix bug which caused ext2fs_bmap to fail
    1449 +               silently if inode pointer is NULL (and ext2fs_bmap is
    1450 +               expected to read the inode itself).
    1451 +
    1452 +2002-04-27  Theodore Ts'o  <tytso@mit.edu>
    1453 +
    1454 +       * ismounted.c (check_mntent_file, is_swap_device): Verify that the
    1455 +               file we are checking is a block device file before looking
    1456 +               at st_rdev, since it's not valid for normal files.
    1457 +               (is_swap_device): Move so that it is outside the
    1458 +               HAVE_MNTENT_H, so that it is always built.
    1459 +
    1460 +2002-03-11  Theodore Tso  <tytso@mit.edu>
    1461 +
    1462 +       * dirblock.c (ext2fs_read_dir_block2, ext2fs_write_dir_block): New
    1463 +               functions which take an extra flags argument.  The flag
    1464 +               EXT2_DIRBLOCK_V2_STRUCT will reverse when the name_len
    1465 +               field is byte swampped on big-endian machines, since in
    1466 +               the V2 structure, name_len is a char field which is
    1467 +               doesn't need to be byte swapped --- except if an
    1468 +               old-style kernel had byte-swapped the name_len field
    1469 +               as part of the V1 structure.
    1470 +
    1471 +       * ext2_err.et.in (EXT2_ET_DIRHASH_UNSUPP): New error code
    1472 +
    1473 +       * dirhash.c (ext2fs_dirhash): New function which calculates the
    1474 +               hash for a filename in an indexed directory.
    1475 +
    1476 +2002-03-08  Theodore Tso  <tytso@mit.edu>
    1477 +
    1478 +       * Release of E2fsprogs 1.27
    1479 +
    1480 +2002-03-07  Theodore Tso  <tytso@mit.edu>
    1481 +
    1482 +       * ext2fs.h (ext2fs_inode_io_intern): Add missing function prototype.
    1483 +
    1484 +       * bmap.c, fileio.c, inode_io.c, tst_badblocks.c,
    1485 +               tst_byteswap.c: Fix gcc -Wall complaints
    1486 +
    1487 +       * Makefile.in (check): Use LD_LIBRARY_PATH to run test programs.
    1488 +               (From Philipp Thomas <pthomas@suse.de>)
    1489 +
    1490 +2002-02-25  Theodore Tso  <tytso@mit.edu>
    1491 +
    1492 +       * ext2_fs.h: Add structure definitions for the directory indexing
    1493 +               extension.
    1494 +
    1495 +2002-02-23  Theodore Tso  <tytso@mit.edu>
    1496 +
    1497 +       * unix_io.c (unix_open): Fix 2.4 resource limit workaround so that
    1498 +               it doesn't break things on mis32, sparc32, and alpha
    1499 +               platforms.
    1500 +
    1501 +2002-02-21  Theodore Tso  <tytso@mit.edu>
    1502 +
    1503 +       * ismounted.c (is_swap_device): Fix file descriptor/memory leak;
    1504 +               we were missing an fclose().
    1505 +
    1506 +2002-02-20  Theodore Tso  <tytso@mit.edu>
    1507 +
    1508 +       * Makefile.in, inode_io.c, ext2fs.h, ext2_err.et.in: Add new io
    1509 +               abstraction interface which exports an ext2 inode.
    1510 +
    1511 +       * ext2fs.h, fileio.c (ext2fs_file_flush): Export ext2fs_file_flush
    1512 +               as a public interface.  Change void * to const void * in
    1513 +               ext2fs_file_write's interface.
    1514 +
    1515 +       * test_io.c (test_close), unix_io.c (unix_close): Remove unneeded
    1516 +               conditional; save a few bytes.
    1517 +       
    1518 +2002-02-12  Theodore Tso  <tytso@mit.edu>
    1519 +
    1520 +       * Makefile.in (tst_badblocks): Add some extra .o files when
    1521 +               linking the debugging program tst_badblocks which are
    1522 +               needed if we aren't compiling with inline functions enable.
    1523 +
    1524 +       * kernel-list.h (__inline__): On non-gcc and non-Watcom compilers,
    1525 +               define away __inline__ since it may not be supported.
    1526 +
    1527 +       * kernel-jbd.h (jbd_debug): For systems that don't do STDC, use a
    1528 +               stripped down jbd_debug that doesn't use variadic
    1529 +               arguments.  This will cause warnings under AIX, but things
    1530 +               should still build.
    1531 +
    1532 +2002-02-03  Theodore Tso  <tytso@thunk.org>
    1533 +
    1534 +       * Release of E2fsprogs 1.26
    1535 +
    1536 +2002-02-03  Theodore Tso  <tytso@mit.edu>
    1537 +
    1538 +       * mkdir.c (ext2fs_mkdir): Change to use ext2fs_inode_alloc_stats2
    1539 +               so that the number of directories in use is adjusted
    1540 +               appropriately.
    1541 +
    1542 +       * alloc_stats.c (ext2fs_inode_alloc_stats2): Add new function
    1543 +               which optionally will modify the number of directories
    1544 +               count.
    1545 +
    1546 +2002-01-03  Theodore Tso  <tytso@mit.edu>
    1547 +
    1548 +       * dir_iterate.c (ext2fs_dir_iterate2, ext2fs_process_dir_block):
    1549 +               Add support for a new flag, DIRENT_FLAG_INCLUDE_REMOVED,
    1550 +               which will return deleted directory entries.
    1551 +               ext2fs_dir_iterate2 takes a new callback function which
    1552 +               is identical with the one used by
    1553 +               ext2fs_dblist_dir_iterate().  If the directory entry is
    1554 +               deleted, the callback function will be called with the
    1555 +               entry paraemter set to DIRENT_DELETED_FILE.
    1556 +
    1557 +       * Makefile.in, alloc_stats.c (ext2fs_inode_alloc_stats,
    1558 +               ext2fs_block_alloc_stats): New functions which update
    1559 +               block/inode allocation statistics in the bitmaps, block
    1560 +               group descriptors, and superblock.
    1561 +
    1562 +       * mkjournal.c (mkjournal_proc), mkdir.c (ext2fs_mkdir),
    1563 +               expanddir.c (expand_dir_proc), bb_inode.c
    1564 +               (clear_bad_block_proc, set_bad_block_proc,
    1565 +               ext2fs_update_bb_inode), alloc.c (ext2fs_alloc_block):
    1566 +               Update to use new block/inode allocation statistics.
    1567 +
    1568 +2001-12-24  Theodore Tso  <tytso@mit.edu>
    1569 +
    1570 +       * ismounted.c (is_swap_device): New function used by
    1571 +               ext2fs_check_if_mounted and ext2fs_check_mount_point which
    1572 +               determines whether or not the specified device is a swap
    1573 +               device by using /proc/swaps.  More bulletproofing for
    1574 +               idiotic/careless system administrators!
    1575 +
    1576 +       * ext2fs.h, openfs.c (ext2fs_open), initialize.c
    1577 +               (ext2fs_initialize), mkdir.c (ext2fs_mkdir): Add a new
    1578 +               field to struct_ext2_filsys, umask.  This field is
    1579 +               initialize to 022, and affects ext2fs_mkdir in the obvious
    1580 +               way.  (In the future umask should also affect new file
    1581 +               creation routines, but the fileio functions don't
    1582 +               currently support this yes.)
    1583 +
    1584 +       * ismounted.c (check_mntent_file): Stat all of the entries in
    1585 +               /etc/mtab and/or /proc/mounts in order to catch dim-witted
    1586 +               system administrators who might have created alias
    1587 +               devices.
    1588 +
    1589 +2001-12-23  Theodore Tso  <tytso@mit.edu>
    1590 +
    1591 +       * Makefile.in, jfs_user.h: Move linux/jbd.h to
    1592 +               ext2fs/kernel-jbd.h, to avoid using the system header
    1593 +               file version of hbd.h when using diet glibc (since it
    1594 +               forcibly adds /usr/include to the beginning of the
    1595 +               include search path.)
    1596 +
    1597 +       * kernel-jbd.h, kernel-list.h, jfs_compat.h: Move files from
    1598 +               include/linux directory.
    1599 +
    1600 +2001-12-16  Theodore Tso  <tytso@mit.edu>
    1601 +
    1602 +       * bitops.h (ext2fs_mark_generic_bitmap, ext2fs_unmark_generic_bitmap),
    1603 +               ext_attr.c (ext2fs_read_ext_attr, ext2fs_write_ext_attr),
    1604 +               fileio.c (ext2fs_file_write): Fix gcc -Wall nits
    1605 +
    1606 +       * Makefile.in, jfs_user.h: linux/jfs.h has been renamed to
    1607 +               linux/jbd.h
    1608 +
    1609 +2001-12-03  Theodore Tso  <tytso@mit.edu>
    1610 +
    1611 +       * unix_io.c (unix_open): Make sure the ulimit workaround works
    1612 +               regardless of the version of glibc which is used to
    1613 +               compild e2fsprogs.
    1614 +
    1615 +2001-11-26  Theodore Tso  <tytso@mit.edu>
    1616 +
    1617 +       * unix_io.c (unix_open): Work around a bug in 2.4.10+ kernels by
    1618 +               trying to unset the filesize limit if at all possible,
    1619 +               if a block device is getting opened.  (The filesize limit
    1620 +               shouldn't be applied against writes to a block device, but
    1621 +               starting in 2.4.10, the kernel is doing this.)
    1622 +       
    1623 +2001-11-05  Theodore Tso  <tytso@mit.edu>
    1624 +
    1625 +       * mkjournal.c (ext2fs_add_journal_inode): When creating a .journal
    1626 +               file on adding a journal to an already-mounted filesystem,
    1627 +               try to clear the ext2 file attributes on an already
    1628 +               existing .journal file so that we don't fail if on a
    1629 +               partially added journal to the filesystem.
    1630 +
    1631 +       * ext2_fs.h: Define a new ext2 file attribute, EXT2_NOTAIL_FL,
    1632 +               which signals that a particular inode should not have the
    1633 +               last bits of data (the "tail") be merged with another
    1634 +               file.  This is necessary to keep LILO happy.
    1635 +
    1636 +2001-09-20  Theodore Tso  <tytso@thunk.org>
    1637 +
    1638 +       * Release of E2fsprogs 1.25
    1639 +
    1640 +2001-09-16  Theodore Tso  <tytso@mit.edu>
    1641 +
    1642 +       * ext2_ext_attr.h: Remove unneeded #include of <linux/config.h>
    1643 +               which was breaking the build on the Hurd.  (Addresses
    1644 +               Debian bug #112414).
    1645 +
    1646 +2001-09-13  Theodore Ts'o  <tytso@mit.edu>
    1647 +
    1648 +       * ismounted.c (check_mntent_file): We now validate the entry in
    1649 +               /etc/mtab to make sure the filesystem is really mounted,
    1650 +               since some broken distributions (read: Slackware) have
    1651 +               buggy boot scripts that don't initialize /etc/mtab before
    1652 +               checking non-root filesystems.  (Slackware also doesn't
    1653 +               check the root filesystem separately, and reboot if the
    1654 +               root filesystem had changes applied to it, which is
    1655 +               dangerous and broken.)   
    1656 +
    1657 +2001-09-02  Theodore Tso  <tytso@thunk.org>
    1658 +
    1659 +       * Release of E2fsprogs 1.24a
    1660 +
    1661 +2001-08-30  Theodore Tso  <tytso@thunk.org>
    1662 +
    1663 +       * Release of E2fsprogs 1.24
    1664 +
    1665 +2001-08-30  Theodore Tso  <tytso@valinux.com>
    1666 +
    1667 +       * getsize.c (ext2fs_get_device_size): Back out BLKGETSIZE64
    1668 +               changes, since the ioctl number has been reused by another
    1669 +               unofficial patch.
    1670 +
    1671 +2001-08-15  Theodore Tso  <tytso@valinux.com>
    1672 +
    1673 +       * Release of E2fsprogs 1.23
    1674 +
    1675 +2001-08-05  Theodore Tso  <tytso@valinux.com>
    1676 +
    1677 +       * alloc.c (ext2fs_new_inode, ext2fs_new_block): Use the fast
    1678 +               version of the bitmap test routines to speed up these
    1679 +               routines.  (At some point I may want to make these
    1680 +               routines use the find_first_bit functions, but that will
    1681 +               add a lot of complexity since it means that these
    1682 +               functions will have to break the bitmap abstraction
    1683 +               boundary.  It's not clear it's worth it.)
    1684 +
    1685 +       * mkjournal.c (mkjournal_proc): Remember the last block allocated
    1686 +               to speed up ext2fs_new_block().
    1687 +
    1688 +2001-07-29  Theodore Tso  <tytso@valinux.com>
    1689 +
    1690 +       * finddev.c (scan_dir): Fix memory leak; we weren't calling
    1691 +               closedir() when exiting the function in all cases.
    1692 +
    1693 +2001-07-27  Theodore Tso  <tytso@valinux.com>
    1694 +
    1695 +       * mkjournal.c (ext2fs_create_journal_superblock): Set the first
    1696 +               block usable in the journal for external journals to be 2
    1697 +               or 3, depending on the blocksize, so that the existing
    1698 +               kernel code does the right thing.
    1699 +
    1700 +       * getsize.c (ext2fs_get_device_size): Add support for the
    1701 +               BLKGETSIZE64 ioctl.  (Ioctl defined by unofficial patches
    1702 +               from Ben LaHaise, but it's likely this interface won't
    1703 +               change.)
    1704 +
    1705 +       * mkjournal.c (ext2fs_add_journal_device): Use the correct block
    1706 +               when writing the journal superblock, too.  (Oops! Needed
    1707 +               to make 1k filesystems with external journal to work.)
    1708 +
    1709 +2001-07-26  Theodore Tso  <tytso@valinux.com>
    1710 +
    1711 +       * mkjournal.c (ext2fs_add_journal_device): Use the correct block
    1712 +               to find the journal superblock if the blocksize is 1024.
    1713 +
    1714 +2001-07-21  Theodore Tso  <tytso@valinux.com>
    1715 +
    1716 +       * ext2_err.et.in (EXT2_ET_LOAD_EXT_JOURNAL): Add new error code
    1717 +
    1718 +2001-07-20  Theodore Tso  <tytso@valinux.com>
    1719 +
    1720 +       * ext_attr.c (ext2fs_write_ext_attr): When writing the extended
    1721 +               attribute block, set the filesystem changed bit.
    1722 +
    1723 +       * bitops.h (ext2fs_find_first_bit_set, ext2fs_find_next_bit_set):
    1724 +               Comment out these functions since we're not using them.
    1725 +
    1726 +2001-07-10  Theodore Tso  <tytso@valinux.com>
    1727 +
    1728 +       * closefs.c (write_primary_superblock): After writing changes to
    1729 +               the primary superblock, update the original superblock
    1730 +               copy so we don't have to re-write those changes in the
    1731 +               future.
    1732 +               (ext2fs_flush): Clear the superblock dirty flag after
    1733 +               we've flushed out changes to disk.
    1734 +
    1735 +2001-07-07  Theodore Tso  <tytso@valinux.com>
    1736 +
    1737 +       * bitops.h (ext2fs_find_first_bit_set): Use %esi instead of %ebx
    1738 +               to avoid register conflicts when compiling in PIC mode.
    1739 +
    1740 +2001-07-04  Theodore Tso  <tytso@valinux.com>
    1741 +
    1742 +       * bitops.h (ext2fs_find_first_bit_set, ext2fs_find_next_bit_set):
    1743 +               Add new functions (C and in i386 assembler) which quickly
    1744 +               find bits set in a bitmask.
    1745 +
    1746 +2001-06-23  Theodore Tso  <tytso@valinux.com>
    1747 +
    1748 +       * Makefile.in, ext_attr.c, ext2_attr.c, ext2fs.h: Add new files
    1749 +               ext2_ext_attr.h and ext_attr.c for extended attributes
    1750 +               support.
    1751 +
    1752 +       * Release of E2fsprogs 1.22
    1753 +
    1754 +2001-06-22  Theodore Tso  <tytso@valinux.com>
    1755 +
    1756 +       * mkjournal.c (ext2fs_add_journal_inode): Move close of file
    1757 +               descriptor so that adding a journal to a mounted
    1758 +               filesystem doesn't die.  (Fixes a bug accidentally
    1759 +               introduced in e2fsprogs 1.21.)
    1760 +
    1761 +       * mkjournal.c (ext2fs_add_journal_inode): Only use fchflags if
    1762 +               HAVE_CHFLAGS and UF_NODUMP are defined, since the Hurd has
    1763 +               fchflags without defining UF_NODUMP.  (Addresses Debian
    1764 +               bug #101361)
    1765 +
    1766 +       * flushb.c: Use platform independent method of defining the
    1767 +               BLKFLSBUF and FDFLUSH ioctl's.  Also include sys/mount.h
    1768 +               since on newer glibc's BLKFLSBUF is defined there.
    1769 +
    1770 +       * bitops.h: The C language versions of ext2fs_swab16/32 need to be
    1771 +               included if EXT2FS_ENABLE_SWAPFS is defined, since we need
    1772 +               to support byte swapping even if we don't support the
    1773 +               conversion functions.  (Fixes Debian bug #101686).
    1774 +
    1775 +       * dirblock.c (ext2fs_read_dir_block): Remove use of dir_entry_2
    1776 +               since the byte-swapping code all assumes the
    1777 +               ext2_dir_entry structure.  (It's a question of whether or
    1778 +               not name_len should be byte-swapped or not, and whether
    1779 +               it's a 16 bit or 8 bit field.)
    1780 +
    1781 +2001-06-15  Theodore Tso  <tytso@valinux.com>
    1782 +
    1783 +       * Release of E2fsprogs 1.21
    1784 +
    1785 +2001-06-15  Theodore Tso  <tytso@valinux.com>
    1786 +
    1787 +       * Makefile.in: Fix bug in installation of ext2_types.h.  It is a
    1788 +               file which is generated and is therefore found in the
    1789 +               build directory, not source directory.
    1790 +
    1791 +       * ismounted.c (check_mntent_file): Use a test file in / to check
    1792 +               to see if the root filesystem is mounted read-only.  This
    1793 +               protects against the case where /etc might not be on /, as
    1794 +               well as the case where /etc/mtab doesn't exist.  (Both are
    1795 +               should-never happen scenarios, but you never know...)
    1796 +
    1797 +2001-06-14  Theodore Tso  <tytso@valinux.com>
    1798 +
    1799 +       * ismounted.c (ext2fs_check_if_mounted): Fix grammer in comment.
    1800 +               Remove unneeded #pragma argsused, since the arguments are
    1801 +               always used.
    1802 +
    1803 +2001-06-13  Theodore Tso  <tytso@valinux.com>
    1804 +
    1805 +       * ext2_types.h.in: If linux/types.h has been defined, then don't
    1806 +               try to redefine the typedefs.
    1807 +
    1808 +       * Makefile.in (HFILES): Add ext2_types.h to the list of files
    1809 +               which should be installed.
    1810 +
    1811 +       * ismounted.c (check_mntent_file): Work around GNU hurd brain
    1812 +               damage.  Addresses Debian bug #100304.
    1813 +
    1814 +       * Makefile.in: Limit some .o files from being included into the
    1815 +               library if --disable-debugfs, --disable-swapfs,
    1816 +               --disable-imager, or --disable-resizer are used.
    1817 +
    1818 +2001-06-12  Theodore Tso  <tytso@valinux.com>
    1819 +
    1820 +       * inode.c, tst_iscan.c: Stop using the compatibility badblocks
    1821 +               function, and use the ext2fs_badblocks_* functions
    1822 +               instead.
    1823 +
    1824 +2001-06-11  Theodore Tso  <tytso@valinux.com>
    1825 +
    1826 +       * Makefile.in, gen_bitmap.c, bitops.h: Move inline functions
    1827 +               ext2fs_mark_generic_bitmap and
    1828 +               ext2fs_unmark_generic_bitmap to gen_bitmap.c as normal
    1829 +               functions.  (This saves space and doesn't significantly
    1830 +               change the speed of e2fsck on a P-III.)
    1831 +
    1832 +       * ext2fs.h, bitops.h, block.c, bmap.c, closefs.c, dirblock.c,
    1833 +               inode.c, native.c, openfs.c, rw_bitmaps.c, swapfs.c: Only
    1834 +               include the byte-swapping logic if ENABLE_SWAPFS is turned
    1835 +               on or if we're on a big-endian machine.
    1836 +       
    1837 +       * initialize.c (ext2fs_initialize):Use WORDS_BIGENDIAN directly to
    1838 +               set EXT2_FLAG_SWAP_BYTES, instead of using
    1839 +               ext2fs_native_flag.
    1840 +       
    1841 +       * native.c (ext2fs_native_flag): Use WORDS_BIGENDIAN provided by
    1842 +               autoconf to determine whether or not return
    1843 +               EXT2_FLAG_SWAP_BYTES.
    1844 +
    1845 +2001-06-10  Theodore Tso  <tytso@valinux.com>
    1846 +
    1847 +       * Makefile.in: Remove the dependence on the libe2p library.
    1848 +
    1849 +       * mkjournal.c (ext2fs_add_journal_inode): Replace use of fsetflags
    1850 +               with direct usage of the ioctl/fchflags so that we don't
    1851 +               have to depend on the libe2p library.
    1852 +
    1853 +2001-06-08  Theodore Tso  <tytso@valinux.com>
    1854 +
    1855 +       * ext2_types.h.in: Use unsigned ints in favor of unsigned longs
    1856 +               when trying to find a 32-bit wide type.
    1857 +
    1858 +       * icount.c (insert_icount_el): Fix the code used to estimate the
    1859 +               size of the new icount array to be more intelligent, to
    1860 +               avoid reallocating the array too many times.  Thanks to
    1861 +               Enrique Perez-Terron for pointing this out.
    1862 +
    1863 +2001-06-02  Theodore Tso  <tytso@valinux.com>
    1864 +
    1865 +       * valid_blk.c (ext2fs_inode_has_valid_blocks): Only check i_blocks
    1866 +               for a symlink to determine whether it is a fast symlink.
    1867 +
    1868 +2001-06-01  Theodore Tso  <tytso@valinux.com>
    1869 +
    1870 +       * Makefile.in, dosio.c, ext2_fs.h, ext2_types.h.in, ext2fs.h:
    1871 +               Move include/asm/types.h.in to lib/ext2fs/ext2_types.h.in.
    1872 +
    1873 +2001-05-25  Theodore Tso  <tytso@valinux.com>
    1874 +
    1875 +       * Release of E2fsprogs 1.20
    1876 +
    1877 +2001-05-25  Theodore Tso  <tytso@valinux.com>
    1878 +
    1879 +       * ismounted.c: More cleanups for ismounted.c, some from Andreas,
    1880 +               some to clean up Andreas's patches.  Use strncpy instead
    1881 +               of strcpy to save the root's mountpoint.  Clean up #ifdef
    1882 +               structure.  Remove uneeded variable in testing/debug driver.
    1883 +
    1884 +2001-05-24  Andreas Dilger  <adilger@turbolinux.com>
    1885 +
    1886 +       * ismounted.c: Add check for root device which doesn't depend on
    1887 +               /etc/fstab or /proc/mounts to be correct.  Don't call
    1888 +               endmntent() before we are done with mnt struct.
    1889 +
    1890 +2001-05-23  Theodore Tso  <tytso@valinux.com>
    1891 +
    1892 +       * ext2_err.et.in (EXT2_ET_JOURNAL_UNSUPP_VERSION): Added new error
    1893 +               code.
    1894 +
    1895 +2001-05-21  Theodore Tso  <tytso@valinux.com>
    1896 +
    1897 +       * ext2_fs.h: Change assignment of EXT2_FEATURE_COMPAT_DIR_INDEX to
    1898 +               make room for pre-existing usage of
    1899 +               EXT2_FEATURE_COMPAT_EXT_ATTR.  Add flag EXT2_INDEX_FL with
    1900 +               the same codepoint as EXT2_BTREE_FL.
    1901 +
    1902 +2001-05-20  Theodore Tso  <tytso@valinux.com>
    1903 +
    1904 +       * ext2fs.h: #include <> instead of "" for ext2fs and et header
    1905 +               files, since they will be installed in /usr/include
    1906 +
    1907 +2001-05-14  Theodore Tso  <tytso@valinux.com>
    1908 +
    1909 +       * alloc.c, alloc_tables.c, badblocks.c, bb_compat.c, bb_inode.c,
    1910 +               bitmaps.c, bitops.c, block.c, bmap.c, bmove.c, brel_ma.c,
    1911 +               check_desc.c, closefs.c, cmp_bitmaps.c, dblist.c,
    1912 +               dblist_dir.c, dir_iterate.c, dirblock.c, dupfs.c,
    1913 +               expanddir.c, ext2_fs.h, fileio.c, finddev.c, flushb.c,
    1914 +               freefs.c, get_pathname.c, getsize.c, icount.c, imager.c,
    1915 +               initialize.c, inline.c, inode.c, irel_ma.c, ismounted.c,
    1916 +               link.c, lookup.c, mkdir.c, mkjournal.c, namei.c, native.c,
    1917 +               newdir.c, nt_io.c, openfs.c, read_bb.c, read_bb_file.c,
    1918 +               rs_bitmap.c, rw_bitmaps.c, swapfs.c, test_io.c,
    1919 +               tst_badblocks.c, tst_byteswap.c, tst_getsize.c,
    1920 +               tst_iscan.c, unix_io.c, unlink.c, valid_blk.c, version.c,
    1921 +               write_bb_file.c, ext2_fs.h: Moved file from include/linux.
    1922 +               Adjust all files in this directroy to include this file.
    1923 +
    1924 +       * mkjournal.c (ext2fs_create_journal_superblock): Remove redundant
    1925 +               code.
    1926 +
    1927 +2001-05-05  Theodore Tso  <tytso@valinux.com>
    1928 +
    1929 +       * fileio.c (ext2fs_file_read): Factored out common code and
    1930 +               cleaned up function.  Fixed a bug where if there was an
    1931 +               error reading from the disk, the number of bytes read
    1932 +               wasn't reliably set.  (Fixes Debian bug #79163)
    1933 +               (ext2fs_file_write): Factored out common code and made
    1934 +               function more efficient; if writing a full block, don't
    1935 +               bother to do a read-modify-write cycle.
    1936 +
    1937 +2001-05-04  Theodore Tso  <tytso@valinux.com>
    1938 +
    1939 +       * dirblock.c (ext2fs_read_dir_block): Check for an directory
    1940 +               record length which isn't a multiple four, and treat that
    1941 +               as an invalid.  Scan the directory and return an error
    1942 +               (EXT2_ET_DIR_CORRUPTED) if the directory records are
    1943 +               corrupted.
    1944 +               (ext2fs_write_dir_block): If while byte-swapping the
    1945 +               directory block, if there's an error, abort and return
    1946 +               EXT2_ET_DIR_CORRUPTED.
    1947 +
    1948 +2001-05-02  Theodore Tso  <tytso@valinux.com>
    1949 +
    1950 +       * ext2fs.h (EXT2_FLAG_IMAGE_FILE): Add new flag, and add
    1951 +               image_header field in the ext2_filsys structure
    1952 +
    1953 +       * block.c (block_iterate_ind, block_iterate_dind, block_iterate_tind):
    1954 +       * inode.c (ext2fs_read_inode):
    1955 +       * rw_bitmaps.c (read_bitmaps):
    1956 +       * openfs.c (ext2fs_open): Add support for EXT2_FLAG_IMAGE_FILE
    1957 +
    1958 +       * imager.c (ext2fs_image_bitmap_read): Fix bug in imager to make
    1959 +               sure the full bitmap is saved.
    1960 +
    1961 +2001-05-01  Theodore Tso  <tytso@valinux.com>
    1962 +
    1963 +       * e2image.h (struct ext2_image_hdr): Add space for the device name
    1964 +               in the image header.
    1965 +
    1966 +       * dir_iterate.c (ext2fs_process_dir_block): Add a double-check to
    1967 +               make sure the rec_len is a multiple of 4, to prevent
    1968 +               bus-errors on architectures which care about mis-aligned
    1969 +               pointer references.
    1970 +
    1971 +2001-04-25  Theodore Tso  <tytso@valinux.com>
    1972 +
    1973 +       * getsize.c (ext2fs_get_device_size): Use an unsigned long to
    1974 +               query the device sizes using the BLKGETSIZE ioctl.
    1975 +
    1976 +2001-04-16  Theodore Tso  <tytso@valinux.com>
    1977 +
    1978 +       * ismounted.c (check_mntent): Check /proc/mounts on Linux systems
    1979 +               before checking /etc/mtab.  The EXT2_MF_READONLY flag is
    1980 +               now set from the /etc/mtab options field for all
    1981 +               filesystems, not just the root filesystem.  Add debugging
    1982 +               code to make it easier to test ext2fs_check_if_mounted().
    1983 +
    1984 +       * mkjournal.c (ext2fs_create_journal_superblock): Add safety
    1985 +               check; return an error if there's an attempt to create a
    1986 +               journal less than 1024 filesystem blocks.
    1987 +
    1988 +       * ext2_err.et.in, mkjournal.c: Change EXT2_JOURNAL_NOT_BLOCK and
    1989 +               EXT2_NO_JOURNAL_SB to be EXT2_ET_*.
    1990 +
    1991 +2001-02-20  Theodore Tso  <tytso@valinux.com>
    1992 +
    1993 +       * bitops.h (ext2fs_swab16, ext2fs_swab32): Add i386 assembly
    1994 +               inline functions.
    1995 +
    1996 +       * tst_byteswap.c: New function to test the byteswap functions.
    1997 +               Add to regression test suite.
    1998 +
    1999 +2001-02-08  Theodore Tso  <tytso@valinux.com>
    2000 +
    2001 +       * e2image.h (struct ext2_image_hdr): Fix type for fs_hostname
    2002 +
    2003 +2001-02-07  Theodore Tso  <tytso@valinux.com>
    2004 +
    2005 +       * mkjournal.c (ext2fs_create_journal_superblock): Fix the setting
    2006 +               of s_first for external devices to always be 1, since
    2007 +               jsb->s_first is always relative to the start of the
    2008 +               journal superblock.  Use htonl(1) when setting s_nr_users.
    2009 +
    2010 +2001-01-17  Theodore Ts'o  <tytso@valinux.com>
    2011 +
    2012 +       * mkjournal.c (ext2fs_add_journal_device): Fix bug where the
    2013 +               device number of the filesystem (instead of the journal)
    2014 +               was being dropped into s_journal_dev.
    2015 +
    2016 +2001-01-15  Theodore Ts'o  <tytso@valinux.com>
    2017 +
    2018 +       * initialize.c (ext2fs_initialize): Add support for initializing
    2019 +               the ext2 superblock for external journal devices.  This
    2020 +               basically means we don't bother to allocate any block
    2021 +               group descriptors.
    2022 +
    2023 +       * openfs.c (ext2fs_open): Only open external journal devices if
    2024 +               the new flag EXT2_FLAG_JOURNAL_DEV_OK is passed to
    2025 +               ext2fs_open.  When opening such devices, don't try to read
    2026 +               the block group descriptors, since they're not there.
    2027 +
    2028 +       * ext2_err.et.in (EXT2_NO_JOURNAL_SB): Add new error code
    2029 +       
    2030 +       * mkjournal.c: Export a new function,
    2031 +               ext2fs_create_journal_superblock(), which allocates and
    2032 +               returns a buffer containing a journal superblock.  This is
    2033 +               needed by mke2fs to create an external journal.  Rewrote
    2034 +               ext2fs_add_journal_device() so that it no longer creates
    2035 +               the external journal, but rather adds a filesystem to an
    2036 +               existing external journal.  It handles all of the UUID
    2037 +               manipulation.
    2038 +
    2039 +       * ext2fs.h: List the EXT3_FEATURE_JOURNAL_DEV as a flag supported
    2040 +               by the library.  Define the EXT2_FLAG_JOURNAL_DEV_OK.
    2041 +               Changed function prototype for ext2fs_add_journal_device().
    2042 +               
    2043 +2001-01-14  Theodore Ts'o  <tytso@valinux.com>
    2044 +
    2045 +       * closefs.c (ext2fs_flush): Don't write out anything beyond the
    2046 +                primary superblock if EXT2_INCOMPAT_JOURNAL_DEV is
    2047 +                listed.
    2048 +
    2049 +2001-01-12  Theodore Ts'o  <tytso@valinux.com>
    2050 +
    2051 +       * imager.c: Fix gcc -Wall complaints and a series of bugs where
    2052 +               retval wasn't set correctly.  (Thanks to Andreas Dilger
    2053 +               for pointing this out.)
    2054 +
    2055 +2001-01-11    <tytso@snap.thunk.org>
    2056 +
    2057 +       * flushb.c (ext2fs_sync_device): New function which centralizes
    2058 +               all of the places which might try to use the BLKFLSBUF
    2059 +               or FDFLUSH ioctls (and usually failing to define them
    2060 +               since the system header files don't usually do this for
    2061 +               us, and we're trying to avoid usage of kernel include
    2062 +               files now).
    2063 +
    2064 +2001-01-10    <tytso@snap.thunk.org>
    2065 +
    2066 +       * alloc.c, bb_inode.c, bitmaps.c, bitops.h, block.c, bmap.c,
    2067 +               bmove.c, brel.h, cmp_bitmaps.c, dblist.c, dblist_dir.c,
    2068 +               dir_iterate.c, expanddir.c, ext2fs.h, ext2fsP.h, fileio.c,
    2069 +               finddev.c, get_pathname.c, icount.c, inode.c, irel.h,
    2070 +               irel_ma.c, ismounted.c, link.c, lookup.c, mkdir.c,
    2071 +               mkjournal.c, namei.c, newdir.c, read_bb_file.c, test_io.c,
    2072 +               tst_iscan.c, unix_io.c, unlink.c: Change use of ino_t to
    2073 +               ext2_ino_t, to protect applications that attempt to
    2074 +               compile -D_FILE_OFFSET_BITS=64, since this inexplicably
    2075 +               changes ino_t(!?).  So we use ext2_ino_t  to avoid an
    2076 +               unexpected ABI change.
    2077 +
    2078 +2001-01-05    <tytso@snap.thunk.org>
    2079 +
    2080 +       * dirblock.c (ext2fs_read_dir_block): Fix a potential case where
    2081 +               we may overrun allocated memory in case of a corrupted
    2082 +               filesystem (or an e2fsck test case :-) when byte-swapping
    2083 +               the directory block.
    2084 +
    2085 +       * ext2fs.h: Indent the #warning to fix gcc -Wall complaint.
    2086 +
    2087 +       * mkjournal.c (ext2fs_add_journal_device): Fix various gcc -Wall
    2088 +               complaints including a missing return 0 at the end of
    2089 +               ext2fs_add_journal_device.
    2090 +
    2091 +2001-01-03    <tytso@snap.thunk.org>
    2092 +
    2093 +       * Makefile.in: Link in libe2p when creating libext2fs as a shared
    2094 +               library, since mkjournal.c now references fsetflags().
    2095 +
    2096 +       * mkjournal.c (ext2fs_add_journal_inode): Folded in Andreas
    2097 +               Dilger's changes (with fixups) to allow on-line creation
    2098 +               of a journal file.
    2099 +
    2100 +       * ext2fs.h, closefs.c (ext2fs_flush): Add new flag,
    2101 +               EXT2_FLAG_SUPER_ONLY, which the close routines to only
    2102 +               update the superblock, and not the group descriptors.
    2103 +
    2104 +2000-12-30  Andreas Dilger  <adilger@turbolinux.com>
    2105 +
    2106 +       * ismounted.c: add ext2fs_check_mount_point() function, which will
    2107 +               optionally return the mount point of a device if mounted
    2108 +
    2109 +2000-12-14  Andreas Dilger  <adilger@turbolinux.com>
    2110 +
    2111 +       * mkjournal.c: rename ext2fs_add_journal_fs() to the more descriptive
    2112 +               ext2fs_add_journal_inode()
    2113 +
    2114 +2001-01-01    <tytso@snap.thunk.org>
    2115 +
    2116 +       * ext2fs.h: Remove definition of ext2fs_sb.  Note: this may break
    2117 +               source (but not binary) compatibility of some users of the
    2118 +               ext2 library.  They should just simply do a global search
    2119 +               and replace of struct ext2fs_sb with struct
    2120 +               ext2_super_block, and use their own private copy of
    2121 +               ext2_fs.h if they aren't already.
    2122 +
    2123 +       * closefs.c, initialize.c, link.c, newdir.c, openfs.c, swapfs.c:
    2124 +               Replace use of ext2fs_sb with ext2_super_block.
    2125 +
    2126 +2000-12-31    <tytso@snap.thunk.org>
    2127 +
    2128 +       * ext2fs.h: Cleaned up header file by removing definitions of
    2129 +               feature flags that might not have been defined in older
    2130 +               ext2 header files.  Now that we're using our own
    2131 +               include/linux/ext2fs.h header file, this can never happen.
    2132 +
    2133 +       * jfs_dat.h: Removed old header file which is no longer needed.
    2134 +
    2135 +2000-12-13  Theodore Ts'o  <tytso@valinux.com>
    2136 +
    2137 +       * closefs.c (ext2fs_update_dynamic_rev): New function suggested
    2138 +               by Andreas Dilger to update the filesystem revision to
    2139 +               EXT2_DYNAMIC_REV.
    2140 +
    2141 +       * swapfs.c (ext2fs_swap_super): Add byte swapping for the journal
    2142 +               fields.
    2143 +
    2144 +2000-12-09    <tytso@snap.thunk.org>
    2145 +
    2146 +       * ext2fs.h, mkjournal.c (ext2fs_add_journal_inode,
    2147 +               ext2fs_add_journal_device): Add a new argument to the APIs
    2148 +               of these function, which is a flags word.  This is used to
    2149 +               allow the creation of a V1 superblock for those folks who
    2150 +               are using ext3 0.3b in production.  Note, the user-land
    2151 +               interface for getting at this flag won't be documented, as
    2152 +               the V1 superblock is deprecated.
    2153 +
    2154 +       * mkjournal.c (init_journal_superblock): Sync Stephen's changes
    2155 +               which creates a V2 superblock instead of a V1 superblock.
    2156 +
    2157 +2000-11-21    <tytso@snap.thunk.org>
    2158 +
    2159 +       * test_io.c (test_write_blk, test_write_byte): Fix typos pointed
    2160 +               out by Andreas Dilger.
    2161 +
    2162 +2000-11-05    <tytso@snap.thunk.org>
    2163 +
    2164 +       * imager.c (ext2fs_image_{inode,super,bitmap}_{read,write},
    2165 +               ext2_fs.h, Makefile.in: New file that has routines that
    2166 +               save ext2fs metadata to a file.
    2167 +
    2168 +       * ext2_err.et.in (EXT2_ET_MAGIC_E2IMAGE): New error code assigned.
    2169 +
    2170 +       * e2image.h: New file which defines the file format for the ext2
    2171 +               image file.  (Saved copy of ext2 metadata to a file as a
    2172 +               saving throw against worst-case damage.)
    2173 +
    2174 +2000-11-01    <tytso@snap.thunk.org>
    2175 +
    2176 +       * inode.c (ext2fs_flush_icache): Add new function
    2177 +               ext2fs_flush_icache() which flushes the internal inode
    2178 +               cache.  Applications which modify the inode table blocks
    2179 +               directly must call this function.
    2180 +
    2181 +2000-10-26    <tytso@snap.thunk.org>
    2182 +
    2183 +       * mkjournal.c: Add #include of netinet/in.h, since Solaris
    2184 +               requires it for ntohl().
    2185 +
    2186 +       * ext2_io.h (io_channel_write_byte): Add new interface to allow
    2187 +               callers to write specific byte ranges.  This is an
    2188 +               optional interface, which not all IO channels may
    2189 +               implement.
    2190 +
    2191 +       * unix_io.c (unix_write_byte):
    2192 +       * test_io.c (test_write_byte): Add implementation of the
    2193 +               write_byte function.
    2194 +
    2195 +       * closefs.c (write_primary_superblock, ext2fs_flush): Add a new
    2196 +               function which writes the primary superblock.  If the IO
    2197 +               channel supports writing raw bytes directly, only fields
    2198 +               which were modified are written to the disk.  This makes
    2199 +               it safe(r) to use utilities like tune2fs on a mounted
    2200 +               filesystem.
    2201 +
    2202 +       * freefs.c (ext2fs_free): Free the original superblock if it is
    2203 +               available.
    2204 +
    2205 +       * openfs.c (ext2fs_open): Store a copy of the original superblock
    2206 +               when opening it.
    2207 +
    2208 +       * ext2fs.h: Add a field to store the original superblock in the
    2209 +               ext2 context structure.
    2210 +
    2211 +2000-10-24    <tytso@snap.thunk.org>
    2212 +
    2213 +       * llseek.c: Add #ifdef's for IA64 (it's a 64-bit platform, so we
    2214 +               don't need to use llseek).
    2215 +
    2216 +2000-10-24    <tytso@valinux.com>
    2217 +
    2218 +       * Makefile.in, ext2fs.h, jfs_dat.h, mkjournal.c: Add functions for
    2219 +               creating an ext3 journal on a filesystem.
    2220 +
    2221 +2000-08-21    <tytso@valinux.com>
    2222 +
    2223 +       * ext2_err.et.in (EXT2_JOURNAL_NOT_BLOCK): Add new error code.
    2224 +
    2225 +2000-08-22    <tytso@valinux.com>
    2226 +
    2227 +       * unix_io.c: Make massive changes to support a multiple block
    2228 +               writethrough cacheing.
    2229 +
    2230 +       * ext2_io.h: Added flags field to the io_channel structure.
    2231 +
    2232 +2000-08-19    <tytso@valinux.com>
    2233 +
    2234 +       * finddev.c, ext2fs.h, Makefile.in: Add new file, finddev.c, which
    2235 +               provides the function ext2fs_find_block_device().  This
    2236 +               function returns the pathname to a block device, given its
    2237 +               device number.
    2238 +
    2239 +2000-07-13    <tytso@valinux.com>
    2240 +
    2241 +       * Release of E2fsprogs 1.19
    2242 +
    2243 +2000-07-07  Theodore Ts'o  <tytso@valinux.com>
    2244 +
    2245 +       * ext2fs.h (EXT2_LIB_FEATURE_INCOMPAT_SUPP): Add
    2246 +               EXT3_FEATURE_INCOMPAT_RECOVER (aka needs_recovery) to the
    2247 +               list of filesystem flags supported by the library.
    2248 +
    2249 +2000-07-04  Theodore Ts'o  <tytso@valinux.com>
    2250 +
    2251 +       * ext2fs.h: Update to include latest journalling additions to the
    2252 +               superblock.
    2253 +
    2254 +       * dll/jump.funcs: Add new jumptable entries for
    2255 +               ext2fs_write_bb_FILE, ext2fs_read_bb_FILE2, and
    2256 +               ext2fs_badblocks_equal.
    2257 +
    2258 +       * tst_badblocks.c: Update test program to test
    2259 +               ext2fs_read_bb_FILE2 and ext2fs_write_FILE.
    2260 +
    2261 +       * write_bb_file.c (ext2fs_write_bb_FILE): New function which
    2262 +               writes out bad blocks list to a file.
    2263 +
    2264 +       * read_bb_file.c (ext2fs_read_bb_FILE2): Add new function which
    2265 +               changes the callback function to take two additional
    2266 +               arguments; a private blind pointer supplied by the caller,
    2267 +               and pointer to a char * containing a pointer to the
    2268 +               invalid string.
    2269 +
    2270 +       * badblocks.c (ext2fs_badblocks_equal): Add new function which
    2271 +               returns true if two badblocks list are equal.
    2272 +
    2273 +       * Makefile.in: Remove explicit link of -lc in the shared library.
    2274 +               (It shouldn't be necessary, and is harmful in some cases).
    2275 +
    2276 +2000-06-10  Theodore Ts'o  <tytso@valinux.com>
    2277 +
    2278 +       * getsize.c (main): Add debugging code under #ifdef DEBUG
    2279 +
    2280 +2000-05-27  Theodore Ts'o  <tytso@valinux.com>
    2281 +
    2282 +       * mkdir.c (ext2fs_mkdir): Read the parent directory's inode
    2283 +               earlier, so that if there's an error reading it, we can
    2284 +               more cleanly back out of the operation.
    2285 +
    2286 +2000-05-25    <tytso@snap.thunk.org>
    2287 +
    2288 +       * getsize.c (ext2fs_get_device_size): Use open64() instead of
    2289 +               open() if it exists.  Under linux, manually define the
    2290 +               ioctl for BLKGETSIZE if it isn't already defined and it's
    2291 +               safe to do so.
    2292 +
    2293 +       * unix_io.c (unix_open): Use open64() instead of open() if it
    2294 +               exists.
    2295 +
    2296 +       * llseek.c: Simplify header includes of unistd.h.  If lseek64 is
    2297 +               available (and prototypes are defined) use it in
    2298 +               preference to llseek.
    2299 +
    2300 +       * Makefile: Add hack dependency rule so that parallel makes work
    2301 +               correctly.
    2302 +
    2303 +2000-05-18  Theodore Ts'o  <tytso@valinux.com>
    2304 +
    2305 +       * ext2fs.h: Add appropriate ifdef's to support C++ compilation.
    2306 +
    2307 +2000-04-03  Theodore Ts'o  <tytso@valinux.com>
    2308 +
    2309 +       * block.c: Readibility tweak in conditionals involving
    2310 +               ctx->fs->flags.
    2311 +
    2312 +       * ext2fs.h: Use AUTOCONF SIZEOF_* macros if available to determine
    2313 +               how to define __s64 and __u64.  Turn off "compression is
    2314 +               experimental" warning if the cpp macro
    2315 +               I_KNOW_THAT_COMPRESSION_IS_EXPERIMENTAL is defined.
    2316 +
    2317 +2000-02-11    <tytso@snap.thunk.org>
    2318 +
    2319 +       * ext2fs.h: Define EXT2FS_COMPRESSED_BLKADDR and HOLE_BLKADDR.
    2320 +               Conditionally include Compression as a supported type if
    2321 +               ENABLE_COMPRESSION (via --enable-compression) is turned on.
    2322 +
    2323 +       * swapfs.c (ext2fs_swap_super): Swap the compression usage bitmap.
    2324 +
    2325 +2000-02-08    <tytso@snap.thunk.org>
    2326 +
    2327 +       * bitops.h (ext2fs_mark_generic_bitmap, ext2fs_unmark_generic_bitmap,
    2328 +               ext2fs_mark_block_bitmap, ext2fs_unmark_block_bitmap,
    2329 +               ext2fs_mark_inode_bitmap, ext2fs_unmark_inode_bitmap):
    2330 +               Change to return the previous state of the bit that is
    2331 +               being marked or unmarked.  For speed optimization.
    2332 +       
    2333 +2000-02-02  Theodore Ts'o  <tytso@valinux.com>
    2334 +
    2335 +       * getsize.c, ismounted.c: Remove unneeded include of linux/fs.h
    2336 +
    2337 +       * swapfs.c: Remove #ifdef HAVE_EXT2_INODE_VERSION since it's not
    2338 +               needed any more; we know it will always be i_generation.
    2339 +               Add support for swapping the high bits of the uid and gid.
    2340 +
    2341 +1999-11-19    <tytso@valinux.com>
    2342 +
    2343 +       * mkdir.c (ext2fs_mkdir): Only update the parent's inode link
    2344 +               counts if the link was successful.  Patch suggested by
    2345 +               jeremy@goop.org.
    2346 +
    2347 +       * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
    2348 +               the source directory.
    2349 +
    2350 +1999-11-10    <tytso@valinux.com>
    2351 +
    2352 +       * Release of E2fsprogs 1.18
    2353 +
    2354 +1999-11-08    <tytso@valinux.com>
    2355 +
    2356 +       * Makefile.in (tst_badblocks): Add freefs.o to the object list,
    2357 +               since ext2fs_badblocks_list_free was moved to freefs.c.
    2358 +
    2359 +       * tst_badblocks.c: Use the newer badblocks API names.  Add
    2360 +               duplicate blocks to the test inputs to test dealing with
    2361 +               adding blocks which are already in the badblocks list.
    2362 +
    2363 +       * badblocks.c (ext2fs_badblocks_list_add): If appending to the end
    2364 +               of the list, use a shortcut O(1) operations instead of an
    2365 +               O(n) operation.  (Idea suggested by David Beattie.)
    2366 +
    2367 +       * freefs.c (ext2fs_free): Use ext2fs_badblocks_list_free() instead
    2368 +               of badblocks_list_free(), to save a procedure call.
    2369 +
    2370 +1999-10-26    <tytso@valinux.com>
    2371 +
    2372 +       * Release of E2fsprogs 1.17
    2373 +
    2374 +1999-10-26    <tytso@valinux.com>
    2375 +
    2376 +       * ext2fs.h: Add kludge to deal with the fact that egcs cpp doesn't
    2377 +               seem to handle ~0UL the same way as they used to.
    2378 +
    2379 +1999-10-25    <tytso@valinux.com>
    2380 +
    2381 +       * nt_io.c (_OpenNtName): Open the device using
    2382 +               FILE_SYNCHRONOUS_IO_NONALERT instead of
    2383 +               FILE_SYNCHRONOUS_IO_ALERT
    2384 +               (nt_open): At the end of the device open routine, unlock
    2385 +               the drive but do not dismount it.
    2386 +
    2387 +       * initialize.c (CREATOR_OS): Use __GNU__ instead of __gnu__ to
    2388 +               detect the Hurd OS.
    2389 +
    2390 +1999-10-22    <tytso@valinux.com>
    2391 +
    2392 +       * Release of E2fsprogs 1.16
    2393 +
    2394 +1999-10-22    <tytso@valinux.com>
    2395 +
    2396 +       * mkdir.c (ext2fs_mkdir): Pass EXT2_FT_DIR flag to ext2fs_link().
    2397 +
    2398 +       * link.c (ext2fs_link): This call now uses the low three bits of
    2399 +               the flags parameter to pass the directory filetype
    2400 +               information; it will set the directory entry FILETYPE
    2401 +               information if the filesystem supports it.
    2402 +
    2403 +       * newdir.c (ext2fs_new_dir_block): If the FILETYPE superblock
    2404 +               option is set, then create the '.' and '..' entries with
    2405 +               the filetype set to EXT2_FT_DIR.
    2406 +
    2407 +1999-09-24    <tytso@valinux.com>
    2408 +
    2409 +       * nt_io.c: New file which supports I/O under Windows NT.
    2410 +
    2411 +1999-09-07    <tytso@valinux.com>
    2412 +
    2413 +       * ext2fs.h: Add new fields for journalling and define new
    2414 +               feature bits used by newer filesystems: IMAGIC_INODES,
    2415 +               HAS_JOURNAL, RECOVER.
    2416 +
    2417 +       * expanddir.c (ext2fs_expand_dir, expand_dir_proc): Change where
    2418 +               we update the inode block count and size files so that the
    2419 +               block count field is updated correctly when we create an
    2420 +               indirect block.
    2421 +
    2422 +1999-07-18  Theodore Ts'o  <tytso@valinux.com>
    2423 +
    2424 +       * Release of E2fsprogs 1.15
    2425 +
    2426 +1999-06-23    <tytso@valinux.com>
    2427 +
    2428 +       * swapfs.c (ext2fs_swap_inode): Add compatibility for Linux 2.3
    2429 +               kernels that use i_generation instead of i_version.  Patch
    2430 +               supplied by Jon Bright <sircus@sircus.demon.co.uk>.
    2431 +
    2432 +1999-06-21    <tytso@valinux.com>
    2433 +
    2434 +       * dir_iterate.c (ext2fs_process_dir_block): Check for corrupted
    2435 +               directory entry before calling the callback function.
    2436 +               This should prevent some core dumps of insufficiently
    2437 +               paranoid callback functions.
    2438 +
    2439 +1999-05-29    <tytso@rsts-11.mit.edu>
    2440 +
    2441 +       * ext2fs.h: Add feature definition for AFS IMAGIC inodes.
    2442 +
    2443 +       * fileio.c (ext2fs_file_open): Remove obsolete comment stating
    2444 +               that we don't handle writing yet (we do).  Fixed bug where
    2445 +               we weren't allocating a big enough buffer for ext2_bmap.
    2446 +
    2447 +1999-05-03    <tytso@rsts-11.mit.edu>
    2448 +
    2449 +       * openfs.c (ext2fs_open): Check to make sure that the number of
    2450 +               blocks per group is not zero --- if so, it must be a bad
    2451 +               superblock!
    2452 +
    2453 +1999-01-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2454 +
    2455 +       * Release of E2fsprogs 1.14
    2456 +
    2457 +1999-01-07  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2458 +
    2459 +       * inode.c (ext2fs_read_inode, ext2fs_write_inode): Check to see if
    2460 +               the inode number is zero; if it's zero, return
    2461 +               EXT2_ET_BAD_INODE_NUM.
    2462 +
    2463 +1998-12-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2464 +
    2465 +       * initialize.c (ext2fs_initialize): Use EXT2_FIRST_INODE instead
    2466 +               of EXT2_FIRST_INO to ensure compatibility with Linux 1.2
    2467 +               header files.
    2468 +
    2469 +Mon Jan  4 02:32:09 1999  Theodore Y. Ts'o  <tytso@mit.edu>
    2470 +
    2471 +       * llseek.c (ext2fs_llseek): Change ext2fs_llseek() in the
    2472 +               non-Linux case to use EINVAL by default, unless it isn't
    2473 +               defined, in which case we use EXT2_ET_INVALID_ARGUMENT
    2474 +               instead.
    2475 +
    2476 +1998-12-15  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2477 +
    2478 +       * Release of E2fsprogs 1.13
    2479 +
    2480 +1998-12-03  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2481 +
    2482 +       * Makefile.in: Updated dependencies.
    2483 +
    2484 +1998-09-22  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2485 +
    2486 +       * initialize.c (ext2fs_initialize): Make sure that we allocate
    2487 +               enough inodes so that we can make a valid filesystem.
    2488 +
    2489 +1998-09-02  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2490 +
    2491 +       * rw_bitmaps.c: Fixed signed/unsigned warnings.
    2492 +
    2493 +       * fileio.c (ext2fs_file_set_size): Remove unneeded extern from the
    2494 +               function declaration.
    2495 +
    2496 +       * dblist.c (make_dblist): Add safety check in case the dblist
    2497 +               pointer passed in is null (in which case, assign it to
    2498 +               fs->dblist).  Fixed some signed/unsigned warnings.
    2499 +
    2500 +       * bmap.c: Make addr_per_block be of type blk_t to avoid
    2501 +               signed/unsigned warnings.
    2502 +
    2503 +       * namei.c (ext2fs_follow_link): Remove uneeded extern from the
    2504 +               function declaration.
    2505 +
    2506 +       * get_pathname.c (get_pathname_proc): Use return value from
    2507 +               ext2fs_get_mem, instead of checking if &gp->name is
    2508 +               NULL.
    2509 +
    2510 +       * dir_iterate.c (ext2fs_process_dir_block):
    2511 +       * dblist_dir.c (ext2fs_dblist_dir_iterate): Remove uneeded extern
    2512 +               from the function declaration.
    2513 +
    2514 +       * block.c (ext2fs_block_iterate2): If the read_inode call fails,
    2515 +               return the error directly instead of jumping to the
    2516 +               cleanup routine, since we don't need to do any cleanup.
    2517 +
    2518 +       * alloc_table.c (ext2fs_allocate_group_table): Make this
    2519 +               function take a dgrp_t for its group argument.
    2520 +
    2521 +       * ext2fs.h: Make dgrp_t an __u32 type, and make
    2522 +               fs->desc_group_count be of type dgrp_t.
    2523 +
    2524 +1998-07-27  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2525 +
    2526 +       * badblocks.c (ext2fs_badblocks_list_add): Use a bigger increment
    2527 +               than 10 blocks when we need to expand the size of the
    2528 +               badblocks list.
    2529 +
    2530 +1998-07-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2531 +
    2532 +       * Release of E2fsprogs 1.12
    2533 +
    2534 +1998-06-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2535 +
    2536 +       * closefs.c (ext2fs_flush): Update the s_block_group_nr field as
    2537 +               appropriate for all of the block group copies, so that
    2538 +               it's clear where the beginning of the filesystem is on the
    2539 +               disk.  (For when the partition table gets scrod.)
    2540 +
    2541 +       * ext2fs.h: Change the name of the feature from
    2542 +               EXT2_FEATURE_INCOMPAT_DIRNAME_SIZE to
    2543 +               EXT2_FEATURE_INCOMPAT_FILESIZE (to match with the kernel).
    2544 +
    2545 +1998-06-18  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2546 +
    2547 +       * inode.c (get_next_blockgroup): Fix bug where if
    2548 +               get_next_blockgroup() is called early because of a missing
    2549 +               inode table in a block group, the current_inode counter
    2550 +               wasn't incremented correctly.
    2551 +
    2552 +1998-06-16  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2553 +
    2554 +       * read_bb.c (ext2fs_read_bb_inode): Make function more robust
    2555 +               against a completely trashed bad block inode.
    2556 +
    2557 +1998-06-10  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2558 +
    2559 +       * alloc_tables.c (ext2fs_allocate_group_table): Fix bug so that if
    2560 +               the stride length hits a bad value, we retry the block
    2561 +               allocation starting at the beginning of the block group.
    2562 +
    2563 +       * ext2fs.h, bb_inode.c, block.c, bmove.c, dir_iterate.c,
    2564 +               expanddir.c, ext2fsP.h, read_bb.c: Change blkcnt_t to be
    2565 +               e2_blkcnt_t to avoid collision with LFS API.
    2566 +
    2567 +1998-05-01  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2568 +
    2569 +       * initialize.c (ext2fs_initialize): Initialize s_inodes_count in a
    2570 +               way that avoids overflows on disk sizes greater than 4GB.
    2571 +
    2572 +1998-04-28  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2573 +
    2574 +       * ext2fs.h: Define EXT2_QSORT_TYPE appropriately for the
    2575 +               return type for comparison functions for qsort.
    2576 +
    2577 +       * dblist.c (dir_block_cmp): Use EXT2_QSORT_TYPE in function
    2578 +               declaration.
    2579 +
    2580 +1998-04-26  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2581 +
    2582 +       * ext2fs.h, bitops.h: Add support for the Watcom C compiler to do
    2583 +               inline functions.
    2584 +
    2585 +       * ext2fs.h, dosio.c: Use asm/types.h instead of linux/types.h to
    2586 +               evade a potential problem with glibc's header files trying
    2587 +               to spike out linux/types.h.
    2588 +
    2589 +       * ext2fs.h (ext2fs_resize_mem): Change the function prototype to
    2590 +               include the old size of the memory, which is needed for
    2591 +               some braindamaged memory allocation systems that don't
    2592 +               support realloc().
    2593 +
    2594 +       * badblocks.c (ext2fs_badblocks_list_add):
    2595 +         bb_inode.c (clear_bad_block_proc):
    2596 +         dblist.c (ext2fs_add_dir_block):
    2597 +         icount.c (insert_icount_el):
    2598 +         irel_ma.c (ima_put):
    2599 +         rs_bitmap.c (ext2fs_resize_generic_bitmap): Update functions to
    2600 +                 pass the old size of the memory to be resized to
    2601 +                 ext2fs_resize_mem().
    2602 +
    2603 +1998-03-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2604 +
    2605 +       * Makefile.in: Change to use new installation directory variables
    2606 +               convention.  Fix uninstall rules to take $(DESTDIR) into
    2607 +               account.
    2608 +
    2609 +1998-03-29  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2610 +
    2611 +       * ext2fs.h: If __STRICT_ANSI__ is defined and we're on a platform
    2612 +               with 32 bit longs, then we need to manually define __s64
    2613 +               and __u64, since the current kernel header files don't
    2614 +               define these if __STRICT_ANSI__ is defined.  This is a
    2615 +               problem if we are compiling with full GCC warnings, since
    2616 +               we do need 64 bit support.
    2617 +       
    2618 +       * Makefile.in (OBJS): Remove bmove.o from files to be built,
    2619 +               since we're not using ext2fs_move_blocks() and there
    2620 +               is some question as to its usefulness in its current
    2621 +               form.
    2622 +
    2623 +       * bmap.c (block_bmap): Remove unused function.
    2624 +
    2625 +       * bmove.c (process_block): Fix -Wall warning.
    2626 +
    2627 +1998-03-23  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2628 +
    2629 +       * block.c (ext2fs_block_iterate3): Make the ref_offset field
    2630 +               contain the offset into the inode.i_blocks array when
    2631 +               ref_block is zero.  Since we haven't done a formal
    2632 +               release of e2fsprogs since block_iterate2 was first
    2633 +               introduced, I removed block_iterate2, and renamed
    2634 +               block_iterate3 to be block_iterate2.
    2635 +
    2636 +       * bb_inode.c, bmove.c, dblist_dir.c, dir_iterate.c,
    2637 +               expanddir.c, ext2fs.h, ext2fsP.h, read_bb.c: Change
    2638 +               use of block_iterate and block_iterate2 to
    2639 +               block_iterate2 with the new prototype for the
    2640 +               interator function.  (using blkcnt_t forr blockcount)
    2641 +
    2642 +1998-03-21  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2643 +
    2644 +       * ext2fs.h: Add new superblock fields (s_algorithm_usage_bitmap,
    2645 +               s_prealloc_blocks, s_prealloc_dir_blocks).  Added
    2646 +               conditional defines of new features COMPAT_DIR_PREALLOC,
    2647 +               RO_COMPAT_LARGE_FILE RO_COMPAT_BTREE_DIR,
    2648 +               INCOMPAT_COMPRESSION, INCOMPAT_DIRNAME_SIZE.  Changed
    2649 +               the library to declare that we support COMPAT_DIR_PREALLOC,
    2650 +               INCOMPAT_DIRNAME_SIZE, RO_COMPAT_LARGE_FILE.
    2651 +
    2652 +       * fileio.c: Rename function ext2fs_file_llseek to be
    2653 +               ext2fs_file_lseek, which is more accurate.
    2654 +
    2655 +       * block.c: Add new function ext2fs_block_iterate3 which calls
    2656 +               the iterator function with the blockcount argument of
    2657 +               type blkcnt_t.  This version of the function is
    2658 +               allowed to handle large files; the other fucntions are
    2659 +               not.
    2660 +
    2661 +       * ext2fs.h: Add new type blkcnt_t
    2662 +
    2663 +       * ext2_err.et.in: Add error code EXT2_ET_FILE_TOO_BIG
    2664 +
    2665 +       * block.c (ext2fs_block_iterate2): Fix bug where the block count
    2666 +               field wasn't getting correctly incremented for sparse
    2667 +               files when the indirect or doubly-indirect block
    2668 +               specified in the inode was zero.
    2669 +
    2670 +Sun Mar  8 22:42:47 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2671 +
    2672 +       * unlink.c (unlink_proc):
    2673 +       * lookup.c (lookup_proc):
    2674 +       * link.c (link_proc):
    2675 +       * get_pathname.c (get_pathname_proc):
    2676 +       * dir_iterate.c (ext2fs_process_dir_block): Mask off high 8 bits
    2677 +               from dirent->name_len, so it can be used for other
    2678 +               purposes.
    2679 +
    2680 +       * ext2fs.h: Add definition of EXT2_FEATURE_INCOMPAT_DIRNAME_SIZE,
    2681 +               and indicate that we have support for this incompatible
    2682 +               option.
    2683 +
    2684 +Mon Feb 23 08:46:33 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2685 +
    2686 +       * ext2_err.et.in: Added new error code, EXT2_ET_CANCEL_REQUESTED.
    2687 +
    2688 +Fri Feb 20 23:58:01 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2689 +
    2690 +       * dblist.c (ext2fs_get_num_dirs): Improve the estimation of the
    2691 +               number of directories when the block group information is
    2692 +               unreliable.
    2693 +
    2694 +1998-02-20  Theodore Y. Ts'o  <tytso@edt.mit.edu>
    2695 +
    2696 +       * inode.c (ext2fs_get_next_inode): Always do the check to see if the
    2697 +               inode table is missing so that we catch the case where the
    2698 +               first block group is missing.
    2699 +
    2700 +       * getsize.c, ismounted.c, unix_io.c: #include errno.h since it's
    2701 +               needed.
    2702 +
    2703 +Mon Feb 16 16:16:00 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2704 +
    2705 +       * ext2_io.h, ext2fs.h: Protect against being included multiple times.
    2706 +
    2707 +       * bmove.c: #include ext2fsP.h instead of "ext2fs/ext2fs.h"
    2708 +
    2709 +       * test_io.c (test_flush): Add a debugging printf when the flush
    2710 +               method is called.
    2711 +
    2712 +       * rw_bitmaps.c (ext2fs_read_bitmaps): If the bitmaps are already
    2713 +               read in, return right away.
    2714 +
    2715 +Sun Feb  1 08:20:24 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2716 +
    2717 +       * bitops.h: Don't try to do i386 inline asm functions if the
    2718 +               compiler isn't GCC.
    2719 +
    2720 +       * ext2fs.h: If EXT2_FLAT_INCLUDES is defined, #include e2_types.h,
    2721 +               instead of linux/types.h, and e2_bitops.h instead of
    2722 +               ext2fs/bitops.h.
    2723 +
    2724 +       * icount.c, version.c: Don't #include <et/com_err.h>, as it isn't
    2725 +               necessary.
    2726 +
    2727 +Sat Jan 17 13:13:31 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2728 +
    2729 +       * inode.c (ext2fs_open_inode_scan): Initialize the group variables
    2730 +               so that we don't need to call get_next_blockgroup() the
    2731 +               first time around.  Saves a bit of time, and prevents us
    2732 +               from needing to assign -1 to current_group (which is an
    2733 +               unsigned value).
    2734 +
    2735 +       * icount.c (insert_icount_el): Cast the estimated number of inodes
    2736 +               from a float to an ino_t.
    2737 +
    2738 +       * alloc.c, alloc_tables.c, badlbocks.c, bb_compat.c, bb_inode.c,
    2739 +               bitmaps.c, bitops.c, block.c, bmap.c, bmove.c, brel_ma.c,
    2740 +               check_desc.c, closefs.c, cmp_bitmaps.c, dblist.c,
    2741 +               dblist_dir.c, dir_iterate.c, dirblock.c, dupfs.c,
    2742 +               expanddir.c, ext2fs.h, fileio.c, freefs.c,
    2743 +               get_pathname.c, getsize.c, icount.c, initialize.c,
    2744 +               inline.c, inode.c, irel_ma.c, ismounted.c, link.c,
    2745 +               lookup.c, mkdir.c, namei.c, native.c, newdir.c,
    2746 +               openfs.c, read_bb.c, read_bb_file.c, rs_bitmap.c,
    2747 +               rw_bitmaps.c, swapfs.c, test_io.c, tst_badblocks.c,
    2748 +               tst_getsize.c, tst_iscan.c, unix_io.c, unlink.c,
    2749 +               valid_blk.c, version.c: If EXT2_FLAT_INCLUDES is
    2750 +               defined, then assume all of the
    2751 +               ext2-specific header files are in a flat directory.
    2752 +
    2753 +       * block.c, bmove.c, dirblock.c, fileio.c: Explicitly cast
    2754 +               all assignments from void * to be compatible with C++.
    2755 +
    2756 +Tue Jan  6 11:28:15 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2757 +
    2758 +       * closefs.c (ext2fs_flush): Add a call to io_channel_flush() to
    2759 +               make sure the contents of the disk are flushed to disk.
    2760 +
    2761 +Mon Dec 29 14:39:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2762 +
    2763 +       * dblist.c (ext2fs_add_dir_block): Change new to be new_entry to
    2764 +               avoid C++ namespace clash.
    2765 +
    2766 +       * bitmaps.c (ext2fs_copy_bitmap): Change new to be new_map to
    2767 +               avoid C++ namespace clash.
    2768 +
    2769 +       * ext2fs.h, bb_inode.c, block.c, bmove.c, brel.h, brel_ma.c,
    2770 +               irel.h, irel_ma.c, dblist.c, dblist_dir.c, dir_iterate.c,
    2771 +               ext2fsP.h, expanddir.c, get_pathname.c, inode.c, link.c,
    2772 +               unlink.c: Change private to be priv_data (to avoid C++
    2773 +               namespace clash)
    2774 +
    2775 +Fri Nov 28 09:26:31 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2776 +
    2777 +       * dblist.c (ext2fs_get_num_dirs): Make ext2fs_get_num_dirs more
    2778 +               paranoid about validating the directory counts from the
    2779 +               block group information.
    2780 +
    2781 +       * all files: Don't include stdlib.h anymore; include it in
    2782 +               ext2_fs.h, since that file requires stdlib.h
    2783 +
    2784 +Thu Nov 20 16:07:38 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2785 +
    2786 +       * expanddir.c (ext2fs_expand_dir): Check to make sure the block
    2787 +               bitmap is loaded, and return an error if it is not.
    2788 +               (expand_dir_proc): Only use ext2fs_write_dir_block when
    2789 +               writing a directory block, not when writing out a fresh
    2790 +               indirect block.
    2791 +
    2792 +Tue Nov 11 22:46:45 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2793 +
    2794 +       * Makefile.in, tst_getsize.c: Added new file which is used to test
    2795 +               the ext2fs_get_device_size function.
    2796 +
    2797 +       * ext2_err.et.in (EXT2_ET_UNIMPLEMENTED): Added new error code.
    2798 +
    2799 +Sun Nov  2 20:36:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2800 +
    2801 +       * ext2fs.h: Make ext2fs_get_mem take an unsigned argument.
    2802 +
    2803 +       * fileio.c (ext2fs_file_get_size, ext2fs_file_set_size,
    2804 +               ext2fs_file_get_fs): New functions added.
    2805 +
    2806 +
    2807 +Fri Oct 31 12:16:52 1997    <tytso@EDT.MIT.EDU>
    2808 +
    2809 +       * bitops.c (ext2fs_warn_bitmap, ext2fs_warn_bitmap2): Don't call
    2810 +               com_err if OMIT_COM_ERR is defined.
    2811 +
    2812 +Thu Oct 30 11:33:57 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2813 +
    2814 +       * Rename new error codes to _ET_ in them for consistency.
    2815 +
    2816 +Sat Oct 25 00:06:58 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2817 +
    2818 +       * [all files, basically]: Added definition of ext2fs_get_mem,
    2819 +               ext2fs_free_mem, and ext2fs_resize_mem in ext2fs.h, and
    2820 +               changed all library routines to use these wrapper functions.
    2821 +
    2822 +       * dblist.c, mkdir.c: use EXT2_DIR_EXISTS and EXT2_DB_NOT_FOUND
    2823 +               instead of the system error messages.
    2824 +       
    2825 +       * ext2_err.et.in: Added new error messages EXT2_DIR_EXISTS and
    2826 +               EXT2_DB_NOT_FOUND
    2827 +
    2828 +       * ext2fs.h: Added function declarations and constants for bmap.c
    2829 +               and fileio.c.
    2830 +
    2831 +       * ext2_err.et.in: Added new error messages EXT2_FILE_RO and
    2832 +               EXT2_ET_MAGIC_EXT2_FILE
    2833 +
    2834 +       * Makefile.in: Added files bmap.c and fileio.c, and temporarily
    2835 +               commented out brel_ma.c and irel_ma.c
    2836 +
    2837 +       * bmap.c: New file which maps a file's logical block number to its
    2838 +               physical block number.
    2839 +
    2840 +       * fileio.c: New file which implements simple file reading and
    2841 +               writing primitives.
    2842 +
    2843 +       * alloc.c (ext2fs_alloc_block): New function which allocates a
    2844 +               block, zeros it, and updates the filesystem accounting
    2845 +               records appropriately.
    2846 +
    2847 +Wed Oct 22 16:47:27 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2848 +
    2849 +       * ext2_err.et.in: Added new error codes: EXT2_NO_MEMORY,
    2850 +               EXT2_INVALID_ARGUMENT, EXT2_BLOCK_ALLOC_FAIL,
    2851 +               EXT2_INODE_ALLOC_FAIL, EXT2_NOT_DIRECTORY
    2852 +
    2853 +       * Change various library files to use these functions instead of
    2854 +               EINVAL, ENOENT, etc.
    2855 +
    2856 +Mon Oct 20 19:32:40 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2857 +
    2858 +       * llseek.c: Check HAVE_LLSEEK_PROTOTYPE to see whether or not we
    2859 +               need to declare llseek().
    2860 +
    2861 +Sun Oct 19 18:56:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2862 +
    2863 +       * Rename io.h to be ext2_io.h (avoid namespace collisions)
    2864 +
    2865 +       * Add #ifdef's for HAVE_SYS_STAT_H and HAVE_SYS_TYPES_H
    2866 +
    2867 +Fri Oct  3 13:35:59 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2868 +
    2869 +       * llseek.c (ext2fs_llseek): Fix type error for ext2fs_llseek()
    2870 +
    2871 +       * icount.c (ext2fs_icount_validate):
    2872 +       * bmove.c (process_block): Fix lint error in type for fprintf().
    2873 +
    2874 +Mon Sep 15 11:45:09 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2875 +
    2876 +       * inode.c (ext2fs_check_directory): Add support for the callback
    2877 +               to return the error code EXT2_ET_CALLBACK_NOTHANDLED.
    2878 +
    2879 +Thu Sep  4 12:28:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2880 +
    2881 +       * bitmaps.c (ext2fs_set_bitmap_padding): New function which sets the
    2882 +               padding of the bitmap to be all one's.
    2883 +
    2884 +Wed Sep  3 14:27:30 1997  Theodore Y. Ts'o  <tytso@edt.mit.edu>
    2885 +
    2886 +       * llseek.c: Added missing semicolon to glibc fixup declaration of
    2887 +       llseek().
    2888 +
    2889 +       * bmove.c: Add #include of errno.h
    2890 +
    2891 +Sat Aug 23 22:47:46 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2892 +
    2893 +       * Makefile.in (ELF_SO_VERSION): Bump version to be 2.4 since we've
    2894 +               added a new field to the io_channel (app_data).
    2895 +
    2896 +       * io.h: Add a new element to the io_channel structure, app_data.
    2897 +
    2898 +       * initialize.c, openfs.c: Set io->app_data to point at the
    2899 +               filesystem handle.
    2900 +
    2901 +Thu Aug 14 08:14:17 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2902 +
    2903 +       * io.h: Change the prototype of ext2fs_llseek() to use int's
    2904 +               instead of unsigned int's.
    2905 +
    2906 +       * llseek.c: Change to allow PIC and !HAVE_LLSEEK.  Add a prototype
    2907 +               to make life easer for GNU Libc 2.
    2908 +
    2909 +       * rw_bitmaps.c: On the PowerPC, the big-endian variant of the ext2
    2910 +               filesystem has its bitmaps stored as 32-bit words with bit
    2911 +               0 as the LSB of each word.  Thus a bitmap with only bit 0
    2912 +               set would be, as a string of bytes, 00 00 00 01 00 ...  To
    2913 +               cope with this, we byte-reverse each word of a bitmap if
    2914 +               we have a big-endian filesystem, that is, if we are *not*
    2915 +               byte-swapping other word-sized numbers.
    2916 +
    2917 +Mon Aug 11 03:30:48 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2918 +
    2919 +       * dosio.c: New file to do DOS/BIOS disk accesses.
    2920 +
    2921 +       * namei.c (open_namei): Make pathlen be of type size_t.
    2922 +
    2923 +       * llseek.c: Always #include stdlib.h since it's need to define
    2924 +               size_t. 
    2925 +
    2926 +       * io.h: Use errcode_t for magic numbers.
    2927 +
    2928 +       * icount.c (get_icount_el): Use size_t where appropriate
    2929 +       
    2930 +       * dupfs.c (ext2fs_dup_handle):
    2931 +       * dblist.c (dir_block_cmp): Use size_t where appropriate.
    2932 +
    2933 +       * read_bb.c (ext2fs_read_bb_inode):
    2934 +       * cmp_bitmaps.c (ext2fs_compare_inode_bitmap): Use blk_t, ino_t
    2935 +               and size_t where appropriate.
    2936 +
    2937 +       * closefs.c (ext2fs_flush): Use dgrp_t instead of int where
    2938 +               appropriate.
    2939 +
    2940 +       * openfs.c (ext2fs_open):
    2941 +       * check_desc.c (ext2fs_check_desc): Use blk_t instead of int where
    2942 +               appropriate.
    2943 +
    2944 +       * rw_bitmaps.c (read_bitmaps):
    2945 +       * irel_ma.c:
    2946 +       * inode.c (ext2fs_write_inode):
    2947 +       * initialize.c (ext2fs_initialize):
    2948 +       * brel_ma.c: Fix to make be 16-bit safe.
    2949 +
    2950 +       * link.c (ext2fs_link):
    2951 +       * unlink.c (ext2fs_unlink):
    2952 +       * lookup.c (lookup_proc):
    2953 +       * ismounted.c (ext2fs_check_if_mounted):
    2954 +       * block.c (xlate_func): Add #pragma argsused for Turbo C.
    2955 +
    2956 +Sun Aug 10 10:05:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2957 +
    2958 +       * block.c (ext2fs_block_iterate2): Use retval which is a errcode_t
    2959 +               type.
    2960 +
    2961 +       * bitmaps.c (make_bitmap): Use size_t instead of int where
    2962 +               appropriate.
    2963 +
    2964 +       * bb_inode.c (set_bad_block_proc): Add #pragma argsused for Turbo C.
    2965 +
    2966 +       * alloc.c (ext2fs_new_inode): Use ino_t instead of int for the
    2967 +               group number.
    2968 +
    2969 +       * get_pathname.c: Use ino_t instead of int where appropriate.
    2970 +
    2971 +       * ext2fs.h: Make the magic structure element be errcode_t instead
    2972 +               of int.
    2973 +
    2974 +       * alloc.c alloc_tables.c badblocks.c bb_compat.c bb_inode.c
    2975 +               bitmaps.c block.c bmove.c brel_ma.c check_desc.c closefs.c
    2976 +               cmp_bitmaps.c dblist.c dblist_dir.c dir_iterate.c
    2977 +               dirblock.c dupfs.c expanddir.c freefs.c get_pathname.c
    2978 +               icount.c initialize.c inline.c inode.c irel_ma.c link.c
    2979 +               llseek.c lookup.c mkdir.c namei.c newdir.c read_bb.c
    2980 +               read_bb_file.c rs_bitmap.c rw_bitmaps.c swapfs.c
    2981 +               test_io.c tst_badblocks.c tst_iscan.c unix_io.c unlink.c
    2982 +               valid_blk.c version.c: Add an #ifdef for HAVE_UNISTD_H
    2983 +
    2984 +Tue Jun 17 01:33:20 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2985 +
    2986 +       * unix_io.c (unix_read_blk): If ext2fs_llseek() fails, but errno
    2987 +               is zero, then return EXT2_IO_LLSEEK_FAILED.
    2988 +
    2989 +       * ext2_err.et.in: Add a new error code, EXT2_IO_LLSEEK_FAILED.
    2990 +
    2991 +       * Release of E2fsprogs 1.11
    2992 +
    2993 +Mon Jun 16 23:53:06 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2994 +
    2995 +       * dblist.c (ext2fs_dblist_count): Added new function which returns
    2996 +               the number of directory blocks in dblist.
    2997 +
    2998 +Sat Jun 14 01:39:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    2999 +
    3000 +       * unix_io.c (unix_flush): Make the io_channel flush function do a
    3001 +               fsync to flush the kernel buffers to disk.
    3002 +
    3003 +Wed Jun 11 18:25:31 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3004 +
    3005 +       * inode.c (ext2fs_inode_scan_goto_blockgroup): Fix bug; the
    3006 +               current inode number wasn't being set by the
    3007 +               goto_blockgroup function.
    3008 +
    3009 +Mon Jun  9 10:45:48 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3010 +
    3011 +       * bmove.c (ext2fs_move_blocks): New function which takes a bitmap
    3012 +               of blocks which need to be moved, and moves those blocks
    3013 +               to another location in the filesystem.
    3014 +
    3015 +       * rs_bitmap.c (ext2fs_resize_generic_bitmap): When expanding a
    3016 +               bitmap, make sure all of the new parts of the bitmap are
    3017 +               zero.
    3018 +
    3019 +Sun Jun  8 16:24:39 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3020 +
    3021 +       * bitmaps.c (ext2fs_copy_bitmap): Fix bug; the destination bitmap
    3022 +               wasn't being returned to the caller.
    3023 +
    3024 +       * alloc_tables.c (ext2fs_allocate_group_table): Add new function
    3025 +               ext2fs_allocate_group_table() which sets the group tables
    3026 +               for a particular block group.  The relevant code was
    3027 +               factored out of ext2fs_allocate_tables().
    3028 +
    3029 +       * dblist.c (make_dblist): Adjust the initial size of the directory
    3030 +               block list to be a bit more realistic (ten plus twice the
    3031 +               number of directories in the filesystem).
    3032 +
    3033 +Thu May  8 22:19:09 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3034 +
    3035 +       * badblocks.c (ext2fs_badblocks_list_test): Fix bug where
    3036 +               ext2fs_badblocks_list_test would test the list (and exceed
    3037 +               array boundaries) if there were no bad blocks on the bad
    3038 +               blocks list.  (Showed up when user tried: mke2fs -c -b 4096).
    3039 +
    3040 +Thu Apr 24 12:16:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
    3041 +
    3042 +       * Release of E2fsprogs version 1.10
    3043 +
    3044 +Thu Apr 24 10:13:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
    3045 +
    3046 +       * alloc_tables.c (ext2fs_allocate_tables): Correctly place the
    3047 +               inode and block bitmaps based on the RAID 0 stride
    3048 +               parameter (which is passed by mke2fs).
    3049 +
    3050 +       * ext2fs.h: Add "stride" parameter to ext2_filsys, to be used by
    3051 +               mke2fs to communicate the stride length to
    3052 +               ext2fs_allocate_tables()
    3053 +
    3054 +Wed Apr 23 21:50:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
    3055 +
    3056 +       * initialize.c (ext2fs_initialize): Fix to compile under Linux 1.2
    3057 +               systems.  (We can't assume that the new filesystem types
    3058 +               are supported.)
    3059 +
    3060 +Wed Apr 23 18:40:53 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3061 +
    3062 +       * alloc_tables.c (ext2fs_allocate_tables): Make sure that we
    3063 +               allocate the inode and block bitmaps inside block group at
    3064 +               all times.
    3065 +
    3066 +Mon Apr 21 00:06:28 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3067 +
    3068 +       * alloc.c (ext2fs_new_block): Fix bug where if goal==0 and the
    3069 +               filesystem has no free blocks, ext2fs_new_block would loop
    3070 +               forever.
    3071 +
    3072 +       * dupfs.c (ext2fs_dup_handle): Duplicate an ext2 filesystem handle
    3073 +
    3074 +       * freefs.c (ext2fs_free_inode_cache): Decrement refcount and only
    3075 +               free if refcount goes to zero.
    3076 +
    3077 +       * inode.c (create_icache): Initialize refcount to 1.
    3078 +
    3079 +       * ext2fsP.h: Added refcount to ext2_inode_cache
    3080 +
    3081 +       * dblist.c (ext2fs_copy_dblist): New function to copy a directory
    3082 +               block list.
    3083 +
    3084 +       * badblocks.c (ext2fs_badblocks_copy): New function to copy a
    3085 +               badblocks structure.
    3086 +
    3087 +Sun Apr 20 23:19:51 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3088 +
    3089 +       * bitmaps.c (ext2fs_copy_bitmap): New function to copy a bitmap.
    3090 +
    3091 +       * unix_io.c, test_io.c (unix_open, test_open): Initialize the
    3092 +               refcount to 1.
    3093 +               (unix_close, test_close): Decrement the refcount and only
    3094 +               close the io_channel if the refcount goes to 0.
    3095 +
    3096 +       * io.h: Add refcount to the io_channel structure.  Add new macro
    3097 +               interface io_channel_bumpcount() to bump the refcount.
    3098 +
    3099 +Thu Apr 17 20:25:03 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3100 +
    3101 +       * inode.c (ext2fs_read_inode, ext2fs_write_inode): Use the inode
    3102 +               cache in the filesystem handle, instead of the inode cache
    3103 +               in a static variable.
    3104 +
    3105 +       * freefs.c: Added static function to free the inode cache (called by
    3106 +               ext2fs_free).
    3107 +
    3108 +       * ext2fsP.h: Added definition of the ext2_inode_cache structures.
    3109 +
    3110 +       * ext2fs.h: Added pointer to the inode_cache structure.
    3111 +
    3112 +       * block.c (block_iterate_ind, block_iterate_dind,
    3113 +               block_iterate_tind): If there are holes in the indirect,
    3114 +               doubly indirect, or triply indirect blocks, increment the
    3115 +               block count field automatically.
    3116 +
    3117 +Thu Apr 17 12:23:38 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3118 +
    3119 +       * Release of E2fsprogs version 1.09
    3120 +
    3121 +Mon Apr 14 20:38:56 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3122 +
    3123 +       * version.c (ext2fs_parse_version_string): Check the passed in
    3124 +               version string (instead of the hard-coded one).
    3125 +
    3126 +       * alloc_tables.c (ext2fs_allocate_tables): If the last block is
    3127 +               greater filesystem size, clamp it to prevent allocating a
    3128 +               block or inode bitmap beyond the filesystem.
    3129 +
    3130 +       * initialize.c (ext2fs_initialize): Fix bug where the metatdata
    3131 +               overhead calculation was accidentally removed.
    3132 +
    3133 +Fri Apr 11 18:56:26 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3134 +
    3135 +       * Release of E2fsprogs version 1.08
    3136 +
    3137 +Thu Apr 10 13:15:15 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3138 +
    3139 +       * dblist.c (ext2fs_set_dir_block): New function which sets the
    3140 +               block of a dblist entry, given the directory inode and
    3141 +               blockcnt.
    3142 +
    3143 +Sat Apr  5 12:42:42 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3144 +
    3145 +       * alloc_tables.c (ext2fs_allocate_tables): Allocate the bitmap and
    3146 +               inode bitmaps at staggered locations across the block
    3147 +               groups, to avoid concentrating the bitmaps on a small
    3148 +               number of disks when using striped RAID arrays.
    3149 +
    3150 +       * initialize.c (ext2fs_initialize): By default, choose the maximum
    3151 +               possible number of blocks per group (based on the size of
    3152 +               the bitmaps in the blocksize).
    3153 +
    3154 +Fri Apr  4 11:28:16 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3155 +
    3156 +       * initialize.c (ext2fs_initialize): Add support for
    3157 +               EXT2_COMPAT_SPARSE_SUPER feature.
    3158 +
    3159 +       * closefs.c (ext2fs_bg_has_super): New function to determine
    3160 +               whether or a particular block group should have a
    3161 +               superblock and block group descriptor.  Used for the
    3162 +               EXT2_COMPAT_SPARSE_SUPER feature is turned on.
    3163 +               (ext2fs_flush):  Check ext2fs_bg_has_super to see whether
    3164 +               or not the superblock should be written out for the block
    3165 +               group.
    3166 +
    3167 +       * ext2fs.h (EXT2_COMPAT_SPARSE_SUPER): Define compatibility flag
    3168 +               for sparse duplicate superblocks.
    3169 +
    3170 +       * version.c (ext2fs_get_library_version): New function which
    3171 +               returns the library version.
    3172 +
    3173 +       * version.c (ext2fs_parse_version_string): New function which
    3174 +               parses a version string and returns a version number,
    3175 +               so application programs can compare version numbers as
    3176 +               integers.
    3177 +
    3178 +Wed Mar 26 00:43:52 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3179 +
    3180 +       * icount.c (ext2fs_create_icount): Change function so that it also
    3181 +               takes a new argument which contains a "hint" icount
    3182 +               structure.  This "hint" icount allows the create function
    3183 +               to set up the sorted list in advance.  This reduces
    3184 +               significantly the amount of data moving needed to insert
    3185 +               these inodes into the list later.
    3186 +       
    3187 +       * icount.c (ext2fs_icount_validate): New function which validates
    3188 +               that the icount structure's rep invariant.
    3189 +
    3190 +       * icount.c (get_icount_el): Completely revamped implementation
    3191 +               to subsume put_icount_el().  Put_icount_el() used to
    3192 +               use an O(N) implementation to insert in the middle
    3193 +               of the icount list.  It now uses a O(ln N) to search
    3194 +               for where the icount should be inserted, and then uses
    3195 +               a memcpy to move the list down (instead of a for loop).
    3196 +       
    3197 +       * icount.c (ext2fs_icount_fetch, ext2fs_icount_store,
    3198 +               ext2fs_icount_increment, ext2fs_icount_decrement): Check
    3199 +               to see if the inode is within bounds; if it isn't, return
    3200 +               EINVAL.
    3201 +
    3202 +       * bitops.h (ext2fs_test_generic_bitmap): Fix error message given
    3203 +               when a bad inode number is passed to test_generic_bitmap
    3204 +               to be EXT2FS_TEST_ERROR instead of the wrong
    3205 +               EXT2FS_UNMARK_ERROR.
    3206 +
    3207 +Wed Mar 12 13:32:05 1997  Theodore Y. Ts'o  <tytso@mit.edu>
    3208 +
    3209 +       * Release of E2fsprogs version 1.07
    3210 +
    3211 +Sun Mar  2 16:46:18 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3212 +
    3213 +       * Makefile.in (ELF_VERSION): Change version to be 2.2
    3214 +
    3215 +Tue Feb 11 14:54:02 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3216 +
    3217 +       * alloc.c (ext2fs_get_free_blocks): Change routine to use
    3218 +               ext2fs_fast_test_block_bitmap_range().
    3219 +
    3220 +       * bitops.h (ext2fs_fast_test_block_bitmap_range,
    3221 +               ext2fs_test_block_bitmap_range: New inline functions which
    3222 +               test to see whether a contiguous range of blocks is
    3223 +               available.
    3224 +
    3225 +Thu Feb  6 10:00:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3226 +
    3227 +       * badblocks.c (ext2fs_badblocks_list_create): Rename sybmols to use
    3228 +               use ext2fs_badblocks_* instead of badblocks_*
    3229 +
    3230 +       * bb_compat.c: New file which translates between old badblocks_*()
    3231 +               names to ext2fs_badblocks_*()
    3232 +
    3233 +       * unlink.c (ext2fs_unlink): New file, moved ext2fs_unlink() from
    3234 +               link.c (since e2fsck doesn't use ext2fs_unlink()).
    3235 +
    3236 +       * rs_bitmap.c (ext2fs_resize_generic_bitmap): New file, contains
    3237 +               bitmap resizing routine moved from bitmaps.c, since e2fsck
    3238 +               doesn't need to use this function.
    3239 +
    3240 +       * lookup.c (ext2fs_lookup): Moved ext2fs_lookup to its own file,
    3241 +               since e2fsck only needs ext2fs_lookup.
    3242 +
    3243 +Mon Feb  3 10:11:40 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3244 +
    3245 +       * inode.c (ext2fs_open_inode_scan): Set fs->badblocks if it is not
    3246 +               already set; this is needed so that programs like dump
    3247 +               which use the inode scan functions will deal with
    3248 +               filesystems that have bad blocks in the inode table.
    3249 +
    3250 +Sun Feb  2 00:17:36 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3251 +
    3252 +       * ext2fs.h (struct_badblocks_list, struct_badblocks_iterate):
    3253 +               Moved to ext2fsP.h, since it doesn't need to be part of
    3254 +               the public interface.
    3255 +
    3256 +       * dir_iterate.c: Move ext2_dir_iterate out of namei.c.
    3257 +
    3258 +Sat Feb  1 10:14:55 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3259 +
    3260 +       * dblist.c (ext2fs_get_num_dirs): New file, which implements a
    3261 +               directory block list abstraction.  (Code moved from
    3262 +               e2fsck).
    3263 +
    3264 +       * ext2fs.h, inode.c: Moved definition of ext2_struct_inode_scan to
    3265 +               to inode.c (since no one else should be peeking inside it!)
    3266 +
    3267 +       * valid_blk.c (ext2_inode_has_valid_blocks): New function.
    3268 +
    3269 +       * openfs.c (ext2fs_open): Check the feature set in the ext2
    3270 +               superblock, and refuse to open filesystems if they contain
    3271 +               incompatible features.  (Can be overriden with the
    3272 +               EXT2_FLAG_FORCE
    3273 +
    3274 +Sun Jan 12 11:31:46 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3275 +
    3276 +       * block.c (ext2fs_block_iterate2): Added new function
    3277 +               ext2fs_block_iterate2 which changes the function
    3278 +               signature of the callback function to include the
    3279 +               referencing block and offset.
    3280 +
    3281 +       * inode.c (ext2fs_inode_scan_goto_blockgroup): Added new function
    3282 +               ext2fs_inode_scan_goto_blockgroup which allows an
    3283 +               application to jump to a particular block group while
    3284 +               doing an inode scan.
    3285 +
    3286 +Wed Jan  1 23:50:12 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3287 +
    3288 +       * dirblock.c: Include string.h, since we use memcpy().
    3289 +
    3290 +Tue Dec  3 12:27:29 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3291 +
    3292 +       * getsize.c (ext2fs_get_device_size): The ioctl BLKGETSIZE returns
    3293 +               a long not an int; this doesn't matter on i386 machines,
    3294 +               but it does on Alpha's.
    3295 +       
    3296 +Fri Nov 29 20:57:37 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3297 +
    3298 +       * inode.c (ext2fs_write_inode, ext2fs_read_inode): If the inode
    3299 +               table pointer is NULL, then return an error indicating
    3300 +               that the inode table is missing.
    3301 +               (get_next_blockgroup, get_next_blocks,
    3302 +               ext2fs_get_next_inode): Don't treat a missing inode table
    3303 +               as permanent error.  Return MISSING_INODE_TABLE, but as an
    3304 +               advisory error code, much like BAD_BLOCK_IN_INODE_TABLE.
    3305 +
    3306 +       * rw_bitmaps.c (ext2fs_write_block_bitmap,
    3307 +               ext2fs_write_inode_bitmap): If the inode or block bitmap
    3308 +               block is zero, then don't write out the inode or block
    3309 +               bitmap.  The idea here is to avoid stomping on the
    3310 +               superblock.
    3311 +               (read_bitmaps): If the inode or block bitmap block is
    3312 +               zero, then fill in that portion of the inode or block
    3313 +               bitmap with all zeros.
    3314 +
    3315 +       * inode.c (ext2fs_get_next_inode): Fix bug in handling of bad
    3316 +               blocks in inode table when the inode table size is
    3317 +               non-standard (and can therefore span blocks).
    3318 +
    3319 +Tue Oct 29 20:13:14 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3320 +
    3321 +       * alloc.c (ext2fs_new_block): Fix fencepost error in
    3322 +               ext2fs_new_block; make sure we don't try to allocate the
    3323 +               first block beyond the end of the filesystem.
    3324 +
    3325 +Mon Oct 14 11:00:48 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3326 +
    3327 +       * inode.c (check_for_inode_bad_blocks): New function called by
    3328 +               get_next_blocks() to avoid reading in bad blocks marked in
    3329 +               fs->badblocks.  Inodes located in bad blocks are returned
    3330 +               by ext2fs_get_next_inode() returns the error code
    3331 +               EXT2_ET_BAD_BLOCK_IN_INODE_TABLE.
    3332 +       
    3333 +       * alloc_tables.c (ext2fs_allocate_tables): New function which
    3334 +               performs the part of mke2fs's job of allocating the
    3335 +               filesystem tables.
    3336 +
    3337 +       * test_io.c (test_close): IO manager which is used for testing
    3338 +               purposes.
    3339 +
    3340 +Sun Oct 13 04:31:57 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3341 +
    3342 +       * inode.c (ext2fs_get_next_inode): Separate out the function of
    3343 +               setting up for a new block group to get_next_blockgroup().
    3344 +               Separate out the function of reading in blocks of the
    3345 +               inode table to get_next_blocks().
    3346 +
    3347 +       * ext2fs.h: Add the badblocks list to the ext2_filsys entry
    3348 +
    3349 +       * badblocks.c (badblocks_list_add, badblocks_list_test): Add
    3350 +               blocks to the badblock list in sorted order.  This allows
    3351 +               badblocks_list_test to be coded using a binary search for
    3352 +               speed.
    3353 +
    3354 +Tue Oct  8 02:02:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3355 +
    3356 +       * Release of E2fsprogs version 1.06
    3357 +
    3358 +Mon Oct  7 00:44:17 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3359 +
    3360 +       * ext2fs.h, block.c, closefs.c, dirblock.c, inode.c, native.c,
    3361 +               open.c: Change EXT2_SWAP to EXT2_FLAG_SWAP for
    3362 +               consistency's sake.
    3363 +       
    3364 +       * closefs.c (ext2fs_flush): If the flag EXT2_MASTER_SB_ONLY is
    3365 +               set, then only write out the master superblock.
    3366 +
    3367 +Sun Oct  6 21:45:26 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3368 +
    3369 +       * block.c (ext2fs_block_iterate): Fixed bug which caused
    3370 +               block_iterate to fail to handle HURD created filesystems;
    3371 +               it tested the inode translator field before the inode was
    3372 +               loaded.
    3373 +
    3374 +Tue Sep 17 14:08:24 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3375 +
    3376 +       * initialize.c (ext2fs_initialize): Make sure the description for
    3377 +               the inode bitmap is set correctly.
    3378 +
    3379 +       * bitmaps.c (ext2fs_allocate_generic_bitmap): Fix minor type typo.
    3380 +
    3381 +Thu Sep 12 15:23:07 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3382 +
    3383 +       * Release of E2fsprogs version 1.05
    3384 +
    3385 +Sat Sep  7 07:36:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3386 +
    3387 +       * initialize.c: Override the kernel's idea of default
    3388 +               checkinterval from 0 (never) to 180 days.
    3389 +
    3390 +Wed Aug 28 03:20:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3391 +
    3392 +       * namei.c (ext2fs_namei_follow): New function which follows
    3393 +               symbolic link (if any) at the target.
    3394 +
    3395 +Tue Aug 27 01:48:43 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3396 +
    3397 +       * inode.c (ext2fs_read_inode, ext2fs_write_inode): Add support
    3398 +               for shortcut function fs->read_inode() and fs->write_inode().
    3399 +               Added inode_cache to reduce CPU time spent in doing
    3400 +               byte swapping.
    3401 +
    3402 +       * swapfs.c (ext2fs_swap_super): Swap the new fields in a V2
    3403 +               superblock.
    3404 +
    3405 +       * namei.c (ext2fs_follow_link): New function.
    3406 +               (ext2fs_namei): Extended to have support for chasing
    3407 +               symbolic links.  ext2fs_namei() still returns an inode
    3408 +               which is a symbolic link.  Symbolic links are only chased
    3409 +               while resolving the containing directory.  To chase
    3410 +               symbolic links of the final result, use
    3411 +               ext2fs_follow_link().
    3412 +
    3413 +Mon Aug 26 23:46:07 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3414 +
    3415 +       * ext2_err.et.in: Added new error code EXT2_ET_SYMLINK_LOOP.
    3416 +
    3417 +       * bitops.h (ext2fs_set_bit, ext2fs_celar_bit): Use asm inlines
    3418 +               provided by Pete A. Zaitcev (zaitcev@lab.sun.mcst.ru).
    3419 +
    3420 +Thu Aug 22 00:40:18 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3421 +
    3422 +       * initialize.c (ext2fs_initialize): On systems where the byte
    3423 +               order is not i386 compatible, set the swap_byte flag.
    3424 +
    3425 +       * inode.c (inocpy_with_swap): Check to see if inode contains a
    3426 +               fast symlink before swapping the inode block fields.  This
    3427 +               required adding a new argument to inocpy_with_swap to
    3428 +               determine whether the mode field is in host order or not.
    3429 +
    3430 +Wed Aug 21 00:45:42 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3431 +
    3432 +       * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit): On
    3433 +               the sparc, if EXT2_STD_BITOPS set, use the standard
    3434 +               i386-compatible bitmask operations, instead on the
    3435 +               non-standard native bitmask operators.
    3436 +
    3437 +Fri Aug  9 11:11:35 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3438 +
    3439 +       * block.c (ext2fs_block_iterate): Cause block iterator to return
    3440 +               the HURD translator block (along with everything else).
    3441 +               If the flag BLOCK_FLAG_DATA_ONLY is passed to the block
    3442 +               iterator, then don't return any meta data blocks
    3443 +               (including the HURD translator).
    3444 +
    3445 +Wed Jul 17 17:13:34 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3446 +
    3447 +       * gen_uuid.c: New file, which generates DCE-compatible UUIDs.
    3448 +
    3449 +       * uuid.c: New file, containing UUID utility functions.
    3450 +
    3451 +Tue Jul 16 10:19:16 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3452 +
    3453 +       * ext2fs.h: Add a definition of the "real" ext2 superblock.
    3454 +
    3455 +Fri May 24 14:54:55 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3456 +
    3457 +       * ext2fs.h: Fix erroneous ino_t type used in block_bitmap type.
    3458 +
    3459 +Sun May 19 15:39:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3460 +
    3461 +       * openfs.c (ext2fs_open): If the blocksize in the superblock is
    3462 +               zero, return the error EXT2_ET_CORRUPT_SUPERBLOCK, since
    3463 +               that's a basic value that must be correct for the rest of
    3464 +               the library to work.
    3465 +
    3466 +       * ext2_err.et.in (EXT2_ET_CORRUPT_SUPERBLOCK): Added new error
    3467 +               code.
    3468 +
    3469 +Thu May 16 11:12:30 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
    3470 +
    3471 +       * Release of E2fsprogs version 1.04
    3472 +
    3473 +Wed Mar 27 00:33:40 1996    <tytso@rsts-11.mit.edu>
    3474 +
    3475 +       * Release of E2fsprogs version 1.03
    3476 +
    3477 +Tue Mar 26 12:06:32 1996    <tytso@rsts-11.mit.edu>
    3478 +
    3479 +       * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit):
    3480 +               Change the m68k bit numbering for bitmasks to match with
    3481 +               the bit numbering used by all other ext2 implementations.
    3482 +
    3483 +Thu Mar  7 03:37:00 1996    <tytso@rsts-11.mit.edu>
    3484 +
    3485 +       * inode.c (ext2fs_get_next_inode, ext2fs_close_inode_scan,
    3486 +       ext2fs_open_inode_scan): Support dynamically-sized inodes.
    3487 +
    3488 +Wed Mar  6 12:26:29 1996    <tytso@rsts-11.mit.edu>
    3489 +
    3490 +       * inode.c (ext2fs_read_inode, ext2fs_write_inode): Support
    3491 +               dynamically-sized inodes.
    3492 +
    3493 +       * openfs.c (ext2fs_open): Allow dynamic revision filesystem to be
    3494 +               loaded.
    3495 +
    3496 +Tue Mar  5 03:49:37 1996    <tytso@rsts-11.mit.edu>
    3497 +
    3498 +       * initialize.c (ext2fs_initialize): Catch an error condition where
    3499 +               the passed in size is *really* too small.
    3500 +
    3501 +       * alloc.c (ext2fs_new_inode):
    3502 +       * ext2fs.h (EXT2_FIRST_INODE): Add support for dynamic revision to
    3503 +               get first inode.
    3504 +
    3505 +Wed Feb 21 15:56:17 1996    <tytso@rsts-11.mit.edu>
    3506 +
    3507 +       * getsize.c (ext2fs_get_device_size): Open the device read-only
    3508 +               when trying to determine its size.
    3509 +
    3510 +Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
    3511 +
    3512 +       * Release of E2fsprogs version 1.02
    3513 +
    3514 +Sat Dec  9 09:57:50 1995    <tytso@rsts-11.mit.edu>
    3515 +
    3516 +       * rw_bitops.c (ext2fs_write_block_bitmap):
    3517 +       * bitops.c (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
    3518 +       * bitops.h (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
    3519 +               Rename {test,set,clear}_bit to ext2fs_{test,set,clear}_bit,
    3520 +               to avoid conflicts with with kernel include files.  Also
    3521 +               rename ADDR and CONST_ADDR to EXT2FS_ADDR and
    3522 +               EXT2FS_CONST_ADDR.
    3523 +
    3524 +Thu Oct 26 12:09:16 1995    <tytso@rsts-11.mit.edu>
    3525 +
    3526 +       * ext2_err.et: Updated message in EXT2_ET_BASE to say version 0.5c
    3527 +
    3528 +       * swapfs.c (ext2fs_swap_super): Put an #ifdef check around
    3529 +               s_def_resuid and s_def_resgid for backwards compatibility.
    3530 +
    3531 +Fri Oct 20 23:33:31 1995    <tytso@rsts-11.mit.edu>
    3532 +
    3533 +       * bitops.h: Added #ifdef's for Sparc.
    3534 +
    3535 +Wed Sep  6 22:14:46 1995    <tytso@rsts-11.mit.edu>
    3536 +
    3537 +       * getsize.c: #include <sys/ioctl.h> under Linux to pick up ioctl()
    3538 +               declaration
    3539 +
    3540 +       * closefs.c: #include <string.h> to pick up memset() declaration
    3541 +
    3542 +Mon Sep  4 21:45:29 1995  Remy Card  <card@bbj>
    3543 +
    3544 +       * Makefile.in: Added support for BSD shared libraries.
    3545 +
    3546 +       * initialize.c (ext2fs_initialize): Correctly set the s_creator_os
    3547 +               flag.
    3548 +
    3549 +Mon Sep  4 09:55:30 1995    <tytso@rsts-11.mit.edu>
    3550 +
    3551 +       * unix_io.c (unix_open): Add a double check; if the passed in name
    3552 +               is NULL, return EXT2_ET_BAD_DEVICE_NAME.
    3553 +
    3554 +       * ext2_err.et (EXT2_ET_BAD_DEVICE_NAME): Added new error code
    3555 +
    3556 +Wed Aug 16 15:44:10 1995    <tytso@rsts-11.mit.edu>
    3557 +
    3558 +       * inode.c (ext2fs_check_directory): Use LINUX_S_ISDIR instead of
    3559 +               S_ISDIR.
    3560 +
    3561 +Tue Aug 15 13:08:36 1995    <tytso@rsts-11.mit.edu>
    3562 +
    3563 +       * getsize.c (ext2fs_get_device_size): Add support for reading the
    3564 +               partition size from a BSD disk label.
    3565 +
    3566 +Thu Aug 10 09:33:26 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
    3567 +
    3568 +       * getsize.c (ext2fs_get_device_size): New function that determins
    3569 +               the size of a device.  Used by mke2fs and e2fsck.
    3570 +
    3571 +Sat Aug 12 03:09:54 1995  Remy Card  <card@bbj>
    3572 +
    3573 +       * Makefile.in (install): Install static libraries in $(ulibdir)
    3574 +               (/usr/lib on Linux) instead of $(libdir) (/lib on Linux).
    3575 +
    3576 +Wed Aug  9 17:04:23 1995  Theodore Y. Ts'o  <tytso@dcl>
    3577 +
    3578 +       * bitmaps.c (ext2fs_free_inode_bitmap, ext2fs_free_block_bitmap):
    3579 +               Move these functions to freefs.c.
    3580 +
    3581 +       * closefs.c (ext2fs_flush): If swapping blocks, clear the group
    3582 +               descriptors shadow memory to keep purify quiet.  (This
    3583 +               also has the nice benefit that the unused portion of the
    3584 +               shadow descriptors are zeroed out.)
    3585 +
    3586 +       * dirblock.c (ext2fs_write_dir_block): We need to use
    3587 +               dirent->rec_len *before* it's byteswapped to find the
    3588 +               location of the next directory structure!
    3589 +
    3590 +       * alloc.c (ext2fs_new_inode): Fix bug which could potentially
    3591 +               cause ext2fs_new_inode to loop infinitely if we're trying
    3592 +               to allocate an inode in group #0 and there are no free
    3593 +               inodes at all in the system.
    3594 +
    3595 +       * closefs.c: #include <errno.h> if it exists.
    3596 +
    3597 +Sun Aug  6 13:27:50 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
    3598 +
    3599 +       * ext2fs.h (BLOCK_FLAG_HOLE): Added new definition for
    3600 +               BLOCK_FLAG_APPEND.  Added documentation for the block
    3601 +               interator flags.
    3602 +
    3603 +Sat Aug  5 11:44:05 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
    3604 +
    3605 +       * Makefile.in (DLL_INSTALL_DIR, ELF_INSTALL_DIR): Set the
    3606 +               installation directories correctly.
    3607 +
    3608 +Tue Jul 18 09:27:38 1995    <tytso@rsx-11.mit.edu>
    3609 +
    3610 +       * namei.c (process_dir_block):
    3611 +       * mkdir.c (ext2fs_mkdir):
    3612 +       * expanddir.c (expand_dir_proc): Use ext2fs_{read,write}_dir_block
    3613 +               to read/write the directory block.
    3614 +
    3615 +       * dirblock.c (ext2fs_read_dir_block), ext2fs_write_dir_block): New
    3616 +               file containing functions for reading and writing
    3617 +               directory blocks (byte swapping if necesssary)
    3618 +
    3619 +       * block.c (block_iterate_ind, block_iterate_dind,
    3620 +               block_iterate_tind): Byte swap the block addresses if
    3621 +               EXT2_SWAP_BYTES is set (and swap them back before writing
    3622 +               them out.)
    3623 +
    3624 +       * inode.c (inocpy_with_swap): New function.
    3625 +       (ext2fs_get_next_inode, ext2fs_read_inode, ext2fs_write_inode):
    3626 +               Call inocpy_with_swap if EXT2_SWAP_BYTES if set.
    3627 +
    3628 +       * closefs.c (ext2fs_flush): If EXT2_SWAP_BYTES is set, then swap
    3629 +               the superblock and group descriptors before writing it out.
    3630 +
    3631 +       * openfs.c (ext2fs_open): If the magic number is byte-swapped,
    3632 +               then set the EXT2_SWAP_BYTES and byte-swap the superblock
    3633 +               and group descriptors.
    3634 +
    3635 +       * swapfs.c (ext2fs_swap_super, ext2fs_swap_group_desc): New functions
    3636 +               to desp ext2 filesystem structures.
    3637 +
    3638 +       * bitops.c (set_bit, clear_bit, test_bit): Use modifications
    3639 +               supplied by Pete A. Zaitcev so that the C language
    3640 +               versions of these functions are more portable.  They will
    3641 +               now work on both little and big endian systems, and the
    3642 +               assumption that 32-bit integers are used is gone.
    3643 +
    3644 +       * bitops.h (ext2_swab16, ext2_swab32): Added new functions for
    3645 +               doing byte swapping.
    3646 +
    3647 +       * ext2fs.h (EXT2_SWAP_BYTES): Add new flag which indicates that
    3648 +               byte swapping should take place.
    3649 +
    3650 +Sun Jul 16 06:21:43 1995    <tytso@rsx-11.mit.edu>
    3651 +
    3652 +       * Makefile.in, cmp_bitmaps.c (ext2fs_compare_block_bitmap_end,
    3653 +               ext2fs_compare_inode_bitmap_end): Added new file
    3654 +               containing routines to compare bitmaps.
    3655 +
    3656 +       * ext2_err.et (EXT2_ET_NEQ_BLOCK_BITMAP, EXT2_ET_NEQ_INODE_BITMAP):
    3657 +               Added new error codes.
    3658 +
    3659 +Sat Jul 15 04:23:37 1995    <tytso@rsx-11.mit.edu>
    3660 +
    3661 +       * inode.c (ext2fs_get_next_inode): Don't check scan->inode_buffer;
    3662 +               if the magic number is correct, it will be allocated.
    3663 +
    3664 +Fri Jul 14 19:02:59 1995    <tytso@rsx-11.mit.edu>
    3665 +
    3666 +       * block.c (block_iterate_ind, block_iterate_dind,
    3667 +               block_iterate_tind): Don't recompute block_nr each loop;
    3668 +               just increment it!  Factor check of BLOCK_FLAG_APPEND out
    3669 +               of the loop.  Factor mask of BLOCK_CHANGED into changed
    3670 +               variable out of the loop.  (block_iterate_ind, in
    3671 +               particular, gets called a lot, so every little
    3672 +               optimization helps.)
    3673 +
    3674 +Thu Jul 13 08:02:45 1995    <tytso@rsx-11.mit.edu>
    3675 +
    3676 +       * block.c (block_iterate_ind, block_iterate_dind,
    3677 +               block_iterate_tind): Precompute limit of loop to speed up
    3678 +               block_iterate_ind and company.
    3679 +
    3680 +       * bitops.h (ext2fs_fast_mark_block_bitmap,
    3681 +               ext2fs_fast_unmark_block_bitmap, ext2fs_fast_test_block_bitmap,
    3682 +               ext2fs_fast_mark_inode_bitmap, ext2fs_fast_unmark_inode_bitmap,
    3683 +               ext2fs_fast_test_inode_bitmap): Add fast version of these
    3684 +               functions, which don't do range checking.
    3685 +
    3686 +       * bitops.h (ext2fs_get_block_bitmap_start,
    3687 +               ext2fs_get_inode_bitmap_start, ext2fs_get_block_bitmap_end,
    3688 +               ext2fs_get_inode_bitmap_end): Add new accessor functions
    3689 +               which return the start and end points of the bitmaps.
    3690 +
    3691 +Tue Jul 11 18:59:41 1995    <tytso@rsx-11.mit.edu>
    3692 +
    3693 +       * llseek.c (ext2_llseek): If the offset is small enough, use lseek
    3694 +               instead of llseek.  The errno if the offset is too large
    3695 +               and lseek is not supported should be EINVAL, not -EINVAL.
    3696 +
    3697 +Thu Jun 15 23:43:02 1995  Remy Card  <card@bbj>
    3698 +
    3699 +       * Makefile.in: Added support for ELF shared libraries.
    3700 +               Fixed typos in the compilation rules.
    3701 +               (distclean): Added Makefile.
    3702 +
    3703 +       * llseek.c (llseek): New function, if llseek() does not exist in the
    3704 +       C library.
    3705 +       (ext2_llseek): Changed to call llseek().
    3706 +
    3707 +Mon Jun 12 08:29:07 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
    3708 +
    3709 +       * ext2fs.h: Use __u32 to define blk_t, instead of unsigned long.
    3710 +
    3711 +Sun Jun 11 15:02:54 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
    3712 +
    3713 +       * mkdir.c (ext2fs_mkdir): Use LINUX_S_IFDIR instead of S_IFDIR.
    3714 +
    3715 +       * ext2fs.h (LINUX_S_IFDIR): Define a linux specific versions of
    3716 +               the S_*, which are normally defined in <sys/stat.h>.  This
    3717 +               allows us to compile e2fsprogs on a non-Linux system,
    3718 +               which may have a different value for S_IFDIR.
    3719 +
    3720 +Sat Jun 10 23:47:05 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
    3721 +
    3722 +       * bitops.c (clear_bit, set_bit): Remove calls to cli() and sti();
    3723 +               this is a user-mode application!
    3724 +
    3725 +Thu Jun  8 13:13:22 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>
    3726 +
    3727 +       * llseek.c: Put the include of <linux/unistd.h> inside the #ifdef
    3728 +       __linux__ so that non-linux systems won't see it.
    3729 +
    3730 +       * alloc.c: Include <errno.h> if possible.
    3731 +       * badblocks.c: Ditto.
    3732 +       * bb_inode.c: Ditto.
    3733 +       * bitmaps.c: Ditto.
    3734 +       * block.c: Ditto.
    3735 +       * expanddir.c: Ditto.
    3736 +       * get_pathname.c: Ditto.
    3737 +       * initialize.c: Ditto.
    3738 +       * inode.c: Ditto.
    3739 +       * llseek.c: Ditto.
    3740 +       * mkdir.c: Ditto.
    3741 +       * namei.c: Ditto.
    3742 +       * newdir.c: Ditto.
    3743 +       * openfs.c: Ditto.
    3744 +       * rw_bitmaps.c: Ditto.
    3745 +       * unix_io.c: Ditto.
    3746 +
    3747 +       * Makefile.in: Rewritten to conform to GNU coding standards and
    3748 +       support separate compilation directories.
    3749 +
    3750 +Thu May 11 04:13:12 1995    <tytso@rsx-11.mit.edu>
    3751 +
    3752 +       * initialize.c (ext2fs_initialize): Don't allow more than one
    3753 +               bitmaps's worth of inodes in a group.
    3754 +
    3755 +Sat Mar 11 14:07:11 1995  Theodore Y. Ts'o  <tytso@localhost>
    3756 +
    3757 +       * llseek.c (ext2_llseek): Added error checking to the llseek()
    3758 +               compat code to protect against overflow.  This only
    3759 +               applies to 1.0 and early 1.1 kernels, which don't support
    3760 +               the llseek() system call.
    3761 +
    3762 +Thu Nov 24 16:29:00 1994  Theodore Y. Ts'o  (tytso@rt-11)
    3763 +
    3764 +       * unix_io.c (unix_open): Initialize the read_error and write_error
    3765 +               io_channel pointers to be null.
    3766 +
    3767 +       * bb_inode.c (clear_bad_block_proc): If an illegal block number is
    3768 +               found, clear it but don't try to update the filesystem
    3769 +               accounting information, since that's hopeless anyway.
    3770 +
    3771 +       * block.c (bloblock_iterate_ind, bloblock_iterate_dind,
    3772 +       bloblock_iterate_tind): Check to see if the indirect blocks are
    3773 +               valid before trying to read them.
    3774 +
    3775 +       * ext2_err.et (EXT2_ET_BAD_IND_BLOCK, EX2_ET_BAD_DIND_BLOCK,
    3776 +       EXT2_ET_BAD_TIND_BLOCK): Add new error codes.
    3777 +
    3778 +       * bitops.h (ext2fs_mark_block_bitmap, ext2fs_unmark_block_bitmap,
    3779 +       ext2fs_test_block_bitmap, ext2fs_mark_inode_bitmap,
    3780 +       ext2fs_unmark_inode_bitmap, ext2fs_test_inode_bitmap):  If an
    3781 +               illegal block or inode number is passed in, return instead
    3782 +               of trying to test, set, or clear the bit.
    3783 +
    3784 +Mon Nov  7 21:32:33 1994  Remy Card  <card@bbj>
    3785 +
    3786 +       * Makefile: Added a dummy install target in case shared libraries
    3787 +               are not built.
    3788 +
    3789 +Mon Oct 24 14:11:44 1994    (tytso@rsx-11)
    3790 +
    3791 +       * bitmaps.c (ext2fs_allocate_block_bitmap): Fix calculation of how
    3792 +               the real last block of the bitmap should be calculated.
    3793 +
    3794 +Wed Sep  7 10:05:36 1994    (tytso@rsx-11)
    3795 +
    3796 +       * bitmaps.c (ext2fs_fudge_inode_bitmap_end,
    3797 +               ext2fs_fudge_block_bitmap_end, ext2fs_clear_inode_bitmap,
    3798 +               ext2fs_clear_block_bitmap, ext2fs_free_inode_bitmap,
    3799 +               ext2fs_free_block_bitmap): Add magic number checking for
    3800 +               the inode and block bitmaps.
    3801 +
    3802 +       * bitmaps.c (ext2fs_allocate_block_bitmap): Fix to set the correct
    3803 +               magic number for a block bitmap instead of an inode bitmap.
    3804 +
    3805 +       * inode.c (ext2fs_close_inode_scan, ext2fs_get_next_inode):  Add
    3806 +               magic number checking for the inode_scan structure.
    3807 +
    3808 +       * badblocks.c (badblocks_list_free, badblocks_list_add,
    3809 +               badblocks_list_test, badblocks_list_iterate_begin,
    3810 +               badblocks_list_iterate, badblocks_list_iterate_end): Add
    3811 +               magic number checking for the badblocks_list and
    3812 +               badblocks_iterate structures.
    3813 +
    3814 +       * ext2_err.et (EXT2_ET_MAGIC_UNIX_IO_CHANNEL):
    3815 +       * unix_io.c (unix_open, unix_close, unix_set_blksize, unix_read_blk,
    3816 +               unix_write_blk, unix_flush): Add magic number checking
    3817 +               both for io_channel structure and unix_private_data
    3818 +               structure.
    3819 +
    3820 +       * openfs.c (ext2fs_open): Add check for io_manager structure's
    3821 +               magic number.
    3822 +
    3823 +       * rw_bitmaps.c (ext2fs_write_inode_bitmap, ext2fs_write_block_bitmap,
    3824 +               ext2fs_read_inode_bitmap, ext2fs_read_block_bitmap,
    3825 +               ext2fs_read_bitmaps, ext2fs_write_bitmaps):
    3826 +       * read_bb.c (ext2fs_read_bb_inode):
    3827 +       * read_bb_file.c (ext2fs_read_bb_FILE):
    3828 +       * newdir.c (ext2fs_new_dir_block):
    3829 +       * namei.c (ext2fs_dir_iterate, ext2fs_lookup, ext2fs_namei):
    3830 +       * link.c (ext2fs_link, ext2fs_unlink):
    3831 +       * inode.c (ext2fs_open_inode_scan, ext2fs_read_inode,
    3832 +               ext2fs_write_inode, ext2fs_get_blocks,
    3833 +               ext2fs_check_directory):
    3834 +       * get_pathname.c (ext2fs_get_pathname):
    3835 +       * expanddir.c (ext2fs_expand_dir):
    3836 +       * block.c (ext2fs_block_iterate):
    3837 +       * bitmaps.c (ext2fs_allocate_inode_bitmap,
    3838 +               ext2fs_allocate_block_bitmap):
    3839 +       * bb_inode.c (ext2fs_update_bb_inode):
    3840 +       * alloc.c (ext2fs_new_inode,ext2fs_new_block,ext2fs_get_free_blocks):
    3841 +       * check_desc.c (ext2fs_check_desc):
    3842 +       * closefs.c (ext2fs_close, ext2fs_flush):
    3843 +       * freefs.c (ext2fs_free): Add check for ext2_filsys magic number.
    3844 +
    3845 +       * Makefile:
    3846 +       * ext2fs.h:
    3847 +       * openfs.c:
    3848 +       * check_desc.c (ext2fs_check_desc): Move ext2fs_check_desc from
    3849 +       openfs.c into its own file.
    3850 +
    3851 +       * ext2fs.h (EXT2_CHECK_MAGIC): Added macro for checking for
    3852 +       structure magic numbers.
    3853 +
    3854 +       * closefs.c (ext2fs_flush): Folded in Remy Card's changes to clear
    3855 +       the EXT2_VALID_FS flag in the backup superblock blocks, so that if
    3856 +       someone uses the -b option to specify the use of the backup
    3857 +       superblock --- this usually means that the main superblock is
    3858 +       toast.  :-)
    3859 +
    3860 +       * ext2fs.h:
    3861 +       * ext2_err.et (EXT2_ET_REV_TOO_HIGH):
    3862 +       * openfs.c (ext2fs_open): Folded in Remy Card's changes to add a
    3863 +       revision level to the superblock.
    3864 +
    3865 +Sun Aug 21 00:50:08 1994  Theodore Y. Ts'o  (tytso@rt-11)
    3866 +
    3867 +       * ext2fs.h:
    3868 +       * bitmaps.c:
    3869 +       * bitops.c
    3870 +       * bitops.h:
    3871 +       * openfs.c:
    3872 +       * initialize.c: Completely revamped the inode and block bitmap
    3873 +       structures, so that they can be better chance of being extensible
    3874 +       in a shared library.  They are now their own type, instead of
    3875 +       being a char *.  Also, the function signatures of
    3876 +       ext2fs_test_block_bitmap, ext2fs_mark_block_bitmap,
    3877 +       ext2fs_unmark_block_bitmap, ext2fs_test_inode_bitmap,
    3878 +       ext2fs_mark_inode_bitmap, and ext2fs_unmark_inode_bitmap were
    3879 +       changed to eliminate the ext2_filsys argument, since it is no
    3880 +       longer necessary.
    3881 +
    3882 +Wed Aug 17 21:46:44 1994  Remy Card  (card@bbj)
    3883 +
    3884 +       * unix_io.c (unix_read_blk and unix_write_blk): use the llseek
    3885 +       system call if available.
    3886 +
    3887 +       * llseek.c: new file.  This is the stub calling the llseek system
    3888 +       call which allows supports for 2GB+ file systems.
    3889 +
    3890 +       * initialize.c (ext2fs_initialize): Ext2fs_initialize now stores
    3891 +       the creator operating system.
    3892 +
    3893 +Wed Aug 17 10:03:24 1994  Theodore Y. Ts'o  (tytso@rt-11)
    3894 +
    3895 +       * initialize.c (ext2fs_initialize): Ext2fs_initialize now sets up
    3896 +       the group descriptor statistics in addition to everything else.
    3897 +       This relieves mke2fs of the responsibility of doing it.
    3898 +
    3899 +       * bitops.c, bitops.h: Add assembly inline functions for the 68000.
    3900 +       Added a new #define, _EXT2_HAVE_ASM_BITOPS_ to control whether or
    3901 +       not the generic C function equivalents should be included or not.
    3902 +
    3903 +       * openfs.c (ext2fs_open): If a superblock is specified, then use
    3904 +       the backup group descriptors that go along with this superblock,
    3905 +       instead of using the primary group descriptors.  This allows
    3906 +       e2fsck to recover filesystems where the primary group descriptors
    3907 +       have been trashed.
    3908 +
    3909 +
    3910 diff -Naur silo-1.4.13.orig/libext2fs/Makefile silo-1.4.13/libext2fs/Makefile
    3911 --- silo-1.4.13.orig/libext2fs/Makefile 1969-12-31 16:00:00.000000000 -0800
    3912 +++ silo-1.4.13/libext2fs/Makefile      2006-11-02 19:21:44.212761475 -0800
    3913 @@ -0,0 +1,21 @@
    3914 +
    3915 +include ../Rules.make
    3916 +
    3917 +DEFS = -DLOCALEDIR=\"$(localedir)\" -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DENABLE_HTREE=1 -DENABLE_SWAPFS=1 -DPACKAGE=\"e2fsprogs\" -DVERSION=\"0.14.1\" -DHAVE_LONG_LONG=1 -DHAVE_LONG_DOUBLE=1 -DHAVE_WCHAR_T=1 -DHAVE_WINT_T=1 -DHAVE_INTTYPES_H_WITH_UINTMAX=1 -DHAVE_STDINT_H_WITH_UINTMAX=1 -DHAVE_INTMAX_T=1 -DHAVE_POSIX_PRINTF=1 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DINTDIV0_RAISES_SIGFPE=1 -DHAVE_UNSIGNED_LONG_LONG=1 -DHAVE_UINTMAX_T=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDINT_H=1 -DHAVE_ARGZ_H=1 -DHAVE_LIMITS_H=1 -DHAVE_LOCALE_H=1 -DHAVE_NL_TYPES_H=1 -DHAVE_MALLOC_H=1 -DHAVE_STDDEF_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_ASPRINTF=1 -DHAVE_FWPRINTF=1 -DHAVE_GETCWD=1 -DHAVE_GETEGID=1 -DHAVE_GETEUID=1 -DHAVE_GETGID=1 -DHAVE_GETUID=1 -DHAVE_MEMPCPY=1 -DHAVE_MUNMAP=1 -DHAVE_PUTENV=1 -DHAVE_SETENV=1 -DHAVE_SETLOCALE=1 -DHAVE_SNPRINTF=1 -DHAVE_STPCPY=1 -DHAVE_STRCASECMP=1 -DHAVE_STRDUP=1 -DHAVE_STRTOUL=1 -DHAVE_TSEARCH=1 -DHAVE_WCSLEN=1 -DHAVE___ARGZ_COUNT=1 -DHAVE___ARGZ_STRINGIFY=1 -DHAVE___ARGZ_NEXT=1 -DHAVE___FSETLOCKING=1 -DHAVE_DECL__SNPRINTF=0 -DHAVE_DECL__SNWPRINTF=0 -DHAVE_DECL_FEOF_UNLOCKED=1 -DHAVE_DECL_FGETS_UNLOCKED=0 -DHAVE_DECL_GETC_UNLOCKED=1 -DHAVE_ICONV=1 -DICONV_CONST= -DHAVE_LANGINFO_CODESET=1 -DHAVE_LC_MESSAGES=1 -DENABLE_NLS=1 -DHAVE_GETTEXT=1 -DHAVE_DCGETTEXT=1 -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDARG_H=1 -DHAVE_STDINT_H=1 -DHAVE_ERRNO_H=1 -DHAVE_MALLOC_H=1 -DHAVE_MNTENT_H=1 -DHAVE_PATHS_H=1 -DHAVE_DIRENT_H=1 -DHAVE_GETOPT_H=1 -DHAVE_SETJMP_H=1 -DHAVE_SIGNAL_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_LINUX_FD_H=1 -DHAVE_LINUX_MAJOR_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_PRCTL_H=1 -DHAVE_SYS_QUEUE_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_SYSMACROS_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_NETINET_IN_H=1 -DHAVE_SYS_MOUNT_H=1 -DHAVE_NET_IF_H=1 -DHAVE_VPRINTF=1 -DHAVE_RECLEN_DIRENT=1 -DHAVE_TYPE_SSIZE_T=1 -DHAVE_LSEEK64_PROTOTYPE=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=4 -DSIZEOF_LONG_LONG=8 -DHAVE_INTTYPES_H=1 -DHAVE_INTPTR_T=1 -DHAVE_GETRUSAGE=1 -DHAVE_LLSEEK=1 -DHAVE_LSEEK64=1 -DHAVE_OPEN64=1 -DHAVE_STRTOULL=1 -DHAVE_STRCASECMP=1 -DHAVE_SRANDOM=1 -DHAVE_FCHOWN=1 -DHAVE_MALLINFO=1 -DHAVE_FDATASYNC=1 -DHAVE_STRNLEN=1 -DHAVE_STRPTIME=1 -DHAVE_SYSCONF=1 -DHAVE_PATHCONF=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_MEMALIGN=1 -DHAVE_VALLOC=1 -DHAVE___SECURE_GETENV=1 -DHAVE_PRCTL=1 -DHAVE_DLOPEN=1 -DHAVE_EXT2_IOCTLS=1
    3918 +
    3919 +DEBUGFS_LIB_OBJS = inode_io.o namei.o write_bb_file.o
    3920 +RESIZE_LIB_OBJS = rs_bitmap.o dupfs.o test_io.o
    3921 +E2IMAGE_LIB_OBJS = imager.o
    3922 +OBJS= $(DEBUGFS_LIB_OBJS) $(RESIZE_LIB_OBJS) $(E2IMAGE_LIB_OBJS) ext2_err.o alloc.o alloc_sb.o alloc_stats.o alloc_tables.o badblocks.o bb_inode.o bitmaps.o bitops.o block.o bmap.o check_desc.o closefs.o dblist.o dblist_dir.o dirblock.o dirhash.o dir_iterate.o expanddir.o ext_attr.o finddev.o flushb.o freefs.o gen_bitmap.o get_pathname.o getsize.o getsectsize.o icount.o ind_block.o initialize.o inline.o inode.o io_manager.o ismounted.o link.o llseek.o lookup.o mkdir.o mkjournal.o native.o newdir.o openfs.o read_bb.o read_bb_file.o res_gdt.o rw_bitmaps.o swapfs.o unix_io.o unlink.o valid_blk.o version.o
    3923 +
    3924 +all: libext2fs.a
    3925 +
    3926 +libext2fs.a: $(OBJS)
    3927 +       $(RM) libext2fs.a
    3928 +       $(AR) rc libext2fs.a $(OBJS)
    3929 +
    3930 +clean:
    3931 +       $(RM) -f libext2fs.a $(OBJS)
    3932 +
    3933 +.c.o:
    3934 +       $(CC-SILO) $(CFLAGS) $(DEFS) -c $< -o $@
    3935580diff -Naur silo-1.4.13.orig/libext2fs/alloc.c silo-1.4.13/libext2fs/alloc.c
    3936 --- silo-1.4.13.orig/libext2fs/alloc.c  1969-12-31 16:00:00.000000000 -0800
    3937 +++ silo-1.4.13/libext2fs/alloc.c       2006-11-02 19:21:44.212761475 -0800
     581--- silo-1.4.13.orig/libext2fs/alloc.c  1969-12-31 19:00:00.000000000 -0500
     582+++ silo-1.4.13/libext2fs/alloc.c       2007-04-03 17:02:53.000000000 -0400
    3938583@@ -0,0 +1,173 @@
    3939584+/*
     
    4111756+
    4112757diff -Naur silo-1.4.13.orig/libext2fs/alloc_sb.c silo-1.4.13/libext2fs/alloc_sb.c
    4113 --- silo-1.4.13.orig/libext2fs/alloc_sb.c       1969-12-31 16:00:00.000000000 -0800
    4114 +++ silo-1.4.13/libext2fs/alloc_sb.c    2006-11-02 19:21:44.212761475 -0800
     758--- silo-1.4.13.orig/libext2fs/alloc_sb.c       1969-12-31 19:00:00.000000000 -0500
     759+++ silo-1.4.13/libext2fs/alloc_sb.c    2007-04-03 17:02:53.000000000 -0400
    4115760@@ -0,0 +1,57 @@
    4116761+/*
     
    4172817+}
    4173818diff -Naur silo-1.4.13.orig/libext2fs/alloc_stats.c silo-1.4.13/libext2fs/alloc_stats.c
    4174 --- silo-1.4.13.orig/libext2fs/alloc_stats.c    1969-12-31 16:00:00.000000000 -0800
    4175 +++ silo-1.4.13/libext2fs/alloc_stats.c 2006-11-02 19:21:44.212761475 -0800
     819--- silo-1.4.13.orig/libext2fs/alloc_stats.c    1969-12-31 19:00:00.000000000 -0500
     820+++ silo-1.4.13/libext2fs/alloc_stats.c 2007-04-03 17:02:53.000000000 -0400
    4176821@@ -0,0 +1,52 @@
    4177822+/*
     
    4228873+}
    4229874diff -Naur silo-1.4.13.orig/libext2fs/alloc_tables.c silo-1.4.13/libext2fs/alloc_tables.c
    4230 --- silo-1.4.13.orig/libext2fs/alloc_tables.c   1969-12-31 16:00:00.000000000 -0800
    4231 +++ silo-1.4.13/libext2fs/alloc_tables.c        2006-11-02 19:21:44.212761475 -0800
     875--- silo-1.4.13.orig/libext2fs/alloc_tables.c   1969-12-31 19:00:00.000000000 -0500
     876+++ silo-1.4.13/libext2fs/alloc_tables.c        2007-04-03 17:02:53.000000000 -0400
    4232877@@ -0,0 +1,117 @@
    4233878+/*
     
    4349994+
    4350995diff -Naur silo-1.4.13.orig/libext2fs/badblocks.c silo-1.4.13/libext2fs/badblocks.c
    4351 --- silo-1.4.13.orig/libext2fs/badblocks.c      1969-12-31 16:00:00.000000000 -0800
    4352 +++ silo-1.4.13/libext2fs/badblocks.c   2006-11-02 19:21:44.212761475 -0800
     996--- silo-1.4.13.orig/libext2fs/badblocks.c      1969-12-31 19:00:00.000000000 -0500
     997+++ silo-1.4.13/libext2fs/badblocks.c   2007-04-03 17:02:53.000000000 -0400
    4353998@@ -0,0 +1,327 @@
    4354999+/*
     
    46801325+}
    46811326diff -Naur silo-1.4.13.orig/libext2fs/bb_compat.c silo-1.4.13/libext2fs/bb_compat.c
    4682 --- silo-1.4.13.orig/libext2fs/bb_compat.c      1969-12-31 16:00:00.000000000 -0800
    4683 +++ silo-1.4.13/libext2fs/bb_compat.c   2006-11-02 19:21:44.212761475 -0800
     1327--- silo-1.4.13.orig/libext2fs/bb_compat.c      1969-12-31 19:00:00.000000000 -0500
     1328+++ silo-1.4.13/libext2fs/bb_compat.c   2007-04-03 17:02:53.000000000 -0400
    46841329@@ -0,0 +1,63 @@
    46851330+/*
     
    47471392+}
    47481393diff -Naur silo-1.4.13.orig/libext2fs/bb_inode.c silo-1.4.13/libext2fs/bb_inode.c
    4749 --- silo-1.4.13.orig/libext2fs/bb_inode.c       1969-12-31 16:00:00.000000000 -0800
    4750 +++ silo-1.4.13/libext2fs/bb_inode.c    2006-11-02 19:21:44.212761475 -0800
     1394--- silo-1.4.13.orig/libext2fs/bb_inode.c       1969-12-31 19:00:00.000000000 -0500
     1395+++ silo-1.4.13/libext2fs/bb_inode.c    2007-04-03 17:02:53.000000000 -0400
    47511396@@ -0,0 +1,267 @@
    47521397+/*
     
    50181663+
    50191664diff -Naur silo-1.4.13.orig/libext2fs/bitmaps.c silo-1.4.13/libext2fs/bitmaps.c
    5020 --- silo-1.4.13.orig/libext2fs/bitmaps.c        1969-12-31 16:00:00.000000000 -0800
    5021 +++ silo-1.4.13/libext2fs/bitmaps.c     2006-11-02 19:21:44.212761475 -0800
     1665--- silo-1.4.13.orig/libext2fs/bitmaps.c        1969-12-31 19:00:00.000000000 -0500
     1666+++ silo-1.4.13/libext2fs/bitmaps.c     2007-04-03 17:02:53.000000000 -0400
    50221667@@ -0,0 +1,212 @@
    50231668+/*
     
    52341879+}
    52351880diff -Naur silo-1.4.13.orig/libext2fs/bitops.c silo-1.4.13/libext2fs/bitops.c
    5236 --- silo-1.4.13.orig/libext2fs/bitops.c 1969-12-31 16:00:00.000000000 -0800
    5237 +++ silo-1.4.13/libext2fs/bitops.c      2006-11-02 19:21:44.212761475 -0800
     1881--- silo-1.4.13.orig/libext2fs/bitops.c 1969-12-31 19:00:00.000000000 -0500
     1882+++ silo-1.4.13/libext2fs/bitops.c      2007-04-03 17:02:53.000000000 -0400
    52381883@@ -0,0 +1,91 @@
    52391884+/*
     
    53291974+
    53301975diff -Naur silo-1.4.13.orig/libext2fs/bitops.h silo-1.4.13/libext2fs/bitops.h
    5331 --- silo-1.4.13.orig/libext2fs/bitops.h 1969-12-31 16:00:00.000000000 -0800
    5332 +++ silo-1.4.13/libext2fs/bitops.h      2006-11-02 19:21:44.212761475 -0800
     1976--- silo-1.4.13.orig/libext2fs/bitops.h 1969-12-31 19:00:00.000000000 -0500
     1977+++ silo-1.4.13/libext2fs/bitops.h      2007-04-03 17:02:53.000000000 -0400
    53331978@@ -0,0 +1,617 @@
    53341979+/*
     
    59502595+
    59512596diff -Naur silo-1.4.13.orig/libext2fs/block.c silo-1.4.13/libext2fs/block.c
    5952 --- silo-1.4.13.orig/libext2fs/block.c  1969-12-31 16:00:00.000000000 -0800
    5953 +++ silo-1.4.13/libext2fs/block.c       2006-11-02 19:21:44.216761341 -0800
     2597--- silo-1.4.13.orig/libext2fs/block.c  1969-12-31 19:00:00.000000000 -0500
     2598+++ silo-1.4.13/libext2fs/block.c       2007-04-03 17:02:53.000000000 -0400
    59542599@@ -0,0 +1,437 @@
    59552600+/*
     
    63913036+
    63923037diff -Naur silo-1.4.13.orig/libext2fs/bmap.c silo-1.4.13/libext2fs/bmap.c
    6393 --- silo-1.4.13.orig/libext2fs/bmap.c   1969-12-31 16:00:00.000000000 -0800
    6394 +++ silo-1.4.13/libext2fs/bmap.c        2006-11-02 19:21:44.216761341 -0800
     3038--- silo-1.4.13.orig/libext2fs/bmap.c   1969-12-31 19:00:00.000000000 -0500
     3039+++ silo-1.4.13/libext2fs/bmap.c        2007-04-03 17:02:53.000000000 -0400
    63953040@@ -0,0 +1,270 @@
    63963041+/*
     
    66653310+
    66663311diff -Naur silo-1.4.13.orig/libext2fs/bmove.c silo-1.4.13/libext2fs/bmove.c
    6667 --- silo-1.4.13.orig/libext2fs/bmove.c  1969-12-31 16:00:00.000000000 -0800
    6668 +++ silo-1.4.13/libext2fs/bmove.c       2006-11-02 19:21:44.216761341 -0800
     3312--- silo-1.4.13.orig/libext2fs/bmove.c  1969-12-31 19:00:00.000000000 -0500
     3313+++ silo-1.4.13/libext2fs/bmove.c       2007-04-03 17:02:53.000000000 -0400
    66693314@@ -0,0 +1,160 @@
    66703315+/*
     
    68293474+
    68303475diff -Naur silo-1.4.13.orig/libext2fs/brel.h silo-1.4.13/libext2fs/brel.h
    6831 --- silo-1.4.13.orig/libext2fs/brel.h   1969-12-31 16:00:00.000000000 -0800
    6832 +++ silo-1.4.13/libext2fs/brel.h        2006-11-02 19:21:44.216761341 -0800
     3476--- silo-1.4.13.orig/libext2fs/brel.h   1969-12-31 19:00:00.000000000 -0500
     3477+++ silo-1.4.13/libext2fs/brel.h        2007-04-03 17:02:53.000000000 -0400
    68333478@@ -0,0 +1,86 @@
    68343479+/*
     
    69193564+
    69203565diff -Naur silo-1.4.13.orig/libext2fs/brel_ma.c silo-1.4.13/libext2fs/brel_ma.c
    6921 --- silo-1.4.13.orig/libext2fs/brel_ma.c        1969-12-31 16:00:00.000000000 -0800
    6922 +++ silo-1.4.13/libext2fs/brel_ma.c     2006-11-02 19:21:44.216761341 -0800
     3566--- silo-1.4.13.orig/libext2fs/brel_ma.c        1969-12-31 19:00:00.000000000 -0500
     3567+++ silo-1.4.13/libext2fs/brel_ma.c     2007-04-03 17:02:53.000000000 -0400
    69233568@@ -0,0 +1,197 @@
    69243569+/*
     
    71193764+       return 0;
    71203765+}
     3766diff -Naur silo-1.4.13.orig/libext2fs/ChangeLog silo-1.4.13/libext2fs/ChangeLog
     3767--- silo-1.4.13.orig/libext2fs/ChangeLog        1969-12-31 19:00:00.000000000 -0500
     3768+++ silo-1.4.13/libext2fs/ChangeLog     2007-04-03 17:02:53.000000000 -0400
     3769@@ -0,0 +1,3311 @@
     3770+2006-06-30  Theodore Ts'o  <tytso@mit.edu>
     3771+
     3772+       * Release of E2fsprogs 1.38
     3773+
     3774+2005-06-30  Theodore Ts'o  <tytso@mit.edu>
     3775+
     3776+       * bitops.h, bitops.c (ext2fs_set_bit, ext2fs_clear_bit,
     3777+               ext2fs_test_bit): Change these function prototypes to be
     3778+               unsigned int's.  Negative bit numbers were never allowed
     3779+               (and never made any sense), so this should be a safe
     3780+               change.  This is needed to allow safe use of block numbers
     3781+               greater than or equal to 2**31.
     3782+
     3783+2005-06-27  Stephen Tweedie  <sct@redhat.com>
     3784+
     3785+       * ext2fs.h (ext2fs_resize_mem): Fix C99 strict type aliasing
     3786+               problems.  Addresses Red Hat Bugzilla #161183.
     3787+
     3788+2005-06-19  Theodore Ts'o  <tytso@mit.edu>
     3789+
     3790+       * getsectsize.c (BLKSSZGET): Clean up test for when to manually
     3791+               define the BLKSSZGET ioctl.
     3792+
     3793+2005-05-29  Theodore Ts'o  <tytso@mit.edu>
     3794+
     3795+       * ismounted.c (ext2fs_check_mount_point): Add test to see if the
     3796+               device appears to be busy; this only works on Linux 2.6+
     3797+               systems, but provides some additional bullet-proofing in
     3798+               those cases.
     3799+
     3800+2005-05-08  Theodore Ts'o  <tytso@mit.edu>
     3801+
     3802+       * test_io.c (safe_getenv): Fix bug so it would fetch the right
     3803+               environment variable.
     3804+
     3805+2005-04-09  Theodore Ts'o  <tytso@mit.edu>
     3806+
     3807+       * inode.c (ext2fs_write_new_inode),
     3808+               ind_block.c (ext2fs_read_ind_block): Add missing return
     3809+               value in error return case.  (Otherwise we return garbage
     3810+               instead of the error code.)
     3811+
     3812+2005-03-31  Theodore Ts'o  <tytso@mit.edu>
     3813+
     3814+       * test_io.c (test_open): If called by a setuid/setgid or an
     3815+               otherwise privileged program, be paranoid and ignore the
     3816+               TEST_IO_* environment variables.
     3817+
     3818+2005-03-21  Theodore Ts'o  <tytso@mit.edu>
     3819+
     3820+       * Release of E2fsprogs 1.37
     3821+
     3822+2005-03-21  Theodore Ts'o  <tytso@mit.edu>
     3823+
     3824+       * ext2_ext_attr.h (EXT2_XATTR_LEN, EXT2_XATTR_SIZE): Add new
     3825+               convenience cpp macros.
     3826+
     3827+2005-03-20  Theodore Ts'o  <tytso@mit.edu>
     3828+
     3829+       * mkdir.c (ext2fs_mkdir): Call ext2fs_write_new_inode() instead of
     3830+               ext2fs_write_inode().
     3831+
     3832+       * inode.c (ext2fs_write_new_inode): New function which should be
     3833+               used when the caller is writing an inode for the first
     3834+               time.  It makes sure that the extra portion of the large
     3835+               inode is initialized properly.
     3836+
     3837+2005-03-18  Theodore Ts'o  <tytso@mit.edu>
     3838+
     3839+       * Makefile.in: Fix clean target to remove tst_getsectsize.
     3840+
     3841+       * getsize.c (ext2fs_get_device_size): Check to see if the number
     3842+               of blocks is greater than 2**32 when we are doing a binary
     3843+               search to determine the device size.  Thanks to Stephen
     3844+               Tweedie for the patch.
     3845+       
     3846+2006-02-05  Theodore Ts'o  <tytso@mit.edu>
     3847+
     3848+       * Release of E2fsprogs 1.36
     3849+
     3850+2005-02-05  Theodore Ts'o  <tytso@mit.edu>
     3851+
     3852+       * Makefile.in: Remove ext2fs.pc on a "make distclean"
     3853+
     3854+2005-02-04  Theodore Ts'o  <tytso@mit.edu>
     3855+
     3856+       * Makefile.in (clean): Remove tst_getsize when doing a make clean
     3857+
     3858+2005-02-03  Theodore Ts'o  <tytso@mit.edu>
     3859+
     3860+       * bitops.c: Make the generic functions more efficient.
     3861+
     3862+       * bitops.h: Drop SPARC assembly code. It's less efficient than GCC
     3863+               3.4 compiled code and also triggers nasty compiler
     3864+               warnings on sparc64.  Thanks to Matthias Andree for his
     3865+               analysis and suggestion.
     3866+       
     3867+2005-01-27  Theodore Ts'o  <tytso@mit.edu>
     3868+
     3869+       * res_gdt.c (ext2fs_create_resize_inode): Create the resize inode
     3870+               even if s_reserved_gdt_blocks is zero.
     3871+
     3872+2005-01-26  Theodore Ts'o  <tytso@mit.edu>
     3873+
     3874+       * ext2fs.pc.in: Add pkg-config files.
     3875+
     3876+2005-01-25  Theodore Ts'o  <tytso@mit.edu>
     3877+
     3878+       * ext2fs.h: Add definition of struct ext2_inode_large
     3879+
     3880+       * ext2_fs.h: Add new function prototypes
     3881+
     3882+       * ext_attr.c (ext2fs_read_ext_attr, ext2fs_write_ext_attr): The
     3883+               ext2fs_swap_ext_attr() has been moved to swapfs.c, and
     3884+               given a new argument, has_header.
     3885+
     3886+       * swapfs.c (ext2fs_swap_ext_attr): Moved from ext_attr.c, and
     3887+               takes an argument which controls whether or not there is
     3888+               an EA header which needs to be byteswaped.
     3889+               (ext2fs_swap_inode_full): New function which byte-swaps
     3890+               the EA in inode.
     3891+
     3892+       * inode.c (ext2fs_get_next_inode_full, ext2fs_read_inode_full,
     3893+               ext2fs_write_inode_full): New functions, originally from
     3894+               Alex Tomas, but which needed to be substantially fixed so
     3895+               that the tests wouldn't cause major stack overwrite bugs
     3896+               in byte-swapping is enabled.
     3897+       
     3898+2005-01-18  Theodore Ts'o  <tytso@mit.edu>
     3899+
     3900+       * Makefile.in: Fix the kernel compile-time echo commands to be
     3901+               consistent and portable
     3902+
     3903+2005-01-07  Theodore Ts'o  <tytso@mit.edu>
     3904+
     3905+       * unlink.c (ext2fs_unlink): If both the name and the inode number
     3906+               are unspecified, then return an error, so that we don't do
     3907+               something surprising such as unconditionally deleting the
     3908+               first directory entry.
     3909+               (unlink_proc): Delete directory entries by coalescing it
     3910+               with the previous entry, to avoid directory fragmentation.
     3911+
     3912+2005-01-06  Theodore Ts'o  <tytso@mit.edu>
     3913+
     3914+       * version.c (ext2fs_parse_version_string): Change parsing
     3915+               algorithm so that version strings such as 1.36-rc1 returns
     3916+               a non-surprising result (i.e., 136, and not 1361).
     3917+
     3918+2005-01-05  Theodore Ts'o  <tytso@mit.edu>
     3919+
     3920+       * block.c (block_iterate_ind, block_iterate_dind,
     3921+               block_iterate_tind): Move the code which byte swaps and
     3922+               read/writes indirect blocks to ext2fs_{read,write}_ind_block.
     3923+               This saves 400 bytes, and we need them for the
     3924+               resize_inode handling.
     3925+
     3926+       * ind_block.c (ext2fs_read_ind_block, ext2fs_write_ind_block): New
     3927+               functions.
     3928+
     3929+       * res_gdt.c (ext2fs_create_resize_inode): Use
     3930+               ext2fs_{read,write}_ind_block so that byte swapping is
     3931+               handled on big-endian systems.
     3932+
     3933+       * dupfs.c (ext2fs_dup_handle): Make sure the new filesystem handle
     3934+               has its own copy of the orig_super data structure.  (This
     3935+               is a better way of fixing a double-free problem in
     3936+               resize2fs which Fedora attempted to fix in
     3937+               e2fsprogs-1.35-double_free.patch.   Addresses Red Hat
     3938+               Bugzilla #132707.)
     3939+       
     3940+2004-12-23  Theodore Ts'o  <tytso@mit.edu>
     3941+
     3942+       * inode.c (ext2fs_flush_icache): When flushing the icache, clear
     3943+               the last-read block information as well.
     3944+
     3945+       * ext2fs.h (BMAP_SET), bmap.c (ext2fs_bmap): Add support for new
     3946+               flag, BMAP_SET, which allows the caller to set a
     3947+               particular logical->physical block mapping.
     3948+
     3949+       * ext2_err.et.in (EXT2_ET_SET_BMAP_NO_IND): New error code
     3950+
     3951+       * initialize.c (calc_reserved_gdt_blocks): #ifdef out all
     3952+               debugging printf statements.
     3953+       
     3954+       * res_gdt.c (ext2fs_create_resize_inode): Return
     3955+               EXT2_ET_RESIZE_INODE_CORRUPT if the resize inode is not
     3956+               what we expect.  #ifdef out all debugging printf
     3957+               statements.
     3958+
     3959+       * ext2_err.et.in (EXT2_ET_RESIZE_INODE_CORRUPT): Add new error code.
     3960+
     3961+2004-12-22  Theodore Ts'o  <tytso@mit.edu>
     3962+
     3963+       * swapfs.c (ext2fs_swap_super): Byteswap the reserved_gdt_blocks
     3964+               superblocks field.
     3965+
     3966+2004-12-15  Theodore Ts'o  <tytso@mit.edu>
     3967+
     3968+       * sparse.c (ext2fs_list_backups, ext2fs_bg_has_super),
     3969+               res_gdt.c (list_backups), closefs.c (ext2fs_bg_has_super),
     3970+               ext2fs.h: Move ext2fs_list_backups() to res_gdt.c, and
     3971+               ext2fs_bg_has_super() back to closefs.c.  There's no
     3972+               reason for the new file, since list_backups() isn't being
     3973+               used by any other functions, and can be made static, and
     3974+               all users of the ext2fs filesystem will have to call
     3975+               ext2fs_close() anyway.
     3976+
     3977+2004-12-15  Theodore Ts'o  <tytso@mit.edu>
     3978+
     3979+       * Applied resize inode patch from Andreas Dilger
     3980+
     3981+       * res_gdt.c (ext2fs_create_resize_inode): New function that
     3982+               creates the resize inode.
     3983+
     3984+       * initialize.c (ext2fs_initialize): Reserve space for the resize
     3985+               inode.
     3986+
     3987+       * ext2fs.h (EXT2_LIB_FEATURE_COMPAT_SUPP): Add
     3988+               EXT2_FEATURE_COMPAT_RESIZE_INODE to the list of supported
     3989+               capabilities.
     3990+               Add function prototypes for res_gdt.c and sparse.c.
     3991+
     3992+       * closefs.c (ext2fs_super_and_bgd_loc): Take the reserved blocks
     3993+               into account when calculating the number of overhead
     3994+               blocks.
     3995+
     3996+       * closefs.c (ext2fs_bg_has_super, test_root), sparse.c: Move these
     3997+               functions to the new file sparse.c
     3998+
     3999+       * alloc_sb.c (ext2fs_reserve_super_and_bgd): Reserve the blocks
     4000+               saved in the resize inode as being in use.
     4001+
     4002+       * ext2_err.et.in (EXT2_ET_RES_GDT_BLOCKS): Add new error code.
     4003+
     4004+       * Makefile.in (srcdir): Add res_gdt.c and sparse.c to the ext2fs
     4005+               library.
     4006+
     4007+2004-12-14  Theodore Ts'o  <tytso@mit.edu>
     4008+
     4009+       * Makefile.in: Use Linux-kernel-style makefile output for "make
     4010+               install"
     4011+
     4012+       * Makefile.in (installdirs): Use $(MKINSTALLDIRS) macro
     4013+               Update dependencies.
     4014+
     4015+2004-11-30  Theodore Ts'o  <tytso@mit.edu>
     4016+
     4017+       * unix_io.c (unix_set_option): Add support for the offset option.
     4018+
     4019+       * test_io.c (test_set_option): Add support for the set_option method.
     4020+
     4021+       * ext2_io.h: Add new io_channel method, set_option(), and change
     4022+               io_channel_write_byte() from a macro to a library function.
     4023+
     4024+       * ext2fs.h, openfs.c(ext2fs_open2): New version of ext2fs_open
     4025+               which adds a new parameter, io_options.
     4026+               (ext2fs_open): If there is a question mark in the
     4027+               filename, and no io_options are specified, assumed that
     4028+               the text following the question mark are io_options.
     4029+       
     4030+       * io_manager.c, Makefile.in: New source file which contains
     4031+               high-level functions for the io_channel layer.
     4032+
     4033+       * freefs.c (ext2fs_free): Make sure we don't free the io_channel
     4034+               if image_io is NULL.
     4035+
     4036+       * Makefile.in: Use Linux-kernel-style makefile output to make it
     4037+               easier to see errors/warnings.
     4038+
     4039+2004-11-29  Theodore Ts'o  <tytso@mit.edu>
     4040+
     4041+       * ext2_fs.h (EXT2_EXTENTS_FL, EXT3_FEATURE_INCOMPAT_EXTENTS,
     4042+               EXT2_MAX_BLOCK_LOG_SIZE): Add definition for extent
     4043+               feature and inode flag.  Change maximum allowable block
     4044+               size to be 65536.
     4045+
     4046+2004-10-08  Theodore Ts'o  <tytso@mit.edu>
     4047+
     4048+       * getsize.c (ext2fs_get_device_size): Add support for Windows
     4049+               9x/NT under Cygwin.  Thanks to Sam Robb
     4050+               (samrobb@users.sourceforge.net) for pointing this and the
     4051+               suggested code patch.
     4052+
     4053+2004-09-17  Theodore Ts'o  <tytso@mit.edu>
     4054+
     4055+       * getsize.c: Clean up header #include's.
     4056+
     4057+       * llseek.c (ext2fs_llseek): On non-linux systems, use lseek64() if
     4058+               it is present.  (Addresses Debian bug #269044)
     4059+
     4060+2004-07-28  Theodore Ts'o  <tytso@mit.edu>
     4061+
     4062+       * rw_bitmaps.c (read_bitmaps), block.c (block_iterate_ind,
     4063+               block_iterate_dind, block_iterate_tind), inode.c
     4064+               (ext2fs_read_inode): If EXT2_FLAG_IMAGE_FILE is set, so
     4065+               read the metadata from fs->image_io instead of fs->io.
     4066+
     4067+       * initialize.c (ext2fs_initialize), openfs.c (ext2fs_open):
     4068+               Initialize fs->image_io to be the same as fs->io.
     4069+       
     4070+       * ext2_err.et.in (EXT2_ET_NOT_IMAGE_FILE): Add new error code.
     4071+
     4072+       * openfs.c (ext2fs_get_data_io, ext2fs_set_data_io,
     4073+               ext2fs_rewrite_to_io): New functions that allow
     4074+               applications to manipulate fs->image_io and fs->io safely.
     4075+
     4076+       * freefs.c (ext2fs_free): If fs->image_io is different fs->io,
     4077+               then call io_channel_close on fs->image_io.
     4078+
     4079+       * ext2fs.h: Add image_io element to the ext2_filsys data
     4080+               structure.  Add ext2fs_get_data_io() ext2fs_set_data_io(),
     4081+               and ext2fs_rewrite_to_io() prototypes.
     4082+
     4083+2004-05-26  Theodore Ts'o  <tytso@mit.edu>
     4084+
     4085+       * closefs.c (ext2fs_flush): Make sure the master superblock is
     4086+               written last, and only after other I/O has been flushed to
     4087+               disk.  Thanks to Junfeng Yang from the Stanford
     4088+               Metacompilation group for pointing a potential ordering
     4089+               constraint problem if we don't write things out in the
     4090+               right order.
     4091+
     4092+       * test_io.c: Implement the ability to abort after n reads or
     4093+               writes to a particular block.  The block is specified by
     4094+               TEST_IO_BLOCK environment variable, and the read/write
     4095+               count by the TEST_IO_READ_ABORT and TEST_IO_WRITE_ABORT
     4096+               environment variables.  The block data is now only dumped
     4097+               if the 0x10 bit is set in TEST_IO_FLAGS.
     4098+
     4099+2004-04-03  Theodore Ts'o  <tytso@mit.edu>
     4100+
     4101+       * ext2_types.h.in: Remove check for _UUID_TYPES since uuid_types.h
     4102+               is no longer used.
     4103+
     4104+2004-03-08  Theodore Ts'o  <tytso@mit.edu>
     4105+
     4106+       * getsize.c (ext2fs_get_device_size): Only use the BLKGETSIZE64
     4107+               ioctl on Linux 2.6 since it is unreliable in Linux 2.4.
     4108+               (Addresses Debian Bug #236528).  Fix typo in the ioctl
     4109+               used for Mac OS X.
     4110+
     4111+2004-03-02  Theodore Ts'o  <tytso@mit.edu>
     4112+
     4113+       * getsize.c (ext2fs_get_device_size): Update getsize functions to
     4114+               use Apple Darwin and Linux 64-bit ioctl's
     4115+
     4116+2004-02-29  Brian Bergstrand  <brian@bergstrand.org>
     4117+
     4118+       * Makefile.in: Use $(BSDLIB_PIC_FLAG) to determine whether to use
     4119+               -fpic or -fPIC
     4120+
     4121+2004-02-28  Theodore Ts'o  <tytso@mit.edu>
     4122+
     4123+       * Release of E2fsprogs 1.35
     4124+
     4125+2004-02-21  Theodore Ts'o  <tytso@mit.edu>
     4126+
     4127+       * ext2fs.h (ext2fs_resize_mem): Fix C++ problem.  (Addresses Red
     4128+               Hat Bugzilla #112448; thanks Thomas Woerner from Red Hat.)
     4129+
     4130+2004-02-14  Theodore Ts'o  <tytso@mit.edu>
     4131+
     4132+       * namei.c (follow_link): Correctly deal with symlinks that have
     4133+               extended attribute information.  (Addresses Debian Bug
     4134+               #232328)
     4135+
     4136+2004-01-30  Theodore Ts'o  <tytso@mit.edu>
     4137+
     4138+       * ext2_fs.h: Reserve an extra 4 bytes for the journal backup,
     4139+               which we're using due to a typo in the e2fsck code.  (Oops)
     4140+
     4141+       * swapfs.c (ext2fs_swap_inode): Fix byte swap bug which causes SE
     4142+               Linux created symlinks with mandatory attributes to fail
     4143+               to be properly handled on big endian systems.  (Addresses
     4144+               Debian Bug #228723).
     4145+               (ext2fs_swap_super): Byte swap some new fields in the
     4146+               superblock, including the journal backup fields.
     4147+
     4148+2003-12-02  Theodore Ts'o  <tytso@mit.edu>
     4149+
     4150+       * alloc.c, bb_inode.c, bitops.c, block.c, check_desc.c, closefs.c,
     4151+               dir_iterate.c, dirblock.c, expanddir.c, ext2fs.h,
     4152+               get_pathname.c, icount.c, imager.c, initalize.c, inode.c,
     4153+               lookup.c, openfs.c, read_bb.c, read_bb_file.c,
     4154+               rw_bitmaps.c, unix_io.c, unlink.c, write_bb_file.c: Fix
     4155+               gcc -Wall complaints.  Mainly marking variables as being
     4156+               unsued, and catching signed vs. unsigned comparisons.
     4157+
     4158+2003-09-03  Theodore Ts'o  <tytso@mit.edu>
     4159+
     4160+       * closefs.c (ext2fs_super_and_bgd_loc): New function which
     4161+               centralizes the calculation of the superblock and block
     4162+               group descriptors.
     4163+               (ext2fs_flush): Use ext2fs_super_and_bgd_lock to figure
     4164+               out where to write the superblock and block group
     4165+               descriptors.
     4166+
     4167+       * alloc_sb.c (ext2fs_reserve_super_and_bgd): New function which
     4168+               reserves space in the block bitmap using
     4169+               ext2fs_super_and_bgd_loc.
     4170+
     4171+       * initialize.c (ext2fs_initialize): Use
     4172+               ext2fs_reserve_super_and_bgd to initialize the block bitmap.
     4173+
     4174+2003-08-20  Theodore Ts'o  <tytso@mit.edu>
     4175+
     4176+       * inode_io.c (ext2fs_inode_io_intern2), ext2fs.h: Add new function
     4177+               allows the caller to pass in the inode data structure.
     4178+
     4179+       * fileio.c (ext2fs_file_open2), ext2fs.h: Add new function which
     4180+               allows the caller to pass in the inode to be used in the
     4181+               file I/O.
     4182+
     4183+       * ext2_fs.h: Add a backup of the location of the journal inode
     4184+               blocks to the superblock.
     4185+
     4186+       * mkjournal.c (write_journal_inode): Save the location of the
     4187+               journal inode to the backup location in the superblock.
     4188+
     4189+2003-08-01  Philipp Thomas <pthomas@suse.de>
     4190+
     4191+       * alloc.c, badblocks.c, bb_inode.c, bitmaps.c, block.c, bmap.c,
     4192+               bmove.c, brel_ma.c, closefs.c, dblist.c, dblist_dir.c,
     4193+               dir_iterate.c, dirblock.c, dupfs.c, expanddir.c, ext2fs.h,
     4194+               ext_attr.c, fileio.c, freefs.c, get_pathname.c, icount.c,
     4195+               initialize.c, inode.c, inode_io.c, irel_ma.c, mkdir.c,
     4196+               mkjournal.c, namei.c, newdir.c, openfs.c, rs_bitmap.c,
     4197+               rw_bitmaps.c, test_io.c, unix_io.c: ext2fs_getmem(),
     4198+               ext2fs_free_mem(), and ext2fs_resize_mem() all now take a
     4199+               'void *' instead of a 'void **' in order to avoid pointer
     4200+               aliasing problems with GCC 3.x.
     4201+
     4202+2003-07-25  Theodore Ts'o  <tytso@mit.edu>
     4203+
     4204+       * Release of E2fsprogs 1.34
     4205+
     4206+2003-07-06  Theodore Ts'o  <tytso@mit.edu>
     4207+
     4208+       * kernel-jbd.h, flushb.c: Fix gcc -Wall nitpicks (indented cpp
     4209+               directives)
     4210+
     4211+       * ext2_types.h.in, initialize.c: Fix gcc -Wall nitpicks
     4212+               (don't use #elsif)
     4213+
     4214+       * ismounted.c: Fix gcc -Wall nitpicks (Don't use exit as a goto label)
     4215+
     4216+       * llseek.c: Fix gcc -Wall nitpicks (don't use #elsif)
     4217+
     4218+       * lookup.c, read_bb.c: Fix gcc -Wall nitpicks (indent
     4219+               non-traditional #pragma)
     4220+
     4221+       * test_io.c: Fix gcc -Wall nitpicks (const/unsigned type issues)
     4222+
     4223+2003-06-24    <tytso@snap.thunk.org>
     4224+
     4225+       * badblocks.c, ext2fs.h (ext2fs_u32_list_find,
     4226+               ext2fs_u32_list_test, ext2fs_u32_list_del,
     4227+               ext2fs_badblocks_list_del): Add functions to delete a
     4228+               block from the badblocks list.
     4229+       * tst_badblocks.c: Add test cases for ext2fs_badblocks_list_del().
     4230+
     4231+2003-05-21  Theodore Ts'o  <tytso@mit.edu>
     4232+
     4233+       * getsectsize.c (ext2fs_get_device_sectsize): New function which
     4234+               returns the hardware sector size (if it is available).
     4235+
     4236+2003-05-13  Theodore Ts'o  <tytso@mit.edu>
     4237+
     4238+       * unix_io.c: Add #ifdef NO_IO_CACHE which disables all userspace
     4239+               caching by the unix_io layer.  Not enabled, only for
     4240+               debugging.
     4241+
     4242+2003-05-05  Theodore Ts'o  <tytso@mit.edu>
     4243+
     4244+       * test_io.c: Pay attention to the environment variables
     4245+               TEST_IO_LOGFILE, TEST_IO_FLAGS, and TEST_IO_BLOCK to
     4246+               determine whether or not we should log io activity, and to
     4247+               where.
     4248+
     4249+2003-05-03  Theodore Ts'o  <tytso@mit.edu>
     4250+
     4251+       * tst_badblocks.c (file_test): Use tmpfile() instead of mktemp().
     4252+
     4253+2003-04-29  Theodore Ts'o  <tytso@mit.edu>
     4254+
     4255+       * getsize.c (ext2fs_get_device_size): Allow windows code to get
     4256+               the resize for filesystems that are in regular files.
     4257+
     4258+2003-04-21  Theodore Ts'o  <tytso@mit.edu>
     4259+
     4260+       * Release of E2fsprogs 1.33
     4261+
     4262+2003-04-21  Theodore Ts'o  <tytso@mit.edu>
     4263+
     4264+       * Makefile.in: Use DYLD_LIBRAY_PATH so that "make check" works on
     4265+               Darwin systems when building with shared libraries.
     4266+
     4267+2003-04-18  Theodore Ts'o  <tytso@mit.edu>
     4268+
     4269+       * unix_io.c: Use __CYGWIN__ instead of CYGWIN.
     4270+
     4271+2003-04-17  Theodore Ts'o  <tytso@mit.edu>
     4272+
     4273+       * getsize.c: Add Cygwin/Windows version of ext2fs_get_device_size()
     4274+
     4275+2003-04-12  Theodore Ts'o  <tytso@mit.edu>
     4276+
     4277+       * unix_io.c (raw_read_blk): Add Cygwin support (the Windows block
     4278+               device only accepts sector aligned read requests.
     4279+
     4280+       * ismounted.c (check_mntent_file): Deal with OS's that don't
     4281+               define MNTOPT_RO.
     4282+
     4283+       * imager.c: If the OS doesn't define ssize_t, typedef it to int.
     4284+
     4285+2003-04-11  Theodore Ts'o  <tytso@mit.edu>
     4286+
     4287+       * ext2_fs.h (EXT2_FEATURE_RO_COMPAT_BTREE_DIR): Comment out unused
     4288+               feature flag
     4289+
     4290+2003-03-30  Theodore Ts'o  <tytso@mit.edu>
     4291+
     4292+       * Makefile.in: Use the compile_et --build-tree option.
     4293+
     4294+2003-03-14  Theodore Ts'o  <tytso@mit.edu>
     4295+
     4296+       * getsize.c: Add support for Apple Darwin's ioctl to get the hard
     4297+               disk size.
     4298+
     4299+       * badblocks.c (ext2fs_u32_list_count), ext2fs.h: Add new function
     4300+               which returns the number of entries in the list.
     4301+
     4302+2003-03-10  Theodore Ts'o  <tytso@mit.edu>
     4303+
     4304+       * fileio.c (ext2fs_file_lseek): Fix bug added when adding 64-bit
     4305+               support; avoid null dereference when ret_pos is NULL.
     4306+
     4307+2003-03-06  Theodore Tso  <tytso@mit.edu>
     4308+
     4309+       * ext2_types.h.in: Don't redefine types if other e2fsprogs
     4310+               *_types.h files have been included already.
     4311+
     4312+       * kernel-jbd.h: Use C99 variadic cpp macros if not using GCC.
     4313+               (Older GCC's don't support the C99 variadic macros.)
     4314+
     4315+       * flushb.c (ext2fs_sync_device),
     4316+       ismounted.c (ext2fs_check_mount_point): Avoid GCC extension:
     4317+       #warning not supported by Solaris suncc
     4318+
     4319+       * ext2_ext_attr.h: Avoid GCC extension: 0 length arrays in
     4320+               structure definition.  Not needed for now in
     4321+               ext2_ext_attr_entry.
     4322+
     4323+2003-01-25  Theodore Ts'o  <tytso@mit.edu>
     4324+
     4325+       * dirhash.c: Fix gcc -Wall nits.
     4326+
     4327+2003-01-22  Theodore Ts'o  <tytso@mit.edu>
     4328+
     4329+       * unix_io.c (unix_write_blk): Fix up GCC -Wall nits.
     4330+
     4331+2003-01-21  Theodore Ts'o  <tytso@mit.edu>
     4332+
     4333+       * fileio.c (ext2fs_file_read, ext2_file_lseek,
     4334+               ext2_file_get_size): Add 64-bit support.
     4335+
     4336+       * ext2fs.h (EXT2_I_SIZE): Add macro which caluates a 64bit size
     4337+               from i_size and i_size_high.
     4338+
     4339+2003-01-19  Theodore Ts'o  <tytso@mit.edu>
     4340+
     4341+       * initialize.c (ext2fs_initialize): If the user specifies a really
     4342+               large number of inodes, then reduce the number of blocks
     4343+               per group until we find a workable set of filesystem
     4344+               parameters.
     4345+
     4346+       * ext2_err.et.in (EXT2_ET_TOO_MANY_INODES): Add new error code.
     4347+
     4348+2002-11-09  Theodore Ts'o  <tytso@mit.edu>
     4349+
     4350+       * Release of E2fsprogs 1.32
     4351+
     4352+2002-11-09  Theodore Ts'o  <tytso@mit.edu>
     4353+
     4354+       * unix_io.c (find_cached_block, reuse_cache, unix_read_blk,
     4355+               unix_write_blk): Optimize routines so that we don't end up
     4356+               searching the cache twice when a block isn't in the
     4357+               cache.  If reads are larger than READ_DIRECT_SIZE, don't
     4358+               let them go through the cache.
     4359+
     4360+       * unix_io.c (find_cached_block): Fixed bug which caused some clean
     4361+               blocks to be erroneously marked as dirty, so they would
     4362+               get written back to the disk before they are evicted from
     4363+               the cache.  Harmless, but it slows down e2fsck
     4364+               significantly.
     4365+
     4366+2002-11-08  Theodore Ts'o  <tytso@mit.edu>
     4367+
     4368+       * Release of E2fsprogs 1.31
     4369+
     4370+2002-11-08    <tytso@snap.thunk.org>
     4371+
     4372+       * Makefile.in (check): Skip trying to compile test_byteswap
     4373+               if --disable-byteswaap had been given to configure.
     4374+
     4375+2002-11-07    <tytso@snap.thunk.org>
     4376+
     4377+       * closefs.c (write_bgdesc, ext2fs_flush): Fix bug in meta_bg
     4378+               support when the MASTER_SB_ONLY flag is set.  Some of
     4379+               the descriptor blocks that should have been written out
     4380+               were getting skipped.
     4381+
     4382+2002-10-31  Theodore Ts'o  <tytso@mit.edu>
     4383+
     4384+       * Release of E2fsprogs 1.30
     4385+
     4386+2002-10-31  Theodore Ts'o  <tytso@mit.edu>
     4387+
     4388+       * ext2_fs.h: Add support for a new inode flag, which is to be used
     4389+               for indicating the top of directory hierarchies for the
     4390+               Orlov block allocator.
     4391+       
     4392+       * ismounted.c (check_mntent, check_mntent_file): Add better
     4393+               support for loopback-mounted filesystems.  Check /etc/mtab
     4394+               if /proc/mounts doesn't turn up any mount flags, since
     4395+               /etc/mtab has the loopback image filename, instead of
     4396+               /dev/loop0.  Also, check based on st_dev and st_ino, so
     4397+               that if a relative pathname or a pathnames using symbolic
     4398+               links are used, we can detect the the filesystem correctly
     4399+               in those cases.  (Addresses Sourceforge bug #619119)
     4400+
     4401+       * flushb.c (ext2fs_sync_device): If the BLKFLSBUF ioctl succeeds,
     4402+               don't try the FDFLUSH ioctl that was required for floppies
     4403+               with older kernels.  This avoids needless whining from the
     4404+               MD device driver.  (Addresses Sourceforge bug #545832).
     4405+
     4406+       * openfs.c (ext2fs_open): Fix bug which caused us to pass the
     4407+               wrong group_block to ext2fs_descriptor_block_loc if we're
     4408+               using the backup superblock/block group descriptors.
     4409+               (ext2fs_descriptor_block_loc): If we're using the backup
     4410+               superblock descriptors, use the backup descriptor block in
     4411+               the next block group.
     4412+
     4413+2002-10-30  Theodore Ts'o  <tytso@mit.edu>
     4414+
     4415+       * alloc_tables.c (ext2fs_allocate_group_table): Allocate the inode
     4416+               table so that it buts up against the bitmap blocks, to
     4417+               avoid block fragmentation.
     4418+
     4419+       * closefs.c (write_bgdesc), initalize.c (ext2fs_initialize): Fix
     4420+               bug; only allocate group descriptor blocks up to
     4421+               s_first_meta_bg.
     4422+
     4423+2002-10-25  Theodore Ts'o  <tytso@mit.edu>
     4424+
     4425+       * ext2_fs.h: Add a new superblock field, s_mkfs_time, so that we
     4426+               know when a filesystem was created.  (Sometimes this can
     4427+               be useful...)
     4428+
     4429+       * initialize.c (ext2fs_initialize): Set the s_mkfs_time field.
     4430+
     4431+2002-10-20  Theodore Ts'o  <tytso@valinux.com>
     4432+
     4433+       * ext2_fs.h (EXT3_DEFM_JMODE): Add new default mount options for
     4434+               the journal data mode.
     4435+
     4436+       * closefs.c (ext2fs_flush, write_bgdesc), ext2_fs.h, ext2fs.h,
     4437+       openfs.c (ext2fs_descriptor_block_loc, ext2fs_open), initialize.c
     4438+       (ext2fs_initialize), swapfs.c (ext2fs_swap_super): Add support for
     4439+       the meta_blockgroup filesystem format.
     4440+
     4441+2002-10-15    <tytso@snap.thunk.org>
     4442+
     4443+       * ext2_fs.h: Add new field in superblock for default mount options.
     4444+
     4445+2002-10-13  Theodore Ts'o  <tytso@mit.edu>
     4446+
     4447+       * ext2fs.h: Add #include of header files necessary for ext2fs.h to
     4448+               compile cleanly.
     4449+
     4450+2002-10-02  Theodore Y. Ts'o  <tytso@mit.edu>
     4451+
     4452+       * rw_bitmaps.c (ext2fs_write_block_bitmap,
     4453+               ext2fs_read_block_bitmap): Don't set the CHANGED bit just
     4454+               because the bitmap is getting written to disk.  Make
     4455+               ext2fs_swap_bitmap be a static function, since it's not
     4456+               intended to be exported.
     4457+
     4458+       * swapfs.c (ext2fs_swap_super): Byte-swap the hash seed
     4459+
     4460+2001-09-24  Theodore Tso  <tytso@mit.edu>
     4461+
     4462+       * Release of E2fsprogs 1.29
     4463+
     4464+2001-08-31  Theodore Tso  <tytso@thunk.org>
     4465+
     4466+       * Release of E2fsprogs 1.28
     4467+
     4468+2002-08-31  Theodore Ts'o  <tytso@valinux.com>
     4469+
     4470+       * dblist.c (ext2fs_dblist_sort): New function which allows the
     4471+               caller to pass in a special sort comparison function.
     4472+
     4473+2002-08-20  Theodore Ts'o  <tytso@mit.edu>
     4474+
     4475+       * valid_blk.c (ext2fs_inode_has_valid_blocks): Fix bug which
     4476+               failed to accurately characterize non-standard slow
     4477+               symlinks.  (Which don't appear in practice on real-life
     4478+               systems, fortunately.)
     4479+
     4480+2002-08-17  Theodore Ts'o  <tytso@mit.edu>
     4481+
     4482+       * Makefile.in: Remove inode_io.o from the standard object files,
     4483+               and only build it if debugfs is enabled (it requires
     4484+               fileio.o, which is only built if --disable-debugfs isn't
     4485+               specified to configure).
     4486+
     4487+       * dirhash.c (ext2fs_dirhash): Change the MD4 hash in a backwards
     4488+               incompatible way so that it is no longer
     4489+               endian-dependent.  Add the TEA hash.  Allow the seed
     4490+               parameter to be optional.
     4491+
     4492+       * ext2_fs.h: Remove the HALF_MD4_SEED and HALF_MD4_64 hashes.
     4493+               These features are all now in the HALF_MD4 hash.  Add
     4494+               definition for EXT2_HASH_TEA.
     4495+
     4496+       * ext2fs.h (ext2fs_dirhash): Change function prototype so it takes
     4497+               a pointer instead of an array.
     4498+
     4499+2002-08-16  Theodore Ts'o  <tytso@mit.edu>
     4500+
     4501+       * ext2_err.et.in (EXT2_ET_BAD_EA_BLOCK_NUM): New error code
     4502+
     4503+       * ext2fs.h (ext2fs_inode_data_blocks): New function which returns
     4504+               the number of data blocks used by an inode exclusive of
     4505+               the EA block.
     4506+
     4507+       * ext_attr.c (ext2fs_adjust_ea_refcount): New function which
     4508+               adjusts the reference count in an extended attribute block.
     4509+
     4510+       * valid_blk.c (ext2fs_inode_has_valid_blocks): Add code to
     4511+               correctly deal with extended attribute blocks in symbolic
     4512+               links.
     4513+
     4514+2002-08-13    <tytso@snap.thunk.org>
     4515+
     4516+       * Makefile.in: Move dupfs.o and test_io.o from the
     4517+               needed-by-debugfs object list to the needed-by-resizer
     4518+               object list.  Fixes compile problem if the system is built
     4519+               with only --disable-debugfs.
     4520+
     4521+2002-07-29  Theodore Ts'o  <tytso@mit.edu>
     4522+
     4523+       * link.c (ext2fs_link): When adding a new link to a directory,
     4524+               clear the HTREE bit.
     4525+
     4526+2002-07-23  Theodore Ts'o  <tytso@mit.edu>
     4527+
     4528+       * dirhash.c (ext2fs_dirhash): Fix bug which caused MD4
     4529+               calculations for names > 32 characters to be completely
     4530+               bogus.  Changed MD4 calculation to match what is currently
     4531+               being used in the CVS gkernel tree.
     4532+
     4533+2002-07-19  Theodore Ts'o  <tytso@mit.edu>
     4534+
     4535+       * ext2_fs.h: Add s_hash_seed and s_def_hash_version to the
     4536+               superblock definition.
     4537+
     4538+       * badblocks.c, freefs.c, ext2fs.h: Use the badblocks functions to
     4539+               create a set of u32_list functions.
     4540+
     4541+       * dirhash.c (halfMD4Transform): Shift the hash by one bit,
     4542+               since that's required by the directory indexing code.
     4543+
     4544+2002-07-14  Theodore Ts'o  <tytso@mit.edu>
     4545+
     4546+       * ext2fs.h, read_bb_file.c: Change private to priv_data, to avoid
     4547+               using a C++ reserved word.
     4548+
     4549+       * unix_io.c (unix_open): Only attempt the setrlimit workaround if
     4550+               the kernel version is 2.4.10 -- 2.4.17, since otherwise an
     4551+               old version of glibc (built against 2.2 headers) will
     4552+               interact badly with the workaround to actually cause more
     4553+               problems.  I hate it when the glibc folks think they're
     4554+               being smarter than the kernel....
     4555+
     4556+2002-06-28  Andreas Dilger <adilger@clusterfs.com>
     4557+
     4558+       * ext2_fs.h: Add superblock field for reserved group descriptors.
     4559+
     4560+2002-06-28  Theodore Ts'o  <tytso@mit.edu>
     4561+
     4562+       * bitops.h: Add #define's for ext2fs_{l,b}e{32,16}_to_cpu and
     4563+               ext2fs_cpu_to_{l,b}e{32,16}
     4564+
     4565+2002-06-27  Theodore Ts'o  <tytso@mit.edu>
     4566+
     4567+       * ismounted.c (check_mntent): In AIX 4.3, MOUNTED isn't defined.
     4568+               Add appropriate fallbacks in this case.
     4569+
     4570+2002-06-26  Theodore Ts'o  <tytso@mit.edu>
     4571+
     4572+       * dirhash.c (ext2fs_dirhash): Change function signature to support
     4573+               a hash seed, and to return the minor hash (for 64-bit hash
     4574+               support).   Add support for the half MD4, half MD4 with
     4575+               seed, and half MD4 with seed and 64 bits.
     4576+
     4577+2002-06-15  Theodore Ts'o  <tytso@mit.edu>
     4578+
     4579+       * ext2_fs.h (EXT2_DIRSYNC_FL): Add new file.
     4580+
     4581+2002-06-09  Andreas Dilger <adilger@clusterfs.com>
     4582+
     4583+       * ext2_fs.h: Add macros for maximum block/inode counts:
     4584+               EXT2_INODES_PER_BLOCK, EXT2_MAX_BLOCKS_PER_GROUP,
     4585+               and EXT2_MAX_INODES_PER_GROUP.
     4586+
     4587+       * openfs.c (ext2fs_open): Check that the number of blocks in a group
     4588+               is less than 2^16, otherwise we need an INCOMPAT flag (not
     4589+               in existence yet, if ever) to open such a filesystem.
     4590+
     4591+       * initialize.c (ext2fs_initialize): Limit the number of blocks and
     4592+               inodes in a group to less than 2^16.
     4593+
     4594+2002-06-09  Andreas Dilger <adilger@clusterfs.com>
     4595+
     4596+       * ext2_fs.h: Further minor cleanups of the header.  Consolidate
     4597+               some checks for __KERNEL__ into one place.
     4598+
     4599+2002-05-22  Andreas Dilger <adilger@clusterfs.com>
     4600+
     4601+       * ext2_fs.h: Remove macros accessing u.ext2_sb field and use
     4602+               the EXT2_SB() macro instead.  Remove kernel function
     4603+               prototypes also.  This matches the 2.5 kernel, and
     4604+               is also cleaner for other reasons.  Whitespace cleanup.
     4605+
     4606+2002-05-21  Theodore Ts'o  <tytso@mit.edu>
     4607+
     4608+       * ext2_ext_attr.h: Update to V2 version of the Bestbits format.
     4609+
     4610+2002-05-16  Andreas Dilger <adilger@clusterfs.com>
     4611+
     4612+       * ext2_fs.h: Change limits to support filesystems with 8k blocks.
     4613+
     4614+       * initialize.c (ext2fs_initialize): Remove assumption that
     4615+               blocksizes are always <= 4k.
     4616+
     4617+2002-05-11  Theodore Ts'o  <tytso@mit.edu>
     4618+
     4619+       * bmap.c (ext2fs_bmap): Fix bug which caused ext2fs_bmap to fail
     4620+               silently if inode pointer is NULL (and ext2fs_bmap is
     4621+               expected to read the inode itself).
     4622+
     4623+2002-04-27  Theodore Ts'o  <tytso@mit.edu>
     4624+
     4625+       * ismounted.c (check_mntent_file, is_swap_device): Verify that the
     4626+               file we are checking is a block device file before looking
     4627+               at st_rdev, since it's not valid for normal files.
     4628+               (is_swap_device): Move so that it is outside the
     4629+               HAVE_MNTENT_H, so that it is always built.
     4630+
     4631+2002-03-11  Theodore Tso  <tytso@mit.edu>
     4632+
     4633+       * dirblock.c (ext2fs_read_dir_block2, ext2fs_write_dir_block): New
     4634+               functions which take an extra flags argument.  The flag
     4635+               EXT2_DIRBLOCK_V2_STRUCT will reverse when the name_len
     4636+               field is byte swampped on big-endian machines, since in
     4637+               the V2 structure, name_len is a char field which is
     4638+               doesn't need to be byte swapped --- except if an
     4639+               old-style kernel had byte-swapped the name_len field
     4640+               as part of the V1 structure.
     4641+
     4642+       * ext2_err.et.in (EXT2_ET_DIRHASH_UNSUPP): New error code
     4643+
     4644+       * dirhash.c (ext2fs_dirhash): New function which calculates the
     4645+               hash for a filename in an indexed directory.
     4646+
     4647+2002-03-08  Theodore Tso  <tytso@mit.edu>
     4648+
     4649+       * Release of E2fsprogs 1.27
     4650+
     4651+2002-03-07  Theodore Tso  <tytso@mit.edu>
     4652+
     4653+       * ext2fs.h (ext2fs_inode_io_intern): Add missing function prototype.
     4654+
     4655+       * bmap.c, fileio.c, inode_io.c, tst_badblocks.c,
     4656+               tst_byteswap.c: Fix gcc -Wall complaints
     4657+
     4658+       * Makefile.in (check): Use LD_LIBRARY_PATH to run test programs.
     4659+               (From Philipp Thomas <pthomas@suse.de>)
     4660+
     4661+2002-02-25  Theodore Tso  <tytso@mit.edu>
     4662+
     4663+       * ext2_fs.h: Add structure definitions for the directory indexing
     4664+               extension.
     4665+
     4666+2002-02-23  Theodore Tso  <tytso@mit.edu>
     4667+
     4668+       * unix_io.c (unix_open): Fix 2.4 resource limit workaround so that
     4669+               it doesn't break things on mis32, sparc32, and alpha
     4670+               platforms.
     4671+
     4672+2002-02-21  Theodore Tso  <tytso@mit.edu>
     4673+
     4674+       * ismounted.c (is_swap_device): Fix file descriptor/memory leak;
     4675+               we were missing an fclose().
     4676+
     4677+2002-02-20  Theodore Tso  <tytso@mit.edu>
     4678+
     4679+       * Makefile.in, inode_io.c, ext2fs.h, ext2_err.et.in: Add new io
     4680+               abstraction interface which exports an ext2 inode.
     4681+
     4682+       * ext2fs.h, fileio.c (ext2fs_file_flush): Export ext2fs_file_flush
     4683+               as a public interface.  Change void * to const void * in
     4684+               ext2fs_file_write's interface.
     4685+
     4686+       * test_io.c (test_close), unix_io.c (unix_close): Remove unneeded
     4687+               conditional; save a few bytes.
     4688+       
     4689+2002-02-12  Theodore Tso  <tytso@mit.edu>
     4690+
     4691+       * Makefile.in (tst_badblocks): Add some extra .o files when
     4692+               linking the debugging program tst_badblocks which are
     4693+               needed if we aren't compiling with inline functions enable.
     4694+
     4695+       * kernel-list.h (__inline__): On non-gcc and non-Watcom compilers,
     4696+               define away __inline__ since it may not be supported.
     4697+
     4698+       * kernel-jbd.h (jbd_debug): For systems that don't do STDC, use a
     4699+               stripped down jbd_debug that doesn't use variadic
     4700+               arguments.  This will cause warnings under AIX, but things
     4701+               should still build.
     4702+
     4703+2002-02-03  Theodore Tso  <tytso@thunk.org>
     4704+
     4705+       * Release of E2fsprogs 1.26
     4706+
     4707+2002-02-03  Theodore Tso  <tytso@mit.edu>
     4708+
     4709+       * mkdir.c (ext2fs_mkdir): Change to use ext2fs_inode_alloc_stats2
     4710+               so that the number of directories in use is adjusted
     4711+               appropriately.
     4712+
     4713+       * alloc_stats.c (ext2fs_inode_alloc_stats2): Add new function
     4714+               which optionally will modify the number of directories
     4715+               count.
     4716+
     4717+2002-01-03  Theodore Tso  <tytso@mit.edu>
     4718+
     4719+       * dir_iterate.c (ext2fs_dir_iterate2, ext2fs_process_dir_block):
     4720+               Add support for a new flag, DIRENT_FLAG_INCLUDE_REMOVED,
     4721+               which will return deleted directory entries.
     4722+               ext2fs_dir_iterate2 takes a new callback function which
     4723+               is identical with the one used by
     4724+               ext2fs_dblist_dir_iterate().  If the directory entry is
     4725+               deleted, the callback function will be called with the
     4726+               entry paraemter set to DIRENT_DELETED_FILE.
     4727+
     4728+       * Makefile.in, alloc_stats.c (ext2fs_inode_alloc_stats,
     4729+               ext2fs_block_alloc_stats): New functions which update
     4730+               block/inode allocation statistics in the bitmaps, block
     4731+               group descriptors, and superblock.
     4732+
     4733+       * mkjournal.c (mkjournal_proc), mkdir.c (ext2fs_mkdir),
     4734+               expanddir.c (expand_dir_proc), bb_inode.c
     4735+               (clear_bad_block_proc, set_bad_block_proc,
     4736+               ext2fs_update_bb_inode), alloc.c (ext2fs_alloc_block):
     4737+               Update to use new block/inode allocation statistics.
     4738+
     4739+2001-12-24  Theodore Tso  <tytso@mit.edu>
     4740+
     4741+       * ismounted.c (is_swap_device): New function used by
     4742+               ext2fs_check_if_mounted and ext2fs_check_mount_point which
     4743+               determines whether or not the specified device is a swap
     4744+               device by using /proc/swaps.  More bulletproofing for
     4745+               idiotic/careless system administrators!
     4746+
     4747+       * ext2fs.h, openfs.c (ext2fs_open), initialize.c
     4748+               (ext2fs_initialize), mkdir.c (ext2fs_mkdir): Add a new
     4749+               field to struct_ext2_filsys, umask.  This field is
     4750+               initialize to 022, and affects ext2fs_mkdir in the obvious
     4751+               way.  (In the future umask should also affect new file
     4752+               creation routines, but the fileio functions don't
     4753+               currently support this yes.)
     4754+
     4755+       * ismounted.c (check_mntent_file): Stat all of the entries in
     4756+               /etc/mtab and/or /proc/mounts in order to catch dim-witted
     4757+               system administrators who might have created alias
     4758+               devices.
     4759+
     4760+2001-12-23  Theodore Tso  <tytso@mit.edu>
     4761+
     4762+       * Makefile.in, jfs_user.h: Move linux/jbd.h to
     4763+               ext2fs/kernel-jbd.h, to avoid using the system header
     4764+               file version of hbd.h when using diet glibc (since it
     4765+               forcibly adds /usr/include to the beginning of the
     4766+               include search path.)
     4767+
     4768+       * kernel-jbd.h, kernel-list.h, jfs_compat.h: Move files from
     4769+               include/linux directory.
     4770+
     4771+2001-12-16  Theodore Tso  <tytso@mit.edu>
     4772+
     4773+       * bitops.h (ext2fs_mark_generic_bitmap, ext2fs_unmark_generic_bitmap),
     4774+               ext_attr.c (ext2fs_read_ext_attr, ext2fs_write_ext_attr),
     4775+               fileio.c (ext2fs_file_write): Fix gcc -Wall nits
     4776+
     4777+       * Makefile.in, jfs_user.h: linux/jfs.h has been renamed to
     4778+               linux/jbd.h
     4779+
     4780+2001-12-03  Theodore Tso  <tytso@mit.edu>
     4781+
     4782+       * unix_io.c (unix_open): Make sure the ulimit workaround works
     4783+               regardless of the version of glibc which is used to
     4784+               compild e2fsprogs.
     4785+
     4786+2001-11-26  Theodore Tso  <tytso@mit.edu>
     4787+
     4788+       * unix_io.c (unix_open): Work around a bug in 2.4.10+ kernels by
     4789+               trying to unset the filesize limit if at all possible,
     4790+               if a block device is getting opened.  (The filesize limit
     4791+               shouldn't be applied against writes to a block device, but
     4792+               starting in 2.4.10, the kernel is doing this.)
     4793+       
     4794+2001-11-05  Theodore Tso  <tytso@mit.edu>
     4795+
     4796+       * mkjournal.c (ext2fs_add_journal_inode): When creating a .journal
     4797+               file on adding a journal to an already-mounted filesystem,
     4798+               try to clear the ext2 file attributes on an already
     4799+               existing .journal file so that we don't fail if on a
     4800+               partially added journal to the filesystem.
     4801+
     4802+       * ext2_fs.h: Define a new ext2 file attribute, EXT2_NOTAIL_FL,
     4803+               which signals that a particular inode should not have the
     4804+               last bits of data (the "tail") be merged with another
     4805+               file.  This is necessary to keep LILO happy.
     4806+
     4807+2001-09-20  Theodore Tso  <tytso@thunk.org>
     4808+
     4809+       * Release of E2fsprogs 1.25
     4810+
     4811+2001-09-16  Theodore Tso  <tytso@mit.edu>
     4812+
     4813+       * ext2_ext_attr.h: Remove unneeded #include of <linux/config.h>
     4814+               which was breaking the build on the Hurd.  (Addresses
     4815+               Debian bug #112414).
     4816+
     4817+2001-09-13  Theodore Ts'o  <tytso@mit.edu>
     4818+
     4819+       * ismounted.c (check_mntent_file): We now validate the entry in
     4820+               /etc/mtab to make sure the filesystem is really mounted,
     4821+               since some broken distributions (read: Slackware) have
     4822+               buggy boot scripts that don't initialize /etc/mtab before
     4823+               checking non-root filesystems.  (Slackware also doesn't
     4824+               check the root filesystem separately, and reboot if the
     4825+               root filesystem had changes applied to it, which is
     4826+               dangerous and broken.)   
     4827+
     4828+2001-09-02  Theodore Tso  <tytso@thunk.org>
     4829+
     4830+       * Release of E2fsprogs 1.24a
     4831+
     4832+2001-08-30  Theodore Tso  <tytso@thunk.org>
     4833+
     4834+       * Release of E2fsprogs 1.24
     4835+
     4836+2001-08-30  Theodore Tso  <tytso@valinux.com>
     4837+
     4838+       * getsize.c (ext2fs_get_device_size): Back out BLKGETSIZE64
     4839+               changes, since the ioctl number has been reused by another
     4840+               unofficial patch.
     4841+
     4842+2001-08-15  Theodore Tso  <tytso@valinux.com>
     4843+
     4844+       * Release of E2fsprogs 1.23
     4845+
     4846+2001-08-05  Theodore Tso  <tytso@valinux.com>
     4847+
     4848+       * alloc.c (ext2fs_new_inode, ext2fs_new_block): Use the fast
     4849+               version of the bitmap test routines to speed up these
     4850+               routines.  (At some point I may want to make these
     4851+               routines use the find_first_bit functions, but that will
     4852+               add a lot of complexity since it means that these
     4853+               functions will have to break the bitmap abstraction
     4854+               boundary.  It's not clear it's worth it.)
     4855+
     4856+       * mkjournal.c (mkjournal_proc): Remember the last block allocated
     4857+               to speed up ext2fs_new_block().
     4858+
     4859+2001-07-29  Theodore Tso  <tytso@valinux.com>
     4860+
     4861+       * finddev.c (scan_dir): Fix memory leak; we weren't calling
     4862+               closedir() when exiting the function in all cases.
     4863+
     4864+2001-07-27  Theodore Tso  <tytso@valinux.com>
     4865+
     4866+       * mkjournal.c (ext2fs_create_journal_superblock): Set the first
     4867+               block usable in the journal for external journals to be 2
     4868+               or 3, depending on the blocksize, so that the existing
     4869+               kernel code does the right thing.
     4870+
     4871+       * getsize.c (ext2fs_get_device_size): Add support for the
     4872+               BLKGETSIZE64 ioctl.  (Ioctl defined by unofficial patches
     4873+               from Ben LaHaise, but it's likely this interface won't
     4874+               change.)
     4875+
     4876+       * mkjournal.c (ext2fs_add_journal_device): Use the correct block
     4877+               when writing the journal superblock, too.  (Oops! Needed
     4878+               to make 1k filesystems with external journal to work.)
     4879+
     4880+2001-07-26  Theodore Tso  <tytso@valinux.com>
     4881+
     4882+       * mkjournal.c (ext2fs_add_journal_device): Use the correct block
     4883+               to find the journal superblock if the blocksize is 1024.
     4884+
     4885+2001-07-21  Theodore Tso  <tytso@valinux.com>
     4886+
     4887+       * ext2_err.et.in (EXT2_ET_LOAD_EXT_JOURNAL): Add new error code
     4888+
     4889+2001-07-20  Theodore Tso  <tytso@valinux.com>
     4890+
     4891+       * ext_attr.c (ext2fs_write_ext_attr): When writing the extended
     4892+               attribute block, set the filesystem changed bit.
     4893+
     4894+       * bitops.h (ext2fs_find_first_bit_set, ext2fs_find_next_bit_set):
     4895+               Comment out these functions since we're not using them.
     4896+
     4897+2001-07-10  Theodore Tso  <tytso@valinux.com>
     4898+
     4899+       * closefs.c (write_primary_superblock): After writing changes to
     4900+               the primary superblock, update the original superblock
     4901+               copy so we don't have to re-write those changes in the
     4902+               future.
     4903+               (ext2fs_flush): Clear the superblock dirty flag after
     4904+               we've flushed out changes to disk.
     4905+
     4906+2001-07-07  Theodore Tso  <tytso@valinux.com>
     4907+
     4908+       * bitops.h (ext2fs_find_first_bit_set): Use %esi instead of %ebx
     4909+               to avoid register conflicts when compiling in PIC mode.
     4910+
     4911+2001-07-04  Theodore Tso  <tytso@valinux.com>
     4912+
     4913+       * bitops.h (ext2fs_find_first_bit_set, ext2fs_find_next_bit_set):
     4914+               Add new functions (C and in i386 assembler) which quickly
     4915+               find bits set in a bitmask.
     4916+
     4917+2001-06-23  Theodore Tso  <tytso@valinux.com>
     4918+
     4919+       * Makefile.in, ext_attr.c, ext2_attr.c, ext2fs.h: Add new files
     4920+               ext2_ext_attr.h and ext_attr.c for extended attributes
     4921+               support.
     4922+
     4923+       * Release of E2fsprogs 1.22
     4924+
     4925+2001-06-22  Theodore Tso  <tytso@valinux.com>
     4926+
     4927+       * mkjournal.c (ext2fs_add_journal_inode): Move close of file
     4928+               descriptor so that adding a journal to a mounted
     4929+               filesystem doesn't die.  (Fixes a bug accidentally
     4930+               introduced in e2fsprogs 1.21.)
     4931+
     4932+       * mkjournal.c (ext2fs_add_journal_inode): Only use fchflags if
     4933+               HAVE_CHFLAGS and UF_NODUMP are defined, since the Hurd has
     4934+               fchflags without defining UF_NODUMP.  (Addresses Debian
     4935+               bug #101361)
     4936+
     4937+       * flushb.c: Use platform independent method of defining the
     4938+               BLKFLSBUF and FDFLUSH ioctl's.  Also include sys/mount.h
     4939+               since on newer glibc's BLKFLSBUF is defined there.
     4940+
     4941+       * bitops.h: The C language versions of ext2fs_swab16/32 need to be
     4942+               included if EXT2FS_ENABLE_SWAPFS is defined, since we need
     4943+               to support byte swapping even if we don't support the
     4944+               conversion functions.  (Fixes Debian bug #101686).
     4945+
     4946+       * dirblock.c (ext2fs_read_dir_block): Remove use of dir_entry_2
     4947+               since the byte-swapping code all assumes the
     4948+               ext2_dir_entry structure.  (It's a question of whether or
     4949+               not name_len should be byte-swapped or not, and whether
     4950+               it's a 16 bit or 8 bit field.)
     4951+
     4952+2001-06-15  Theodore Tso  <tytso@valinux.com>
     4953+
     4954+       * Release of E2fsprogs 1.21
     4955+
     4956+2001-06-15  Theodore Tso  <tytso@valinux.com>
     4957+
     4958+       * Makefile.in: Fix bug in installation of ext2_types.h.  It is a
     4959+               file which is generated and is therefore found in the
     4960+               build directory, not source directory.
     4961+
     4962+       * ismounted.c (check_mntent_file): Use a test file in / to check
     4963+               to see if the root filesystem is mounted read-only.  This
     4964+               protects against the case where /etc might not be on /, as
     4965+               well as the case where /etc/mtab doesn't exist.  (Both are
     4966+               should-never happen scenarios, but you never know...)
     4967+
     4968+2001-06-14  Theodore Tso  <tytso@valinux.com>
     4969+
     4970+       * ismounted.c (ext2fs_check_if_mounted): Fix grammer in comment.
     4971+               Remove unneeded #pragma argsused, since the arguments are
     4972+               always used.
     4973+
     4974+2001-06-13  Theodore Tso  <tytso@valinux.com>
     4975+
     4976+       * ext2_types.h.in: If linux/types.h has been defined, then don't
     4977+               try to redefine the typedefs.
     4978+
     4979+       * Makefile.in (HFILES): Add ext2_types.h to the list of files
     4980+               which should be installed.
     4981+
     4982+       * ismounted.c (check_mntent_file): Work around GNU hurd brain
     4983+               damage.  Addresses Debian bug #100304.
     4984+
     4985+       * Makefile.in: Limit some .o files from being included into the
     4986+               library if --disable-debugfs, --disable-swapfs,
     4987+               --disable-imager, or --disable-resizer are used.
     4988+
     4989+2001-06-12  Theodore Tso  <tytso@valinux.com>
     4990+
     4991+       * inode.c, tst_iscan.c: Stop using the compatibility badblocks
     4992+               function, and use the ext2fs_badblocks_* functions
     4993+               instead.
     4994+
     4995+2001-06-11  Theodore Tso  <tytso@valinux.com>
     4996+
     4997+       * Makefile.in, gen_bitmap.c, bitops.h: Move inline functions
     4998+               ext2fs_mark_generic_bitmap and
     4999+               ext2fs_unmark_generic_bitmap to gen_bitmap.c as normal
     5000+               functions.  (This saves space and doesn't significantly
     5001+               change the speed of e2fsck on a P-III.)
     5002+
     5003+       * ext2fs.h, bitops.h, block.c, bmap.c, closefs.c, dirblock.c,
     5004+               inode.c, native.c, openfs.c, rw_bitmaps.c, swapfs.c: Only
     5005+               include the byte-swapping logic if ENABLE_SWAPFS is turned
     5006+               on or if we're on a big-endian machine.
     5007+       
     5008+       * initialize.c (ext2fs_initialize):Use WORDS_BIGENDIAN directly to
     5009+               set EXT2_FLAG_SWAP_BYTES, instead of using
     5010+               ext2fs_native_flag.
     5011+       
     5012+       * native.c (ext2fs_native_flag): Use WORDS_BIGENDIAN provided by
     5013+               autoconf to determine whether or not return
     5014+               EXT2_FLAG_SWAP_BYTES.
     5015+
     5016+2001-06-10  Theodore Tso  <tytso@valinux.com>
     5017+
     5018+       * Makefile.in: Remove the dependence on the libe2p library.
     5019+
     5020+       * mkjournal.c (ext2fs_add_journal_inode): Replace use of fsetflags
     5021+               with direct usage of the ioctl/fchflags so that we don't
     5022+               have to depend on the libe2p library.
     5023+
     5024+2001-06-08  Theodore Tso  <tytso@valinux.com>
     5025+
     5026+       * ext2_types.h.in: Use unsigned ints in favor of unsigned longs
     5027+               when trying to find a 32-bit wide type.
     5028+
     5029+       * icount.c (insert_icount_el): Fix the code used to estimate the
     5030+               size of the new icount array to be more intelligent, to
     5031+               avoid reallocating the array too many times.  Thanks to
     5032+               Enrique Perez-Terron for pointing this out.
     5033+
     5034+2001-06-02  Theodore Tso  <tytso@valinux.com>
     5035+
     5036+       * valid_blk.c (ext2fs_inode_has_valid_blocks): Only check i_blocks
     5037+               for a symlink to determine whether it is a fast symlink.
     5038+
     5039+2001-06-01  Theodore Tso  <tytso@valinux.com>
     5040+
     5041+       * Makefile.in, dosio.c, ext2_fs.h, ext2_types.h.in, ext2fs.h:
     5042+               Move include/asm/types.h.in to lib/ext2fs/ext2_types.h.in.
     5043+
     5044+2001-05-25  Theodore Tso  <tytso@valinux.com>
     5045+
     5046+       * Release of E2fsprogs 1.20
     5047+
     5048+2001-05-25  Theodore Tso  <tytso@valinux.com>
     5049+
     5050+       * ismounted.c: More cleanups for ismounted.c, some from Andreas,
     5051+               some to clean up Andreas's patches.  Use strncpy instead
     5052+               of strcpy to save the root's mountpoint.  Clean up #ifdef
     5053+               structure.  Remove uneeded variable in testing/debug driver.
     5054+
     5055+2001-05-24  Andreas Dilger  <adilger@turbolinux.com>
     5056+
     5057+       * ismounted.c: Add check for root device which doesn't depend on
     5058+               /etc/fstab or /proc/mounts to be correct.  Don't call
     5059+               endmntent() before we are done with mnt struct.
     5060+
     5061+2001-05-23  Theodore Tso  <tytso@valinux.com>
     5062+
     5063+       * ext2_err.et.in (EXT2_ET_JOURNAL_UNSUPP_VERSION): Added new error
     5064+               code.
     5065+
     5066+2001-05-21  Theodore Tso  <tytso@valinux.com>
     5067+
     5068+       * ext2_fs.h: Change assignment of EXT2_FEATURE_COMPAT_DIR_INDEX to
     5069+               make room for pre-existing usage of
     5070+               EXT2_FEATURE_COMPAT_EXT_ATTR.  Add flag EXT2_INDEX_FL with
     5071+               the same codepoint as EXT2_BTREE_FL.
     5072+
     5073+2001-05-20  Theodore Tso  <tytso@valinux.com>
     5074+
     5075+       * ext2fs.h: #include <> instead of "" for ext2fs and et header
     5076+               files, since they will be installed in /usr/include
     5077+
     5078+2001-05-14  Theodore Tso  <tytso@valinux.com>
     5079+
     5080+       * alloc.c, alloc_tables.c, badblocks.c, bb_compat.c, bb_inode.c,
     5081+               bitmaps.c, bitops.c, block.c, bmap.c, bmove.c, brel_ma.c,
     5082+               check_desc.c, closefs.c, cmp_bitmaps.c, dblist.c,
     5083+               dblist_dir.c, dir_iterate.c, dirblock.c, dupfs.c,
     5084+               expanddir.c, ext2_fs.h, fileio.c, finddev.c, flushb.c,
     5085+               freefs.c, get_pathname.c, getsize.c, icount.c, imager.c,
     5086+               initialize.c, inline.c, inode.c, irel_ma.c, ismounted.c,
     5087+               link.c, lookup.c, mkdir.c, mkjournal.c, namei.c, native.c,
     5088+               newdir.c, nt_io.c, openfs.c, read_bb.c, read_bb_file.c,
     5089+               rs_bitmap.c, rw_bitmaps.c, swapfs.c, test_io.c,
     5090+               tst_badblocks.c, tst_byteswap.c, tst_getsize.c,
     5091+               tst_iscan.c, unix_io.c, unlink.c, valid_blk.c, version.c,
     5092+               write_bb_file.c, ext2_fs.h: Moved file from include/linux.
     5093+               Adjust all files in this directroy to include this file.
     5094+
     5095+       * mkjournal.c (ext2fs_create_journal_superblock): Remove redundant
     5096+               code.
     5097+
     5098+2001-05-05  Theodore Tso  <tytso@valinux.com>
     5099+
     5100+       * fileio.c (ext2fs_file_read): Factored out common code and
     5101+               cleaned up function.  Fixed a bug where if there was an
     5102+               error reading from the disk, the number of bytes read
     5103+               wasn't reliably set.  (Fixes Debian bug #79163)
     5104+               (ext2fs_file_write): Factored out common code and made
     5105+               function more efficient; if writing a full block, don't
     5106+               bother to do a read-modify-write cycle.
     5107+
     5108+2001-05-04  Theodore Tso  <tytso@valinux.com>
     5109+
     5110+       * dirblock.c (ext2fs_read_dir_block): Check for an directory
     5111+               record length which isn't a multiple four, and treat that
     5112+               as an invalid.  Scan the directory and return an error
     5113+               (EXT2_ET_DIR_CORRUPTED) if the directory records are
     5114+               corrupted.
     5115+               (ext2fs_write_dir_block): If while byte-swapping the
     5116+               directory block, if there's an error, abort and return
     5117+               EXT2_ET_DIR_CORRUPTED.
     5118+
     5119+2001-05-02  Theodore Tso  <tytso@valinux.com>
     5120+
     5121+       * ext2fs.h (EXT2_FLAG_IMAGE_FILE): Add new flag, and add
     5122+               image_header field in the ext2_filsys structure
     5123+
     5124+       * block.c (block_iterate_ind, block_iterate_dind, block_iterate_tind):
     5125+       * inode.c (ext2fs_read_inode):
     5126+       * rw_bitmaps.c (read_bitmaps):
     5127+       * openfs.c (ext2fs_open): Add support for EXT2_FLAG_IMAGE_FILE
     5128+
     5129+       * imager.c (ext2fs_image_bitmap_read): Fix bug in imager to make
     5130+               sure the full bitmap is saved.
     5131+
     5132+2001-05-01  Theodore Tso  <tytso@valinux.com>
     5133+
     5134+       * e2image.h (struct ext2_image_hdr): Add space for the device name
     5135+               in the image header.
     5136+
     5137+       * dir_iterate.c (ext2fs_process_dir_block): Add a double-check to
     5138+               make sure the rec_len is a multiple of 4, to prevent
     5139+               bus-errors on architectures which care about mis-aligned
     5140+               pointer references.
     5141+
     5142+2001-04-25  Theodore Tso  <tytso@valinux.com>
     5143+
     5144+       * getsize.c (ext2fs_get_device_size): Use an unsigned long to
     5145+               query the device sizes using the BLKGETSIZE ioctl.
     5146+
     5147+2001-04-16  Theodore Tso  <tytso@valinux.com>
     5148+
     5149+       * ismounted.c (check_mntent): Check /proc/mounts on Linux systems
     5150+               before checking /etc/mtab.  The EXT2_MF_READONLY flag is
     5151+               now set from the /etc/mtab options field for all
     5152+               filesystems, not just the root filesystem.  Add debugging
     5153+               code to make it easier to test ext2fs_check_if_mounted().
     5154+
     5155+       * mkjournal.c (ext2fs_create_journal_superblock): Add safety
     5156+               check; return an error if there's an attempt to create a
     5157+               journal less than 1024 filesystem blocks.
     5158+
     5159+       * ext2_err.et.in, mkjournal.c: Change EXT2_JOURNAL_NOT_BLOCK and
     5160+               EXT2_NO_JOURNAL_SB to be EXT2_ET_*.
     5161+
     5162+2001-02-20  Theodore Tso  <tytso@valinux.com>
     5163+
     5164+       * bitops.h (ext2fs_swab16, ext2fs_swab32): Add i386 assembly
     5165+               inline functions.
     5166+
     5167+       * tst_byteswap.c: New function to test the byteswap functions.
     5168+               Add to regression test suite.
     5169+
     5170+2001-02-08  Theodore Tso  <tytso@valinux.com>
     5171+
     5172+       * e2image.h (struct ext2_image_hdr): Fix type for fs_hostname
     5173+
     5174+2001-02-07  Theodore Tso  <tytso@valinux.com>
     5175+
     5176+       * mkjournal.c (ext2fs_create_journal_superblock): Fix the setting
     5177+               of s_first for external devices to always be 1, since
     5178+               jsb->s_first is always relative to the start of the
     5179+               journal superblock.  Use htonl(1) when setting s_nr_users.
     5180+
     5181+2001-01-17  Theodore Ts'o  <tytso@valinux.com>
     5182+
     5183+       * mkjournal.c (ext2fs_add_journal_device): Fix bug where the
     5184+               device number of the filesystem (instead of the journal)
     5185+               was being dropped into s_journal_dev.
     5186+
     5187+2001-01-15  Theodore Ts'o  <tytso@valinux.com>
     5188+
     5189+       * initialize.c (ext2fs_initialize): Add support for initializing
     5190+               the ext2 superblock for external journal devices.  This
     5191+               basically means we don't bother to allocate any block
     5192+               group descriptors.
     5193+
     5194+       * openfs.c (ext2fs_open): Only open external journal devices if
     5195+               the new flag EXT2_FLAG_JOURNAL_DEV_OK is passed to
     5196+               ext2fs_open.  When opening such devices, don't try to read
     5197+               the block group descriptors, since they're not there.
     5198+
     5199+       * ext2_err.et.in (EXT2_NO_JOURNAL_SB): Add new error code
     5200+       
     5201+       * mkjournal.c: Export a new function,
     5202+               ext2fs_create_journal_superblock(), which allocates and
     5203+               returns a buffer containing a journal superblock.  This is
     5204+               needed by mke2fs to create an external journal.  Rewrote
     5205+               ext2fs_add_journal_device() so that it no longer creates
     5206+               the external journal, but rather adds a filesystem to an
     5207+               existing external journal.  It handles all of the UUID
     5208+               manipulation.
     5209+
     5210+       * ext2fs.h: List the EXT3_FEATURE_JOURNAL_DEV as a flag supported
     5211+               by the library.  Define the EXT2_FLAG_JOURNAL_DEV_OK.
     5212+               Changed function prototype for ext2fs_add_journal_device().
     5213+               
     5214+2001-01-14  Theodore Ts'o  <tytso@valinux.com>
     5215+
     5216+       * closefs.c (ext2fs_flush): Don't write out anything beyond the
     5217+                primary superblock if EXT2_INCOMPAT_JOURNAL_DEV is
     5218+                listed.
     5219+
     5220+2001-01-12  Theodore Ts'o  <tytso@valinux.com>
     5221+
     5222+       * imager.c: Fix gcc -Wall complaints and a series of bugs where
     5223+               retval wasn't set correctly.  (Thanks to Andreas Dilger
     5224+               for pointing this out.)
     5225+
     5226+2001-01-11    <tytso@snap.thunk.org>
     5227+
     5228+       * flushb.c (ext2fs_sync_device): New function which centralizes
     5229+               all of the places which might try to use the BLKFLSBUF
     5230+               or FDFLUSH ioctls (and usually failing to define them
     5231+               since the system header files don't usually do this for
     5232+               us, and we're trying to avoid usage of kernel include
     5233+               files now).
     5234+
     5235+2001-01-10    <tytso@snap.thunk.org>
     5236+
     5237+       * alloc.c, bb_inode.c, bitmaps.c, bitops.h, block.c, bmap.c,
     5238+               bmove.c, brel.h, cmp_bitmaps.c, dblist.c, dblist_dir.c,
     5239+               dir_iterate.c, expanddir.c, ext2fs.h, ext2fsP.h, fileio.c,
     5240+               finddev.c, get_pathname.c, icount.c, inode.c, irel.h,
     5241+               irel_ma.c, ismounted.c, link.c, lookup.c, mkdir.c,
     5242+               mkjournal.c, namei.c, newdir.c, read_bb_file.c, test_io.c,
     5243+               tst_iscan.c, unix_io.c, unlink.c: Change use of ino_t to
     5244+               ext2_ino_t, to protect applications that attempt to
     5245+               compile -D_FILE_OFFSET_BITS=64, since this inexplicably
     5246+               changes ino_t(!?).  So we use ext2_ino_t  to avoid an
     5247+               unexpected ABI change.
     5248+
     5249+2001-01-05    <tytso@snap.thunk.org>
     5250+
     5251+       * dirblock.c (ext2fs_read_dir_block): Fix a potential case where
     5252+               we may overrun allocated memory in case of a corrupted
     5253+               filesystem (or an e2fsck test case :-) when byte-swapping
     5254+               the directory block.
     5255+
     5256+       * ext2fs.h: Indent the #warning to fix gcc -Wall complaint.
     5257+
     5258+       * mkjournal.c (ext2fs_add_journal_device): Fix various gcc -Wall
     5259+               complaints including a missing return 0 at the end of
     5260+               ext2fs_add_journal_device.
     5261+
     5262+2001-01-03    <tytso@snap.thunk.org>
     5263+
     5264+       * Makefile.in: Link in libe2p when creating libext2fs as a shared
     5265+               library, since mkjournal.c now references fsetflags().
     5266+
     5267+       * mkjournal.c (ext2fs_add_journal_inode): Folded in Andreas
     5268+               Dilger's changes (with fixups) to allow on-line creation
     5269+               of a journal file.
     5270+
     5271+       * ext2fs.h, closefs.c (ext2fs_flush): Add new flag,
     5272+               EXT2_FLAG_SUPER_ONLY, which the close routines to only
     5273+               update the superblock, and not the group descriptors.
     5274+
     5275+2000-12-30  Andreas Dilger  <adilger@turbolinux.com>
     5276+
     5277+       * ismounted.c: add ext2fs_check_mount_point() function, which will
     5278+               optionally return the mount point of a device if mounted
     5279+
     5280+2000-12-14  Andreas Dilger  <adilger@turbolinux.com>
     5281+
     5282+       * mkjournal.c: rename ext2fs_add_journal_fs() to the more descriptive
     5283+               ext2fs_add_journal_inode()
     5284+
     5285+2001-01-01    <tytso@snap.thunk.org>
     5286+
     5287+       * ext2fs.h: Remove definition of ext2fs_sb.  Note: this may break
     5288+               source (but not binary) compatibility of some users of the
     5289+               ext2 library.  They should just simply do a global search
     5290+               and replace of struct ext2fs_sb with struct
     5291+               ext2_super_block, and use their own private copy of
     5292+               ext2_fs.h if they aren't already.
     5293+
     5294+       * closefs.c, initialize.c, link.c, newdir.c, openfs.c, swapfs.c:
     5295+               Replace use of ext2fs_sb with ext2_super_block.
     5296+
     5297+2000-12-31    <tytso@snap.thunk.org>
     5298+
     5299+       * ext2fs.h: Cleaned up header file by removing definitions of
     5300+               feature flags that might not have been defined in older
     5301+               ext2 header files.  Now that we're using our own
     5302+               include/linux/ext2fs.h header file, this can never happen.
     5303+
     5304+       * jfs_dat.h: Removed old header file which is no longer needed.
     5305+
     5306+2000-12-13  Theodore Ts'o  <tytso@valinux.com>
     5307+
     5308+       * closefs.c (ext2fs_update_dynamic_rev): New function suggested
     5309+               by Andreas Dilger to update the filesystem revision to
     5310+               EXT2_DYNAMIC_REV.
     5311+
     5312+       * swapfs.c (ext2fs_swap_super): Add byte swapping for the journal
     5313+               fields.
     5314+
     5315+2000-12-09    <tytso@snap.thunk.org>
     5316+
     5317+       * ext2fs.h, mkjournal.c (ext2fs_add_journal_inode,
     5318+               ext2fs_add_journal_device): Add a new argument to the APIs
     5319+               of these function, which is a flags word.  This is used to
     5320+               allow the creation of a V1 superblock for those folks who
     5321+               are using ext3 0.3b in production.  Note, the user-land
     5322+               interface for getting at this flag won't be documented, as
     5323+               the V1 superblock is deprecated.
     5324+
     5325+       * mkjournal.c (init_journal_superblock): Sync Stephen's changes
     5326+               which creates a V2 superblock instead of a V1 superblock.
     5327+
     5328+2000-11-21    <tytso@snap.thunk.org>
     5329+
     5330+       * test_io.c (test_write_blk, test_write_byte): Fix typos pointed
     5331+               out by Andreas Dilger.
     5332+
     5333+2000-11-05    <tytso@snap.thunk.org>
     5334+
     5335+       * imager.c (ext2fs_image_{inode,super,bitmap}_{read,write},
     5336+               ext2_fs.h, Makefile.in: New file that has routines that
     5337+               save ext2fs metadata to a file.
     5338+
     5339+       * ext2_err.et.in (EXT2_ET_MAGIC_E2IMAGE): New error code assigned.
     5340+
     5341+       * e2image.h: New file which defines the file format for the ext2
     5342+               image file.  (Saved copy of ext2 metadata to a file as a
     5343+               saving throw against worst-case damage.)
     5344+
     5345+2000-11-01    <tytso@snap.thunk.org>
     5346+
     5347+       * inode.c (ext2fs_flush_icache): Add new function
     5348+               ext2fs_flush_icache() which flushes the internal inode
     5349+               cache.  Applications which modify the inode table blocks
     5350+               directly must call this function.
     5351+
     5352+2000-10-26    <tytso@snap.thunk.org>
     5353+
     5354+       * mkjournal.c: Add #include of netinet/in.h, since Solaris
     5355+               requires it for ntohl().
     5356+
     5357+       * ext2_io.h (io_channel_write_byte): Add new interface to allow
     5358+               callers to write specific byte ranges.  This is an
     5359+               optional interface, which not all IO channels may
     5360+               implement.
     5361+
     5362+       * unix_io.c (unix_write_byte):
     5363+       * test_io.c (test_write_byte): Add implementation of the
     5364+               write_byte function.
     5365+
     5366+       * closefs.c (write_primary_superblock, ext2fs_flush): Add a new
     5367+               function which writes the primary superblock.  If the IO
     5368+               channel supports writing raw bytes directly, only fields
     5369+               which were modified are written to the disk.  This makes
     5370+               it safe(r) to use utilities like tune2fs on a mounted
     5371+               filesystem.
     5372+
     5373+       * freefs.c (ext2fs_free): Free the original superblock if it is
     5374+               available.
     5375+
     5376+       * openfs.c (ext2fs_open): Store a copy of the original superblock
     5377+               when opening it.
     5378+
     5379+       * ext2fs.h: Add a field to store the original superblock in the
     5380+               ext2 context structure.
     5381+
     5382+2000-10-24    <tytso@snap.thunk.org>
     5383+
     5384+       * llseek.c: Add #ifdef's for IA64 (it's a 64-bit platform, so we
     5385+               don't need to use llseek).
     5386+
     5387+2000-10-24    <tytso@valinux.com>
     5388+
     5389+       * Makefile.in, ext2fs.h, jfs_dat.h, mkjournal.c: Add functions for
     5390+               creating an ext3 journal on a filesystem.
     5391+
     5392+2000-08-21    <tytso@valinux.com>
     5393+
     5394+       * ext2_err.et.in (EXT2_JOURNAL_NOT_BLOCK): Add new error code.
     5395+
     5396+2000-08-22    <tytso@valinux.com>
     5397+
     5398+       * unix_io.c: Make massive changes to support a multiple block
     5399+               writethrough cacheing.
     5400+
     5401+       * ext2_io.h: Added flags field to the io_channel structure.
     5402+
     5403+2000-08-19    <tytso@valinux.com>
     5404+
     5405+       * finddev.c, ext2fs.h, Makefile.in: Add new file, finddev.c, which
     5406+               provides the function ext2fs_find_block_device().  This
     5407+               function returns the pathname to a block device, given its
     5408+               device number.
     5409+
     5410+2000-07-13    <tytso@valinux.com>
     5411+
     5412+       * Release of E2fsprogs 1.19
     5413+
     5414+2000-07-07  Theodore Ts'o  <tytso@valinux.com>
     5415+
     5416+       * ext2fs.h (EXT2_LIB_FEATURE_INCOMPAT_SUPP): Add
     5417+               EXT3_FEATURE_INCOMPAT_RECOVER (aka needs_recovery) to the
     5418+               list of filesystem flags supported by the library.
     5419+
     5420+2000-07-04  Theodore Ts'o  <tytso@valinux.com>
     5421+
     5422+       * ext2fs.h: Update to include latest journalling additions to the
     5423+               superblock.
     5424+
     5425+       * dll/jump.funcs: Add new jumptable entries for
     5426+               ext2fs_write_bb_FILE, ext2fs_read_bb_FILE2, and
     5427+               ext2fs_badblocks_equal.
     5428+
     5429+       * tst_badblocks.c: Update test program to test
     5430+               ext2fs_read_bb_FILE2 and ext2fs_write_FILE.
     5431+
     5432+       * write_bb_file.c (ext2fs_write_bb_FILE): New function which
     5433+               writes out bad blocks list to a file.
     5434+
     5435+       * read_bb_file.c (ext2fs_read_bb_FILE2): Add new function which
     5436+               changes the callback function to take two additional
     5437+               arguments; a private blind pointer supplied by the caller,
     5438+               and pointer to a char * containing a pointer to the
     5439+               invalid string.
     5440+
     5441+       * badblocks.c (ext2fs_badblocks_equal): Add new function which
     5442+               returns true if two badblocks list are equal.
     5443+
     5444+       * Makefile.in: Remove explicit link of -lc in the shared library.
     5445+               (It shouldn't be necessary, and is harmful in some cases).
     5446+
     5447+2000-06-10  Theodore Ts'o  <tytso@valinux.com>
     5448+
     5449+       * getsize.c (main): Add debugging code under #ifdef DEBUG
     5450+
     5451+2000-05-27  Theodore Ts'o  <tytso@valinux.com>
     5452+
     5453+       * mkdir.c (ext2fs_mkdir): Read the parent directory's inode
     5454+               earlier, so that if there's an error reading it, we can
     5455+               more cleanly back out of the operation.
     5456+
     5457+2000-05-25    <tytso@snap.thunk.org>
     5458+
     5459+       * getsize.c (ext2fs_get_device_size): Use open64() instead of
     5460+               open() if it exists.  Under linux, manually define the
     5461+               ioctl for BLKGETSIZE if it isn't already defined and it's
     5462+               safe to do so.
     5463+
     5464+       * unix_io.c (unix_open): Use open64() instead of open() if it
     5465+               exists.
     5466+
     5467+       * llseek.c: Simplify header includes of unistd.h.  If lseek64 is
     5468+               available (and prototypes are defined) use it in
     5469+               preference to llseek.
     5470+
     5471+       * Makefile: Add hack dependency rule so that parallel makes work
     5472+               correctly.
     5473+
     5474+2000-05-18  Theodore Ts'o  <tytso@valinux.com>
     5475+
     5476+       * ext2fs.h: Add appropriate ifdef's to support C++ compilation.
     5477+
     5478+2000-04-03  Theodore Ts'o  <tytso@valinux.com>
     5479+
     5480+       * block.c: Readibility tweak in conditionals involving
     5481+               ctx->fs->flags.
     5482+
     5483+       * ext2fs.h: Use AUTOCONF SIZEOF_* macros if available to determine
     5484+               how to define __s64 and __u64.  Turn off "compression is
     5485+               experimental" warning if the cpp macro
     5486+               I_KNOW_THAT_COMPRESSION_IS_EXPERIMENTAL is defined.
     5487+
     5488+2000-02-11    <tytso@snap.thunk.org>
     5489+
     5490+       * ext2fs.h: Define EXT2FS_COMPRESSED_BLKADDR and HOLE_BLKADDR.
     5491+               Conditionally include Compression as a supported type if
     5492+               ENABLE_COMPRESSION (via --enable-compression) is turned on.
     5493+
     5494+       * swapfs.c (ext2fs_swap_super): Swap the compression usage bitmap.
     5495+
     5496+2000-02-08    <tytso@snap.thunk.org>
     5497+
     5498+       * bitops.h (ext2fs_mark_generic_bitmap, ext2fs_unmark_generic_bitmap,
     5499+               ext2fs_mark_block_bitmap, ext2fs_unmark_block_bitmap,
     5500+               ext2fs_mark_inode_bitmap, ext2fs_unmark_inode_bitmap):
     5501+               Change to return the previous state of the bit that is
     5502+               being marked or unmarked.  For speed optimization.
     5503+       
     5504+2000-02-02  Theodore Ts'o  <tytso@valinux.com>
     5505+
     5506+       * getsize.c, ismounted.c: Remove unneeded include of linux/fs.h
     5507+
     5508+       * swapfs.c: Remove #ifdef HAVE_EXT2_INODE_VERSION since it's not
     5509+               needed any more; we know it will always be i_generation.
     5510+               Add support for swapping the high bits of the uid and gid.
     5511+
     5512+1999-11-19    <tytso@valinux.com>
     5513+
     5514+       * mkdir.c (ext2fs_mkdir): Only update the parent's inode link
     5515+               counts if the link was successful.  Patch suggested by
     5516+               jeremy@goop.org.
     5517+
     5518+       * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
     5519+               the source directory.
     5520+
     5521+1999-11-10    <tytso@valinux.com>
     5522+
     5523+       * Release of E2fsprogs 1.18
     5524+
     5525+1999-11-08    <tytso@valinux.com>
     5526+
     5527+       * Makefile.in (tst_badblocks): Add freefs.o to the object list,
     5528+               since ext2fs_badblocks_list_free was moved to freefs.c.
     5529+
     5530+       * tst_badblocks.c: Use the newer badblocks API names.  Add
     5531+               duplicate blocks to the test inputs to test dealing with
     5532+               adding blocks which are already in the badblocks list.
     5533+
     5534+       * badblocks.c (ext2fs_badblocks_list_add): If appending to the end
     5535+               of the list, use a shortcut O(1) operations instead of an
     5536+               O(n) operation.  (Idea suggested by David Beattie.)
     5537+
     5538+       * freefs.c (ext2fs_free): Use ext2fs_badblocks_list_free() instead
     5539+               of badblocks_list_free(), to save a procedure call.
     5540+
     5541+1999-10-26    <tytso@valinux.com>
     5542+
     5543+       * Release of E2fsprogs 1.17
     5544+
     5545+1999-10-26    <tytso@valinux.com>
     5546+
     5547+       * ext2fs.h: Add kludge to deal with the fact that egcs cpp doesn't
     5548+               seem to handle ~0UL the same way as they used to.
     5549+
     5550+1999-10-25    <tytso@valinux.com>
     5551+
     5552+       * nt_io.c (_OpenNtName): Open the device using
     5553+               FILE_SYNCHRONOUS_IO_NONALERT instead of
     5554+               FILE_SYNCHRONOUS_IO_ALERT
     5555+               (nt_open): At the end of the device open routine, unlock
     5556+               the drive but do not dismount it.
     5557+
     5558+       * initialize.c (CREATOR_OS): Use __GNU__ instead of __gnu__ to
     5559+               detect the Hurd OS.
     5560+
     5561+1999-10-22    <tytso@valinux.com>
     5562+
     5563+       * Release of E2fsprogs 1.16
     5564+
     5565+1999-10-22    <tytso@valinux.com>
     5566+
     5567+       * mkdir.c (ext2fs_mkdir): Pass EXT2_FT_DIR flag to ext2fs_link().
     5568+
     5569+       * link.c (ext2fs_link): This call now uses the low three bits of
     5570+               the flags parameter to pass the directory filetype
     5571+               information; it will set the directory entry FILETYPE
     5572+               information if the filesystem supports it.
     5573+
     5574+       * newdir.c (ext2fs_new_dir_block): If the FILETYPE superblock
     5575+               option is set, then create the '.' and '..' entries with
     5576+               the filetype set to EXT2_FT_DIR.
     5577+
     5578+1999-09-24    <tytso@valinux.com>
     5579+
     5580+       * nt_io.c: New file which supports I/O under Windows NT.
     5581+
     5582+1999-09-07    <tytso@valinux.com>
     5583+
     5584+       * ext2fs.h: Add new fields for journalling and define new
     5585+               feature bits used by newer filesystems: IMAGIC_INODES,
     5586+               HAS_JOURNAL, RECOVER.
     5587+
     5588+       * expanddir.c (ext2fs_expand_dir, expand_dir_proc): Change where
     5589+               we update the inode block count and size files so that the
     5590+               block count field is updated correctly when we create an
     5591+               indirect block.
     5592+
     5593+1999-07-18  Theodore Ts'o  <tytso@valinux.com>
     5594+
     5595+       * Release of E2fsprogs 1.15
     5596+
     5597+1999-06-23    <tytso@valinux.com>
     5598+
     5599+       * swapfs.c (ext2fs_swap_inode): Add compatibility for Linux 2.3
     5600+               kernels that use i_generation instead of i_version.  Patch
     5601+               supplied by Jon Bright <sircus@sircus.demon.co.uk>.
     5602+
     5603+1999-06-21    <tytso@valinux.com>
     5604+
     5605+       * dir_iterate.c (ext2fs_process_dir_block): Check for corrupted
     5606+               directory entry before calling the callback function.
     5607+               This should prevent some core dumps of insufficiently
     5608+               paranoid callback functions.
     5609+
     5610+1999-05-29    <tytso@rsts-11.mit.edu>
     5611+
     5612+       * ext2fs.h: Add feature definition for AFS IMAGIC inodes.
     5613+
     5614+       * fileio.c (ext2fs_file_open): Remove obsolete comment stating
     5615+               that we don't handle writing yet (we do).  Fixed bug where
     5616+               we weren't allocating a big enough buffer for ext2_bmap.
     5617+
     5618+1999-05-03    <tytso@rsts-11.mit.edu>
     5619+
     5620+       * openfs.c (ext2fs_open): Check to make sure that the number of
     5621+               blocks per group is not zero --- if so, it must be a bad
     5622+               superblock!
     5623+
     5624+1999-01-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5625+
     5626+       * Release of E2fsprogs 1.14
     5627+
     5628+1999-01-07  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5629+
     5630+       * inode.c (ext2fs_read_inode, ext2fs_write_inode): Check to see if
     5631+               the inode number is zero; if it's zero, return
     5632+               EXT2_ET_BAD_INODE_NUM.
     5633+
     5634+1998-12-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5635+
     5636+       * initialize.c (ext2fs_initialize): Use EXT2_FIRST_INODE instead
     5637+               of EXT2_FIRST_INO to ensure compatibility with Linux 1.2
     5638+               header files.
     5639+
     5640+Mon Jan  4 02:32:09 1999  Theodore Y. Ts'o  <tytso@mit.edu>
     5641+
     5642+       * llseek.c (ext2fs_llseek): Change ext2fs_llseek() in the
     5643+               non-Linux case to use EINVAL by default, unless it isn't
     5644+               defined, in which case we use EXT2_ET_INVALID_ARGUMENT
     5645+               instead.
     5646+
     5647+1998-12-15  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5648+
     5649+       * Release of E2fsprogs 1.13
     5650+
     5651+1998-12-03  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5652+
     5653+       * Makefile.in: Updated dependencies.
     5654+
     5655+1998-09-22  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5656+
     5657+       * initialize.c (ext2fs_initialize): Make sure that we allocate
     5658+               enough inodes so that we can make a valid filesystem.
     5659+
     5660+1998-09-02  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5661+
     5662+       * rw_bitmaps.c: Fixed signed/unsigned warnings.
     5663+
     5664+       * fileio.c (ext2fs_file_set_size): Remove unneeded extern from the
     5665+               function declaration.
     5666+
     5667+       * dblist.c (make_dblist): Add safety check in case the dblist
     5668+               pointer passed in is null (in which case, assign it to
     5669+               fs->dblist).  Fixed some signed/unsigned warnings.
     5670+
     5671+       * bmap.c: Make addr_per_block be of type blk_t to avoid
     5672+               signed/unsigned warnings.
     5673+
     5674+       * namei.c (ext2fs_follow_link): Remove uneeded extern from the
     5675+               function declaration.
     5676+
     5677+       * get_pathname.c (get_pathname_proc): Use return value from
     5678+               ext2fs_get_mem, instead of checking if &gp->name is
     5679+               NULL.
     5680+
     5681+       * dir_iterate.c (ext2fs_process_dir_block):
     5682+       * dblist_dir.c (ext2fs_dblist_dir_iterate): Remove uneeded extern
     5683+               from the function declaration.
     5684+
     5685+       * block.c (ext2fs_block_iterate2): If the read_inode call fails,
     5686+               return the error directly instead of jumping to the
     5687+               cleanup routine, since we don't need to do any cleanup.
     5688+
     5689+       * alloc_table.c (ext2fs_allocate_group_table): Make this
     5690+               function take a dgrp_t for its group argument.
     5691+
     5692+       * ext2fs.h: Make dgrp_t an __u32 type, and make
     5693+               fs->desc_group_count be of type dgrp_t.
     5694+
     5695+1998-07-27  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5696+
     5697+       * badblocks.c (ext2fs_badblocks_list_add): Use a bigger increment
     5698+               than 10 blocks when we need to expand the size of the
     5699+               badblocks list.
     5700+
     5701+1998-07-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5702+
     5703+       * Release of E2fsprogs 1.12
     5704+
     5705+1998-06-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5706+
     5707+       * closefs.c (ext2fs_flush): Update the s_block_group_nr field as
     5708+               appropriate for all of the block group copies, so that
     5709+               it's clear where the beginning of the filesystem is on the
     5710+               disk.  (For when the partition table gets scrod.)
     5711+
     5712+       * ext2fs.h: Change the name of the feature from
     5713+               EXT2_FEATURE_INCOMPAT_DIRNAME_SIZE to
     5714+               EXT2_FEATURE_INCOMPAT_FILESIZE (to match with the kernel).
     5715+
     5716+1998-06-18  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5717+
     5718+       * inode.c (get_next_blockgroup): Fix bug where if
     5719+               get_next_blockgroup() is called early because of a missing
     5720+               inode table in a block group, the current_inode counter
     5721+               wasn't incremented correctly.
     5722+
     5723+1998-06-16  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5724+
     5725+       * read_bb.c (ext2fs_read_bb_inode): Make function more robust
     5726+               against a completely trashed bad block inode.
     5727+
     5728+1998-06-10  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5729+
     5730+       * alloc_tables.c (ext2fs_allocate_group_table): Fix bug so that if
     5731+               the stride length hits a bad value, we retry the block
     5732+               allocation starting at the beginning of the block group.
     5733+
     5734+       * ext2fs.h, bb_inode.c, block.c, bmove.c, dir_iterate.c,
     5735+               expanddir.c, ext2fsP.h, read_bb.c: Change blkcnt_t to be
     5736+               e2_blkcnt_t to avoid collision with LFS API.
     5737+
     5738+1998-05-01  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5739+
     5740+       * initialize.c (ext2fs_initialize): Initialize s_inodes_count in a
     5741+               way that avoids overflows on disk sizes greater than 4GB.
     5742+
     5743+1998-04-28  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5744+
     5745+       * ext2fs.h: Define EXT2_QSORT_TYPE appropriately for the
     5746+               return type for comparison functions for qsort.
     5747+
     5748+       * dblist.c (dir_block_cmp): Use EXT2_QSORT_TYPE in function
     5749+               declaration.
     5750+
     5751+1998-04-26  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5752+
     5753+       * ext2fs.h, bitops.h: Add support for the Watcom C compiler to do
     5754+               inline functions.
     5755+
     5756+       * ext2fs.h, dosio.c: Use asm/types.h instead of linux/types.h to
     5757+               evade a potential problem with glibc's header files trying
     5758+               to spike out linux/types.h.
     5759+
     5760+       * ext2fs.h (ext2fs_resize_mem): Change the function prototype to
     5761+               include the old size of the memory, which is needed for
     5762+               some braindamaged memory allocation systems that don't
     5763+               support realloc().
     5764+
     5765+       * badblocks.c (ext2fs_badblocks_list_add):
     5766+         bb_inode.c (clear_bad_block_proc):
     5767+         dblist.c (ext2fs_add_dir_block):
     5768+         icount.c (insert_icount_el):
     5769+         irel_ma.c (ima_put):
     5770+         rs_bitmap.c (ext2fs_resize_generic_bitmap): Update functions to
     5771+                 pass the old size of the memory to be resized to
     5772+                 ext2fs_resize_mem().
     5773+
     5774+1998-03-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5775+
     5776+       * Makefile.in: Change to use new installation directory variables
     5777+               convention.  Fix uninstall rules to take $(DESTDIR) into
     5778+               account.
     5779+
     5780+1998-03-29  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5781+
     5782+       * ext2fs.h: If __STRICT_ANSI__ is defined and we're on a platform
     5783+               with 32 bit longs, then we need to manually define __s64
     5784+               and __u64, since the current kernel header files don't
     5785+               define these if __STRICT_ANSI__ is defined.  This is a
     5786+               problem if we are compiling with full GCC warnings, since
     5787+               we do need 64 bit support.
     5788+       
     5789+       * Makefile.in (OBJS): Remove bmove.o from files to be built,
     5790+               since we're not using ext2fs_move_blocks() and there
     5791+               is some question as to its usefulness in its current
     5792+               form.
     5793+
     5794+       * bmap.c (block_bmap): Remove unused function.
     5795+
     5796+       * bmove.c (process_block): Fix -Wall warning.
     5797+
     5798+1998-03-23  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5799+
     5800+       * block.c (ext2fs_block_iterate3): Make the ref_offset field
     5801+               contain the offset into the inode.i_blocks array when
     5802+               ref_block is zero.  Since we haven't done a formal
     5803+               release of e2fsprogs since block_iterate2 was first
     5804+               introduced, I removed block_iterate2, and renamed
     5805+               block_iterate3 to be block_iterate2.
     5806+
     5807+       * bb_inode.c, bmove.c, dblist_dir.c, dir_iterate.c,
     5808+               expanddir.c, ext2fs.h, ext2fsP.h, read_bb.c: Change
     5809+               use of block_iterate and block_iterate2 to
     5810+               block_iterate2 with the new prototype for the
     5811+               interator function.  (using blkcnt_t forr blockcount)
     5812+
     5813+1998-03-21  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5814+
     5815+       * ext2fs.h: Add new superblock fields (s_algorithm_usage_bitmap,
     5816+               s_prealloc_blocks, s_prealloc_dir_blocks).  Added
     5817+               conditional defines of new features COMPAT_DIR_PREALLOC,
     5818+               RO_COMPAT_LARGE_FILE RO_COMPAT_BTREE_DIR,
     5819+               INCOMPAT_COMPRESSION, INCOMPAT_DIRNAME_SIZE.  Changed
     5820+               the library to declare that we support COMPAT_DIR_PREALLOC,
     5821+               INCOMPAT_DIRNAME_SIZE, RO_COMPAT_LARGE_FILE.
     5822+
     5823+       * fileio.c: Rename function ext2fs_file_llseek to be
     5824+               ext2fs_file_lseek, which is more accurate.
     5825+
     5826+       * block.c: Add new function ext2fs_block_iterate3 which calls
     5827+               the iterator function with the blockcount argument of
     5828+               type blkcnt_t.  This version of the function is
     5829+               allowed to handle large files; the other fucntions are
     5830+               not.
     5831+
     5832+       * ext2fs.h: Add new type blkcnt_t
     5833+
     5834+       * ext2_err.et.in: Add error code EXT2_ET_FILE_TOO_BIG
     5835+
     5836+       * block.c (ext2fs_block_iterate2): Fix bug where the block count
     5837+               field wasn't getting correctly incremented for sparse
     5838+               files when the indirect or doubly-indirect block
     5839+               specified in the inode was zero.
     5840+
     5841+Sun Mar  8 22:42:47 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5842+
     5843+       * unlink.c (unlink_proc):
     5844+       * lookup.c (lookup_proc):
     5845+       * link.c (link_proc):
     5846+       * get_pathname.c (get_pathname_proc):
     5847+       * dir_iterate.c (ext2fs_process_dir_block): Mask off high 8 bits
     5848+               from dirent->name_len, so it can be used for other
     5849+               purposes.
     5850+
     5851+       * ext2fs.h: Add definition of EXT2_FEATURE_INCOMPAT_DIRNAME_SIZE,
     5852+               and indicate that we have support for this incompatible
     5853+               option.
     5854+
     5855+Mon Feb 23 08:46:33 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5856+
     5857+       * ext2_err.et.in: Added new error code, EXT2_ET_CANCEL_REQUESTED.
     5858+
     5859+Fri Feb 20 23:58:01 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5860+
     5861+       * dblist.c (ext2fs_get_num_dirs): Improve the estimation of the
     5862+               number of directories when the block group information is
     5863+               unreliable.
     5864+
     5865+1998-02-20  Theodore Y. Ts'o  <tytso@edt.mit.edu>
     5866+
     5867+       * inode.c (ext2fs_get_next_inode): Always do the check to see if the
     5868+               inode table is missing so that we catch the case where the
     5869+               first block group is missing.
     5870+
     5871+       * getsize.c, ismounted.c, unix_io.c: #include errno.h since it's
     5872+               needed.
     5873+
     5874+Mon Feb 16 16:16:00 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5875+
     5876+       * ext2_io.h, ext2fs.h: Protect against being included multiple times.
     5877+
     5878+       * bmove.c: #include ext2fsP.h instead of "ext2fs/ext2fs.h"
     5879+
     5880+       * test_io.c (test_flush): Add a debugging printf when the flush
     5881+               method is called.
     5882+
     5883+       * rw_bitmaps.c (ext2fs_read_bitmaps): If the bitmaps are already
     5884+               read in, return right away.
     5885+
     5886+Sun Feb  1 08:20:24 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5887+
     5888+       * bitops.h: Don't try to do i386 inline asm functions if the
     5889+               compiler isn't GCC.
     5890+
     5891+       * ext2fs.h: If EXT2_FLAT_INCLUDES is defined, #include e2_types.h,
     5892+               instead of linux/types.h, and e2_bitops.h instead of
     5893+               ext2fs/bitops.h.
     5894+
     5895+       * icount.c, version.c: Don't #include <et/com_err.h>, as it isn't
     5896+               necessary.
     5897+
     5898+Sat Jan 17 13:13:31 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5899+
     5900+       * inode.c (ext2fs_open_inode_scan): Initialize the group variables
     5901+               so that we don't need to call get_next_blockgroup() the
     5902+               first time around.  Saves a bit of time, and prevents us
     5903+               from needing to assign -1 to current_group (which is an
     5904+               unsigned value).
     5905+
     5906+       * icount.c (insert_icount_el): Cast the estimated number of inodes
     5907+               from a float to an ino_t.
     5908+
     5909+       * alloc.c, alloc_tables.c, badlbocks.c, bb_compat.c, bb_inode.c,
     5910+               bitmaps.c, bitops.c, block.c, bmap.c, bmove.c, brel_ma.c,
     5911+               check_desc.c, closefs.c, cmp_bitmaps.c, dblist.c,
     5912+               dblist_dir.c, dir_iterate.c, dirblock.c, dupfs.c,
     5913+               expanddir.c, ext2fs.h, fileio.c, freefs.c,
     5914+               get_pathname.c, getsize.c, icount.c, initialize.c,
     5915+               inline.c, inode.c, irel_ma.c, ismounted.c, link.c,
     5916+               lookup.c, mkdir.c, namei.c, native.c, newdir.c,
     5917+               openfs.c, read_bb.c, read_bb_file.c, rs_bitmap.c,
     5918+               rw_bitmaps.c, swapfs.c, test_io.c, tst_badblocks.c,
     5919+               tst_getsize.c, tst_iscan.c, unix_io.c, unlink.c,
     5920+               valid_blk.c, version.c: If EXT2_FLAT_INCLUDES is
     5921+               defined, then assume all of the
     5922+               ext2-specific header files are in a flat directory.
     5923+
     5924+       * block.c, bmove.c, dirblock.c, fileio.c: Explicitly cast
     5925+               all assignments from void * to be compatible with C++.
     5926+
     5927+Tue Jan  6 11:28:15 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5928+
     5929+       * closefs.c (ext2fs_flush): Add a call to io_channel_flush() to
     5930+               make sure the contents of the disk are flushed to disk.
     5931+
     5932+Mon Dec 29 14:39:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5933+
     5934+       * dblist.c (ext2fs_add_dir_block): Change new to be new_entry to
     5935+               avoid C++ namespace clash.
     5936+
     5937+       * bitmaps.c (ext2fs_copy_bitmap): Change new to be new_map to
     5938+               avoid C++ namespace clash.
     5939+
     5940+       * ext2fs.h, bb_inode.c, block.c, bmove.c, brel.h, brel_ma.c,
     5941+               irel.h, irel_ma.c, dblist.c, dblist_dir.c, dir_iterate.c,
     5942+               ext2fsP.h, expanddir.c, get_pathname.c, inode.c, link.c,
     5943+               unlink.c: Change private to be priv_data (to avoid C++
     5944+               namespace clash)
     5945+
     5946+Fri Nov 28 09:26:31 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5947+
     5948+       * dblist.c (ext2fs_get_num_dirs): Make ext2fs_get_num_dirs more
     5949+               paranoid about validating the directory counts from the
     5950+               block group information.
     5951+
     5952+       * all files: Don't include stdlib.h anymore; include it in
     5953+               ext2_fs.h, since that file requires stdlib.h
     5954+
     5955+Thu Nov 20 16:07:38 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5956+
     5957+       * expanddir.c (ext2fs_expand_dir): Check to make sure the block
     5958+               bitmap is loaded, and return an error if it is not.
     5959+               (expand_dir_proc): Only use ext2fs_write_dir_block when
     5960+               writing a directory block, not when writing out a fresh
     5961+               indirect block.
     5962+
     5963+Tue Nov 11 22:46:45 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5964+
     5965+       * Makefile.in, tst_getsize.c: Added new file which is used to test
     5966+               the ext2fs_get_device_size function.
     5967+
     5968+       * ext2_err.et.in (EXT2_ET_UNIMPLEMENTED): Added new error code.
     5969+
     5970+Sun Nov  2 20:36:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5971+
     5972+       * ext2fs.h: Make ext2fs_get_mem take an unsigned argument.
     5973+
     5974+       * fileio.c (ext2fs_file_get_size, ext2fs_file_set_size,
     5975+               ext2fs_file_get_fs): New functions added.
     5976+
     5977+
     5978+Fri Oct 31 12:16:52 1997    <tytso@EDT.MIT.EDU>
     5979+
     5980+       * bitops.c (ext2fs_warn_bitmap, ext2fs_warn_bitmap2): Don't call
     5981+               com_err if OMIT_COM_ERR is defined.
     5982+
     5983+Thu Oct 30 11:33:57 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5984+
     5985+       * Rename new error codes to _ET_ in them for consistency.
     5986+
     5987+Sat Oct 25 00:06:58 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     5988+
     5989+       * [all files, basically]: Added definition of ext2fs_get_mem,
     5990+               ext2fs_free_mem, and ext2fs_resize_mem in ext2fs.h, and
     5991+               changed all library routines to use these wrapper functions.
     5992+
     5993+       * dblist.c, mkdir.c: use EXT2_DIR_EXISTS and EXT2_DB_NOT_FOUND
     5994+               instead of the system error messages.
     5995+       
     5996+       * ext2_err.et.in: Added new error messages EXT2_DIR_EXISTS and
     5997+               EXT2_DB_NOT_FOUND
     5998+
     5999+       * ext2fs.h: Added function declarations and constants for bmap.c
     6000+               and fileio.c.
     6001+
     6002+       * ext2_err.et.in: Added new error messages EXT2_FILE_RO and
     6003+               EXT2_ET_MAGIC_EXT2_FILE
     6004+
     6005+       * Makefile.in: Added files bmap.c and fileio.c, and temporarily
     6006+               commented out brel_ma.c and irel_ma.c
     6007+
     6008+       * bmap.c: New file which maps a file's logical block number to its
     6009+               physical block number.
     6010+
     6011+       * fileio.c: New file which implements simple file reading and
     6012+               writing primitives.
     6013+
     6014+       * alloc.c (ext2fs_alloc_block): New function which allocates a
     6015+               block, zeros it, and updates the filesystem accounting
     6016+               records appropriately.
     6017+
     6018+Wed Oct 22 16:47:27 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6019+
     6020+       * ext2_err.et.in: Added new error codes: EXT2_NO_MEMORY,
     6021+               EXT2_INVALID_ARGUMENT, EXT2_BLOCK_ALLOC_FAIL,
     6022+               EXT2_INODE_ALLOC_FAIL, EXT2_NOT_DIRECTORY
     6023+
     6024+       * Change various library files to use these functions instead of
     6025+               EINVAL, ENOENT, etc.
     6026+
     6027+Mon Oct 20 19:32:40 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6028+
     6029+       * llseek.c: Check HAVE_LLSEEK_PROTOTYPE to see whether or not we
     6030+               need to declare llseek().
     6031+
     6032+Sun Oct 19 18:56:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6033+
     6034+       * Rename io.h to be ext2_io.h (avoid namespace collisions)
     6035+
     6036+       * Add #ifdef's for HAVE_SYS_STAT_H and HAVE_SYS_TYPES_H
     6037+
     6038+Fri Oct  3 13:35:59 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6039+
     6040+       * llseek.c (ext2fs_llseek): Fix type error for ext2fs_llseek()
     6041+
     6042+       * icount.c (ext2fs_icount_validate):
     6043+       * bmove.c (process_block): Fix lint error in type for fprintf().
     6044+
     6045+Mon Sep 15 11:45:09 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6046+
     6047+       * inode.c (ext2fs_check_directory): Add support for the callback
     6048+               to return the error code EXT2_ET_CALLBACK_NOTHANDLED.
     6049+
     6050+Thu Sep  4 12:28:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6051+
     6052+       * bitmaps.c (ext2fs_set_bitmap_padding): New function which sets the
     6053+               padding of the bitmap to be all one's.
     6054+
     6055+Wed Sep  3 14:27:30 1997  Theodore Y. Ts'o  <tytso@edt.mit.edu>
     6056+
     6057+       * llseek.c: Added missing semicolon to glibc fixup declaration of
     6058+       llseek().
     6059+
     6060+       * bmove.c: Add #include of errno.h
     6061+
     6062+Sat Aug 23 22:47:46 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6063+
     6064+       * Makefile.in (ELF_SO_VERSION): Bump version to be 2.4 since we've
     6065+               added a new field to the io_channel (app_data).
     6066+
     6067+       * io.h: Add a new element to the io_channel structure, app_data.
     6068+
     6069+       * initialize.c, openfs.c: Set io->app_data to point at the
     6070+               filesystem handle.
     6071+
     6072+Thu Aug 14 08:14:17 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6073+
     6074+       * io.h: Change the prototype of ext2fs_llseek() to use int's
     6075+               instead of unsigned int's.
     6076+
     6077+       * llseek.c: Change to allow PIC and !HAVE_LLSEEK.  Add a prototype
     6078+               to make life easer for GNU Libc 2.
     6079+
     6080+       * rw_bitmaps.c: On the PowerPC, the big-endian variant of the ext2
     6081+               filesystem has its bitmaps stored as 32-bit words with bit
     6082+               0 as the LSB of each word.  Thus a bitmap with only bit 0
     6083+               set would be, as a string of bytes, 00 00 00 01 00 ...  To
     6084+               cope with this, we byte-reverse each word of a bitmap if
     6085+               we have a big-endian filesystem, that is, if we are *not*
     6086+               byte-swapping other word-sized numbers.
     6087+
     6088+Mon Aug 11 03:30:48 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6089+
     6090+       * dosio.c: New file to do DOS/BIOS disk accesses.
     6091+
     6092+       * namei.c (open_namei): Make pathlen be of type size_t.
     6093+
     6094+       * llseek.c: Always #include stdlib.h since it's need to define
     6095+               size_t. 
     6096+
     6097+       * io.h: Use errcode_t for magic numbers.
     6098+
     6099+       * icount.c (get_icount_el): Use size_t where appropriate
     6100+       
     6101+       * dupfs.c (ext2fs_dup_handle):
     6102+       * dblist.c (dir_block_cmp): Use size_t where appropriate.
     6103+
     6104+       * read_bb.c (ext2fs_read_bb_inode):
     6105+       * cmp_bitmaps.c (ext2fs_compare_inode_bitmap): Use blk_t, ino_t
     6106+               and size_t where appropriate.
     6107+
     6108+       * closefs.c (ext2fs_flush): Use dgrp_t instead of int where
     6109+               appropriate.
     6110+
     6111+       * openfs.c (ext2fs_open):
     6112+       * check_desc.c (ext2fs_check_desc): Use blk_t instead of int where
     6113+               appropriate.
     6114+
     6115+       * rw_bitmaps.c (read_bitmaps):
     6116+       * irel_ma.c:
     6117+       * inode.c (ext2fs_write_inode):
     6118+       * initialize.c (ext2fs_initialize):
     6119+       * brel_ma.c: Fix to make be 16-bit safe.
     6120+
     6121+       * link.c (ext2fs_link):
     6122+       * unlink.c (ext2fs_unlink):
     6123+       * lookup.c (lookup_proc):
     6124+       * ismounted.c (ext2fs_check_if_mounted):
     6125+       * block.c (xlate_func): Add #pragma argsused for Turbo C.
     6126+
     6127+Sun Aug 10 10:05:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6128+
     6129+       * block.c (ext2fs_block_iterate2): Use retval which is a errcode_t
     6130+               type.
     6131+
     6132+       * bitmaps.c (make_bitmap): Use size_t instead of int where
     6133+               appropriate.
     6134+
     6135+       * bb_inode.c (set_bad_block_proc): Add #pragma argsused for Turbo C.
     6136+
     6137+       * alloc.c (ext2fs_new_inode): Use ino_t instead of int for the
     6138+               group number.
     6139+
     6140+       * get_pathname.c: Use ino_t instead of int where appropriate.
     6141+
     6142+       * ext2fs.h: Make the magic structure element be errcode_t instead
     6143+               of int.
     6144+
     6145+       * alloc.c alloc_tables.c badblocks.c bb_compat.c bb_inode.c
     6146+               bitmaps.c block.c bmove.c brel_ma.c check_desc.c closefs.c
     6147+               cmp_bitmaps.c dblist.c dblist_dir.c dir_iterate.c
     6148+               dirblock.c dupfs.c expanddir.c freefs.c get_pathname.c
     6149+               icount.c initialize.c inline.c inode.c irel_ma.c link.c
     6150+               llseek.c lookup.c mkdir.c namei.c newdir.c read_bb.c
     6151+               read_bb_file.c rs_bitmap.c rw_bitmaps.c swapfs.c
     6152+               test_io.c tst_badblocks.c tst_iscan.c unix_io.c unlink.c
     6153+               valid_blk.c version.c: Add an #ifdef for HAVE_UNISTD_H
     6154+
     6155+Tue Jun 17 01:33:20 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6156+
     6157+       * unix_io.c (unix_read_blk): If ext2fs_llseek() fails, but errno
     6158+               is zero, then return EXT2_IO_LLSEEK_FAILED.
     6159+
     6160+       * ext2_err.et.in: Add a new error code, EXT2_IO_LLSEEK_FAILED.
     6161+
     6162+       * Release of E2fsprogs 1.11
     6163+
     6164+Mon Jun 16 23:53:06 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6165+
     6166+       * dblist.c (ext2fs_dblist_count): Added new function which returns
     6167+               the number of directory blocks in dblist.
     6168+
     6169+Sat Jun 14 01:39:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6170+
     6171+       * unix_io.c (unix_flush): Make the io_channel flush function do a
     6172+               fsync to flush the kernel buffers to disk.
     6173+
     6174+Wed Jun 11 18:25:31 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6175+
     6176+       * inode.c (ext2fs_inode_scan_goto_blockgroup): Fix bug; the
     6177+               current inode number wasn't being set by the
     6178+               goto_blockgroup function.
     6179+
     6180+Mon Jun  9 10:45:48 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6181+
     6182+       * bmove.c (ext2fs_move_blocks): New function which takes a bitmap
     6183+               of blocks which need to be moved, and moves those blocks
     6184+               to another location in the filesystem.
     6185+
     6186+       * rs_bitmap.c (ext2fs_resize_generic_bitmap): When expanding a
     6187+               bitmap, make sure all of the new parts of the bitmap are
     6188+               zero.
     6189+
     6190+Sun Jun  8 16:24:39 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6191+
     6192+       * bitmaps.c (ext2fs_copy_bitmap): Fix bug; the destination bitmap
     6193+               wasn't being returned to the caller.
     6194+
     6195+       * alloc_tables.c (ext2fs_allocate_group_table): Add new function
     6196+               ext2fs_allocate_group_table() which sets the group tables
     6197+               for a particular block group.  The relevant code was
     6198+               factored out of ext2fs_allocate_tables().
     6199+
     6200+       * dblist.c (make_dblist): Adjust the initial size of the directory
     6201+               block list to be a bit more realistic (ten plus twice the
     6202+               number of directories in the filesystem).
     6203+
     6204+Thu May  8 22:19:09 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6205+
     6206+       * badblocks.c (ext2fs_badblocks_list_test): Fix bug where
     6207+               ext2fs_badblocks_list_test would test the list (and exceed
     6208+               array boundaries) if there were no bad blocks on the bad
     6209+               blocks list.  (Showed up when user tried: mke2fs -c -b 4096).
     6210+
     6211+Thu Apr 24 12:16:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
     6212+
     6213+       * Release of E2fsprogs version 1.10
     6214+
     6215+Thu Apr 24 10:13:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
     6216+
     6217+       * alloc_tables.c (ext2fs_allocate_tables): Correctly place the
     6218+               inode and block bitmaps based on the RAID 0 stride
     6219+               parameter (which is passed by mke2fs).
     6220+
     6221+       * ext2fs.h: Add "stride" parameter to ext2_filsys, to be used by
     6222+               mke2fs to communicate the stride length to
     6223+               ext2fs_allocate_tables()
     6224+
     6225+Wed Apr 23 21:50:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
     6226+
     6227+       * initialize.c (ext2fs_initialize): Fix to compile under Linux 1.2
     6228+               systems.  (We can't assume that the new filesystem types
     6229+               are supported.)
     6230+
     6231+Wed Apr 23 18:40:53 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6232+
     6233+       * alloc_tables.c (ext2fs_allocate_tables): Make sure that we
     6234+               allocate the inode and block bitmaps inside block group at
     6235+               all times.
     6236+
     6237+Mon Apr 21 00:06:28 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6238+
     6239+       * alloc.c (ext2fs_new_block): Fix bug where if goal==0 and the
     6240+               filesystem has no free blocks, ext2fs_new_block would loop
     6241+               forever.
     6242+
     6243+       * dupfs.c (ext2fs_dup_handle): Duplicate an ext2 filesystem handle
     6244+
     6245+       * freefs.c (ext2fs_free_inode_cache): Decrement refcount and only
     6246+               free if refcount goes to zero.
     6247+
     6248+       * inode.c (create_icache): Initialize refcount to 1.
     6249+
     6250+       * ext2fsP.h: Added refcount to ext2_inode_cache
     6251+
     6252+       * dblist.c (ext2fs_copy_dblist): New function to copy a directory
     6253+               block list.
     6254+
     6255+       * badblocks.c (ext2fs_badblocks_copy): New function to copy a
     6256+               badblocks structure.
     6257+
     6258+Sun Apr 20 23:19:51 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6259+
     6260+       * bitmaps.c (ext2fs_copy_bitmap): New function to copy a bitmap.
     6261+
     6262+       * unix_io.c, test_io.c (unix_open, test_open): Initialize the
     6263+               refcount to 1.
     6264+               (unix_close, test_close): Decrement the refcount and only
     6265+               close the io_channel if the refcount goes to 0.
     6266+
     6267+       * io.h: Add refcount to the io_channel structure.  Add new macro
     6268+               interface io_channel_bumpcount() to bump the refcount.
     6269+
     6270+Thu Apr 17 20:25:03 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6271+
     6272+       * inode.c (ext2fs_read_inode, ext2fs_write_inode): Use the inode
     6273+               cache in the filesystem handle, instead of the inode cache
     6274+               in a static variable.
     6275+
     6276+       * freefs.c: Added static function to free the inode cache (called by
     6277+               ext2fs_free).
     6278+
     6279+       * ext2fsP.h: Added definition of the ext2_inode_cache structures.
     6280+
     6281+       * ext2fs.h: Added pointer to the inode_cache structure.
     6282+
     6283+       * block.c (block_iterate_ind, block_iterate_dind,
     6284+               block_iterate_tind): If there are holes in the indirect,
     6285+               doubly indirect, or triply indirect blocks, increment the
     6286+               block count field automatically.
     6287+
     6288+Thu Apr 17 12:23:38 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6289+
     6290+       * Release of E2fsprogs version 1.09
     6291+
     6292+Mon Apr 14 20:38:56 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6293+
     6294+       * version.c (ext2fs_parse_version_string): Check the passed in
     6295+               version string (instead of the hard-coded one).
     6296+
     6297+       * alloc_tables.c (ext2fs_allocate_tables): If the last block is
     6298+               greater filesystem size, clamp it to prevent allocating a
     6299+               block or inode bitmap beyond the filesystem.
     6300+
     6301+       * initialize.c (ext2fs_initialize): Fix bug where the metatdata
     6302+               overhead calculation was accidentally removed.
     6303+
     6304+Fri Apr 11 18:56:26 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6305+
     6306+       * Release of E2fsprogs version 1.08
     6307+
     6308+Thu Apr 10 13:15:15 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6309+
     6310+       * dblist.c (ext2fs_set_dir_block): New function which sets the
     6311+               block of a dblist entry, given the directory inode and
     6312+               blockcnt.
     6313+
     6314+Sat Apr  5 12:42:42 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6315+
     6316+       * alloc_tables.c (ext2fs_allocate_tables): Allocate the bitmap and
     6317+               inode bitmaps at staggered locations across the block
     6318+               groups, to avoid concentrating the bitmaps on a small
     6319+               number of disks when using striped RAID arrays.
     6320+
     6321+       * initialize.c (ext2fs_initialize): By default, choose the maximum
     6322+               possible number of blocks per group (based on the size of
     6323+               the bitmaps in the blocksize).
     6324+
     6325+Fri Apr  4 11:28:16 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6326+
     6327+       * initialize.c (ext2fs_initialize): Add support for
     6328+               EXT2_COMPAT_SPARSE_SUPER feature.
     6329+
     6330+       * closefs.c (ext2fs_bg_has_super): New function to determine
     6331+               whether or a particular block group should have a
     6332+               superblock and block group descriptor.  Used for the
     6333+               EXT2_COMPAT_SPARSE_SUPER feature is turned on.
     6334+               (ext2fs_flush):  Check ext2fs_bg_has_super to see whether
     6335+               or not the superblock should be written out for the block
     6336+               group.
     6337+
     6338+       * ext2fs.h (EXT2_COMPAT_SPARSE_SUPER): Define compatibility flag
     6339+               for sparse duplicate superblocks.
     6340+
     6341+       * version.c (ext2fs_get_library_version): New function which
     6342+               returns the library version.
     6343+
     6344+       * version.c (ext2fs_parse_version_string): New function which
     6345+               parses a version string and returns a version number,
     6346+               so application programs can compare version numbers as
     6347+               integers.
     6348+
     6349+Wed Mar 26 00:43:52 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6350+
     6351+       * icount.c (ext2fs_create_icount): Change function so that it also
     6352+               takes a new argument which contains a "hint" icount
     6353+               structure.  This "hint" icount allows the create function
     6354+               to set up the sorted list in advance.  This reduces
     6355+               significantly the amount of data moving needed to insert
     6356+               these inodes into the list later.
     6357+       
     6358+       * icount.c (ext2fs_icount_validate): New function which validates
     6359+               that the icount structure's rep invariant.
     6360+
     6361+       * icount.c (get_icount_el): Completely revamped implementation
     6362+               to subsume put_icount_el().  Put_icount_el() used to
     6363+               use an O(N) implementation to insert in the middle
     6364+               of the icount list.  It now uses a O(ln N) to search
     6365+               for where the icount should be inserted, and then uses
     6366+               a memcpy to move the list down (instead of a for loop).
     6367+       
     6368+       * icount.c (ext2fs_icount_fetch, ext2fs_icount_store,
     6369+               ext2fs_icount_increment, ext2fs_icount_decrement): Check
     6370+               to see if the inode is within bounds; if it isn't, return
     6371+               EINVAL.
     6372+
     6373+       * bitops.h (ext2fs_test_generic_bitmap): Fix error message given
     6374+               when a bad inode number is passed to test_generic_bitmap
     6375+               to be EXT2FS_TEST_ERROR instead of the wrong
     6376+               EXT2FS_UNMARK_ERROR.
     6377+
     6378+Wed Mar 12 13:32:05 1997  Theodore Y. Ts'o  <tytso@mit.edu>
     6379+
     6380+       * Release of E2fsprogs version 1.07
     6381+
     6382+Sun Mar  2 16:46:18 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6383+
     6384+       * Makefile.in (ELF_VERSION): Change version to be 2.2
     6385+
     6386+Tue Feb 11 14:54:02 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6387+
     6388+       * alloc.c (ext2fs_get_free_blocks): Change routine to use
     6389+               ext2fs_fast_test_block_bitmap_range().
     6390+
     6391+       * bitops.h (ext2fs_fast_test_block_bitmap_range,
     6392+               ext2fs_test_block_bitmap_range: New inline functions which
     6393+               test to see whether a contiguous range of blocks is
     6394+               available.
     6395+
     6396+Thu Feb  6 10:00:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6397+
     6398+       * badblocks.c (ext2fs_badblocks_list_create): Rename sybmols to use
     6399+               use ext2fs_badblocks_* instead of badblocks_*
     6400+
     6401+       * bb_compat.c: New file which translates between old badblocks_*()
     6402+               names to ext2fs_badblocks_*()
     6403+
     6404+       * unlink.c (ext2fs_unlink): New file, moved ext2fs_unlink() from
     6405+               link.c (since e2fsck doesn't use ext2fs_unlink()).
     6406+
     6407+       * rs_bitmap.c (ext2fs_resize_generic_bitmap): New file, contains
     6408+               bitmap resizing routine moved from bitmaps.c, since e2fsck
     6409+               doesn't need to use this function.
     6410+
     6411+       * lookup.c (ext2fs_lookup): Moved ext2fs_lookup to its own file,
     6412+               since e2fsck only needs ext2fs_lookup.
     6413+
     6414+Mon Feb  3 10:11:40 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6415+
     6416+       * inode.c (ext2fs_open_inode_scan): Set fs->badblocks if it is not
     6417+               already set; this is needed so that programs like dump
     6418+               which use the inode scan functions will deal with
     6419+               filesystems that have bad blocks in the inode table.
     6420+
     6421+Sun Feb  2 00:17:36 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6422+
     6423+       * ext2fs.h (struct_badblocks_list, struct_badblocks_iterate):
     6424+               Moved to ext2fsP.h, since it doesn't need to be part of
     6425+               the public interface.
     6426+
     6427+       * dir_iterate.c: Move ext2_dir_iterate out of namei.c.
     6428+
     6429+Sat Feb  1 10:14:55 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6430+
     6431+       * dblist.c (ext2fs_get_num_dirs): New file, which implements a
     6432+               directory block list abstraction.  (Code moved from
     6433+               e2fsck).
     6434+
     6435+       * ext2fs.h, inode.c: Moved definition of ext2_struct_inode_scan to
     6436+               to inode.c (since no one else should be peeking inside it!)
     6437+
     6438+       * valid_blk.c (ext2_inode_has_valid_blocks): New function.
     6439+
     6440+       * openfs.c (ext2fs_open): Check the feature set in the ext2
     6441+               superblock, and refuse to open filesystems if they contain
     6442+               incompatible features.  (Can be overriden with the
     6443+               EXT2_FLAG_FORCE
     6444+
     6445+Sun Jan 12 11:31:46 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6446+
     6447+       * block.c (ext2fs_block_iterate2): Added new function
     6448+               ext2fs_block_iterate2 which changes the function
     6449+               signature of the callback function to include the
     6450+               referencing block and offset.
     6451+
     6452+       * inode.c (ext2fs_inode_scan_goto_blockgroup): Added new function
     6453+               ext2fs_inode_scan_goto_blockgroup which allows an
     6454+               application to jump to a particular block group while
     6455+               doing an inode scan.
     6456+
     6457+Wed Jan  1 23:50:12 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6458+
     6459+       * dirblock.c: Include string.h, since we use memcpy().
     6460+
     6461+Tue Dec  3 12:27:29 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6462+
     6463+       * getsize.c (ext2fs_get_device_size): The ioctl BLKGETSIZE returns
     6464+               a long not an int; this doesn't matter on i386 machines,
     6465+               but it does on Alpha's.
     6466+       
     6467+Fri Nov 29 20:57:37 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6468+
     6469+       * inode.c (ext2fs_write_inode, ext2fs_read_inode): If the inode
     6470+               table pointer is NULL, then return an error indicating
     6471+               that the inode table is missing.
     6472+               (get_next_blockgroup, get_next_blocks,
     6473+               ext2fs_get_next_inode): Don't treat a missing inode table
     6474+               as permanent error.  Return MISSING_INODE_TABLE, but as an
     6475+               advisory error code, much like BAD_BLOCK_IN_INODE_TABLE.
     6476+
     6477+       * rw_bitmaps.c (ext2fs_write_block_bitmap,
     6478+               ext2fs_write_inode_bitmap): If the inode or block bitmap
     6479+               block is zero, then don't write out the inode or block
     6480+               bitmap.  The idea here is to avoid stomping on the
     6481+               superblock.
     6482+               (read_bitmaps): If the inode or block bitmap block is
     6483+               zero, then fill in that portion of the inode or block
     6484+               bitmap with all zeros.
     6485+
     6486+       * inode.c (ext2fs_get_next_inode): Fix bug in handling of bad
     6487+               blocks in inode table when the inode table size is
     6488+               non-standard (and can therefore span blocks).
     6489+
     6490+Tue Oct 29 20:13:14 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6491+
     6492+       * alloc.c (ext2fs_new_block): Fix fencepost error in
     6493+               ext2fs_new_block; make sure we don't try to allocate the
     6494+               first block beyond the end of the filesystem.
     6495+
     6496+Mon Oct 14 11:00:48 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6497+
     6498+       * inode.c (check_for_inode_bad_blocks): New function called by
     6499+               get_next_blocks() to avoid reading in bad blocks marked in
     6500+               fs->badblocks.  Inodes located in bad blocks are returned
     6501+               by ext2fs_get_next_inode() returns the error code
     6502+               EXT2_ET_BAD_BLOCK_IN_INODE_TABLE.
     6503+       
     6504+       * alloc_tables.c (ext2fs_allocate_tables): New function which
     6505+               performs the part of mke2fs's job of allocating the
     6506+               filesystem tables.
     6507+
     6508+       * test_io.c (test_close): IO manager which is used for testing
     6509+               purposes.
     6510+
     6511+Sun Oct 13 04:31:57 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6512+
     6513+       * inode.c (ext2fs_get_next_inode): Separate out the function of
     6514+               setting up for a new block group to get_next_blockgroup().
     6515+               Separate out the function of reading in blocks of the
     6516+               inode table to get_next_blocks().
     6517+
     6518+       * ext2fs.h: Add the badblocks list to the ext2_filsys entry
     6519+
     6520+       * badblocks.c (badblocks_list_add, badblocks_list_test): Add
     6521+               blocks to the badblock list in sorted order.  This allows
     6522+               badblocks_list_test to be coded using a binary search for
     6523+               speed.
     6524+
     6525+Tue Oct  8 02:02:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6526+
     6527+       * Release of E2fsprogs version 1.06
     6528+
     6529+Mon Oct  7 00:44:17 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6530+
     6531+       * ext2fs.h, block.c, closefs.c, dirblock.c, inode.c, native.c,
     6532+               open.c: Change EXT2_SWAP to EXT2_FLAG_SWAP for
     6533+               consistency's sake.
     6534+       
     6535+       * closefs.c (ext2fs_flush): If the flag EXT2_MASTER_SB_ONLY is
     6536+               set, then only write out the master superblock.
     6537+
     6538+Sun Oct  6 21:45:26 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6539+
     6540+       * block.c (ext2fs_block_iterate): Fixed bug which caused
     6541+               block_iterate to fail to handle HURD created filesystems;
     6542+               it tested the inode translator field before the inode was
     6543+               loaded.
     6544+
     6545+Tue Sep 17 14:08:24 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6546+
     6547+       * initialize.c (ext2fs_initialize): Make sure the description for
     6548+               the inode bitmap is set correctly.
     6549+
     6550+       * bitmaps.c (ext2fs_allocate_generic_bitmap): Fix minor type typo.
     6551+
     6552+Thu Sep 12 15:23:07 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6553+
     6554+       * Release of E2fsprogs version 1.05
     6555+
     6556+Sat Sep  7 07:36:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6557+
     6558+       * initialize.c: Override the kernel's idea of default
     6559+               checkinterval from 0 (never) to 180 days.
     6560+
     6561+Wed Aug 28 03:20:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6562+
     6563+       * namei.c (ext2fs_namei_follow): New function which follows
     6564+               symbolic link (if any) at the target.
     6565+
     6566+Tue Aug 27 01:48:43 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6567+
     6568+       * inode.c (ext2fs_read_inode, ext2fs_write_inode): Add support
     6569+               for shortcut function fs->read_inode() and fs->write_inode().
     6570+               Added inode_cache to reduce CPU time spent in doing
     6571+               byte swapping.
     6572+
     6573+       * swapfs.c (ext2fs_swap_super): Swap the new fields in a V2
     6574+               superblock.
     6575+
     6576+       * namei.c (ext2fs_follow_link): New function.
     6577+               (ext2fs_namei): Extended to have support for chasing
     6578+               symbolic links.  ext2fs_namei() still returns an inode
     6579+               which is a symbolic link.  Symbolic links are only chased
     6580+               while resolving the containing directory.  To chase
     6581+               symbolic links of the final result, use
     6582+               ext2fs_follow_link().
     6583+
     6584+Mon Aug 26 23:46:07 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6585+
     6586+       * ext2_err.et.in: Added new error code EXT2_ET_SYMLINK_LOOP.
     6587+
     6588+       * bitops.h (ext2fs_set_bit, ext2fs_celar_bit): Use asm inlines
     6589+               provided by Pete A. Zaitcev (zaitcev@lab.sun.mcst.ru).
     6590+
     6591+Thu Aug 22 00:40:18 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6592+
     6593+       * initialize.c (ext2fs_initialize): On systems where the byte
     6594+               order is not i386 compatible, set the swap_byte flag.
     6595+
     6596+       * inode.c (inocpy_with_swap): Check to see if inode contains a
     6597+               fast symlink before swapping the inode block fields.  This
     6598+               required adding a new argument to inocpy_with_swap to
     6599+               determine whether the mode field is in host order or not.
     6600+
     6601+Wed Aug 21 00:45:42 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6602+
     6603+       * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit): On
     6604+               the sparc, if EXT2_STD_BITOPS set, use the standard
     6605+               i386-compatible bitmask operations, instead on the
     6606+               non-standard native bitmask operators.
     6607+
     6608+Fri Aug  9 11:11:35 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6609+
     6610+       * block.c (ext2fs_block_iterate): Cause block iterator to return
     6611+               the HURD translator block (along with everything else).
     6612+               If the flag BLOCK_FLAG_DATA_ONLY is passed to the block
     6613+               iterator, then don't return any meta data blocks
     6614+               (including the HURD translator).
     6615+
     6616+Wed Jul 17 17:13:34 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6617+
     6618+       * gen_uuid.c: New file, which generates DCE-compatible UUIDs.
     6619+
     6620+       * uuid.c: New file, containing UUID utility functions.
     6621+
     6622+Tue Jul 16 10:19:16 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6623+
     6624+       * ext2fs.h: Add a definition of the "real" ext2 superblock.
     6625+
     6626+Fri May 24 14:54:55 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6627+
     6628+       * ext2fs.h: Fix erroneous ino_t type used in block_bitmap type.
     6629+
     6630+Sun May 19 15:39:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6631+
     6632+       * openfs.c (ext2fs_open): If the blocksize in the superblock is
     6633+               zero, return the error EXT2_ET_CORRUPT_SUPERBLOCK, since
     6634+               that's a basic value that must be correct for the rest of
     6635+               the library to work.
     6636+
     6637+       * ext2_err.et.in (EXT2_ET_CORRUPT_SUPERBLOCK): Added new error
     6638+               code.
     6639+
     6640+Thu May 16 11:12:30 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
     6641+
     6642+       * Release of E2fsprogs version 1.04
     6643+
     6644+Wed Mar 27 00:33:40 1996    <tytso@rsts-11.mit.edu>
     6645+
     6646+       * Release of E2fsprogs version 1.03
     6647+
     6648+Tue Mar 26 12:06:32 1996    <tytso@rsts-11.mit.edu>
     6649+
     6650+       * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit):
     6651+               Change the m68k bit numbering for bitmasks to match with
     6652+               the bit numbering used by all other ext2 implementations.
     6653+
     6654+Thu Mar  7 03:37:00 1996    <tytso@rsts-11.mit.edu>
     6655+
     6656+       * inode.c (ext2fs_get_next_inode, ext2fs_close_inode_scan,
     6657+       ext2fs_open_inode_scan): Support dynamically-sized inodes.
     6658+
     6659+Wed Mar  6 12:26:29 1996    <tytso@rsts-11.mit.edu>
     6660+
     6661+       * inode.c (ext2fs_read_inode, ext2fs_write_inode): Support
     6662+               dynamically-sized inodes.
     6663+
     6664+       * openfs.c (ext2fs_open): Allow dynamic revision filesystem to be
     6665+               loaded.
     6666+
     6667+Tue Mar  5 03:49:37 1996    <tytso@rsts-11.mit.edu>
     6668+
     6669+       * initialize.c (ext2fs_initialize): Catch an error condition where
     6670+               the passed in size is *really* too small.
     6671+
     6672+       * alloc.c (ext2fs_new_inode):
     6673+       * ext2fs.h (EXT2_FIRST_INODE): Add support for dynamic revision to
     6674+               get first inode.
     6675+
     6676+Wed Feb 21 15:56:17 1996    <tytso@rsts-11.mit.edu>
     6677+
     6678+       * getsize.c (ext2fs_get_device_size): Open the device read-only
     6679+               when trying to determine its size.
     6680+
     6681+Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
     6682+
     6683+       * Release of E2fsprogs version 1.02
     6684+
     6685+Sat Dec  9 09:57:50 1995    <tytso@rsts-11.mit.edu>
     6686+
     6687+       * rw_bitops.c (ext2fs_write_block_bitmap):
     6688+       * bitops.c (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
     6689+       * bitops.h (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
     6690+               Rename {test,set,clear}_bit to ext2fs_{test,set,clear}_bit,
     6691+               to avoid conflicts with with kernel include files.  Also
     6692+               rename ADDR and CONST_ADDR to EXT2FS_ADDR and
     6693+               EXT2FS_CONST_ADDR.
     6694+
     6695+Thu Oct 26 12:09:16 1995    <tytso@rsts-11.mit.edu>
     6696+
     6697+       * ext2_err.et: Updated message in EXT2_ET_BASE to say version 0.5c
     6698+
     6699+       * swapfs.c (ext2fs_swap_super): Put an #ifdef check around
     6700+               s_def_resuid and s_def_resgid for backwards compatibility.
     6701+
     6702+Fri Oct 20 23:33:31 1995    <tytso@rsts-11.mit.edu>
     6703+
     6704+       * bitops.h: Added #ifdef's for Sparc.
     6705+
     6706+Wed Sep  6 22:14:46 1995    <tytso@rsts-11.mit.edu>
     6707+
     6708+       * getsize.c: #include <sys/ioctl.h> under Linux to pick up ioctl()
     6709+               declaration
     6710+
     6711+       * closefs.c: #include <string.h> to pick up memset() declaration
     6712+
     6713+Mon Sep  4 21:45:29 1995  Remy Card  <card@bbj>
     6714+
     6715+       * Makefile.in: Added support for BSD shared libraries.
     6716+
     6717+       * initialize.c (ext2fs_initialize): Correctly set the s_creator_os
     6718+               flag.
     6719+
     6720+Mon Sep  4 09:55:30 1995    <tytso@rsts-11.mit.edu>
     6721+
     6722+       * unix_io.c (unix_open): Add a double check; if the passed in name
     6723+               is NULL, return EXT2_ET_BAD_DEVICE_NAME.
     6724+
     6725+       * ext2_err.et (EXT2_ET_BAD_DEVICE_NAME): Added new error code
     6726+
     6727+Wed Aug 16 15:44:10 1995    <tytso@rsts-11.mit.edu>
     6728+
     6729+       * inode.c (ext2fs_check_directory): Use LINUX_S_ISDIR instead of
     6730+               S_ISDIR.
     6731+
     6732+Tue Aug 15 13:08:36 1995    <tytso@rsts-11.mit.edu>
     6733+
     6734+       * getsize.c (ext2fs_get_device_size): Add support for reading the
     6735+               partition size from a BSD disk label.
     6736+
     6737+Thu Aug 10 09:33:26 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
     6738+
     6739+       * getsize.c (ext2fs_get_device_size): New function that determins
     6740+               the size of a device.  Used by mke2fs and e2fsck.
     6741+
     6742+Sat Aug 12 03:09:54 1995  Remy Card  <card@bbj>
     6743+
     6744+       * Makefile.in (install): Install static libraries in $(ulibdir)
     6745+               (/usr/lib on Linux) instead of $(libdir) (/lib on Linux).
     6746+
     6747+Wed Aug  9 17:04:23 1995  Theodore Y. Ts'o  <tytso@dcl>
     6748+
     6749+       * bitmaps.c (ext2fs_free_inode_bitmap, ext2fs_free_block_bitmap):
     6750+               Move these functions to freefs.c.
     6751+
     6752+       * closefs.c (ext2fs_flush): If swapping blocks, clear the group
     6753+               descriptors shadow memory to keep purify quiet.  (This
     6754+               also has the nice benefit that the unused portion of the
     6755+               shadow descriptors are zeroed out.)
     6756+
     6757+       * dirblock.c (ext2fs_write_dir_block): We need to use
     6758+               dirent->rec_len *before* it's byteswapped to find the
     6759+               location of the next directory structure!
     6760+
     6761+       * alloc.c (ext2fs_new_inode): Fix bug which could potentially
     6762+               cause ext2fs_new_inode to loop infinitely if we're trying
     6763+               to allocate an inode in group #0 and there are no free
     6764+               inodes at all in the system.
     6765+
     6766+       * closefs.c: #include <errno.h> if it exists.
     6767+
     6768+Sun Aug  6 13:27:50 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
     6769+
     6770+       * ext2fs.h (BLOCK_FLAG_HOLE): Added new definition for
     6771+               BLOCK_FLAG_APPEND.  Added documentation for the block
     6772+               interator flags.
     6773+
     6774+Sat Aug  5 11:44:05 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
     6775+
     6776+       * Makefile.in (DLL_INSTALL_DIR, ELF_INSTALL_DIR): Set the
     6777+               installation directories correctly.
     6778+
     6779+Tue Jul 18 09:27:38 1995    <tytso@rsx-11.mit.edu>
     6780+
     6781+       * namei.c (process_dir_block):
     6782+       * mkdir.c (ext2fs_mkdir):
     6783+       * expanddir.c (expand_dir_proc): Use ext2fs_{read,write}_dir_block
     6784+               to read/write the directory block.
     6785+
     6786+       * dirblock.c (ext2fs_read_dir_block), ext2fs_write_dir_block): New
     6787+               file containing functions for reading and writing
     6788+               directory blocks (byte swapping if necesssary)
     6789+
     6790+       * block.c (block_iterate_ind, block_iterate_dind,
     6791+               block_iterate_tind): Byte swap the block addresses if
     6792+               EXT2_SWAP_BYTES is set (and swap them back before writing
     6793+               them out.)
     6794+
     6795+       * inode.c (inocpy_with_swap): New function.
     6796+       (ext2fs_get_next_inode, ext2fs_read_inode, ext2fs_write_inode):
     6797+               Call inocpy_with_swap if EXT2_SWAP_BYTES if set.
     6798+
     6799+       * closefs.c (ext2fs_flush): If EXT2_SWAP_BYTES is set, then swap
     6800+               the superblock and group descriptors before writing it out.
     6801+
     6802+       * openfs.c (ext2fs_open): If the magic number is byte-swapped,
     6803+               then set the EXT2_SWAP_BYTES and byte-swap the superblock
     6804+               and group descriptors.
     6805+
     6806+       * swapfs.c (ext2fs_swap_super, ext2fs_swap_group_desc): New functions
     6807+               to desp ext2 filesystem structures.
     6808+
     6809+       * bitops.c (set_bit, clear_bit, test_bit): Use modifications
     6810+               supplied by Pete A. Zaitcev so that the C language
     6811+               versions of these functions are more portable.  They will
     6812+               now work on both little and big endian systems, and the
     6813+               assumption that 32-bit integers are used is gone.
     6814+
     6815+       * bitops.h (ext2_swab16, ext2_swab32): Added new functions for
     6816+               doing byte swapping.
     6817+
     6818+       * ext2fs.h (EXT2_SWAP_BYTES): Add new flag which indicates that
     6819+               byte swapping should take place.
     6820+
     6821+Sun Jul 16 06:21:43 1995    <tytso@rsx-11.mit.edu>
     6822+
     6823+       * Makefile.in, cmp_bitmaps.c (ext2fs_compare_block_bitmap_end,
     6824+               ext2fs_compare_inode_bitmap_end): Added new file
     6825+               containing routines to compare bitmaps.
     6826+
     6827+       * ext2_err.et (EXT2_ET_NEQ_BLOCK_BITMAP, EXT2_ET_NEQ_INODE_BITMAP):
     6828+               Added new error codes.
     6829+
     6830+Sat Jul 15 04:23:37 1995    <tytso@rsx-11.mit.edu>
     6831+
     6832+       * inode.c (ext2fs_get_next_inode): Don't check scan->inode_buffer;
     6833+               if the magic number is correct, it will be allocated.
     6834+
     6835+Fri Jul 14 19:02:59 1995    <tytso@rsx-11.mit.edu>
     6836+
     6837+       * block.c (block_iterate_ind, block_iterate_dind,
     6838+               block_iterate_tind): Don't recompute block_nr each loop;
     6839+               just increment it!  Factor check of BLOCK_FLAG_APPEND out
     6840+               of the loop.  Factor mask of BLOCK_CHANGED into changed
     6841+               variable out of the loop.  (block_iterate_ind, in
     6842+               particular, gets called a lot, so every little
     6843+               optimization helps.)
     6844+
     6845+Thu Jul 13 08:02:45 1995    <tytso@rsx-11.mit.edu>
     6846+
     6847+       * block.c (block_iterate_ind, block_iterate_dind,
     6848+               block_iterate_tind): Precompute limit of loop to speed up
     6849+               block_iterate_ind and company.
     6850+
     6851+       * bitops.h (ext2fs_fast_mark_block_bitmap,
     6852+               ext2fs_fast_unmark_block_bitmap, ext2fs_fast_test_block_bitmap,
     6853+               ext2fs_fast_mark_inode_bitmap, ext2fs_fast_unmark_inode_bitmap,
     6854+               ext2fs_fast_test_inode_bitmap): Add fast version of these
     6855+               functions, which don't do range checking.
     6856+
     6857+       * bitops.h (ext2fs_get_block_bitmap_start,
     6858+               ext2fs_get_inode_bitmap_start, ext2fs_get_block_bitmap_end,
     6859+               ext2fs_get_inode_bitmap_end): Add new accessor functions
     6860+               which return the start and end points of the bitmaps.
     6861+
     6862+Tue Jul 11 18:59:41 1995    <tytso@rsx-11.mit.edu>
     6863+
     6864+       * llseek.c (ext2_llseek): If the offset is small enough, use lseek
     6865+               instead of llseek.  The errno if the offset is too large
     6866+               and lseek is not supported should be EINVAL, not -EINVAL.
     6867+
     6868+Thu Jun 15 23:43:02 1995  Remy Card  <card@bbj>
     6869+
     6870+       * Makefile.in: Added support for ELF shared libraries.
     6871+               Fixed typos in the compilation rules.
     6872+               (distclean): Added Makefile.
     6873+
     6874+       * llseek.c (llseek): New function, if llseek() does not exist in the
     6875+       C library.
     6876+       (ext2_llseek): Changed to call llseek().
     6877+
     6878+Mon Jun 12 08:29:07 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
     6879+
     6880+       * ext2fs.h: Use __u32 to define blk_t, instead of unsigned long.
     6881+
     6882+Sun Jun 11 15:02:54 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
     6883+
     6884+       * mkdir.c (ext2fs_mkdir): Use LINUX_S_IFDIR instead of S_IFDIR.
     6885+
     6886+       * ext2fs.h (LINUX_S_IFDIR): Define a linux specific versions of
     6887+               the S_*, which are normally defined in <sys/stat.h>.  This
     6888+               allows us to compile e2fsprogs on a non-Linux system,
     6889+               which may have a different value for S_IFDIR.
     6890+
     6891+Sat Jun 10 23:47:05 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
     6892+
     6893+       * bitops.c (clear_bit, set_bit): Remove calls to cli() and sti();
     6894+               this is a user-mode application!
     6895+
     6896+Thu Jun  8 13:13:22 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>
     6897+
     6898+       * llseek.c: Put the include of <linux/unistd.h> inside the #ifdef
     6899+       __linux__ so that non-linux systems won't see it.
     6900+
     6901+       * alloc.c: Include <errno.h> if possible.
     6902+       * badblocks.c: Ditto.
     6903+       * bb_inode.c: Ditto.
     6904+       * bitmaps.c: Ditto.
     6905+       * block.c: Ditto.
     6906+       * expanddir.c: Ditto.
     6907+       * get_pathname.c: Ditto.
     6908+       * initialize.c: Ditto.
     6909+       * inode.c: Ditto.
     6910+       * llseek.c: Ditto.
     6911+       * mkdir.c: Ditto.
     6912+       * namei.c: Ditto.
     6913+       * newdir.c: Ditto.
     6914+       * openfs.c: Ditto.
     6915+       * rw_bitmaps.c: Ditto.
     6916+       * unix_io.c: Ditto.
     6917+
     6918+       * Makefile.in: Rewritten to conform to GNU coding standards and
     6919+       support separate compilation directories.
     6920+
     6921+Thu May 11 04:13:12 1995    <tytso@rsx-11.mit.edu>
     6922+
     6923+       * initialize.c (ext2fs_initialize): Don't allow more than one
     6924+               bitmaps's worth of inodes in a group.
     6925+
     6926+Sat Mar 11 14:07:11 1995  Theodore Y. Ts'o  <tytso@localhost>
     6927+
     6928+       * llseek.c (ext2_llseek): Added error checking to the llseek()
     6929+               compat code to protect against overflow.  This only
     6930+               applies to 1.0 and early 1.1 kernels, which don't support
     6931+               the llseek() system call.
     6932+
     6933+Thu Nov 24 16:29:00 1994  Theodore Y. Ts'o  (tytso@rt-11)
     6934+
     6935+       * unix_io.c (unix_open): Initialize the read_error and write_error
     6936+               io_channel pointers to be null.
     6937+
     6938+       * bb_inode.c (clear_bad_block_proc): If an illegal block number is
     6939+               found, clear it but don't try to update the filesystem
     6940+               accounting information, since that's hopeless anyway.
     6941+
     6942+       * block.c (bloblock_iterate_ind, bloblock_iterate_dind,
     6943+       bloblock_iterate_tind): Check to see if the indirect blocks are
     6944+               valid before trying to read them.
     6945+
     6946+       * ext2_err.et (EXT2_ET_BAD_IND_BLOCK, EX2_ET_BAD_DIND_BLOCK,
     6947+       EXT2_ET_BAD_TIND_BLOCK): Add new error codes.
     6948+
     6949+       * bitops.h (ext2fs_mark_block_bitmap, ext2fs_unmark_block_bitmap,
     6950+       ext2fs_test_block_bitmap, ext2fs_mark_inode_bitmap,
     6951+       ext2fs_unmark_inode_bitmap, ext2fs_test_inode_bitmap):  If an
     6952+               illegal block or inode number is passed in, return instead
     6953+               of trying to test, set, or clear the bit.
     6954+
     6955+Mon Nov  7 21:32:33 1994  Remy Card  <card@bbj>
     6956+
     6957+       * Makefile: Added a dummy install target in case shared libraries
     6958+               are not built.
     6959+
     6960+Mon Oct 24 14:11:44 1994    (tytso@rsx-11)
     6961+
     6962+       * bitmaps.c (ext2fs_allocate_block_bitmap): Fix calculation of how
     6963+               the real last block of the bitmap should be calculated.
     6964+
     6965+Wed Sep  7 10:05:36 1994    (tytso@rsx-11)
     6966+
     6967+       * bitmaps.c (ext2fs_fudge_inode_bitmap_end,
     6968+               ext2fs_fudge_block_bitmap_end, ext2fs_clear_inode_bitmap,
     6969+               ext2fs_clear_block_bitmap, ext2fs_free_inode_bitmap,
     6970+               ext2fs_free_block_bitmap): Add magic number checking for
     6971+               the inode and block bitmaps.
     6972+
     6973+       * bitmaps.c (ext2fs_allocate_block_bitmap): Fix to set the correct
     6974+               magic number for a block bitmap instead of an inode bitmap.
     6975+
     6976+       * inode.c (ext2fs_close_inode_scan, ext2fs_get_next_inode):  Add
     6977+               magic number checking for the inode_scan structure.
     6978+
     6979+       * badblocks.c (badblocks_list_free, badblocks_list_add,
     6980+               badblocks_list_test, badblocks_list_iterate_begin,
     6981+               badblocks_list_iterate, badblocks_list_iterate_end): Add
     6982+               magic number checking for the badblocks_list and
     6983+               badblocks_iterate structures.
     6984+
     6985+       * ext2_err.et (EXT2_ET_MAGIC_UNIX_IO_CHANNEL):
     6986+       * unix_io.c (unix_open, unix_close, unix_set_blksize, unix_read_blk,
     6987+               unix_write_blk, unix_flush): Add magic number checking
     6988+               both for io_channel structure and unix_private_data
     6989+               structure.
     6990+
     6991+       * openfs.c (ext2fs_open): Add check for io_manager structure's
     6992+               magic number.
     6993+
     6994+       * rw_bitmaps.c (ext2fs_write_inode_bitmap, ext2fs_write_block_bitmap,
     6995+               ext2fs_read_inode_bitmap, ext2fs_read_block_bitmap,
     6996+               ext2fs_read_bitmaps, ext2fs_write_bitmaps):
     6997+       * read_bb.c (ext2fs_read_bb_inode):
     6998+       * read_bb_file.c (ext2fs_read_bb_FILE):
     6999+       * newdir.c (ext2fs_new_dir_block):
     7000+       * namei.c (ext2fs_dir_iterate, ext2fs_lookup, ext2fs_namei):
     7001+       * link.c (ext2fs_link, ext2fs_unlink):
     7002+       * inode.c (ext2fs_open_inode_scan, ext2fs_read_inode,
     7003+               ext2fs_write_inode, ext2fs_get_blocks,
     7004+               ext2fs_check_directory):
     7005+       * get_pathname.c (ext2fs_get_pathname):
     7006+       * expanddir.c (ext2fs_expand_dir):
     7007+       * block.c (ext2fs_block_iterate):
     7008+       * bitmaps.c (ext2fs_allocate_inode_bitmap,
     7009+               ext2fs_allocate_block_bitmap):
     7010+       * bb_inode.c (ext2fs_update_bb_inode):
     7011+       * alloc.c (ext2fs_new_inode,ext2fs_new_block,ext2fs_get_free_blocks):
     7012+       * check_desc.c (ext2fs_check_desc):
     7013+       * closefs.c (ext2fs_close, ext2fs_flush):
     7014+       * freefs.c (ext2fs_free): Add check for ext2_filsys magic number.
     7015+
     7016+       * Makefile:
     7017+       * ext2fs.h:
     7018+       * openfs.c:
     7019+       * check_desc.c (ext2fs_check_desc): Move ext2fs_check_desc from
     7020+       openfs.c into its own file.
     7021+
     7022+       * ext2fs.h (EXT2_CHECK_MAGIC): Added macro for checking for
     7023+       structure magic numbers.
     7024+
     7025+       * closefs.c (ext2fs_flush): Folded in Remy Card's changes to clear
     7026+       the EXT2_VALID_FS flag in the backup superblock blocks, so that if
     7027+       someone uses the -b option to specify the use of the backup
     7028+       superblock --- this usually means that the main superblock is
     7029+       toast.  :-)
     7030+
     7031+       * ext2fs.h:
     7032+       * ext2_err.et (EXT2_ET_REV_TOO_HIGH):
     7033+       * openfs.c (ext2fs_open): Folded in Remy Card's changes to add a
     7034+       revision level to the superblock.
     7035+
     7036+Sun Aug 21 00:50:08 1994  Theodore Y. Ts'o  (tytso@rt-11)
     7037+
     7038+       * ext2fs.h:
     7039+       * bitmaps.c:
     7040+       * bitops.c
     7041+       * bitops.h:
     7042+       * openfs.c:
     7043+       * initialize.c: Completely revamped the inode and block bitmap
     7044+       structures, so that they can be better chance of being extensible
     7045+       in a shared library.  They are now their own type, instead of
     7046+       being a char *.  Also, the function signatures of
     7047+       ext2fs_test_block_bitmap, ext2fs_mark_block_bitmap,
     7048+       ext2fs_unmark_block_bitmap, ext2fs_test_inode_bitmap,
     7049+       ext2fs_mark_inode_bitmap, and ext2fs_unmark_inode_bitmap were
     7050+       changed to eliminate the ext2_filsys argument, since it is no
     7051+       longer necessary.
     7052+
     7053+Wed Aug 17 21:46:44 1994  Remy Card  (card@bbj)
     7054+
     7055+       * unix_io.c (unix_read_blk and unix_write_blk): use the llseek
     7056+       system call if available.
     7057+
     7058+       * llseek.c: new file.  This is the stub calling the llseek system
     7059+       call which allows supports for 2GB+ file systems.
     7060+
     7061+       * initialize.c (ext2fs_initialize): Ext2fs_initialize now stores
     7062+       the creator operating system.
     7063+
     7064+Wed Aug 17 10:03:24 1994  Theodore Y. Ts'o  (tytso@rt-11)
     7065+
     7066+       * initialize.c (ext2fs_initialize): Ext2fs_initialize now sets up
     7067+       the group descriptor statistics in addition to everything else.
     7068+       This relieves mke2fs of the responsibility of doing it.
     7069+
     7070+       * bitops.c, bitops.h: Add assembly inline functions for the 68000.
     7071+       Added a new #define, _EXT2_HAVE_ASM_BITOPS_ to control whether or
     7072+       not the generic C function equivalents should be included or not.
     7073+
     7074+       * openfs.c (ext2fs_open): If a superblock is specified, then use
     7075+       the backup group descriptors that go along with this superblock,
     7076+       instead of using the primary group descriptors.  This allows
     7077+       e2fsck to recover filesystems where the primary group descriptors
     7078+       have been trashed.
     7079+
     7080+
    71217081diff -Naur silo-1.4.13.orig/libext2fs/check_desc.c silo-1.4.13/libext2fs/check_desc.c
    7122 --- silo-1.4.13.orig/libext2fs/check_desc.c     1969-12-31 16:00:00.000000000 -0800
    7123 +++ silo-1.4.13/libext2fs/check_desc.c  2006-11-02 19:21:44.216761341 -0800
     7082--- silo-1.4.13.orig/libext2fs/check_desc.c     1969-12-31 19:00:00.000000000 -0500
     7083+++ silo-1.4.13/libext2fs/check_desc.c  2007-04-03 17:02:53.000000000 -0400
    71247084@@ -0,0 +1,68 @@
    71257085+/*
     
    71927152+}
    71937153diff -Naur silo-1.4.13.orig/libext2fs/closefs.c silo-1.4.13/libext2fs/closefs.c
    7194 --- silo-1.4.13.orig/libext2fs/closefs.c        1969-12-31 16:00:00.000000000 -0800
    7195 +++ silo-1.4.13/libext2fs/closefs.c     2006-11-02 19:21:44.216761341 -0800
     7154--- silo-1.4.13.orig/libext2fs/closefs.c        1969-12-31 19:00:00.000000000 -0500
     7155+++ silo-1.4.13/libext2fs/closefs.c     2007-04-03 17:02:53.000000000 -0400
    71967156@@ -0,0 +1,381 @@
    71977157+/*
     
    75777537+
    75787538diff -Naur silo-1.4.13.orig/libext2fs/cmp_bitmaps.c silo-1.4.13/libext2fs/cmp_bitmaps.c
    7579 --- silo-1.4.13.orig/libext2fs/cmp_bitmaps.c    1969-12-31 16:00:00.000000000 -0800
    7580 +++ silo-1.4.13/libext2fs/cmp_bitmaps.c 2006-11-02 19:21:44.216761341 -0800
     7539--- silo-1.4.13.orig/libext2fs/cmp_bitmaps.c    1969-12-31 19:00:00.000000000 -0500
     7540+++ silo-1.4.13/libext2fs/cmp_bitmaps.c 2007-04-03 17:02:53.000000000 -0400
    75817541@@ -0,0 +1,72 @@
    75827542+/*
     
    76537613+
    76547614diff -Naur silo-1.4.13.orig/libext2fs/dblist.c silo-1.4.13/libext2fs/dblist.c
    7655 --- silo-1.4.13.orig/libext2fs/dblist.c 1969-12-31 16:00:00.000000000 -0800
    7656 +++ silo-1.4.13/libext2fs/dblist.c      2006-11-02 19:21:44.216761341 -0800
     7615--- silo-1.4.13.orig/libext2fs/dblist.c 1969-12-31 19:00:00.000000000 -0500
     7616+++ silo-1.4.13/libext2fs/dblist.c      2007-04-03 17:02:53.000000000 -0400
    76577617@@ -0,0 +1,260 @@
    76587618+/*
     
    79177877+}
    79187878diff -Naur silo-1.4.13.orig/libext2fs/dblist_dir.c silo-1.4.13/libext2fs/dblist_dir.c
    7919 --- silo-1.4.13.orig/libext2fs/dblist_dir.c     1969-12-31 16:00:00.000000000 -0800
    7920 +++ silo-1.4.13/libext2fs/dblist_dir.c  2006-11-02 19:21:44.216761341 -0800
     7879--- silo-1.4.13.orig/libext2fs/dblist_dir.c     1969-12-31 19:00:00.000000000 -0500
     7880+++ silo-1.4.13/libext2fs/dblist_dir.c  2007-04-03 17:02:53.000000000 -0400
    79217881@@ -0,0 +1,75 @@
    79227882+/*
     
    79957955+                                       db_info->blockcnt, 0, 0, priv_data);
    79967956+}
    7997 diff -Naur silo-1.4.13.orig/libext2fs/dir_iterate.c silo-1.4.13/libext2fs/dir_iterate.c
    7998 --- silo-1.4.13.orig/libext2fs/dir_iterate.c    1969-12-31 16:00:00.000000000 -0800
    7999 +++ silo-1.4.13/libext2fs/dir_iterate.c 2006-11-02 19:21:44.216761341 -0800
    8000 @@ -0,0 +1,219 @@
    8001 +/*
    8002 + * dir_iterate.c --- ext2fs directory iteration operations
    8003 + *
    8004 + * Copyright (C) 1993, 1994, 1994, 1995, 1996, 1997 Theodore Ts'o.
    8005 + *
    8006 + * %Begin-Header%
    8007 + * This file may be redistributed under the terms of the GNU Public
    8008 + * License.
    8009 + * %End-Header%
    8010 + */
    8011 +
    8012 +#include <stdio.h>
    8013 +#include <string.h>
    8014 +#if HAVE_UNISTD_H
    8015 +#include <unistd.h>
    8016 +#endif
    8017 +#if HAVE_ERRNO_H
    8018 +#include <errno.h>
    8019 +#endif
    8020 +
    8021 +#include "ext2_fs.h"
    8022 +#include "ext2fsP.h"
    8023 +
    8024 +/*
    8025 + * This function checks to see whether or not a potential deleted
    8026 + * directory entry looks valid.  What we do is check the deleted entry
    8027 + * and each successive entry to make sure that they all look valid and
    8028 + * that the last deleted entry ends at the beginning of the next
    8029 + * undeleted entry.  Returns 1 if the deleted entry looks valid, zero
    8030 + * if not valid.
    8031 + */
    8032 +static int ext2fs_validate_entry(char *buf, int offset, int final_offset)
    8033 +{
    8034 +       struct ext2_dir_entry *dirent;
    8035 +       
    8036 +       while (offset < final_offset) {
    8037 +               dirent = (struct ext2_dir_entry *)(buf + offset);
    8038 +               offset += dirent->rec_len;
    8039 +               if ((dirent->rec_len < 8) ||
    8040 +                   ((dirent->rec_len % 4) != 0) ||
    8041 +                   (((dirent->name_len & 0xFF)+8) > dirent->rec_len))
    8042 +                       return 0;
    8043 +       }
    8044 +       return (offset == final_offset);
    8045 +}
    8046 +
    8047 +errcode_t ext2fs_dir_iterate2(ext2_filsys fs,
    8048 +                             ext2_ino_t dir,
    8049 +                             int flags,
    8050 +                             char *block_buf,
    8051 +                             int (*func)(ext2_ino_t    dir,
    8052 +                                         int           entry,
    8053 +                                         struct ext2_dir_entry *dirent,
    8054 +                                         int   offset,
    8055 +                                         int   blocksize,
    8056 +                                         char  *buf,
    8057 +                                         void  *priv_data),
    8058 +                             void *priv_data)
    8059 +{
    8060 +       struct          dir_context     ctx;
    8061 +       errcode_t       retval;
    8062 +       
    8063 +       EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
    8064 +
    8065 +       retval = ext2fs_check_directory(fs, dir);
    8066 +       if (retval)
    8067 +               return retval;
    8068 +       
    8069 +       ctx.dir = dir;
    8070 +       ctx.flags = flags;
    8071 +       if (block_buf)
    8072 +               ctx.buf = block_buf;
    8073 +       else {
    8074 +               retval = ext2fs_get_mem(fs->blocksize, &ctx.buf);
    8075 +               if (retval)
    8076 +                       return retval;
    8077 +       }
    8078 +       ctx.func = func;
    8079 +       ctx.priv_data = priv_data;
    8080 +       ctx.errcode = 0;
    8081 +       retval = ext2fs_block_iterate2(fs, dir, 0, 0,
    8082 +                                      ext2fs_process_dir_block, &ctx);
    8083 +       if (!block_buf)
    8084 +               ext2fs_free_mem(&ctx.buf);
    8085 +       if (retval)
    8086 +               return retval;
    8087 +       return ctx.errcode;
    8088 +}
    8089 +
    8090 +struct xlate {
    8091 +       int (*func)(struct ext2_dir_entry *dirent,
    8092 +                   int         offset,
    8093 +                   int         blocksize,
    8094 +                   char        *buf,
    8095 +                   void        *priv_data);
    8096 +       void *real_private;
    8097 +};
    8098 +
    8099 +static int xlate_func(ext2_ino_t dir EXT2FS_ATTR((unused)),
    8100 +                     int entry EXT2FS_ATTR((unused)),
    8101 +                     struct ext2_dir_entry *dirent, int offset,
    8102 +                     int blocksize, char *buf, void *priv_data)
    8103 +{
    8104 +       struct xlate *xl = (struct xlate *) priv_data;
    8105 +
    8106 +       return (*xl->func)(dirent, offset, blocksize, buf, xl->real_private);
    8107 +}
    8108 +
    8109 +extern errcode_t ext2fs_dir_iterate(ext2_filsys fs,
    8110 +                             ext2_ino_t dir,
    8111 +                             int flags,
    8112 +                             char *block_buf,
    8113 +                             int (*func)(struct ext2_dir_entry *dirent,
    8114 +                                         int   offset,
    8115 +                                         int   blocksize,
    8116 +                                         char  *buf,
    8117 +                                         void  *priv_data),
    8118 +                             void *priv_data)
    8119 +{
    8120 +       struct xlate xl;
    8121 +       
    8122 +       xl.real_private = priv_data;
    8123 +       xl.func = func;
    8124 +
    8125 +       return ext2fs_dir_iterate2(fs, dir, flags, block_buf,
    8126 +                                  xlate_func, &xl);
    8127 +}
    8128 +
    8129 +
    8130 +/*
    8131 + * Helper function which is private to this module.  Used by
    8132 + * ext2fs_dir_iterate() and ext2fs_dblist_dir_iterate()
    8133 + */
    8134 +int ext2fs_process_dir_block(ext2_filsys fs,
    8135 +                            blk_t      *blocknr,
    8136 +                            e2_blkcnt_t blockcnt,
    8137 +                            blk_t      ref_block EXT2FS_ATTR((unused)),
    8138 +                            int        ref_offset EXT2FS_ATTR((unused)),
    8139 +                            void       *priv_data)
    8140 +{
    8141 +       struct dir_context *ctx = (struct dir_context *) priv_data;
    8142 +       unsigned int    offset = 0;
    8143 +       unsigned int    next_real_entry = 0;
    8144 +       int             ret = 0;
    8145 +       int             changed = 0;
    8146 +       int             do_abort = 0;
    8147 +       int             entry, size;
    8148 +       struct ext2_dir_entry *dirent;
    8149 +
    8150 +       if (blockcnt < 0)
    8151 +               return 0;
    8152 +
    8153 +       entry = blockcnt ? DIRENT_OTHER_FILE : DIRENT_DOT_FILE;
    8154 +       
    8155 +       ctx->errcode = ext2fs_read_dir_block(fs, *blocknr, ctx->buf);
    8156 +       if (ctx->errcode)
    8157 +               return BLOCK_ABORT;
    8158 +
    8159 +       while (offset < fs->blocksize) {
    8160 +               dirent = (struct ext2_dir_entry *) (ctx->buf + offset);
    8161 +               if (((offset + dirent->rec_len) > fs->blocksize) ||
    8162 +                   (dirent->rec_len < 8) ||
    8163 +                   ((dirent->rec_len % 4) != 0) ||
    8164 +                   (((dirent->name_len & 0xFF)+8) > dirent->rec_len)) {
    8165 +                       ctx->errcode = EXT2_ET_DIR_CORRUPTED;
    8166 +                       return BLOCK_ABORT;
    8167 +               }
    8168 +               if (!dirent->inode &&
    8169 +                   !(ctx->flags & DIRENT_FLAG_INCLUDE_EMPTY))
    8170 +                       goto next;
    8171 +
    8172 +               ret = (ctx->func)(ctx->dir,
    8173 +                                 (next_real_entry > offset) ?
    8174 +                                 DIRENT_DELETED_FILE : entry,
    8175 +                                 dirent, offset,
    8176 +                                 fs->blocksize, ctx->buf,
    8177 +                                 ctx->priv_data);
    8178 +               if (entry < DIRENT_OTHER_FILE)
    8179 +                       entry++;
    8180 +                       
    8181 +               if (ret & DIRENT_CHANGED)
    8182 +                       changed++;
    8183 +               if (ret & DIRENT_ABORT) {
    8184 +                       do_abort++;
    8185 +                       break;
    8186 +               }
    8187 +next:         
    8188 +               if (next_real_entry == offset)
    8189 +                       next_real_entry += dirent->rec_len;
    8190 +
    8191 +               if (ctx->flags & DIRENT_FLAG_INCLUDE_REMOVED) {
    8192 +                       size = ((dirent->name_len & 0xFF) + 11) & ~3;
    8193 +
    8194 +                       if (dirent->rec_len != size)  {
    8195 +                               unsigned int final_offset;
    8196 +
    8197 +                               final_offset = offset + dirent->rec_len;
    8198 +                               offset += size;
    8199 +                               while (offset < final_offset &&
    8200 +                                      !ext2fs_validate_entry(ctx->buf,
    8201 +                                                             offset,
    8202 +                                                             final_offset))
    8203 +                                       offset += 4;
    8204 +                               continue;
    8205 +                       }
    8206 +               }
    8207 +               offset += dirent->rec_len;
    8208 +       }
    8209 +
    8210 +       if (changed) {
    8211 +               ctx->errcode = ext2fs_write_dir_block(fs, *blocknr, ctx->buf);
    8212 +               if (ctx->errcode)
    8213 +                       return BLOCK_ABORT;
    8214 +       }
    8215 +       if (do_abort)
    8216 +               return BLOCK_ABORT;
    8217 +       return 0;
    8218 +}
    8219 +
    82207957diff -Naur silo-1.4.13.orig/libext2fs/dirblock.c silo-1.4.13/libext2fs/dirblock.c
    8221 --- silo-1.4.13.orig/libext2fs/dirblock.c       1969-12-31 16:00:00.000000000 -0800
    8222 +++ silo-1.4.13/libext2fs/dirblock.c    2006-11-02 19:21:44.216761341 -0800
     7958--- silo-1.4.13.orig/libext2fs/dirblock.c       1969-12-31 19:00:00.000000000 -0500
     7959+++ silo-1.4.13/libext2fs/dirblock.c    2007-04-03 17:02:53.000000000 -0400
    82237960@@ -0,0 +1,130 @@
    82247961+/*
     
    83538090+
    83548091diff -Naur silo-1.4.13.orig/libext2fs/dirhash.c silo-1.4.13/libext2fs/dirhash.c
    8355 --- silo-1.4.13.orig/libext2fs/dirhash.c        1969-12-31 16:00:00.000000000 -0800
    8356 +++ silo-1.4.13/libext2fs/dirhash.c     2006-11-02 19:21:44.216761341 -0800
     8092--- silo-1.4.13.orig/libext2fs/dirhash.c        1969-12-31 19:00:00.000000000 -0500
     8093+++ silo-1.4.13/libext2fs/dirhash.c     2007-04-03 17:02:53.000000000 -0400
    83578094@@ -0,0 +1,233 @@
    83588095+/*
     
    85898326+       return 0;
    85908327+}
     8328diff -Naur silo-1.4.13.orig/libext2fs/dir_iterate.c silo-1.4.13/libext2fs/dir_iterate.c
     8329--- silo-1.4.13.orig/libext2fs/dir_iterate.c    1969-12-31 19:00:00.000000000 -0500
     8330+++ silo-1.4.13/libext2fs/dir_iterate.c 2007-04-03 17:02:53.000000000 -0400
     8331@@ -0,0 +1,219 @@
     8332+/*
     8333+ * dir_iterate.c --- ext2fs directory iteration operations
     8334+ *
     8335+ * Copyright (C) 1993, 1994, 1994, 1995, 1996, 1997 Theodore Ts'o.
     8336+ *
     8337+ * %Begin-Header%
     8338+ * This file may be redistributed under the terms of the GNU Public
     8339+ * License.
     8340+ * %End-Header%
     8341+ */
     8342+
     8343+#include <stdio.h>
     8344+#include <string.h>
     8345+#if HAVE_UNISTD_H
     8346+#include <unistd.h>
     8347+#endif
     8348+#if HAVE_ERRNO_H
     8349+#include <errno.h>
     8350+#endif
     8351+
     8352+#include "ext2_fs.h"
     8353+#include "ext2fsP.h"
     8354+
     8355+/*
     8356+ * This function checks to see whether or not a potential deleted
     8357+ * directory entry looks valid.  What we do is check the deleted entry
     8358+ * and each successive entry to make sure that they all look valid and
     8359+ * that the last deleted entry ends at the beginning of the next
     8360+ * undeleted entry.  Returns 1 if the deleted entry looks valid, zero
     8361+ * if not valid.
     8362+ */
     8363+static int ext2fs_validate_entry(char *buf, int offset, int final_offset)
     8364+{
     8365+       struct ext2_dir_entry *dirent;
     8366+       
     8367+       while (offset < final_offset) {
     8368+               dirent = (struct ext2_dir_entry *)(buf + offset);
     8369+               offset += dirent->rec_len;
     8370+               if ((dirent->rec_len < 8) ||
     8371+                   ((dirent->rec_len % 4) != 0) ||
     8372+                   (((dirent->name_len & 0xFF)+8) > dirent->rec_len))
     8373+                       return 0;
     8374+       }
     8375+       return (offset == final_offset);
     8376+}
     8377+
     8378+errcode_t ext2fs_dir_iterate2(ext2_filsys fs,
     8379+                             ext2_ino_t dir,
     8380+                             int flags,
     8381+                             char *block_buf,
     8382+                             int (*func)(ext2_ino_t    dir,
     8383+                                         int           entry,
     8384+                                         struct ext2_dir_entry *dirent,
     8385+                                         int   offset,
     8386+                                         int   blocksize,
     8387+                                         char  *buf,
     8388+                                         void  *priv_data),
     8389+                             void *priv_data)
     8390+{
     8391+       struct          dir_context     ctx;
     8392+       errcode_t       retval;
     8393+       
     8394+       EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
     8395+
     8396+       retval = ext2fs_check_directory(fs, dir);
     8397+       if (retval)
     8398+               return retval;
     8399+       
     8400+       ctx.dir = dir;
     8401+       ctx.flags = flags;
     8402+       if (block_buf)
     8403+               ctx.buf = block_buf;
     8404+       else {
     8405+               retval = ext2fs_get_mem(fs->blocksize, &ctx.buf);
     8406+               if (retval)
     8407+                       return retval;
     8408+       }
     8409+       ctx.func = func;
     8410+       ctx.priv_data = priv_data;
     8411+       ctx.errcode = 0;
     8412+       retval = ext2fs_block_iterate2(fs, dir, 0, 0,
     8413+                                      ext2fs_process_dir_block, &ctx);
     8414+       if (!block_buf)
     8415+               ext2fs_free_mem(&ctx.buf);
     8416+       if (retval)
     8417+               return retval;
     8418+       return ctx.errcode;
     8419+}
     8420+
     8421+struct xlate {
     8422+       int (*func)(struct ext2_dir_entry *dirent,
     8423+                   int         offset,
     8424+                   int         blocksize,
     8425+                   char        *buf,
     8426+                   void        *priv_data);
     8427+       void *real_private;
     8428+};
     8429+
     8430+static int xlate_func(ext2_ino_t dir EXT2FS_ATTR((unused)),
     8431+                     int entry EXT2FS_ATTR((unused)),
     8432+                     struct ext2_dir_entry *dirent, int offset,
     8433+                     int blocksize, char *buf, void *priv_data)
     8434+{
     8435+       struct xlate *xl = (struct xlate *) priv_data;
     8436+
     8437+       return (*xl->func)(dirent, offset, blocksize, buf, xl->real_private);
     8438+}
     8439+
     8440+extern errcode_t ext2fs_dir_iterate(ext2_filsys fs,
     8441+                             ext2_ino_t dir,
     8442+                             int flags,
     8443+                             char *block_buf,
     8444+                             int (*func)(struct ext2_dir_entry *dirent,
     8445+                                         int   offset,
     8446+                                         int   blocksize,
     8447+                                         char  *buf,
     8448+                                         void  *priv_data),
     8449+                             void *priv_data)
     8450+{
     8451+       struct xlate xl;
     8452+       
     8453+       xl.real_private = priv_data;
     8454+       xl.func = func;
     8455+
     8456+       return ext2fs_dir_iterate2(fs, dir, flags, block_buf,
     8457+                                  xlate_func, &xl);
     8458+}
     8459+
     8460+
     8461+/*
     8462+ * Helper function which is private to this module.  Used by
     8463+ * ext2fs_dir_iterate() and ext2fs_dblist_dir_iterate()
     8464+ */
     8465+int ext2fs_process_dir_block(ext2_filsys fs,
     8466+                            blk_t      *blocknr,
     8467+                            e2_blkcnt_t blockcnt,
     8468+                            blk_t      ref_block EXT2FS_ATTR((unused)),
     8469+                            int        ref_offset EXT2FS_ATTR((unused)),
     8470+                            void       *priv_data)
     8471+{
     8472+       struct dir_context *ctx = (struct dir_context *) priv_data;
     8473+       unsigned int    offset = 0;
     8474+       unsigned int    next_real_entry = 0;
     8475+       int             ret = 0;
     8476+       int             changed = 0;
     8477+       int             do_abort = 0;
     8478+       int             entry, size;
     8479+       struct ext2_dir_entry *dirent;
     8480+
     8481+       if (blockcnt < 0)
     8482+               return 0;
     8483+
     8484+       entry = blockcnt ? DIRENT_OTHER_FILE : DIRENT_DOT_FILE;
     8485+       
     8486+       ctx->errcode = ext2fs_read_dir_block(fs, *blocknr, ctx->buf);
     8487+       if (ctx->errcode)
     8488+               return BLOCK_ABORT;
     8489+
     8490+       while (offset < fs->blocksize) {
     8491+               dirent = (struct ext2_dir_entry *) (ctx->buf + offset);
     8492+               if (((offset + dirent->rec_len) > fs->blocksize) ||
     8493+                   (dirent->rec_len < 8) ||
     8494+                   ((dirent->rec_len % 4) != 0) ||
     8495+                   (((dirent->name_len & 0xFF)+8) > dirent->rec_len)) {
     8496+                       ctx->errcode = EXT2_ET_DIR_CORRUPTED;
     8497+                       return BLOCK_ABORT;
     8498+               }
     8499+               if (!dirent->inode &&
     8500+                   !(ctx->flags & DIRENT_FLAG_INCLUDE_EMPTY))
     8501+                       goto next;
     8502+
     8503+               ret = (ctx->func)(ctx->dir,
     8504+                                 (next_real_entry > offset) ?
     8505+                                 DIRENT_DELETED_FILE : entry,
     8506+                                 dirent, offset,
     8507+                                 fs->blocksize, ctx->buf,
     8508+                                 ctx->priv_data);
     8509+               if (entry < DIRENT_OTHER_FILE)
     8510+                       entry++;
     8511+                       
     8512+               if (ret & DIRENT_CHANGED)
     8513+                       changed++;
     8514+               if (ret & DIRENT_ABORT) {
     8515+                       do_abort++;
     8516+                       break;
     8517+               }
     8518+next:         
     8519+               if (next_real_entry == offset)
     8520+                       next_real_entry += dirent->rec_len;
     8521+
     8522+               if (ctx->flags & DIRENT_FLAG_INCLUDE_REMOVED) {
     8523+                       size = ((dirent->name_len & 0xFF) + 11) & ~3;
     8524+
     8525+                       if (dirent->rec_len != size)  {
     8526+                               unsigned int final_offset;
     8527+
     8528+                               final_offset = offset + dirent->rec_len;
     8529+                               offset += size;
     8530+                               while (offset < final_offset &&
     8531+                                      !ext2fs_validate_entry(ctx->buf,
     8532+                                                             offset,
     8533+                                                             final_offset))
     8534+                                       offset += 4;
     8535+                               continue;
     8536+                       }
     8537+               }
     8538+               offset += dirent->rec_len;
     8539+       }
     8540+
     8541+       if (changed) {
     8542+               ctx->errcode = ext2fs_write_dir_block(fs, *blocknr, ctx->buf);
     8543+               if (ctx->errcode)
     8544+                       return BLOCK_ABORT;
     8545+       }
     8546+       if (do_abort)
     8547+               return BLOCK_ABORT;
     8548+       return 0;
     8549+}
     8550+
    85918551diff -Naur silo-1.4.13.orig/libext2fs/dosio.c silo-1.4.13/libext2fs/dosio.c
    8592 --- silo-1.4.13.orig/libext2fs/dosio.c  1969-12-31 16:00:00.000000000 -0800
    8593 +++ silo-1.4.13/libext2fs/dosio.c       2006-11-02 19:21:44.216761341 -0800
     8552--- silo-1.4.13.orig/libext2fs/dosio.c  1969-12-31 19:00:00.000000000 -0500
     8553+++ silo-1.4.13/libext2fs/dosio.c       2007-04-03 17:02:53.000000000 -0400
    85948554@@ -0,0 +1,456 @@
    85958555+/*
     
    90509010+}
    90519011diff -Naur silo-1.4.13.orig/libext2fs/dosio.h silo-1.4.13/libext2fs/dosio.h
    9052 --- silo-1.4.13.orig/libext2fs/dosio.h  1969-12-31 16:00:00.000000000 -0800
    9053 +++ silo-1.4.13/libext2fs/dosio.h       2006-11-02 19:21:44.220761208 -0800
     9012--- silo-1.4.13.orig/libext2fs/dosio.h  1969-12-31 19:00:00.000000000 -0500
     9013+++ silo-1.4.13/libext2fs/dosio.h       2007-04-03 17:02:53.000000000 -0400
    90549014@@ -0,0 +1,153 @@
    90559015+/*
     
    92079167+#endif /* __diskio_h */
    92089168diff -Naur silo-1.4.13.orig/libext2fs/dupfs.c silo-1.4.13/libext2fs/dupfs.c
    9209 --- silo-1.4.13.orig/libext2fs/dupfs.c  1969-12-31 16:00:00.000000000 -0800
    9210 +++ silo-1.4.13/libext2fs/dupfs.c       2006-11-02 19:21:44.220761208 -0800
     9169--- silo-1.4.13.orig/libext2fs/dupfs.c  1969-12-31 19:00:00.000000000 -0500
     9170+++ silo-1.4.13/libext2fs/dupfs.c       2007-04-03 17:02:53.000000000 -0400
    92119171@@ -0,0 +1,96 @@
    92129172+/*
     
    93079267+
    93089268diff -Naur silo-1.4.13.orig/libext2fs/e2image.h silo-1.4.13/libext2fs/e2image.h
    9309 --- silo-1.4.13.orig/libext2fs/e2image.h        1969-12-31 16:00:00.000000000 -0800
    9310 +++ silo-1.4.13/libext2fs/e2image.h     2006-11-02 19:21:44.220761208 -0800
     9269--- silo-1.4.13.orig/libext2fs/e2image.h        1969-12-31 19:00:00.000000000 -0500
     9270+++ silo-1.4.13/libext2fs/e2image.h     2007-04-03 17:02:53.000000000 -0400
    93119271@@ -0,0 +1,51 @@
    93129272+/*
     
    93629322+       
    93639323diff -Naur silo-1.4.13.orig/libext2fs/expanddir.c silo-1.4.13/libext2fs/expanddir.c
    9364 --- silo-1.4.13.orig/libext2fs/expanddir.c      1969-12-31 16:00:00.000000000 -0800
    9365 +++ silo-1.4.13/libext2fs/expanddir.c   2006-11-02 19:21:44.220761208 -0800
     9324--- silo-1.4.13.orig/libext2fs/expanddir.c      1969-12-31 19:00:00.000000000 -0500
     9325+++ silo-1.4.13/libext2fs/expanddir.c   2007-04-03 17:02:53.000000000 -0400
    93669326@@ -0,0 +1,126 @@
    93679327+/*
     
    94929452+}
    94939453diff -Naur silo-1.4.13.orig/libext2fs/ext2_err.c silo-1.4.13/libext2fs/ext2_err.c
    9494 --- silo-1.4.13.orig/libext2fs/ext2_err.c       1969-12-31 16:00:00.000000000 -0800
    9495 +++ silo-1.4.13/libext2fs/ext2_err.c    2006-11-02 19:21:44.220761208 -0800
     9454--- silo-1.4.13.orig/libext2fs/ext2_err.c       1969-12-31 19:00:00.000000000 -0500
     9455+++ silo-1.4.13/libext2fs/ext2_err.c    2007-04-03 17:02:53.000000000 -0400
    94969456@@ -0,0 +1,148 @@
    94979457+/*
     
    96449604+}
    96459605diff -Naur silo-1.4.13.orig/libext2fs/ext2_ext_attr.h silo-1.4.13/libext2fs/ext2_ext_attr.h
    9646 --- silo-1.4.13.orig/libext2fs/ext2_ext_attr.h  1969-12-31 16:00:00.000000000 -0800
    9647 +++ silo-1.4.13/libext2fs/ext2_ext_attr.h       2006-11-02 19:21:44.220761208 -0800
     9606--- silo-1.4.13.orig/libext2fs/ext2_ext_attr.h  1969-12-31 19:00:00.000000000 -0500
     9607+++ silo-1.4.13/libext2fs/ext2_ext_attr.h       2007-04-03 17:02:53.000000000 -0400
    96489608@@ -0,0 +1,69 @@
    96499609+/*
     
    97179677+
    97189678diff -Naur silo-1.4.13.orig/libext2fs/ext2_fs.h silo-1.4.13/libext2fs/ext2_fs.h
    9719 --- silo-1.4.13.orig/libext2fs/ext2_fs.h        1969-12-31 16:00:00.000000000 -0800
    9720 +++ silo-1.4.13/libext2fs/ext2_fs.h     2006-11-02 19:21:44.220761208 -0800
     9679--- silo-1.4.13.orig/libext2fs/ext2_fs.h        1969-12-31 19:00:00.000000000 -0500
     9680+++ silo-1.4.13/libext2fs/ext2_fs.h     2007-04-03 17:02:53.000000000 -0400
    97219681@@ -0,0 +1,644 @@
    97229682+/*
     
    1036410324+
    1036510325+#endif /* _LINUX_EXT2_FS_H */
    10366 diff -Naur silo-1.4.13.orig/libext2fs/ext2_io.h silo-1.4.13/libext2fs/ext2_io.h
    10367 --- silo-1.4.13.orig/libext2fs/ext2_io.h        1969-12-31 16:00:00.000000000 -0800
    10368 +++ silo-1.4.13/libext2fs/ext2_io.h     2006-11-02 19:21:44.220761208 -0800
    10369 @@ -0,0 +1,108 @@
    10370 +/*
    10371 + * io.h --- the I/O manager abstraction
    10372 + *
    10373 + * Copyright (C) 1993, 1994, 1995, 1996 Theodore Ts'o.
    10374 + *
    10375 + * %Begin-Header%
    10376 + * This file may be redistributed under the terms of the GNU Public
    10377 + * License.
    10378 + * %End-Header%
    10379 + */
    10380 +
    10381 +#ifndef _EXT2FS_EXT2_IO_H
    10382 +#define _EXT2FS_EXT2_IO_H
    10383 +
    10384 +/*
    10385 + * ext2_loff_t is defined here since unix_io.c needs it.
    10386 + */
    10387 +#if defined(__GNUC__) || defined(HAS_LONG_LONG)
    10388 +typedef long long      ext2_loff_t;
    10389 +#else
    10390 +typedef long           ext2_loff_t;
    10391 +#endif
    10392 +
    10393 +/* llseek.c */
    10394 +ext2_loff_t ext2fs_llseek (int, ext2_loff_t, int);
    10395 +
    10396 +typedef struct struct_io_manager *io_manager;
    10397 +typedef struct struct_io_channel *io_channel;
    10398 +
    10399 +#define CHANNEL_FLAGS_WRITETHROUGH     0x01
    10400 +
    10401 +struct struct_io_channel {
    10402 +       errcode_t       magic;
    10403 +       io_manager      manager;
    10404 +       char            *name;
    10405 +       int             block_size;
    10406 +       errcode_t       (*read_error)(io_channel channel,
    10407 +                                     unsigned long block,
    10408 +                                     int count,
    10409 +                                     void *data,
    10410 +                                     size_t size,
    10411 +                                     int actual_bytes_read,
    10412 +                                     errcode_t error);
    10413 +       errcode_t       (*write_error)(io_channel channel,
    10414 +                                      unsigned long block,
    10415 +                                      int count,
    10416 +                                      const void *data,
    10417 +                                      size_t size,
    10418 +                                      int actual_bytes_written,
    10419 +                                      errcode_t error);
    10420 +       int             refcount;
    10421 +       int             flags;
    10422 +       int             reserved[14];
    10423 +       void            *private_data;
    10424 +       void            *app_data;
    10425 +};
    10426 +
    10427 +struct struct_io_manager {
    10428 +       errcode_t magic;
    10429 +       const char *name;
    10430 +       errcode_t (*open)(const char *name, int flags, io_channel *channel);
    10431 +       errcode_t (*close)(io_channel channel);
    10432 +       errcode_t (*set_blksize)(io_channel channel, int blksize);
    10433 +       errcode_t (*read_blk)(io_channel channel, unsigned long block,
    10434 +                             int count, void *data);
    10435 +       errcode_t (*write_blk)(io_channel channel, unsigned long block,
    10436 +                              int count, const void *data);
    10437 +       errcode_t (*flush)(io_channel channel);
    10438 +       errcode_t (*write_byte)(io_channel channel, unsigned long offset,
    10439 +                               int count, const void *data);
    10440 +       errcode_t (*set_option)(io_channel channel, const char *option,
    10441 +                               const char *arg);
    10442 +       int             reserved[14];
    10443 +};
    10444 +
    10445 +#define IO_FLAG_RW     1
    10446 +
    10447 +/*
    10448 + * Convenience functions....
    10449 + */
    10450 +#define io_channel_close(c)            ((c)->manager->close((c)))
    10451 +#define io_channel_set_blksize(c,s)    ((c)->manager->set_blksize((c),s))
    10452 +#define io_channel_read_blk(c,b,n,d)   ((c)->manager->read_blk((c),b,n,d))
    10453 +#define io_channel_write_blk(c,b,n,d)  ((c)->manager->write_blk((c),b,n,d))
    10454 +#define io_channel_flush(c)            ((c)->manager->flush((c)))
    10455 +#define io_channel_bumpcount(c)                ((c)->refcount++)
    10456 +       
    10457 +/* io_manager.c */
    10458 +extern errcode_t io_channel_set_options(io_channel channel,
    10459 +                                       const char *options);
    10460 +extern errcode_t io_channel_write_byte(io_channel channel,
    10461 +                                      unsigned long offset,
    10462 +                                      int count, const void *data);
    10463 +
    10464 +/* unix_io.c */
    10465 +extern io_manager unix_io_manager;
    10466 +
    10467 +/* test_io.c */
    10468 +extern io_manager test_io_manager, test_io_backing_manager;
    10469 +extern void (*test_io_cb_read_blk)
    10470 +       (unsigned long block, int count, errcode_t err);
    10471 +extern void (*test_io_cb_write_blk)
    10472 +       (unsigned long block, int count, errcode_t err);
    10473 +extern void (*test_io_cb_set_blksize)
    10474 +       (int blksize, errcode_t err);
    10475 +
    10476 +#endif /* _EXT2FS_EXT2_IO_H */
    10477 +       
    1047810326diff -Naur silo-1.4.13.orig/libext2fs/ext2fs.h silo-1.4.13/libext2fs/ext2fs.h
    10479 --- silo-1.4.13.orig/libext2fs/ext2fs.h 1969-12-31 16:00:00.000000000 -0800
    10480 +++ silo-1.4.13/libext2fs/ext2fs.h      2006-11-02 19:21:44.220761208 -0800
     10327--- silo-1.4.13.orig/libext2fs/ext2fs.h 1969-12-31 19:00:00.000000000 -0500
     10328+++ silo-1.4.13/libext2fs/ext2fs.h      2007-04-03 17:02:53.000000000 -0400
    1048110329@@ -0,0 +1,1140 @@
    1048210330+/*
     
    1162111469+#endif /* _EXT2FS_EXT2FS_H */
    1162211470diff -Naur silo-1.4.13.orig/libext2fs/ext2fsP.h silo-1.4.13/libext2fs/ext2fsP.h
    11623 --- silo-1.4.13.orig/libext2fs/ext2fsP.h        1969-12-31 16:00:00.000000000 -0800
    11624 +++ silo-1.4.13/libext2fs/ext2fsP.h     2006-11-02 19:21:44.220761208 -0800
     11471--- silo-1.4.13.orig/libext2fs/ext2fsP.h        1969-12-31 19:00:00.000000000 -0500
     11472+++ silo-1.4.13/libext2fs/ext2fsP.h     2007-04-03 17:02:53.000000000 -0400
    1162511473@@ -0,0 +1,88 @@
    1162611474+/*
     
    1171211560+
    1171311561+
     11562diff -Naur silo-1.4.13.orig/libext2fs/ext2_io.h silo-1.4.13/libext2fs/ext2_io.h
     11563--- silo-1.4.13.orig/libext2fs/ext2_io.h        1969-12-31 19:00:00.000000000 -0500
     11564+++ silo-1.4.13/libext2fs/ext2_io.h     2007-04-03 17:02:53.000000000 -0400
     11565@@ -0,0 +1,108 @@
     11566+/*
     11567+ * io.h --- the I/O manager abstraction
     11568+ *
     11569+ * Copyright (C) 1993, 1994, 1995, 1996 Theodore Ts'o.
     11570+ *
     11571+ * %Begin-Header%
     11572+ * This file may be redistributed under the terms of the GNU Public
     11573+ * License.
     11574+ * %End-Header%
     11575+ */
     11576+
     11577+#ifndef _EXT2FS_EXT2_IO_H
     11578+#define _EXT2FS_EXT2_IO_H
     11579+
     11580+/*
     11581+ * ext2_loff_t is defined here since unix_io.c needs it.
     11582+ */
     11583+#if defined(__GNUC__) || defined(HAS_LONG_LONG)
     11584+typedef long long      ext2_loff_t;
     11585+#else
     11586+typedef long           ext2_loff_t;
     11587+#endif
     11588+
     11589+/* llseek.c */
     11590+ext2_loff_t ext2fs_llseek (int, ext2_loff_t, int);
     11591+
     11592+typedef struct struct_io_manager *io_manager;
     11593+typedef struct struct_io_channel *io_channel;
     11594+
     11595+#define CHANNEL_FLAGS_WRITETHROUGH     0x01
     11596+
     11597+struct struct_io_channel {
     11598+       errcode_t       magic;
     11599+       io_manager      manager;
     11600+       char            *name;
     11601+       int             block_size;
     11602+       errcode_t       (*read_error)(io_channel channel,
     11603+                                     unsigned long block,
     11604+                                     int count,
     11605+                                     void *data,
     11606+                                     size_t size,
     11607+                                     int actual_bytes_read,
     11608+                                     errcode_t error);
     11609+       errcode_t       (*write_error)(io_channel channel,
     11610+                                      unsigned long block,
     11611+                                      int count,
     11612+                                      const void *data,
     11613+                                      size_t size,
     11614+                                      int actual_bytes_written,
     11615+                                      errcode_t error);
     11616+       int             refcount;
     11617+       int             flags;
     11618+       int             reserved[14];
     11619+       void            *private_data;
     11620+       void            *app_data;
     11621+};
     11622+
     11623+struct struct_io_manager {
     11624+       errcode_t magic;
     11625+       const char *name;
     11626+       errcode_t (*open)(const char *name, int flags, io_channel *channel);
     11627+       errcode_t (*close)(io_channel channel);
     11628+       errcode_t (*set_blksize)(io_channel channel, int blksize);
     11629+       errcode_t (*read_blk)(io_channel channel, unsigned long block,
     11630+                             int count, void *data);
     11631+       errcode_t (*write_blk)(io_channel channel, unsigned long block,
     11632+                              int count, const void *data);
     11633+       errcode_t (*flush)(io_channel channel);
     11634+       errcode_t (*write_byte)(io_channel channel, unsigned long offset,
     11635+                               int count, const void *data);
     11636+       errcode_t (*set_option)(io_channel channel, const char *option,
     11637+                               const char *arg);
     11638+       int             reserved[14];
     11639+};
     11640+
     11641+#define IO_FLAG_RW     1
     11642+
     11643+/*
     11644+ * Convenience functions....
     11645+ */
     11646+#define io_channel_close(c)            ((c)->manager->close((c)))
     11647+#define io_channel_set_blksize(c,s)    ((c)->manager->set_blksize((c),s))
     11648+#define io_channel_read_blk(c,b,n,d)   ((c)->manager->read_blk((c),b,n,d))
     11649+#define io_channel_write_blk(c,b,n,d)  ((c)->manager->write_blk((c),b,n,d))
     11650+#define io_channel_flush(c)            ((c)->manager->flush((c)))
     11651+#define io_channel_bumpcount(c)                ((c)->refcount++)
     11652+       
     11653+/* io_manager.c */
     11654+extern errcode_t io_channel_set_options(io_channel channel,
     11655+                                       const char *options);
     11656+extern errcode_t io_channel_write_byte(io_channel channel,
     11657+                                      unsigned long offset,
     11658+                                      int count, const void *data);
     11659+
     11660+/* unix_io.c */
     11661+extern io_manager unix_io_manager;
     11662+
     11663+/* test_io.c */
     11664+extern io_manager test_io_manager, test_io_backing_manager;
     11665+extern void (*test_io_cb_read_blk)
     11666+       (unsigned long block, int count, errcode_t err);
     11667+extern void (*test_io_cb_write_blk)
     11668+       (unsigned long block, int count, errcode_t err);
     11669+extern void (*test_io_cb_set_blksize)
     11670+       (int blksize, errcode_t err);
     11671+
     11672+#endif /* _EXT2FS_EXT2_IO_H */
     11673+       
    1171411674diff -Naur silo-1.4.13.orig/libext2fs/ext_attr.c silo-1.4.13/libext2fs/ext_attr.c
    11715 --- silo-1.4.13.orig/libext2fs/ext_attr.c       1969-12-31 16:00:00.000000000 -0800
    11716 +++ silo-1.4.13/libext2fs/ext_attr.c    2006-11-02 19:21:44.220761208 -0800
     11675--- silo-1.4.13.orig/libext2fs/ext_attr.c       1969-12-31 19:00:00.000000000 -0500
     11676+++ silo-1.4.13/libext2fs/ext_attr.c    2007-04-03 17:02:53.000000000 -0400
    1171711677@@ -0,0 +1,105 @@
    1171811678+/*
     
    1182211782+}
    1182311783diff -Naur silo-1.4.13.orig/libext2fs/fileio.c silo-1.4.13/libext2fs/fileio.c
    11824 --- silo-1.4.13.orig/libext2fs/fileio.c 1969-12-31 16:00:00.000000000 -0800
    11825 +++ silo-1.4.13/libext2fs/fileio.c      2006-11-02 19:21:44.224761074 -0800
     11784--- silo-1.4.13.orig/libext2fs/fileio.c 1969-12-31 19:00:00.000000000 -0500
     11785+++ silo-1.4.13/libext2fs/fileio.c      2007-04-03 17:02:53.000000000 -0400
    1182611786@@ -0,0 +1,378 @@
    1182711787+/*
     
    1220412164+}
    1220512165diff -Naur silo-1.4.13.orig/libext2fs/finddev.c silo-1.4.13/libext2fs/finddev.c
    12206 --- silo-1.4.13.orig/libext2fs/finddev.c        1969-12-31 16:00:00.000000000 -0800
    12207 +++ silo-1.4.13/libext2fs/finddev.c     2006-11-02 19:21:44.224761074 -0800
     12166--- silo-1.4.13.orig/libext2fs/finddev.c        1969-12-31 19:00:00.000000000 -0500
     12167+++ silo-1.4.13/libext2fs/finddev.c     2007-04-03 17:02:53.000000000 -0400
    1220812168@@ -0,0 +1,208 @@
    1220912169+/*
     
    1241612376+#endif
    1241712377diff -Naur silo-1.4.13.orig/libext2fs/flushb.c silo-1.4.13/libext2fs/flushb.c
    12418 --- silo-1.4.13.orig/libext2fs/flushb.c 1969-12-31 16:00:00.000000000 -0800
    12419 +++ silo-1.4.13/libext2fs/flushb.c      2006-11-02 19:21:44.224761074 -0800
     12378--- silo-1.4.13.orig/libext2fs/flushb.c 1969-12-31 19:00:00.000000000 -0500
     12379+++ silo-1.4.13/libext2fs/flushb.c      2007-04-03 17:02:53.000000000 -0400
    1242012380@@ -0,0 +1,82 @@
    1242112381+/*
     
    1250212462+}
    1250312463diff -Naur silo-1.4.13.orig/libext2fs/freefs.c silo-1.4.13/libext2fs/freefs.c
    12504 --- silo-1.4.13.orig/libext2fs/freefs.c 1969-12-31 16:00:00.000000000 -0800
    12505 +++ silo-1.4.13/libext2fs/freefs.c      2006-11-02 19:21:44.224761074 -0800
     12464--- silo-1.4.13.orig/libext2fs/freefs.c 1969-12-31 19:00:00.000000000 -0500
     12465+++ silo-1.4.13/libext2fs/freefs.c      2007-04-03 17:02:53.000000000 -0400
    1250612466@@ -0,0 +1,147 @@
    1250712467+/*
     
    1265312613+
    1265412614diff -Naur silo-1.4.13.orig/libext2fs/gen_bitmap.c silo-1.4.13/libext2fs/gen_bitmap.c
    12655 --- silo-1.4.13.orig/libext2fs/gen_bitmap.c     1969-12-31 16:00:00.000000000 -0800
    12656 +++ silo-1.4.13/libext2fs/gen_bitmap.c  2006-11-02 19:21:44.224761074 -0800
     12615--- silo-1.4.13.orig/libext2fs/gen_bitmap.c     1969-12-31 19:00:00.000000000 -0500
     12616+++ silo-1.4.13/libext2fs/gen_bitmap.c  2007-04-03 17:02:53.000000000 -0400
    1265712617@@ -0,0 +1,48 @@
    1265812618+/*
     
    1270512665+}
    1270612666diff -Naur silo-1.4.13.orig/libext2fs/get_pathname.c silo-1.4.13/libext2fs/get_pathname.c
    12707 --- silo-1.4.13.orig/libext2fs/get_pathname.c   1969-12-31 16:00:00.000000000 -0800
    12708 +++ silo-1.4.13/libext2fs/get_pathname.c        2006-11-02 19:21:44.224761074 -0800
     12667--- silo-1.4.13.orig/libext2fs/get_pathname.c   1969-12-31 19:00:00.000000000 -0500
     12668+++ silo-1.4.13/libext2fs/get_pathname.c        2007-04-03 17:02:53.000000000 -0400
    1270912669@@ -0,0 +1,157 @@
    1271012670+/*
     
    1286612826+}
    1286712827diff -Naur silo-1.4.13.orig/libext2fs/getsectsize.c silo-1.4.13/libext2fs/getsectsize.c
    12868 --- silo-1.4.13.orig/libext2fs/getsectsize.c    1969-12-31 16:00:00.000000000 -0800
    12869 +++ silo-1.4.13/libext2fs/getsectsize.c 2006-11-02 19:21:44.224761074 -0800
     12828--- silo-1.4.13.orig/libext2fs/getsectsize.c    1969-12-31 19:00:00.000000000 -0500
     12829+++ silo-1.4.13/libext2fs/getsectsize.c 2007-04-03 17:02:53.000000000 -0400
    1287012830@@ -0,0 +1,60 @@
    1287112831+/*
     
    1293012890+}
    1293112891diff -Naur silo-1.4.13.orig/libext2fs/getsize.c silo-1.4.13/libext2fs/getsize.c
    12932 --- silo-1.4.13.orig/libext2fs/getsize.c        1969-12-31 16:00:00.000000000 -0800
    12933 +++ silo-1.4.13/libext2fs/getsize.c     2006-11-02 19:21:44.224761074 -0800
     12892--- silo-1.4.13.orig/libext2fs/getsize.c        1969-12-31 19:00:00.000000000 -0500
     12893+++ silo-1.4.13/libext2fs/getsize.c     2007-04-03 17:02:53.000000000 -0400
    1293412894@@ -0,0 +1,293 @@
    1293512895+/*
     
    1322713187+#endif
    1322813188diff -Naur silo-1.4.13.orig/libext2fs/icount.c silo-1.4.13/libext2fs/icount.c
    13229 --- silo-1.4.13.orig/libext2fs/icount.c 1969-12-31 16:00:00.000000000 -0800
    13230 +++ silo-1.4.13/libext2fs/icount.c      2006-11-02 19:21:44.224761074 -0800
     13189--- silo-1.4.13.orig/libext2fs/icount.c 1969-12-31 19:00:00.000000000 -0500
     13190+++ silo-1.4.13/libext2fs/icount.c      2007-04-03 17:02:53.000000000 -0400
    1323113191@@ -0,0 +1,483 @@
    1323213192+/*
     
    1371413674+}
    1371513675diff -Naur silo-1.4.13.orig/libext2fs/imager.c silo-1.4.13/libext2fs/imager.c
    13716 --- silo-1.4.13.orig/libext2fs/imager.c 1969-12-31 16:00:00.000000000 -0800
    13717 +++ silo-1.4.13/libext2fs/imager.c      2006-11-02 19:21:44.224761074 -0800
     13676--- silo-1.4.13.orig/libext2fs/imager.c 1969-12-31 19:00:00.000000000 -0500
     13677+++ silo-1.4.13/libext2fs/imager.c      2007-04-03 17:02:53.000000000 -0400
    1371813678@@ -0,0 +1,387 @@
    1371913679+/*
     
    1410514065+}
    1410614066diff -Naur silo-1.4.13.orig/libext2fs/ind_block.c silo-1.4.13/libext2fs/ind_block.c
    14107 --- silo-1.4.13.orig/libext2fs/ind_block.c      1969-12-31 16:00:00.000000000 -0800
    14108 +++ silo-1.4.13/libext2fs/ind_block.c   2006-11-02 19:21:44.224761074 -0800
     14067--- silo-1.4.13.orig/libext2fs/ind_block.c      1969-12-31 19:00:00.000000000 -0500
     14068+++ silo-1.4.13/libext2fs/ind_block.c   2007-04-03 17:02:53.000000000 -0400
    1410914069@@ -0,0 +1,66 @@
    1411014070+/*
     
    1417514135+
    1417614136diff -Naur silo-1.4.13.orig/libext2fs/initialize.c silo-1.4.13/libext2fs/initialize.c
    14177 --- silo-1.4.13.orig/libext2fs/initialize.c     1969-12-31 16:00:00.000000000 -0800
    14178 +++ silo-1.4.13/libext2fs/initialize.c  2006-11-02 19:21:44.224761074 -0800
     14137--- silo-1.4.13.orig/libext2fs/initialize.c     1969-12-31 19:00:00.000000000 -0500
     14138+++ silo-1.4.13/libext2fs/initialize.c  2007-04-03 17:02:53.000000000 -0400
    1417914139@@ -0,0 +1,387 @@
    1418014140+/*
     
    1456614526+}
    1456714527diff -Naur silo-1.4.13.orig/libext2fs/inline.c silo-1.4.13/libext2fs/inline.c
    14568 --- silo-1.4.13.orig/libext2fs/inline.c 1969-12-31 16:00:00.000000000 -0800
    14569 +++ silo-1.4.13/libext2fs/inline.c      2006-11-02 19:21:44.224761074 -0800
     14528--- silo-1.4.13.orig/libext2fs/inline.c 1969-12-31 19:00:00.000000000 -0500
     14529+++ silo-1.4.13/libext2fs/inline.c      2007-04-03 17:02:53.000000000 -0400
    1457014530@@ -0,0 +1,32 @@
    1457114531+/*
     
    1460214562+
    1460314563diff -Naur silo-1.4.13.orig/libext2fs/inode.c silo-1.4.13/libext2fs/inode.c
    14604 --- silo-1.4.13.orig/libext2fs/inode.c  1969-12-31 16:00:00.000000000 -0800
    14605 +++ silo-1.4.13/libext2fs/inode.c       2006-11-02 19:21:44.228760941 -0800
     14564--- silo-1.4.13.orig/libext2fs/inode.c  1969-12-31 19:00:00.000000000 -0500
     14565+++ silo-1.4.13/libext2fs/inode.c       2007-04-03 17:02:53.000000000 -0400
    1460614566@@ -0,0 +1,794 @@
    1460714567+/*
     
    1540015360+
    1540115361diff -Naur silo-1.4.13.orig/libext2fs/inode_io.c silo-1.4.13/libext2fs/inode_io.c
    15402 --- silo-1.4.13.orig/libext2fs/inode_io.c       1969-12-31 16:00:00.000000000 -0800
    15403 +++ silo-1.4.13/libext2fs/inode_io.c    2006-11-02 19:21:44.228760941 -0800
     15362--- silo-1.4.13.orig/libext2fs/inode_io.c       1969-12-31 19:00:00.000000000 -0500
     15363+++ silo-1.4.13/libext2fs/inode_io.c    2007-04-03 17:02:53.000000000 -0400
    1540415364@@ -0,0 +1,270 @@
    1540515365+/*
     
    1567415634+
    1567515635diff -Naur silo-1.4.13.orig/libext2fs/io_manager.c silo-1.4.13/libext2fs/io_manager.c
    15676 --- silo-1.4.13.orig/libext2fs/io_manager.c     1969-12-31 16:00:00.000000000 -0800
    15677 +++ silo-1.4.13/libext2fs/io_manager.c  2006-11-02 19:21:44.228760941 -0800
     15636--- silo-1.4.13.orig/libext2fs/io_manager.c     1969-12-31 19:00:00.000000000 -0500
     15637+++ silo-1.4.13/libext2fs/io_manager.c  2007-04-03 17:02:53.000000000 -0400
    1567815638@@ -0,0 +1,69 @@
    1567915639+/*
     
    1574715707+}
    1574815708diff -Naur silo-1.4.13.orig/libext2fs/irel.h silo-1.4.13/libext2fs/irel.h
    15749 --- silo-1.4.13.orig/libext2fs/irel.h   1969-12-31 16:00:00.000000000 -0800
    15750 +++ silo-1.4.13/libext2fs/irel.h        2006-11-02 19:21:44.228760941 -0800
     15709--- silo-1.4.13.orig/libext2fs/irel.h   1969-12-31 19:00:00.000000000 -0500
     15710+++ silo-1.4.13/libext2fs/irel.h        2007-04-03 17:02:53.000000000 -0400
    1575115711@@ -0,0 +1,114 @@
    1575215712+/*
     
    1586515825+#define ext2fs_irel_free(irel) ((irel)->free((irel)))
    1586615826diff -Naur silo-1.4.13.orig/libext2fs/irel_ma.c silo-1.4.13/libext2fs/irel_ma.c
    15867 --- silo-1.4.13.orig/libext2fs/irel_ma.c        1969-12-31 16:00:00.000000000 -0800
    15868 +++ silo-1.4.13/libext2fs/irel_ma.c     2006-11-02 19:21:44.228760941 -0800
     15827--- silo-1.4.13.orig/libext2fs/irel_ma.c        1969-12-31 19:00:00.000000000 -0500
     15828+++ silo-1.4.13/libext2fs/irel_ma.c     2007-04-03 17:02:53.000000000 -0400
    1586915829@@ -0,0 +1,372 @@
    1587015830+/*
     
    1624116201+}
    1624216202diff -Naur silo-1.4.13.orig/libext2fs/ismounted.c silo-1.4.13/libext2fs/ismounted.c
    16243 --- silo-1.4.13.orig/libext2fs/ismounted.c      1969-12-31 16:00:00.000000000 -0800
    16244 +++ silo-1.4.13/libext2fs/ismounted.c   2006-11-02 19:21:44.228760941 -0800
     16203--- silo-1.4.13.orig/libext2fs/ismounted.c      1969-12-31 19:00:00.000000000 -0500
     16204+++ silo-1.4.13/libext2fs/ismounted.c   2007-04-03 17:02:53.000000000 -0400
    1624516205@@ -0,0 +1,377 @@
    1624616206+/*
     
    1662216582+#endif /* DEBUG */
    1662316583diff -Naur silo-1.4.13.orig/libext2fs/jfs_compat.h silo-1.4.13/libext2fs/jfs_compat.h
    16624 --- silo-1.4.13.orig/libext2fs/jfs_compat.h     1969-12-31 16:00:00.000000000 -0800
    16625 +++ silo-1.4.13/libext2fs/jfs_compat.h  2006-11-02 19:21:44.228760941 -0800
     16584--- silo-1.4.13.orig/libext2fs/jfs_compat.h     1969-12-31 19:00:00.000000000 -0500
     16585+++ silo-1.4.13/libext2fs/jfs_compat.h  2007-04-03 17:02:53.000000000 -0400
    1662616586@@ -0,0 +1,67 @@
    1662716587+
     
    1669316653+#endif /* _JFS_COMPAT_H */
    1669416654diff -Naur silo-1.4.13.orig/libext2fs/jfs_dat.h silo-1.4.13/libext2fs/jfs_dat.h
    16695 --- silo-1.4.13.orig/libext2fs/jfs_dat.h        1969-12-31 16:00:00.000000000 -0800
    16696 +++ silo-1.4.13/libext2fs/jfs_dat.h     2006-11-02 19:21:44.228760941 -0800
     16655--- silo-1.4.13.orig/libext2fs/jfs_dat.h        1969-12-31 19:00:00.000000000 -0500
     16656+++ silo-1.4.13/libext2fs/jfs_dat.h     2007-04-03 17:02:53.000000000 -0400
    1669716657@@ -0,0 +1,64 @@
    1669816658+/*
     
    1676116721+
    1676216722diff -Naur silo-1.4.13.orig/libext2fs/jfs_user.h silo-1.4.13/libext2fs/jfs_user.h
    16763 --- silo-1.4.13.orig/libext2fs/jfs_user.h       1969-12-31 16:00:00.000000000 -0800
    16764 +++ silo-1.4.13/libext2fs/jfs_user.h    2006-11-02 19:21:44.228760941 -0800
     16723--- silo-1.4.13.orig/libext2fs/jfs_user.h       1969-12-31 19:00:00.000000000 -0500
     16724+++ silo-1.4.13/libext2fs/jfs_user.h    2007-04-03 17:02:53.000000000 -0400
    1676516725@@ -0,0 +1,8 @@
    1676616726+#ifndef _JFS_USER_H
     
    1677316733+#endif /* _JFS_USER_H */
    1677416734diff -Naur silo-1.4.13.orig/libext2fs/kernel-jbd.h silo-1.4.13/libext2fs/kernel-jbd.h
    16775 --- silo-1.4.13.orig/libext2fs/kernel-jbd.h     1969-12-31 16:00:00.000000000 -0800
    16776 +++ silo-1.4.13/libext2fs/kernel-jbd.h  2006-11-02 19:21:44.228760941 -0800
     16735--- silo-1.4.13.orig/libext2fs/kernel-jbd.h     1969-12-31 19:00:00.000000000 -0500
     16736+++ silo-1.4.13/libext2fs/kernel-jbd.h  2007-04-03 17:02:53.000000000 -0400
    1677716737@@ -0,0 +1,910 @@
    1677816738+/*
     
    1768717647+#endif /* _LINUX_JBD_H */
    1768817648diff -Naur silo-1.4.13.orig/libext2fs/kernel-list.h silo-1.4.13/libext2fs/kernel-list.h
    17689 --- silo-1.4.13.orig/libext2fs/kernel-list.h    1969-12-31 16:00:00.000000000 -0800
    17690 +++ silo-1.4.13/libext2fs/kernel-list.h 2006-11-02 19:21:44.232760807 -0800
     17649--- silo-1.4.13.orig/libext2fs/kernel-list.h    1969-12-31 19:00:00.000000000 -0500
     17650+++ silo-1.4.13/libext2fs/kernel-list.h 2007-04-03 17:02:53.000000000 -0400
    1769117651@@ -0,0 +1,112 @@
    1769217652+#ifndef _LINUX_LIST_H
     
    1780317763+#endif
    1780417764diff -Naur silo-1.4.13.orig/libext2fs/link.c silo-1.4.13/libext2fs/link.c
    17805 --- silo-1.4.13.orig/libext2fs/link.c   1969-12-31 16:00:00.000000000 -0800
    17806 +++ silo-1.4.13/libext2fs/link.c        2006-11-02 19:21:44.232760807 -0800
     17765--- silo-1.4.13.orig/libext2fs/link.c   1969-12-31 19:00:00.000000000 -0500
     17766+++ silo-1.4.13/libext2fs/link.c        2007-04-03 17:02:53.000000000 -0400
    1780717767@@ -0,0 +1,134 @@
    1780817768+/*
     
    1794117901+}
    1794217902diff -Naur silo-1.4.13.orig/libext2fs/llseek.c silo-1.4.13/libext2fs/llseek.c
    17943 --- silo-1.4.13.orig/libext2fs/llseek.c 1969-12-31 16:00:00.000000000 -0800
    17944 +++ silo-1.4.13/libext2fs/llseek.c      2006-11-02 19:21:44.232760807 -0800
     17903--- silo-1.4.13.orig/libext2fs/llseek.c 1969-12-31 19:00:00.000000000 -0500
     17904+++ silo-1.4.13/libext2fs/llseek.c      2007-04-03 17:02:53.000000000 -0400
    1794517905@@ -0,0 +1,138 @@
    1794617906+/*
     
    1808318043+
    1808418044diff -Naur silo-1.4.13.orig/libext2fs/lookup.c silo-1.4.13/libext2fs/lookup.c
    18085 --- silo-1.4.13.orig/libext2fs/lookup.c 1969-12-31 16:00:00.000000000 -0800
    18086 +++ silo-1.4.13/libext2fs/lookup.c      2006-11-02 19:21:44.232760807 -0800
     18045--- silo-1.4.13.orig/libext2fs/lookup.c 1969-12-31 19:00:00.000000000 -0500
     18046+++ silo-1.4.13/libext2fs/lookup.c      2007-04-03 17:02:53.000000000 -0400
    1808718047@@ -0,0 +1,69 @@
    1808818048+/*
     
    1815518115+
    1815618116+
     18117diff -Naur silo-1.4.13.orig/libext2fs/Makefile silo-1.4.13/libext2fs/Makefile
     18118--- silo-1.4.13.orig/libext2fs/Makefile 1969-12-31 19:00:00.000000000 -0500
     18119+++ silo-1.4.13/libext2fs/Makefile      2007-04-03 17:02:53.000000000 -0400
     18120@@ -0,0 +1,21 @@
     18121+
     18122+include ../Rules.make
     18123+
     18124+DEFS = -DLOCALEDIR=\"$(localedir)\" -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DENABLE_HTREE=1 -DENABLE_SWAPFS=1 -DPACKAGE=\"e2fsprogs\" -DVERSION=\"0.14.1\" -DHAVE_LONG_LONG=1 -DHAVE_LONG_DOUBLE=1 -DHAVE_WCHAR_T=1 -DHAVE_WINT_T=1 -DHAVE_INTTYPES_H_WITH_UINTMAX=1 -DHAVE_STDINT_H_WITH_UINTMAX=1 -DHAVE_INTMAX_T=1 -DHAVE_POSIX_PRINTF=1 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DINTDIV0_RAISES_SIGFPE=1 -DHAVE_UNSIGNED_LONG_LONG=1 -DHAVE_UINTMAX_T=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDINT_H=1 -DHAVE_ARGZ_H=1 -DHAVE_LIMITS_H=1 -DHAVE_LOCALE_H=1 -DHAVE_NL_TYPES_H=1 -DHAVE_MALLOC_H=1 -DHAVE_STDDEF_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_ASPRINTF=1 -DHAVE_FWPRINTF=1 -DHAVE_GETCWD=1 -DHAVE_GETEGID=1 -DHAVE_GETEUID=1 -DHAVE_GETGID=1 -DHAVE_GETUID=1 -DHAVE_MEMPCPY=1 -DHAVE_MUNMAP=1 -DHAVE_PUTENV=1 -DHAVE_SETENV=1 -DHAVE_SETLOCALE=1 -DHAVE_SNPRINTF=1 -DHAVE_STPCPY=1 -DHAVE_STRCASECMP=1 -DHAVE_STRDUP=1 -DHAVE_STRTOUL=1 -DHAVE_TSEARCH=1 -DHAVE_WCSLEN=1 -DHAVE___ARGZ_COUNT=1 -DHAVE___ARGZ_STRINGIFY=1 -DHAVE___ARGZ_NEXT=1 -DHAVE___FSETLOCKING=1 -DHAVE_DECL__SNPRINTF=0 -DHAVE_DECL__SNWPRINTF=0 -DHAVE_DECL_FEOF_UNLOCKED=1 -DHAVE_DECL_FGETS_UNLOCKED=0 -DHAVE_DECL_GETC_UNLOCKED=1 -DHAVE_ICONV=1 -DICONV_CONST= -DHAVE_LANGINFO_CODESET=1 -DHAVE_LC_MESSAGES=1 -DENABLE_NLS=1 -DHAVE_GETTEXT=1 -DHAVE_DCGETTEXT=1 -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDARG_H=1 -DHAVE_STDINT_H=1 -DHAVE_ERRNO_H=1 -DHAVE_MALLOC_H=1 -DHAVE_MNTENT_H=1 -DHAVE_PATHS_H=1 -DHAVE_DIRENT_H=1 -DHAVE_GETOPT_H=1 -DHAVE_SETJMP_H=1 -DHAVE_SIGNAL_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_LINUX_FD_H=1 -DHAVE_LINUX_MAJOR_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_PRCTL_H=1 -DHAVE_SYS_QUEUE_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_SYSMACROS_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_NETINET_IN_H=1 -DHAVE_SYS_MOUNT_H=1 -DHAVE_NET_IF_H=1 -DHAVE_VPRINTF=1 -DHAVE_RECLEN_DIRENT=1 -DHAVE_TYPE_SSIZE_T=1 -DHAVE_LSEEK64_PROTOTYPE=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=4 -DSIZEOF_LONG_LONG=8 -DHAVE_INTTYPES_H=1 -DHAVE_INTPTR_T=1 -DHAVE_GETRUSAGE=1 -DHAVE_LLSEEK=1 -DHAVE_LSEEK64=1 -DHAVE_OPEN64=1 -DHAVE_STRTOULL=1 -DHAVE_STRCASECMP=1 -DHAVE_SRANDOM=1 -DHAVE_FCHOWN=1 -DHAVE_MALLINFO=1 -DHAVE_FDATASYNC=1 -DHAVE_STRNLEN=1 -DHAVE_STRPTIME=1 -DHAVE_SYSCONF=1 -DHAVE_PATHCONF=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_MEMALIGN=1 -DHAVE_VALLOC=1 -DHAVE___SECURE_GETENV=1 -DHAVE_PRCTL=1 -DHAVE_DLOPEN=1 -DHAVE_EXT2_IOCTLS=1
     18125+
     18126+DEBUGFS_LIB_OBJS = inode_io.o namei.o write_bb_file.o
     18127+RESIZE_LIB_OBJS = rs_bitmap.o dupfs.o test_io.o
     18128+E2IMAGE_LIB_OBJS = imager.o
     18129+OBJS= $(DEBUGFS_LIB_OBJS) $(RESIZE_LIB_OBJS) $(E2IMAGE_LIB_OBJS) ext2_err.o alloc.o alloc_sb.o alloc_stats.o alloc_tables.o badblocks.o bb_inode.o bitmaps.o bitops.o block.o bmap.o check_desc.o closefs.o dblist.o dblist_dir.o dirblock.o dirhash.o dir_iterate.o expanddir.o ext_attr.o finddev.o flushb.o freefs.o gen_bitmap.o get_pathname.o getsize.o getsectsize.o icount.o ind_block.o initialize.o inline.o inode.o io_manager.o ismounted.o link.o llseek.o lookup.o mkdir.o mkjournal.o native.o newdir.o openfs.o read_bb.o read_bb_file.o res_gdt.o rw_bitmaps.o swapfs.o unix_io.o unlink.o valid_blk.o version.o
     18130+
     18131+all: libext2fs.a
     18132+
     18133+libext2fs.a: $(OBJS)
     18134+       $(RM) libext2fs.a
     18135+       $(AR) rc libext2fs.a $(OBJS)
     18136+
     18137+clean:
     18138+       $(RM) -f libext2fs.a $(OBJS)
     18139+
     18140+.c.o:
     18141+       $(CC-SILO) $(CFLAGS) $(DEFS) -c $< -o $@
    1815718142diff -Naur silo-1.4.13.orig/libext2fs/mkdir.c silo-1.4.13/libext2fs/mkdir.c
    18158 --- silo-1.4.13.orig/libext2fs/mkdir.c  1969-12-31 16:00:00.000000000 -0800
    18159 +++ silo-1.4.13/libext2fs/mkdir.c       2006-11-02 19:21:44.232760807 -0800
     18143--- silo-1.4.13.orig/libext2fs/mkdir.c  1969-12-31 19:00:00.000000000 -0500
     18144+++ silo-1.4.13/libext2fs/mkdir.c       2007-04-03 17:02:53.000000000 -0400
    1816018145@@ -0,0 +1,142 @@
    1816118146+/*
     
    1830218287+
    1830318288diff -Naur silo-1.4.13.orig/libext2fs/mkjournal.c silo-1.4.13/libext2fs/mkjournal.c
    18304 --- silo-1.4.13.orig/libext2fs/mkjournal.c      1969-12-31 16:00:00.000000000 -0800
    18305 +++ silo-1.4.13/libext2fs/mkjournal.c   2006-11-02 19:21:44.232760807 -0800
     18289--- silo-1.4.13.orig/libext2fs/mkjournal.c      1969-12-31 19:00:00.000000000 -0500
     18290+++ silo-1.4.13/libext2fs/mkjournal.c   2007-04-03 17:02:53.000000000 -0400
    1830618291@@ -0,0 +1,425 @@
    1830718292+/*
     
    1873118716+#endif
    1873218717diff -Naur silo-1.4.13.orig/libext2fs/namei.c silo-1.4.13/libext2fs/namei.c
    18733 --- silo-1.4.13.orig/libext2fs/namei.c  1969-12-31 16:00:00.000000000 -0800
    18734 +++ silo-1.4.13/libext2fs/namei.c       2006-11-02 19:21:44.232760807 -0800
     18718--- silo-1.4.13.orig/libext2fs/namei.c  1969-12-31 19:00:00.000000000 -0500
     18719+++ silo-1.4.13/libext2fs/namei.c       2007-04-03 17:02:53.000000000 -0400
    1873518720@@ -0,0 +1,205 @@
    1873618721+/*
     
    1894018925+
    1894118926diff -Naur silo-1.4.13.orig/libext2fs/native.c silo-1.4.13/libext2fs/native.c
    18942 --- silo-1.4.13.orig/libext2fs/native.c 1969-12-31 16:00:00.000000000 -0800
    18943 +++ silo-1.4.13/libext2fs/native.c      2006-11-02 19:21:44.232760807 -0800
     18927--- silo-1.4.13.orig/libext2fs/native.c 1969-12-31 19:00:00.000000000 -0500
     18928+++ silo-1.4.13/libext2fs/native.c      2007-04-03 17:02:53.000000000 -0400
    1894418929@@ -0,0 +1,27 @@
    1894518930+/*
     
    1897118956+       
    1897218957diff -Naur silo-1.4.13.orig/libext2fs/newdir.c silo-1.4.13/libext2fs/newdir.c
    18973 --- silo-1.4.13.orig/libext2fs/newdir.c 1969-12-31 16:00:00.000000000 -0800
    18974 +++ silo-1.4.13/libext2fs/newdir.c      2006-11-02 19:21:44.232760807 -0800
     18958--- silo-1.4.13.orig/libext2fs/newdir.c 1969-12-31 19:00:00.000000000 -0500
     18959+++ silo-1.4.13/libext2fs/newdir.c      2007-04-03 17:02:53.000000000 -0400
    1897518960@@ -0,0 +1,72 @@
    1897618961+/*
     
    1904719032+}
    1904819033diff -Naur silo-1.4.13.orig/libext2fs/nt_io.c silo-1.4.13/libext2fs/nt_io.c
    19049 --- silo-1.4.13.orig/libext2fs/nt_io.c  1969-12-31 16:00:00.000000000 -0800
    19050 +++ silo-1.4.13/libext2fs/nt_io.c       2006-11-02 19:21:44.232760807 -0800
     19034--- silo-1.4.13.orig/libext2fs/nt_io.c  1969-12-31 19:00:00.000000000 -0500
     19035+++ silo-1.4.13/libext2fs/nt_io.c       2007-04-03 17:02:53.000000000 -0400
    1905119036@@ -0,0 +1,1513 @@
    1905219037+/*
     
    2056420549+
    2056520550diff -Naur silo-1.4.13.orig/libext2fs/openfs.c silo-1.4.13/libext2fs/openfs.c
    20566 --- silo-1.4.13.orig/libext2fs/openfs.c 1969-12-31 16:00:00.000000000 -0800
    20567 +++ silo-1.4.13/libext2fs/openfs.c      2006-11-02 19:21:44.232760807 -0800
     20551--- silo-1.4.13.orig/libext2fs/openfs.c 1969-12-31 19:00:00.000000000 -0500
     20552+++ silo-1.4.13/libext2fs/openfs.c      2007-04-03 17:02:53.000000000 -0400
    2056820553@@ -0,0 +1,326 @@
    2056920554+/*
     
    2089420879+}
    2089520880diff -Naur silo-1.4.13.orig/libext2fs/read_bb.c silo-1.4.13/libext2fs/read_bb.c
    20896 --- silo-1.4.13.orig/libext2fs/read_bb.c        1969-12-31 16:00:00.000000000 -0800
    20897 +++ silo-1.4.13/libext2fs/read_bb.c     2006-11-02 19:21:44.236760673 -0800
     20881--- silo-1.4.13.orig/libext2fs/read_bb.c        1969-12-31 19:00:00.000000000 -0500
     20882+++ silo-1.4.13/libext2fs/read_bb.c     2007-04-03 17:02:53.000000000 -0400
    2089820883@@ -0,0 +1,97 @@
    2089920884+/*
     
    2099520980+
    2099620981diff -Naur silo-1.4.13.orig/libext2fs/read_bb_file.c silo-1.4.13/libext2fs/read_bb_file.c
    20997 --- silo-1.4.13.orig/libext2fs/read_bb_file.c   1969-12-31 16:00:00.000000000 -0800
    20998 +++ silo-1.4.13/libext2fs/read_bb_file.c        2006-11-02 19:21:44.236760673 -0800
     20982--- silo-1.4.13.orig/libext2fs/read_bb_file.c   1969-12-31 19:00:00.000000000 -0500
     20983+++ silo-1.4.13/libext2fs/read_bb_file.c        2007-04-03 17:02:53.000000000 -0400
    2099920984@@ -0,0 +1,97 @@
    2100020985+/*
     
    2109621081+
    2109721082diff -Naur silo-1.4.13.orig/libext2fs/res_gdt.c silo-1.4.13/libext2fs/res_gdt.c
    21098 --- silo-1.4.13.orig/libext2fs/res_gdt.c        1969-12-31 16:00:00.000000000 -0800
    21099 +++ silo-1.4.13/libext2fs/res_gdt.c     2006-11-02 19:21:44.236760673 -0800
     21083--- silo-1.4.13.orig/libext2fs/res_gdt.c        1969-12-31 19:00:00.000000000 -0500
     21084+++ silo-1.4.13/libext2fs/res_gdt.c     2007-04-03 17:02:53.000000000 -0400
    2110021085@@ -0,0 +1,220 @@
    2110121086+/*
     
    2132021305+
    2132121306diff -Naur silo-1.4.13.orig/libext2fs/rs_bitmap.c silo-1.4.13/libext2fs/rs_bitmap.c
    21322 --- silo-1.4.13.orig/libext2fs/rs_bitmap.c      1969-12-31 16:00:00.000000000 -0800
    21323 +++ silo-1.4.13/libext2fs/rs_bitmap.c   2006-11-02 19:21:44.236760673 -0800
     21307--- silo-1.4.13.orig/libext2fs/rs_bitmap.c      1969-12-31 19:00:00.000000000 -0500
     21308+++ silo-1.4.13/libext2fs/rs_bitmap.c   2007-04-03 17:02:53.000000000 -0400
    2132421309@@ -0,0 +1,106 @@
    2132521310+/*
     
    2143021415+
    2143121416diff -Naur silo-1.4.13.orig/libext2fs/rw_bitmaps.c silo-1.4.13/libext2fs/rw_bitmaps.c
    21432 --- silo-1.4.13.orig/libext2fs/rw_bitmaps.c     1969-12-31 16:00:00.000000000 -0800
    21433 +++ silo-1.4.13/libext2fs/rw_bitmaps.c  2006-11-02 19:21:44.236760673 -0800
     21417--- silo-1.4.13.orig/libext2fs/rw_bitmaps.c     1969-12-31 19:00:00.000000000 -0500
     21418+++ silo-1.4.13/libext2fs/rw_bitmaps.c  2007-04-03 17:02:53.000000000 -0400
    2143421419@@ -0,0 +1,300 @@
    2143521420+/*
     
    2173421719+
    2173521720diff -Naur silo-1.4.13.orig/libext2fs/sparse.c silo-1.4.13/libext2fs/sparse.c
    21736 --- silo-1.4.13.orig/libext2fs/sparse.c 1969-12-31 16:00:00.000000000 -0800
    21737 +++ silo-1.4.13/libext2fs/sparse.c      2006-11-02 19:21:44.236760673 -0800
     21721--- silo-1.4.13.orig/libext2fs/sparse.c 1969-12-31 19:00:00.000000000 -0500
     21722+++ silo-1.4.13/libext2fs/sparse.c      2007-04-03 17:02:53.000000000 -0400
    2173821723@@ -0,0 +1,78 @@
    2173921724+/*
     
    2181621801+}
    2181721802diff -Naur silo-1.4.13.orig/libext2fs/swapfs.c silo-1.4.13/libext2fs/swapfs.c
    21818 --- silo-1.4.13.orig/libext2fs/swapfs.c 1969-12-31 16:00:00.000000000 -0800
    21819 +++ silo-1.4.13/libext2fs/swapfs.c      2006-11-02 19:21:44.236760673 -0800
     21803--- silo-1.4.13.orig/libext2fs/swapfs.c 1969-12-31 19:00:00.000000000 -0500
     21804+++ silo-1.4.13/libext2fs/swapfs.c      2007-04-03 17:02:53.000000000 -0400
    2182021805@@ -0,0 +1,237 @@
    2182121806+/*
     
    2205722042+#endif
    2205822043diff -Naur silo-1.4.13.orig/libext2fs/test_io.c silo-1.4.13/libext2fs/test_io.c
    22059 --- silo-1.4.13.orig/libext2fs/test_io.c        1969-12-31 16:00:00.000000000 -0800
    22060 +++ silo-1.4.13/libext2fs/test_io.c     2006-11-02 19:21:44.244760406 -0800
     22044--- silo-1.4.13.orig/libext2fs/test_io.c        1969-12-31 19:00:00.000000000 -0500
     22045+++ silo-1.4.13/libext2fs/test_io.c     2007-04-03 17:02:53.000000000 -0400
    2206122046@@ -0,0 +1,411 @@
    2206222047+/*
     
    2247222457+}
    2247322458diff -Naur silo-1.4.13.orig/libext2fs/tst_badblocks.c silo-1.4.13/libext2fs/tst_badblocks.c
    22474 --- silo-1.4.13.orig/libext2fs/tst_badblocks.c  1969-12-31 16:00:00.000000000 -0800
    22475 +++ silo-1.4.13/libext2fs/tst_badblocks.c       2006-11-02 19:21:44.244760406 -0800
     22459--- silo-1.4.13.orig/libext2fs/tst_badblocks.c  1969-12-31 19:00:00.000000000 -0500
     22460+++ silo-1.4.13/libext2fs/tst_badblocks.c       2007-04-03 17:02:53.000000000 -0400
    2247622461@@ -0,0 +1,293 @@
    2247722462+/*
     
    2276922754+}
    2277022755diff -Naur silo-1.4.13.orig/libext2fs/tst_bitops.c silo-1.4.13/libext2fs/tst_bitops.c
    22771 --- silo-1.4.13.orig/libext2fs/tst_bitops.c     1969-12-31 16:00:00.000000000 -0800
    22772 +++ silo-1.4.13/libext2fs/tst_bitops.c  2006-11-02 19:21:44.244760406 -0800
     22756--- silo-1.4.13.orig/libext2fs/tst_bitops.c     1969-12-31 19:00:00.000000000 -0500
     22757+++ silo-1.4.13/libext2fs/tst_bitops.c  2007-04-03 17:02:53.000000000 -0400
    2277322758@@ -0,0 +1,44 @@
    2277422759+/*
     
    2281722802+}
    2281822803diff -Naur silo-1.4.13.orig/libext2fs/tst_byteswap.c silo-1.4.13/libext2fs/tst_byteswap.c
    22819 --- silo-1.4.13.orig/libext2fs/tst_byteswap.c   1969-12-31 16:00:00.000000000 -0800
    22820 +++ silo-1.4.13/libext2fs/tst_byteswap.c        2006-11-02 19:21:44.244760406 -0800
     22804--- silo-1.4.13.orig/libext2fs/tst_byteswap.c   1969-12-31 19:00:00.000000000 -0500
     22805+++ silo-1.4.13/libext2fs/tst_byteswap.c        2007-04-03 17:02:53.000000000 -0400
    2282122806@@ -0,0 +1,92 @@
    2282222807+/*
     
    2291322898+}
    2291422899diff -Naur silo-1.4.13.orig/libext2fs/tst_getsectsize.c silo-1.4.13/libext2fs/tst_getsectsize.c
    22915 --- silo-1.4.13.orig/libext2fs/tst_getsectsize.c        1969-12-31 16:00:00.000000000 -0800
    22916 +++ silo-1.4.13/libext2fs/tst_getsectsize.c     2006-11-02 19:21:44.244760406 -0800
     22900--- silo-1.4.13.orig/libext2fs/tst_getsectsize.c        1969-12-31 19:00:00.000000000 -0500
     22901+++ silo-1.4.13/libext2fs/tst_getsectsize.c     2007-04-03 17:02:53.000000000 -0400
    2291722902@@ -0,0 +1,47 @@
    2291822903+/*
     
    2296422949+}
    2296522950diff -Naur silo-1.4.13.orig/libext2fs/tst_getsize.c silo-1.4.13/libext2fs/tst_getsize.c
    22966 --- silo-1.4.13.orig/libext2fs/tst_getsize.c    1969-12-31 16:00:00.000000000 -0800
    22967 +++ silo-1.4.13/libext2fs/tst_getsize.c 2006-11-02 19:21:44.244760406 -0800
     22951--- silo-1.4.13.orig/libext2fs/tst_getsize.c    1969-12-31 19:00:00.000000000 -0500
     22952+++ silo-1.4.13/libext2fs/tst_getsize.c 2007-04-03 17:02:53.000000000 -0400
    2296822953@@ -0,0 +1,44 @@
    2296922954+/*
     
    2301222997+}
    2301322998diff -Naur silo-1.4.13.orig/libext2fs/tst_iscan.c silo-1.4.13/libext2fs/tst_iscan.c
    23014 --- silo-1.4.13.orig/libext2fs/tst_iscan.c      1969-12-31 16:00:00.000000000 -0800
    23015 +++ silo-1.4.13/libext2fs/tst_iscan.c   2006-11-02 19:21:44.252760139 -0800
     22999--- silo-1.4.13.orig/libext2fs/tst_iscan.c      1969-12-31 19:00:00.000000000 -0500
     23000+++ silo-1.4.13/libext2fs/tst_iscan.c   2007-04-03 17:02:53.000000000 -0400
    2301623001@@ -0,0 +1,218 @@
    2301723002+/*
     
    2323423219+
    2323523220diff -Naur silo-1.4.13.orig/libext2fs/unix_io.c silo-1.4.13/libext2fs/unix_io.c
    23236 --- silo-1.4.13.orig/libext2fs/unix_io.c        1969-12-31 16:00:00.000000000 -0800
    23237 +++ silo-1.4.13/libext2fs/unix_io.c     2006-11-02 19:21:44.252760139 -0800
     23221--- silo-1.4.13.orig/libext2fs/unix_io.c        1969-12-31 19:00:00.000000000 -0500
     23222+++ silo-1.4.13/libext2fs/unix_io.c     2007-04-03 17:02:53.000000000 -0400
    2323823223@@ -0,0 +1,710 @@
    2323923224+/*
     
    2394823933+}
    2394923934diff -Naur silo-1.4.13.orig/libext2fs/unlink.c silo-1.4.13/libext2fs/unlink.c
    23950 --- silo-1.4.13.orig/libext2fs/unlink.c 1969-12-31 16:00:00.000000000 -0800
    23951 +++ silo-1.4.13/libext2fs/unlink.c      2006-11-02 19:21:44.252760139 -0800
     23935--- silo-1.4.13.orig/libext2fs/unlink.c 1969-12-31 19:00:00.000000000 -0500
     23936+++ silo-1.4.13/libext2fs/unlink.c      2007-04-03 17:02:53.000000000 -0400
    2395223937@@ -0,0 +1,99 @@
    2395323938+/*
     
    2405124036+
    2405224037diff -Naur silo-1.4.13.orig/libext2fs/valid_blk.c silo-1.4.13/libext2fs/valid_blk.c
    24053 --- silo-1.4.13.orig/libext2fs/valid_blk.c      1969-12-31 16:00:00.000000000 -0800
    24054 +++ silo-1.4.13/libext2fs/valid_blk.c   2006-11-02 19:21:44.256760005 -0800
     24038--- silo-1.4.13.orig/libext2fs/valid_blk.c      1969-12-31 19:00:00.000000000 -0500
     24039+++ silo-1.4.13/libext2fs/valid_blk.c   2007-04-03 17:02:53.000000000 -0400
    2405524040@@ -0,0 +1,56 @@
    2405624041+/*
     
    2411124096+}
    2411224097diff -Naur silo-1.4.13.orig/libext2fs/version.c silo-1.4.13/libext2fs/version.c
    24113 --- silo-1.4.13.orig/libext2fs/version.c        1969-12-31 16:00:00.000000000 -0800
    24114 +++ silo-1.4.13/libext2fs/version.c     2006-11-02 19:21:44.256760005 -0800
     24098--- silo-1.4.13.orig/libext2fs/version.c        1969-12-31 19:00:00.000000000 -0500
     24099+++ silo-1.4.13/libext2fs/version.c     2007-04-03 17:02:53.000000000 -0400
    2411524100@@ -0,0 +1,52 @@
    2411624101+/*
     
    2416724152+}
    2416824153diff -Naur silo-1.4.13.orig/libext2fs/version.h silo-1.4.13/libext2fs/version.h
    24169 --- silo-1.4.13.orig/libext2fs/version.h        1969-12-31 16:00:00.000000000 -0800
    24170 +++ silo-1.4.13/libext2fs/version.h     2006-11-02 19:21:44.256760005 -0800
     24154--- silo-1.4.13.orig/libext2fs/version.h        1969-12-31 19:00:00.000000000 -0500
     24155+++ silo-1.4.13/libext2fs/version.h     2007-04-03 17:02:53.000000000 -0400
    2417124156@@ -0,0 +1,11 @@
    2417224157+/*
     
    2418224167+#define E2FSPROGS_DATE "30-Jun-2005"
    2418324168diff -Naur silo-1.4.13.orig/libext2fs/write_bb_file.c silo-1.4.13/libext2fs/write_bb_file.c
    24184 --- silo-1.4.13.orig/libext2fs/write_bb_file.c  1969-12-31 16:00:00.000000000 -0800
    24185 +++ silo-1.4.13/libext2fs/write_bb_file.c       2006-11-02 19:21:44.256760005 -0800
     24169--- silo-1.4.13.orig/libext2fs/write_bb_file.c  1969-12-31 19:00:00.000000000 -0500
     24170+++ silo-1.4.13/libext2fs/write_bb_file.c       2007-04-03 17:02:53.000000000 -0400
    2418624171@@ -0,0 +1,34 @@
    2418724172+/*
     
    2421924204+       return 0;
    2422024205+}
    24221 diff -Naur silo-1.4.13.orig/second/Makefile silo-1.4.13/second/Makefile
    24222 --- silo-1.4.13.orig/second/Makefile    2006-06-01 10:24:53.000000000 -0700
    24223 +++ silo-1.4.13/second/Makefile 2006-11-02 19:21:44.260759872 -0800
    24224 @@ -27,10 +27,10 @@
    24225  LDFLAGS_LARGE=-N -Ttext $(LARGE_RELOC)
     24206diff -Naur silo-1.4.13.orig/Makefile silo-1.4.13/Makefile
     24207--- silo-1.4.13.orig/Makefile   2006-06-01 13:24:53.000000000 -0400
     24208+++ silo-1.4.13/Makefile        2007-04-03 17:02:53.000000000 -0400
     24209@@ -3,7 +3,7 @@
    2422624210 
    24227  .c.o:
    24228 -       $(CC) $(CFLAGS) -c $*.c -o $@
    24229 +       $(CC-SILO) $(CFLAGS) -c $*.c -o $@
     24211 # These only get built on Linux
     24212 ifeq ($(OPSYS),Linux)
     24213-  SUBDIRS  = common first second first-isofs tilo
     24214+  SUBDIRS  = common first libext2fs second first-isofs tilo
     24215   MANPAGES = maketilo.1 tilo.1
     24216 endif
    2423024217 
    24231  .S.o:
    24232 -       $(CC) $(CFLAGS) -c $*.S -o $@
    24233 +       $(CC-SILO) $(CFLAGS) -c $*.S -o $@
     24218diff -Naur silo-1.4.13.orig/Rules.make silo-1.4.13/Rules.make
     24219--- silo-1.4.13.orig/Rules.make 2006-06-21 03:51:03.000000000 -0400
     24220+++ silo-1.4.13/Rules.make      2007-04-03 17:02:53.000000000 -0400
     24221@@ -1,12 +1,14 @@
     24222 VERSION=1.4.13
     24223 IMGVERSION=0.99
     24224 RM=rm -f
     24225-# We want to force 32-bit builds
     24226-CC=gcc -m32
     24227-LD=ld -m elf32_sparc
     24228-AS=as
     24229-STRIP=strip
     24230-NM=nm
     24231+CC=$(CROSS_COMPILE)gcc
     24232+CC-SILO=$(CC) -m32 -Wa,-32 -I../include/emul_32
     24233+BUILD_CC=gcc
     24234+LD=$(CROSS_COMPILE)ld -m elf32_sparc
     24235+AS=$(CROSS_COMPILE)as
     24236+STRIP=$(CROSS_COMPILE)strip
     24237+NM=$(CROSS_COMPILE)nm
     24238+
     24239 ELFTOAOUT=elftoaout
     24240 BIN2H=../common/bin2h
    2423424241 
    24235  # The ordering here is very significant. Please add new object files to OBJS5 only.
    24236  OBJS1 = crt0.o
    24237 @@ -43,8 +43,8 @@
    24238  OBJS4 = main.o
    24239  OBJS4N = mainnet.o
    24240  OBJS5 = cmdline.o disk.o file.o misc.o cfg.o strtol.o ranges.o timer.o \
    24241 -       memory.o fs/libfs.a mul.o ../common/rem.o ../common/sdiv.o umul.o \
    24242 -       ../common/stringops2.o ls.o muldi3.o
    24243 +       memory.o fs/libfs.a ../common/rem.o ../common/sdiv.o umul.o \
    24244 +       ../common/stringops2.o ls.o muldi3.o ../libext2fs/libext2fs.a
    24245  OBJS = $(OBJS1) $(OBJS2) $(OBJS3) bmark.o $(OBJS4) $(OBJS5)
    24246  OBJSNET = $(OBJS1) $(OBJS2N) $(OBJS3) bmark.o $(OBJS4N) $(OBJS5)
    24247  
    24248 @@ -53,18 +53,21 @@
    24249  # Should really switch to autoconf...
    24250  all: second.b silotftp.b
    24251  
    24252 +../libext2fs/libext2fs.a:
    24253 +       @make -C ../libext2fs
    24254 +
    24255  fs/libfs.a: $(FS_OBJS)
    24256         $(RM) $@
    24257         $(AR) rc $@ $(FS_OBJS)
    24258  
    24259  second: $(OBJS) mark.o
    24260 -       $(LD) $(LDFLAGS_SMALL) -Bstatic -o second $(OBJS) -lext2fs mark.o
    24261 -       $(LD) $(LDFLAGS_LARGE) -Bstatic -o second2 $(OBJS) -lext2fs mark.o
    24262 +       $(LD) $(LDFLAGS_SMALL) -Bstatic -o second $(OBJS) mark.o
    24263 +       $(LD) $(LDFLAGS_LARGE) -Bstatic -o second2 $(OBJS) mark.o
    24264         $(NM) second | grep -v '*ABS*' | sort > second.map
    24265  
    24266  silotftp: $(OBJSNET) mark.o
    24267 -       $(LD) $(LDFLAGS_SMALL) -Bstatic -o silotftp $(OBJSNET) -lext2fs mark.o
    24268 -       $(LD) $(LDFLAGS_LARGE) -Bstatic -o silotftp2 $(OBJSNET) -lext2fs mark.o
    24269 +       $(LD) $(LDFLAGS_SMALL) -Bstatic -o silotftp $(OBJSNET) mark.o
    24270 +       $(LD) $(LDFLAGS_LARGE) -Bstatic -o silotftp2 $(OBJSNET) mark.o
    24271         $(NM) silotftp | grep -v '*ABS*' | sort > silotftp.map
    24272  
    24273  second.l: second
    24274 @@ -73,31 +76,31 @@
    24275  file.o:               file.c
    24276  
    24277  decompnet.o:   decomp.c
    24278 -       $(CC) $(CFLAGS) -DTFTP -DVERSION='"$(VERSION)"' -c -o $@ $<
    24279 +       $(CC-SILO) $(CFLAGS) -DTFTP -DVERSION='"$(VERSION)"' -c -o $@ $<
    24280  
    24281  decomp.o: decomp.c
    24282 -       $(CC) $(CFLAGS) -DVERSION='"$(VERSION)"' -c $<
    24283 +       $(CC-SILO) $(CFLAGS) -DVERSION='"$(VERSION)"' -c $<
    24284  
    24285  mainnet.o:   main.c
    24286 -       $(CC) $(CFLAGS) -DTFTP -c -o $@ $<
    24287 +       $(CC-SILO) $(CFLAGS) -DTFTP -c -o $@ $<
    24288  
    24289  malloc.o: ../common/malloc.c
    24290 -       $(CC) $(CFLAGS) -c -o $@ $<
    24291 +       $(CC-SILO) $(CFLAGS) -c -o $@ $<
    24292  
    24293  util:  util.c
    24294 -       $(CC) -DSMALL_RELOC=$(SMALL_RELOC) -DLARGE_RELOC=$(LARGE_RELOC) -o $@ $<
    24295 +       $(BUILD_CC) -DSMALL_RELOC=$(SMALL_RELOC) -DLARGE_RELOC=$(LARGE_RELOC) -o $@ $<
    24296  
    24297  clean:
    24298         $(RM) *.o fs/*.o second* silotftp* util fs/libfs.a
    24299  
    24300  crt0.o:        crt0.S
    24301 -       $(CC) $(CFLAGS) -c -Wa,-Av9 -DIMGVERSION='"SILO$(IMGVERSION)"' crt0.S
    24302 +       $(CC-SILO) $(CFLAGS) -c -Wa,-Av9 -DIMGVERSION='"SILO$(IMGVERSION)"' crt0.S
    24303  
    24304  memory.o: memory.c
    24305 -       $(CC) $(CFLAGS) -c -Wa,-Av9 memory.c
    24306 +       $(CC-SILO) $(CFLAGS) -c -Wa,-Av9 memory.c
    24307  
    24308  timer.o: timer.c
    24309 -       $(CC) $(CFLAGS) -c -Wa,-Av9a timer.c
    24310 +       $(CC-SILO) $(CFLAGS) -c -Wa,-Av9a timer.c
    24311  
    24312  second.b: second util
    24313         $(ELFTOAOUT) -o second.aout second
    2431424242diff -Naur silo-1.4.13.orig/second/fs/ufs.c silo-1.4.13/second/fs/ufs.c
    24315 --- silo-1.4.13.orig/second/fs/ufs.c    2006-06-01 10:24:53.000000000 -0700
    24316 +++ silo-1.4.13/second/fs/ufs.c 2006-11-02 19:25:24.281403152 -0800
     24243--- silo-1.4.13.orig/second/fs/ufs.c    2006-06-01 13:24:53.000000000 -0400
     24244+++ silo-1.4.13/second/fs/ufs.c 2007-04-03 17:02:53.000000000 -0400
    2431724245@@ -40,28 +40,18 @@
    2431824246 
     
    2438424312 
    2438524313diff -Naur silo-1.4.13.orig/second/ls.c silo-1.4.13/second/ls.c
    24386 --- silo-1.4.13.orig/second/ls.c        2006-06-01 10:24:53.000000000 -0700
    24387 +++ silo-1.4.13/second/ls.c     2006-11-02 19:21:44.264759738 -0800
     24314--- silo-1.4.13.orig/second/ls.c        2006-06-01 13:24:53.000000000 -0400
     24315+++ silo-1.4.13/second/ls.c     2007-04-03 17:02:53.000000000 -0400
    2438824316@@ -19,10 +19,10 @@
    2438924317    USA.  */
     
    2439824326 #include <ext2fs/ext2fs.h>
    2439924327 
     24328diff -Naur silo-1.4.13.orig/second/Makefile silo-1.4.13/second/Makefile
     24329--- silo-1.4.13.orig/second/Makefile    2006-06-01 13:24:53.000000000 -0400
     24330+++ silo-1.4.13/second/Makefile 2007-04-05 19:48:45.000000000 -0400
     24331@@ -27,10 +27,10 @@
     24332 LDFLAGS_LARGE=-N -Ttext $(LARGE_RELOC)
     24333 
     24334 .c.o:
     24335-       $(CC) $(CFLAGS) -c $*.c -o $@
     24336+       $(CC-SILO) $(CFLAGS) -c $*.c -o $@
     24337 
     24338 .S.o:
     24339-       $(CC) $(CFLAGS) -c $*.S -o $@
     24340+       $(CC-SILO) $(CFLAGS) -c $*.S -o $@
     24341 
     24342 # The ordering here is very significant. Please add new object files to OBJS5 only.
     24343 OBJS1 = crt0.o
     24344@@ -43,8 +43,8 @@
     24345 OBJS4 = main.o
     24346 OBJS4N = mainnet.o
     24347 OBJS5 = cmdline.o disk.o file.o misc.o cfg.o strtol.o ranges.o timer.o \
     24348-       memory.o fs/libfs.a mul.o ../common/rem.o ../common/sdiv.o umul.o \
     24349-       ../common/stringops2.o ls.o muldi3.o
     24350+       memory.o fs/libfs.a ../common/rem.o ../common/sdiv.o umul.o \
     24351+       ../common/stringops2.o ls.o muldi3.o ../libext2fs/libext2fs.a
     24352 OBJS = $(OBJS1) $(OBJS2) $(OBJS3) bmark.o $(OBJS4) $(OBJS5)
     24353 OBJSNET = $(OBJS1) $(OBJS2N) $(OBJS3) bmark.o $(OBJS4N) $(OBJS5)
     24354 
     24355@@ -53,18 +53,21 @@
     24356 # Should really switch to autoconf...
     24357 all: second.b silotftp.b
     24358 
     24359+../libext2fs/libext2fs.a:
     24360+       @make -C ../libext2fs
     24361+
     24362 fs/libfs.a: $(FS_OBJS)
     24363        $(RM) $@
     24364        $(AR) rc $@ $(FS_OBJS)
     24365 
     24366 second: $(OBJS) mark.o
     24367-       $(LD) $(LDFLAGS_SMALL) -Bstatic -o second $(OBJS) -lext2fs mark.o
     24368-       $(LD) $(LDFLAGS_LARGE) -Bstatic -o second2 $(OBJS) -lext2fs mark.o
     24369+       $(LD) $(LDFLAGS_SMALL) -Bstatic -o second $(OBJS) mark.o
     24370+       $(LD) $(LDFLAGS_LARGE) -Bstatic -o second2 $(OBJS) mark.o
     24371        $(NM) second | grep -v '*ABS*' | sort > second.map
     24372 
     24373 silotftp: $(OBJSNET) mark.o
     24374-       $(LD) $(LDFLAGS_SMALL) -Bstatic -o silotftp $(OBJSNET) -lext2fs mark.o
     24375-       $(LD) $(LDFLAGS_LARGE) -Bstatic -o silotftp2 $(OBJSNET) -lext2fs mark.o
     24376+       $(LD) $(LDFLAGS_SMALL) -Bstatic -o silotftp $(OBJSNET) mark.o
     24377+       $(LD) $(LDFLAGS_LARGE) -Bstatic -o silotftp2 $(OBJSNET) mark.o
     24378        $(NM) silotftp | grep -v '*ABS*' | sort > silotftp.map
     24379 
     24380 second.l: second
     24381@@ -73,31 +76,31 @@
     24382 file.o:               file.c
     24383 
     24384 decompnet.o:   decomp.c
     24385-       $(CC) $(CFLAGS) -DTFTP -DVERSION='"$(VERSION)"' -c -o $@ $<
     24386+       $(CC-SILO) $(CFLAGS) -DTFTP -DVERSION='"$(VERSION)"' -c -o $@ $<
     24387 
     24388 decomp.o: decomp.c
     24389-       $(CC) $(CFLAGS) -DVERSION='"$(VERSION)"' -c $<
     24390+       $(CC-SILO) $(CFLAGS) -DVERSION='"$(VERSION)"' -c $<
     24391 
     24392 mainnet.o:   main.c
     24393-       $(CC) $(CFLAGS) -DTFTP -c -o $@ $<
     24394+       $(CC-SILO) $(CFLAGS) -DTFTP -c -o $@ $<
     24395 
     24396 malloc.o: ../common/malloc.c
     24397-       $(CC) $(CFLAGS) -c -o $@ $<
     24398+       $(CC-SILO) $(CFLAGS) -c -o $@ $<
     24399 
     24400 util:  util.c
     24401-       $(CC) -DSMALL_RELOC=$(SMALL_RELOC) -DLARGE_RELOC=$(LARGE_RELOC) -o $@ $<
     24402+       $(BUILD_CC) -DSMALL_RELOC=$(SMALL_RELOC) -DLARGE_RELOC=$(LARGE_RELOC) -o $@ $<
     24403 
     24404 clean:
     24405        $(RM) *.o fs/*.o second* silotftp* util fs/libfs.a
     24406 
     24407 crt0.o:        crt0.S
     24408-       $(CC) $(CFLAGS) -c -Wa,-Av9 -DIMGVERSION='"SILO$(IMGVERSION)"' crt0.S
     24409+       $(CC-SILO) $(CFLAGS) -c -Wa,-Av9 -DIMGVERSION='"SILO$(IMGVERSION)"' crt0.S
     24410 
     24411 memory.o: memory.c
     24412-       $(CC) $(CFLAGS) -c -Wa,-Av9 memory.c
     24413+       $(CC-SILO) $(CFLAGS) -c -Wa,-Av9 memory.c
     24414 
     24415 timer.o: timer.c
     24416-       $(CC) $(CFLAGS) -c -Wa,-Av9a timer.c
     24417+       $(CC-SILO) $(CFLAGS) -c -Wa,-Av9a timer.c
     24418 
     24419 second.b: second util
     24420        $(ELFTOAOUT) -o second.aout second
    2440024421diff -Naur silo-1.4.13.orig/silo/silo.c silo-1.4.13/silo/silo.c
    24401 --- silo-1.4.13.orig/silo/silo.c        2006-06-01 10:24:53.000000000 -0700
    24402 +++ silo-1.4.13/silo/silo.c     2006-11-02 19:21:44.264759738 -0800
     24422--- silo-1.4.13.orig/silo/silo.c        2006-06-01 13:24:53.000000000 -0400
     24423+++ silo-1.4.13/silo/silo.c     2007-04-03 17:02:53.000000000 -0400
    2440324424@@ -128,8 +128,8 @@
    2440424425     unsigned short nsect;      /* Sectors per track */
     
    2441324434     unsigned short csum;       /* Label xor'd checksum */
    2441424435diff -Naur silo-1.4.13.orig/silo/silocheck.c silo-1.4.13/silo/silocheck.c
    24415 --- silo-1.4.13.orig/silo/silocheck.c   2006-06-01 10:24:53.000000000 -0700
    24416 +++ silo-1.4.13/silo/silocheck.c        2006-11-02 19:21:44.264759738 -0800
     24436--- silo-1.4.13.orig/silo/silocheck.c   2006-06-01 13:24:53.000000000 -0400
     24437+++ silo-1.4.13/silo/silocheck.c        2007-04-03 17:02:53.000000000 -0400
    2441724438@@ -100,8 +100,8 @@
    2441824439     unsigned short nsect;      /* Sectors per track */
     
    2442724448     unsigned short csum;       /* Label xor'd checksum */
    2442824449diff -Naur silo-1.4.13.orig/tilo/Makefile silo-1.4.13/tilo/Makefile
    24429 --- silo-1.4.13.orig/tilo/Makefile      2006-06-01 10:24:53.000000000 -0700
    24430 +++ silo-1.4.13/tilo/Makefile   2006-11-02 19:21:44.272759471 -0800
     24450--- silo-1.4.13.orig/tilo/Makefile      2006-06-01 13:24:53.000000000 -0400
     24451+++ silo-1.4.13/tilo/Makefile   2007-04-03 17:02:53.000000000 -0400
    2443124452@@ -14,10 +14,10 @@
    2443224453 all: maketilo
Note: See TracChangeset for help on using the changeset viewer.