diff options
author | Mike Frysinger <vapier@gentoo.org> | 2009-01-04 17:08:37 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2009-01-04 17:08:37 +0000 |
commit | e24458726b06341b7c5bc8a605a3125d335e11b6 (patch) | |
tree | 6e5479f48e8973d9806ae5b8a54f1af1da50b603 /sys-fs/e2fsprogs | |
parent | dont add sys-devel/libtool to DEPEND if the package is sys-devel/libtool #253... (diff) | |
download | historical-e24458726b06341b7c5bc8a605a3125d335e11b6.tar.gz historical-e24458726b06341b7c5bc8a605a3125d335e11b6.tar.bz2 historical-e24458726b06341b7c5bc8a605a3125d335e11b6.zip |
Add fix from upstream for slow tune2fs usage #253162 by candrews.
Package-Manager: portage-2.2_rc20/cvs/Linux 2.6.28 x86_64
Diffstat (limited to 'sys-fs/e2fsprogs')
-rw-r--r-- | sys-fs/e2fsprogs/ChangeLog | 8 | ||||
-rw-r--r-- | sys-fs/e2fsprogs/Manifest | 14 | ||||
-rw-r--r-- | sys-fs/e2fsprogs/e2fsprogs-1.41.3-r1.ebuild | 132 | ||||
-rw-r--r-- | sys-fs/e2fsprogs/files/e2fsprogs-1.41.3-tune2fs-opt.patch | 99 |
4 files changed, 251 insertions, 2 deletions
diff --git a/sys-fs/e2fsprogs/ChangeLog b/sys-fs/e2fsprogs/ChangeLog index 487e59183fd8..ab2329f55d23 100644 --- a/sys-fs/e2fsprogs/ChangeLog +++ b/sys-fs/e2fsprogs/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for sys-fs/e2fsprogs # Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-fs/e2fsprogs/ChangeLog,v 1.174 2009/01/01 15:47:52 gmsoft Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-fs/e2fsprogs/ChangeLog,v 1.175 2009/01/04 17:08:36 vapier Exp $ + +*e2fsprogs-1.41.3-r1 (04 Jan 2009) + + 04 Jan 2009; Mike Frysinger <vapier@gentoo.org> + +files/e2fsprogs-1.41.3-tune2fs-opt.patch, +e2fsprogs-1.41.3-r1.ebuild: + Add fix from upstream for slow tune2fs usage #253162 by candrews. 01 Jan 2009; Guy Martin <gmsoft@gentoo.org> e2fsprogs-1.41.3.ebuild: hppa stable, #251808 diff --git a/sys-fs/e2fsprogs/Manifest b/sys-fs/e2fsprogs/Manifest index 5d13f8b3da9a..abfc2c72203b 100644 --- a/sys-fs/e2fsprogs/Manifest +++ b/sys-fs/e2fsprogs/Manifest @@ -1,9 +1,13 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA1 + AUX e2fsprogs-1.38-tests-locale.patch 656 RMD160 16c625c16144ed16942fa19988524b7b5727c583 SHA1 debd15eba41a392cf0336e694bebf0c2409b18e3 SHA256 7d12df7c4f00f1c1c81dcbd74cc0f8c1cffaa3b5089fbaa40222a7a9f2fbe598 AUX e2fsprogs-1.39-makefile.patch 2646 RMD160 5e5dca19f977c56d516ab1df3bf65700d870425a SHA1 9e6e7f5228dc15b458af0346827474376ea89f3a SHA256 b9d6876b76f36e873295e1ad7301d86dc00d7f2adab0743de57be9adf1578f9a AUX e2fsprogs-1.40-fbsd.patch 352 RMD160 2d3f0979522a29bdf5aae1af9c73b33e76b02f23 SHA1 b229990591965b454dfaa88bf47437cc8386343d SHA256 52865c6600fa0f601a89e4396797ae2d23a1ed895e64b098c36e8bcab1ac8505 AUX e2fsprogs-1.40.5-libintl.patch 425 RMD160 a3cc77c99f42eebb8518b402c66565627ae869c3 SHA1 449968df4e6f06056d7a1266ff910394e10409e6 SHA256 281b175c362805d3c543dee4627e6ce065209652eff8ebea0d3b4f1d41ce0506 AUX e2fsprogs-1.41.0-makefile.patch 3044 RMD160 678da7d57ec775eaced1aa29f8bb6ea794e06621 SHA1 f5634e52b005d8a51fe60eae336f4459a31ab920 SHA256 4b00fbc25bb65079d0d6d0a3060a31280f28a115b28aad9a0af7f9c755a15376 AUX e2fsprogs-1.41.2-makefile.patch 2813 RMD160 11b20c97f58efe18850296aefe08a155084dc825 SHA1 37bb9fd7cd06e1d7f5f302c2e7c0ff24fbd3c448 SHA256 48192b8d38bc00c048489de92a7361a773df0b6c4bbbb5e22b0b5c91962864f4 +AUX e2fsprogs-1.41.3-tune2fs-opt.patch 3027 RMD160 98c7ea72fc19f262b9965ef940629958de753844 SHA1 db9fcb2c696bcb71009b7ff4ecb630996712a59a SHA256 c4e7966c674d7853d03c5af5f431ffef54d463870793d8a7a7784874486bb4e1 AUX fsck_ext2fs.8 3806 RMD160 193e4e01508ad363c28c8d5feb124f65d59a76eb SHA1 dff54a3149f8d6187f6481c428d4b980c3abfb97 SHA256 fc1155e67f17aebc8762d75a25d25511a1463be3da05baf7a322d0b5f91938e0 AUX fsck_ext2fs.c 2797 RMD160 b5a58058b90876d11286ffb12de75bdbf6a064e3 SHA1 c0027c5e031b87dd8a5d50a3a256ac7637e59fd3 SHA256 a7c3614e76c89ab7882191c14a469789d4b5b54f3c61c5888e5bd72840816e22 DIST e2fsprogs-1.40.11.tar.gz 4116013 RMD160 face7ce0de8049774ae7941ffa274dce064d7dbb SHA1 22f8abc2915873faa85ce92464fa0b3b4265c2a9 SHA256 3eeb0c3513b3b251f5d51ec3413bc77e3a21cb8bc84a1979022a67fe733c897b @@ -17,6 +21,14 @@ EBUILD e2fsprogs-1.40.9.ebuild 4091 RMD160 ef0e2d0f136a5fd4b5acdc4c88eb450a90771 EBUILD e2fsprogs-1.41.0.ebuild 3459 RMD160 ff88d3823e1d2c46e6d16d0e01d9511886a049bc SHA1 3eca1a1d726c612dec8cc158ea0a258a4b213f1f SHA256 0c743f36f080371d5efa634a426574a12f8d1643d01dac910751931782f5548e EBUILD e2fsprogs-1.41.1.ebuild 3459 RMD160 c4ae79307142ef6abc23ef84bb9ffb8125863200 SHA1 8e3bf9b55b6225c9c92435287d2db9f05747b75e SHA256 2391a7ad29f9f192a8feafbdacbb327592890b610ba7af871899e3fe0b1b9b77 EBUILD e2fsprogs-1.41.2.ebuild 3448 RMD160 131348152916b981ada0b9a46bad4fea80aa0909 SHA1 953cbf1daddf23b10511bfd29bb113cb7cd236ae SHA256 625f8bc2a9c201c7df33dfa0a0371b47d22f8516d1855a20cf5855e27f4a5f6b +EBUILD e2fsprogs-1.41.3-r1.ebuild 3903 RMD160 923308b03ed83e03f361dcc9e16fecfa640e1a24 SHA1 6b1c22229b33a2a7690d27685f96b4b9e5b14580 SHA256 b7fa7075ecb5ff5d458de6f207f9fdda34592d58223715663042a67eddad4b1c EBUILD e2fsprogs-1.41.3.ebuild 3836 RMD160 8d307133494c34428c3d62eff496631d5e7835dc SHA1 123499b2218449a63e6bba38c5addcb9c5c52eac SHA256 e1375e16af6550b97a83cb5ba51a222139dcff6953bfbdb665c71f455b9a09bb -MISC ChangeLog 26048 RMD160 1758018065442b4c42a40cb6ec1ab320fe4dd91d SHA1 248379a4a4b18dc3f56bd75a372f96c9e90e5c8b SHA256 dca92c784a41ebdde4dccb6aba246a8cd0f7ea6ec4881d776875e6d0eb26a675 +MISC ChangeLog 26277 RMD160 1071bdeb497f7cec809936e7e64fa845cadac4a5 SHA1 059b7610273c8c4b850737c16399af1d3bc2e4ed SHA256 e35cbbf0f3bb3d771ff9873f390cfcfdfebdef1f19af65344e35db3d325463d7 MISC metadata.xml 164 RMD160 f43cbec30b7074319087c9acffdb9354b17b0db3 SHA1 9c213f5803676c56439df3716be07d6692588856 SHA256 f5f2891f2a4791cd31350bb2bb572131ad7235cd0eeb124c9912c187ac10ce92 +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.0.9 (GNU/Linux) + +iEYEARECAAYFAklg7RoACgkQn/5bYzqsSmF+bgCgmTH66JcJRltOmkkd04YdZfOp +IocAoKn+3Ey/9CANPlIdSFC2LMur0pgL +=bgBC +-----END PGP SIGNATURE----- diff --git a/sys-fs/e2fsprogs/e2fsprogs-1.41.3-r1.ebuild b/sys-fs/e2fsprogs/e2fsprogs-1.41.3-r1.ebuild new file mode 100644 index 000000000000..eeda521e7f01 --- /dev/null +++ b/sys-fs/e2fsprogs/e2fsprogs-1.41.3-r1.ebuild @@ -0,0 +1,132 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-fs/e2fsprogs/e2fsprogs-1.41.3-r1.ebuild,v 1.1 2009/01/04 17:08:36 vapier Exp $ + +inherit eutils flag-o-matic toolchain-funcs multilib + +DESCRIPTION="Standard EXT2 and EXT3 filesystem utilities" +HOMEPAGE="http://e2fsprogs.sourceforge.net/" +SRC_URI="mirror://sourceforge/e2fsprogs/${P}.tar.gz" + +LICENSE="GPL-2 BSD" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd" +IUSE="nls elibc_FreeBSD" + +RDEPEND="~sys-libs/${PN}-libs-${PV} + nls? ( virtual/libintl )" +DEPEND="${RDEPEND} + nls? ( sys-devel/gettext ) + sys-apps/texinfo" + +pkg_setup() { + if [[ ! -e ${ROOT}/etc/mtab ]] ; then + # add some crap to deal with missing /etc/mtab #217719 + ewarn "No /etc/mtab file, creating one temporarily" + echo "${PN} crap for src_test" > "${ROOT}"/etc/mtab + fi +} + +src_unpack() { + unpack ${A} + cd "${S}" + epatch "${FILESDIR}"/${PN}-1.38-tests-locale.patch #99766 + epatch "${FILESDIR}"/${PN}-1.41.2-makefile.patch + epatch "${FILESDIR}"/${PN}-1.40-fbsd.patch + epatch "${FILESDIR}"/${P}-tune2fs-opt.patch #253162 + # blargh ... trick e2fsprogs into using e2fsprogs-libs + rm -rf doc + sed -i -r \ + -e 's:@LIBINTL@:@LTLIBINTL@:' \ + -e '/^LIB(BLKID|COM_ERR|SS|UUID)/s:[$][(]LIB[)]/lib([^@]*)@LIB_EXT@:-l\1:' \ + -e '/^DEPLIB(BLKID|COM_ERR|SS|UUID)/s:=.*:=:' \ + MCONFIG.in || die "muck libs" #122368 + sed -i -r \ + -e '/^LIB_SUBDIRS/s:lib/(blkid|et|ss|uuid)::g' \ + Makefile.in || die "remove subdirs" + touch lib/ss/ss_err.h +} + +src_compile() { + # Keep the package from doing silly things + addwrite /var/cache/fonts + export LDCONFIG=: + export CC=$(tc-getCC) + export STRIP=: + + # We want to use the "bsd" libraries while building on Darwin, but while + # building on other Gentoo/*BSD we prefer elf-naming scheme. + local libtype + case ${CHOST} in + *-darwin*) libtype=bsd;; + *) libtype=elf;; + esac + + econf \ + --bindir=/bin \ + --sbindir=/sbin \ + --enable-${libtype}-shlibs \ + --with-ldopts="${LDFLAGS}" \ + $(use_enable !elibc_uclibc tls) \ + --without-included-gettext \ + $(use_enable nls) \ + $(use_enable userland_GNU fsck) \ + || die + if [[ ${CHOST} != *-uclibc ]] && grep -qs 'USE_INCLUDED_LIBINTL.*yes' config.{log,status} ; then + eerror "INTL sanity check failed, aborting build." + eerror "Please post your ${S}/config.log file as an" + eerror "attachment to http://bugs.gentoo.org/show_bug.cgi?id=81096" + die "Preventing included intl cruft from building" + fi + emake COMPILE_ET=compile_et MK_CMDS=mk_cmds || die + + # Build the FreeBSD helper + if use elibc_FreeBSD ; then + cp "${FILESDIR}"/fsck_ext2fs.c . + emake fsck_ext2fs || die + fi +} + +pkg_preinst() { + if [[ -r ${ROOT}/etc/mtab ]] ; then + if [[ $(<"${ROOT}"/etc/mtab) == "${PN} crap for src_test" ]] ; then + rm -f "${ROOT}"/etc/mtab + fi + fi +} + +src_install() { + emake DESTDIR="${D}" install || die + emake DESTDIR="${D}" install-libs || die + dodoc README RELEASE-NOTES + + # Move shared libraries to /lib/, install static libraries to /usr/lib/, + # and install linker scripts to /usr/lib/. + dodir /$(get_libdir) + local lib slib + for lib in "${D}"/usr/$(get_libdir)/*.a ; do + slib=${lib##*/} + mv "${lib%.a}"$(get_libname)* "${D}"/$(get_libdir)/ || die "moving lib ${slib}" + gen_usr_ldscript ${slib%.a}$(get_libname) + done + + # move 'useless' stuff to /usr/ + dosbin "${D}"/sbin/mklost+found + rm -f "${D}"/sbin/mklost+found + + if use elibc_FreeBSD ; then + # Install helpers for us + into / + dosbin "${S}"/fsck_ext2fs || die + doman "${FILESDIR}"/fsck_ext2fs.8 + + # these manpages are already provided by FreeBSD libc + # and filefrag is linux only + rm -f \ + "${D}"/sbin/filefrag \ + "${D}"/usr/share/man/man8/filefrag.8 \ + "${D}"/bin/uuidgen \ + "${D}"/usr/share/man/man3/{uuid,uuid_compare}.3 \ + "${D}"/usr/share/man/man1/uuidgen.1 || die + fi +} diff --git a/sys-fs/e2fsprogs/files/e2fsprogs-1.41.3-tune2fs-opt.patch b/sys-fs/e2fsprogs/files/e2fsprogs-1.41.3-tune2fs-opt.patch new file mode 100644 index 000000000000..35e8a57fa3a4 --- /dev/null +++ b/sys-fs/e2fsprogs/files/e2fsprogs-1.41.3-tune2fs-opt.patch @@ -0,0 +1,99 @@ +http://bugs.gentoo.org/253162 + +From 27c6de45a4187a348ec0960472d4a113ee6ea425 Mon Sep 17 00:00:00 2001 +From: Theodore Ts'o <tytso@mit.edu> +Date: Sat, 15 Nov 2008 00:32:39 -0500 +Subject: [PATCH] tune2fs: Fix inefficient O(n**2) algorithms when expanding the inode size + +When running "tune2fs -I 256" on moderate to large filesystems, the +time required to run tune2fs can take many hours (20+ before some +users gave up in disgust). This was due to some O(n**2) and O(n*m) +algorithms in move_block() and inode_scan_and_fix(), respectively. + +Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> +--- + misc/tune2fs.c | 25 +++++++++++++------------ + 1 files changed, 13 insertions(+), 12 deletions(-) + +diff --git a/misc/tune2fs.c b/misc/tune2fs.c +index b29b344..e72518a 100644 +--- a/misc/tune2fs.c ++++ b/misc/tune2fs.c +@@ -1011,13 +1011,13 @@ static int move_block(ext2_filsys fs, ext2fs_block_bitmap bmap) + if (retval) + return retval; + +- for (blk = fs->super->s_first_data_block; +- blk < fs->super->s_blocks_count; blk++) { ++ for (new_blk = blk = fs->super->s_first_data_block; ++ blk < fs->super->s_blocks_count; blk++) { + + if (!ext2fs_test_block_bitmap(bmap, blk)) + continue; + +- retval = ext2fs_new_block(fs, blk, NULL, &new_blk); ++ retval = ext2fs_new_block(fs, new_blk, NULL, &new_blk); + if (retval) + goto err_out; + +@@ -1068,12 +1068,14 @@ static int process_block(ext2_filsys fs EXT2FS_ATTR((unused)), + e2_blkcnt_t blockcnt EXT2FS_ATTR((unused)), + blk_t ref_block EXT2FS_ATTR((unused)), + int ref_offset EXT2FS_ATTR((unused)), +- void *priv_data EXT2FS_ATTR((unused))) ++ void *priv_data) + { + int ret = 0; + blk_t new_blk; ++ ext2fs_block_bitmap bmap = (ext2fs_block_bitmap) priv_data; + +- ++ if (!ext2fs_test_block_bitmap(bmap, *block_nr)) ++ return 0; + new_blk = transalate_block(*block_nr); + if (new_blk) { + *block_nr = new_blk; +@@ -1086,7 +1088,7 @@ static int process_block(ext2_filsys fs EXT2FS_ATTR((unused)), + return ret; + } + +-static int inode_scan_and_fix(ext2_filsys fs) ++static int inode_scan_and_fix(ext2_filsys fs, ext2fs_block_bitmap bmap) + { + errcode_t retval = 0; + ext2_ino_t ino; +@@ -1122,8 +1124,8 @@ static int inode_scan_and_fix(ext2_filsys fs) + * Do we need to fix this ?? + */ + +- if (inode.i_file_acl) { +- ++ if (inode.i_file_acl && ++ ext2fs_test_block_bitmap(bmap, inode.i_file_acl)) { + blk = transalate_block(inode.i_file_acl); + if (!blk) + continue; +@@ -1142,9 +1144,8 @@ static int inode_scan_and_fix(ext2_filsys fs) + if (!ext2fs_inode_has_valid_blocks(&inode)) + continue; + +- retval = ext2fs_block_iterate2(fs, ino, 0, +- block_buf, process_block, +- 0); ++ retval = ext2fs_block_iterate2(fs, ino, 0, block_buf, ++ process_block, bmap); + if (retval) + goto err_out; + +@@ -1344,7 +1345,7 @@ static int resize_inode(ext2_filsys fs, unsigned long new_size) + if (retval) + goto err_out; + +- retval = inode_scan_and_fix(fs); ++ retval = inode_scan_and_fix(fs, bmap); + if (retval) + goto err_out; + +-- +1.6.0.6 + |