- Timestamp:
- Jan 7, 2009, 3:29:55 PM (16 years ago)
- Branches:
- clfs-1.2, clfs-2.1, clfs-3.0.0-systemd, clfs-3.0.0-sysvinit, master, systemd, sysvinit
- Children:
- 882703f
- Parents:
- 1ebc2b5
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
patches/silo-1.4.14-fixes-1.patch
r1ebc2b5 r55bc138 1 Submitted By: Jo e Ciccone <joeciccone at crazyeyesoft dot com>2 Date: 200 7-04-053 Initial Package Version: 1.4.1 31 Submitted By: Jonathan Norman <Jonathan [at] bluesquarelinux.co.uk> 2 Date: 2009-01-07 3 Initial Package Version: 1.4.14 4 4 Upstream Status: Unknown 5 Origin: Rocklinux and Jim Gifford and Joe Ciccone5 Origin: Rocklinux, Jim Gifford, Joe Ciccone, and Blue Square Linux 6 6 Description: Fixes cross-compilation issues and silo no longer links to 7 7 libext2fs.so, it is integrated instead. Also allows silo to build 8 and work properly on pure64 systems. 8 and work properly on pure64 systems. Now works with 2.6.25.x 9 kernel headers. 9 10 10 diff -Naur silo-1.4.13.orig/common/Makefile silo-1.4.13/common/Makefile 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 11 Rediffed for 1.4.14 12 13 diff -Naur silo-1.4.14.orig/Makefile silo-1.4.14/Makefile 14 --- silo-1.4.14.orig/Makefile 2008-06-12 09:39:12.000000000 -0700 15 +++ silo-1.4.14/Makefile 2009-01-07 15:07:56.000000000 -0800 16 @@ -3,7 +3,7 @@ 17 18 # These only get built on Linux 19 ifeq ($(OPSYS),Linux) 20 - SUBDIRS = common first second first-isofs tilo 21 + SUBDIRS = common first libext2fs second first-isofs tilo 22 MANPAGES = maketilo.1 tilo.1 23 endif 24 25 diff -Naur silo-1.4.14.orig/Rules.make silo-1.4.14/Rules.make 26 --- silo-1.4.14.orig/Rules.make 2008-06-12 09:39:12.000000000 -0700 27 +++ silo-1.4.14/Rules.make 2009-01-07 15:07:56.000000000 -0800 28 @@ -2,12 +2,14 @@ 29 IMGVERSION=0.99 30 SHELL=/bin/bash 31 RM=rm -f 32 -# We want to force 32-bit builds 33 -CC=gcc -m32 34 -LD=ld -m elf32_sparc 35 -AS=as 36 -STRIP=strip 37 -NM=nm 38 +CC=$(CROSS_COMPILE)gcc 39 +CC-SILO=$(CC) -m32 -Wa,-32 -I../include/emul_32 40 +BUILD_CC=gcc 41 +LD=$(CROSS_COMPILE)ld -m elf32_sparc 42 +AS=$(CROSS_COMPILE)as 43 +STRIP=$(CROSS_COMPILE)strip 44 +NM=$(CROSS_COMPILE)nm 45 + 46 ELFTOAOUT=elftoaout 47 BIN2H=../common/bin2h 48 49 diff -Naur silo-1.4.14.orig/common/Makefile silo-1.4.14/common/Makefile 50 --- silo-1.4.14.orig/common/Makefile 2008-06-12 09:39:12.000000000 -0700 51 +++ silo-1.4.14/common/Makefile 2009-01-07 15:07:56.000000000 -0800 13 52 @@ -5,19 +5,22 @@ 14 53 include ../Rules.make … … 40 79 + $(RM) bin2h *.o 41 80 + 42 diff -Naur silo-1.4.1 3.orig/first/Makefile silo-1.4.13/first/Makefile43 --- silo-1.4.1 3.orig/first/Makefile 2006-06-01 13:24:53.000000000 -040044 +++ silo-1.4.1 3/first/Makefile 2007-04-05 19:48:31.000000000 -040081 diff -Naur silo-1.4.14.orig/first/Makefile silo-1.4.14/first/Makefile 82 --- silo-1.4.14.orig/first/Makefile 2008-06-12 09:39:12.000000000 -0700 83 +++ silo-1.4.14/first/Makefile 2009-01-07 15:13:16.000000000 -0800 45 84 @@ -1,4 +1,4 @@ 46 85 -## … … 79 118 ultra.b: ultra 80 119 $(ELFTOAOUT) -o ultra.b ultra 81 echo -n'SILO'$(IMGVERSION) | $(DD) of=ultra.b bs=8 conv=notrunc seek=3 count=182 - echo -n -e'\340' | $(DD) of=ultra.b bs=1 count=1 seek=7 conv=notrunc83 + echo -n -e'\0340' | $(DD) of=ultra.b bs=1 count=1 seek=7 conv=notrunc120 printf 'SILO'$(IMGVERSION) | $(DD) of=ultra.b bs=8 conv=notrunc seek=3 count=1 121 - printf '\340' | $(DD) of=ultra.b bs=1 count=1 seek=7 conv=notrunc 122 + printf '\0340' | $(DD) of=ultra.b bs=1 count=1 seek=7 conv=notrunc 84 123 $(DD) if=/dev/zero of=ultra.b bs=4 count=1 seek=127 85 124 … … 93 132 generic.b: generic 94 133 $(ELFTOAOUT) -o generic.b generic 95 echo -n'SILO'$(IMGVERSION) | $(DD) of=generic.b bs=8 conv=notrunc seek=3 count=196 - echo -n -e'\340' | $(DD) of=generic.b bs=1 count=1 seek=7 conv=notrunc97 + echo -n -e'\0340' | $(DD) of=generic.b bs=1 count=1 seek=7 conv=notrunc134 printf 'SILO'$(IMGVERSION) | $(DD) of=generic.b bs=8 conv=notrunc seek=3 count=1 135 - printf '\340' | $(DD) of=generic.b bs=1 count=1 seek=7 conv=notrunc 136 + printf '\0340' | $(DD) of=generic.b bs=1 count=1 seek=7 conv=notrunc 98 137 $(DD) if=/dev/zero of=generic.b bs=4 count=1 seek=255 99 138 … … 107 146 fd.b: fd 108 147 $(ELFTOAOUT) -o fd.b fd 109 echo -n'SILO'$(IMGVERSION) | $(DD) of=fd.b bs=8 conv=notrunc seek=3 count=1110 - echo -n -e'\340' | $(DD) of=fd.b bs=1 count=1 seek=7 conv=notrunc111 + echo -n -e'\0340' | $(DD) of=fd.b bs=1 count=1 seek=7 conv=notrunc148 printf 'SILO'$(IMGVERSION) | $(DD) of=fd.b bs=8 conv=notrunc seek=3 count=1 149 - printf '\340' | $(DD) of=fd.b bs=1 count=1 seek=7 conv=notrunc 150 + printf '\0340' | $(DD) of=fd.b bs=1 count=1 seek=7 conv=notrunc 112 151 $(DD) if=/dev/zero of=fd.b bs=4 count=1 seek=255 113 152 … … 118 157 ieee32.b: ieee32.o 119 158 $(LD) $(LDFLAGS) -o ieee32.b ieee32.o 120 diff -Naur silo-1.4.1 3.orig/first-isofs/Makefile silo-1.4.13/first-isofs/Makefile121 --- silo-1.4.1 3.orig/first-isofs/Makefile 2006-06-01 13:24:53.000000000 -0400122 +++ silo-1.4.1 3/first-isofs/Makefile 2007-04-03 17:02:53.000000000 -0400159 diff -Naur silo-1.4.14.orig/first-isofs/Makefile silo-1.4.14/first-isofs/Makefile 160 --- silo-1.4.14.orig/first-isofs/Makefile 2008-06-12 09:39:12.000000000 -0700 161 +++ silo-1.4.14/first-isofs/Makefile 2009-01-07 15:07:56.000000000 -0800 123 162 @@ -11,10 +11,10 @@ 124 163 all: $(NAME).b … … 143 182 clean: 144 183 $(RM) *.o $(NAME) $(NAME).b $(NAME).aout 145 diff -Naur silo-1.4.13.orig/include/emul_32/asm/elf.h silo-1.4.13/include/emul_32/asm/elf.h 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 184 diff -Naur silo-1.4.14.orig/include/asm/page.h silo-1.4.14/include/asm/page.h 185 --- silo-1.4.14.orig/include/asm/page.h 1969-12-31 16:00:00.000000000 -0800 186 +++ silo-1.4.14/include/asm/page.h 2009-01-07 15:07:56.000000000 -0800 187 @@ -0,0 +1,15 @@ 188 +/* File autogenerated by 'make headers_install' */ 189 +#ifndef __ASM_STUB_PAGE_H 190 +#define __ASM_STUB_PAGE_H 191 +# if defined __sparc__ && defined __arch64__ 192 +#ifndef _SPARC_PAGE_H 193 +#define _SPARC_PAGE_H 194 +#endif 195 +# elif defined __sparc__ && !defined __arch64__ 196 +#ifndef _SPARC64_PAGE_H 197 +#define _SPARC64_PAGE_H 198 +#endif 199 +# else 200 +# warning This machine appears to be neither sparc64 nor sparc. 201 +# endif 202 +#endif /* __ASM_STUB_PAGE_H */ 203 diff -Naur silo-1.4.14.orig/include/emul_32/asm/elf.h silo-1.4.14/include/emul_32/asm/elf.h 204 --- silo-1.4.14.orig/include/emul_32/asm/elf.h 1969-12-31 16:00:00.000000000 -0800 205 +++ silo-1.4.14/include/emul_32/asm/elf.h 2009-01-07 15:07:56.000000000 -0800 148 206 @@ -0,0 +1,162 @@ 149 207 +#ifndef __ASMSPARC_ELF_H … … 309 367 + 310 368 +#endif /* !(__ASMSPARC_ELF_H) */ 311 diff -Naur silo-1.4.1 3.orig/include/emul_32/asm/posix_types.h silo-1.4.13/include/emul_32/asm/posix_types.h312 --- silo-1.4.1 3.orig/include/emul_32/asm/posix_types.h 1969-12-31 19:00:00.000000000 -0500313 +++ silo-1.4.1 3/include/emul_32/asm/posix_types.h 2007-04-03 17:02:53.000000000 -0400369 diff -Naur silo-1.4.14.orig/include/emul_32/asm/posix_types.h silo-1.4.14/include/emul_32/asm/posix_types.h 370 --- silo-1.4.14.orig/include/emul_32/asm/posix_types.h 1969-12-31 16:00:00.000000000 -0800 371 +++ silo-1.4.14/include/emul_32/asm/posix_types.h 2009-01-07 15:07:56.000000000 -0800 314 372 @@ -0,0 +1,122 @@ 315 373 +#ifndef __ARCH_SPARC_POSIX_TYPES_H … … 435 493 + 436 494 +#endif /* !(__ARCH_SPARC_POSIX_TYPES_H) */ 437 diff -Naur silo-1.4.1 3.orig/include/emul_32/asm/types.h silo-1.4.13/include/emul_32/asm/types.h438 --- silo-1.4.1 3.orig/include/emul_32/asm/types.h 1969-12-31 19:00:00.000000000 -0500439 +++ silo-1.4.1 3/include/emul_32/asm/types.h 2007-04-03 17:02:53.000000000 -0400495 diff -Naur silo-1.4.14.orig/include/emul_32/asm/types.h silo-1.4.14/include/emul_32/asm/types.h 496 --- silo-1.4.14.orig/include/emul_32/asm/types.h 1969-12-31 16:00:00.000000000 -0800 497 +++ silo-1.4.14/include/emul_32/asm/types.h 2009-01-07 15:07:56.000000000 -0800 440 498 @@ -0,0 +1,41 @@ 441 499 +#ifndef _SPARC_TYPES_H … … 480 538 + 481 539 +#endif /* defined(_SPARC_TYPES_H) */ 482 diff -Naur silo-1.4.1 3.orig/include/ext2fs/ext2_err.h silo-1.4.13/include/ext2fs/ext2_err.h483 --- silo-1.4.1 3.orig/include/ext2fs/ext2_err.h 2006-06-01 13:24:53.000000000 -0400484 +++ silo-1.4.1 3/include/ext2fs/ext2_err.h 2007-04-03 17:02:53.000000000 -0400540 diff -Naur silo-1.4.14.orig/include/ext2fs/ext2_err.h silo-1.4.14/include/ext2fs/ext2_err.h 541 --- silo-1.4.14.orig/include/ext2fs/ext2_err.h 2008-06-12 09:39:12.000000000 -0700 542 +++ silo-1.4.14/include/ext2fs/ext2_err.h 2009-01-07 15:07:56.000000000 -0800 485 543 @@ -3,6 +3,8 @@ 486 544 * This file is automatically generated; please do not edit it. … … 529 587 530 588 /* for compatibility with older versions... */ 531 diff -Naur silo-1.4.1 3.orig/include/ext2fs/ext2_io.h silo-1.4.13/include/ext2fs/ext2_io.h532 --- silo-1.4.1 3.orig/include/ext2fs/ext2_io.h 2006-06-01 13:24:53.000000000 -0400533 +++ silo-1.4.1 3/include/ext2fs/ext2_io.h 2007-04-03 17:02:53.000000000 -0400589 diff -Naur silo-1.4.14.orig/include/ext2fs/ext2_io.h silo-1.4.14/include/ext2fs/ext2_io.h 590 --- silo-1.4.14.orig/include/ext2fs/ext2_io.h 2008-06-12 09:39:12.000000000 -0700 591 +++ silo-1.4.14/include/ext2fs/ext2_io.h 2009-01-07 15:07:56.000000000 -0800 534 592 @@ -27,6 +27,8 @@ 535 593 typedef struct struct_io_manager *io_manager; … … 578 636 extern io_manager unix_io_manager; 579 637 580 diff -Naur silo-1.4.13.orig/libext2fs/alloc.c silo-1.4.13/libext2fs/alloc.c 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 638 diff -Naur silo-1.4.14.orig/include/linux/ufs_fs.h silo-1.4.14/include/linux/ufs_fs.h 639 --- silo-1.4.14.orig/include/linux/ufs_fs.h 1969-12-31 16:00:00.000000000 -0800 640 +++ silo-1.4.14/include/linux/ufs_fs.h 2009-01-07 15:07:56.000000000 -0800 641 @@ -0,0 +1,953 @@ 642 +/* 643 + * linux/include/linux/ufs_fs.h 644 + * 645 + * Copyright (C) 1996 646 + * Adrian Rodriguez (adrian@franklins-tower.rutgers.edu) 647 + * Laboratory for Computer Science Research Computing Facility 648 + * Rutgers, The State University of New Jersey 649 + * 650 + * Clean swab support by Fare <fare@tunes.org> 651 + * just hope no one is using NNUUXXI on __?64 structure elements 652 + * 64-bit clean thanks to Maciej W. Rozycki <macro@ds2.pg.gda.pl> 653 + * 654 + * 4.4BSD (FreeBSD) support added on February 1st 1998 by 655 + * Niels Kristian Bech Jensen <nkbj@image.dk> partially based 656 + * on code by Martin von Loewis <martin@mira.isdn.cs.tu-berlin.de>. 657 + * 658 + * NeXTstep support added on February 5th 1998 by 659 + * Niels Kristian Bech Jensen <nkbj@image.dk>. 660 + * 661 + * Write support by Daniel Pirkl <daniel.pirkl@email.cz> 662 + * 663 + * HP/UX hfs filesystem support added by 664 + * Martin K. Petersen <mkp@mkp.net>, August 1999 665 + * 666 + * UFS2 (of FreeBSD 5.x) support added by 667 + * Niraj Kumar <niraj17@iitbombay.org> , Jan 2004 668 + * 669 + */ 670 + 671 +#ifndef __LINUX_UFS_FS_H 672 +#define __LINUX_UFS_FS_H 673 + 674 +#include <linux/types.h> 675 +#include <linux/kernel.h> 676 +#include <linux/stat.h> 677 +#include <linux/fs.h> 678 + 679 +#ifndef __KERNEL__ 680 +typedef __u64 __fs64; 681 +typedef __u32 __fs32; 682 +typedef __u16 __fs16; 683 +#else 684 +#include <asm/div64.h> 685 +typedef __u64 __bitwise __fs64; 686 +typedef __u32 __bitwise __fs32; 687 +typedef __u16 __bitwise __fs16; 688 +#endif 689 + 690 +#define UFS_BBLOCK 0 691 +#define UFS_BBSIZE 8192 692 +#define UFS_SBLOCK 8192 693 +#define UFS_SBSIZE 8192 694 + 695 +#define UFS_SECTOR_SIZE 512 696 +#define UFS_SECTOR_BITS 9 697 +#define UFS_MAGIC 0x00011954 698 +#define UFS2_MAGIC 0x19540119 699 +#define UFS_CIGAM 0x54190100 /* byteswapped MAGIC */ 700 + 701 +/* Copied from FreeBSD */ 702 +/* 703 + * Each disk drive contains some number of filesystems. 704 + * A filesystem consists of a number of cylinder groups. 705 + * Each cylinder group has inodes and data. 706 + * 707 + * A filesystem is described by its super-block, which in turn 708 + * describes the cylinder groups. The super-block is critical 709 + * data and is replicated in each cylinder group to protect against 710 + * catastrophic loss. This is done at `newfs' time and the critical 711 + * super-block data does not change, so the copies need not be 712 + * referenced further unless disaster strikes. 713 + * 714 + * For filesystem fs, the offsets of the various blocks of interest 715 + * are given in the super block as: 716 + * [fs->fs_sblkno] Super-block 717 + * [fs->fs_cblkno] Cylinder group block 718 + * [fs->fs_iblkno] Inode blocks 719 + * [fs->fs_dblkno] Data blocks 720 + * The beginning of cylinder group cg in fs, is given by 721 + * the ``cgbase(fs, cg)'' macro. 722 + * 723 + * Depending on the architecture and the media, the superblock may 724 + * reside in any one of four places. For tiny media where every block 725 + * counts, it is placed at the very front of the partition. Historically, 726 + * UFS1 placed it 8K from the front to leave room for the disk label and 727 + * a small bootstrap. For UFS2 it got moved to 64K from the front to leave 728 + * room for the disk label and a bigger bootstrap, and for really piggy 729 + * systems we check at 256K from the front if the first three fail. In 730 + * all cases the size of the superblock will be SBLOCKSIZE. All values are 731 + * given in byte-offset form, so they do not imply a sector size. The 732 + * SBLOCKSEARCH specifies the order in which the locations should be searched. 733 + */ 734 +#define SBLOCK_FLOPPY 0 735 +#define SBLOCK_UFS1 8192 736 +#define SBLOCK_UFS2 65536 737 +#define SBLOCK_PIGGY 262144 738 +#define SBLOCKSIZE 8192 739 +#define SBLOCKSEARCH \ 740 + { SBLOCK_UFS2, SBLOCK_UFS1, SBLOCK_FLOPPY, SBLOCK_PIGGY, -1 } 741 + 742 + 743 +/* HP specific MAGIC values */ 744 + 745 +#define UFS_MAGIC_LFN 0x00095014 /* fs supports filenames > 14 chars */ 746 +#define UFS_CIGAM_LFN 0x14500900 /* srahc 41 < semanelif stroppus sf */ 747 + 748 +#define UFS_MAGIC_SEC 0x00612195 /* B1 security fs */ 749 +#define UFS_CIGAM_SEC 0x95216100 750 + 751 +#define UFS_MAGIC_FEA 0x00195612 /* fs_featurebits supported */ 752 +#define UFS_CIGAM_FEA 0x12561900 753 + 754 +#define UFS_MAGIC_4GB 0x05231994 /* fs > 4 GB && fs_featurebits */ 755 +#define UFS_CIGAM_4GB 0x94192305 756 + 757 +/* Seems somebody at HP goofed here. B1 and lfs are both 0x2 !?! */ 758 +#define UFS_FSF_LFN 0x00000001 /* long file names */ 759 +#define UFS_FSF_B1 0x00000002 /* B1 security */ 760 +#define UFS_FSF_LFS 0x00000002 /* large files */ 761 +#define UFS_FSF_LUID 0x00000004 /* large UIDs */ 762 + 763 +/* End of HP stuff */ 764 + 765 + 766 +#define UFS_BSIZE 8192 767 +#define UFS_MINBSIZE 4096 768 +#define UFS_FSIZE 1024 769 +#define UFS_MAXFRAG (UFS_BSIZE / UFS_FSIZE) 770 + 771 +#define UFS_NDADDR 12 772 +#define UFS_NINDIR 3 773 + 774 +#define UFS_IND_BLOCK (UFS_NDADDR + 0) 775 +#define UFS_DIND_BLOCK (UFS_NDADDR + 1) 776 +#define UFS_TIND_BLOCK (UFS_NDADDR + 2) 777 + 778 +#define UFS_NDIR_FRAGMENT (UFS_NDADDR << uspi->s_fpbshift) 779 +#define UFS_IND_FRAGMENT (UFS_IND_BLOCK << uspi->s_fpbshift) 780 +#define UFS_DIND_FRAGMENT (UFS_DIND_BLOCK << uspi->s_fpbshift) 781 +#define UFS_TIND_FRAGMENT (UFS_TIND_BLOCK << uspi->s_fpbshift) 782 + 783 +#define UFS_ROOTINO 2 784 +#define UFS_FIRST_INO (UFS_ROOTINO + 1) 785 + 786 +#define UFS_USEEFT ((__u16)65535) 787 + 788 +#define UFS_FSOK 0x7c269d38 789 +#define UFS_FSACTIVE ((__s8)0x00) 790 +#define UFS_FSCLEAN ((__s8)0x01) 791 +#define UFS_FSSTABLE ((__s8)0x02) 792 +#define UFS_FSOSF1 ((__s8)0x03) /* is this correct for DEC OSF/1? */ 793 +#define UFS_FSBAD ((__s8)0xff) 794 + 795 +/* From here to next blank line, s_flags for ufs_sb_info */ 796 +/* directory entry encoding */ 797 +#define UFS_DE_MASK 0x00000010 /* mask for the following */ 798 +#define UFS_DE_OLD 0x00000000 799 +#define UFS_DE_44BSD 0x00000010 800 +/* uid encoding */ 801 +#define UFS_UID_MASK 0x00000060 /* mask for the following */ 802 +#define UFS_UID_OLD 0x00000000 803 +#define UFS_UID_44BSD 0x00000020 804 +#define UFS_UID_EFT 0x00000040 805 +/* superblock state encoding */ 806 +#define UFS_ST_MASK 0x00000700 /* mask for the following */ 807 +#define UFS_ST_OLD 0x00000000 808 +#define UFS_ST_44BSD 0x00000100 809 +#define UFS_ST_SUN 0x00000200 /* Solaris */ 810 +#define UFS_ST_SUNOS 0x00000300 811 +#define UFS_ST_SUNx86 0x00000400 /* Solaris x86 */ 812 +/*cylinder group encoding */ 813 +#define UFS_CG_MASK 0x00003000 /* mask for the following */ 814 +#define UFS_CG_OLD 0x00000000 815 +#define UFS_CG_44BSD 0x00002000 816 +#define UFS_CG_SUN 0x00001000 817 +/* filesystem type encoding */ 818 +#define UFS_TYPE_MASK 0x00010000 /* mask for the following */ 819 +#define UFS_TYPE_UFS1 0x00000000 820 +#define UFS_TYPE_UFS2 0x00010000 821 + 822 + 823 +/* fs_inodefmt options */ 824 +#define UFS_42INODEFMT -1 825 +#define UFS_44INODEFMT 2 826 + 827 +/* 828 + * MINFREE gives the minimum acceptable percentage of file system 829 + * blocks which may be free. If the freelist drops below this level 830 + * only the superuser may continue to allocate blocks. This may 831 + * be set to 0 if no reserve of free blocks is deemed necessary, 832 + * however throughput drops by fifty percent if the file system 833 + * is run at between 95% and 100% full; thus the minimum default 834 + * value of fs_minfree is 5%. However, to get good clustering 835 + * performance, 10% is a better choice. hence we use 10% as our 836 + * default value. With 10% free space, fragmentation is not a 837 + * problem, so we choose to optimize for time. 838 + */ 839 +#define UFS_MINFREE 5 840 +#define UFS_DEFAULTOPT UFS_OPTTIME 841 + 842 +/* 843 + * Turn file system block numbers into disk block addresses. 844 + * This maps file system blocks to device size blocks. 845 + */ 846 +#define ufs_fsbtodb(uspi, b) ((b) << (uspi)->s_fsbtodb) 847 +#define ufs_dbtofsb(uspi, b) ((b) >> (uspi)->s_fsbtodb) 848 + 849 +/* 850 + * Cylinder group macros to locate things in cylinder groups. 851 + * They calc file system addresses of cylinder group data structures. 852 + */ 853 +#define ufs_cgbase(c) (uspi->s_fpg * (c)) 854 +#define ufs_cgstart(c) ((uspi)->fs_magic == UFS2_MAGIC ? ufs_cgbase(c) : \ 855 + (ufs_cgbase(c) + uspi->s_cgoffset * ((c) & ~uspi->s_cgmask))) 856 +#define ufs_cgsblock(c) (ufs_cgstart(c) + uspi->s_sblkno) /* super blk */ 857 +#define ufs_cgcmin(c) (ufs_cgstart(c) + uspi->s_cblkno) /* cg block */ 858 +#define ufs_cgimin(c) (ufs_cgstart(c) + uspi->s_iblkno) /* inode blk */ 859 +#define ufs_cgdmin(c) (ufs_cgstart(c) + uspi->s_dblkno) /* 1st data */ 860 + 861 +/* 862 + * Macros for handling inode numbers: 863 + * inode number to file system block offset. 864 + * inode number to cylinder group number. 865 + * inode number to file system block address. 866 + */ 867 +#define ufs_inotocg(x) ((x) / uspi->s_ipg) 868 +#define ufs_inotocgoff(x) ((x) % uspi->s_ipg) 869 +#define ufs_inotofsba(x) (((u64)ufs_cgimin(ufs_inotocg(x))) + ufs_inotocgoff(x) / uspi->s_inopf) 870 +#define ufs_inotofsbo(x) ((x) % uspi->s_inopf) 871 + 872 +/* 873 + * Compute the cylinder and rotational position of a cyl block addr. 874 + */ 875 +#define ufs_cbtocylno(bno) \ 876 + ((bno) * uspi->s_nspf / uspi->s_spc) 877 +#define ufs_cbtorpos(bno) \ 878 + ((((bno) * uspi->s_nspf % uspi->s_spc / uspi->s_nsect \ 879 + * uspi->s_trackskew + (bno) * uspi->s_nspf % uspi->s_spc \ 880 + % uspi->s_nsect * uspi->s_interleave) % uspi->s_nsect \ 881 + * uspi->s_nrpos) / uspi->s_npsect) 882 + 883 +/* 884 + * The following macros optimize certain frequently calculated 885 + * quantities by using shifts and masks in place of divisions 886 + * modulos and multiplications. 887 + */ 888 +#define ufs_blkoff(loc) ((loc) & uspi->s_qbmask) 889 +#define ufs_fragoff(loc) ((loc) & uspi->s_qfmask) 890 +#define ufs_lblktosize(blk) ((blk) << uspi->s_bshift) 891 +#define ufs_lblkno(loc) ((loc) >> uspi->s_bshift) 892 +#define ufs_numfrags(loc) ((loc) >> uspi->s_fshift) 893 +#define ufs_blkroundup(size) (((size) + uspi->s_qbmask) & uspi->s_bmask) 894 +#define ufs_fragroundup(size) (((size) + uspi->s_qfmask) & uspi->s_fmask) 895 +#define ufs_fragstoblks(frags) ((frags) >> uspi->s_fpbshift) 896 +#define ufs_blkstofrags(blks) ((blks) << uspi->s_fpbshift) 897 +#define ufs_fragnum(fsb) ((fsb) & uspi->s_fpbmask) 898 +#define ufs_blknum(fsb) ((fsb) & ~uspi->s_fpbmask) 899 + 900 +#define UFS_MAXNAMLEN 255 901 +#define UFS_MAXMNTLEN 512 902 +#define UFS2_MAXMNTLEN 468 903 +#define UFS2_MAXVOLLEN 32 904 +#define UFS_MAXCSBUFS 31 905 +#define UFS_LINK_MAX 32000 906 +/* 907 +#define UFS2_NOCSPTRS ((128 / sizeof(void *)) - 4) 908 +*/ 909 +#define UFS2_NOCSPTRS 28 910 + 911 +/* 912 + * UFS_DIR_PAD defines the directory entries boundaries 913 + * (must be a multiple of 4) 914 + */ 915 +#define UFS_DIR_PAD 4 916 +#define UFS_DIR_ROUND (UFS_DIR_PAD - 1) 917 +#define UFS_DIR_REC_LEN(name_len) (((name_len) + 1 + 8 + UFS_DIR_ROUND) & ~UFS_DIR_ROUND) 918 + 919 +struct ufs_timeval { 920 + __fs32 tv_sec; 921 + __fs32 tv_usec; 922 +}; 923 + 924 +struct ufs_dir_entry { 925 + __fs32 d_ino; /* inode number of this entry */ 926 + __fs16 d_reclen; /* length of this entry */ 927 + union { 928 + __fs16 d_namlen; /* actual length of d_name */ 929 + struct { 930 + __u8 d_type; /* file type */ 931 + __u8 d_namlen; /* length of string in d_name */ 932 + } d_44; 933 + } d_u; 934 + __u8 d_name[UFS_MAXNAMLEN + 1]; /* file name */ 935 +}; 936 + 937 +struct ufs_csum { 938 + __fs32 cs_ndir; /* number of directories */ 939 + __fs32 cs_nbfree; /* number of free blocks */ 940 + __fs32 cs_nifree; /* number of free inodes */ 941 + __fs32 cs_nffree; /* number of free frags */ 942 +}; 943 +struct ufs2_csum_total { 944 + __fs64 cs_ndir; /* number of directories */ 945 + __fs64 cs_nbfree; /* number of free blocks */ 946 + __fs64 cs_nifree; /* number of free inodes */ 947 + __fs64 cs_nffree; /* number of free frags */ 948 + __fs64 cs_numclusters; /* number of free clusters */ 949 + __fs64 cs_spare[3]; /* future expansion */ 950 +}; 951 + 952 +struct ufs_csum_core { 953 + __u64 cs_ndir; /* number of directories */ 954 + __u64 cs_nbfree; /* number of free blocks */ 955 + __u64 cs_nifree; /* number of free inodes */ 956 + __u64 cs_nffree; /* number of free frags */ 957 + __u64 cs_numclusters; /* number of free clusters */ 958 +}; 959 + 960 +/* 961 + * File system flags 962 + */ 963 +#define UFS_UNCLEAN 0x01 /* file system not clean at mount (unused) */ 964 +#define UFS_DOSOFTDEP 0x02 /* file system using soft dependencies */ 965 +#define UFS_NEEDSFSCK 0x04 /* needs sync fsck (FreeBSD compat, unused) */ 966 +#define UFS_INDEXDIRS 0x08 /* kernel supports indexed directories */ 967 +#define UFS_ACLS 0x10 /* file system has ACLs enabled */ 968 +#define UFS_MULTILABEL 0x20 /* file system is MAC multi-label */ 969 +#define UFS_FLAGS_UPDATED 0x80 /* flags have been moved to new location */ 970 + 971 +#if 0 972 +/* 973 + * This is the actual superblock, as it is laid out on the disk. 974 + * Do NOT use this structure, because of sizeof(ufs_super_block) > 512 and 975 + * it may occupy several blocks, use 976 + * struct ufs_super_block_(first,second,third) instead. 977 + */ 978 +struct ufs_super_block { 979 + union { 980 + struct { 981 + __fs32 fs_link; /* UNUSED */ 982 + } fs_42; 983 + struct { 984 + __fs32 fs_state; /* file system state flag */ 985 + } fs_sun; 986 + } fs_u0; 987 + __fs32 fs_rlink; /* UNUSED */ 988 + __fs32 fs_sblkno; /* addr of super-block in filesys */ 989 + __fs32 fs_cblkno; /* offset of cyl-block in filesys */ 990 + __fs32 fs_iblkno; /* offset of inode-blocks in filesys */ 991 + __fs32 fs_dblkno; /* offset of first data after cg */ 992 + __fs32 fs_cgoffset; /* cylinder group offset in cylinder */ 993 + __fs32 fs_cgmask; /* used to calc mod fs_ntrak */ 994 + __fs32 fs_time; /* last time written -- time_t */ 995 + __fs32 fs_size; /* number of blocks in fs */ 996 + __fs32 fs_dsize; /* number of data blocks in fs */ 997 + __fs32 fs_ncg; /* number of cylinder groups */ 998 + __fs32 fs_bsize; /* size of basic blocks in fs */ 999 + __fs32 fs_fsize; /* size of frag blocks in fs */ 1000 + __fs32 fs_frag; /* number of frags in a block in fs */ 1001 +/* these are configuration parameters */ 1002 + __fs32 fs_minfree; /* minimum percentage of free blocks */ 1003 + __fs32 fs_rotdelay; /* num of ms for optimal next block */ 1004 + __fs32 fs_rps; /* disk revolutions per second */ 1005 +/* these fields can be computed from the others */ 1006 + __fs32 fs_bmask; /* ``blkoff'' calc of blk offsets */ 1007 + __fs32 fs_fmask; /* ``fragoff'' calc of frag offsets */ 1008 + __fs32 fs_bshift; /* ``lblkno'' calc of logical blkno */ 1009 + __fs32 fs_fshift; /* ``numfrags'' calc number of frags */ 1010 +/* these are configuration parameters */ 1011 + __fs32 fs_maxcontig; /* max number of contiguous blks */ 1012 + __fs32 fs_maxbpg; /* max number of blks per cyl group */ 1013 +/* these fields can be computed from the others */ 1014 + __fs32 fs_fragshift; /* block to frag shift */ 1015 + __fs32 fs_fsbtodb; /* fsbtodb and dbtofsb shift constant */ 1016 + __fs32 fs_sbsize; /* actual size of super block */ 1017 + __fs32 fs_csmask; /* csum block offset */ 1018 + __fs32 fs_csshift; /* csum block number */ 1019 + __fs32 fs_nindir; /* value of NINDIR */ 1020 + __fs32 fs_inopb; /* value of INOPB */ 1021 + __fs32 fs_nspf; /* value of NSPF */ 1022 +/* yet another configuration parameter */ 1023 + __fs32 fs_optim; /* optimization preference, see below */ 1024 +/* these fields are derived from the hardware */ 1025 + union { 1026 + struct { 1027 + __fs32 fs_npsect; /* # sectors/track including spares */ 1028 + } fs_sun; 1029 + struct { 1030 + __fs32 fs_state; /* file system state time stamp */ 1031 + } fs_sunx86; 1032 + } fs_u1; 1033 + __fs32 fs_interleave; /* hardware sector interleave */ 1034 + __fs32 fs_trackskew; /* sector 0 skew, per track */ 1035 +/* a unique id for this filesystem (currently unused and unmaintained) */ 1036 +/* In 4.3 Tahoe this space is used by fs_headswitch and fs_trkseek */ 1037 +/* Neither of those fields is used in the Tahoe code right now but */ 1038 +/* there could be problems if they are. */ 1039 + __fs32 fs_id[2]; /* file system id */ 1040 +/* sizes determined by number of cylinder groups and their sizes */ 1041 + __fs32 fs_csaddr; /* blk addr of cyl grp summary area */ 1042 + __fs32 fs_cssize; /* size of cyl grp summary area */ 1043 + __fs32 fs_cgsize; /* cylinder group size */ 1044 +/* these fields are derived from the hardware */ 1045 + __fs32 fs_ntrak; /* tracks per cylinder */ 1046 + __fs32 fs_nsect; /* sectors per track */ 1047 + __fs32 fs_spc; /* sectors per cylinder */ 1048 +/* this comes from the disk driver partitioning */ 1049 + __fs32 fs_ncyl; /* cylinders in file system */ 1050 +/* these fields can be computed from the others */ 1051 + __fs32 fs_cpg; /* cylinders per group */ 1052 + __fs32 fs_ipg; /* inodes per cylinder group */ 1053 + __fs32 fs_fpg; /* blocks per group * fs_frag */ 1054 +/* this data must be re-computed after crashes */ 1055 + struct ufs_csum fs_cstotal; /* cylinder summary information */ 1056 +/* these fields are cleared at mount time */ 1057 + __s8 fs_fmod; /* super block modified flag */ 1058 + __s8 fs_clean; /* file system is clean flag */ 1059 + __s8 fs_ronly; /* mounted read-only flag */ 1060 + __s8 fs_flags; 1061 + union { 1062 + struct { 1063 + __s8 fs_fsmnt[UFS_MAXMNTLEN];/* name mounted on */ 1064 + __fs32 fs_cgrotor; /* last cg searched */ 1065 + __fs32 fs_csp[UFS_MAXCSBUFS];/*list of fs_cs info buffers */ 1066 + __fs32 fs_maxcluster; 1067 + __fs32 fs_cpc; /* cyl per cycle in postbl */ 1068 + __fs16 fs_opostbl[16][8]; /* old rotation block list head */ 1069 + } fs_u1; 1070 + struct { 1071 + __s8 fs_fsmnt[UFS2_MAXMNTLEN]; /* name mounted on */ 1072 + __u8 fs_volname[UFS2_MAXVOLLEN]; /* volume name */ 1073 + __fs64 fs_swuid; /* system-wide uid */ 1074 + __fs32 fs_pad; /* due to alignment of fs_swuid */ 1075 + __fs32 fs_cgrotor; /* last cg searched */ 1076 + __fs32 fs_ocsp[UFS2_NOCSPTRS]; /*list of fs_cs info buffers */ 1077 + __fs32 fs_contigdirs;/*# of contiguously allocated dirs */ 1078 + __fs32 fs_csp; /* cg summary info buffer for fs_cs */ 1079 + __fs32 fs_maxcluster; 1080 + __fs32 fs_active;/* used by snapshots to track fs */ 1081 + __fs32 fs_old_cpc; /* cyl per cycle in postbl */ 1082 + __fs32 fs_maxbsize;/*maximum blocking factor permitted */ 1083 + __fs64 fs_sparecon64[17];/*old rotation block list head */ 1084 + __fs64 fs_sblockloc; /* byte offset of standard superblock */ 1085 + struct ufs2_csum_total fs_cstotal;/*cylinder summary information*/ 1086 + struct ufs_timeval fs_time; /* last time written */ 1087 + __fs64 fs_size; /* number of blocks in fs */ 1088 + __fs64 fs_dsize; /* number of data blocks in fs */ 1089 + __fs64 fs_csaddr; /* blk addr of cyl grp summary area */ 1090 + __fs64 fs_pendingblocks;/* blocks in process of being freed */ 1091 + __fs32 fs_pendinginodes;/*inodes in process of being freed */ 1092 + } fs_u2; 1093 + } fs_u11; 1094 + union { 1095 + struct { 1096 + __fs32 fs_sparecon[53];/* reserved for future constants */ 1097 + __fs32 fs_reclaim; 1098 + __fs32 fs_sparecon2[1]; 1099 + __fs32 fs_state; /* file system state time stamp */ 1100 + __fs32 fs_qbmask[2]; /* ~usb_bmask */ 1101 + __fs32 fs_qfmask[2]; /* ~usb_fmask */ 1102 + } fs_sun; 1103 + struct { 1104 + __fs32 fs_sparecon[53];/* reserved for future constants */ 1105 + __fs32 fs_reclaim; 1106 + __fs32 fs_sparecon2[1]; 1107 + __fs32 fs_npsect; /* # sectors/track including spares */ 1108 + __fs32 fs_qbmask[2]; /* ~usb_bmask */ 1109 + __fs32 fs_qfmask[2]; /* ~usb_fmask */ 1110 + } fs_sunx86; 1111 + struct { 1112 + __fs32 fs_sparecon[50];/* reserved for future constants */ 1113 + __fs32 fs_contigsumsize;/* size of cluster summary array */ 1114 + __fs32 fs_maxsymlinklen;/* max length of an internal symlink */ 1115 + __fs32 fs_inodefmt; /* format of on-disk inodes */ 1116 + __fs32 fs_maxfilesize[2]; /* max representable file size */ 1117 + __fs32 fs_qbmask[2]; /* ~usb_bmask */ 1118 + __fs32 fs_qfmask[2]; /* ~usb_fmask */ 1119 + __fs32 fs_state; /* file system state time stamp */ 1120 + } fs_44; 1121 + } fs_u2; 1122 + __fs32 fs_postblformat; /* format of positional layout tables */ 1123 + __fs32 fs_nrpos; /* number of rotational positions */ 1124 + __fs32 fs_postbloff; /* (__s16) rotation block list head */ 1125 + __fs32 fs_rotbloff; /* (__u8) blocks for each rotation */ 1126 + __fs32 fs_magic; /* magic number */ 1127 + __u8 fs_space[1]; /* list of blocks for each rotation */ 1128 +}; 1129 +#endif/*struct ufs_super_block*/ 1130 + 1131 +/* 1132 + * Preference for optimization. 1133 + */ 1134 +#define UFS_OPTTIME 0 /* minimize allocation time */ 1135 +#define UFS_OPTSPACE 1 /* minimize disk fragmentation */ 1136 + 1137 +/* 1138 + * Rotational layout table format types 1139 + */ 1140 +#define UFS_42POSTBLFMT -1 /* 4.2BSD rotational table format */ 1141 +#define UFS_DYNAMICPOSTBLFMT 1 /* dynamic rotational table format */ 1142 + 1143 +/* 1144 + * Convert cylinder group to base address of its global summary info. 1145 + */ 1146 +#define fs_cs(indx) s_csp[(indx)] 1147 + 1148 +/* 1149 + * Cylinder group block for a file system. 1150 + * 1151 + * Writable fields in the cylinder group are protected by the associated 1152 + * super block lock fs->fs_lock. 1153 + */ 1154 +#define CG_MAGIC 0x090255 1155 +#define ufs_cg_chkmagic(sb, ucg) \ 1156 + (fs32_to_cpu((sb), (ucg)->cg_magic) == CG_MAGIC) 1157 +/* 1158 + * Macros for access to old cylinder group array structures 1159 + */ 1160 +#define ufs_ocg_blktot(sb, ucg) fs32_to_cpu((sb), ((struct ufs_old_cylinder_group *)(ucg))->cg_btot) 1161 +#define ufs_ocg_blks(sb, ucg, cylno) fs32_to_cpu((sb), ((struct ufs_old_cylinder_group *)(ucg))->cg_b[cylno]) 1162 +#define ufs_ocg_inosused(sb, ucg) fs32_to_cpu((sb), ((struct ufs_old_cylinder_group *)(ucg))->cg_iused) 1163 +#define ufs_ocg_blksfree(sb, ucg) fs32_to_cpu((sb), ((struct ufs_old_cylinder_group *)(ucg))->cg_free) 1164 +#define ufs_ocg_chkmagic(sb, ucg) \ 1165 + (fs32_to_cpu((sb), ((struct ufs_old_cylinder_group *)(ucg))->cg_magic) == CG_MAGIC) 1166 + 1167 +/* 1168 + * size of this structure is 172 B 1169 + */ 1170 +struct ufs_cylinder_group { 1171 + __fs32 cg_link; /* linked list of cyl groups */ 1172 + __fs32 cg_magic; /* magic number */ 1173 + __fs32 cg_time; /* time last written */ 1174 + __fs32 cg_cgx; /* we are the cgx'th cylinder group */ 1175 + __fs16 cg_ncyl; /* number of cyl's this cg */ 1176 + __fs16 cg_niblk; /* number of inode blocks this cg */ 1177 + __fs32 cg_ndblk; /* number of data blocks this cg */ 1178 + struct ufs_csum cg_cs; /* cylinder summary information */ 1179 + __fs32 cg_rotor; /* position of last used block */ 1180 + __fs32 cg_frotor; /* position of last used frag */ 1181 + __fs32 cg_irotor; /* position of last used inode */ 1182 + __fs32 cg_frsum[UFS_MAXFRAG]; /* counts of available frags */ 1183 + __fs32 cg_btotoff; /* (__u32) block totals per cylinder */ 1184 + __fs32 cg_boff; /* (short) free block positions */ 1185 + __fs32 cg_iusedoff; /* (char) used inode map */ 1186 + __fs32 cg_freeoff; /* (u_char) free block map */ 1187 + __fs32 cg_nextfreeoff; /* (u_char) next available space */ 1188 + union { 1189 + struct { 1190 + __fs32 cg_clustersumoff; /* (u_int32) counts of avail clusters */ 1191 + __fs32 cg_clusteroff; /* (u_int8) free cluster map */ 1192 + __fs32 cg_nclusterblks; /* number of clusters this cg */ 1193 + __fs32 cg_sparecon[13]; /* reserved for future use */ 1194 + } cg_44; 1195 + struct { 1196 + __fs32 cg_clustersumoff;/* (u_int32) counts of avail clusters */ 1197 + __fs32 cg_clusteroff; /* (u_int8) free cluster map */ 1198 + __fs32 cg_nclusterblks;/* number of clusters this cg */ 1199 + __fs32 cg_niblk; /* number of inode blocks this cg */ 1200 + __fs32 cg_initediblk; /* last initialized inode */ 1201 + __fs32 cg_sparecon32[3];/* reserved for future use */ 1202 + __fs64 cg_time; /* time last written */ 1203 + __fs64 cg_sparecon[3]; /* reserved for future use */ 1204 + } cg_u2; 1205 + __fs32 cg_sparecon[16]; /* reserved for future use */ 1206 + } cg_u; 1207 + __u8 cg_space[1]; /* space for cylinder group maps */ 1208 +/* actually longer */ 1209 +}; 1210 + 1211 +/* Historic Cylinder group info */ 1212 +struct ufs_old_cylinder_group { 1213 + __fs32 cg_link; /* linked list of cyl groups */ 1214 + __fs32 cg_rlink; /* for incore cyl groups */ 1215 + __fs32 cg_time; /* time last written */ 1216 + __fs32 cg_cgx; /* we are the cgx'th cylinder group */ 1217 + __fs16 cg_ncyl; /* number of cyl's this cg */ 1218 + __fs16 cg_niblk; /* number of inode blocks this cg */ 1219 + __fs32 cg_ndblk; /* number of data blocks this cg */ 1220 + struct ufs_csum cg_cs; /* cylinder summary information */ 1221 + __fs32 cg_rotor; /* position of last used block */ 1222 + __fs32 cg_frotor; /* position of last used frag */ 1223 + __fs32 cg_irotor; /* position of last used inode */ 1224 + __fs32 cg_frsum[8]; /* counts of available frags */ 1225 + __fs32 cg_btot[32]; /* block totals per cylinder */ 1226 + __fs16 cg_b[32][8]; /* positions of free blocks */ 1227 + __u8 cg_iused[256]; /* used inode map */ 1228 + __fs32 cg_magic; /* magic number */ 1229 + __u8 cg_free[1]; /* free block map */ 1230 +/* actually longer */ 1231 +}; 1232 + 1233 +/* 1234 + * structure of an on-disk inode 1235 + */ 1236 +struct ufs_inode { 1237 + __fs16 ui_mode; /* 0x0 */ 1238 + __fs16 ui_nlink; /* 0x2 */ 1239 + union { 1240 + struct { 1241 + __fs16 ui_suid; /* 0x4 */ 1242 + __fs16 ui_sgid; /* 0x6 */ 1243 + } oldids; 1244 + __fs32 ui_inumber; /* 0x4 lsf: inode number */ 1245 + __fs32 ui_author; /* 0x4 GNU HURD: author */ 1246 + } ui_u1; 1247 + __fs64 ui_size; /* 0x8 */ 1248 + struct ufs_timeval ui_atime; /* 0x10 access */ 1249 + struct ufs_timeval ui_mtime; /* 0x18 modification */ 1250 + struct ufs_timeval ui_ctime; /* 0x20 creation */ 1251 + union { 1252 + struct { 1253 + __fs32 ui_db[UFS_NDADDR];/* 0x28 data blocks */ 1254 + __fs32 ui_ib[UFS_NINDIR];/* 0x58 indirect blocks */ 1255 + } ui_addr; 1256 + __u8 ui_symlink[4*(UFS_NDADDR+UFS_NINDIR)];/* 0x28 fast symlink */ 1257 + } ui_u2; 1258 + __fs32 ui_flags; /* 0x64 immutable, append-only... */ 1259 + __fs32 ui_blocks; /* 0x68 blocks in use */ 1260 + __fs32 ui_gen; /* 0x6c like ext2 i_version, for NFS support */ 1261 + union { 1262 + struct { 1263 + __fs32 ui_shadow; /* 0x70 shadow inode with security data */ 1264 + __fs32 ui_uid; /* 0x74 long EFT version of uid */ 1265 + __fs32 ui_gid; /* 0x78 long EFT version of gid */ 1266 + __fs32 ui_oeftflag; /* 0x7c reserved */ 1267 + } ui_sun; 1268 + struct { 1269 + __fs32 ui_uid; /* 0x70 File owner */ 1270 + __fs32 ui_gid; /* 0x74 File group */ 1271 + __fs32 ui_spare[2]; /* 0x78 reserved */ 1272 + } ui_44; 1273 + struct { 1274 + __fs32 ui_uid; /* 0x70 */ 1275 + __fs32 ui_gid; /* 0x74 */ 1276 + __fs16 ui_modeh; /* 0x78 mode high bits */ 1277 + __fs16 ui_spare; /* 0x7A unused */ 1278 + __fs32 ui_trans; /* 0x7c filesystem translator */ 1279 + } ui_hurd; 1280 + } ui_u3; 1281 +}; 1282 + 1283 +#define UFS_NXADDR 2 /* External addresses in inode. */ 1284 +struct ufs2_inode { 1285 + __fs16 ui_mode; /* 0: IFMT, permissions; see below. */ 1286 + __fs16 ui_nlink; /* 2: File link count. */ 1287 + __fs32 ui_uid; /* 4: File owner. */ 1288 + __fs32 ui_gid; /* 8: File group. */ 1289 + __fs32 ui_blksize; /* 12: Inode blocksize. */ 1290 + __fs64 ui_size; /* 16: File byte count. */ 1291 + __fs64 ui_blocks; /* 24: Bytes actually held. */ 1292 + __fs64 ui_atime; /* 32: Last access time. */ 1293 + __fs64 ui_mtime; /* 40: Last modified time. */ 1294 + __fs64 ui_ctime; /* 48: Last inode change time. */ 1295 + __fs64 ui_birthtime; /* 56: Inode creation time. */ 1296 + __fs32 ui_mtimensec; /* 64: Last modified time. */ 1297 + __fs32 ui_atimensec; /* 68: Last access time. */ 1298 + __fs32 ui_ctimensec; /* 72: Last inode change time. */ 1299 + __fs32 ui_birthnsec; /* 76: Inode creation time. */ 1300 + __fs32 ui_gen; /* 80: Generation number. */ 1301 + __fs32 ui_kernflags; /* 84: Kernel flags. */ 1302 + __fs32 ui_flags; /* 88: Status flags (chflags). */ 1303 + __fs32 ui_extsize; /* 92: External attributes block. */ 1304 + __fs64 ui_extb[UFS_NXADDR];/* 96: External attributes block. */ 1305 + union { 1306 + struct { 1307 + __fs64 ui_db[UFS_NDADDR]; /* 112: Direct disk blocks. */ 1308 + __fs64 ui_ib[UFS_NINDIR];/* 208: Indirect disk blocks.*/ 1309 + } ui_addr; 1310 + __u8 ui_symlink[2*4*(UFS_NDADDR+UFS_NINDIR)];/* 0x28 fast symlink */ 1311 + } ui_u2; 1312 + __fs64 ui_spare[3]; /* 232: Reserved; currently unused */ 1313 +}; 1314 + 1315 + 1316 +/* FreeBSD has these in sys/stat.h */ 1317 +/* ui_flags that can be set by a file owner */ 1318 +#define UFS_UF_SETTABLE 0x0000ffff 1319 +#define UFS_UF_NODUMP 0x00000001 /* do not dump */ 1320 +#define UFS_UF_IMMUTABLE 0x00000002 /* immutable (can't "change") */ 1321 +#define UFS_UF_APPEND 0x00000004 /* append-only */ 1322 +#define UFS_UF_OPAQUE 0x00000008 /* directory is opaque (unionfs) */ 1323 +#define UFS_UF_NOUNLINK 0x00000010 /* can't be removed or renamed */ 1324 +/* ui_flags that only root can set */ 1325 +#define UFS_SF_SETTABLE 0xffff0000 1326 +#define UFS_SF_ARCHIVED 0x00010000 /* archived */ 1327 +#define UFS_SF_IMMUTABLE 0x00020000 /* immutable (can't "change") */ 1328 +#define UFS_SF_APPEND 0x00040000 /* append-only */ 1329 +#define UFS_SF_NOUNLINK 0x00100000 /* can't be removed or renamed */ 1330 + 1331 +/* 1332 + * This structure is used for reading disk structures larger 1333 + * than the size of fragment. 1334 + */ 1335 +struct ufs_buffer_head { 1336 + __u64 fragment; /* first fragment */ 1337 + __u64 count; /* number of fragments */ 1338 + struct buffer_head * bh[UFS_MAXFRAG]; /* buffers */ 1339 +}; 1340 + 1341 +struct ufs_cg_private_info { 1342 + struct ufs_buffer_head c_ubh; 1343 + __u32 c_cgx; /* number of cylidner group */ 1344 + __u16 c_ncyl; /* number of cyl's this cg */ 1345 + __u16 c_niblk; /* number of inode blocks this cg */ 1346 + __u32 c_ndblk; /* number of data blocks this cg */ 1347 + __u32 c_rotor; /* position of last used block */ 1348 + __u32 c_frotor; /* position of last used frag */ 1349 + __u32 c_irotor; /* position of last used inode */ 1350 + __u32 c_btotoff; /* (__u32) block totals per cylinder */ 1351 + __u32 c_boff; /* (short) free block positions */ 1352 + __u32 c_iusedoff; /* (char) used inode map */ 1353 + __u32 c_freeoff; /* (u_char) free block map */ 1354 + __u32 c_nextfreeoff; /* (u_char) next available space */ 1355 + __u32 c_clustersumoff;/* (u_int32) counts of avail clusters */ 1356 + __u32 c_clusteroff; /* (u_int8) free cluster map */ 1357 + __u32 c_nclusterblks; /* number of clusters this cg */ 1358 +}; 1359 + 1360 + 1361 +struct ufs_sb_private_info { 1362 + struct ufs_buffer_head s_ubh; /* buffer containing super block */ 1363 + struct ufs_csum_core cs_total; 1364 + __u32 s_sblkno; /* offset of super-blocks in filesys */ 1365 + __u32 s_cblkno; /* offset of cg-block in filesys */ 1366 + __u32 s_iblkno; /* offset of inode-blocks in filesys */ 1367 + __u32 s_dblkno; /* offset of first data after cg */ 1368 + __u32 s_cgoffset; /* cylinder group offset in cylinder */ 1369 + __u32 s_cgmask; /* used to calc mod fs_ntrak */ 1370 + __u32 s_size; /* number of blocks (fragments) in fs */ 1371 + __u32 s_dsize; /* number of data blocks in fs */ 1372 + __u64 s_u2_size; /* ufs2: number of blocks (fragments) in fs */ 1373 + __u64 s_u2_dsize; /*ufs2: number of data blocks in fs */ 1374 + __u32 s_ncg; /* number of cylinder groups */ 1375 + __u32 s_bsize; /* size of basic blocks */ 1376 + __u32 s_fsize; /* size of fragments */ 1377 + __u32 s_fpb; /* fragments per block */ 1378 + __u32 s_minfree; /* minimum percentage of free blocks */ 1379 + __u32 s_bmask; /* `blkoff'' calc of blk offsets */ 1380 + __u32 s_fmask; /* s_fsize mask */ 1381 + __u32 s_bshift; /* `lblkno'' calc of logical blkno */ 1382 + __u32 s_fshift; /* s_fsize shift */ 1383 + __u32 s_fpbshift; /* fragments per block shift */ 1384 + __u32 s_fsbtodb; /* fsbtodb and dbtofsb shift constant */ 1385 + __u32 s_sbsize; /* actual size of super block */ 1386 + __u32 s_csmask; /* csum block offset */ 1387 + __u32 s_csshift; /* csum block number */ 1388 + __u32 s_nindir; /* value of NINDIR */ 1389 + __u32 s_inopb; /* value of INOPB */ 1390 + __u32 s_nspf; /* value of NSPF */ 1391 + __u32 s_npsect; /* # sectors/track including spares */ 1392 + __u32 s_interleave; /* hardware sector interleave */ 1393 + __u32 s_trackskew; /* sector 0 skew, per track */ 1394 + __u64 s_csaddr; /* blk addr of cyl grp summary area */ 1395 + __u32 s_cssize; /* size of cyl grp summary area */ 1396 + __u32 s_cgsize; /* cylinder group size */ 1397 + __u32 s_ntrak; /* tracks per cylinder */ 1398 + __u32 s_nsect; /* sectors per track */ 1399 + __u32 s_spc; /* sectors per cylinder */ 1400 + __u32 s_ipg; /* inodes per cylinder group */ 1401 + __u32 s_fpg; /* fragments per group */ 1402 + __u32 s_cpc; /* cyl per cycle in postbl */ 1403 + __s32 s_contigsumsize;/* size of cluster summary array, 44bsd */ 1404 + __s64 s_qbmask; /* ~usb_bmask */ 1405 + __s64 s_qfmask; /* ~usb_fmask */ 1406 + __s32 s_postblformat; /* format of positional layout tables */ 1407 + __s32 s_nrpos; /* number of rotational positions */ 1408 + __s32 s_postbloff; /* (__s16) rotation block list head */ 1409 + __s32 s_rotbloff; /* (__u8) blocks for each rotation */ 1410 + 1411 + __u32 s_fpbmask; /* fragments per block mask */ 1412 + __u32 s_apb; /* address per block */ 1413 + __u32 s_2apb; /* address per block^2 */ 1414 + __u32 s_3apb; /* address per block^3 */ 1415 + __u32 s_apbmask; /* address per block mask */ 1416 + __u32 s_apbshift; /* address per block shift */ 1417 + __u32 s_2apbshift; /* address per block shift * 2 */ 1418 + __u32 s_3apbshift; /* address per block shift * 3 */ 1419 + __u32 s_nspfshift; /* number of sector per fragment shift */ 1420 + __u32 s_nspb; /* number of sector per block */ 1421 + __u32 s_inopf; /* inodes per fragment */ 1422 + __u32 s_sbbase; /* offset of NeXTstep superblock */ 1423 + __u32 s_bpf; /* bits per fragment */ 1424 + __u32 s_bpfshift; /* bits per fragment shift*/ 1425 + __u32 s_bpfmask; /* bits per fragment mask */ 1426 + 1427 + __u32 s_maxsymlinklen;/* upper limit on fast symlinks' size */ 1428 + __s32 fs_magic; /* filesystem magic */ 1429 + unsigned int s_dirblksize; 1430 +}; 1431 + 1432 +/* 1433 + * Sizes of this structures are: 1434 + * ufs_super_block_first 512 1435 + * ufs_super_block_second 512 1436 + * ufs_super_block_third 356 1437 + */ 1438 +struct ufs_super_block_first { 1439 + union { 1440 + struct { 1441 + __fs32 fs_link; /* UNUSED */ 1442 + } fs_42; 1443 + struct { 1444 + __fs32 fs_state; /* file system state flag */ 1445 + } fs_sun; 1446 + } fs_u0; 1447 + __fs32 fs_rlink; 1448 + __fs32 fs_sblkno; 1449 + __fs32 fs_cblkno; 1450 + __fs32 fs_iblkno; 1451 + __fs32 fs_dblkno; 1452 + __fs32 fs_cgoffset; 1453 + __fs32 fs_cgmask; 1454 + __fs32 fs_time; 1455 + __fs32 fs_size; 1456 + __fs32 fs_dsize; 1457 + __fs32 fs_ncg; 1458 + __fs32 fs_bsize; 1459 + __fs32 fs_fsize; 1460 + __fs32 fs_frag; 1461 + __fs32 fs_minfree; 1462 + __fs32 fs_rotdelay; 1463 + __fs32 fs_rps; 1464 + __fs32 fs_bmask; 1465 + __fs32 fs_fmask; 1466 + __fs32 fs_bshift; 1467 + __fs32 fs_fshift; 1468 + __fs32 fs_maxcontig; 1469 + __fs32 fs_maxbpg; 1470 + __fs32 fs_fragshift; 1471 + __fs32 fs_fsbtodb; 1472 + __fs32 fs_sbsize; 1473 + __fs32 fs_csmask; 1474 + __fs32 fs_csshift; 1475 + __fs32 fs_nindir; 1476 + __fs32 fs_inopb; 1477 + __fs32 fs_nspf; 1478 + __fs32 fs_optim; 1479 + union { 1480 + struct { 1481 + __fs32 fs_npsect; 1482 + } fs_sun; 1483 + struct { 1484 + __fs32 fs_state; 1485 + } fs_sunx86; 1486 + } fs_u1; 1487 + __fs32 fs_interleave; 1488 + __fs32 fs_trackskew; 1489 + __fs32 fs_id[2]; 1490 + __fs32 fs_csaddr; 1491 + __fs32 fs_cssize; 1492 + __fs32 fs_cgsize; 1493 + __fs32 fs_ntrak; 1494 + __fs32 fs_nsect; 1495 + __fs32 fs_spc; 1496 + __fs32 fs_ncyl; 1497 + __fs32 fs_cpg; 1498 + __fs32 fs_ipg; 1499 + __fs32 fs_fpg; 1500 + struct ufs_csum fs_cstotal; 1501 + __s8 fs_fmod; 1502 + __s8 fs_clean; 1503 + __s8 fs_ronly; 1504 + __s8 fs_flags; 1505 + __s8 fs_fsmnt[UFS_MAXMNTLEN - 212]; 1506 + 1507 +}; 1508 + 1509 +struct ufs_super_block_second { 1510 + union { 1511 + struct { 1512 + __s8 fs_fsmnt[212]; 1513 + __fs32 fs_cgrotor; 1514 + __fs32 fs_csp[UFS_MAXCSBUFS]; 1515 + __fs32 fs_maxcluster; 1516 + __fs32 fs_cpc; 1517 + __fs16 fs_opostbl[82]; 1518 + } fs_u1; 1519 + struct { 1520 + __s8 fs_fsmnt[UFS2_MAXMNTLEN - UFS_MAXMNTLEN + 212]; 1521 + __u8 fs_volname[UFS2_MAXVOLLEN]; 1522 + __fs64 fs_swuid; 1523 + __fs32 fs_pad; 1524 + __fs32 fs_cgrotor; 1525 + __fs32 fs_ocsp[UFS2_NOCSPTRS]; 1526 + __fs32 fs_contigdirs; 1527 + __fs32 fs_csp; 1528 + __fs32 fs_maxcluster; 1529 + __fs32 fs_active; 1530 + __fs32 fs_old_cpc; 1531 + __fs32 fs_maxbsize; 1532 + __fs64 fs_sparecon64[17]; 1533 + __fs64 fs_sblockloc; 1534 + __fs64 cs_ndir; 1535 + __fs64 cs_nbfree; 1536 + } fs_u2; 1537 + } fs_un; 1538 +}; 1539 + 1540 +struct ufs_super_block_third { 1541 + union { 1542 + struct { 1543 + __fs16 fs_opostbl[46]; 1544 + } fs_u1; 1545 + struct { 1546 + __fs64 cs_nifree; /* number of free inodes */ 1547 + __fs64 cs_nffree; /* number of free frags */ 1548 + __fs64 cs_numclusters; /* number of free clusters */ 1549 + __fs64 cs_spare[3]; /* future expansion */ 1550 + struct ufs_timeval fs_time; /* last time written */ 1551 + __fs64 fs_size; /* number of blocks in fs */ 1552 + __fs64 fs_dsize; /* number of data blocks in fs */ 1553 + __fs64 fs_csaddr; /* blk addr of cyl grp summary area */ 1554 + __fs64 fs_pendingblocks;/* blocks in process of being freed */ 1555 + __fs32 fs_pendinginodes;/*inodes in process of being freed */ 1556 + } __attribute__ ((packed)) fs_u2; 1557 + } fs_un1; 1558 + union { 1559 + struct { 1560 + __fs32 fs_sparecon[53];/* reserved for future constants */ 1561 + __fs32 fs_reclaim; 1562 + __fs32 fs_sparecon2[1]; 1563 + __fs32 fs_state; /* file system state time stamp */ 1564 + __fs32 fs_qbmask[2]; /* ~usb_bmask */ 1565 + __fs32 fs_qfmask[2]; /* ~usb_fmask */ 1566 + } fs_sun; 1567 + struct { 1568 + __fs32 fs_sparecon[53];/* reserved for future constants */ 1569 + __fs32 fs_reclaim; 1570 + __fs32 fs_sparecon2[1]; 1571 + __fs32 fs_npsect; /* # sectors/track including spares */ 1572 + __fs32 fs_qbmask[2]; /* ~usb_bmask */ 1573 + __fs32 fs_qfmask[2]; /* ~usb_fmask */ 1574 + } fs_sunx86; 1575 + struct { 1576 + __fs32 fs_sparecon[50];/* reserved for future constants */ 1577 + __fs32 fs_contigsumsize;/* size of cluster summary array */ 1578 + __fs32 fs_maxsymlinklen;/* max length of an internal symlink */ 1579 + __fs32 fs_inodefmt; /* format of on-disk inodes */ 1580 + __fs32 fs_maxfilesize[2]; /* max representable file size */ 1581 + __fs32 fs_qbmask[2]; /* ~usb_bmask */ 1582 + __fs32 fs_qfmask[2]; /* ~usb_fmask */ 1583 + __fs32 fs_state; /* file system state time stamp */ 1584 + } fs_44; 1585 + } fs_un2; 1586 + __fs32 fs_postblformat; 1587 + __fs32 fs_nrpos; 1588 + __fs32 fs_postbloff; 1589 + __fs32 fs_rotbloff; 1590 + __fs32 fs_magic; 1591 + __u8 fs_space[1]; 1592 +}; 1593 + 1594 +#endif /* __LINUX_UFS_FS_H */ 1595 diff -Naur silo-1.4.14.orig/libext2fs/ChangeLog silo-1.4.14/libext2fs/ChangeLog 1596 --- silo-1.4.14.orig/libext2fs/ChangeLog 1969-12-31 16:00:00.000000000 -0800 1597 +++ silo-1.4.14/libext2fs/ChangeLog 2009-01-07 15:07:56.000000000 -0800 1598 @@ -0,0 +1,3311 @@ 1599 +2006-06-30 Theodore Ts'o <tytso@mit.edu> 1600 + 1601 + * Release of E2fsprogs 1.38 1602 + 1603 +2005-06-30 Theodore Ts'o <tytso@mit.edu> 1604 + 1605 + * bitops.h, bitops.c (ext2fs_set_bit, ext2fs_clear_bit, 1606 + ext2fs_test_bit): Change these function prototypes to be 1607 + unsigned int's. Negative bit numbers were never allowed 1608 + (and never made any sense), so this should be a safe 1609 + change. This is needed to allow safe use of block numbers 1610 + greater than or equal to 2**31. 1611 + 1612 +2005-06-27 Stephen Tweedie <sct@redhat.com> 1613 + 1614 + * ext2fs.h (ext2fs_resize_mem): Fix C99 strict type aliasing 1615 + problems. Addresses Red Hat Bugzilla #161183. 1616 + 1617 +2005-06-19 Theodore Ts'o <tytso@mit.edu> 1618 + 1619 + * getsectsize.c (BLKSSZGET): Clean up test for when to manually 1620 + define the BLKSSZGET ioctl. 1621 + 1622 +2005-05-29 Theodore Ts'o <tytso@mit.edu> 1623 + 1624 + * ismounted.c (ext2fs_check_mount_point): Add test to see if the 1625 + device appears to be busy; this only works on Linux 2.6+ 1626 + systems, but provides some additional bullet-proofing in 1627 + those cases. 1628 + 1629 +2005-05-08 Theodore Ts'o <tytso@mit.edu> 1630 + 1631 + * test_io.c (safe_getenv): Fix bug so it would fetch the right 1632 + environment variable. 1633 + 1634 +2005-04-09 Theodore Ts'o <tytso@mit.edu> 1635 + 1636 + * inode.c (ext2fs_write_new_inode), 1637 + ind_block.c (ext2fs_read_ind_block): Add missing return 1638 + value in error return case. (Otherwise we return garbage 1639 + instead of the error code.) 1640 + 1641 +2005-03-31 Theodore Ts'o <tytso@mit.edu> 1642 + 1643 + * test_io.c (test_open): If called by a setuid/setgid or an 1644 + otherwise privileged program, be paranoid and ignore the 1645 + TEST_IO_* environment variables. 1646 + 1647 +2005-03-21 Theodore Ts'o <tytso@mit.edu> 1648 + 1649 + * Release of E2fsprogs 1.37 1650 + 1651 +2005-03-21 Theodore Ts'o <tytso@mit.edu> 1652 + 1653 + * ext2_ext_attr.h (EXT2_XATTR_LEN, EXT2_XATTR_SIZE): Add new 1654 + convenience cpp macros. 1655 + 1656 +2005-03-20 Theodore Ts'o <tytso@mit.edu> 1657 + 1658 + * mkdir.c (ext2fs_mkdir): Call ext2fs_write_new_inode() instead of 1659 + ext2fs_write_inode(). 1660 + 1661 + * inode.c (ext2fs_write_new_inode): New function which should be 1662 + used when the caller is writing an inode for the first 1663 + time. It makes sure that the extra portion of the large 1664 + inode is initialized properly. 1665 + 1666 +2005-03-18 Theodore Ts'o <tytso@mit.edu> 1667 + 1668 + * Makefile.in: Fix clean target to remove tst_getsectsize. 1669 + 1670 + * getsize.c (ext2fs_get_device_size): Check to see if the number 1671 + of blocks is greater than 2**32 when we are doing a binary 1672 + search to determine the device size. Thanks to Stephen 1673 + Tweedie for the patch. 1674 + 1675 +2006-02-05 Theodore Ts'o <tytso@mit.edu> 1676 + 1677 + * Release of E2fsprogs 1.36 1678 + 1679 +2005-02-05 Theodore Ts'o <tytso@mit.edu> 1680 + 1681 + * Makefile.in: Remove ext2fs.pc on a "make distclean" 1682 + 1683 +2005-02-04 Theodore Ts'o <tytso@mit.edu> 1684 + 1685 + * Makefile.in (clean): Remove tst_getsize when doing a make clean 1686 + 1687 +2005-02-03 Theodore Ts'o <tytso@mit.edu> 1688 + 1689 + * bitops.c: Make the generic functions more efficient. 1690 + 1691 + * bitops.h: Drop SPARC assembly code. It's less efficient than GCC 1692 + 3.4 compiled code and also triggers nasty compiler 1693 + warnings on sparc64. Thanks to Matthias Andree for his 1694 + analysis and suggestion. 1695 + 1696 +2005-01-27 Theodore Ts'o <tytso@mit.edu> 1697 + 1698 + * res_gdt.c (ext2fs_create_resize_inode): Create the resize inode 1699 + even if s_reserved_gdt_blocks is zero. 1700 + 1701 +2005-01-26 Theodore Ts'o <tytso@mit.edu> 1702 + 1703 + * ext2fs.pc.in: Add pkg-config files. 1704 + 1705 +2005-01-25 Theodore Ts'o <tytso@mit.edu> 1706 + 1707 + * ext2fs.h: Add definition of struct ext2_inode_large 1708 + 1709 + * ext2_fs.h: Add new function prototypes 1710 + 1711 + * ext_attr.c (ext2fs_read_ext_attr, ext2fs_write_ext_attr): The 1712 + ext2fs_swap_ext_attr() has been moved to swapfs.c, and 1713 + given a new argument, has_header. 1714 + 1715 + * swapfs.c (ext2fs_swap_ext_attr): Moved from ext_attr.c, and 1716 + takes an argument which controls whether or not there is 1717 + an EA header which needs to be byteswaped. 1718 + (ext2fs_swap_inode_full): New function which byte-swaps 1719 + the EA in inode. 1720 + 1721 + * inode.c (ext2fs_get_next_inode_full, ext2fs_read_inode_full, 1722 + ext2fs_write_inode_full): New functions, originally from 1723 + Alex Tomas, but which needed to be substantially fixed so 1724 + that the tests wouldn't cause major stack overwrite bugs 1725 + in byte-swapping is enabled. 1726 + 1727 +2005-01-18 Theodore Ts'o <tytso@mit.edu> 1728 + 1729 + * Makefile.in: Fix the kernel compile-time echo commands to be 1730 + consistent and portable 1731 + 1732 +2005-01-07 Theodore Ts'o <tytso@mit.edu> 1733 + 1734 + * unlink.c (ext2fs_unlink): If both the name and the inode number 1735 + are unspecified, then return an error, so that we don't do 1736 + something surprising such as unconditionally deleting the 1737 + first directory entry. 1738 + (unlink_proc): Delete directory entries by coalescing it 1739 + with the previous entry, to avoid directory fragmentation. 1740 + 1741 +2005-01-06 Theodore Ts'o <tytso@mit.edu> 1742 + 1743 + * version.c (ext2fs_parse_version_string): Change parsing 1744 + algorithm so that version strings such as 1.36-rc1 returns 1745 + a non-surprising result (i.e., 136, and not 1361). 1746 + 1747 +2005-01-05 Theodore Ts'o <tytso@mit.edu> 1748 + 1749 + * block.c (block_iterate_ind, block_iterate_dind, 1750 + block_iterate_tind): Move the code which byte swaps and 1751 + read/writes indirect blocks to ext2fs_{read,write}_ind_block. 1752 + This saves 400 bytes, and we need them for the 1753 + resize_inode handling. 1754 + 1755 + * ind_block.c (ext2fs_read_ind_block, ext2fs_write_ind_block): New 1756 + functions. 1757 + 1758 + * res_gdt.c (ext2fs_create_resize_inode): Use 1759 + ext2fs_{read,write}_ind_block so that byte swapping is 1760 + handled on big-endian systems. 1761 + 1762 + * dupfs.c (ext2fs_dup_handle): Make sure the new filesystem handle 1763 + has its own copy of the orig_super data structure. (This 1764 + is a better way of fixing a double-free problem in 1765 + resize2fs which Fedora attempted to fix in 1766 + e2fsprogs-1.35-double_free.patch. Addresses Red Hat 1767 + Bugzilla #132707.) 1768 + 1769 +2004-12-23 Theodore Ts'o <tytso@mit.edu> 1770 + 1771 + * inode.c (ext2fs_flush_icache): When flushing the icache, clear 1772 + the last-read block information as well. 1773 + 1774 + * ext2fs.h (BMAP_SET), bmap.c (ext2fs_bmap): Add support for new 1775 + flag, BMAP_SET, which allows the caller to set a 1776 + particular logical->physical block mapping. 1777 + 1778 + * ext2_err.et.in (EXT2_ET_SET_BMAP_NO_IND): New error code 1779 + 1780 + * initialize.c (calc_reserved_gdt_blocks): #ifdef out all 1781 + debugging printf statements. 1782 + 1783 + * res_gdt.c (ext2fs_create_resize_inode): Return 1784 + EXT2_ET_RESIZE_INODE_CORRUPT if the resize inode is not 1785 + what we expect. #ifdef out all debugging printf 1786 + statements. 1787 + 1788 + * ext2_err.et.in (EXT2_ET_RESIZE_INODE_CORRUPT): Add new error code. 1789 + 1790 +2004-12-22 Theodore Ts'o <tytso@mit.edu> 1791 + 1792 + * swapfs.c (ext2fs_swap_super): Byteswap the reserved_gdt_blocks 1793 + superblocks field. 1794 + 1795 +2004-12-15 Theodore Ts'o <tytso@mit.edu> 1796 + 1797 + * sparse.c (ext2fs_list_backups, ext2fs_bg_has_super), 1798 + res_gdt.c (list_backups), closefs.c (ext2fs_bg_has_super), 1799 + ext2fs.h: Move ext2fs_list_backups() to res_gdt.c, and 1800 + ext2fs_bg_has_super() back to closefs.c. There's no 1801 + reason for the new file, since list_backups() isn't being 1802 + used by any other functions, and can be made static, and 1803 + all users of the ext2fs filesystem will have to call 1804 + ext2fs_close() anyway. 1805 + 1806 +2004-12-15 Theodore Ts'o <tytso@mit.edu> 1807 + 1808 + * Applied resize inode patch from Andreas Dilger 1809 + 1810 + * res_gdt.c (ext2fs_create_resize_inode): New function that 1811 + creates the resize inode. 1812 + 1813 + * initialize.c (ext2fs_initialize): Reserve space for the resize 1814 + inode. 1815 + 1816 + * ext2fs.h (EXT2_LIB_FEATURE_COMPAT_SUPP): Add 1817 + EXT2_FEATURE_COMPAT_RESIZE_INODE to the list of supported 1818 + capabilities. 1819 + Add function prototypes for res_gdt.c and sparse.c. 1820 + 1821 + * closefs.c (ext2fs_super_and_bgd_loc): Take the reserved blocks 1822 + into account when calculating the number of overhead 1823 + blocks. 1824 + 1825 + * closefs.c (ext2fs_bg_has_super, test_root), sparse.c: Move these 1826 + functions to the new file sparse.c 1827 + 1828 + * alloc_sb.c (ext2fs_reserve_super_and_bgd): Reserve the blocks 1829 + saved in the resize inode as being in use. 1830 + 1831 + * ext2_err.et.in (EXT2_ET_RES_GDT_BLOCKS): Add new error code. 1832 + 1833 + * Makefile.in (srcdir): Add res_gdt.c and sparse.c to the ext2fs 1834 + library. 1835 + 1836 +2004-12-14 Theodore Ts'o <tytso@mit.edu> 1837 + 1838 + * Makefile.in: Use Linux-kernel-style makefile output for "make 1839 + install" 1840 + 1841 + * Makefile.in (installdirs): Use $(MKINSTALLDIRS) macro 1842 + Update dependencies. 1843 + 1844 +2004-11-30 Theodore Ts'o <tytso@mit.edu> 1845 + 1846 + * unix_io.c (unix_set_option): Add support for the offset option. 1847 + 1848 + * test_io.c (test_set_option): Add support for the set_option method. 1849 + 1850 + * ext2_io.h: Add new io_channel method, set_option(), and change 1851 + io_channel_write_byte() from a macro to a library function. 1852 + 1853 + * ext2fs.h, openfs.c(ext2fs_open2): New version of ext2fs_open 1854 + which adds a new parameter, io_options. 1855 + (ext2fs_open): If there is a question mark in the 1856 + filename, and no io_options are specified, assumed that 1857 + the text following the question mark are io_options. 1858 + 1859 + * io_manager.c, Makefile.in: New source file which contains 1860 + high-level functions for the io_channel layer. 1861 + 1862 + * freefs.c (ext2fs_free): Make sure we don't free the io_channel 1863 + if image_io is NULL. 1864 + 1865 + * Makefile.in: Use Linux-kernel-style makefile output to make it 1866 + easier to see errors/warnings. 1867 + 1868 +2004-11-29 Theodore Ts'o <tytso@mit.edu> 1869 + 1870 + * ext2_fs.h (EXT2_EXTENTS_FL, EXT3_FEATURE_INCOMPAT_EXTENTS, 1871 + EXT2_MAX_BLOCK_LOG_SIZE): Add definition for extent 1872 + feature and inode flag. Change maximum allowable block 1873 + size to be 65536. 1874 + 1875 +2004-10-08 Theodore Ts'o <tytso@mit.edu> 1876 + 1877 + * getsize.c (ext2fs_get_device_size): Add support for Windows 1878 + 9x/NT under Cygwin. Thanks to Sam Robb 1879 + (samrobb@users.sourceforge.net) for pointing this and the 1880 + suggested code patch. 1881 + 1882 +2004-09-17 Theodore Ts'o <tytso@mit.edu> 1883 + 1884 + * getsize.c: Clean up header #include's. 1885 + 1886 + * llseek.c (ext2fs_llseek): On non-linux systems, use lseek64() if 1887 + it is present. (Addresses Debian bug #269044) 1888 + 1889 +2004-07-28 Theodore Ts'o <tytso@mit.edu> 1890 + 1891 + * rw_bitmaps.c (read_bitmaps), block.c (block_iterate_ind, 1892 + block_iterate_dind, block_iterate_tind), inode.c 1893 + (ext2fs_read_inode): If EXT2_FLAG_IMAGE_FILE is set, so 1894 + read the metadata from fs->image_io instead of fs->io. 1895 + 1896 + * initialize.c (ext2fs_initialize), openfs.c (ext2fs_open): 1897 + Initialize fs->image_io to be the same as fs->io. 1898 + 1899 + * ext2_err.et.in (EXT2_ET_NOT_IMAGE_FILE): Add new error code. 1900 + 1901 + * openfs.c (ext2fs_get_data_io, ext2fs_set_data_io, 1902 + ext2fs_rewrite_to_io): New functions that allow 1903 + applications to manipulate fs->image_io and fs->io safely. 1904 + 1905 + * freefs.c (ext2fs_free): If fs->image_io is different fs->io, 1906 + then call io_channel_close on fs->image_io. 1907 + 1908 + * ext2fs.h: Add image_io element to the ext2_filsys data 1909 + structure. Add ext2fs_get_data_io() ext2fs_set_data_io(), 1910 + and ext2fs_rewrite_to_io() prototypes. 1911 + 1912 +2004-05-26 Theodore Ts'o <tytso@mit.edu> 1913 + 1914 + * closefs.c (ext2fs_flush): Make sure the master superblock is 1915 + written last, and only after other I/O has been flushed to 1916 + disk. Thanks to Junfeng Yang from the Stanford 1917 + Metacompilation group for pointing a potential ordering 1918 + constraint problem if we don't write things out in the 1919 + right order. 1920 + 1921 + * test_io.c: Implement the ability to abort after n reads or 1922 + writes to a particular block. The block is specified by 1923 + TEST_IO_BLOCK environment variable, and the read/write 1924 + count by the TEST_IO_READ_ABORT and TEST_IO_WRITE_ABORT 1925 + environment variables. The block data is now only dumped 1926 + if the 0x10 bit is set in TEST_IO_FLAGS. 1927 + 1928 +2004-04-03 Theodore Ts'o <tytso@mit.edu> 1929 + 1930 + * ext2_types.h.in: Remove check for _UUID_TYPES since uuid_types.h 1931 + is no longer used. 1932 + 1933 +2004-03-08 Theodore Ts'o <tytso@mit.edu> 1934 + 1935 + * getsize.c (ext2fs_get_device_size): Only use the BLKGETSIZE64 1936 + ioctl on Linux 2.6 since it is unreliable in Linux 2.4. 1937 + (Addresses Debian Bug #236528). Fix typo in the ioctl 1938 + used for Mac OS X. 1939 + 1940 +2004-03-02 Theodore Ts'o <tytso@mit.edu> 1941 + 1942 + * getsize.c (ext2fs_get_device_size): Update getsize functions to 1943 + use Apple Darwin and Linux 64-bit ioctl's 1944 + 1945 +2004-02-29 Brian Bergstrand <brian@bergstrand.org> 1946 + 1947 + * Makefile.in: Use $(BSDLIB_PIC_FLAG) to determine whether to use 1948 + -fpic or -fPIC 1949 + 1950 +2004-02-28 Theodore Ts'o <tytso@mit.edu> 1951 + 1952 + * Release of E2fsprogs 1.35 1953 + 1954 +2004-02-21 Theodore Ts'o <tytso@mit.edu> 1955 + 1956 + * ext2fs.h (ext2fs_resize_mem): Fix C++ problem. (Addresses Red 1957 + Hat Bugzilla #112448; thanks Thomas Woerner from Red Hat.) 1958 + 1959 +2004-02-14 Theodore Ts'o <tytso@mit.edu> 1960 + 1961 + * namei.c (follow_link): Correctly deal with symlinks that have 1962 + extended attribute information. (Addresses Debian Bug 1963 + #232328) 1964 + 1965 +2004-01-30 Theodore Ts'o <tytso@mit.edu> 1966 + 1967 + * ext2_fs.h: Reserve an extra 4 bytes for the journal backup, 1968 + which we're using due to a typo in the e2fsck code. (Oops) 1969 + 1970 + * swapfs.c (ext2fs_swap_inode): Fix byte swap bug which causes SE 1971 + Linux created symlinks with mandatory attributes to fail 1972 + to be properly handled on big endian systems. (Addresses 1973 + Debian Bug #228723). 1974 + (ext2fs_swap_super): Byte swap some new fields in the 1975 + superblock, including the journal backup fields. 1976 + 1977 +2003-12-02 Theodore Ts'o <tytso@mit.edu> 1978 + 1979 + * alloc.c, bb_inode.c, bitops.c, block.c, check_desc.c, closefs.c, 1980 + dir_iterate.c, dirblock.c, expanddir.c, ext2fs.h, 1981 + get_pathname.c, icount.c, imager.c, initalize.c, inode.c, 1982 + lookup.c, openfs.c, read_bb.c, read_bb_file.c, 1983 + rw_bitmaps.c, unix_io.c, unlink.c, write_bb_file.c: Fix 1984 + gcc -Wall complaints. Mainly marking variables as being 1985 + unsued, and catching signed vs. unsigned comparisons. 1986 + 1987 +2003-09-03 Theodore Ts'o <tytso@mit.edu> 1988 + 1989 + * closefs.c (ext2fs_super_and_bgd_loc): New function which 1990 + centralizes the calculation of the superblock and block 1991 + group descriptors. 1992 + (ext2fs_flush): Use ext2fs_super_and_bgd_lock to figure 1993 + out where to write the superblock and block group 1994 + descriptors. 1995 + 1996 + * alloc_sb.c (ext2fs_reserve_super_and_bgd): New function which 1997 + reserves space in the block bitmap using 1998 + ext2fs_super_and_bgd_loc. 1999 + 2000 + * initialize.c (ext2fs_initialize): Use 2001 + ext2fs_reserve_super_and_bgd to initialize the block bitmap. 2002 + 2003 +2003-08-20 Theodore Ts'o <tytso@mit.edu> 2004 + 2005 + * inode_io.c (ext2fs_inode_io_intern2), ext2fs.h: Add new function 2006 + allows the caller to pass in the inode data structure. 2007 + 2008 + * fileio.c (ext2fs_file_open2), ext2fs.h: Add new function which 2009 + allows the caller to pass in the inode to be used in the 2010 + file I/O. 2011 + 2012 + * ext2_fs.h: Add a backup of the location of the journal inode 2013 + blocks to the superblock. 2014 + 2015 + * mkjournal.c (write_journal_inode): Save the location of the 2016 + journal inode to the backup location in the superblock. 2017 + 2018 +2003-08-01 Philipp Thomas <pthomas@suse.de> 2019 + 2020 + * alloc.c, badblocks.c, bb_inode.c, bitmaps.c, block.c, bmap.c, 2021 + bmove.c, brel_ma.c, closefs.c, dblist.c, dblist_dir.c, 2022 + dir_iterate.c, dirblock.c, dupfs.c, expanddir.c, ext2fs.h, 2023 + ext_attr.c, fileio.c, freefs.c, get_pathname.c, icount.c, 2024 + initialize.c, inode.c, inode_io.c, irel_ma.c, mkdir.c, 2025 + mkjournal.c, namei.c, newdir.c, openfs.c, rs_bitmap.c, 2026 + rw_bitmaps.c, test_io.c, unix_io.c: ext2fs_getmem(), 2027 + ext2fs_free_mem(), and ext2fs_resize_mem() all now take a 2028 + 'void *' instead of a 'void **' in order to avoid pointer 2029 + aliasing problems with GCC 3.x. 2030 + 2031 +2003-07-25 Theodore Ts'o <tytso@mit.edu> 2032 + 2033 + * Release of E2fsprogs 1.34 2034 + 2035 +2003-07-06 Theodore Ts'o <tytso@mit.edu> 2036 + 2037 + * kernel-jbd.h, flushb.c: Fix gcc -Wall nitpicks (indented cpp 2038 + directives) 2039 + 2040 + * ext2_types.h.in, initialize.c: Fix gcc -Wall nitpicks 2041 + (don't use #elsif) 2042 + 2043 + * ismounted.c: Fix gcc -Wall nitpicks (Don't use exit as a goto label) 2044 + 2045 + * llseek.c: Fix gcc -Wall nitpicks (don't use #elsif) 2046 + 2047 + * lookup.c, read_bb.c: Fix gcc -Wall nitpicks (indent 2048 + non-traditional #pragma) 2049 + 2050 + * test_io.c: Fix gcc -Wall nitpicks (const/unsigned type issues) 2051 + 2052 +2003-06-24 <tytso@snap.thunk.org> 2053 + 2054 + * badblocks.c, ext2fs.h (ext2fs_u32_list_find, 2055 + ext2fs_u32_list_test, ext2fs_u32_list_del, 2056 + ext2fs_badblocks_list_del): Add functions to delete a 2057 + block from the badblocks list. 2058 + * tst_badblocks.c: Add test cases for ext2fs_badblocks_list_del(). 2059 + 2060 +2003-05-21 Theodore Ts'o <tytso@mit.edu> 2061 + 2062 + * getsectsize.c (ext2fs_get_device_sectsize): New function which 2063 + returns the hardware sector size (if it is available). 2064 + 2065 +2003-05-13 Theodore Ts'o <tytso@mit.edu> 2066 + 2067 + * unix_io.c: Add #ifdef NO_IO_CACHE which disables all userspace 2068 + caching by the unix_io layer. Not enabled, only for 2069 + debugging. 2070 + 2071 +2003-05-05 Theodore Ts'o <tytso@mit.edu> 2072 + 2073 + * test_io.c: Pay attention to the environment variables 2074 + TEST_IO_LOGFILE, TEST_IO_FLAGS, and TEST_IO_BLOCK to 2075 + determine whether or not we should log io activity, and to 2076 + where. 2077 + 2078 +2003-05-03 Theodore Ts'o <tytso@mit.edu> 2079 + 2080 + * tst_badblocks.c (file_test): Use tmpfile() instead of mktemp(). 2081 + 2082 +2003-04-29 Theodore Ts'o <tytso@mit.edu> 2083 + 2084 + * getsize.c (ext2fs_get_device_size): Allow windows code to get 2085 + the resize for filesystems that are in regular files. 2086 + 2087 +2003-04-21 Theodore Ts'o <tytso@mit.edu> 2088 + 2089 + * Release of E2fsprogs 1.33 2090 + 2091 +2003-04-21 Theodore Ts'o <tytso@mit.edu> 2092 + 2093 + * Makefile.in: Use DYLD_LIBRAY_PATH so that "make check" works on 2094 + Darwin systems when building with shared libraries. 2095 + 2096 +2003-04-18 Theodore Ts'o <tytso@mit.edu> 2097 + 2098 + * unix_io.c: Use __CYGWIN__ instead of CYGWIN. 2099 + 2100 +2003-04-17 Theodore Ts'o <tytso@mit.edu> 2101 + 2102 + * getsize.c: Add Cygwin/Windows version of ext2fs_get_device_size() 2103 + 2104 +2003-04-12 Theodore Ts'o <tytso@mit.edu> 2105 + 2106 + * unix_io.c (raw_read_blk): Add Cygwin support (the Windows block 2107 + device only accepts sector aligned read requests. 2108 + 2109 + * ismounted.c (check_mntent_file): Deal with OS's that don't 2110 + define MNTOPT_RO. 2111 + 2112 + * imager.c: If the OS doesn't define ssize_t, typedef it to int. 2113 + 2114 +2003-04-11 Theodore Ts'o <tytso@mit.edu> 2115 + 2116 + * ext2_fs.h (EXT2_FEATURE_RO_COMPAT_BTREE_DIR): Comment out unused 2117 + feature flag 2118 + 2119 +2003-03-30 Theodore Ts'o <tytso@mit.edu> 2120 + 2121 + * Makefile.in: Use the compile_et --build-tree option. 2122 + 2123 +2003-03-14 Theodore Ts'o <tytso@mit.edu> 2124 + 2125 + * getsize.c: Add support for Apple Darwin's ioctl to get the hard 2126 + disk size. 2127 + 2128 + * badblocks.c (ext2fs_u32_list_count), ext2fs.h: Add new function 2129 + which returns the number of entries in the list. 2130 + 2131 +2003-03-10 Theodore Ts'o <tytso@mit.edu> 2132 + 2133 + * fileio.c (ext2fs_file_lseek): Fix bug added when adding 64-bit 2134 + support; avoid null dereference when ret_pos is NULL. 2135 + 2136 +2003-03-06 Theodore Tso <tytso@mit.edu> 2137 + 2138 + * ext2_types.h.in: Don't redefine types if other e2fsprogs 2139 + *_types.h files have been included already. 2140 + 2141 + * kernel-jbd.h: Use C99 variadic cpp macros if not using GCC. 2142 + (Older GCC's don't support the C99 variadic macros.) 2143 + 2144 + * flushb.c (ext2fs_sync_device), 2145 + ismounted.c (ext2fs_check_mount_point): Avoid GCC extension: 2146 + #warning not supported by Solaris suncc 2147 + 2148 + * ext2_ext_attr.h: Avoid GCC extension: 0 length arrays in 2149 + structure definition. Not needed for now in 2150 + ext2_ext_attr_entry. 2151 + 2152 +2003-01-25 Theodore Ts'o <tytso@mit.edu> 2153 + 2154 + * dirhash.c: Fix gcc -Wall nits. 2155 + 2156 +2003-01-22 Theodore Ts'o <tytso@mit.edu> 2157 + 2158 + * unix_io.c (unix_write_blk): Fix up GCC -Wall nits. 2159 + 2160 +2003-01-21 Theodore Ts'o <tytso@mit.edu> 2161 + 2162 + * fileio.c (ext2fs_file_read, ext2_file_lseek, 2163 + ext2_file_get_size): Add 64-bit support. 2164 + 2165 + * ext2fs.h (EXT2_I_SIZE): Add macro which caluates a 64bit size 2166 + from i_size and i_size_high. 2167 + 2168 +2003-01-19 Theodore Ts'o <tytso@mit.edu> 2169 + 2170 + * initialize.c (ext2fs_initialize): If the user specifies a really 2171 + large number of inodes, then reduce the number of blocks 2172 + per group until we find a workable set of filesystem 2173 + parameters. 2174 + 2175 + * ext2_err.et.in (EXT2_ET_TOO_MANY_INODES): Add new error code. 2176 + 2177 +2002-11-09 Theodore Ts'o <tytso@mit.edu> 2178 + 2179 + * Release of E2fsprogs 1.32 2180 + 2181 +2002-11-09 Theodore Ts'o <tytso@mit.edu> 2182 + 2183 + * unix_io.c (find_cached_block, reuse_cache, unix_read_blk, 2184 + unix_write_blk): Optimize routines so that we don't end up 2185 + searching the cache twice when a block isn't in the 2186 + cache. If reads are larger than READ_DIRECT_SIZE, don't 2187 + let them go through the cache. 2188 + 2189 + * unix_io.c (find_cached_block): Fixed bug which caused some clean 2190 + blocks to be erroneously marked as dirty, so they would 2191 + get written back to the disk before they are evicted from 2192 + the cache. Harmless, but it slows down e2fsck 2193 + significantly. 2194 + 2195 +2002-11-08 Theodore Ts'o <tytso@mit.edu> 2196 + 2197 + * Release of E2fsprogs 1.31 2198 + 2199 +2002-11-08 <tytso@snap.thunk.org> 2200 + 2201 + * Makefile.in (check): Skip trying to compile test_byteswap 2202 + if --disable-byteswaap had been given to configure. 2203 + 2204 +2002-11-07 <tytso@snap.thunk.org> 2205 + 2206 + * closefs.c (write_bgdesc, ext2fs_flush): Fix bug in meta_bg 2207 + support when the MASTER_SB_ONLY flag is set. Some of 2208 + the descriptor blocks that should have been written out 2209 + were getting skipped. 2210 + 2211 +2002-10-31 Theodore Ts'o <tytso@mit.edu> 2212 + 2213 + * Release of E2fsprogs 1.30 2214 + 2215 +2002-10-31 Theodore Ts'o <tytso@mit.edu> 2216 + 2217 + * ext2_fs.h: Add support for a new inode flag, which is to be used 2218 + for indicating the top of directory hierarchies for the 2219 + Orlov block allocator. 2220 + 2221 + * ismounted.c (check_mntent, check_mntent_file): Add better 2222 + support for loopback-mounted filesystems. Check /etc/mtab 2223 + if /proc/mounts doesn't turn up any mount flags, since 2224 + /etc/mtab has the loopback image filename, instead of 2225 + /dev/loop0. Also, check based on st_dev and st_ino, so 2226 + that if a relative pathname or a pathnames using symbolic 2227 + links are used, we can detect the the filesystem correctly 2228 + in those cases. (Addresses Sourceforge bug #619119) 2229 + 2230 + * flushb.c (ext2fs_sync_device): If the BLKFLSBUF ioctl succeeds, 2231 + don't try the FDFLUSH ioctl that was required for floppies 2232 + with older kernels. This avoids needless whining from the 2233 + MD device driver. (Addresses Sourceforge bug #545832). 2234 + 2235 + * openfs.c (ext2fs_open): Fix bug which caused us to pass the 2236 + wrong group_block to ext2fs_descriptor_block_loc if we're 2237 + using the backup superblock/block group descriptors. 2238 + (ext2fs_descriptor_block_loc): If we're using the backup 2239 + superblock descriptors, use the backup descriptor block in 2240 + the next block group. 2241 + 2242 +2002-10-30 Theodore Ts'o <tytso@mit.edu> 2243 + 2244 + * alloc_tables.c (ext2fs_allocate_group_table): Allocate the inode 2245 + table so that it buts up against the bitmap blocks, to 2246 + avoid block fragmentation. 2247 + 2248 + * closefs.c (write_bgdesc), initalize.c (ext2fs_initialize): Fix 2249 + bug; only allocate group descriptor blocks up to 2250 + s_first_meta_bg. 2251 + 2252 +2002-10-25 Theodore Ts'o <tytso@mit.edu> 2253 + 2254 + * ext2_fs.h: Add a new superblock field, s_mkfs_time, so that we 2255 + know when a filesystem was created. (Sometimes this can 2256 + be useful...) 2257 + 2258 + * initialize.c (ext2fs_initialize): Set the s_mkfs_time field. 2259 + 2260 +2002-10-20 Theodore Ts'o <tytso@valinux.com> 2261 + 2262 + * ext2_fs.h (EXT3_DEFM_JMODE): Add new default mount options for 2263 + the journal data mode. 2264 + 2265 + * closefs.c (ext2fs_flush, write_bgdesc), ext2_fs.h, ext2fs.h, 2266 + openfs.c (ext2fs_descriptor_block_loc, ext2fs_open), initialize.c 2267 + (ext2fs_initialize), swapfs.c (ext2fs_swap_super): Add support for 2268 + the meta_blockgroup filesystem format. 2269 + 2270 +2002-10-15 <tytso@snap.thunk.org> 2271 + 2272 + * ext2_fs.h: Add new field in superblock for default mount options. 2273 + 2274 +2002-10-13 Theodore Ts'o <tytso@mit.edu> 2275 + 2276 + * ext2fs.h: Add #include of header files necessary for ext2fs.h to 2277 + compile cleanly. 2278 + 2279 +2002-10-02 Theodore Y. Ts'o <tytso@mit.edu> 2280 + 2281 + * rw_bitmaps.c (ext2fs_write_block_bitmap, 2282 + ext2fs_read_block_bitmap): Don't set the CHANGED bit just 2283 + because the bitmap is getting written to disk. Make 2284 + ext2fs_swap_bitmap be a static function, since it's not 2285 + intended to be exported. 2286 + 2287 + * swapfs.c (ext2fs_swap_super): Byte-swap the hash seed 2288 + 2289 +2001-09-24 Theodore Tso <tytso@mit.edu> 2290 + 2291 + * Release of E2fsprogs 1.29 2292 + 2293 +2001-08-31 Theodore Tso <tytso@thunk.org> 2294 + 2295 + * Release of E2fsprogs 1.28 2296 + 2297 +2002-08-31 Theodore Ts'o <tytso@valinux.com> 2298 + 2299 + * dblist.c (ext2fs_dblist_sort): New function which allows the 2300 + caller to pass in a special sort comparison function. 2301 + 2302 +2002-08-20 Theodore Ts'o <tytso@mit.edu> 2303 + 2304 + * valid_blk.c (ext2fs_inode_has_valid_blocks): Fix bug which 2305 + failed to accurately characterize non-standard slow 2306 + symlinks. (Which don't appear in practice on real-life 2307 + systems, fortunately.) 2308 + 2309 +2002-08-17 Theodore Ts'o <tytso@mit.edu> 2310 + 2311 + * Makefile.in: Remove inode_io.o from the standard object files, 2312 + and only build it if debugfs is enabled (it requires 2313 + fileio.o, which is only built if --disable-debugfs isn't 2314 + specified to configure). 2315 + 2316 + * dirhash.c (ext2fs_dirhash): Change the MD4 hash in a backwards 2317 + incompatible way so that it is no longer 2318 + endian-dependent. Add the TEA hash. Allow the seed 2319 + parameter to be optional. 2320 + 2321 + * ext2_fs.h: Remove the HALF_MD4_SEED and HALF_MD4_64 hashes. 2322 + These features are all now in the HALF_MD4 hash. Add 2323 + definition for EXT2_HASH_TEA. 2324 + 2325 + * ext2fs.h (ext2fs_dirhash): Change function prototype so it takes 2326 + a pointer instead of an array. 2327 + 2328 +2002-08-16 Theodore Ts'o <tytso@mit.edu> 2329 + 2330 + * ext2_err.et.in (EXT2_ET_BAD_EA_BLOCK_NUM): New error code 2331 + 2332 + * ext2fs.h (ext2fs_inode_data_blocks): New function which returns 2333 + the number of data blocks used by an inode exclusive of 2334 + the EA block. 2335 + 2336 + * ext_attr.c (ext2fs_adjust_ea_refcount): New function which 2337 + adjusts the reference count in an extended attribute block. 2338 + 2339 + * valid_blk.c (ext2fs_inode_has_valid_blocks): Add code to 2340 + correctly deal with extended attribute blocks in symbolic 2341 + links. 2342 + 2343 +2002-08-13 <tytso@snap.thunk.org> 2344 + 2345 + * Makefile.in: Move dupfs.o and test_io.o from the 2346 + needed-by-debugfs object list to the needed-by-resizer 2347 + object list. Fixes compile problem if the system is built 2348 + with only --disable-debugfs. 2349 + 2350 +2002-07-29 Theodore Ts'o <tytso@mit.edu> 2351 + 2352 + * link.c (ext2fs_link): When adding a new link to a directory, 2353 + clear the HTREE bit. 2354 + 2355 +2002-07-23 Theodore Ts'o <tytso@mit.edu> 2356 + 2357 + * dirhash.c (ext2fs_dirhash): Fix bug which caused MD4 2358 + calculations for names > 32 characters to be completely 2359 + bogus. Changed MD4 calculation to match what is currently 2360 + being used in the CVS gkernel tree. 2361 + 2362 +2002-07-19 Theodore Ts'o <tytso@mit.edu> 2363 + 2364 + * ext2_fs.h: Add s_hash_seed and s_def_hash_version to the 2365 + superblock definition. 2366 + 2367 + * badblocks.c, freefs.c, ext2fs.h: Use the badblocks functions to 2368 + create a set of u32_list functions. 2369 + 2370 + * dirhash.c (halfMD4Transform): Shift the hash by one bit, 2371 + since that's required by the directory indexing code. 2372 + 2373 +2002-07-14 Theodore Ts'o <tytso@mit.edu> 2374 + 2375 + * ext2fs.h, read_bb_file.c: Change private to priv_data, to avoid 2376 + using a C++ reserved word. 2377 + 2378 + * unix_io.c (unix_open): Only attempt the setrlimit workaround if 2379 + the kernel version is 2.4.10 -- 2.4.17, since otherwise an 2380 + old version of glibc (built against 2.2 headers) will 2381 + interact badly with the workaround to actually cause more 2382 + problems. I hate it when the glibc folks think they're 2383 + being smarter than the kernel.... 2384 + 2385 +2002-06-28 Andreas Dilger <adilger@clusterfs.com> 2386 + 2387 + * ext2_fs.h: Add superblock field for reserved group descriptors. 2388 + 2389 +2002-06-28 Theodore Ts'o <tytso@mit.edu> 2390 + 2391 + * bitops.h: Add #define's for ext2fs_{l,b}e{32,16}_to_cpu and 2392 + ext2fs_cpu_to_{l,b}e{32,16} 2393 + 2394 +2002-06-27 Theodore Ts'o <tytso@mit.edu> 2395 + 2396 + * ismounted.c (check_mntent): In AIX 4.3, MOUNTED isn't defined. 2397 + Add appropriate fallbacks in this case. 2398 + 2399 +2002-06-26 Theodore Ts'o <tytso@mit.edu> 2400 + 2401 + * dirhash.c (ext2fs_dirhash): Change function signature to support 2402 + a hash seed, and to return the minor hash (for 64-bit hash 2403 + support). Add support for the half MD4, half MD4 with 2404 + seed, and half MD4 with seed and 64 bits. 2405 + 2406 +2002-06-15 Theodore Ts'o <tytso@mit.edu> 2407 + 2408 + * ext2_fs.h (EXT2_DIRSYNC_FL): Add new file. 2409 + 2410 +2002-06-09 Andreas Dilger <adilger@clusterfs.com> 2411 + 2412 + * ext2_fs.h: Add macros for maximum block/inode counts: 2413 + EXT2_INODES_PER_BLOCK, EXT2_MAX_BLOCKS_PER_GROUP, 2414 + and EXT2_MAX_INODES_PER_GROUP. 2415 + 2416 + * openfs.c (ext2fs_open): Check that the number of blocks in a group 2417 + is less than 2^16, otherwise we need an INCOMPAT flag (not 2418 + in existence yet, if ever) to open such a filesystem. 2419 + 2420 + * initialize.c (ext2fs_initialize): Limit the number of blocks and 2421 + inodes in a group to less than 2^16. 2422 + 2423 +2002-06-09 Andreas Dilger <adilger@clusterfs.com> 2424 + 2425 + * ext2_fs.h: Further minor cleanups of the header. Consolidate 2426 + some checks for __KERNEL__ into one place. 2427 + 2428 +2002-05-22 Andreas Dilger <adilger@clusterfs.com> 2429 + 2430 + * ext2_fs.h: Remove macros accessing u.ext2_sb field and use 2431 + the EXT2_SB() macro instead. Remove kernel function 2432 + prototypes also. This matches the 2.5 kernel, and 2433 + is also cleaner for other reasons. Whitespace cleanup. 2434 + 2435 +2002-05-21 Theodore Ts'o <tytso@mit.edu> 2436 + 2437 + * ext2_ext_attr.h: Update to V2 version of the Bestbits format. 2438 + 2439 +2002-05-16 Andreas Dilger <adilger@clusterfs.com> 2440 + 2441 + * ext2_fs.h: Change limits to support filesystems with 8k blocks. 2442 + 2443 + * initialize.c (ext2fs_initialize): Remove assumption that 2444 + blocksizes are always <= 4k. 2445 + 2446 +2002-05-11 Theodore Ts'o <tytso@mit.edu> 2447 + 2448 + * bmap.c (ext2fs_bmap): Fix bug which caused ext2fs_bmap to fail 2449 + silently if inode pointer is NULL (and ext2fs_bmap is 2450 + expected to read the inode itself). 2451 + 2452 +2002-04-27 Theodore Ts'o <tytso@mit.edu> 2453 + 2454 + * ismounted.c (check_mntent_file, is_swap_device): Verify that the 2455 + file we are checking is a block device file before looking 2456 + at st_rdev, since it's not valid for normal files. 2457 + (is_swap_device): Move so that it is outside the 2458 + HAVE_MNTENT_H, so that it is always built. 2459 + 2460 +2002-03-11 Theodore Tso <tytso@mit.edu> 2461 + 2462 + * dirblock.c (ext2fs_read_dir_block2, ext2fs_write_dir_block): New 2463 + functions which take an extra flags argument. The flag 2464 + EXT2_DIRBLOCK_V2_STRUCT will reverse when the name_len 2465 + field is byte swampped on big-endian machines, since in 2466 + the V2 structure, name_len is a char field which is 2467 + doesn't need to be byte swapped --- except if an 2468 + old-style kernel had byte-swapped the name_len field 2469 + as part of the V1 structure. 2470 + 2471 + * ext2_err.et.in (EXT2_ET_DIRHASH_UNSUPP): New error code 2472 + 2473 + * dirhash.c (ext2fs_dirhash): New function which calculates the 2474 + hash for a filename in an indexed directory. 2475 + 2476 +2002-03-08 Theodore Tso <tytso@mit.edu> 2477 + 2478 + * Release of E2fsprogs 1.27 2479 + 2480 +2002-03-07 Theodore Tso <tytso@mit.edu> 2481 + 2482 + * ext2fs.h (ext2fs_inode_io_intern): Add missing function prototype. 2483 + 2484 + * bmap.c, fileio.c, inode_io.c, tst_badblocks.c, 2485 + tst_byteswap.c: Fix gcc -Wall complaints 2486 + 2487 + * Makefile.in (check): Use LD_LIBRARY_PATH to run test programs. 2488 + (From Philipp Thomas <pthomas@suse.de>) 2489 + 2490 +2002-02-25 Theodore Tso <tytso@mit.edu> 2491 + 2492 + * ext2_fs.h: Add structure definitions for the directory indexing 2493 + extension. 2494 + 2495 +2002-02-23 Theodore Tso <tytso@mit.edu> 2496 + 2497 + * unix_io.c (unix_open): Fix 2.4 resource limit workaround so that 2498 + it doesn't break things on mis32, sparc32, and alpha 2499 + platforms. 2500 + 2501 +2002-02-21 Theodore Tso <tytso@mit.edu> 2502 + 2503 + * ismounted.c (is_swap_device): Fix file descriptor/memory leak; 2504 + we were missing an fclose(). 2505 + 2506 +2002-02-20 Theodore Tso <tytso@mit.edu> 2507 + 2508 + * Makefile.in, inode_io.c, ext2fs.h, ext2_err.et.in: Add new io 2509 + abstraction interface which exports an ext2 inode. 2510 + 2511 + * ext2fs.h, fileio.c (ext2fs_file_flush): Export ext2fs_file_flush 2512 + as a public interface. Change void * to const void * in 2513 + ext2fs_file_write's interface. 2514 + 2515 + * test_io.c (test_close), unix_io.c (unix_close): Remove unneeded 2516 + conditional; save a few bytes. 2517 + 2518 +2002-02-12 Theodore Tso <tytso@mit.edu> 2519 + 2520 + * Makefile.in (tst_badblocks): Add some extra .o files when 2521 + linking the debugging program tst_badblocks which are 2522 + needed if we aren't compiling with inline functions enable. 2523 + 2524 + * kernel-list.h (__inline__): On non-gcc and non-Watcom compilers, 2525 + define away __inline__ since it may not be supported. 2526 + 2527 + * kernel-jbd.h (jbd_debug): For systems that don't do STDC, use a 2528 + stripped down jbd_debug that doesn't use variadic 2529 + arguments. This will cause warnings under AIX, but things 2530 + should still build. 2531 + 2532 +2002-02-03 Theodore Tso <tytso@thunk.org> 2533 + 2534 + * Release of E2fsprogs 1.26 2535 + 2536 +2002-02-03 Theodore Tso <tytso@mit.edu> 2537 + 2538 + * mkdir.c (ext2fs_mkdir): Change to use ext2fs_inode_alloc_stats2 2539 + so that the number of directories in use is adjusted 2540 + appropriately. 2541 + 2542 + * alloc_stats.c (ext2fs_inode_alloc_stats2): Add new function 2543 + which optionally will modify the number of directories 2544 + count. 2545 + 2546 +2002-01-03 Theodore Tso <tytso@mit.edu> 2547 + 2548 + * dir_iterate.c (ext2fs_dir_iterate2, ext2fs_process_dir_block): 2549 + Add support for a new flag, DIRENT_FLAG_INCLUDE_REMOVED, 2550 + which will return deleted directory entries. 2551 + ext2fs_dir_iterate2 takes a new callback function which 2552 + is identical with the one used by 2553 + ext2fs_dblist_dir_iterate(). If the directory entry is 2554 + deleted, the callback function will be called with the 2555 + entry paraemter set to DIRENT_DELETED_FILE. 2556 + 2557 + * Makefile.in, alloc_stats.c (ext2fs_inode_alloc_stats, 2558 + ext2fs_block_alloc_stats): New functions which update 2559 + block/inode allocation statistics in the bitmaps, block 2560 + group descriptors, and superblock. 2561 + 2562 + * mkjournal.c (mkjournal_proc), mkdir.c (ext2fs_mkdir), 2563 + expanddir.c (expand_dir_proc), bb_inode.c 2564 + (clear_bad_block_proc, set_bad_block_proc, 2565 + ext2fs_update_bb_inode), alloc.c (ext2fs_alloc_block): 2566 + Update to use new block/inode allocation statistics. 2567 + 2568 +2001-12-24 Theodore Tso <tytso@mit.edu> 2569 + 2570 + * ismounted.c (is_swap_device): New function used by 2571 + ext2fs_check_if_mounted and ext2fs_check_mount_point which 2572 + determines whether or not the specified device is a swap 2573 + device by using /proc/swaps. More bulletproofing for 2574 + idiotic/careless system administrators! 2575 + 2576 + * ext2fs.h, openfs.c (ext2fs_open), initialize.c 2577 + (ext2fs_initialize), mkdir.c (ext2fs_mkdir): Add a new 2578 + field to struct_ext2_filsys, umask. This field is 2579 + initialize to 022, and affects ext2fs_mkdir in the obvious 2580 + way. (In the future umask should also affect new file 2581 + creation routines, but the fileio functions don't 2582 + currently support this yes.) 2583 + 2584 + * ismounted.c (check_mntent_file): Stat all of the entries in 2585 + /etc/mtab and/or /proc/mounts in order to catch dim-witted 2586 + system administrators who might have created alias 2587 + devices. 2588 + 2589 +2001-12-23 Theodore Tso <tytso@mit.edu> 2590 + 2591 + * Makefile.in, jfs_user.h: Move linux/jbd.h to 2592 + ext2fs/kernel-jbd.h, to avoid using the system header 2593 + file version of hbd.h when using diet glibc (since it 2594 + forcibly adds /usr/include to the beginning of the 2595 + include search path.) 2596 + 2597 + * kernel-jbd.h, kernel-list.h, jfs_compat.h: Move files from 2598 + include/linux directory. 2599 + 2600 +2001-12-16 Theodore Tso <tytso@mit.edu> 2601 + 2602 + * bitops.h (ext2fs_mark_generic_bitmap, ext2fs_unmark_generic_bitmap), 2603 + ext_attr.c (ext2fs_read_ext_attr, ext2fs_write_ext_attr), 2604 + fileio.c (ext2fs_file_write): Fix gcc -Wall nits 2605 + 2606 + * Makefile.in, jfs_user.h: linux/jfs.h has been renamed to 2607 + linux/jbd.h 2608 + 2609 +2001-12-03 Theodore Tso <tytso@mit.edu> 2610 + 2611 + * unix_io.c (unix_open): Make sure the ulimit workaround works 2612 + regardless of the version of glibc which is used to 2613 + compild e2fsprogs. 2614 + 2615 +2001-11-26 Theodore Tso <tytso@mit.edu> 2616 + 2617 + * unix_io.c (unix_open): Work around a bug in 2.4.10+ kernels by 2618 + trying to unset the filesize limit if at all possible, 2619 + if a block device is getting opened. (The filesize limit 2620 + shouldn't be applied against writes to a block device, but 2621 + starting in 2.4.10, the kernel is doing this.) 2622 + 2623 +2001-11-05 Theodore Tso <tytso@mit.edu> 2624 + 2625 + * mkjournal.c (ext2fs_add_journal_inode): When creating a .journal 2626 + file on adding a journal to an already-mounted filesystem, 2627 + try to clear the ext2 file attributes on an already 2628 + existing .journal file so that we don't fail if on a 2629 + partially added journal to the filesystem. 2630 + 2631 + * ext2_fs.h: Define a new ext2 file attribute, EXT2_NOTAIL_FL, 2632 + which signals that a particular inode should not have the 2633 + last bits of data (the "tail") be merged with another 2634 + file. This is necessary to keep LILO happy. 2635 + 2636 +2001-09-20 Theodore Tso <tytso@thunk.org> 2637 + 2638 + * Release of E2fsprogs 1.25 2639 + 2640 +2001-09-16 Theodore Tso <tytso@mit.edu> 2641 + 2642 + * ext2_ext_attr.h: Remove unneeded #include of <linux/config.h> 2643 + which was breaking the build on the Hurd. (Addresses 2644 + Debian bug #112414). 2645 + 2646 +2001-09-13 Theodore Ts'o <tytso@mit.edu> 2647 + 2648 + * ismounted.c (check_mntent_file): We now validate the entry in 2649 + /etc/mtab to make sure the filesystem is really mounted, 2650 + since some broken distributions (read: Slackware) have 2651 + buggy boot scripts that don't initialize /etc/mtab before 2652 + checking non-root filesystems. (Slackware also doesn't 2653 + check the root filesystem separately, and reboot if the 2654 + root filesystem had changes applied to it, which is 2655 + dangerous and broken.) 2656 + 2657 +2001-09-02 Theodore Tso <tytso@thunk.org> 2658 + 2659 + * Release of E2fsprogs 1.24a 2660 + 2661 +2001-08-30 Theodore Tso <tytso@thunk.org> 2662 + 2663 + * Release of E2fsprogs 1.24 2664 + 2665 +2001-08-30 Theodore Tso <tytso@valinux.com> 2666 + 2667 + * getsize.c (ext2fs_get_device_size): Back out BLKGETSIZE64 2668 + changes, since the ioctl number has been reused by another 2669 + unofficial patch. 2670 + 2671 +2001-08-15 Theodore Tso <tytso@valinux.com> 2672 + 2673 + * Release of E2fsprogs 1.23 2674 + 2675 +2001-08-05 Theodore Tso <tytso@valinux.com> 2676 + 2677 + * alloc.c (ext2fs_new_inode, ext2fs_new_block): Use the fast 2678 + version of the bitmap test routines to speed up these 2679 + routines. (At some point I may want to make these 2680 + routines use the find_first_bit functions, but that will 2681 + add a lot of complexity since it means that these 2682 + functions will have to break the bitmap abstraction 2683 + boundary. It's not clear it's worth it.) 2684 + 2685 + * mkjournal.c (mkjournal_proc): Remember the last block allocated 2686 + to speed up ext2fs_new_block(). 2687 + 2688 +2001-07-29 Theodore Tso <tytso@valinux.com> 2689 + 2690 + * finddev.c (scan_dir): Fix memory leak; we weren't calling 2691 + closedir() when exiting the function in all cases. 2692 + 2693 +2001-07-27 Theodore Tso <tytso@valinux.com> 2694 + 2695 + * mkjournal.c (ext2fs_create_journal_superblock): Set the first 2696 + block usable in the journal for external journals to be 2 2697 + or 3, depending on the blocksize, so that the existing 2698 + kernel code does the right thing. 2699 + 2700 + * getsize.c (ext2fs_get_device_size): Add support for the 2701 + BLKGETSIZE64 ioctl. (Ioctl defined by unofficial patches 2702 + from Ben LaHaise, but it's likely this interface won't 2703 + change.) 2704 + 2705 + * mkjournal.c (ext2fs_add_journal_device): Use the correct block 2706 + when writing the journal superblock, too. (Oops! Needed 2707 + to make 1k filesystems with external journal to work.) 2708 + 2709 +2001-07-26 Theodore Tso <tytso@valinux.com> 2710 + 2711 + * mkjournal.c (ext2fs_add_journal_device): Use the correct block 2712 + to find the journal superblock if the blocksize is 1024. 2713 + 2714 +2001-07-21 Theodore Tso <tytso@valinux.com> 2715 + 2716 + * ext2_err.et.in (EXT2_ET_LOAD_EXT_JOURNAL): Add new error code 2717 + 2718 +2001-07-20 Theodore Tso <tytso@valinux.com> 2719 + 2720 + * ext_attr.c (ext2fs_write_ext_attr): When writing the extended 2721 + attribute block, set the filesystem changed bit. 2722 + 2723 + * bitops.h (ext2fs_find_first_bit_set, ext2fs_find_next_bit_set): 2724 + Comment out these functions since we're not using them. 2725 + 2726 +2001-07-10 Theodore Tso <tytso@valinux.com> 2727 + 2728 + * closefs.c (write_primary_superblock): After writing changes to 2729 + the primary superblock, update the original superblock 2730 + copy so we don't have to re-write those changes in the 2731 + future. 2732 + (ext2fs_flush): Clear the superblock dirty flag after 2733 + we've flushed out changes to disk. 2734 + 2735 +2001-07-07 Theodore Tso <tytso@valinux.com> 2736 + 2737 + * bitops.h (ext2fs_find_first_bit_set): Use %esi instead of %ebx 2738 + to avoid register conflicts when compiling in PIC mode. 2739 + 2740 +2001-07-04 Theodore Tso <tytso@valinux.com> 2741 + 2742 + * bitops.h (ext2fs_find_first_bit_set, ext2fs_find_next_bit_set): 2743 + Add new functions (C and in i386 assembler) which quickly 2744 + find bits set in a bitmask. 2745 + 2746 +2001-06-23 Theodore Tso <tytso@valinux.com> 2747 + 2748 + * Makefile.in, ext_attr.c, ext2_attr.c, ext2fs.h: Add new files 2749 + ext2_ext_attr.h and ext_attr.c for extended attributes 2750 + support. 2751 + 2752 + * Release of E2fsprogs 1.22 2753 + 2754 +2001-06-22 Theodore Tso <tytso@valinux.com> 2755 + 2756 + * mkjournal.c (ext2fs_add_journal_inode): Move close of file 2757 + descriptor so that adding a journal to a mounted 2758 + filesystem doesn't die. (Fixes a bug accidentally 2759 + introduced in e2fsprogs 1.21.) 2760 + 2761 + * mkjournal.c (ext2fs_add_journal_inode): Only use fchflags if 2762 + HAVE_CHFLAGS and UF_NODUMP are defined, since the Hurd has 2763 + fchflags without defining UF_NODUMP. (Addresses Debian 2764 + bug #101361) 2765 + 2766 + * flushb.c: Use platform independent method of defining the 2767 + BLKFLSBUF and FDFLUSH ioctl's. Also include sys/mount.h 2768 + since on newer glibc's BLKFLSBUF is defined there. 2769 + 2770 + * bitops.h: The C language versions of ext2fs_swab16/32 need to be 2771 + included if EXT2FS_ENABLE_SWAPFS is defined, since we need 2772 + to support byte swapping even if we don't support the 2773 + conversion functions. (Fixes Debian bug #101686). 2774 + 2775 + * dirblock.c (ext2fs_read_dir_block): Remove use of dir_entry_2 2776 + since the byte-swapping code all assumes the 2777 + ext2_dir_entry structure. (It's a question of whether or 2778 + not name_len should be byte-swapped or not, and whether 2779 + it's a 16 bit or 8 bit field.) 2780 + 2781 +2001-06-15 Theodore Tso <tytso@valinux.com> 2782 + 2783 + * Release of E2fsprogs 1.21 2784 + 2785 +2001-06-15 Theodore Tso <tytso@valinux.com> 2786 + 2787 + * Makefile.in: Fix bug in installation of ext2_types.h. It is a 2788 + file which is generated and is therefore found in the 2789 + build directory, not source directory. 2790 + 2791 + * ismounted.c (check_mntent_file): Use a test file in / to check 2792 + to see if the root filesystem is mounted read-only. This 2793 + protects against the case where /etc might not be on /, as 2794 + well as the case where /etc/mtab doesn't exist. (Both are 2795 + should-never happen scenarios, but you never know...) 2796 + 2797 +2001-06-14 Theodore Tso <tytso@valinux.com> 2798 + 2799 + * ismounted.c (ext2fs_check_if_mounted): Fix grammer in comment. 2800 + Remove unneeded #pragma argsused, since the arguments are 2801 + always used. 2802 + 2803 +2001-06-13 Theodore Tso <tytso@valinux.com> 2804 + 2805 + * ext2_types.h.in: If linux/types.h has been defined, then don't 2806 + try to redefine the typedefs. 2807 + 2808 + * Makefile.in (HFILES): Add ext2_types.h to the list of files 2809 + which should be installed. 2810 + 2811 + * ismounted.c (check_mntent_file): Work around GNU hurd brain 2812 + damage. Addresses Debian bug #100304. 2813 + 2814 + * Makefile.in: Limit some .o files from being included into the 2815 + library if --disable-debugfs, --disable-swapfs, 2816 + --disable-imager, or --disable-resizer are used. 2817 + 2818 +2001-06-12 Theodore Tso <tytso@valinux.com> 2819 + 2820 + * inode.c, tst_iscan.c: Stop using the compatibility badblocks 2821 + function, and use the ext2fs_badblocks_* functions 2822 + instead. 2823 + 2824 +2001-06-11 Theodore Tso <tytso@valinux.com> 2825 + 2826 + * Makefile.in, gen_bitmap.c, bitops.h: Move inline functions 2827 + ext2fs_mark_generic_bitmap and 2828 + ext2fs_unmark_generic_bitmap to gen_bitmap.c as normal 2829 + functions. (This saves space and doesn't significantly 2830 + change the speed of e2fsck on a P-III.) 2831 + 2832 + * ext2fs.h, bitops.h, block.c, bmap.c, closefs.c, dirblock.c, 2833 + inode.c, native.c, openfs.c, rw_bitmaps.c, swapfs.c: Only 2834 + include the byte-swapping logic if ENABLE_SWAPFS is turned 2835 + on or if we're on a big-endian machine. 2836 + 2837 + * initialize.c (ext2fs_initialize):Use WORDS_BIGENDIAN directly to 2838 + set EXT2_FLAG_SWAP_BYTES, instead of using 2839 + ext2fs_native_flag. 2840 + 2841 + * native.c (ext2fs_native_flag): Use WORDS_BIGENDIAN provided by 2842 + autoconf to determine whether or not return 2843 + EXT2_FLAG_SWAP_BYTES. 2844 + 2845 +2001-06-10 Theodore Tso <tytso@valinux.com> 2846 + 2847 + * Makefile.in: Remove the dependence on the libe2p library. 2848 + 2849 + * mkjournal.c (ext2fs_add_journal_inode): Replace use of fsetflags 2850 + with direct usage of the ioctl/fchflags so that we don't 2851 + have to depend on the libe2p library. 2852 + 2853 +2001-06-08 Theodore Tso <tytso@valinux.com> 2854 + 2855 + * ext2_types.h.in: Use unsigned ints in favor of unsigned longs 2856 + when trying to find a 32-bit wide type. 2857 + 2858 + * icount.c (insert_icount_el): Fix the code used to estimate the 2859 + size of the new icount array to be more intelligent, to 2860 + avoid reallocating the array too many times. Thanks to 2861 + Enrique Perez-Terron for pointing this out. 2862 + 2863 +2001-06-02 Theodore Tso <tytso@valinux.com> 2864 + 2865 + * valid_blk.c (ext2fs_inode_has_valid_blocks): Only check i_blocks 2866 + for a symlink to determine whether it is a fast symlink. 2867 + 2868 +2001-06-01 Theodore Tso <tytso@valinux.com> 2869 + 2870 + * Makefile.in, dosio.c, ext2_fs.h, ext2_types.h.in, ext2fs.h: 2871 + Move include/asm/types.h.in to lib/ext2fs/ext2_types.h.in. 2872 + 2873 +2001-05-25 Theodore Tso <tytso@valinux.com> 2874 + 2875 + * Release of E2fsprogs 1.20 2876 + 2877 +2001-05-25 Theodore Tso <tytso@valinux.com> 2878 + 2879 + * ismounted.c: More cleanups for ismounted.c, some from Andreas, 2880 + some to clean up Andreas's patches. Use strncpy instead 2881 + of strcpy to save the root's mountpoint. Clean up #ifdef 2882 + structure. Remove uneeded variable in testing/debug driver. 2883 + 2884 +2001-05-24 Andreas Dilger <adilger@turbolinux.com> 2885 + 2886 + * ismounted.c: Add check for root device which doesn't depend on 2887 + /etc/fstab or /proc/mounts to be correct. Don't call 2888 + endmntent() before we are done with mnt struct. 2889 + 2890 +2001-05-23 Theodore Tso <tytso@valinux.com> 2891 + 2892 + * ext2_err.et.in (EXT2_ET_JOURNAL_UNSUPP_VERSION): Added new error 2893 + code. 2894 + 2895 +2001-05-21 Theodore Tso <tytso@valinux.com> 2896 + 2897 + * ext2_fs.h: Change assignment of EXT2_FEATURE_COMPAT_DIR_INDEX to 2898 + make room for pre-existing usage of 2899 + EXT2_FEATURE_COMPAT_EXT_ATTR. Add flag EXT2_INDEX_FL with 2900 + the same codepoint as EXT2_BTREE_FL. 2901 + 2902 +2001-05-20 Theodore Tso <tytso@valinux.com> 2903 + 2904 + * ext2fs.h: #include <> instead of "" for ext2fs and et header 2905 + files, since they will be installed in /usr/include 2906 + 2907 +2001-05-14 Theodore Tso <tytso@valinux.com> 2908 + 2909 + * alloc.c, alloc_tables.c, badblocks.c, bb_compat.c, bb_inode.c, 2910 + bitmaps.c, bitops.c, block.c, bmap.c, bmove.c, brel_ma.c, 2911 + check_desc.c, closefs.c, cmp_bitmaps.c, dblist.c, 2912 + dblist_dir.c, dir_iterate.c, dirblock.c, dupfs.c, 2913 + expanddir.c, ext2_fs.h, fileio.c, finddev.c, flushb.c, 2914 + freefs.c, get_pathname.c, getsize.c, icount.c, imager.c, 2915 + initialize.c, inline.c, inode.c, irel_ma.c, ismounted.c, 2916 + link.c, lookup.c, mkdir.c, mkjournal.c, namei.c, native.c, 2917 + newdir.c, nt_io.c, openfs.c, read_bb.c, read_bb_file.c, 2918 + rs_bitmap.c, rw_bitmaps.c, swapfs.c, test_io.c, 2919 + tst_badblocks.c, tst_byteswap.c, tst_getsize.c, 2920 + tst_iscan.c, unix_io.c, unlink.c, valid_blk.c, version.c, 2921 + write_bb_file.c, ext2_fs.h: Moved file from include/linux. 2922 + Adjust all files in this directroy to include this file. 2923 + 2924 + * mkjournal.c (ext2fs_create_journal_superblock): Remove redundant 2925 + code. 2926 + 2927 +2001-05-05 Theodore Tso <tytso@valinux.com> 2928 + 2929 + * fileio.c (ext2fs_file_read): Factored out common code and 2930 + cleaned up function. Fixed a bug where if there was an 2931 + error reading from the disk, the number of bytes read 2932 + wasn't reliably set. (Fixes Debian bug #79163) 2933 + (ext2fs_file_write): Factored out common code and made 2934 + function more efficient; if writing a full block, don't 2935 + bother to do a read-modify-write cycle. 2936 + 2937 +2001-05-04 Theodore Tso <tytso@valinux.com> 2938 + 2939 + * dirblock.c (ext2fs_read_dir_block): Check for an directory 2940 + record length which isn't a multiple four, and treat that 2941 + as an invalid. Scan the directory and return an error 2942 + (EXT2_ET_DIR_CORRUPTED) if the directory records are 2943 + corrupted. 2944 + (ext2fs_write_dir_block): If while byte-swapping the 2945 + directory block, if there's an error, abort and return 2946 + EXT2_ET_DIR_CORRUPTED. 2947 + 2948 +2001-05-02 Theodore Tso <tytso@valinux.com> 2949 + 2950 + * ext2fs.h (EXT2_FLAG_IMAGE_FILE): Add new flag, and add 2951 + image_header field in the ext2_filsys structure 2952 + 2953 + * block.c (block_iterate_ind, block_iterate_dind, block_iterate_tind): 2954 + * inode.c (ext2fs_read_inode): 2955 + * rw_bitmaps.c (read_bitmaps): 2956 + * openfs.c (ext2fs_open): Add support for EXT2_FLAG_IMAGE_FILE 2957 + 2958 + * imager.c (ext2fs_image_bitmap_read): Fix bug in imager to make 2959 + sure the full bitmap is saved. 2960 + 2961 +2001-05-01 Theodore Tso <tytso@valinux.com> 2962 + 2963 + * e2image.h (struct ext2_image_hdr): Add space for the device name 2964 + in the image header. 2965 + 2966 + * dir_iterate.c (ext2fs_process_dir_block): Add a double-check to 2967 + make sure the rec_len is a multiple of 4, to prevent 2968 + bus-errors on architectures which care about mis-aligned 2969 + pointer references. 2970 + 2971 +2001-04-25 Theodore Tso <tytso@valinux.com> 2972 + 2973 + * getsize.c (ext2fs_get_device_size): Use an unsigned long to 2974 + query the device sizes using the BLKGETSIZE ioctl. 2975 + 2976 +2001-04-16 Theodore Tso <tytso@valinux.com> 2977 + 2978 + * ismounted.c (check_mntent): Check /proc/mounts on Linux systems 2979 + before checking /etc/mtab. The EXT2_MF_READONLY flag is 2980 + now set from the /etc/mtab options field for all 2981 + filesystems, not just the root filesystem. Add debugging 2982 + code to make it easier to test ext2fs_check_if_mounted(). 2983 + 2984 + * mkjournal.c (ext2fs_create_journal_superblock): Add safety 2985 + check; return an error if there's an attempt to create a 2986 + journal less than 1024 filesystem blocks. 2987 + 2988 + * ext2_err.et.in, mkjournal.c: Change EXT2_JOURNAL_NOT_BLOCK and 2989 + EXT2_NO_JOURNAL_SB to be EXT2_ET_*. 2990 + 2991 +2001-02-20 Theodore Tso <tytso@valinux.com> 2992 + 2993 + * bitops.h (ext2fs_swab16, ext2fs_swab32): Add i386 assembly 2994 + inline functions. 2995 + 2996 + * tst_byteswap.c: New function to test the byteswap functions. 2997 + Add to regression test suite. 2998 + 2999 +2001-02-08 Theodore Tso <tytso@valinux.com> 3000 + 3001 + * e2image.h (struct ext2_image_hdr): Fix type for fs_hostname 3002 + 3003 +2001-02-07 Theodore Tso <tytso@valinux.com> 3004 + 3005 + * mkjournal.c (ext2fs_create_journal_superblock): Fix the setting 3006 + of s_first for external devices to always be 1, since 3007 + jsb->s_first is always relative to the start of the 3008 + journal superblock. Use htonl(1) when setting s_nr_users. 3009 + 3010 +2001-01-17 Theodore Ts'o <tytso@valinux.com> 3011 + 3012 + * mkjournal.c (ext2fs_add_journal_device): Fix bug where the 3013 + device number of the filesystem (instead of the journal) 3014 + was being dropped into s_journal_dev. 3015 + 3016 +2001-01-15 Theodore Ts'o <tytso@valinux.com> 3017 + 3018 + * initialize.c (ext2fs_initialize): Add support for initializing 3019 + the ext2 superblock for external journal devices. This 3020 + basically means we don't bother to allocate any block 3021 + group descriptors. 3022 + 3023 + * openfs.c (ext2fs_open): Only open external journal devices if 3024 + the new flag EXT2_FLAG_JOURNAL_DEV_OK is passed to 3025 + ext2fs_open. When opening such devices, don't try to read 3026 + the block group descriptors, since they're not there. 3027 + 3028 + * ext2_err.et.in (EXT2_NO_JOURNAL_SB): Add new error code 3029 + 3030 + * mkjournal.c: Export a new function, 3031 + ext2fs_create_journal_superblock(), which allocates and 3032 + returns a buffer containing a journal superblock. This is 3033 + needed by mke2fs to create an external journal. Rewrote 3034 + ext2fs_add_journal_device() so that it no longer creates 3035 + the external journal, but rather adds a filesystem to an 3036 + existing external journal. It handles all of the UUID 3037 + manipulation. 3038 + 3039 + * ext2fs.h: List the EXT3_FEATURE_JOURNAL_DEV as a flag supported 3040 + by the library. Define the EXT2_FLAG_JOURNAL_DEV_OK. 3041 + Changed function prototype for ext2fs_add_journal_device(). 3042 + 3043 +2001-01-14 Theodore Ts'o <tytso@valinux.com> 3044 + 3045 + * closefs.c (ext2fs_flush): Don't write out anything beyond the 3046 + primary superblock if EXT2_INCOMPAT_JOURNAL_DEV is 3047 + listed. 3048 + 3049 +2001-01-12 Theodore Ts'o <tytso@valinux.com> 3050 + 3051 + * imager.c: Fix gcc -Wall complaints and a series of bugs where 3052 + retval wasn't set correctly. (Thanks to Andreas Dilger 3053 + for pointing this out.) 3054 + 3055 +2001-01-11 <tytso@snap.thunk.org> 3056 + 3057 + * flushb.c (ext2fs_sync_device): New function which centralizes 3058 + all of the places which might try to use the BLKFLSBUF 3059 + or FDFLUSH ioctls (and usually failing to define them 3060 + since the system header files don't usually do this for 3061 + us, and we're trying to avoid usage of kernel include 3062 + files now). 3063 + 3064 +2001-01-10 <tytso@snap.thunk.org> 3065 + 3066 + * alloc.c, bb_inode.c, bitmaps.c, bitops.h, block.c, bmap.c, 3067 + bmove.c, brel.h, cmp_bitmaps.c, dblist.c, dblist_dir.c, 3068 + dir_iterate.c, expanddir.c, ext2fs.h, ext2fsP.h, fileio.c, 3069 + finddev.c, get_pathname.c, icount.c, inode.c, irel.h, 3070 + irel_ma.c, ismounted.c, link.c, lookup.c, mkdir.c, 3071 + mkjournal.c, namei.c, newdir.c, read_bb_file.c, test_io.c, 3072 + tst_iscan.c, unix_io.c, unlink.c: Change use of ino_t to 3073 + ext2_ino_t, to protect applications that attempt to 3074 + compile -D_FILE_OFFSET_BITS=64, since this inexplicably 3075 + changes ino_t(!?). So we use ext2_ino_t to avoid an 3076 + unexpected ABI change. 3077 + 3078 +2001-01-05 <tytso@snap.thunk.org> 3079 + 3080 + * dirblock.c (ext2fs_read_dir_block): Fix a potential case where 3081 + we may overrun allocated memory in case of a corrupted 3082 + filesystem (or an e2fsck test case :-) when byte-swapping 3083 + the directory block. 3084 + 3085 + * ext2fs.h: Indent the #warning to fix gcc -Wall complaint. 3086 + 3087 + * mkjournal.c (ext2fs_add_journal_device): Fix various gcc -Wall 3088 + complaints including a missing return 0 at the end of 3089 + ext2fs_add_journal_device. 3090 + 3091 +2001-01-03 <tytso@snap.thunk.org> 3092 + 3093 + * Makefile.in: Link in libe2p when creating libext2fs as a shared 3094 + library, since mkjournal.c now references fsetflags(). 3095 + 3096 + * mkjournal.c (ext2fs_add_journal_inode): Folded in Andreas 3097 + Dilger's changes (with fixups) to allow on-line creation 3098 + of a journal file. 3099 + 3100 + * ext2fs.h, closefs.c (ext2fs_flush): Add new flag, 3101 + EXT2_FLAG_SUPER_ONLY, which the close routines to only 3102 + update the superblock, and not the group descriptors. 3103 + 3104 +2000-12-30 Andreas Dilger <adilger@turbolinux.com> 3105 + 3106 + * ismounted.c: add ext2fs_check_mount_point() function, which will 3107 + optionally return the mount point of a device if mounted 3108 + 3109 +2000-12-14 Andreas Dilger <adilger@turbolinux.com> 3110 + 3111 + * mkjournal.c: rename ext2fs_add_journal_fs() to the more descriptive 3112 + ext2fs_add_journal_inode() 3113 + 3114 +2001-01-01 <tytso@snap.thunk.org> 3115 + 3116 + * ext2fs.h: Remove definition of ext2fs_sb. Note: this may break 3117 + source (but not binary) compatibility of some users of the 3118 + ext2 library. They should just simply do a global search 3119 + and replace of struct ext2fs_sb with struct 3120 + ext2_super_block, and use their own private copy of 3121 + ext2_fs.h if they aren't already. 3122 + 3123 + * closefs.c, initialize.c, link.c, newdir.c, openfs.c, swapfs.c: 3124 + Replace use of ext2fs_sb with ext2_super_block. 3125 + 3126 +2000-12-31 <tytso@snap.thunk.org> 3127 + 3128 + * ext2fs.h: Cleaned up header file by removing definitions of 3129 + feature flags that might not have been defined in older 3130 + ext2 header files. Now that we're using our own 3131 + include/linux/ext2fs.h header file, this can never happen. 3132 + 3133 + * jfs_dat.h: Removed old header file which is no longer needed. 3134 + 3135 +2000-12-13 Theodore Ts'o <tytso@valinux.com> 3136 + 3137 + * closefs.c (ext2fs_update_dynamic_rev): New function suggested 3138 + by Andreas Dilger to update the filesystem revision to 3139 + EXT2_DYNAMIC_REV. 3140 + 3141 + * swapfs.c (ext2fs_swap_super): Add byte swapping for the journal 3142 + fields. 3143 + 3144 +2000-12-09 <tytso@snap.thunk.org> 3145 + 3146 + * ext2fs.h, mkjournal.c (ext2fs_add_journal_inode, 3147 + ext2fs_add_journal_device): Add a new argument to the APIs 3148 + of these function, which is a flags word. This is used to 3149 + allow the creation of a V1 superblock for those folks who 3150 + are using ext3 0.3b in production. Note, the user-land 3151 + interface for getting at this flag won't be documented, as 3152 + the V1 superblock is deprecated. 3153 + 3154 + * mkjournal.c (init_journal_superblock): Sync Stephen's changes 3155 + which creates a V2 superblock instead of a V1 superblock. 3156 + 3157 +2000-11-21 <tytso@snap.thunk.org> 3158 + 3159 + * test_io.c (test_write_blk, test_write_byte): Fix typos pointed 3160 + out by Andreas Dilger. 3161 + 3162 +2000-11-05 <tytso@snap.thunk.org> 3163 + 3164 + * imager.c (ext2fs_image_{inode,super,bitmap}_{read,write}, 3165 + ext2_fs.h, Makefile.in: New file that has routines that 3166 + save ext2fs metadata to a file. 3167 + 3168 + * ext2_err.et.in (EXT2_ET_MAGIC_E2IMAGE): New error code assigned. 3169 + 3170 + * e2image.h: New file which defines the file format for the ext2 3171 + image file. (Saved copy of ext2 metadata to a file as a 3172 + saving throw against worst-case damage.) 3173 + 3174 +2000-11-01 <tytso@snap.thunk.org> 3175 + 3176 + * inode.c (ext2fs_flush_icache): Add new function 3177 + ext2fs_flush_icache() which flushes the internal inode 3178 + cache. Applications which modify the inode table blocks 3179 + directly must call this function. 3180 + 3181 +2000-10-26 <tytso@snap.thunk.org> 3182 + 3183 + * mkjournal.c: Add #include of netinet/in.h, since Solaris 3184 + requires it for ntohl(). 3185 + 3186 + * ext2_io.h (io_channel_write_byte): Add new interface to allow 3187 + callers to write specific byte ranges. This is an 3188 + optional interface, which not all IO channels may 3189 + implement. 3190 + 3191 + * unix_io.c (unix_write_byte): 3192 + * test_io.c (test_write_byte): Add implementation of the 3193 + write_byte function. 3194 + 3195 + * closefs.c (write_primary_superblock, ext2fs_flush): Add a new 3196 + function which writes the primary superblock. If the IO 3197 + channel supports writing raw bytes directly, only fields 3198 + which were modified are written to the disk. This makes 3199 + it safe(r) to use utilities like tune2fs on a mounted 3200 + filesystem. 3201 + 3202 + * freefs.c (ext2fs_free): Free the original superblock if it is 3203 + available. 3204 + 3205 + * openfs.c (ext2fs_open): Store a copy of the original superblock 3206 + when opening it. 3207 + 3208 + * ext2fs.h: Add a field to store the original superblock in the 3209 + ext2 context structure. 3210 + 3211 +2000-10-24 <tytso@snap.thunk.org> 3212 + 3213 + * llseek.c: Add #ifdef's for IA64 (it's a 64-bit platform, so we 3214 + don't need to use llseek). 3215 + 3216 +2000-10-24 <tytso@valinux.com> 3217 + 3218 + * Makefile.in, ext2fs.h, jfs_dat.h, mkjournal.c: Add functions for 3219 + creating an ext3 journal on a filesystem. 3220 + 3221 +2000-08-21 <tytso@valinux.com> 3222 + 3223 + * ext2_err.et.in (EXT2_JOURNAL_NOT_BLOCK): Add new error code. 3224 + 3225 +2000-08-22 <tytso@valinux.com> 3226 + 3227 + * unix_io.c: Make massive changes to support a multiple block 3228 + writethrough cacheing. 3229 + 3230 + * ext2_io.h: Added flags field to the io_channel structure. 3231 + 3232 +2000-08-19 <tytso@valinux.com> 3233 + 3234 + * finddev.c, ext2fs.h, Makefile.in: Add new file, finddev.c, which 3235 + provides the function ext2fs_find_block_device(). This 3236 + function returns the pathname to a block device, given its 3237 + device number. 3238 + 3239 +2000-07-13 <tytso@valinux.com> 3240 + 3241 + * Release of E2fsprogs 1.19 3242 + 3243 +2000-07-07 Theodore Ts'o <tytso@valinux.com> 3244 + 3245 + * ext2fs.h (EXT2_LIB_FEATURE_INCOMPAT_SUPP): Add 3246 + EXT3_FEATURE_INCOMPAT_RECOVER (aka needs_recovery) to the 3247 + list of filesystem flags supported by the library. 3248 + 3249 +2000-07-04 Theodore Ts'o <tytso@valinux.com> 3250 + 3251 + * ext2fs.h: Update to include latest journalling additions to the 3252 + superblock. 3253 + 3254 + * dll/jump.funcs: Add new jumptable entries for 3255 + ext2fs_write_bb_FILE, ext2fs_read_bb_FILE2, and 3256 + ext2fs_badblocks_equal. 3257 + 3258 + * tst_badblocks.c: Update test program to test 3259 + ext2fs_read_bb_FILE2 and ext2fs_write_FILE. 3260 + 3261 + * write_bb_file.c (ext2fs_write_bb_FILE): New function which 3262 + writes out bad blocks list to a file. 3263 + 3264 + * read_bb_file.c (ext2fs_read_bb_FILE2): Add new function which 3265 + changes the callback function to take two additional 3266 + arguments; a private blind pointer supplied by the caller, 3267 + and pointer to a char * containing a pointer to the 3268 + invalid string. 3269 + 3270 + * badblocks.c (ext2fs_badblocks_equal): Add new function which 3271 + returns true if two badblocks list are equal. 3272 + 3273 + * Makefile.in: Remove explicit link of -lc in the shared library. 3274 + (It shouldn't be necessary, and is harmful in some cases). 3275 + 3276 +2000-06-10 Theodore Ts'o <tytso@valinux.com> 3277 + 3278 + * getsize.c (main): Add debugging code under #ifdef DEBUG 3279 + 3280 +2000-05-27 Theodore Ts'o <tytso@valinux.com> 3281 + 3282 + * mkdir.c (ext2fs_mkdir): Read the parent directory's inode 3283 + earlier, so that if there's an error reading it, we can 3284 + more cleanly back out of the operation. 3285 + 3286 +2000-05-25 <tytso@snap.thunk.org> 3287 + 3288 + * getsize.c (ext2fs_get_device_size): Use open64() instead of 3289 + open() if it exists. Under linux, manually define the 3290 + ioctl for BLKGETSIZE if it isn't already defined and it's 3291 + safe to do so. 3292 + 3293 + * unix_io.c (unix_open): Use open64() instead of open() if it 3294 + exists. 3295 + 3296 + * llseek.c: Simplify header includes of unistd.h. If lseek64 is 3297 + available (and prototypes are defined) use it in 3298 + preference to llseek. 3299 + 3300 + * Makefile: Add hack dependency rule so that parallel makes work 3301 + correctly. 3302 + 3303 +2000-05-18 Theodore Ts'o <tytso@valinux.com> 3304 + 3305 + * ext2fs.h: Add appropriate ifdef's to support C++ compilation. 3306 + 3307 +2000-04-03 Theodore Ts'o <tytso@valinux.com> 3308 + 3309 + * block.c: Readibility tweak in conditionals involving 3310 + ctx->fs->flags. 3311 + 3312 + * ext2fs.h: Use AUTOCONF SIZEOF_* macros if available to determine 3313 + how to define __s64 and __u64. Turn off "compression is 3314 + experimental" warning if the cpp macro 3315 + I_KNOW_THAT_COMPRESSION_IS_EXPERIMENTAL is defined. 3316 + 3317 +2000-02-11 <tytso@snap.thunk.org> 3318 + 3319 + * ext2fs.h: Define EXT2FS_COMPRESSED_BLKADDR and HOLE_BLKADDR. 3320 + Conditionally include Compression as a supported type if 3321 + ENABLE_COMPRESSION (via --enable-compression) is turned on. 3322 + 3323 + * swapfs.c (ext2fs_swap_super): Swap the compression usage bitmap. 3324 + 3325 +2000-02-08 <tytso@snap.thunk.org> 3326 + 3327 + * bitops.h (ext2fs_mark_generic_bitmap, ext2fs_unmark_generic_bitmap, 3328 + ext2fs_mark_block_bitmap, ext2fs_unmark_block_bitmap, 3329 + ext2fs_mark_inode_bitmap, ext2fs_unmark_inode_bitmap): 3330 + Change to return the previous state of the bit that is 3331 + being marked or unmarked. For speed optimization. 3332 + 3333 +2000-02-02 Theodore Ts'o <tytso@valinux.com> 3334 + 3335 + * getsize.c, ismounted.c: Remove unneeded include of linux/fs.h 3336 + 3337 + * swapfs.c: Remove #ifdef HAVE_EXT2_INODE_VERSION since it's not 3338 + needed any more; we know it will always be i_generation. 3339 + Add support for swapping the high bits of the uid and gid. 3340 + 3341 +1999-11-19 <tytso@valinux.com> 3342 + 3343 + * mkdir.c (ext2fs_mkdir): Only update the parent's inode link 3344 + counts if the link was successful. Patch suggested by 3345 + jeremy@goop.org. 3346 + 3347 + * Makefile.in (distclean): Remove TAGS and Makefile.in.old from 3348 + the source directory. 3349 + 3350 +1999-11-10 <tytso@valinux.com> 3351 + 3352 + * Release of E2fsprogs 1.18 3353 + 3354 +1999-11-08 <tytso@valinux.com> 3355 + 3356 + * Makefile.in (tst_badblocks): Add freefs.o to the object list, 3357 + since ext2fs_badblocks_list_free was moved to freefs.c. 3358 + 3359 + * tst_badblocks.c: Use the newer badblocks API names. Add 3360 + duplicate blocks to the test inputs to test dealing with 3361 + adding blocks which are already in the badblocks list. 3362 + 3363 + * badblocks.c (ext2fs_badblocks_list_add): If appending to the end 3364 + of the list, use a shortcut O(1) operations instead of an 3365 + O(n) operation. (Idea suggested by David Beattie.) 3366 + 3367 + * freefs.c (ext2fs_free): Use ext2fs_badblocks_list_free() instead 3368 + of badblocks_list_free(), to save a procedure call. 3369 + 3370 +1999-10-26 <tytso@valinux.com> 3371 + 3372 + * Release of E2fsprogs 1.17 3373 + 3374 +1999-10-26 <tytso@valinux.com> 3375 + 3376 + * ext2fs.h: Add kludge to deal with the fact that egcs cpp doesn't 3377 + seem to handle ~0UL the same way as they used to. 3378 + 3379 +1999-10-25 <tytso@valinux.com> 3380 + 3381 + * nt_io.c (_OpenNtName): Open the device using 3382 + FILE_SYNCHRONOUS_IO_NONALERT instead of 3383 + FILE_SYNCHRONOUS_IO_ALERT 3384 + (nt_open): At the end of the device open routine, unlock 3385 + the drive but do not dismount it. 3386 + 3387 + * initialize.c (CREATOR_OS): Use __GNU__ instead of __gnu__ to 3388 + detect the Hurd OS. 3389 + 3390 +1999-10-22 <tytso@valinux.com> 3391 + 3392 + * Release of E2fsprogs 1.16 3393 + 3394 +1999-10-22 <tytso@valinux.com> 3395 + 3396 + * mkdir.c (ext2fs_mkdir): Pass EXT2_FT_DIR flag to ext2fs_link(). 3397 + 3398 + * link.c (ext2fs_link): This call now uses the low three bits of 3399 + the flags parameter to pass the directory filetype 3400 + information; it will set the directory entry FILETYPE 3401 + information if the filesystem supports it. 3402 + 3403 + * newdir.c (ext2fs_new_dir_block): If the FILETYPE superblock 3404 + option is set, then create the '.' and '..' entries with 3405 + the filetype set to EXT2_FT_DIR. 3406 + 3407 +1999-09-24 <tytso@valinux.com> 3408 + 3409 + * nt_io.c: New file which supports I/O under Windows NT. 3410 + 3411 +1999-09-07 <tytso@valinux.com> 3412 + 3413 + * ext2fs.h: Add new fields for journalling and define new 3414 + feature bits used by newer filesystems: IMAGIC_INODES, 3415 + HAS_JOURNAL, RECOVER. 3416 + 3417 + * expanddir.c (ext2fs_expand_dir, expand_dir_proc): Change where 3418 + we update the inode block count and size files so that the 3419 + block count field is updated correctly when we create an 3420 + indirect block. 3421 + 3422 +1999-07-18 Theodore Ts'o <tytso@valinux.com> 3423 + 3424 + * Release of E2fsprogs 1.15 3425 + 3426 +1999-06-23 <tytso@valinux.com> 3427 + 3428 + * swapfs.c (ext2fs_swap_inode): Add compatibility for Linux 2.3 3429 + kernels that use i_generation instead of i_version. Patch 3430 + supplied by Jon Bright <sircus@sircus.demon.co.uk>. 3431 + 3432 +1999-06-21 <tytso@valinux.com> 3433 + 3434 + * dir_iterate.c (ext2fs_process_dir_block): Check for corrupted 3435 + directory entry before calling the callback function. 3436 + This should prevent some core dumps of insufficiently 3437 + paranoid callback functions. 3438 + 3439 +1999-05-29 <tytso@rsts-11.mit.edu> 3440 + 3441 + * ext2fs.h: Add feature definition for AFS IMAGIC inodes. 3442 + 3443 + * fileio.c (ext2fs_file_open): Remove obsolete comment stating 3444 + that we don't handle writing yet (we do). Fixed bug where 3445 + we weren't allocating a big enough buffer for ext2_bmap. 3446 + 3447 +1999-05-03 <tytso@rsts-11.mit.edu> 3448 + 3449 + * openfs.c (ext2fs_open): Check to make sure that the number of 3450 + blocks per group is not zero --- if so, it must be a bad 3451 + superblock! 3452 + 3453 +1999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu> 3454 + 3455 + * Release of E2fsprogs 1.14 3456 + 3457 +1999-01-07 Theodore Ts'o <tytso@rsts-11.mit.edu> 3458 + 3459 + * inode.c (ext2fs_read_inode, ext2fs_write_inode): Check to see if 3460 + the inode number is zero; if it's zero, return 3461 + EXT2_ET_BAD_INODE_NUM. 3462 + 3463 +1998-12-30 Theodore Ts'o <tytso@rsts-11.mit.edu> 3464 + 3465 + * initialize.c (ext2fs_initialize): Use EXT2_FIRST_INODE instead 3466 + of EXT2_FIRST_INO to ensure compatibility with Linux 1.2 3467 + header files. 3468 + 3469 +Mon Jan 4 02:32:09 1999 Theodore Y. Ts'o <tytso@mit.edu> 3470 + 3471 + * llseek.c (ext2fs_llseek): Change ext2fs_llseek() in the 3472 + non-Linux case to use EINVAL by default, unless it isn't 3473 + defined, in which case we use EXT2_ET_INVALID_ARGUMENT 3474 + instead. 3475 + 3476 +1998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu> 3477 + 3478 + * Release of E2fsprogs 1.13 3479 + 3480 +1998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu> 3481 + 3482 + * Makefile.in: Updated dependencies. 3483 + 3484 +1998-09-22 Theodore Ts'o <tytso@rsts-11.mit.edu> 3485 + 3486 + * initialize.c (ext2fs_initialize): Make sure that we allocate 3487 + enough inodes so that we can make a valid filesystem. 3488 + 3489 +1998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu> 3490 + 3491 + * rw_bitmaps.c: Fixed signed/unsigned warnings. 3492 + 3493 + * fileio.c (ext2fs_file_set_size): Remove unneeded extern from the 3494 + function declaration. 3495 + 3496 + * dblist.c (make_dblist): Add safety check in case the dblist 3497 + pointer passed in is null (in which case, assign it to 3498 + fs->dblist). Fixed some signed/unsigned warnings. 3499 + 3500 + * bmap.c: Make addr_per_block be of type blk_t to avoid 3501 + signed/unsigned warnings. 3502 + 3503 + * namei.c (ext2fs_follow_link): Remove uneeded extern from the 3504 + function declaration. 3505 + 3506 + * get_pathname.c (get_pathname_proc): Use return value from 3507 + ext2fs_get_mem, instead of checking if &gp->name is 3508 + NULL. 3509 + 3510 + * dir_iterate.c (ext2fs_process_dir_block): 3511 + * dblist_dir.c (ext2fs_dblist_dir_iterate): Remove uneeded extern 3512 + from the function declaration. 3513 + 3514 + * block.c (ext2fs_block_iterate2): If the read_inode call fails, 3515 + return the error directly instead of jumping to the 3516 + cleanup routine, since we don't need to do any cleanup. 3517 + 3518 + * alloc_table.c (ext2fs_allocate_group_table): Make this 3519 + function take a dgrp_t for its group argument. 3520 + 3521 + * ext2fs.h: Make dgrp_t an __u32 type, and make 3522 + fs->desc_group_count be of type dgrp_t. 3523 + 3524 +1998-07-27 Theodore Ts'o <tytso@rsts-11.mit.edu> 3525 + 3526 + * badblocks.c (ext2fs_badblocks_list_add): Use a bigger increment 3527 + than 10 blocks when we need to expand the size of the 3528 + badblocks list. 3529 + 3530 +1998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu> 3531 + 3532 + * Release of E2fsprogs 1.12 3533 + 3534 +1998-06-30 Theodore Ts'o <tytso@rsts-11.mit.edu> 3535 + 3536 + * closefs.c (ext2fs_flush): Update the s_block_group_nr field as 3537 + appropriate for all of the block group copies, so that 3538 + it's clear where the beginning of the filesystem is on the 3539 + disk. (For when the partition table gets scrod.) 3540 + 3541 + * ext2fs.h: Change the name of the feature from 3542 + EXT2_FEATURE_INCOMPAT_DIRNAME_SIZE to 3543 + EXT2_FEATURE_INCOMPAT_FILESIZE (to match with the kernel). 3544 + 3545 +1998-06-18 Theodore Ts'o <tytso@rsts-11.mit.edu> 3546 + 3547 + * inode.c (get_next_blockgroup): Fix bug where if 3548 + get_next_blockgroup() is called early because of a missing 3549 + inode table in a block group, the current_inode counter 3550 + wasn't incremented correctly. 3551 + 3552 +1998-06-16 Theodore Ts'o <tytso@rsts-11.mit.edu> 3553 + 3554 + * read_bb.c (ext2fs_read_bb_inode): Make function more robust 3555 + against a completely trashed bad block inode. 3556 + 3557 +1998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu> 3558 + 3559 + * alloc_tables.c (ext2fs_allocate_group_table): Fix bug so that if 3560 + the stride length hits a bad value, we retry the block 3561 + allocation starting at the beginning of the block group. 3562 + 3563 + * ext2fs.h, bb_inode.c, block.c, bmove.c, dir_iterate.c, 3564 + expanddir.c, ext2fsP.h, read_bb.c: Change blkcnt_t to be 3565 + e2_blkcnt_t to avoid collision with LFS API. 3566 + 3567 +1998-05-01 Theodore Ts'o <tytso@rsts-11.mit.edu> 3568 + 3569 + * initialize.c (ext2fs_initialize): Initialize s_inodes_count in a 3570 + way that avoids overflows on disk sizes greater than 4GB. 3571 + 3572 +1998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu> 3573 + 3574 + * ext2fs.h: Define EXT2_QSORT_TYPE appropriately for the 3575 + return type for comparison functions for qsort. 3576 + 3577 + * dblist.c (dir_block_cmp): Use EXT2_QSORT_TYPE in function 3578 + declaration. 3579 + 3580 +1998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu> 3581 + 3582 + * ext2fs.h, bitops.h: Add support for the Watcom C compiler to do 3583 + inline functions. 3584 + 3585 + * ext2fs.h, dosio.c: Use asm/types.h instead of linux/types.h to 3586 + evade a potential problem with glibc's header files trying 3587 + to spike out linux/types.h. 3588 + 3589 + * ext2fs.h (ext2fs_resize_mem): Change the function prototype to 3590 + include the old size of the memory, which is needed for 3591 + some braindamaged memory allocation systems that don't 3592 + support realloc(). 3593 + 3594 + * badblocks.c (ext2fs_badblocks_list_add): 3595 + bb_inode.c (clear_bad_block_proc): 3596 + dblist.c (ext2fs_add_dir_block): 3597 + icount.c (insert_icount_el): 3598 + irel_ma.c (ima_put): 3599 + rs_bitmap.c (ext2fs_resize_generic_bitmap): Update functions to 3600 + pass the old size of the memory to be resized to 3601 + ext2fs_resize_mem(). 3602 + 3603 +1998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu> 3604 + 3605 + * Makefile.in: Change to use new installation directory variables 3606 + convention. Fix uninstall rules to take $(DESTDIR) into 3607 + account. 3608 + 3609 +1998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu> 3610 + 3611 + * ext2fs.h: If __STRICT_ANSI__ is defined and we're on a platform 3612 + with 32 bit longs, then we need to manually define __s64 3613 + and __u64, since the current kernel header files don't 3614 + define these if __STRICT_ANSI__ is defined. This is a 3615 + problem if we are compiling with full GCC warnings, since 3616 + we do need 64 bit support. 3617 + 3618 + * Makefile.in (OBJS): Remove bmove.o from files to be built, 3619 + since we're not using ext2fs_move_blocks() and there 3620 + is some question as to its usefulness in its current 3621 + form. 3622 + 3623 + * bmap.c (block_bmap): Remove unused function. 3624 + 3625 + * bmove.c (process_block): Fix -Wall warning. 3626 + 3627 +1998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu> 3628 + 3629 + * block.c (ext2fs_block_iterate3): Make the ref_offset field 3630 + contain the offset into the inode.i_blocks array when 3631 + ref_block is zero. Since we haven't done a formal 3632 + release of e2fsprogs since block_iterate2 was first 3633 + introduced, I removed block_iterate2, and renamed 3634 + block_iterate3 to be block_iterate2. 3635 + 3636 + * bb_inode.c, bmove.c, dblist_dir.c, dir_iterate.c, 3637 + expanddir.c, ext2fs.h, ext2fsP.h, read_bb.c: Change 3638 + use of block_iterate and block_iterate2 to 3639 + block_iterate2 with the new prototype for the 3640 + interator function. (using blkcnt_t forr blockcount) 3641 + 3642 +1998-03-21 Theodore Ts'o <tytso@rsts-11.mit.edu> 3643 + 3644 + * ext2fs.h: Add new superblock fields (s_algorithm_usage_bitmap, 3645 + s_prealloc_blocks, s_prealloc_dir_blocks). Added 3646 + conditional defines of new features COMPAT_DIR_PREALLOC, 3647 + RO_COMPAT_LARGE_FILE RO_COMPAT_BTREE_DIR, 3648 + INCOMPAT_COMPRESSION, INCOMPAT_DIRNAME_SIZE. Changed 3649 + the library to declare that we support COMPAT_DIR_PREALLOC, 3650 + INCOMPAT_DIRNAME_SIZE, RO_COMPAT_LARGE_FILE. 3651 + 3652 + * fileio.c: Rename function ext2fs_file_llseek to be 3653 + ext2fs_file_lseek, which is more accurate. 3654 + 3655 + * block.c: Add new function ext2fs_block_iterate3 which calls 3656 + the iterator function with the blockcount argument of 3657 + type blkcnt_t. This version of the function is 3658 + allowed to handle large files; the other fucntions are 3659 + not. 3660 + 3661 + * ext2fs.h: Add new type blkcnt_t 3662 + 3663 + * ext2_err.et.in: Add error code EXT2_ET_FILE_TOO_BIG 3664 + 3665 + * block.c (ext2fs_block_iterate2): Fix bug where the block count 3666 + field wasn't getting correctly incremented for sparse 3667 + files when the indirect or doubly-indirect block 3668 + specified in the inode was zero. 3669 + 3670 +Sun Mar 8 22:42:47 1998 Theodore Ts'o <tytso@rsts-11.mit.edu> 3671 + 3672 + * unlink.c (unlink_proc): 3673 + * lookup.c (lookup_proc): 3674 + * link.c (link_proc): 3675 + * get_pathname.c (get_pathname_proc): 3676 + * dir_iterate.c (ext2fs_process_dir_block): Mask off high 8 bits 3677 + from dirent->name_len, so it can be used for other 3678 + purposes. 3679 + 3680 + * ext2fs.h: Add definition of EXT2_FEATURE_INCOMPAT_DIRNAME_SIZE, 3681 + and indicate that we have support for this incompatible 3682 + option. 3683 + 3684 +Mon Feb 23 08:46:33 1998 Theodore Ts'o <tytso@rsts-11.mit.edu> 3685 + 3686 + * ext2_err.et.in: Added new error code, EXT2_ET_CANCEL_REQUESTED. 3687 + 3688 +Fri Feb 20 23:58:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu> 3689 + 3690 + * dblist.c (ext2fs_get_num_dirs): Improve the estimation of the 3691 + number of directories when the block group information is 3692 + unreliable. 3693 + 3694 +1998-02-20 Theodore Y. Ts'o <tytso@edt.mit.edu> 3695 + 3696 + * inode.c (ext2fs_get_next_inode): Always do the check to see if the 3697 + inode table is missing so that we catch the case where the 3698 + first block group is missing. 3699 + 3700 + * getsize.c, ismounted.c, unix_io.c: #include errno.h since it's 3701 + needed. 3702 + 3703 +Mon Feb 16 16:16:00 1998 Theodore Ts'o <tytso@rsts-11.mit.edu> 3704 + 3705 + * ext2_io.h, ext2fs.h: Protect against being included multiple times. 3706 + 3707 + * bmove.c: #include ext2fsP.h instead of "ext2fs/ext2fs.h" 3708 + 3709 + * test_io.c (test_flush): Add a debugging printf when the flush 3710 + method is called. 3711 + 3712 + * rw_bitmaps.c (ext2fs_read_bitmaps): If the bitmaps are already 3713 + read in, return right away. 3714 + 3715 +Sun Feb 1 08:20:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu> 3716 + 3717 + * bitops.h: Don't try to do i386 inline asm functions if the 3718 + compiler isn't GCC. 3719 + 3720 + * ext2fs.h: If EXT2_FLAT_INCLUDES is defined, #include e2_types.h, 3721 + instead of linux/types.h, and e2_bitops.h instead of 3722 + ext2fs/bitops.h. 3723 + 3724 + * icount.c, version.c: Don't #include <et/com_err.h>, as it isn't 3725 + necessary. 3726 + 3727 +Sat Jan 17 13:13:31 1998 Theodore Ts'o <tytso@rsts-11.mit.edu> 3728 + 3729 + * inode.c (ext2fs_open_inode_scan): Initialize the group variables 3730 + so that we don't need to call get_next_blockgroup() the 3731 + first time around. Saves a bit of time, and prevents us 3732 + from needing to assign -1 to current_group (which is an 3733 + unsigned value). 3734 + 3735 + * icount.c (insert_icount_el): Cast the estimated number of inodes 3736 + from a float to an ino_t. 3737 + 3738 + * alloc.c, alloc_tables.c, badlbocks.c, bb_compat.c, bb_inode.c, 3739 + bitmaps.c, bitops.c, block.c, bmap.c, bmove.c, brel_ma.c, 3740 + check_desc.c, closefs.c, cmp_bitmaps.c, dblist.c, 3741 + dblist_dir.c, dir_iterate.c, dirblock.c, dupfs.c, 3742 + expanddir.c, ext2fs.h, fileio.c, freefs.c, 3743 + get_pathname.c, getsize.c, icount.c, initialize.c, 3744 + inline.c, inode.c, irel_ma.c, ismounted.c, link.c, 3745 + lookup.c, mkdir.c, namei.c, native.c, newdir.c, 3746 + openfs.c, read_bb.c, read_bb_file.c, rs_bitmap.c, 3747 + rw_bitmaps.c, swapfs.c, test_io.c, tst_badblocks.c, 3748 + tst_getsize.c, tst_iscan.c, unix_io.c, unlink.c, 3749 + valid_blk.c, version.c: If EXT2_FLAT_INCLUDES is 3750 + defined, then assume all of the 3751 + ext2-specific header files are in a flat directory. 3752 + 3753 + * block.c, bmove.c, dirblock.c, fileio.c: Explicitly cast 3754 + all assignments from void * to be compatible with C++. 3755 + 3756 +Tue Jan 6 11:28:15 1998 Theodore Ts'o <tytso@rsts-11.mit.edu> 3757 + 3758 + * closefs.c (ext2fs_flush): Add a call to io_channel_flush() to 3759 + make sure the contents of the disk are flushed to disk. 3760 + 3761 +Mon Dec 29 14:39:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3762 + 3763 + * dblist.c (ext2fs_add_dir_block): Change new to be new_entry to 3764 + avoid C++ namespace clash. 3765 + 3766 + * bitmaps.c (ext2fs_copy_bitmap): Change new to be new_map to 3767 + avoid C++ namespace clash. 3768 + 3769 + * ext2fs.h, bb_inode.c, block.c, bmove.c, brel.h, brel_ma.c, 3770 + irel.h, irel_ma.c, dblist.c, dblist_dir.c, dir_iterate.c, 3771 + ext2fsP.h, expanddir.c, get_pathname.c, inode.c, link.c, 3772 + unlink.c: Change private to be priv_data (to avoid C++ 3773 + namespace clash) 3774 + 3775 +Fri Nov 28 09:26:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3776 + 3777 + * dblist.c (ext2fs_get_num_dirs): Make ext2fs_get_num_dirs more 3778 + paranoid about validating the directory counts from the 3779 + block group information. 3780 + 3781 + * all files: Don't include stdlib.h anymore; include it in 3782 + ext2_fs.h, since that file requires stdlib.h 3783 + 3784 +Thu Nov 20 16:07:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3785 + 3786 + * expanddir.c (ext2fs_expand_dir): Check to make sure the block 3787 + bitmap is loaded, and return an error if it is not. 3788 + (expand_dir_proc): Only use ext2fs_write_dir_block when 3789 + writing a directory block, not when writing out a fresh 3790 + indirect block. 3791 + 3792 +Tue Nov 11 22:46:45 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3793 + 3794 + * Makefile.in, tst_getsize.c: Added new file which is used to test 3795 + the ext2fs_get_device_size function. 3796 + 3797 + * ext2_err.et.in (EXT2_ET_UNIMPLEMENTED): Added new error code. 3798 + 3799 +Sun Nov 2 20:36:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3800 + 3801 + * ext2fs.h: Make ext2fs_get_mem take an unsigned argument. 3802 + 3803 + * fileio.c (ext2fs_file_get_size, ext2fs_file_set_size, 3804 + ext2fs_file_get_fs): New functions added. 3805 + 3806 + 3807 +Fri Oct 31 12:16:52 1997 <tytso@EDT.MIT.EDU> 3808 + 3809 + * bitops.c (ext2fs_warn_bitmap, ext2fs_warn_bitmap2): Don't call 3810 + com_err if OMIT_COM_ERR is defined. 3811 + 3812 +Thu Oct 30 11:33:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3813 + 3814 + * Rename new error codes to _ET_ in them for consistency. 3815 + 3816 +Sat Oct 25 00:06:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3817 + 3818 + * [all files, basically]: Added definition of ext2fs_get_mem, 3819 + ext2fs_free_mem, and ext2fs_resize_mem in ext2fs.h, and 3820 + changed all library routines to use these wrapper functions. 3821 + 3822 + * dblist.c, mkdir.c: use EXT2_DIR_EXISTS and EXT2_DB_NOT_FOUND 3823 + instead of the system error messages. 3824 + 3825 + * ext2_err.et.in: Added new error messages EXT2_DIR_EXISTS and 3826 + EXT2_DB_NOT_FOUND 3827 + 3828 + * ext2fs.h: Added function declarations and constants for bmap.c 3829 + and fileio.c. 3830 + 3831 + * ext2_err.et.in: Added new error messages EXT2_FILE_RO and 3832 + EXT2_ET_MAGIC_EXT2_FILE 3833 + 3834 + * Makefile.in: Added files bmap.c and fileio.c, and temporarily 3835 + commented out brel_ma.c and irel_ma.c 3836 + 3837 + * bmap.c: New file which maps a file's logical block number to its 3838 + physical block number. 3839 + 3840 + * fileio.c: New file which implements simple file reading and 3841 + writing primitives. 3842 + 3843 + * alloc.c (ext2fs_alloc_block): New function which allocates a 3844 + block, zeros it, and updates the filesystem accounting 3845 + records appropriately. 3846 + 3847 +Wed Oct 22 16:47:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3848 + 3849 + * ext2_err.et.in: Added new error codes: EXT2_NO_MEMORY, 3850 + EXT2_INVALID_ARGUMENT, EXT2_BLOCK_ALLOC_FAIL, 3851 + EXT2_INODE_ALLOC_FAIL, EXT2_NOT_DIRECTORY 3852 + 3853 + * Change various library files to use these functions instead of 3854 + EINVAL, ENOENT, etc. 3855 + 3856 +Mon Oct 20 19:32:40 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3857 + 3858 + * llseek.c: Check HAVE_LLSEEK_PROTOTYPE to see whether or not we 3859 + need to declare llseek(). 3860 + 3861 +Sun Oct 19 18:56:22 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3862 + 3863 + * Rename io.h to be ext2_io.h (avoid namespace collisions) 3864 + 3865 + * Add #ifdef's for HAVE_SYS_STAT_H and HAVE_SYS_TYPES_H 3866 + 3867 +Fri Oct 3 13:35:59 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3868 + 3869 + * llseek.c (ext2fs_llseek): Fix type error for ext2fs_llseek() 3870 + 3871 + * icount.c (ext2fs_icount_validate): 3872 + * bmove.c (process_block): Fix lint error in type for fprintf(). 3873 + 3874 +Mon Sep 15 11:45:09 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3875 + 3876 + * inode.c (ext2fs_check_directory): Add support for the callback 3877 + to return the error code EXT2_ET_CALLBACK_NOTHANDLED. 3878 + 3879 +Thu Sep 4 12:28:22 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3880 + 3881 + * bitmaps.c (ext2fs_set_bitmap_padding): New function which sets the 3882 + padding of the bitmap to be all one's. 3883 + 3884 +Wed Sep 3 14:27:30 1997 Theodore Y. Ts'o <tytso@edt.mit.edu> 3885 + 3886 + * llseek.c: Added missing semicolon to glibc fixup declaration of 3887 + llseek(). 3888 + 3889 + * bmove.c: Add #include of errno.h 3890 + 3891 +Sat Aug 23 22:47:46 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3892 + 3893 + * Makefile.in (ELF_SO_VERSION): Bump version to be 2.4 since we've 3894 + added a new field to the io_channel (app_data). 3895 + 3896 + * io.h: Add a new element to the io_channel structure, app_data. 3897 + 3898 + * initialize.c, openfs.c: Set io->app_data to point at the 3899 + filesystem handle. 3900 + 3901 +Thu Aug 14 08:14:17 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3902 + 3903 + * io.h: Change the prototype of ext2fs_llseek() to use int's 3904 + instead of unsigned int's. 3905 + 3906 + * llseek.c: Change to allow PIC and !HAVE_LLSEEK. Add a prototype 3907 + to make life easer for GNU Libc 2. 3908 + 3909 + * rw_bitmaps.c: On the PowerPC, the big-endian variant of the ext2 3910 + filesystem has its bitmaps stored as 32-bit words with bit 3911 + 0 as the LSB of each word. Thus a bitmap with only bit 0 3912 + set would be, as a string of bytes, 00 00 00 01 00 ... To 3913 + cope with this, we byte-reverse each word of a bitmap if 3914 + we have a big-endian filesystem, that is, if we are *not* 3915 + byte-swapping other word-sized numbers. 3916 + 3917 +Mon Aug 11 03:30:48 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3918 + 3919 + * dosio.c: New file to do DOS/BIOS disk accesses. 3920 + 3921 + * namei.c (open_namei): Make pathlen be of type size_t. 3922 + 3923 + * llseek.c: Always #include stdlib.h since it's need to define 3924 + size_t. 3925 + 3926 + * io.h: Use errcode_t for magic numbers. 3927 + 3928 + * icount.c (get_icount_el): Use size_t where appropriate 3929 + 3930 + * dupfs.c (ext2fs_dup_handle): 3931 + * dblist.c (dir_block_cmp): Use size_t where appropriate. 3932 + 3933 + * read_bb.c (ext2fs_read_bb_inode): 3934 + * cmp_bitmaps.c (ext2fs_compare_inode_bitmap): Use blk_t, ino_t 3935 + and size_t where appropriate. 3936 + 3937 + * closefs.c (ext2fs_flush): Use dgrp_t instead of int where 3938 + appropriate. 3939 + 3940 + * openfs.c (ext2fs_open): 3941 + * check_desc.c (ext2fs_check_desc): Use blk_t instead of int where 3942 + appropriate. 3943 + 3944 + * rw_bitmaps.c (read_bitmaps): 3945 + * irel_ma.c: 3946 + * inode.c (ext2fs_write_inode): 3947 + * initialize.c (ext2fs_initialize): 3948 + * brel_ma.c: Fix to make be 16-bit safe. 3949 + 3950 + * link.c (ext2fs_link): 3951 + * unlink.c (ext2fs_unlink): 3952 + * lookup.c (lookup_proc): 3953 + * ismounted.c (ext2fs_check_if_mounted): 3954 + * block.c (xlate_func): Add #pragma argsused for Turbo C. 3955 + 3956 +Sun Aug 10 10:05:22 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3957 + 3958 + * block.c (ext2fs_block_iterate2): Use retval which is a errcode_t 3959 + type. 3960 + 3961 + * bitmaps.c (make_bitmap): Use size_t instead of int where 3962 + appropriate. 3963 + 3964 + * bb_inode.c (set_bad_block_proc): Add #pragma argsused for Turbo C. 3965 + 3966 + * alloc.c (ext2fs_new_inode): Use ino_t instead of int for the 3967 + group number. 3968 + 3969 + * get_pathname.c: Use ino_t instead of int where appropriate. 3970 + 3971 + * ext2fs.h: Make the magic structure element be errcode_t instead 3972 + of int. 3973 + 3974 + * alloc.c alloc_tables.c badblocks.c bb_compat.c bb_inode.c 3975 + bitmaps.c block.c bmove.c brel_ma.c check_desc.c closefs.c 3976 + cmp_bitmaps.c dblist.c dblist_dir.c dir_iterate.c 3977 + dirblock.c dupfs.c expanddir.c freefs.c get_pathname.c 3978 + icount.c initialize.c inline.c inode.c irel_ma.c link.c 3979 + llseek.c lookup.c mkdir.c namei.c newdir.c read_bb.c 3980 + read_bb_file.c rs_bitmap.c rw_bitmaps.c swapfs.c 3981 + test_io.c tst_badblocks.c tst_iscan.c unix_io.c unlink.c 3982 + valid_blk.c version.c: Add an #ifdef for HAVE_UNISTD_H 3983 + 3984 +Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3985 + 3986 + * unix_io.c (unix_read_blk): If ext2fs_llseek() fails, but errno 3987 + is zero, then return EXT2_IO_LLSEEK_FAILED. 3988 + 3989 + * ext2_err.et.in: Add a new error code, EXT2_IO_LLSEEK_FAILED. 3990 + 3991 + * Release of E2fsprogs 1.11 3992 + 3993 +Mon Jun 16 23:53:06 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3994 + 3995 + * dblist.c (ext2fs_dblist_count): Added new function which returns 3996 + the number of directory blocks in dblist. 3997 + 3998 +Sat Jun 14 01:39:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 3999 + 4000 + * unix_io.c (unix_flush): Make the io_channel flush function do a 4001 + fsync to flush the kernel buffers to disk. 4002 + 4003 +Wed Jun 11 18:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4004 + 4005 + * inode.c (ext2fs_inode_scan_goto_blockgroup): Fix bug; the 4006 + current inode number wasn't being set by the 4007 + goto_blockgroup function. 4008 + 4009 +Mon Jun 9 10:45:48 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4010 + 4011 + * bmove.c (ext2fs_move_blocks): New function which takes a bitmap 4012 + of blocks which need to be moved, and moves those blocks 4013 + to another location in the filesystem. 4014 + 4015 + * rs_bitmap.c (ext2fs_resize_generic_bitmap): When expanding a 4016 + bitmap, make sure all of the new parts of the bitmap are 4017 + zero. 4018 + 4019 +Sun Jun 8 16:24:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4020 + 4021 + * bitmaps.c (ext2fs_copy_bitmap): Fix bug; the destination bitmap 4022 + wasn't being returned to the caller. 4023 + 4024 + * alloc_tables.c (ext2fs_allocate_group_table): Add new function 4025 + ext2fs_allocate_group_table() which sets the group tables 4026 + for a particular block group. The relevant code was 4027 + factored out of ext2fs_allocate_tables(). 4028 + 4029 + * dblist.c (make_dblist): Adjust the initial size of the directory 4030 + block list to be a bit more realistic (ten plus twice the 4031 + number of directories in the filesystem). 4032 + 4033 +Thu May 8 22:19:09 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4034 + 4035 + * badblocks.c (ext2fs_badblocks_list_test): Fix bug where 4036 + ext2fs_badblocks_list_test would test the list (and exceed 4037 + array boundaries) if there were no bad blocks on the bad 4038 + blocks list. (Showed up when user tried: mke2fs -c -b 4096). 4039 + 4040 +Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu> 4041 + 4042 + * Release of E2fsprogs version 1.10 4043 + 4044 +Thu Apr 24 10:13:42 1997 Theodre Ts'o <tytso@localhost.mit.edu> 4045 + 4046 + * alloc_tables.c (ext2fs_allocate_tables): Correctly place the 4047 + inode and block bitmaps based on the RAID 0 stride 4048 + parameter (which is passed by mke2fs). 4049 + 4050 + * ext2fs.h: Add "stride" parameter to ext2_filsys, to be used by 4051 + mke2fs to communicate the stride length to 4052 + ext2fs_allocate_tables() 4053 + 4054 +Wed Apr 23 21:50:42 1997 Theodre Ts'o <tytso@localhost.mit.edu> 4055 + 4056 + * initialize.c (ext2fs_initialize): Fix to compile under Linux 1.2 4057 + systems. (We can't assume that the new filesystem types 4058 + are supported.) 4059 + 4060 +Wed Apr 23 18:40:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4061 + 4062 + * alloc_tables.c (ext2fs_allocate_tables): Make sure that we 4063 + allocate the inode and block bitmaps inside block group at 4064 + all times. 4065 + 4066 +Mon Apr 21 00:06:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4067 + 4068 + * alloc.c (ext2fs_new_block): Fix bug where if goal==0 and the 4069 + filesystem has no free blocks, ext2fs_new_block would loop 4070 + forever. 4071 + 4072 + * dupfs.c (ext2fs_dup_handle): Duplicate an ext2 filesystem handle 4073 + 4074 + * freefs.c (ext2fs_free_inode_cache): Decrement refcount and only 4075 + free if refcount goes to zero. 4076 + 4077 + * inode.c (create_icache): Initialize refcount to 1. 4078 + 4079 + * ext2fsP.h: Added refcount to ext2_inode_cache 4080 + 4081 + * dblist.c (ext2fs_copy_dblist): New function to copy a directory 4082 + block list. 4083 + 4084 + * badblocks.c (ext2fs_badblocks_copy): New function to copy a 4085 + badblocks structure. 4086 + 4087 +Sun Apr 20 23:19:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4088 + 4089 + * bitmaps.c (ext2fs_copy_bitmap): New function to copy a bitmap. 4090 + 4091 + * unix_io.c, test_io.c (unix_open, test_open): Initialize the 4092 + refcount to 1. 4093 + (unix_close, test_close): Decrement the refcount and only 4094 + close the io_channel if the refcount goes to 0. 4095 + 4096 + * io.h: Add refcount to the io_channel structure. Add new macro 4097 + interface io_channel_bumpcount() to bump the refcount. 4098 + 4099 +Thu Apr 17 20:25:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4100 + 4101 + * inode.c (ext2fs_read_inode, ext2fs_write_inode): Use the inode 4102 + cache in the filesystem handle, instead of the inode cache 4103 + in a static variable. 4104 + 4105 + * freefs.c: Added static function to free the inode cache (called by 4106 + ext2fs_free). 4107 + 4108 + * ext2fsP.h: Added definition of the ext2_inode_cache structures. 4109 + 4110 + * ext2fs.h: Added pointer to the inode_cache structure. 4111 + 4112 + * block.c (block_iterate_ind, block_iterate_dind, 4113 + block_iterate_tind): If there are holes in the indirect, 4114 + doubly indirect, or triply indirect blocks, increment the 4115 + block count field automatically. 4116 + 4117 +Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4118 + 4119 + * Release of E2fsprogs version 1.09 4120 + 4121 +Mon Apr 14 20:38:56 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4122 + 4123 + * version.c (ext2fs_parse_version_string): Check the passed in 4124 + version string (instead of the hard-coded one). 4125 + 4126 + * alloc_tables.c (ext2fs_allocate_tables): If the last block is 4127 + greater filesystem size, clamp it to prevent allocating a 4128 + block or inode bitmap beyond the filesystem. 4129 + 4130 + * initialize.c (ext2fs_initialize): Fix bug where the metatdata 4131 + overhead calculation was accidentally removed. 4132 + 4133 +Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4134 + 4135 + * Release of E2fsprogs version 1.08 4136 + 4137 +Thu Apr 10 13:15:15 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4138 + 4139 + * dblist.c (ext2fs_set_dir_block): New function which sets the 4140 + block of a dblist entry, given the directory inode and 4141 + blockcnt. 4142 + 4143 +Sat Apr 5 12:42:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4144 + 4145 + * alloc_tables.c (ext2fs_allocate_tables): Allocate the bitmap and 4146 + inode bitmaps at staggered locations across the block 4147 + groups, to avoid concentrating the bitmaps on a small 4148 + number of disks when using striped RAID arrays. 4149 + 4150 + * initialize.c (ext2fs_initialize): By default, choose the maximum 4151 + possible number of blocks per group (based on the size of 4152 + the bitmaps in the blocksize). 4153 + 4154 +Fri Apr 4 11:28:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4155 + 4156 + * initialize.c (ext2fs_initialize): Add support for 4157 + EXT2_COMPAT_SPARSE_SUPER feature. 4158 + 4159 + * closefs.c (ext2fs_bg_has_super): New function to determine 4160 + whether or a particular block group should have a 4161 + superblock and block group descriptor. Used for the 4162 + EXT2_COMPAT_SPARSE_SUPER feature is turned on. 4163 + (ext2fs_flush): Check ext2fs_bg_has_super to see whether 4164 + or not the superblock should be written out for the block 4165 + group. 4166 + 4167 + * ext2fs.h (EXT2_COMPAT_SPARSE_SUPER): Define compatibility flag 4168 + for sparse duplicate superblocks. 4169 + 4170 + * version.c (ext2fs_get_library_version): New function which 4171 + returns the library version. 4172 + 4173 + * version.c (ext2fs_parse_version_string): New function which 4174 + parses a version string and returns a version number, 4175 + so application programs can compare version numbers as 4176 + integers. 4177 + 4178 +Wed Mar 26 00:43:52 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4179 + 4180 + * icount.c (ext2fs_create_icount): Change function so that it also 4181 + takes a new argument which contains a "hint" icount 4182 + structure. This "hint" icount allows the create function 4183 + to set up the sorted list in advance. This reduces 4184 + significantly the amount of data moving needed to insert 4185 + these inodes into the list later. 4186 + 4187 + * icount.c (ext2fs_icount_validate): New function which validates 4188 + that the icount structure's rep invariant. 4189 + 4190 + * icount.c (get_icount_el): Completely revamped implementation 4191 + to subsume put_icount_el(). Put_icount_el() used to 4192 + use an O(N) implementation to insert in the middle 4193 + of the icount list. It now uses a O(ln N) to search 4194 + for where the icount should be inserted, and then uses 4195 + a memcpy to move the list down (instead of a for loop). 4196 + 4197 + * icount.c (ext2fs_icount_fetch, ext2fs_icount_store, 4198 + ext2fs_icount_increment, ext2fs_icount_decrement): Check 4199 + to see if the inode is within bounds; if it isn't, return 4200 + EINVAL. 4201 + 4202 + * bitops.h (ext2fs_test_generic_bitmap): Fix error message given 4203 + when a bad inode number is passed to test_generic_bitmap 4204 + to be EXT2FS_TEST_ERROR instead of the wrong 4205 + EXT2FS_UNMARK_ERROR. 4206 + 4207 +Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu> 4208 + 4209 + * Release of E2fsprogs version 1.07 4210 + 4211 +Sun Mar 2 16:46:18 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4212 + 4213 + * Makefile.in (ELF_VERSION): Change version to be 2.2 4214 + 4215 +Tue Feb 11 14:54:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4216 + 4217 + * alloc.c (ext2fs_get_free_blocks): Change routine to use 4218 + ext2fs_fast_test_block_bitmap_range(). 4219 + 4220 + * bitops.h (ext2fs_fast_test_block_bitmap_range, 4221 + ext2fs_test_block_bitmap_range: New inline functions which 4222 + test to see whether a contiguous range of blocks is 4223 + available. 4224 + 4225 +Thu Feb 6 10:00:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4226 + 4227 + * badblocks.c (ext2fs_badblocks_list_create): Rename sybmols to use 4228 + use ext2fs_badblocks_* instead of badblocks_* 4229 + 4230 + * bb_compat.c: New file which translates between old badblocks_*() 4231 + names to ext2fs_badblocks_*() 4232 + 4233 + * unlink.c (ext2fs_unlink): New file, moved ext2fs_unlink() from 4234 + link.c (since e2fsck doesn't use ext2fs_unlink()). 4235 + 4236 + * rs_bitmap.c (ext2fs_resize_generic_bitmap): New file, contains 4237 + bitmap resizing routine moved from bitmaps.c, since e2fsck 4238 + doesn't need to use this function. 4239 + 4240 + * lookup.c (ext2fs_lookup): Moved ext2fs_lookup to its own file, 4241 + since e2fsck only needs ext2fs_lookup. 4242 + 4243 +Mon Feb 3 10:11:40 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4244 + 4245 + * inode.c (ext2fs_open_inode_scan): Set fs->badblocks if it is not 4246 + already set; this is needed so that programs like dump 4247 + which use the inode scan functions will deal with 4248 + filesystems that have bad blocks in the inode table. 4249 + 4250 +Sun Feb 2 00:17:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4251 + 4252 + * ext2fs.h (struct_badblocks_list, struct_badblocks_iterate): 4253 + Moved to ext2fsP.h, since it doesn't need to be part of 4254 + the public interface. 4255 + 4256 + * dir_iterate.c: Move ext2_dir_iterate out of namei.c. 4257 + 4258 +Sat Feb 1 10:14:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4259 + 4260 + * dblist.c (ext2fs_get_num_dirs): New file, which implements a 4261 + directory block list abstraction. (Code moved from 4262 + e2fsck). 4263 + 4264 + * ext2fs.h, inode.c: Moved definition of ext2_struct_inode_scan to 4265 + to inode.c (since no one else should be peeking inside it!) 4266 + 4267 + * valid_blk.c (ext2_inode_has_valid_blocks): New function. 4268 + 4269 + * openfs.c (ext2fs_open): Check the feature set in the ext2 4270 + superblock, and refuse to open filesystems if they contain 4271 + incompatible features. (Can be overriden with the 4272 + EXT2_FLAG_FORCE 4273 + 4274 +Sun Jan 12 11:31:46 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4275 + 4276 + * block.c (ext2fs_block_iterate2): Added new function 4277 + ext2fs_block_iterate2 which changes the function 4278 + signature of the callback function to include the 4279 + referencing block and offset. 4280 + 4281 + * inode.c (ext2fs_inode_scan_goto_blockgroup): Added new function 4282 + ext2fs_inode_scan_goto_blockgroup which allows an 4283 + application to jump to a particular block group while 4284 + doing an inode scan. 4285 + 4286 +Wed Jan 1 23:50:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu> 4287 + 4288 + * dirblock.c: Include string.h, since we use memcpy(). 4289 + 4290 +Tue Dec 3 12:27:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4291 + 4292 + * getsize.c (ext2fs_get_device_size): The ioctl BLKGETSIZE returns 4293 + a long not an int; this doesn't matter on i386 machines, 4294 + but it does on Alpha's. 4295 + 4296 +Fri Nov 29 20:57:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4297 + 4298 + * inode.c (ext2fs_write_inode, ext2fs_read_inode): If the inode 4299 + table pointer is NULL, then return an error indicating 4300 + that the inode table is missing. 4301 + (get_next_blockgroup, get_next_blocks, 4302 + ext2fs_get_next_inode): Don't treat a missing inode table 4303 + as permanent error. Return MISSING_INODE_TABLE, but as an 4304 + advisory error code, much like BAD_BLOCK_IN_INODE_TABLE. 4305 + 4306 + * rw_bitmaps.c (ext2fs_write_block_bitmap, 4307 + ext2fs_write_inode_bitmap): If the inode or block bitmap 4308 + block is zero, then don't write out the inode or block 4309 + bitmap. The idea here is to avoid stomping on the 4310 + superblock. 4311 + (read_bitmaps): If the inode or block bitmap block is 4312 + zero, then fill in that portion of the inode or block 4313 + bitmap with all zeros. 4314 + 4315 + * inode.c (ext2fs_get_next_inode): Fix bug in handling of bad 4316 + blocks in inode table when the inode table size is 4317 + non-standard (and can therefore span blocks). 4318 + 4319 +Tue Oct 29 20:13:14 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4320 + 4321 + * alloc.c (ext2fs_new_block): Fix fencepost error in 4322 + ext2fs_new_block; make sure we don't try to allocate the 4323 + first block beyond the end of the filesystem. 4324 + 4325 +Mon Oct 14 11:00:48 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4326 + 4327 + * inode.c (check_for_inode_bad_blocks): New function called by 4328 + get_next_blocks() to avoid reading in bad blocks marked in 4329 + fs->badblocks. Inodes located in bad blocks are returned 4330 + by ext2fs_get_next_inode() returns the error code 4331 + EXT2_ET_BAD_BLOCK_IN_INODE_TABLE. 4332 + 4333 + * alloc_tables.c (ext2fs_allocate_tables): New function which 4334 + performs the part of mke2fs's job of allocating the 4335 + filesystem tables. 4336 + 4337 + * test_io.c (test_close): IO manager which is used for testing 4338 + purposes. 4339 + 4340 +Sun Oct 13 04:31:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4341 + 4342 + * inode.c (ext2fs_get_next_inode): Separate out the function of 4343 + setting up for a new block group to get_next_blockgroup(). 4344 + Separate out the function of reading in blocks of the 4345 + inode table to get_next_blocks(). 4346 + 4347 + * ext2fs.h: Add the badblocks list to the ext2_filsys entry 4348 + 4349 + * badblocks.c (badblocks_list_add, badblocks_list_test): Add 4350 + blocks to the badblock list in sorted order. This allows 4351 + badblocks_list_test to be coded using a binary search for 4352 + speed. 4353 + 4354 +Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4355 + 4356 + * Release of E2fsprogs version 1.06 4357 + 4358 +Mon Oct 7 00:44:17 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4359 + 4360 + * ext2fs.h, block.c, closefs.c, dirblock.c, inode.c, native.c, 4361 + open.c: Change EXT2_SWAP to EXT2_FLAG_SWAP for 4362 + consistency's sake. 4363 + 4364 + * closefs.c (ext2fs_flush): If the flag EXT2_MASTER_SB_ONLY is 4365 + set, then only write out the master superblock. 4366 + 4367 +Sun Oct 6 21:45:26 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4368 + 4369 + * block.c (ext2fs_block_iterate): Fixed bug which caused 4370 + block_iterate to fail to handle HURD created filesystems; 4371 + it tested the inode translator field before the inode was 4372 + loaded. 4373 + 4374 +Tue Sep 17 14:08:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4375 + 4376 + * initialize.c (ext2fs_initialize): Make sure the description for 4377 + the inode bitmap is set correctly. 4378 + 4379 + * bitmaps.c (ext2fs_allocate_generic_bitmap): Fix minor type typo. 4380 + 4381 +Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4382 + 4383 + * Release of E2fsprogs version 1.05 4384 + 4385 +Sat Sep 7 07:36:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4386 + 4387 + * initialize.c: Override the kernel's idea of default 4388 + checkinterval from 0 (never) to 180 days. 4389 + 4390 +Wed Aug 28 03:20:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4391 + 4392 + * namei.c (ext2fs_namei_follow): New function which follows 4393 + symbolic link (if any) at the target. 4394 + 4395 +Tue Aug 27 01:48:43 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4396 + 4397 + * inode.c (ext2fs_read_inode, ext2fs_write_inode): Add support 4398 + for shortcut function fs->read_inode() and fs->write_inode(). 4399 + Added inode_cache to reduce CPU time spent in doing 4400 + byte swapping. 4401 + 4402 + * swapfs.c (ext2fs_swap_super): Swap the new fields in a V2 4403 + superblock. 4404 + 4405 + * namei.c (ext2fs_follow_link): New function. 4406 + (ext2fs_namei): Extended to have support for chasing 4407 + symbolic links. ext2fs_namei() still returns an inode 4408 + which is a symbolic link. Symbolic links are only chased 4409 + while resolving the containing directory. To chase 4410 + symbolic links of the final result, use 4411 + ext2fs_follow_link(). 4412 + 4413 +Mon Aug 26 23:46:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4414 + 4415 + * ext2_err.et.in: Added new error code EXT2_ET_SYMLINK_LOOP. 4416 + 4417 + * bitops.h (ext2fs_set_bit, ext2fs_celar_bit): Use asm inlines 4418 + provided by Pete A. Zaitcev (zaitcev@lab.sun.mcst.ru). 4419 + 4420 +Thu Aug 22 00:40:18 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4421 + 4422 + * initialize.c (ext2fs_initialize): On systems where the byte 4423 + order is not i386 compatible, set the swap_byte flag. 4424 + 4425 + * inode.c (inocpy_with_swap): Check to see if inode contains a 4426 + fast symlink before swapping the inode block fields. This 4427 + required adding a new argument to inocpy_with_swap to 4428 + determine whether the mode field is in host order or not. 4429 + 4430 +Wed Aug 21 00:45:42 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4431 + 4432 + * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit): On 4433 + the sparc, if EXT2_STD_BITOPS set, use the standard 4434 + i386-compatible bitmask operations, instead on the 4435 + non-standard native bitmask operators. 4436 + 4437 +Fri Aug 9 11:11:35 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4438 + 4439 + * block.c (ext2fs_block_iterate): Cause block iterator to return 4440 + the HURD translator block (along with everything else). 4441 + If the flag BLOCK_FLAG_DATA_ONLY is passed to the block 4442 + iterator, then don't return any meta data blocks 4443 + (including the HURD translator). 4444 + 4445 +Wed Jul 17 17:13:34 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4446 + 4447 + * gen_uuid.c: New file, which generates DCE-compatible UUIDs. 4448 + 4449 + * uuid.c: New file, containing UUID utility functions. 4450 + 4451 +Tue Jul 16 10:19:16 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4452 + 4453 + * ext2fs.h: Add a definition of the "real" ext2 superblock. 4454 + 4455 +Fri May 24 14:54:55 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4456 + 4457 + * ext2fs.h: Fix erroneous ino_t type used in block_bitmap type. 4458 + 4459 +Sun May 19 15:39:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4460 + 4461 + * openfs.c (ext2fs_open): If the blocksize in the superblock is 4462 + zero, return the error EXT2_ET_CORRUPT_SUPERBLOCK, since 4463 + that's a basic value that must be correct for the rest of 4464 + the library to work. 4465 + 4466 + * ext2_err.et.in (EXT2_ET_CORRUPT_SUPERBLOCK): Added new error 4467 + code. 4468 + 4469 +Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu> 4470 + 4471 + * Release of E2fsprogs version 1.04 4472 + 4473 +Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu> 4474 + 4475 + * Release of E2fsprogs version 1.03 4476 + 4477 +Tue Mar 26 12:06:32 1996 <tytso@rsts-11.mit.edu> 4478 + 4479 + * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit): 4480 + Change the m68k bit numbering for bitmasks to match with 4481 + the bit numbering used by all other ext2 implementations. 4482 + 4483 +Thu Mar 7 03:37:00 1996 <tytso@rsts-11.mit.edu> 4484 + 4485 + * inode.c (ext2fs_get_next_inode, ext2fs_close_inode_scan, 4486 + ext2fs_open_inode_scan): Support dynamically-sized inodes. 4487 + 4488 +Wed Mar 6 12:26:29 1996 <tytso@rsts-11.mit.edu> 4489 + 4490 + * inode.c (ext2fs_read_inode, ext2fs_write_inode): Support 4491 + dynamically-sized inodes. 4492 + 4493 + * openfs.c (ext2fs_open): Allow dynamic revision filesystem to be 4494 + loaded. 4495 + 4496 +Tue Mar 5 03:49:37 1996 <tytso@rsts-11.mit.edu> 4497 + 4498 + * initialize.c (ext2fs_initialize): Catch an error condition where 4499 + the passed in size is *really* too small. 4500 + 4501 + * alloc.c (ext2fs_new_inode): 4502 + * ext2fs.h (EXT2_FIRST_INODE): Add support for dynamic revision to 4503 + get first inode. 4504 + 4505 +Wed Feb 21 15:56:17 1996 <tytso@rsts-11.mit.edu> 4506 + 4507 + * getsize.c (ext2fs_get_device_size): Open the device read-only 4508 + when trying to determine its size. 4509 + 4510 +Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu> 4511 + 4512 + * Release of E2fsprogs version 1.02 4513 + 4514 +Sat Dec 9 09:57:50 1995 <tytso@rsts-11.mit.edu> 4515 + 4516 + * rw_bitops.c (ext2fs_write_block_bitmap): 4517 + * bitops.c (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit): 4518 + * bitops.h (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit): 4519 + Rename {test,set,clear}_bit to ext2fs_{test,set,clear}_bit, 4520 + to avoid conflicts with with kernel include files. Also 4521 + rename ADDR and CONST_ADDR to EXT2FS_ADDR and 4522 + EXT2FS_CONST_ADDR. 4523 + 4524 +Thu Oct 26 12:09:16 1995 <tytso@rsts-11.mit.edu> 4525 + 4526 + * ext2_err.et: Updated message in EXT2_ET_BASE to say version 0.5c 4527 + 4528 + * swapfs.c (ext2fs_swap_super): Put an #ifdef check around 4529 + s_def_resuid and s_def_resgid for backwards compatibility. 4530 + 4531 +Fri Oct 20 23:33:31 1995 <tytso@rsts-11.mit.edu> 4532 + 4533 + * bitops.h: Added #ifdef's for Sparc. 4534 + 4535 +Wed Sep 6 22:14:46 1995 <tytso@rsts-11.mit.edu> 4536 + 4537 + * getsize.c: #include <sys/ioctl.h> under Linux to pick up ioctl() 4538 + declaration 4539 + 4540 + * closefs.c: #include <string.h> to pick up memset() declaration 4541 + 4542 +Mon Sep 4 21:45:29 1995 Remy Card <card@bbj> 4543 + 4544 + * Makefile.in: Added support for BSD shared libraries. 4545 + 4546 + * initialize.c (ext2fs_initialize): Correctly set the s_creator_os 4547 + flag. 4548 + 4549 +Mon Sep 4 09:55:30 1995 <tytso@rsts-11.mit.edu> 4550 + 4551 + * unix_io.c (unix_open): Add a double check; if the passed in name 4552 + is NULL, return EXT2_ET_BAD_DEVICE_NAME. 4553 + 4554 + * ext2_err.et (EXT2_ET_BAD_DEVICE_NAME): Added new error code 4555 + 4556 +Wed Aug 16 15:44:10 1995 <tytso@rsts-11.mit.edu> 4557 + 4558 + * inode.c (ext2fs_check_directory): Use LINUX_S_ISDIR instead of 4559 + S_ISDIR. 4560 + 4561 +Tue Aug 15 13:08:36 1995 <tytso@rsts-11.mit.edu> 4562 + 4563 + * getsize.c (ext2fs_get_device_size): Add support for reading the 4564 + partition size from a BSD disk label. 4565 + 4566 +Thu Aug 10 09:33:26 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu> 4567 + 4568 + * getsize.c (ext2fs_get_device_size): New function that determins 4569 + the size of a device. Used by mke2fs and e2fsck. 4570 + 4571 +Sat Aug 12 03:09:54 1995 Remy Card <card@bbj> 4572 + 4573 + * Makefile.in (install): Install static libraries in $(ulibdir) 4574 + (/usr/lib on Linux) instead of $(libdir) (/lib on Linux). 4575 + 4576 +Wed Aug 9 17:04:23 1995 Theodore Y. Ts'o <tytso@dcl> 4577 + 4578 + * bitmaps.c (ext2fs_free_inode_bitmap, ext2fs_free_block_bitmap): 4579 + Move these functions to freefs.c. 4580 + 4581 + * closefs.c (ext2fs_flush): If swapping blocks, clear the group 4582 + descriptors shadow memory to keep purify quiet. (This 4583 + also has the nice benefit that the unused portion of the 4584 + shadow descriptors are zeroed out.) 4585 + 4586 + * dirblock.c (ext2fs_write_dir_block): We need to use 4587 + dirent->rec_len *before* it's byteswapped to find the 4588 + location of the next directory structure! 4589 + 4590 + * alloc.c (ext2fs_new_inode): Fix bug which could potentially 4591 + cause ext2fs_new_inode to loop infinitely if we're trying 4592 + to allocate an inode in group #0 and there are no free 4593 + inodes at all in the system. 4594 + 4595 + * closefs.c: #include <errno.h> if it exists. 4596 + 4597 +Sun Aug 6 13:27:50 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu> 4598 + 4599 + * ext2fs.h (BLOCK_FLAG_HOLE): Added new definition for 4600 + BLOCK_FLAG_APPEND. Added documentation for the block 4601 + interator flags. 4602 + 4603 +Sat Aug 5 11:44:05 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu> 4604 + 4605 + * Makefile.in (DLL_INSTALL_DIR, ELF_INSTALL_DIR): Set the 4606 + installation directories correctly. 4607 + 4608 +Tue Jul 18 09:27:38 1995 <tytso@rsx-11.mit.edu> 4609 + 4610 + * namei.c (process_dir_block): 4611 + * mkdir.c (ext2fs_mkdir): 4612 + * expanddir.c (expand_dir_proc): Use ext2fs_{read,write}_dir_block 4613 + to read/write the directory block. 4614 + 4615 + * dirblock.c (ext2fs_read_dir_block), ext2fs_write_dir_block): New 4616 + file containing functions for reading and writing 4617 + directory blocks (byte swapping if necesssary) 4618 + 4619 + * block.c (block_iterate_ind, block_iterate_dind, 4620 + block_iterate_tind): Byte swap the block addresses if 4621 + EXT2_SWAP_BYTES is set (and swap them back before writing 4622 + them out.) 4623 + 4624 + * inode.c (inocpy_with_swap): New function. 4625 + (ext2fs_get_next_inode, ext2fs_read_inode, ext2fs_write_inode): 4626 + Call inocpy_with_swap if EXT2_SWAP_BYTES if set. 4627 + 4628 + * closefs.c (ext2fs_flush): If EXT2_SWAP_BYTES is set, then swap 4629 + the superblock and group descriptors before writing it out. 4630 + 4631 + * openfs.c (ext2fs_open): If the magic number is byte-swapped, 4632 + then set the EXT2_SWAP_BYTES and byte-swap the superblock 4633 + and group descriptors. 4634 + 4635 + * swapfs.c (ext2fs_swap_super, ext2fs_swap_group_desc): New functions 4636 + to desp ext2 filesystem structures. 4637 + 4638 + * bitops.c (set_bit, clear_bit, test_bit): Use modifications 4639 + supplied by Pete A. Zaitcev so that the C language 4640 + versions of these functions are more portable. They will 4641 + now work on both little and big endian systems, and the 4642 + assumption that 32-bit integers are used is gone. 4643 + 4644 + * bitops.h (ext2_swab16, ext2_swab32): Added new functions for 4645 + doing byte swapping. 4646 + 4647 + * ext2fs.h (EXT2_SWAP_BYTES): Add new flag which indicates that 4648 + byte swapping should take place. 4649 + 4650 +Sun Jul 16 06:21:43 1995 <tytso@rsx-11.mit.edu> 4651 + 4652 + * Makefile.in, cmp_bitmaps.c (ext2fs_compare_block_bitmap_end, 4653 + ext2fs_compare_inode_bitmap_end): Added new file 4654 + containing routines to compare bitmaps. 4655 + 4656 + * ext2_err.et (EXT2_ET_NEQ_BLOCK_BITMAP, EXT2_ET_NEQ_INODE_BITMAP): 4657 + Added new error codes. 4658 + 4659 +Sat Jul 15 04:23:37 1995 <tytso@rsx-11.mit.edu> 4660 + 4661 + * inode.c (ext2fs_get_next_inode): Don't check scan->inode_buffer; 4662 + if the magic number is correct, it will be allocated. 4663 + 4664 +Fri Jul 14 19:02:59 1995 <tytso@rsx-11.mit.edu> 4665 + 4666 + * block.c (block_iterate_ind, block_iterate_dind, 4667 + block_iterate_tind): Don't recompute block_nr each loop; 4668 + just increment it! Factor check of BLOCK_FLAG_APPEND out 4669 + of the loop. Factor mask of BLOCK_CHANGED into changed 4670 + variable out of the loop. (block_iterate_ind, in 4671 + particular, gets called a lot, so every little 4672 + optimization helps.) 4673 + 4674 +Thu Jul 13 08:02:45 1995 <tytso@rsx-11.mit.edu> 4675 + 4676 + * block.c (block_iterate_ind, block_iterate_dind, 4677 + block_iterate_tind): Precompute limit of loop to speed up 4678 + block_iterate_ind and company. 4679 + 4680 + * bitops.h (ext2fs_fast_mark_block_bitmap, 4681 + ext2fs_fast_unmark_block_bitmap, ext2fs_fast_test_block_bitmap, 4682 + ext2fs_fast_mark_inode_bitmap, ext2fs_fast_unmark_inode_bitmap, 4683 + ext2fs_fast_test_inode_bitmap): Add fast version of these 4684 + functions, which don't do range checking. 4685 + 4686 + * bitops.h (ext2fs_get_block_bitmap_start, 4687 + ext2fs_get_inode_bitmap_start, ext2fs_get_block_bitmap_end, 4688 + ext2fs_get_inode_bitmap_end): Add new accessor functions 4689 + which return the start and end points of the bitmaps. 4690 + 4691 +Tue Jul 11 18:59:41 1995 <tytso@rsx-11.mit.edu> 4692 + 4693 + * llseek.c (ext2_llseek): If the offset is small enough, use lseek 4694 + instead of llseek. The errno if the offset is too large 4695 + and lseek is not supported should be EINVAL, not -EINVAL. 4696 + 4697 +Thu Jun 15 23:43:02 1995 Remy Card <card@bbj> 4698 + 4699 + * Makefile.in: Added support for ELF shared libraries. 4700 + Fixed typos in the compilation rules. 4701 + (distclean): Added Makefile. 4702 + 4703 + * llseek.c (llseek): New function, if llseek() does not exist in the 4704 + C library. 4705 + (ext2_llseek): Changed to call llseek(). 4706 + 4707 +Mon Jun 12 08:29:07 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu> 4708 + 4709 + * ext2fs.h: Use __u32 to define blk_t, instead of unsigned long. 4710 + 4711 +Sun Jun 11 15:02:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu> 4712 + 4713 + * mkdir.c (ext2fs_mkdir): Use LINUX_S_IFDIR instead of S_IFDIR. 4714 + 4715 + * ext2fs.h (LINUX_S_IFDIR): Define a linux specific versions of 4716 + the S_*, which are normally defined in <sys/stat.h>. This 4717 + allows us to compile e2fsprogs on a non-Linux system, 4718 + which may have a different value for S_IFDIR. 4719 + 4720 +Sat Jun 10 23:47:05 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu> 4721 + 4722 + * bitops.c (clear_bit, set_bit): Remove calls to cli() and sti(); 4723 + this is a user-mode application! 4724 + 4725 +Thu Jun 8 13:13:22 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu> 4726 + 4727 + * llseek.c: Put the include of <linux/unistd.h> inside the #ifdef 4728 + __linux__ so that non-linux systems won't see it. 4729 + 4730 + * alloc.c: Include <errno.h> if possible. 4731 + * badblocks.c: Ditto. 4732 + * bb_inode.c: Ditto. 4733 + * bitmaps.c: Ditto. 4734 + * block.c: Ditto. 4735 + * expanddir.c: Ditto. 4736 + * get_pathname.c: Ditto. 4737 + * initialize.c: Ditto. 4738 + * inode.c: Ditto. 4739 + * llseek.c: Ditto. 4740 + * mkdir.c: Ditto. 4741 + * namei.c: Ditto. 4742 + * newdir.c: Ditto. 4743 + * openfs.c: Ditto. 4744 + * rw_bitmaps.c: Ditto. 4745 + * unix_io.c: Ditto. 4746 + 4747 + * Makefile.in: Rewritten to conform to GNU coding standards and 4748 + support separate compilation directories. 4749 + 4750 +Thu May 11 04:13:12 1995 <tytso@rsx-11.mit.edu> 4751 + 4752 + * initialize.c (ext2fs_initialize): Don't allow more than one 4753 + bitmaps's worth of inodes in a group. 4754 + 4755 +Sat Mar 11 14:07:11 1995 Theodore Y. Ts'o <tytso@localhost> 4756 + 4757 + * llseek.c (ext2_llseek): Added error checking to the llseek() 4758 + compat code to protect against overflow. This only 4759 + applies to 1.0 and early 1.1 kernels, which don't support 4760 + the llseek() system call. 4761 + 4762 +Thu Nov 24 16:29:00 1994 Theodore Y. Ts'o (tytso@rt-11) 4763 + 4764 + * unix_io.c (unix_open): Initialize the read_error and write_error 4765 + io_channel pointers to be null. 4766 + 4767 + * bb_inode.c (clear_bad_block_proc): If an illegal block number is 4768 + found, clear it but don't try to update the filesystem 4769 + accounting information, since that's hopeless anyway. 4770 + 4771 + * block.c (bloblock_iterate_ind, bloblock_iterate_dind, 4772 + bloblock_iterate_tind): Check to see if the indirect blocks are 4773 + valid before trying to read them. 4774 + 4775 + * ext2_err.et (EXT2_ET_BAD_IND_BLOCK, EX2_ET_BAD_DIND_BLOCK, 4776 + EXT2_ET_BAD_TIND_BLOCK): Add new error codes. 4777 + 4778 + * bitops.h (ext2fs_mark_block_bitmap, ext2fs_unmark_block_bitmap, 4779 + ext2fs_test_block_bitmap, ext2fs_mark_inode_bitmap, 4780 + ext2fs_unmark_inode_bitmap, ext2fs_test_inode_bitmap): If an 4781 + illegal block or inode number is passed in, return instead 4782 + of trying to test, set, or clear the bit. 4783 + 4784 +Mon Nov 7 21:32:33 1994 Remy Card <card@bbj> 4785 + 4786 + * Makefile: Added a dummy install target in case shared libraries 4787 + are not built. 4788 + 4789 +Mon Oct 24 14:11:44 1994 (tytso@rsx-11) 4790 + 4791 + * bitmaps.c (ext2fs_allocate_block_bitmap): Fix calculation of how 4792 + the real last block of the bitmap should be calculated. 4793 + 4794 +Wed Sep 7 10:05:36 1994 (tytso@rsx-11) 4795 + 4796 + * bitmaps.c (ext2fs_fudge_inode_bitmap_end, 4797 + ext2fs_fudge_block_bitmap_end, ext2fs_clear_inode_bitmap, 4798 + ext2fs_clear_block_bitmap, ext2fs_free_inode_bitmap, 4799 + ext2fs_free_block_bitmap): Add magic number checking for 4800 + the inode and block bitmaps. 4801 + 4802 + * bitmaps.c (ext2fs_allocate_block_bitmap): Fix to set the correct 4803 + magic number for a block bitmap instead of an inode bitmap. 4804 + 4805 + * inode.c (ext2fs_close_inode_scan, ext2fs_get_next_inode): Add 4806 + magic number checking for the inode_scan structure. 4807 + 4808 + * badblocks.c (badblocks_list_free, badblocks_list_add, 4809 + badblocks_list_test, badblocks_list_iterate_begin, 4810 + badblocks_list_iterate, badblocks_list_iterate_end): Add 4811 + magic number checking for the badblocks_list and 4812 + badblocks_iterate structures. 4813 + 4814 + * ext2_err.et (EXT2_ET_MAGIC_UNIX_IO_CHANNEL): 4815 + * unix_io.c (unix_open, unix_close, unix_set_blksize, unix_read_blk, 4816 + unix_write_blk, unix_flush): Add magic number checking 4817 + both for io_channel structure and unix_private_data 4818 + structure. 4819 + 4820 + * openfs.c (ext2fs_open): Add check for io_manager structure's 4821 + magic number. 4822 + 4823 + * rw_bitmaps.c (ext2fs_write_inode_bitmap, ext2fs_write_block_bitmap, 4824 + ext2fs_read_inode_bitmap, ext2fs_read_block_bitmap, 4825 + ext2fs_read_bitmaps, ext2fs_write_bitmaps): 4826 + * read_bb.c (ext2fs_read_bb_inode): 4827 + * read_bb_file.c (ext2fs_read_bb_FILE): 4828 + * newdir.c (ext2fs_new_dir_block): 4829 + * namei.c (ext2fs_dir_iterate, ext2fs_lookup, ext2fs_namei): 4830 + * link.c (ext2fs_link, ext2fs_unlink): 4831 + * inode.c (ext2fs_open_inode_scan, ext2fs_read_inode, 4832 + ext2fs_write_inode, ext2fs_get_blocks, 4833 + ext2fs_check_directory): 4834 + * get_pathname.c (ext2fs_get_pathname): 4835 + * expanddir.c (ext2fs_expand_dir): 4836 + * block.c (ext2fs_block_iterate): 4837 + * bitmaps.c (ext2fs_allocate_inode_bitmap, 4838 + ext2fs_allocate_block_bitmap): 4839 + * bb_inode.c (ext2fs_update_bb_inode): 4840 + * alloc.c (ext2fs_new_inode,ext2fs_new_block,ext2fs_get_free_blocks): 4841 + * check_desc.c (ext2fs_check_desc): 4842 + * closefs.c (ext2fs_close, ext2fs_flush): 4843 + * freefs.c (ext2fs_free): Add check for ext2_filsys magic number. 4844 + 4845 + * Makefile: 4846 + * ext2fs.h: 4847 + * openfs.c: 4848 + * check_desc.c (ext2fs_check_desc): Move ext2fs_check_desc from 4849 + openfs.c into its own file. 4850 + 4851 + * ext2fs.h (EXT2_CHECK_MAGIC): Added macro for checking for 4852 + structure magic numbers. 4853 + 4854 + * closefs.c (ext2fs_flush): Folded in Remy Card's changes to clear 4855 + the EXT2_VALID_FS flag in the backup superblock blocks, so that if 4856 + someone uses the -b option to specify the use of the backup 4857 + superblock --- this usually means that the main superblock is 4858 + toast. :-) 4859 + 4860 + * ext2fs.h: 4861 + * ext2_err.et (EXT2_ET_REV_TOO_HIGH): 4862 + * openfs.c (ext2fs_open): Folded in Remy Card's changes to add a 4863 + revision level to the superblock. 4864 + 4865 +Sun Aug 21 00:50:08 1994 Theodore Y. Ts'o (tytso@rt-11) 4866 + 4867 + * ext2fs.h: 4868 + * bitmaps.c: 4869 + * bitops.c 4870 + * bitops.h: 4871 + * openfs.c: 4872 + * initialize.c: Completely revamped the inode and block bitmap 4873 + structures, so that they can be better chance of being extensible 4874 + in a shared library. They are now their own type, instead of 4875 + being a char *. Also, the function signatures of 4876 + ext2fs_test_block_bitmap, ext2fs_mark_block_bitmap, 4877 + ext2fs_unmark_block_bitmap, ext2fs_test_inode_bitmap, 4878 + ext2fs_mark_inode_bitmap, and ext2fs_unmark_inode_bitmap were 4879 + changed to eliminate the ext2_filsys argument, since it is no 4880 + longer necessary. 4881 + 4882 +Wed Aug 17 21:46:44 1994 Remy Card (card@bbj) 4883 + 4884 + * unix_io.c (unix_read_blk and unix_write_blk): use the llseek 4885 + system call if available. 4886 + 4887 + * llseek.c: new file. This is the stub calling the llseek system 4888 + call which allows supports for 2GB+ file systems. 4889 + 4890 + * initialize.c (ext2fs_initialize): Ext2fs_initialize now stores 4891 + the creator operating system. 4892 + 4893 +Wed Aug 17 10:03:24 1994 Theodore Y. Ts'o (tytso@rt-11) 4894 + 4895 + * initialize.c (ext2fs_initialize): Ext2fs_initialize now sets up 4896 + the group descriptor statistics in addition to everything else. 4897 + This relieves mke2fs of the responsibility of doing it. 4898 + 4899 + * bitops.c, bitops.h: Add assembly inline functions for the 68000. 4900 + Added a new #define, _EXT2_HAVE_ASM_BITOPS_ to control whether or 4901 + not the generic C function equivalents should be included or not. 4902 + 4903 + * openfs.c (ext2fs_open): If a superblock is specified, then use 4904 + the backup group descriptors that go along with this superblock, 4905 + instead of using the primary group descriptors. This allows 4906 + e2fsck to recover filesystems where the primary group descriptors 4907 + have been trashed. 4908 + 4909 + 4910 diff -Naur silo-1.4.14.orig/libext2fs/Makefile silo-1.4.14/libext2fs/Makefile 4911 --- silo-1.4.14.orig/libext2fs/Makefile 1969-12-31 16:00:00.000000000 -0800 4912 +++ silo-1.4.14/libext2fs/Makefile 2009-01-07 15:07:56.000000000 -0800 4913 @@ -0,0 +1,21 @@ 4914 + 4915 +include ../Rules.make 4916 + 4917 +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 4918 + 4919 +DEBUGFS_LIB_OBJS = inode_io.o namei.o write_bb_file.o 4920 +RESIZE_LIB_OBJS = rs_bitmap.o dupfs.o test_io.o 4921 +E2IMAGE_LIB_OBJS = imager.o 4922 +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 4923 + 4924 +all: libext2fs.a 4925 + 4926 +libext2fs.a: $(OBJS) 4927 + $(RM) libext2fs.a 4928 + $(AR) rc libext2fs.a $(OBJS) 4929 + 4930 +clean: 4931 + $(RM) -f libext2fs.a $(OBJS) 4932 + 4933 +.c.o: 4934 + $(CC-SILO) $(CFLAGS) $(DEFS) -c $< -o $@ 4935 diff -Naur silo-1.4.14.orig/libext2fs/alloc.c silo-1.4.14/libext2fs/alloc.c 4936 --- silo-1.4.14.orig/libext2fs/alloc.c 1969-12-31 16:00:00.000000000 -0800 4937 +++ silo-1.4.14/libext2fs/alloc.c 2009-01-07 15:07:56.000000000 -0800 583 4938 @@ -0,0 +1,173 @@ 584 4939 +/* … … 755 5110 +} 756 5111 + 757 diff -Naur silo-1.4.1 3.orig/libext2fs/alloc_sb.c silo-1.4.13/libext2fs/alloc_sb.c758 --- silo-1.4.1 3.orig/libext2fs/alloc_sb.c 1969-12-31 19:00:00.000000000 -0500759 +++ silo-1.4.1 3/libext2fs/alloc_sb.c 2007-04-03 17:02:53.000000000 -04005112 diff -Naur silo-1.4.14.orig/libext2fs/alloc_sb.c silo-1.4.14/libext2fs/alloc_sb.c 5113 --- silo-1.4.14.orig/libext2fs/alloc_sb.c 1969-12-31 16:00:00.000000000 -0800 5114 +++ silo-1.4.14/libext2fs/alloc_sb.c 2009-01-07 15:07:56.000000000 -0800 760 5115 @@ -0,0 +1,57 @@ 761 5116 +/* … … 816 5171 + return num_blocks; 817 5172 +} 818 diff -Naur silo-1.4.1 3.orig/libext2fs/alloc_stats.c silo-1.4.13/libext2fs/alloc_stats.c819 --- silo-1.4.1 3.orig/libext2fs/alloc_stats.c 1969-12-31 19:00:00.000000000 -0500820 +++ silo-1.4.1 3/libext2fs/alloc_stats.c 2007-04-03 17:02:53.000000000 -04005173 diff -Naur silo-1.4.14.orig/libext2fs/alloc_stats.c silo-1.4.14/libext2fs/alloc_stats.c 5174 --- silo-1.4.14.orig/libext2fs/alloc_stats.c 1969-12-31 16:00:00.000000000 -0800 5175 +++ silo-1.4.14/libext2fs/alloc_stats.c 2009-01-07 15:07:56.000000000 -0800 821 5176 @@ -0,0 +1,52 @@ 822 5177 +/* … … 872 5227 + ext2fs_mark_bb_dirty(fs); 873 5228 +} 874 diff -Naur silo-1.4.1 3.orig/libext2fs/alloc_tables.c silo-1.4.13/libext2fs/alloc_tables.c875 --- silo-1.4.1 3.orig/libext2fs/alloc_tables.c 1969-12-31 19:00:00.000000000 -0500876 +++ silo-1.4.1 3/libext2fs/alloc_tables.c 2007-04-03 17:02:53.000000000 -04005229 diff -Naur silo-1.4.14.orig/libext2fs/alloc_tables.c silo-1.4.14/libext2fs/alloc_tables.c 5230 --- silo-1.4.14.orig/libext2fs/alloc_tables.c 1969-12-31 16:00:00.000000000 -0800 5231 +++ silo-1.4.14/libext2fs/alloc_tables.c 2009-01-07 15:07:56.000000000 -0800 877 5232 @@ -0,0 +1,117 @@ 878 5233 +/* … … 993 5348 +} 994 5349 + 995 diff -Naur silo-1.4.1 3.orig/libext2fs/badblocks.c silo-1.4.13/libext2fs/badblocks.c996 --- silo-1.4.1 3.orig/libext2fs/badblocks.c 1969-12-31 19:00:00.000000000 -0500997 +++ silo-1.4.1 3/libext2fs/badblocks.c 2007-04-03 17:02:53.000000000 -04005350 diff -Naur silo-1.4.14.orig/libext2fs/badblocks.c silo-1.4.14/libext2fs/badblocks.c 5351 --- silo-1.4.14.orig/libext2fs/badblocks.c 1969-12-31 16:00:00.000000000 -0800 5352 +++ silo-1.4.14/libext2fs/badblocks.c 2009-01-07 15:07:56.000000000 -0800 998 5353 @@ -0,0 +1,327 @@ 999 5354 +/* … … 1324 5679 + return bb->num; 1325 5680 +} 1326 diff -Naur silo-1.4.1 3.orig/libext2fs/bb_compat.c silo-1.4.13/libext2fs/bb_compat.c1327 --- silo-1.4.1 3.orig/libext2fs/bb_compat.c 1969-12-31 19:00:00.000000000 -05001328 +++ silo-1.4.1 3/libext2fs/bb_compat.c 2007-04-03 17:02:53.000000000 -04005681 diff -Naur silo-1.4.14.orig/libext2fs/bb_compat.c silo-1.4.14/libext2fs/bb_compat.c 5682 --- silo-1.4.14.orig/libext2fs/bb_compat.c 1969-12-31 16:00:00.000000000 -0800 5683 +++ silo-1.4.14/libext2fs/bb_compat.c 2009-01-07 15:07:56.000000000 -0800 1329 5684 @@ -0,0 +1,63 @@ 1330 5685 +/* … … 1391 5746 + ext2fs_badblocks_list_iterate_end(iter); 1392 5747 +} 1393 diff -Naur silo-1.4.1 3.orig/libext2fs/bb_inode.c silo-1.4.13/libext2fs/bb_inode.c1394 --- silo-1.4.1 3.orig/libext2fs/bb_inode.c 1969-12-31 19:00:00.000000000 -05001395 +++ silo-1.4.1 3/libext2fs/bb_inode.c 2007-04-03 17:02:53.000000000 -04005748 diff -Naur silo-1.4.14.orig/libext2fs/bb_inode.c silo-1.4.14/libext2fs/bb_inode.c 5749 --- silo-1.4.14.orig/libext2fs/bb_inode.c 1969-12-31 16:00:00.000000000 -0800 5750 +++ silo-1.4.14/libext2fs/bb_inode.c 2009-01-07 15:07:56.000000000 -0800 1396 5751 @@ -0,0 +1,267 @@ 1397 5752 +/* … … 1662 6017 + 1663 6018 + 1664 diff -Naur silo-1.4.1 3.orig/libext2fs/bitmaps.c silo-1.4.13/libext2fs/bitmaps.c1665 --- silo-1.4.1 3.orig/libext2fs/bitmaps.c 1969-12-31 19:00:00.000000000 -05001666 +++ silo-1.4.1 3/libext2fs/bitmaps.c 2007-04-03 17:02:53.000000000 -04006019 diff -Naur silo-1.4.14.orig/libext2fs/bitmaps.c silo-1.4.14/libext2fs/bitmaps.c 6020 --- silo-1.4.14.orig/libext2fs/bitmaps.c 1969-12-31 16:00:00.000000000 -0800 6021 +++ silo-1.4.14/libext2fs/bitmaps.c 2009-01-07 15:07:56.000000000 -0800 1667 6022 @@ -0,0 +1,212 @@ 1668 6023 +/* … … 1878 6233 + (size_t) (((bitmap->real_end - bitmap->start) / 8) + 1)); 1879 6234 +} 1880 diff -Naur silo-1.4.1 3.orig/libext2fs/bitops.c silo-1.4.13/libext2fs/bitops.c1881 --- silo-1.4.1 3.orig/libext2fs/bitops.c 1969-12-31 19:00:00.000000000 -05001882 +++ silo-1.4.1 3/libext2fs/bitops.c 2007-04-03 17:02:53.000000000 -04006235 diff -Naur silo-1.4.14.orig/libext2fs/bitops.c silo-1.4.14/libext2fs/bitops.c 6236 --- silo-1.4.14.orig/libext2fs/bitops.c 1969-12-31 16:00:00.000000000 -0800 6237 +++ silo-1.4.14/libext2fs/bitops.c 2009-01-07 15:07:56.000000000 -0800 1883 6238 @@ -0,0 +1,91 @@ 1884 6239 +/* … … 1973 6328 +} 1974 6329 + 1975 diff -Naur silo-1.4.1 3.orig/libext2fs/bitops.h silo-1.4.13/libext2fs/bitops.h1976 --- silo-1.4.1 3.orig/libext2fs/bitops.h 1969-12-31 19:00:00.000000000 -05001977 +++ silo-1.4.1 3/libext2fs/bitops.h 2007-04-03 17:02:53.000000000 -04006330 diff -Naur silo-1.4.14.orig/libext2fs/bitops.h silo-1.4.14/libext2fs/bitops.h 6331 --- silo-1.4.14.orig/libext2fs/bitops.h 1969-12-31 16:00:00.000000000 -0800 6332 +++ silo-1.4.14/libext2fs/bitops.h 2009-01-07 15:07:56.000000000 -0800 1978 6333 @@ -0,0 +1,617 @@ 1979 6334 +/* … … 2594 6949 +#endif 2595 6950 + 2596 diff -Naur silo-1.4.1 3.orig/libext2fs/block.c silo-1.4.13/libext2fs/block.c2597 --- silo-1.4.1 3.orig/libext2fs/block.c 1969-12-31 19:00:00.000000000 -05002598 +++ silo-1.4.1 3/libext2fs/block.c 2007-04-03 17:02:53.000000000 -04006951 diff -Naur silo-1.4.14.orig/libext2fs/block.c silo-1.4.14/libext2fs/block.c 6952 --- silo-1.4.14.orig/libext2fs/block.c 1969-12-31 16:00:00.000000000 -0800 6953 +++ silo-1.4.14/libext2fs/block.c 2009-01-07 15:07:56.000000000 -0800 2599 6954 @@ -0,0 +1,437 @@ 2600 6955 +/* … … 3035 7390 +} 3036 7391 + 3037 diff -Naur silo-1.4.1 3.orig/libext2fs/bmap.c silo-1.4.13/libext2fs/bmap.c3038 --- silo-1.4.1 3.orig/libext2fs/bmap.c 1969-12-31 19:00:00.000000000 -05003039 +++ silo-1.4.1 3/libext2fs/bmap.c 2007-04-03 17:02:53.000000000 -04007392 diff -Naur silo-1.4.14.orig/libext2fs/bmap.c silo-1.4.14/libext2fs/bmap.c 7393 --- silo-1.4.14.orig/libext2fs/bmap.c 1969-12-31 16:00:00.000000000 -0800 7394 +++ silo-1.4.14/libext2fs/bmap.c 2009-01-07 15:07:56.000000000 -0800 3040 7395 @@ -0,0 +1,270 @@ 3041 7396 +/* … … 3309 7664 + 3310 7665 + 3311 diff -Naur silo-1.4.1 3.orig/libext2fs/bmove.c silo-1.4.13/libext2fs/bmove.c3312 --- silo-1.4.1 3.orig/libext2fs/bmove.c 1969-12-31 19:00:00.000000000 -05003313 +++ silo-1.4.1 3/libext2fs/bmove.c 2007-04-03 17:02:53.000000000 -04007666 diff -Naur silo-1.4.14.orig/libext2fs/bmove.c silo-1.4.14/libext2fs/bmove.c 7667 --- silo-1.4.14.orig/libext2fs/bmove.c 1969-12-31 16:00:00.000000000 -0800 7668 +++ silo-1.4.14/libext2fs/bmove.c 2009-01-07 15:07:56.000000000 -0800 3314 7669 @@ -0,0 +1,160 @@ 3315 7670 +/* … … 3473 7828 +} 3474 7829 + 3475 diff -Naur silo-1.4.1 3.orig/libext2fs/brel.h silo-1.4.13/libext2fs/brel.h3476 --- silo-1.4.1 3.orig/libext2fs/brel.h 1969-12-31 19:00:00.000000000 -05003477 +++ silo-1.4.1 3/libext2fs/brel.h 2007-04-03 17:02:53.000000000 -04007830 diff -Naur silo-1.4.14.orig/libext2fs/brel.h silo-1.4.14/libext2fs/brel.h 7831 --- silo-1.4.14.orig/libext2fs/brel.h 1969-12-31 16:00:00.000000000 -0800 7832 +++ silo-1.4.14/libext2fs/brel.h 2009-01-07 15:07:56.000000000 -0800 3478 7833 @@ -0,0 +1,86 @@ 3479 7834 +/* … … 3563 7918 +#define ext2fs_brel_free(brel) ((brel)->free((brel))) 3564 7919 + 3565 diff -Naur silo-1.4.1 3.orig/libext2fs/brel_ma.c silo-1.4.13/libext2fs/brel_ma.c3566 --- silo-1.4.1 3.orig/libext2fs/brel_ma.c 1969-12-31 19:00:00.000000000 -05003567 +++ silo-1.4.1 3/libext2fs/brel_ma.c 2007-04-03 17:02:53.000000000 -04007920 diff -Naur silo-1.4.14.orig/libext2fs/brel_ma.c silo-1.4.14/libext2fs/brel_ma.c 7921 --- silo-1.4.14.orig/libext2fs/brel_ma.c 1969-12-31 16:00:00.000000000 -0800 7922 +++ silo-1.4.14/libext2fs/brel_ma.c 2009-01-07 15:07:56.000000000 -0800 3568 7923 @@ -0,0 +1,197 @@ 3569 7924 +/* … … 3764 8119 + return 0; 3765 8120 +} 3766 diff -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 + 7081 diff -Naur silo-1.4.13.orig/libext2fs/check_desc.c silo-1.4.13/libext2fs/check_desc.c 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 8121 diff -Naur silo-1.4.14.orig/libext2fs/check_desc.c silo-1.4.14/libext2fs/check_desc.c 8122 --- silo-1.4.14.orig/libext2fs/check_desc.c 1969-12-31 16:00:00.000000000 -0800 8123 +++ silo-1.4.14/libext2fs/check_desc.c 2009-01-07 15:07:56.000000000 -0800 7084 8124 @@ -0,0 +1,68 @@ 7085 8125 +/* … … 7151 8191 + return 0; 7152 8192 +} 7153 diff -Naur silo-1.4.1 3.orig/libext2fs/closefs.c silo-1.4.13/libext2fs/closefs.c7154 --- silo-1.4.1 3.orig/libext2fs/closefs.c 1969-12-31 19:00:00.000000000 -05007155 +++ silo-1.4.1 3/libext2fs/closefs.c 2007-04-03 17:02:53.000000000 -04008193 diff -Naur silo-1.4.14.orig/libext2fs/closefs.c silo-1.4.14/libext2fs/closefs.c 8194 --- silo-1.4.14.orig/libext2fs/closefs.c 1969-12-31 16:00:00.000000000 -0800 8195 +++ silo-1.4.14/libext2fs/closefs.c 2009-01-07 15:07:56.000000000 -0800 7156 8196 @@ -0,0 +1,381 @@ 7157 8197 +/* … … 7536 8576 +} 7537 8577 + 7538 diff -Naur silo-1.4.1 3.orig/libext2fs/cmp_bitmaps.c silo-1.4.13/libext2fs/cmp_bitmaps.c7539 --- silo-1.4.1 3.orig/libext2fs/cmp_bitmaps.c 1969-12-31 19:00:00.000000000 -05007540 +++ silo-1.4.1 3/libext2fs/cmp_bitmaps.c 2007-04-03 17:02:53.000000000 -04008578 diff -Naur silo-1.4.14.orig/libext2fs/cmp_bitmaps.c silo-1.4.14/libext2fs/cmp_bitmaps.c 8579 --- silo-1.4.14.orig/libext2fs/cmp_bitmaps.c 1969-12-31 16:00:00.000000000 -0800 8580 +++ silo-1.4.14/libext2fs/cmp_bitmaps.c 2009-01-07 15:07:56.000000000 -0800 7541 8581 @@ -0,0 +1,72 @@ 7542 8582 +/* … … 7612 8652 +} 7613 8653 + 7614 diff -Naur silo-1.4.1 3.orig/libext2fs/dblist.c silo-1.4.13/libext2fs/dblist.c7615 --- silo-1.4.1 3.orig/libext2fs/dblist.c 1969-12-31 19:00:00.000000000 -05007616 +++ silo-1.4.1 3/libext2fs/dblist.c 2007-04-03 17:02:53.000000000 -04008654 diff -Naur silo-1.4.14.orig/libext2fs/dblist.c silo-1.4.14/libext2fs/dblist.c 8655 --- silo-1.4.14.orig/libext2fs/dblist.c 1969-12-31 16:00:00.000000000 -0800 8656 +++ silo-1.4.14/libext2fs/dblist.c 2009-01-07 15:07:56.000000000 -0800 7617 8657 @@ -0,0 +1,260 @@ 7618 8658 +/* … … 7876 8916 + return (int) dblist->count; 7877 8917 +} 7878 diff -Naur silo-1.4.1 3.orig/libext2fs/dblist_dir.c silo-1.4.13/libext2fs/dblist_dir.c7879 --- silo-1.4.1 3.orig/libext2fs/dblist_dir.c 1969-12-31 19:00:00.000000000 -05007880 +++ silo-1.4.1 3/libext2fs/dblist_dir.c 2007-04-03 17:02:53.000000000 -04008918 diff -Naur silo-1.4.14.orig/libext2fs/dblist_dir.c silo-1.4.14/libext2fs/dblist_dir.c 8919 --- silo-1.4.14.orig/libext2fs/dblist_dir.c 1969-12-31 16:00:00.000000000 -0800 8920 +++ silo-1.4.14/libext2fs/dblist_dir.c 2009-01-07 15:07:56.000000000 -0800 7881 8921 @@ -0,0 +1,75 @@ 7882 8922 +/* … … 7955 8995 + db_info->blockcnt, 0, 0, priv_data); 7956 8996 +} 7957 diff -Naur silo-1.4.13.orig/libext2fs/dirblock.c silo-1.4.13/libext2fs/dirblock.c 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 8997 diff -Naur silo-1.4.14.orig/libext2fs/dir_iterate.c silo-1.4.14/libext2fs/dir_iterate.c 8998 --- silo-1.4.14.orig/libext2fs/dir_iterate.c 1969-12-31 16:00:00.000000000 -0800 8999 +++ silo-1.4.14/libext2fs/dir_iterate.c 2009-01-07 15:07:56.000000000 -0800 9000 @@ -0,0 +1,219 @@ 9001 +/* 9002 + * dir_iterate.c --- ext2fs directory iteration operations 9003 + * 9004 + * Copyright (C) 1993, 1994, 1994, 1995, 1996, 1997 Theodore Ts'o. 9005 + * 9006 + * %Begin-Header% 9007 + * This file may be redistributed under the terms of the GNU Public 9008 + * License. 9009 + * %End-Header% 9010 + */ 9011 + 9012 +#include <stdio.h> 9013 +#include <string.h> 9014 +#if HAVE_UNISTD_H 9015 +#include <unistd.h> 9016 +#endif 9017 +#if HAVE_ERRNO_H 9018 +#include <errno.h> 9019 +#endif 9020 + 9021 +#include "ext2_fs.h" 9022 +#include "ext2fsP.h" 9023 + 9024 +/* 9025 + * This function checks to see whether or not a potential deleted 9026 + * directory entry looks valid. What we do is check the deleted entry 9027 + * and each successive entry to make sure that they all look valid and 9028 + * that the last deleted entry ends at the beginning of the next 9029 + * undeleted entry. Returns 1 if the deleted entry looks valid, zero 9030 + * if not valid. 9031 + */ 9032 +static int ext2fs_validate_entry(char *buf, int offset, int final_offset) 9033 +{ 9034 + struct ext2_dir_entry *dirent; 9035 + 9036 + while (offset < final_offset) { 9037 + dirent = (struct ext2_dir_entry *)(buf + offset); 9038 + offset += dirent->rec_len; 9039 + if ((dirent->rec_len < 8) || 9040 + ((dirent->rec_len % 4) != 0) || 9041 + (((dirent->name_len & 0xFF)+8) > dirent->rec_len)) 9042 + return 0; 9043 + } 9044 + return (offset == final_offset); 9045 +} 9046 + 9047 +errcode_t ext2fs_dir_iterate2(ext2_filsys fs, 9048 + ext2_ino_t dir, 9049 + int flags, 9050 + char *block_buf, 9051 + int (*func)(ext2_ino_t dir, 9052 + int entry, 9053 + struct ext2_dir_entry *dirent, 9054 + int offset, 9055 + int blocksize, 9056 + char *buf, 9057 + void *priv_data), 9058 + void *priv_data) 9059 +{ 9060 + struct dir_context ctx; 9061 + errcode_t retval; 9062 + 9063 + EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS); 9064 + 9065 + retval = ext2fs_check_directory(fs, dir); 9066 + if (retval) 9067 + return retval; 9068 + 9069 + ctx.dir = dir; 9070 + ctx.flags = flags; 9071 + if (block_buf) 9072 + ctx.buf = block_buf; 9073 + else { 9074 + retval = ext2fs_get_mem(fs->blocksize, &ctx.buf); 9075 + if (retval) 9076 + return retval; 9077 + } 9078 + ctx.func = func; 9079 + ctx.priv_data = priv_data; 9080 + ctx.errcode = 0; 9081 + retval = ext2fs_block_iterate2(fs, dir, 0, 0, 9082 + ext2fs_process_dir_block, &ctx); 9083 + if (!block_buf) 9084 + ext2fs_free_mem(&ctx.buf); 9085 + if (retval) 9086 + return retval; 9087 + return ctx.errcode; 9088 +} 9089 + 9090 +struct xlate { 9091 + int (*func)(struct ext2_dir_entry *dirent, 9092 + int offset, 9093 + int blocksize, 9094 + char *buf, 9095 + void *priv_data); 9096 + void *real_private; 9097 +}; 9098 + 9099 +static int xlate_func(ext2_ino_t dir EXT2FS_ATTR((unused)), 9100 + int entry EXT2FS_ATTR((unused)), 9101 + struct ext2_dir_entry *dirent, int offset, 9102 + int blocksize, char *buf, void *priv_data) 9103 +{ 9104 + struct xlate *xl = (struct xlate *) priv_data; 9105 + 9106 + return (*xl->func)(dirent, offset, blocksize, buf, xl->real_private); 9107 +} 9108 + 9109 +extern errcode_t ext2fs_dir_iterate(ext2_filsys fs, 9110 + ext2_ino_t dir, 9111 + int flags, 9112 + char *block_buf, 9113 + int (*func)(struct ext2_dir_entry *dirent, 9114 + int offset, 9115 + int blocksize, 9116 + char *buf, 9117 + void *priv_data), 9118 + void *priv_data) 9119 +{ 9120 + struct xlate xl; 9121 + 9122 + xl.real_private = priv_data; 9123 + xl.func = func; 9124 + 9125 + return ext2fs_dir_iterate2(fs, dir, flags, block_buf, 9126 + xlate_func, &xl); 9127 +} 9128 + 9129 + 9130 +/* 9131 + * Helper function which is private to this module. Used by 9132 + * ext2fs_dir_iterate() and ext2fs_dblist_dir_iterate() 9133 + */ 9134 +int ext2fs_process_dir_block(ext2_filsys fs, 9135 + blk_t *blocknr, 9136 + e2_blkcnt_t blockcnt, 9137 + blk_t ref_block EXT2FS_ATTR((unused)), 9138 + int ref_offset EXT2FS_ATTR((unused)), 9139 + void *priv_data) 9140 +{ 9141 + struct dir_context *ctx = (struct dir_context *) priv_data; 9142 + unsigned int offset = 0; 9143 + unsigned int next_real_entry = 0; 9144 + int ret = 0; 9145 + int changed = 0; 9146 + int do_abort = 0; 9147 + int entry, size; 9148 + struct ext2_dir_entry *dirent; 9149 + 9150 + if (blockcnt < 0) 9151 + return 0; 9152 + 9153 + entry = blockcnt ? DIRENT_OTHER_FILE : DIRENT_DOT_FILE; 9154 + 9155 + ctx->errcode = ext2fs_read_dir_block(fs, *blocknr, ctx->buf); 9156 + if (ctx->errcode) 9157 + return BLOCK_ABORT; 9158 + 9159 + while (offset < fs->blocksize) { 9160 + dirent = (struct ext2_dir_entry *) (ctx->buf + offset); 9161 + if (((offset + dirent->rec_len) > fs->blocksize) || 9162 + (dirent->rec_len < 8) || 9163 + ((dirent->rec_len % 4) != 0) || 9164 + (((dirent->name_len & 0xFF)+8) > dirent->rec_len)) { 9165 + ctx->errcode = EXT2_ET_DIR_CORRUPTED; 9166 + return BLOCK_ABORT; 9167 + } 9168 + if (!dirent->inode && 9169 + !(ctx->flags & DIRENT_FLAG_INCLUDE_EMPTY)) 9170 + goto next; 9171 + 9172 + ret = (ctx->func)(ctx->dir, 9173 + (next_real_entry > offset) ? 9174 + DIRENT_DELETED_FILE : entry, 9175 + dirent, offset, 9176 + fs->blocksize, ctx->buf, 9177 + ctx->priv_data); 9178 + if (entry < DIRENT_OTHER_FILE) 9179 + entry++; 9180 + 9181 + if (ret & DIRENT_CHANGED) 9182 + changed++; 9183 + if (ret & DIRENT_ABORT) { 9184 + do_abort++; 9185 + break; 9186 + } 9187 +next: 9188 + if (next_real_entry == offset) 9189 + next_real_entry += dirent->rec_len; 9190 + 9191 + if (ctx->flags & DIRENT_FLAG_INCLUDE_REMOVED) { 9192 + size = ((dirent->name_len & 0xFF) + 11) & ~3; 9193 + 9194 + if (dirent->rec_len != size) { 9195 + unsigned int final_offset; 9196 + 9197 + final_offset = offset + dirent->rec_len; 9198 + offset += size; 9199 + while (offset < final_offset && 9200 + !ext2fs_validate_entry(ctx->buf, 9201 + offset, 9202 + final_offset)) 9203 + offset += 4; 9204 + continue; 9205 + } 9206 + } 9207 + offset += dirent->rec_len; 9208 + } 9209 + 9210 + if (changed) { 9211 + ctx->errcode = ext2fs_write_dir_block(fs, *blocknr, ctx->buf); 9212 + if (ctx->errcode) 9213 + return BLOCK_ABORT; 9214 + } 9215 + if (do_abort) 9216 + return BLOCK_ABORT; 9217 + return 0; 9218 +} 9219 + 9220 diff -Naur silo-1.4.14.orig/libext2fs/dirblock.c silo-1.4.14/libext2fs/dirblock.c 9221 --- silo-1.4.14.orig/libext2fs/dirblock.c 1969-12-31 16:00:00.000000000 -0800 9222 +++ silo-1.4.14/libext2fs/dirblock.c 2009-01-07 15:07:56.000000000 -0800 7960 9223 @@ -0,0 +1,130 @@ 7961 9224 +/* … … 8089 9352 +} 8090 9353 + 8091 diff -Naur silo-1.4.1 3.orig/libext2fs/dirhash.c silo-1.4.13/libext2fs/dirhash.c8092 --- silo-1.4.1 3.orig/libext2fs/dirhash.c 1969-12-31 19:00:00.000000000 -05008093 +++ silo-1.4.1 3/libext2fs/dirhash.c 2007-04-03 17:02:53.000000000 -04009354 diff -Naur silo-1.4.14.orig/libext2fs/dirhash.c silo-1.4.14/libext2fs/dirhash.c 9355 --- silo-1.4.14.orig/libext2fs/dirhash.c 1969-12-31 16:00:00.000000000 -0800 9356 +++ silo-1.4.14/libext2fs/dirhash.c 2009-01-07 15:07:56.000000000 -0800 8094 9357 @@ -0,0 +1,233 @@ 8095 9358 +/* … … 8326 9589 + return 0; 8327 9590 +} 8328 diff -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 + 8551 diff -Naur silo-1.4.13.orig/libext2fs/dosio.c silo-1.4.13/libext2fs/dosio.c 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 9591 diff -Naur silo-1.4.14.orig/libext2fs/dosio.c silo-1.4.14/libext2fs/dosio.c 9592 --- silo-1.4.14.orig/libext2fs/dosio.c 1969-12-31 16:00:00.000000000 -0800 9593 +++ silo-1.4.14/libext2fs/dosio.c 2009-01-07 15:07:56.000000000 -0800 8554 9594 @@ -0,0 +1,456 @@ 8555 9595 +/* … … 9009 10049 + return 0; 9010 10050 +} 9011 diff -Naur silo-1.4.1 3.orig/libext2fs/dosio.h silo-1.4.13/libext2fs/dosio.h9012 --- silo-1.4.1 3.orig/libext2fs/dosio.h 1969-12-31 19:00:00.000000000 -05009013 +++ silo-1.4.1 3/libext2fs/dosio.h 2007-04-03 17:02:53.000000000 -040010051 diff -Naur silo-1.4.14.orig/libext2fs/dosio.h silo-1.4.14/libext2fs/dosio.h 10052 --- silo-1.4.14.orig/libext2fs/dosio.h 1969-12-31 16:00:00.000000000 -0800 10053 +++ silo-1.4.14/libext2fs/dosio.h 2009-01-07 15:07:56.000000000 -0800 9014 10054 @@ -0,0 +1,153 @@ 9015 10055 +/* … … 9166 10206 + 9167 10207 +#endif /* __diskio_h */ 9168 diff -Naur silo-1.4.1 3.orig/libext2fs/dupfs.c silo-1.4.13/libext2fs/dupfs.c9169 --- silo-1.4.1 3.orig/libext2fs/dupfs.c 1969-12-31 19:00:00.000000000 -05009170 +++ silo-1.4.1 3/libext2fs/dupfs.c 2007-04-03 17:02:53.000000000 -040010208 diff -Naur silo-1.4.14.orig/libext2fs/dupfs.c silo-1.4.14/libext2fs/dupfs.c 10209 --- silo-1.4.14.orig/libext2fs/dupfs.c 1969-12-31 16:00:00.000000000 -0800 10210 +++ silo-1.4.14/libext2fs/dupfs.c 2009-01-07 15:07:56.000000000 -0800 9171 10211 @@ -0,0 +1,96 @@ 9172 10212 +/* … … 9266 10306 +} 9267 10307 + 9268 diff -Naur silo-1.4.1 3.orig/libext2fs/e2image.h silo-1.4.13/libext2fs/e2image.h9269 --- silo-1.4.1 3.orig/libext2fs/e2image.h 1969-12-31 19:00:00.000000000 -05009270 +++ silo-1.4.1 3/libext2fs/e2image.h 2007-04-03 17:02:53.000000000 -040010308 diff -Naur silo-1.4.14.orig/libext2fs/e2image.h silo-1.4.14/libext2fs/e2image.h 10309 --- silo-1.4.14.orig/libext2fs/e2image.h 1969-12-31 16:00:00.000000000 -0800 10310 +++ silo-1.4.14/libext2fs/e2image.h 2009-01-07 15:07:56.000000000 -0800 9271 10311 @@ -0,0 +1,51 @@ 9272 10312 +/* … … 9321 10361 + 9322 10362 + 9323 diff -Naur silo-1.4.1 3.orig/libext2fs/expanddir.c silo-1.4.13/libext2fs/expanddir.c9324 --- silo-1.4.1 3.orig/libext2fs/expanddir.c 1969-12-31 19:00:00.000000000 -05009325 +++ silo-1.4.1 3/libext2fs/expanddir.c 2007-04-03 17:02:53.000000000 -040010363 diff -Naur silo-1.4.14.orig/libext2fs/expanddir.c silo-1.4.14/libext2fs/expanddir.c 10364 --- silo-1.4.14.orig/libext2fs/expanddir.c 1969-12-31 16:00:00.000000000 -0800 10365 +++ silo-1.4.14/libext2fs/expanddir.c 2009-01-07 15:07:56.000000000 -0800 9326 10366 @@ -0,0 +1,126 @@ 9327 10367 +/* … … 9451 10491 + return 0; 9452 10492 +} 9453 diff -Naur silo-1.4.1 3.orig/libext2fs/ext2_err.c silo-1.4.13/libext2fs/ext2_err.c9454 --- silo-1.4.1 3.orig/libext2fs/ext2_err.c 1969-12-31 19:00:00.000000000 -05009455 +++ silo-1.4.1 3/libext2fs/ext2_err.c 2007-04-03 17:02:53.000000000 -040010493 diff -Naur silo-1.4.14.orig/libext2fs/ext2_err.c silo-1.4.14/libext2fs/ext2_err.c 10494 --- silo-1.4.14.orig/libext2fs/ext2_err.c 1969-12-31 16:00:00.000000000 -0800 10495 +++ silo-1.4.14/libext2fs/ext2_err.c 2009-01-07 15:07:56.000000000 -0800 9456 10496 @@ -0,0 +1,148 @@ 9457 10497 +/* … … 9603 10643 + *end = et; 9604 10644 +} 9605 diff -Naur silo-1.4.1 3.orig/libext2fs/ext2_ext_attr.h silo-1.4.13/libext2fs/ext2_ext_attr.h9606 --- silo-1.4.1 3.orig/libext2fs/ext2_ext_attr.h 1969-12-31 19:00:00.000000000 -05009607 +++ silo-1.4.1 3/libext2fs/ext2_ext_attr.h 2007-04-03 17:02:53.000000000 -040010645 diff -Naur silo-1.4.14.orig/libext2fs/ext2_ext_attr.h silo-1.4.14/libext2fs/ext2_ext_attr.h 10646 --- silo-1.4.14.orig/libext2fs/ext2_ext_attr.h 1969-12-31 16:00:00.000000000 -0800 10647 +++ silo-1.4.14/libext2fs/ext2_ext_attr.h 2009-01-07 15:07:56.000000000 -0800 9608 10648 @@ -0,0 +1,69 @@ 9609 10649 +/* … … 9676 10716 +#endif /* __KERNEL__ */ 9677 10717 + 9678 diff -Naur silo-1.4.1 3.orig/libext2fs/ext2_fs.h silo-1.4.13/libext2fs/ext2_fs.h9679 --- silo-1.4.1 3.orig/libext2fs/ext2_fs.h 1969-12-31 19:00:00.000000000 -05009680 +++ silo-1.4.1 3/libext2fs/ext2_fs.h 2007-04-03 17:02:53.000000000 -040010718 diff -Naur silo-1.4.14.orig/libext2fs/ext2_fs.h silo-1.4.14/libext2fs/ext2_fs.h 10719 --- silo-1.4.14.orig/libext2fs/ext2_fs.h 1969-12-31 16:00:00.000000000 -0800 10720 +++ silo-1.4.14/libext2fs/ext2_fs.h 2009-01-07 15:07:56.000000000 -0800 9681 10721 @@ -0,0 +1,644 @@ 9682 10722 +/* … … 10324 11364 + 10325 11365 +#endif /* _LINUX_EXT2_FS_H */ 10326 diff -Naur silo-1.4.13.orig/libext2fs/ext2fs.h silo-1.4.13/libext2fs/ext2fs.h 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 11366 diff -Naur silo-1.4.14.orig/libext2fs/ext2_io.h silo-1.4.14/libext2fs/ext2_io.h 11367 --- silo-1.4.14.orig/libext2fs/ext2_io.h 1969-12-31 16:00:00.000000000 -0800 11368 +++ silo-1.4.14/libext2fs/ext2_io.h 2009-01-07 15:07:56.000000000 -0800 11369 @@ -0,0 +1,108 @@ 11370 +/* 11371 + * io.h --- the I/O manager abstraction 11372 + * 11373 + * Copyright (C) 1993, 1994, 1995, 1996 Theodore Ts'o. 11374 + * 11375 + * %Begin-Header% 11376 + * This file may be redistributed under the terms of the GNU Public 11377 + * License. 11378 + * %End-Header% 11379 + */ 11380 + 11381 +#ifndef _EXT2FS_EXT2_IO_H 11382 +#define _EXT2FS_EXT2_IO_H 11383 + 11384 +/* 11385 + * ext2_loff_t is defined here since unix_io.c needs it. 11386 + */ 11387 +#if defined(__GNUC__) || defined(HAS_LONG_LONG) 11388 +typedef long long ext2_loff_t; 11389 +#else 11390 +typedef long ext2_loff_t; 11391 +#endif 11392 + 11393 +/* llseek.c */ 11394 +ext2_loff_t ext2fs_llseek (int, ext2_loff_t, int); 11395 + 11396 +typedef struct struct_io_manager *io_manager; 11397 +typedef struct struct_io_channel *io_channel; 11398 + 11399 +#define CHANNEL_FLAGS_WRITETHROUGH 0x01 11400 + 11401 +struct struct_io_channel { 11402 + errcode_t magic; 11403 + io_manager manager; 11404 + char *name; 11405 + int block_size; 11406 + errcode_t (*read_error)(io_channel channel, 11407 + unsigned long block, 11408 + int count, 11409 + void *data, 11410 + size_t size, 11411 + int actual_bytes_read, 11412 + errcode_t error); 11413 + errcode_t (*write_error)(io_channel channel, 11414 + unsigned long block, 11415 + int count, 11416 + const void *data, 11417 + size_t size, 11418 + int actual_bytes_written, 11419 + errcode_t error); 11420 + int refcount; 11421 + int flags; 11422 + int reserved[14]; 11423 + void *private_data; 11424 + void *app_data; 11425 +}; 11426 + 11427 +struct struct_io_manager { 11428 + errcode_t magic; 11429 + const char *name; 11430 + errcode_t (*open)(const char *name, int flags, io_channel *channel); 11431 + errcode_t (*close)(io_channel channel); 11432 + errcode_t (*set_blksize)(io_channel channel, int blksize); 11433 + errcode_t (*read_blk)(io_channel channel, unsigned long block, 11434 + int count, void *data); 11435 + errcode_t (*write_blk)(io_channel channel, unsigned long block, 11436 + int count, const void *data); 11437 + errcode_t (*flush)(io_channel channel); 11438 + errcode_t (*write_byte)(io_channel channel, unsigned long offset, 11439 + int count, const void *data); 11440 + errcode_t (*set_option)(io_channel channel, const char *option, 11441 + const char *arg); 11442 + int reserved[14]; 11443 +}; 11444 + 11445 +#define IO_FLAG_RW 1 11446 + 11447 +/* 11448 + * Convenience functions.... 11449 + */ 11450 +#define io_channel_close(c) ((c)->manager->close((c))) 11451 +#define io_channel_set_blksize(c,s) ((c)->manager->set_blksize((c),s)) 11452 +#define io_channel_read_blk(c,b,n,d) ((c)->manager->read_blk((c),b,n,d)) 11453 +#define io_channel_write_blk(c,b,n,d) ((c)->manager->write_blk((c),b,n,d)) 11454 +#define io_channel_flush(c) ((c)->manager->flush((c))) 11455 +#define io_channel_bumpcount(c) ((c)->refcount++) 11456 + 11457 +/* io_manager.c */ 11458 +extern errcode_t io_channel_set_options(io_channel channel, 11459 + const char *options); 11460 +extern errcode_t io_channel_write_byte(io_channel channel, 11461 + unsigned long offset, 11462 + int count, const void *data); 11463 + 11464 +/* unix_io.c */ 11465 +extern io_manager unix_io_manager; 11466 + 11467 +/* test_io.c */ 11468 +extern io_manager test_io_manager, test_io_backing_manager; 11469 +extern void (*test_io_cb_read_blk) 11470 + (unsigned long block, int count, errcode_t err); 11471 +extern void (*test_io_cb_write_blk) 11472 + (unsigned long block, int count, errcode_t err); 11473 +extern void (*test_io_cb_set_blksize) 11474 + (int blksize, errcode_t err); 11475 + 11476 +#endif /* _EXT2FS_EXT2_IO_H */ 11477 + 11478 diff -Naur silo-1.4.14.orig/libext2fs/ext2fs.h silo-1.4.14/libext2fs/ext2fs.h 11479 --- silo-1.4.14.orig/libext2fs/ext2fs.h 1969-12-31 16:00:00.000000000 -0800 11480 +++ silo-1.4.14/libext2fs/ext2fs.h 2009-01-07 15:07:56.000000000 -0800 10329 11481 @@ -0,0 +1,1140 @@ 10330 11482 +/* … … 11468 12620 + 11469 12621 +#endif /* _EXT2FS_EXT2FS_H */ 11470 diff -Naur silo-1.4.1 3.orig/libext2fs/ext2fsP.h silo-1.4.13/libext2fs/ext2fsP.h11471 --- silo-1.4.1 3.orig/libext2fs/ext2fsP.h 1969-12-31 19:00:00.000000000 -050011472 +++ silo-1.4.1 3/libext2fs/ext2fsP.h 2007-04-03 17:02:53.000000000 -040012622 diff -Naur silo-1.4.14.orig/libext2fs/ext2fsP.h silo-1.4.14/libext2fs/ext2fsP.h 12623 --- silo-1.4.14.orig/libext2fs/ext2fsP.h 1969-12-31 16:00:00.000000000 -0800 12624 +++ silo-1.4.14/libext2fs/ext2fsP.h 2009-01-07 15:07:56.000000000 -0800 11473 12625 @@ -0,0 +1,88 @@ 11474 12626 +/* … … 11560 12712 + 11561 12713 + 11562 diff -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 + 11674 diff -Naur silo-1.4.13.orig/libext2fs/ext_attr.c silo-1.4.13/libext2fs/ext_attr.c 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 12714 diff -Naur silo-1.4.14.orig/libext2fs/ext_attr.c silo-1.4.14/libext2fs/ext_attr.c 12715 --- silo-1.4.14.orig/libext2fs/ext_attr.c 1969-12-31 16:00:00.000000000 -0800 12716 +++ silo-1.4.14/libext2fs/ext_attr.c 2009-01-07 15:07:56.000000000 -0800 11677 12717 @@ -0,0 +1,105 @@ 11678 12718 +/* … … 11781 12821 + return retval; 11782 12822 +} 11783 diff -Naur silo-1.4.1 3.orig/libext2fs/fileio.c silo-1.4.13/libext2fs/fileio.c11784 --- silo-1.4.1 3.orig/libext2fs/fileio.c 1969-12-31 19:00:00.000000000 -050011785 +++ silo-1.4.1 3/libext2fs/fileio.c 2007-04-03 17:02:53.000000000 -040012823 diff -Naur silo-1.4.14.orig/libext2fs/fileio.c silo-1.4.14/libext2fs/fileio.c 12824 --- silo-1.4.14.orig/libext2fs/fileio.c 1969-12-31 16:00:00.000000000 -0800 12825 +++ silo-1.4.14/libext2fs/fileio.c 2009-01-07 15:07:56.000000000 -0800 11786 12826 @@ -0,0 +1,378 @@ 11787 12827 +/* … … 12163 13203 + return 0; 12164 13204 +} 12165 diff -Naur silo-1.4.1 3.orig/libext2fs/finddev.c silo-1.4.13/libext2fs/finddev.c12166 --- silo-1.4.1 3.orig/libext2fs/finddev.c 1969-12-31 19:00:00.000000000 -050012167 +++ silo-1.4.1 3/libext2fs/finddev.c 2007-04-03 17:02:53.000000000 -040013205 diff -Naur silo-1.4.14.orig/libext2fs/finddev.c silo-1.4.14/libext2fs/finddev.c 13206 --- silo-1.4.14.orig/libext2fs/finddev.c 1969-12-31 16:00:00.000000000 -0800 13207 +++ silo-1.4.14/libext2fs/finddev.c 2009-01-07 15:07:56.000000000 -0800 12168 13208 @@ -0,0 +1,208 @@ 12169 13209 +/* … … 12375 13415 + 12376 13416 +#endif 12377 diff -Naur silo-1.4.1 3.orig/libext2fs/flushb.c silo-1.4.13/libext2fs/flushb.c12378 --- silo-1.4.1 3.orig/libext2fs/flushb.c 1969-12-31 19:00:00.000000000 -050012379 +++ silo-1.4.1 3/libext2fs/flushb.c 2007-04-03 17:02:53.000000000 -040013417 diff -Naur silo-1.4.14.orig/libext2fs/flushb.c silo-1.4.14/libext2fs/flushb.c 13418 --- silo-1.4.14.orig/libext2fs/flushb.c 1969-12-31 16:00:00.000000000 -0800 13419 +++ silo-1.4.14/libext2fs/flushb.c 2009-01-07 15:07:56.000000000 -0800 12380 13420 @@ -0,0 +1,82 @@ 12381 13421 +/* … … 12461 13501 + return 0; 12462 13502 +} 12463 diff -Naur silo-1.4.1 3.orig/libext2fs/freefs.c silo-1.4.13/libext2fs/freefs.c12464 --- silo-1.4.1 3.orig/libext2fs/freefs.c 1969-12-31 19:00:00.000000000 -050012465 +++ silo-1.4.1 3/libext2fs/freefs.c 2007-04-03 17:02:53.000000000 -040013503 diff -Naur silo-1.4.14.orig/libext2fs/freefs.c silo-1.4.14/libext2fs/freefs.c 13504 --- silo-1.4.14.orig/libext2fs/freefs.c 1969-12-31 16:00:00.000000000 -0800 13505 +++ silo-1.4.14/libext2fs/freefs.c 2009-01-07 15:07:56.000000000 -0800 12466 13506 @@ -0,0 +1,147 @@ 12467 13507 +/* … … 12612 13652 +} 12613 13653 + 12614 diff -Naur silo-1.4.1 3.orig/libext2fs/gen_bitmap.c silo-1.4.13/libext2fs/gen_bitmap.c12615 --- silo-1.4.1 3.orig/libext2fs/gen_bitmap.c 1969-12-31 19:00:00.000000000 -050012616 +++ silo-1.4.1 3/libext2fs/gen_bitmap.c 2007-04-03 17:02:53.000000000 -040013654 diff -Naur silo-1.4.14.orig/libext2fs/gen_bitmap.c silo-1.4.14/libext2fs/gen_bitmap.c 13655 --- silo-1.4.14.orig/libext2fs/gen_bitmap.c 1969-12-31 16:00:00.000000000 -0800 13656 +++ silo-1.4.14/libext2fs/gen_bitmap.c 2009-01-07 15:07:56.000000000 -0800 12617 13657 @@ -0,0 +1,48 @@ 12618 13658 +/* … … 12664 13704 + return ext2fs_clear_bit(bitno - bitmap->start, bitmap->bitmap); 12665 13705 +} 12666 diff -Naur silo-1.4.1 3.orig/libext2fs/get_pathname.c silo-1.4.13/libext2fs/get_pathname.c12667 --- silo-1.4.1 3.orig/libext2fs/get_pathname.c 1969-12-31 19:00:00.000000000 -050012668 +++ silo-1.4.1 3/libext2fs/get_pathname.c 2007-04-03 17:02:53.000000000 -040013706 diff -Naur silo-1.4.14.orig/libext2fs/get_pathname.c silo-1.4.14/libext2fs/get_pathname.c 13707 --- silo-1.4.14.orig/libext2fs/get_pathname.c 1969-12-31 16:00:00.000000000 -0800 13708 +++ silo-1.4.14/libext2fs/get_pathname.c 2009-01-07 15:07:56.000000000 -0800 12669 13709 @@ -0,0 +1,157 @@ 12670 13710 +/* … … 12825 13865 + 12826 13866 +} 12827 diff -Naur silo-1.4.1 3.orig/libext2fs/getsectsize.c silo-1.4.13/libext2fs/getsectsize.c12828 --- silo-1.4.1 3.orig/libext2fs/getsectsize.c 1969-12-31 19:00:00.000000000 -050012829 +++ silo-1.4.1 3/libext2fs/getsectsize.c 2007-04-03 17:02:53.000000000 -040013867 diff -Naur silo-1.4.14.orig/libext2fs/getsectsize.c silo-1.4.14/libext2fs/getsectsize.c 13868 --- silo-1.4.14.orig/libext2fs/getsectsize.c 1969-12-31 16:00:00.000000000 -0800 13869 +++ silo-1.4.14/libext2fs/getsectsize.c 2009-01-07 15:07:56.000000000 -0800 12830 13870 @@ -0,0 +1,60 @@ 12831 13871 +/* … … 12889 13929 + return 0; 12890 13930 +} 12891 diff -Naur silo-1.4.1 3.orig/libext2fs/getsize.c silo-1.4.13/libext2fs/getsize.c12892 --- silo-1.4.1 3.orig/libext2fs/getsize.c 1969-12-31 19:00:00.000000000 -050012893 +++ silo-1.4.1 3/libext2fs/getsize.c 2007-04-03 17:02:53.000000000 -040013931 diff -Naur silo-1.4.14.orig/libext2fs/getsize.c silo-1.4.14/libext2fs/getsize.c 13932 --- silo-1.4.14.orig/libext2fs/getsize.c 1969-12-31 16:00:00.000000000 -0800 13933 +++ silo-1.4.14/libext2fs/getsize.c 2009-01-07 15:07:56.000000000 -0800 12894 13934 @@ -0,0 +1,293 @@ 12895 13935 +/* … … 13186 14226 +} 13187 14227 +#endif 13188 diff -Naur silo-1.4.1 3.orig/libext2fs/icount.c silo-1.4.13/libext2fs/icount.c13189 --- silo-1.4.1 3.orig/libext2fs/icount.c 1969-12-31 19:00:00.000000000 -050013190 +++ silo-1.4.1 3/libext2fs/icount.c 2007-04-03 17:02:53.000000000 -040014228 diff -Naur silo-1.4.14.orig/libext2fs/icount.c silo-1.4.14/libext2fs/icount.c 14229 --- silo-1.4.14.orig/libext2fs/icount.c 1969-12-31 16:00:00.000000000 -0800 14230 +++ silo-1.4.14/libext2fs/icount.c 2009-01-07 15:07:56.000000000 -0800 13191 14231 @@ -0,0 +1,483 @@ 13192 14232 +/* … … 13673 14713 + return icount->size; 13674 14714 +} 13675 diff -Naur silo-1.4.1 3.orig/libext2fs/imager.c silo-1.4.13/libext2fs/imager.c13676 --- silo-1.4.1 3.orig/libext2fs/imager.c 1969-12-31 19:00:00.000000000 -050013677 +++ silo-1.4.1 3/libext2fs/imager.c 2007-04-03 17:02:53.000000000 -040014715 diff -Naur silo-1.4.14.orig/libext2fs/imager.c silo-1.4.14/libext2fs/imager.c 14716 --- silo-1.4.14.orig/libext2fs/imager.c 1969-12-31 16:00:00.000000000 -0800 14717 +++ silo-1.4.14/libext2fs/imager.c 2009-01-07 15:07:56.000000000 -0800 13678 14718 @@ -0,0 +1,387 @@ 13679 14719 +/* … … 14064 15104 + return (retval); 14065 15105 +} 14066 diff -Naur silo-1.4.1 3.orig/libext2fs/ind_block.c silo-1.4.13/libext2fs/ind_block.c14067 --- silo-1.4.1 3.orig/libext2fs/ind_block.c 1969-12-31 19:00:00.000000000 -050014068 +++ silo-1.4.1 3/libext2fs/ind_block.c 2007-04-03 17:02:53.000000000 -040015106 diff -Naur silo-1.4.14.orig/libext2fs/ind_block.c silo-1.4.14/libext2fs/ind_block.c 15107 --- silo-1.4.14.orig/libext2fs/ind_block.c 1969-12-31 16:00:00.000000000 -0800 15108 +++ silo-1.4.14/libext2fs/ind_block.c 2009-01-07 15:07:56.000000000 -0800 14069 15109 @@ -0,0 +1,66 @@ 14070 15110 +/* … … 14134 15174 + 14135 15175 + 14136 diff -Naur silo-1.4.1 3.orig/libext2fs/initialize.c silo-1.4.13/libext2fs/initialize.c14137 --- silo-1.4.1 3.orig/libext2fs/initialize.c 1969-12-31 19:00:00.000000000 -050014138 +++ silo-1.4.1 3/libext2fs/initialize.c 2007-04-03 17:02:53.000000000 -040015176 diff -Naur silo-1.4.14.orig/libext2fs/initialize.c silo-1.4.14/libext2fs/initialize.c 15177 --- silo-1.4.14.orig/libext2fs/initialize.c 1969-12-31 16:00:00.000000000 -0800 15178 +++ silo-1.4.14/libext2fs/initialize.c 2009-01-07 15:07:56.000000000 -0800 14139 15179 @@ -0,0 +1,387 @@ 14140 15180 +/* … … 14525 15565 + return retval; 14526 15566 +} 14527 diff -Naur silo-1.4.1 3.orig/libext2fs/inline.c silo-1.4.13/libext2fs/inline.c14528 --- silo-1.4.1 3.orig/libext2fs/inline.c 1969-12-31 19:00:00.000000000 -050014529 +++ silo-1.4.1 3/libext2fs/inline.c 2007-04-03 17:02:53.000000000 -040015567 diff -Naur silo-1.4.14.orig/libext2fs/inline.c silo-1.4.14/libext2fs/inline.c 15568 --- silo-1.4.14.orig/libext2fs/inline.c 1969-12-31 16:00:00.000000000 -0800 15569 +++ silo-1.4.14/libext2fs/inline.c 2009-01-07 15:07:56.000000000 -0800 14530 15570 @@ -0,0 +1,32 @@ 14531 15571 +/* … … 14561 15601 +#include "ext2fs.h" 14562 15602 + 14563 diff -Naur silo-1.4.1 3.orig/libext2fs/inode.c silo-1.4.13/libext2fs/inode.c14564 --- silo-1.4.1 3.orig/libext2fs/inode.c 1969-12-31 19:00:00.000000000 -050014565 +++ silo-1.4.1 3/libext2fs/inode.c 2007-04-03 17:02:53.000000000 -040015603 diff -Naur silo-1.4.14.orig/libext2fs/inode.c silo-1.4.14/libext2fs/inode.c 15604 --- silo-1.4.14.orig/libext2fs/inode.c 1969-12-31 16:00:00.000000000 -0800 15605 +++ silo-1.4.14/libext2fs/inode.c 2009-01-07 15:07:56.000000000 -0800 14566 15606 @@ -0,0 +1,794 @@ 14567 15607 +/* … … 15359 16399 +} 15360 16400 + 15361 diff -Naur silo-1.4.1 3.orig/libext2fs/inode_io.c silo-1.4.13/libext2fs/inode_io.c15362 --- silo-1.4.1 3.orig/libext2fs/inode_io.c 1969-12-31 19:00:00.000000000 -050015363 +++ silo-1.4.1 3/libext2fs/inode_io.c 2007-04-03 17:02:53.000000000 -040016401 diff -Naur silo-1.4.14.orig/libext2fs/inode_io.c silo-1.4.14/libext2fs/inode_io.c 16402 --- silo-1.4.14.orig/libext2fs/inode_io.c 1969-12-31 16:00:00.000000000 -0800 16403 +++ silo-1.4.14/libext2fs/inode_io.c 2009-01-07 15:07:56.000000000 -0800 15364 16404 @@ -0,0 +1,270 @@ 15365 16405 +/* … … 15633 16673 +} 15634 16674 + 15635 diff -Naur silo-1.4.1 3.orig/libext2fs/io_manager.c silo-1.4.13/libext2fs/io_manager.c15636 --- silo-1.4.1 3.orig/libext2fs/io_manager.c 1969-12-31 19:00:00.000000000 -050015637 +++ silo-1.4.1 3/libext2fs/io_manager.c 2007-04-03 17:02:53.000000000 -040016675 diff -Naur silo-1.4.14.orig/libext2fs/io_manager.c silo-1.4.14/libext2fs/io_manager.c 16676 --- silo-1.4.14.orig/libext2fs/io_manager.c 1969-12-31 16:00:00.000000000 -0800 16677 +++ silo-1.4.14/libext2fs/io_manager.c 2009-01-07 15:07:56.000000000 -0800 15638 16678 @@ -0,0 +1,69 @@ 15639 16679 +/* … … 15706 16746 + return EXT2_ET_UNIMPLEMENTED; 15707 16747 +} 15708 diff -Naur silo-1.4.1 3.orig/libext2fs/irel.h silo-1.4.13/libext2fs/irel.h15709 --- silo-1.4.1 3.orig/libext2fs/irel.h 1969-12-31 19:00:00.000000000 -050015710 +++ silo-1.4.1 3/libext2fs/irel.h 2007-04-03 17:02:53.000000000 -040016748 diff -Naur silo-1.4.14.orig/libext2fs/irel.h silo-1.4.14/libext2fs/irel.h 16749 --- silo-1.4.14.orig/libext2fs/irel.h 1969-12-31 16:00:00.000000000 -0800 16750 +++ silo-1.4.14/libext2fs/irel.h 2009-01-07 15:07:56.000000000 -0800 15711 16751 @@ -0,0 +1,114 @@ 15712 16752 +/* … … 15824 16864 +#define ext2fs_irel_delete(irel, old) ((irel)->delete((irel), old)) 15825 16865 +#define ext2fs_irel_free(irel) ((irel)->free((irel))) 15826 diff -Naur silo-1.4.1 3.orig/libext2fs/irel_ma.c silo-1.4.13/libext2fs/irel_ma.c15827 --- silo-1.4.1 3.orig/libext2fs/irel_ma.c 1969-12-31 19:00:00.000000000 -050015828 +++ silo-1.4.1 3/libext2fs/irel_ma.c 2007-04-03 17:02:53.000000000 -040016866 diff -Naur silo-1.4.14.orig/libext2fs/irel_ma.c silo-1.4.14/libext2fs/irel_ma.c 16867 --- silo-1.4.14.orig/libext2fs/irel_ma.c 1969-12-31 16:00:00.000000000 -0800 16868 +++ silo-1.4.14/libext2fs/irel_ma.c 2009-01-07 15:07:56.000000000 -0800 15829 16869 @@ -0,0 +1,372 @@ 15830 16870 +/* … … 16200 17240 + return 0; 16201 17241 +} 16202 diff -Naur silo-1.4.1 3.orig/libext2fs/ismounted.c silo-1.4.13/libext2fs/ismounted.c16203 --- silo-1.4.1 3.orig/libext2fs/ismounted.c 1969-12-31 19:00:00.000000000 -050016204 +++ silo-1.4.1 3/libext2fs/ismounted.c 2007-04-03 17:02:53.000000000 -040017242 diff -Naur silo-1.4.14.orig/libext2fs/ismounted.c silo-1.4.14/libext2fs/ismounted.c 17243 --- silo-1.4.14.orig/libext2fs/ismounted.c 1969-12-31 16:00:00.000000000 -0800 17244 +++ silo-1.4.14/libext2fs/ismounted.c 2009-01-07 15:07:56.000000000 -0800 16205 17245 @@ -0,0 +1,377 @@ 16206 17246 +/* … … 16581 17621 +} 16582 17622 +#endif /* DEBUG */ 16583 diff -Naur silo-1.4.1 3.orig/libext2fs/jfs_compat.h silo-1.4.13/libext2fs/jfs_compat.h16584 --- silo-1.4.1 3.orig/libext2fs/jfs_compat.h 1969-12-31 19:00:00.000000000 -050016585 +++ silo-1.4.1 3/libext2fs/jfs_compat.h 2007-04-03 17:02:53.000000000 -040017623 diff -Naur silo-1.4.14.orig/libext2fs/jfs_compat.h silo-1.4.14/libext2fs/jfs_compat.h 17624 --- silo-1.4.14.orig/libext2fs/jfs_compat.h 1969-12-31 16:00:00.000000000 -0800 17625 +++ silo-1.4.14/libext2fs/jfs_compat.h 2009-01-07 15:07:56.000000000 -0800 16586 17626 @@ -0,0 +1,67 @@ 16587 17627 + … … 16652 17692 + 16653 17693 +#endif /* _JFS_COMPAT_H */ 16654 diff -Naur silo-1.4.1 3.orig/libext2fs/jfs_dat.h silo-1.4.13/libext2fs/jfs_dat.h16655 --- silo-1.4.1 3.orig/libext2fs/jfs_dat.h 1969-12-31 19:00:00.000000000 -050016656 +++ silo-1.4.1 3/libext2fs/jfs_dat.h 2007-04-03 17:02:53.000000000 -040017694 diff -Naur silo-1.4.14.orig/libext2fs/jfs_dat.h silo-1.4.14/libext2fs/jfs_dat.h 17695 --- silo-1.4.14.orig/libext2fs/jfs_dat.h 1969-12-31 16:00:00.000000000 -0800 17696 +++ silo-1.4.14/libext2fs/jfs_dat.h 2009-01-07 15:07:56.000000000 -0800 16657 17697 @@ -0,0 +1,64 @@ 16658 17698 +/* … … 16720 17760 +} journal_superblock_t; 16721 17761 + 16722 diff -Naur silo-1.4.1 3.orig/libext2fs/jfs_user.h silo-1.4.13/libext2fs/jfs_user.h16723 --- silo-1.4.1 3.orig/libext2fs/jfs_user.h 1969-12-31 19:00:00.000000000 -050016724 +++ silo-1.4.1 3/libext2fs/jfs_user.h 2007-04-03 17:02:53.000000000 -040017762 diff -Naur silo-1.4.14.orig/libext2fs/jfs_user.h silo-1.4.14/libext2fs/jfs_user.h 17763 --- silo-1.4.14.orig/libext2fs/jfs_user.h 1969-12-31 16:00:00.000000000 -0800 17764 +++ silo-1.4.14/libext2fs/jfs_user.h 2009-01-07 15:07:56.000000000 -0800 16725 17765 @@ -0,0 +1,8 @@ 16726 17766 +#ifndef _JFS_USER_H … … 16732 17772 + 16733 17773 +#endif /* _JFS_USER_H */ 16734 diff -Naur silo-1.4.1 3.orig/libext2fs/kernel-jbd.h silo-1.4.13/libext2fs/kernel-jbd.h16735 --- silo-1.4.1 3.orig/libext2fs/kernel-jbd.h 1969-12-31 19:00:00.000000000 -050016736 +++ silo-1.4.1 3/libext2fs/kernel-jbd.h 2007-04-03 17:02:53.000000000 -040017774 diff -Naur silo-1.4.14.orig/libext2fs/kernel-jbd.h silo-1.4.14/libext2fs/kernel-jbd.h 17775 --- silo-1.4.14.orig/libext2fs/kernel-jbd.h 1969-12-31 16:00:00.000000000 -0800 17776 +++ silo-1.4.14/libext2fs/kernel-jbd.h 2009-01-07 15:07:57.000000000 -0800 16737 17777 @@ -0,0 +1,910 @@ 16738 17778 +/* … … 17646 18686 +#endif /* defined(__KERNEL__) && !defined(CONFIG_JBD) */ 17647 18687 +#endif /* _LINUX_JBD_H */ 17648 diff -Naur silo-1.4.1 3.orig/libext2fs/kernel-list.h silo-1.4.13/libext2fs/kernel-list.h17649 --- silo-1.4.1 3.orig/libext2fs/kernel-list.h 1969-12-31 19:00:00.000000000 -050017650 +++ silo-1.4.1 3/libext2fs/kernel-list.h 2007-04-03 17:02:53.000000000 -040018688 diff -Naur silo-1.4.14.orig/libext2fs/kernel-list.h silo-1.4.14/libext2fs/kernel-list.h 18689 --- silo-1.4.14.orig/libext2fs/kernel-list.h 1969-12-31 16:00:00.000000000 -0800 18690 +++ silo-1.4.14/libext2fs/kernel-list.h 2009-01-07 15:07:57.000000000 -0800 17651 18691 @@ -0,0 +1,112 @@ 17652 18692 +#ifndef _LINUX_LIST_H … … 17762 18802 + 17763 18803 +#endif 17764 diff -Naur silo-1.4.1 3.orig/libext2fs/link.c silo-1.4.13/libext2fs/link.c17765 --- silo-1.4.1 3.orig/libext2fs/link.c 1969-12-31 19:00:00.000000000 -050017766 +++ silo-1.4.1 3/libext2fs/link.c 2007-04-03 17:02:53.000000000 -040018804 diff -Naur silo-1.4.14.orig/libext2fs/link.c silo-1.4.14/libext2fs/link.c 18805 --- silo-1.4.14.orig/libext2fs/link.c 1969-12-31 16:00:00.000000000 -0800 18806 +++ silo-1.4.14/libext2fs/link.c 2009-01-07 15:07:57.000000000 -0800 17767 18807 @@ -0,0 +1,134 @@ 17768 18808 +/* … … 17900 18940 + return 0; 17901 18941 +} 17902 diff -Naur silo-1.4.1 3.orig/libext2fs/llseek.c silo-1.4.13/libext2fs/llseek.c17903 --- silo-1.4.1 3.orig/libext2fs/llseek.c 1969-12-31 19:00:00.000000000 -050017904 +++ silo-1.4.1 3/libext2fs/llseek.c 2007-04-03 17:02:53.000000000 -040018942 diff -Naur silo-1.4.14.orig/libext2fs/llseek.c silo-1.4.14/libext2fs/llseek.c 18943 --- silo-1.4.14.orig/libext2fs/llseek.c 1969-12-31 16:00:00.000000000 -0800 18944 +++ silo-1.4.14/libext2fs/llseek.c 2009-01-07 15:07:57.000000000 -0800 17905 18945 @@ -0,0 +1,138 @@ 17906 18946 +/* … … 18042 19082 + 18043 19083 + 18044 diff -Naur silo-1.4.1 3.orig/libext2fs/lookup.c silo-1.4.13/libext2fs/lookup.c18045 --- silo-1.4.1 3.orig/libext2fs/lookup.c 1969-12-31 19:00:00.000000000 -050018046 +++ silo-1.4.1 3/libext2fs/lookup.c 2007-04-03 17:02:53.000000000 -040019084 diff -Naur silo-1.4.14.orig/libext2fs/lookup.c silo-1.4.14/libext2fs/lookup.c 19085 --- silo-1.4.14.orig/libext2fs/lookup.c 1969-12-31 16:00:00.000000000 -0800 19086 +++ silo-1.4.14/libext2fs/lookup.c 2009-01-07 15:07:57.000000000 -0800 18047 19087 @@ -0,0 +1,69 @@ 18048 19088 +/* … … 18115 19155 + 18116 19156 + 18117 diff -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 $@ 18142 diff -Naur silo-1.4.13.orig/libext2fs/mkdir.c silo-1.4.13/libext2fs/mkdir.c 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 19157 diff -Naur silo-1.4.14.orig/libext2fs/mkdir.c silo-1.4.14/libext2fs/mkdir.c 19158 --- silo-1.4.14.orig/libext2fs/mkdir.c 1969-12-31 16:00:00.000000000 -0800 19159 +++ silo-1.4.14/libext2fs/mkdir.c 2009-01-07 15:07:57.000000000 -0800 18145 19160 @@ -0,0 +1,142 @@ 18146 19161 +/* … … 18286 19301 + 18287 19302 + 18288 diff -Naur silo-1.4.1 3.orig/libext2fs/mkjournal.c silo-1.4.13/libext2fs/mkjournal.c18289 --- silo-1.4.1 3.orig/libext2fs/mkjournal.c 1969-12-31 19:00:00.000000000 -050018290 +++ silo-1.4.1 3/libext2fs/mkjournal.c 2007-04-03 17:02:53.000000000 -040019303 diff -Naur silo-1.4.14.orig/libext2fs/mkjournal.c silo-1.4.14/libext2fs/mkjournal.c 19304 --- silo-1.4.14.orig/libext2fs/mkjournal.c 1969-12-31 16:00:00.000000000 -0800 19305 +++ silo-1.4.14/libext2fs/mkjournal.c 2009-01-07 15:07:57.000000000 -0800 18291 19306 @@ -0,0 +1,425 @@ 18292 19307 +/* … … 18715 19730 +} 18716 19731 +#endif 18717 diff -Naur silo-1.4.1 3.orig/libext2fs/namei.c silo-1.4.13/libext2fs/namei.c18718 --- silo-1.4.1 3.orig/libext2fs/namei.c 1969-12-31 19:00:00.000000000 -050018719 +++ silo-1.4.1 3/libext2fs/namei.c 2007-04-03 17:02:53.000000000 -040019732 diff -Naur silo-1.4.14.orig/libext2fs/namei.c silo-1.4.14/libext2fs/namei.c 19733 --- silo-1.4.14.orig/libext2fs/namei.c 1969-12-31 16:00:00.000000000 -0800 19734 +++ silo-1.4.14/libext2fs/namei.c 2009-01-07 15:07:57.000000000 -0800 18720 19735 @@ -0,0 +1,205 @@ 18721 19736 +/* … … 18924 19939 +} 18925 19940 + 18926 diff -Naur silo-1.4.1 3.orig/libext2fs/native.c silo-1.4.13/libext2fs/native.c18927 --- silo-1.4.1 3.orig/libext2fs/native.c 1969-12-31 19:00:00.000000000 -050018928 +++ silo-1.4.1 3/libext2fs/native.c 2007-04-03 17:02:53.000000000 -040019941 diff -Naur silo-1.4.14.orig/libext2fs/native.c silo-1.4.14/libext2fs/native.c 19942 --- silo-1.4.14.orig/libext2fs/native.c 1969-12-31 16:00:00.000000000 -0800 19943 +++ silo-1.4.14/libext2fs/native.c 2009-01-07 15:07:57.000000000 -0800 18929 19944 @@ -0,0 +1,27 @@ 18930 19945 +/* … … 18955 19970 + 18956 19971 + 18957 diff -Naur silo-1.4.1 3.orig/libext2fs/newdir.c silo-1.4.13/libext2fs/newdir.c18958 --- silo-1.4.1 3.orig/libext2fs/newdir.c 1969-12-31 19:00:00.000000000 -050018959 +++ silo-1.4.1 3/libext2fs/newdir.c 2007-04-03 17:02:53.000000000 -040019972 diff -Naur silo-1.4.14.orig/libext2fs/newdir.c silo-1.4.14/libext2fs/newdir.c 19973 --- silo-1.4.14.orig/libext2fs/newdir.c 1969-12-31 16:00:00.000000000 -0800 19974 +++ silo-1.4.14/libext2fs/newdir.c 2009-01-07 15:07:57.000000000 -0800 18960 19975 @@ -0,0 +1,72 @@ 18961 19976 +/* … … 19031 20046 + return 0; 19032 20047 +} 19033 diff -Naur silo-1.4.1 3.orig/libext2fs/nt_io.c silo-1.4.13/libext2fs/nt_io.c19034 --- silo-1.4.1 3.orig/libext2fs/nt_io.c 1969-12-31 19:00:00.000000000 -050019035 +++ silo-1.4.1 3/libext2fs/nt_io.c 2007-04-03 17:02:53.000000000 -040020048 diff -Naur silo-1.4.14.orig/libext2fs/nt_io.c silo-1.4.14/libext2fs/nt_io.c 20049 --- silo-1.4.14.orig/libext2fs/nt_io.c 1969-12-31 16:00:00.000000000 -0800 20050 +++ silo-1.4.14/libext2fs/nt_io.c 2009-01-07 15:07:57.000000000 -0800 19036 20051 @@ -0,0 +1,1513 @@ 19037 20052 +/* … … 20548 21563 + 20549 21564 + 20550 diff -Naur silo-1.4.1 3.orig/libext2fs/openfs.c silo-1.4.13/libext2fs/openfs.c20551 --- silo-1.4.1 3.orig/libext2fs/openfs.c 1969-12-31 19:00:00.000000000 -050020552 +++ silo-1.4.1 3/libext2fs/openfs.c 2007-04-03 17:02:53.000000000 -040021565 diff -Naur silo-1.4.14.orig/libext2fs/openfs.c silo-1.4.14/libext2fs/openfs.c 21566 --- silo-1.4.14.orig/libext2fs/openfs.c 1969-12-31 16:00:00.000000000 -0800 21567 +++ silo-1.4.14/libext2fs/openfs.c 2009-01-07 15:07:57.000000000 -0800 20553 21568 @@ -0,0 +1,326 @@ 20554 21569 +/* … … 20878 21893 + return 0; 20879 21894 +} 20880 diff -Naur silo-1.4.1 3.orig/libext2fs/read_bb.c silo-1.4.13/libext2fs/read_bb.c20881 --- silo-1.4.1 3.orig/libext2fs/read_bb.c 1969-12-31 19:00:00.000000000 -050020882 +++ silo-1.4.1 3/libext2fs/read_bb.c 2007-04-03 17:02:53.000000000 -040021895 diff -Naur silo-1.4.14.orig/libext2fs/read_bb.c silo-1.4.14/libext2fs/read_bb.c 21896 --- silo-1.4.14.orig/libext2fs/read_bb.c 1969-12-31 16:00:00.000000000 -0800 21897 +++ silo-1.4.14/libext2fs/read_bb.c 2009-01-07 15:07:57.000000000 -0800 20883 21898 @@ -0,0 +1,97 @@ 20884 21899 +/* … … 20979 21994 + 20980 21995 + 20981 diff -Naur silo-1.4.1 3.orig/libext2fs/read_bb_file.c silo-1.4.13/libext2fs/read_bb_file.c20982 --- silo-1.4.1 3.orig/libext2fs/read_bb_file.c 1969-12-31 19:00:00.000000000 -050020983 +++ silo-1.4.1 3/libext2fs/read_bb_file.c 2007-04-03 17:02:53.000000000 -040021996 diff -Naur silo-1.4.14.orig/libext2fs/read_bb_file.c silo-1.4.14/libext2fs/read_bb_file.c 21997 --- silo-1.4.14.orig/libext2fs/read_bb_file.c 1969-12-31 16:00:00.000000000 -0800 21998 +++ silo-1.4.14/libext2fs/read_bb_file.c 2009-01-07 15:07:57.000000000 -0800 20984 21999 @@ -0,0 +1,97 @@ 20985 22000 +/* … … 21080 22095 + 21081 22096 + 21082 diff -Naur silo-1.4.1 3.orig/libext2fs/res_gdt.c silo-1.4.13/libext2fs/res_gdt.c21083 --- silo-1.4.1 3.orig/libext2fs/res_gdt.c 1969-12-31 19:00:00.000000000 -050021084 +++ silo-1.4.1 3/libext2fs/res_gdt.c 2007-04-03 17:02:53.000000000 -040022097 diff -Naur silo-1.4.14.orig/libext2fs/res_gdt.c silo-1.4.14/libext2fs/res_gdt.c 22098 --- silo-1.4.14.orig/libext2fs/res_gdt.c 1969-12-31 16:00:00.000000000 -0800 22099 +++ silo-1.4.14/libext2fs/res_gdt.c 2009-01-07 15:07:57.000000000 -0800 21085 22100 @@ -0,0 +1,220 @@ 21086 22101 +/* … … 21304 22319 +} 21305 22320 + 21306 diff -Naur silo-1.4.1 3.orig/libext2fs/rs_bitmap.c silo-1.4.13/libext2fs/rs_bitmap.c21307 --- silo-1.4.1 3.orig/libext2fs/rs_bitmap.c 1969-12-31 19:00:00.000000000 -050021308 +++ silo-1.4.1 3/libext2fs/rs_bitmap.c 2007-04-03 17:02:53.000000000 -040022321 diff -Naur silo-1.4.14.orig/libext2fs/rs_bitmap.c silo-1.4.14/libext2fs/rs_bitmap.c 22322 --- silo-1.4.14.orig/libext2fs/rs_bitmap.c 1969-12-31 16:00:00.000000000 -0800 22323 +++ silo-1.4.14/libext2fs/rs_bitmap.c 2009-01-07 15:07:57.000000000 -0800 21309 22324 @@ -0,0 +1,106 @@ 21310 22325 +/* … … 21414 22429 +} 21415 22430 + 21416 diff -Naur silo-1.4.1 3.orig/libext2fs/rw_bitmaps.c silo-1.4.13/libext2fs/rw_bitmaps.c21417 --- silo-1.4.1 3.orig/libext2fs/rw_bitmaps.c 1969-12-31 19:00:00.000000000 -050021418 +++ silo-1.4.1 3/libext2fs/rw_bitmaps.c 2007-04-03 17:02:53.000000000 -040022431 diff -Naur silo-1.4.14.orig/libext2fs/rw_bitmaps.c silo-1.4.14/libext2fs/rw_bitmaps.c 22432 --- silo-1.4.14.orig/libext2fs/rw_bitmaps.c 1969-12-31 16:00:00.000000000 -0800 22433 +++ silo-1.4.14/libext2fs/rw_bitmaps.c 2009-01-07 15:07:57.000000000 -0800 21419 22434 @@ -0,0 +1,300 @@ 21420 22435 +/* … … 21718 22733 +} 21719 22734 + 21720 diff -Naur silo-1.4.1 3.orig/libext2fs/sparse.c silo-1.4.13/libext2fs/sparse.c21721 --- silo-1.4.1 3.orig/libext2fs/sparse.c 1969-12-31 19:00:00.000000000 -050021722 +++ silo-1.4.1 3/libext2fs/sparse.c 2007-04-03 17:02:53.000000000 -040022735 diff -Naur silo-1.4.14.orig/libext2fs/sparse.c silo-1.4.14/libext2fs/sparse.c 22736 --- silo-1.4.14.orig/libext2fs/sparse.c 1969-12-31 16:00:00.000000000 -0800 22737 +++ silo-1.4.14/libext2fs/sparse.c 2009-01-07 15:07:57.000000000 -0800 21723 22738 @@ -0,0 +1,78 @@ 21724 22739 +/* … … 21800 22815 + return ret; 21801 22816 +} 21802 diff -Naur silo-1.4.1 3.orig/libext2fs/swapfs.c silo-1.4.13/libext2fs/swapfs.c21803 --- silo-1.4.1 3.orig/libext2fs/swapfs.c 1969-12-31 19:00:00.000000000 -050021804 +++ silo-1.4.1 3/libext2fs/swapfs.c 2007-04-03 17:02:53.000000000 -040022817 diff -Naur silo-1.4.14.orig/libext2fs/swapfs.c silo-1.4.14/libext2fs/swapfs.c 22818 --- silo-1.4.14.orig/libext2fs/swapfs.c 1969-12-31 16:00:00.000000000 -0800 22819 +++ silo-1.4.14/libext2fs/swapfs.c 2009-01-07 15:07:57.000000000 -0800 21805 22820 @@ -0,0 +1,237 @@ 21806 22821 +/* … … 22041 23056 + 22042 23057 +#endif 22043 diff -Naur silo-1.4.1 3.orig/libext2fs/test_io.c silo-1.4.13/libext2fs/test_io.c22044 --- silo-1.4.1 3.orig/libext2fs/test_io.c 1969-12-31 19:00:00.000000000 -050022045 +++ silo-1.4.1 3/libext2fs/test_io.c 2007-04-03 17:02:53.000000000 -040023058 diff -Naur silo-1.4.14.orig/libext2fs/test_io.c silo-1.4.14/libext2fs/test_io.c 23059 --- silo-1.4.14.orig/libext2fs/test_io.c 1969-12-31 16:00:00.000000000 -0800 23060 +++ silo-1.4.14/libext2fs/test_io.c 2009-01-07 15:07:57.000000000 -0800 22046 23061 @@ -0,0 +1,411 @@ 22047 23062 +/* … … 22456 23471 + return retval; 22457 23472 +} 22458 diff -Naur silo-1.4.1 3.orig/libext2fs/tst_badblocks.c silo-1.4.13/libext2fs/tst_badblocks.c22459 --- silo-1.4.1 3.orig/libext2fs/tst_badblocks.c 1969-12-31 19:00:00.000000000 -050022460 +++ silo-1.4.1 3/libext2fs/tst_badblocks.c 2007-04-03 17:02:53.000000000 -040023473 diff -Naur silo-1.4.14.orig/libext2fs/tst_badblocks.c silo-1.4.14/libext2fs/tst_badblocks.c 23474 --- silo-1.4.14.orig/libext2fs/tst_badblocks.c 1969-12-31 16:00:00.000000000 -0800 23475 +++ silo-1.4.14/libext2fs/tst_badblocks.c 2009-01-07 15:07:57.000000000 -0800 22461 23476 @@ -0,0 +1,293 @@ 22462 23477 +/* … … 22753 23768 + 22754 23769 +} 22755 diff -Naur silo-1.4.1 3.orig/libext2fs/tst_bitops.c silo-1.4.13/libext2fs/tst_bitops.c22756 --- silo-1.4.1 3.orig/libext2fs/tst_bitops.c 1969-12-31 19:00:00.000000000 -050022757 +++ silo-1.4.1 3/libext2fs/tst_bitops.c 2007-04-03 17:02:53.000000000 -040023770 diff -Naur silo-1.4.14.orig/libext2fs/tst_bitops.c silo-1.4.14/libext2fs/tst_bitops.c 23771 --- silo-1.4.14.orig/libext2fs/tst_bitops.c 1969-12-31 16:00:00.000000000 -0800 23772 +++ silo-1.4.14/libext2fs/tst_bitops.c 2009-01-07 15:07:57.000000000 -0800 22758 23773 @@ -0,0 +1,44 @@ 22759 23774 +/* … … 22801 23816 + } 22802 23817 +} 22803 diff -Naur silo-1.4.1 3.orig/libext2fs/tst_byteswap.c silo-1.4.13/libext2fs/tst_byteswap.c22804 --- silo-1.4.1 3.orig/libext2fs/tst_byteswap.c 1969-12-31 19:00:00.000000000 -050022805 +++ silo-1.4.1 3/libext2fs/tst_byteswap.c 2007-04-03 17:02:53.000000000 -040023818 diff -Naur silo-1.4.14.orig/libext2fs/tst_byteswap.c silo-1.4.14/libext2fs/tst_byteswap.c 23819 --- silo-1.4.14.orig/libext2fs/tst_byteswap.c 1969-12-31 16:00:00.000000000 -0800 23820 +++ silo-1.4.14/libext2fs/tst_byteswap.c 2009-01-07 15:07:57.000000000 -0800 22806 23821 @@ -0,0 +1,92 @@ 22807 23822 +/* … … 22897 23912 + return errors; 22898 23913 +} 22899 diff -Naur silo-1.4.1 3.orig/libext2fs/tst_getsectsize.c silo-1.4.13/libext2fs/tst_getsectsize.c22900 --- silo-1.4.1 3.orig/libext2fs/tst_getsectsize.c 1969-12-31 19:00:00.000000000 -050022901 +++ silo-1.4.1 3/libext2fs/tst_getsectsize.c 2007-04-03 17:02:53.000000000 -040023914 diff -Naur silo-1.4.14.orig/libext2fs/tst_getsectsize.c silo-1.4.14/libext2fs/tst_getsectsize.c 23915 --- silo-1.4.14.orig/libext2fs/tst_getsectsize.c 1969-12-31 16:00:00.000000000 -0800 23916 +++ silo-1.4.14/libext2fs/tst_getsectsize.c 2009-01-07 15:07:57.000000000 -0800 22902 23917 @@ -0,0 +1,47 @@ 22903 23918 +/* … … 22948 23963 + exit(0); 22949 23964 +} 22950 diff -Naur silo-1.4.1 3.orig/libext2fs/tst_getsize.c silo-1.4.13/libext2fs/tst_getsize.c22951 --- silo-1.4.1 3.orig/libext2fs/tst_getsize.c 1969-12-31 19:00:00.000000000 -050022952 +++ silo-1.4.1 3/libext2fs/tst_getsize.c 2007-04-03 17:02:53.000000000 -040023965 diff -Naur silo-1.4.14.orig/libext2fs/tst_getsize.c silo-1.4.14/libext2fs/tst_getsize.c 23966 --- silo-1.4.14.orig/libext2fs/tst_getsize.c 1969-12-31 16:00:00.000000000 -0800 23967 +++ silo-1.4.14/libext2fs/tst_getsize.c 2009-01-07 15:07:57.000000000 -0800 22953 23968 @@ -0,0 +1,44 @@ 22954 23969 +/* … … 22996 24011 + return 0; 22997 24012 +} 22998 diff -Naur silo-1.4.1 3.orig/libext2fs/tst_iscan.c silo-1.4.13/libext2fs/tst_iscan.c22999 --- silo-1.4.1 3.orig/libext2fs/tst_iscan.c 1969-12-31 19:00:00.000000000 -050023000 +++ silo-1.4.1 3/libext2fs/tst_iscan.c 2007-04-03 17:02:53.000000000 -040024013 diff -Naur silo-1.4.14.orig/libext2fs/tst_iscan.c silo-1.4.14/libext2fs/tst_iscan.c 24014 --- silo-1.4.14.orig/libext2fs/tst_iscan.c 1969-12-31 16:00:00.000000000 -0800 24015 +++ silo-1.4.14/libext2fs/tst_iscan.c 2009-01-07 15:07:57.000000000 -0800 23001 24016 @@ -0,0 +1,218 @@ 23002 24017 +/* … … 23218 24233 +} 23219 24234 + 23220 diff -Naur silo-1.4.1 3.orig/libext2fs/unix_io.c silo-1.4.13/libext2fs/unix_io.c23221 --- silo-1.4.1 3.orig/libext2fs/unix_io.c 1969-12-31 19:00:00.000000000 -050023222 +++ silo-1.4.1 3/libext2fs/unix_io.c 2007-04-03 17:02:53.000000000 -040024235 diff -Naur silo-1.4.14.orig/libext2fs/unix_io.c silo-1.4.14/libext2fs/unix_io.c 24236 --- silo-1.4.14.orig/libext2fs/unix_io.c 1969-12-31 16:00:00.000000000 -0800 24237 +++ silo-1.4.14/libext2fs/unix_io.c 2009-01-07 15:07:57.000000000 -0800 23223 24238 @@ -0,0 +1,710 @@ 23224 24239 +/* … … 23932 24947 + return EXT2_ET_INVALID_ARGUMENT; 23933 24948 +} 23934 diff -Naur silo-1.4.1 3.orig/libext2fs/unlink.c silo-1.4.13/libext2fs/unlink.c23935 --- silo-1.4.1 3.orig/libext2fs/unlink.c 1969-12-31 19:00:00.000000000 -050023936 +++ silo-1.4.1 3/libext2fs/unlink.c 2007-04-03 17:02:53.000000000 -040024949 diff -Naur silo-1.4.14.orig/libext2fs/unlink.c silo-1.4.14/libext2fs/unlink.c 24950 --- silo-1.4.14.orig/libext2fs/unlink.c 1969-12-31 16:00:00.000000000 -0800 24951 +++ silo-1.4.14/libext2fs/unlink.c 2009-01-07 15:07:57.000000000 -0800 23937 24952 @@ -0,0 +1,99 @@ 23938 24953 +/* … … 24035 25050 +} 24036 25051 + 24037 diff -Naur silo-1.4.1 3.orig/libext2fs/valid_blk.c silo-1.4.13/libext2fs/valid_blk.c24038 --- silo-1.4.1 3.orig/libext2fs/valid_blk.c 1969-12-31 19:00:00.000000000 -050024039 +++ silo-1.4.1 3/libext2fs/valid_blk.c 2007-04-03 17:02:53.000000000 -040025052 diff -Naur silo-1.4.14.orig/libext2fs/valid_blk.c silo-1.4.14/libext2fs/valid_blk.c 25053 --- silo-1.4.14.orig/libext2fs/valid_blk.c 1969-12-31 16:00:00.000000000 -0800 25054 +++ silo-1.4.14/libext2fs/valid_blk.c 2009-01-07 15:07:57.000000000 -0800 24040 25055 @@ -0,0 +1,56 @@ 24041 25056 +/* … … 24095 25110 + return 1; 24096 25111 +} 24097 diff -Naur silo-1.4.1 3.orig/libext2fs/version.c silo-1.4.13/libext2fs/version.c24098 --- silo-1.4.1 3.orig/libext2fs/version.c 1969-12-31 19:00:00.000000000 -050024099 +++ silo-1.4.1 3/libext2fs/version.c 2007-04-03 17:02:53.000000000 -040025112 diff -Naur silo-1.4.14.orig/libext2fs/version.c silo-1.4.14/libext2fs/version.c 25113 --- silo-1.4.14.orig/libext2fs/version.c 1969-12-31 16:00:00.000000000 -0800 25114 +++ silo-1.4.14/libext2fs/version.c 2009-01-07 15:07:57.000000000 -0800 24100 25115 @@ -0,0 +1,52 @@ 24101 25116 +/* … … 24151 25166 + return ext2fs_parse_version_string(lib_version); 24152 25167 +} 24153 diff -Naur silo-1.4.1 3.orig/libext2fs/version.h silo-1.4.13/libext2fs/version.h24154 --- silo-1.4.1 3.orig/libext2fs/version.h 1969-12-31 19:00:00.000000000 -050024155 +++ silo-1.4.1 3/libext2fs/version.h 2007-04-03 17:02:53.000000000 -040025168 diff -Naur silo-1.4.14.orig/libext2fs/version.h silo-1.4.14/libext2fs/version.h 25169 --- silo-1.4.14.orig/libext2fs/version.h 1969-12-31 16:00:00.000000000 -0800 25170 +++ silo-1.4.14/libext2fs/version.h 2009-01-07 15:07:57.000000000 -0800 24156 25171 @@ -0,0 +1,11 @@ 24157 25172 +/* … … 24166 25181 +#define E2FSPROGS_VERSION "1.38" 24167 25182 +#define E2FSPROGS_DATE "30-Jun-2005" 24168 diff -Naur silo-1.4.1 3.orig/libext2fs/write_bb_file.c silo-1.4.13/libext2fs/write_bb_file.c24169 --- silo-1.4.1 3.orig/libext2fs/write_bb_file.c 1969-12-31 19:00:00.000000000 -050024170 +++ silo-1.4.1 3/libext2fs/write_bb_file.c 2007-04-03 17:02:53.000000000 -040025183 diff -Naur silo-1.4.14.orig/libext2fs/write_bb_file.c silo-1.4.14/libext2fs/write_bb_file.c 25184 --- silo-1.4.14.orig/libext2fs/write_bb_file.c 1969-12-31 16:00:00.000000000 -0800 25185 +++ silo-1.4.14/libext2fs/write_bb_file.c 2009-01-07 15:07:57.000000000 -0800 24171 25186 @@ -0,0 +1,34 @@ 24172 25187 +/* … … 24204 25219 + return 0; 24205 25220 +} 24206 diff -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 @@ 24210 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 24217 24218 diff -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 24241 24242 diff -Naur silo-1.4.13.orig/second/fs/ufs.c silo-1.4.13/second/fs/ufs.c 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 24245 @@ -40,28 +40,18 @@ 24246 24247 ino_t inode = 0; 24248 24249 -#ifdef UFS_CIGAM 24250 -/* Apparently new header */ 24251 - 24252 #define ufsi_size(x) ((unsigned int)((x)->ui_size)) 24253 #define ufsi_db(x) ((unsigned int *)((x)->ui_u2.ui_addr.ui_db)) 24254 #define ufsi_ib(x) ((unsigned int *)((x)->ui_u2.ui_addr.ui_ib)) 24255 #define ufsd_namlen(x) ((unsigned char)((x)->d_u.d_44.d_namlen)) 24256 24257 -#ifdef UFS_MINFREE 24258 -/* Apparently even newer header */ 24259 -#define ufs_superblock ufs_super_block 24260 +struct ufs_superblock_full { 24261 + struct ufs_super_block_first first; 24262 + struct ufs_super_block_second second; 24263 + struct ufs_super_block_third third; 24264 +}; 24265 +#define ufs_superblock ufs_super_block_first 24266 #define ufs_direct ufs_dir_entry 24267 -#endif 24268 - 24269 -#else 24270 - 24271 -#define ufsi_size(x) (((x)->ui_size.val[1])) 24272 -#define ufsi_db(x) ((unsigned int *)((x)->ui_db)) 24273 -#define ufsi_ib(x) ((unsigned int *)((x)->ui_ib)) 24274 -#define ufsd_namlen(x) ((unsigned char)((x)->d_namlen)) 24275 - 24276 -#endif 24277 24278 #ifndef S_ISLNK 24279 #include <sys/stat.h> 24280 @@ -92,25 +82,22 @@ 24281 return p; 24282 } 24283 24284 -static struct ufs_superblock *ufs_read_super(ufs_filsys fs) 24285 +static struct ufs_superblock_full *ufs_read_super(ufs_filsys fs) 24286 { 24287 - struct ufs_superblock *usb; 24288 + struct ufs_superblock_full *usb; 24289 24290 - usb = (struct ufs_superblock *) malloc (2048); 24291 + usb = (struct ufs_superblock_full *) malloc (2048); 24292 if (!usb) return 0; 24293 if (io_channel_read_blk (fs->io, UFS_SBLOCK/1024, -2048, (char *)usb)) 24294 return 0; 24295 - if (usb->fs_magic != UFS_MAGIC) { 24296 - /* XXX - replace hard-coded constant with a byte-swap macro */ 24297 - if (usb->fs_magic == 0x54190100) { 24298 - } 24299 + if (usb->third.fs_magic != UFS_MAGIC) { 24300 return 0; 24301 } 24302 - if (usb->fs_bsize != UFS_BSIZE) 24303 + if (usb->first.fs_bsize != UFS_BSIZE) 24304 return 0; 24305 - if (usb->fs_fsize != UFS_FSIZE) 24306 + if (usb->first.fs_fsize != UFS_FSIZE) 24307 return 0; 24308 - io_channel_set_blksize (fs->io, usb->fs_fsize); 24309 + io_channel_set_blksize (fs->io, usb->first.fs_fsize); 24310 return usb; 24311 } 24312 24313 diff -Naur silo-1.4.13.orig/second/ls.c silo-1.4.13/second/ls.c 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 24316 @@ -19,10 +19,10 @@ 24317 USA. */ 24318 24319 #include <silo.h> 24320 +#include <linux/types.h> 24321 #include <stringops.h> 24322 24323 typedef int FILE; 24324 -#include <linux/types.h> 24325 #include <ext2fs/ext2_fs.h> 24326 #include <ext2fs/ext2fs.h> 24327 24328 diff -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 25221 diff -Naur silo-1.4.14.orig/second/Makefile silo-1.4.14/second/Makefile 25222 --- silo-1.4.14.orig/second/Makefile 2008-06-12 09:39:12.000000000 -0700 25223 +++ silo-1.4.14/second/Makefile 2009-01-07 15:07:57.000000000 -0800 24331 25224 @@ -27,10 +27,10 @@ 24332 25225 LDFLAGS_LARGE=-N -Ttext $(LARGE_RELOC) … … 24419 25312 second.b: second util 24420 25313 $(ELFTOAOUT) -o second.aout second 24421 diff -Naur silo-1.4.13.orig/silo/silo.c silo-1.4.13/silo/silo.c 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 25314 diff -Naur silo-1.4.14.orig/second/ls.c silo-1.4.14/second/ls.c 25315 --- silo-1.4.14.orig/second/ls.c 2008-06-12 09:39:12.000000000 -0700 25316 +++ silo-1.4.14/second/ls.c 2009-01-07 15:07:57.000000000 -0800 25317 @@ -19,10 +19,10 @@ 25318 USA. */ 25319 25320 #include <silo.h> 25321 +#include <linux/types.h> 25322 #include <stringops.h> 25323 25324 typedef int FILE; 25325 -#include <linux/types.h> 25326 #include <ext2fs/ext2_fs.h> 25327 #include <ext2fs/ext2fs.h> 25328 25329 diff -Naur silo-1.4.14.orig/silo/silo.c silo-1.4.14/silo/silo.c 25330 --- silo-1.4.14.orig/silo/silo.c 2008-06-12 09:39:12.000000000 -0700 25331 +++ silo-1.4.14/silo/silo.c 2009-01-07 15:07:57.000000000 -0800 24424 25332 @@ -128,8 +128,8 @@ 24425 25333 unsigned short nsect; /* Sectors per track */ … … 24433 25341 unsigned short magic; /* Magic number */ 24434 25342 unsigned short csum; /* Label xor'd checksum */ 24435 diff -Naur silo-1.4.1 3.orig/silo/silocheck.c silo-1.4.13/silo/silocheck.c24436 --- silo-1.4.1 3.orig/silo/silocheck.c 2006-06-01 13:24:53.000000000 -040024437 +++ silo-1.4.1 3/silo/silocheck.c 2007-04-03 17:02:53.000000000 -040024438 @@ -10 0,8 +100,8 @@25343 diff -Naur silo-1.4.14.orig/silo/silocheck.c silo-1.4.14/silo/silocheck.c 25344 --- silo-1.4.14.orig/silo/silocheck.c 2008-06-12 09:39:12.000000000 -0700 25345 +++ silo-1.4.14/silo/silocheck.c 2009-01-07 15:07:57.000000000 -0800 25346 @@ -101,8 +101,8 @@ 24439 25347 unsigned short nsect; /* Sectors per track */ 24440 25348 unsigned char spare3[4]; /* Even more magic... */ … … 24447 25355 unsigned short magic; /* Magic number */ 24448 25356 unsigned short csum; /* Label xor'd checksum */ 24449 diff -Naur silo-1.4.1 3.orig/tilo/Makefile silo-1.4.13/tilo/Makefile24450 --- silo-1.4.1 3.orig/tilo/Makefile 2006-06-01 13:24:53.000000000 -040024451 +++ silo-1.4.1 3/tilo/Makefile 2007-04-03 17:02:53.000000000 -040025357 diff -Naur silo-1.4.14.orig/tilo/Makefile silo-1.4.14/tilo/Makefile 25358 --- silo-1.4.14.orig/tilo/Makefile 2008-06-12 09:39:12.000000000 -0700 25359 +++ silo-1.4.14/tilo/Makefile 2009-01-07 15:07:57.000000000 -0800 24452 25360 @@ -14,10 +14,10 @@ 24453 25361 all: maketilo
Note:
See TracChangeset
for help on using the changeset viewer.