You can subscribe to this list here.
2000 |
Jan
(2) |
Feb
(24) |
Mar
(4) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
(5) |
Oct
(4) |
Nov
|
Dec
(26) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(8) |
Dec
|
2003 |
Jan
(10) |
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2004 |
Jan
(9) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(3) |
2005 |
Jan
|
Feb
(1) |
Mar
(4) |
Apr
(2) |
May
(1) |
Jun
(3) |
Jul
(4) |
Aug
(2) |
Sep
(6) |
Oct
(6) |
Nov
(17) |
Dec
(28) |
2006 |
Jan
(9) |
Feb
(6) |
Mar
(4) |
Apr
(2) |
May
(11) |
Jun
(22) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
(6) |
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
2009 |
Jan
|
Feb
|
Mar
(6) |
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
|
Mar
|
Apr
(4) |
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(4) |
Jun
(4) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2013 |
Jan
|
Feb
(1) |
Mar
(3) |
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(3) |
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2019 |
Jan
|
Feb
|
Mar
|
Apr
(3) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Phillip S. <ph...@th...> - 2019-04-05 20:40:18
|
On 4/5/2019 3:09 PM, Phillip Susi wrote: > So the problem seems to be not specific to rmt, but to compressed tape > backups. Even if you are using a normal file via rmt, dump treats it > like a tape and calls readtape_comprtape instead of readtape_comprfile. > The latter reads the first 4 byte header of the block first to decide > how long the block actually is on disk, then reads that many bytes. The > latter reads a fixed length of the uncompressed block size + the 4 byte > header, which causes it to consume far more than a single block and so > when it goes to read the header for the next block, it's actually > reading some random data from the wrong location in the file. Fixed it. Attaching patch. I got rid of the separate readtape_comptape function and merged the two into one function that handles compressed backups properly. |
From: Phillip S. <ph...@th...> - 2019-04-05 19:10:05
|
So the problem seems to be not specific to rmt, but to compressed tape backups. Even if you are using a normal file via rmt, dump treats it like a tape and calls readtape_comprtape instead of readtape_comprfile. The latter reads the first 4 byte header of the block first to decide how long the block actually is on disk, then reads that many bytes. The latter reads a fixed length of the uncompressed block size + the 4 byte header, which causes it to consume far more than a single block and so when it goes to read the header for the next block, it's actually reading some random data from the wrong location in the file. Has nobody ever tried using compression with a tape or rmt before? I can't believe nobody has found this bug long before now. On 4/5/2019 9:30 AM, Phillip Susi wrote: > psusi@devserv:~/dump/rmt$ restore -i -b 1024 -f devserv:/backup/dump.0 > Connection to devserv established. > Dump tape is compressed. > short compressed block: 1048580 expected: 198244065 > decompression error, block 2049: length mismatch > Tape decompression error while restoring <directory file - name unknown> > continue? [yn] n > > It appears that in Ubuntu rmt is provided by both the tar and dump > packages, but the tar version appears to be a straight copy from the > dump package, and switching to the version from the dump package gets > the same result. tar is able to use rmt just fine. > > Neither of the numbers listed appear to be correct. The block size > should be 1048576 bytes, not 1048580... not sure why there are 4 extra > bytes there, and I have no idea why it thinks it is expecting the insane > 198244065 bytes. |
From: Phillip S. <ph...@th...> - 2019-04-05 13:55:09
|
psusi@devserv:~/dump/rmt$ restore -i -b 1024 -f devserv:/backup/dump.0 Connection to devserv established. Dump tape is compressed. short compressed block: 1048580 expected: 198244065 decompression error, block 2049: length mismatch Tape decompression error while restoring <directory file - name unknown> continue? [yn] n It appears that in Ubuntu rmt is provided by both the tar and dump packages, but the tar version appears to be a straight copy from the dump package, and switching to the version from the dump package gets the same result. tar is able to use rmt just fine. Neither of the numbers listed appear to be correct. The block size should be 1048576 bytes, not 1048580... not sure why there are 4 extra bytes there, and I have no idea why it thinks it is expecting the insane 198244065 bytes. |
From: Josef R. <jr...@re...> - 2016-10-04 08:41:11
|
Hi, Can somebody help me with this issue? (https://sourceforge.net/p/dump/bugs/168/) ---- ISSUE DESCRIPTION ---- On ext3/4 volumes with inode size more than 128b, directories lose some of it's xattr's after restore. Version-Release number of selected component (if applicable): dump-0.4b45 How reproducible: Need ext3/4 volume with inode size 256b and extended attributes user namespace support. Steps to Reproduce: In some directory: 1. mkdir -p test/dir 2. for (( i = 0; i < 6; i++ )); do setfattr -n user.$i -v $i dir done 3. dump -0 -f test.dump test 4. restore -r -f test.dump 5. In restored test directory: getfattr -d dir Actual results: user.1="1" user.2="2" user.3="3" user.4="4" user.5="5" Expected results: user.0="0" user.1="1" user.2="2" user.3="3" user.4="4" user.5="5" --- END --- Thanks Regards Josef Ridky Associate Software Engineer Core Services Team Red Hat Czech, s.r.o. |
From: Josef R. <jr...@re...> - 2016-07-27 08:08:06
|
Hi here is the patch, which solves previous described "bug". This patch has been attached even to dump bug report tool (https://sourceforge.net/p/dump/bugs/166/). Is there some possibility, that this patch will be added to upstream? Regards Josef ----- Original Message ----- | From: "Phil Susi" <ps...@ub...> | To: "Josef Ridky" <jr...@re...>, dum...@li... | Sent: Monday, July 25, 2016 8:23:49 PM | Subject: Re: [Dump-devel] dump -W reports "DUMP: mount: bad UUID" for /boot/efi file system | | On 7/25/2016 8:45 AM, Josef Ridky wrote: | > I am not sure, if is this bug, because dump does not support FAT/VFAT file | > system. | > | > Can anyone confirm this or help me how to solve this problem? | | Yep... PEBKAC error. | | |
From: Phil S. <ps...@ub...> - 2016-07-25 18:23:35
|
On 7/25/2016 8:45 AM, Josef Ridky wrote: > I am not sure, if is this bug, because dump does not support FAT/VFAT file system. > > Can anyone confirm this or help me how to solve this problem? Yep... PEBKAC error. |
From: Josef R. <jr...@re...> - 2016-07-25 12:45:23
|
Hi, I am new maintainer of dump package in Red Hat and Fedora. This has been submitted to our Bugzilla: ----------------------------------------------------------------------------- Description of problem: dump -W reports "DUMP: mount: bad UUID" when attempting to inspect the /boot/efi file system. Version-Release number of selected component (if applicable): dump.x86_64 1:0.4-0.6.b42 How reproducible: repeatable. Steps to Reproduce: 1. Make sure you have a /boot/efi partition (mine was created by the installer). 2. # dump -W Actual results: # dump -W DUMP: mount: bad UUID Last dump(s) done (Dump '>' file systems): /dev/sda7 ( /) Last dump: Level 0, Date Tue Jan 15 05:43:37 2013 /dev/sda2 ( /boot) Last dump: Level 0, Date Tue Jan 15 05:44:12 2013 /dev/sda9 ( /db) Last dump: never /dev/sda3 ( /home) Last dump: Level 0, Date Tue Jan 15 12:06:14 2013 /dev/sda4 ( /tmp) Last dump: Level 0, Date Tue Jan 15 12:51:33 2013 /dev/sda5 ( /usr) Last dump: Level 0, Date Tue Jan 15 12:51:36 2013 /dev/sda6 ( /var) Last dump: Level 0, Date Tue Jan 15 12:53:26 2013 The /boot/efi file system that is present (and mounted) is not reported by dump. # mount /dev/sda7 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0") /dev/sda2 on /boot type ext4 (rw,nodev) /dev/sda1 on /boot/efi type vfat (rw,nosuid,umask=0077,shortname=winnt) /dev/sda9 on /db type ext4 (rw,noexec,nosuid,nodev) /dev/sda3 on /home type ext4 (rw,nosuid,nodev) /dev/sda4 on /tmp type ext4 (rw,noexec,nosuid,nodev) /dev/sda5 on /usr type ext4 (rw,nodev) /dev/sda6 on /var type ext4 (rw,nosuid,nodev) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) Expected results: The error " DUMP: mount: bad UUID" ought not to be reported. ----------------------------------------------------------------------------------- I am not sure, if is this bug, because dump does not support FAT/VFAT file system. Can anyone confirm this or help me how to solve this problem? Thanks Josef Ridky Associate Software Engineer Core Services Team Red Hat Czech, s.r.o. |
From: Petr H. <ph...@re...> - 2013-04-17 07:34:32
|
Hi folks, In order to support ARM 64bit architecture (https://bugzilla.redhat.com/show_bug.cgi?id=925282) below is the patch which does that. Could you please integrate that one? diff -urN dump-0.4b44/config.guess dump-0.4b44-aarch64/config.guess --- dump-0.4b44/config.guess 2003-01-24 05:01:44.000000000 -0600 +++ dump-0.4b44-aarch64/config.guess 2013-03-03 04:18:12.766799480 -0600 @@ -1,9 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002 Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011, 2012 Free Software Foundation, Inc. -timestamp='2002-07-23' +timestamp='2012-09-25' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -16,24 +17,24 @@ # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# along with this program; if not, see <http://www.gnu.org/licenses/>. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. -# Originally written by Per Bothner <pe...@bo...>. -# Please send patches to <con...@gn...>. Submit a context -# diff and a properly formatted ChangeLog entry. + +# Originally written by Per Bothner. Please send patches (context +# diff format) to <con...@gn...> and include a ChangeLog +# entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` @@ -53,7 +54,8 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO @@ -66,11 +68,11 @@ while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; + echo "$timestamp" ; exit ;; --version | -v ) - echo "$version" ; exit 0 ;; + echo "$version" ; exit ;; --help | --h* | -h ) - echo "$usage"; exit 0 ;; + echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. @@ -98,30 +100,32 @@ # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. -# This shell variable is my proudest work .. or something. --bje +# Portable tmp directory creation inspired by the Autoconf team. -set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ; -(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old) - || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ; -dummy=$tmpdir/dummy ; -files="$dummy.c $dummy.o $dummy.rel $dummy" ; -trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ; +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do - if ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; then + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; - rm -f $files ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; -unset files' +esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (gh...@no... 1994-08-24) @@ -139,7 +143,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward @@ -156,6 +160,7 @@ arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched @@ -164,7 +169,7 @@ arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null + | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? @@ -174,148 +179,139 @@ fi ;; *) - os=netbsd + os=netbsd ;; esac # The OS release - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" - exit 0 ;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - macppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvmeppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mipseb-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sun3:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; alpha:OSF1:*:*) - if test $UNAME_RELEASE = "V4.0"; then + case $UNAME_RELEASE in + *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - fi + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - eval $set_cc_for_build - cat <<EOF >$dummy.s - .data -\$Lformat: - .byte 37,100,45,37,120,10,0 # "%d-%x\n" - - .text - .globl main - .align 4 - .ent main -main: - .frame \$30,16,\$26,0 - ldgp \$29,0(\$27) - .prologue 1 - .long 0x47e03d80 # implver \$0 - lda \$2,-1 - .long 0x47e20c21 # amask \$2,\$1 - lda \$16,\$Lformat - mov \$0,\$17 - not \$1,\$18 - jsr \$26,printf - ldgp \$29,0(\$26) - mov 0,\$16 - jsr \$26,exit - .end main -EOF - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - case `$dummy` in - 0-0) - UNAME_MACHINE="alpha" - ;; - 1-0) - UNAME_MACHINE="alphaev5" - ;; - 1-1) - UNAME_MACHINE="alphaev56" - ;; - 1-101) - UNAME_MACHINE="alphapca56" - ;; - 2-303) - UNAME_MACHINE="alphaev6" - ;; - 2-307) - UNAME_MACHINE="alphaev67" - ;; - 2-1307) - UNAME_MACHINE="alphaev68" - ;; - 3-1307) - UNAME_MACHINE="alphaev7" - ;; - esac - fi - rm -f $dummy.s $dummy && rmdir $tmpdir - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit 0 ;; + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix - exit 0 ;; + exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 - exit 0 ;; + exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 - exit 0;; + exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; + exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos - exit 0 ;; + exit ;; *:OS/390:*:*) echo i370-ibm-openedition - exit 0 ;; + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp - exit 0;; + exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # ak...@wp... (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then @@ -323,29 +319,51 @@ else echo pyramid-pyramid-bsd fi - exit 0 ;; + exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 - exit 0 ;; - DRS?6000:UNIX_SV:4.2*:7*) + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7 && exit 0 ;; + sparc) echo sparc-icl-nx7; exit ;; esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) @@ -354,10 +372,10 @@ esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; + exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; + exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 @@ -369,10 +387,10 @@ echo sparc-sun-sunos${UNAME_RELEASE} ;; esac - exit 0 ;; + exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; + exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -382,38 +400,41 @@ # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; + exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 - exit 0 ;; + exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; + exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; + exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; + exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -437,33 +458,36 @@ exit (-1); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy \ - && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 - rm -f $dummy.c $dummy && rmdir $tmpdir + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; + exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax - exit 0 ;; - Night_Hawk:*:*:PowerMAX_OS) + exit ;; + Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax - exit 0 ;; + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix - exit 0 ;; + exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 - exit 0 ;; + exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 - exit 0 ;; + exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 - exit 0 ;; + exit ;; AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ @@ -476,29 +500,29 @@ else echo i586-dg-dgux${UNAME_RELEASE} fi - exit 0 ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 - exit 0 ;; + exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 - exit 0 ;; + exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 - exit 0 ;; + exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd - exit 0 ;; + exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; + exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix - exit 0 ;; + exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` @@ -506,7 +530,7 @@ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit 0 ;; + exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build @@ -521,16 +545,19 @@ exit(0); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 - rm -f $dummy.c $dummy && rmdir $tmpdir - echo rs6000-ibm-aix3.2.5 + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi - exit 0 ;; - *:AIX:*:[45]) + exit ;; + *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 @@ -543,28 +570,28 @@ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; + exit ;; *:AIX:*:*) echo rs6000-ibm-aix - exit 0 ;; + exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 - exit 0 ;; + exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 + exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx - exit 0 ;; + exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 - exit 0 ;; + exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd - exit 0 ;; + exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 - exit 0 ;; + exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in @@ -573,64 +600,84 @@ 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac + esac ;; + esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include <stdlib.h> + #include <unistd.h> - #define _HPUX_SOURCE - #include <stdlib.h> - #include <unistd.h> - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } EOF - (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`$dummy` - if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi - rm -f $dummy.c $dummy && rmdir $tmpdir + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; + exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} - exit 0 ;; + exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -658,186 +705,269 @@ exit (0); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 - rm -f $dummy.c $dummy && rmdir $tmpdir + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 - exit 0 ;; + exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd - exit 0 ;; + exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd - exit 0 ;; + exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix - exit 0 ;; + exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf - exit 0 ;; + exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf - exit 0 ;; + exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi - exit 0 ;; + exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites - exit 0 ;; + exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd - exit 0 ;; + exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit 0 ;; + exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd - exit 0 ;; + exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd - exit 0 ;; + exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd - exit 0 ;; + exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*T3D:*:*:*) - echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; + exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; + exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; + exit ;; *:FreeBSD:*:*) - # Determine whether the default compiler uses glibc. - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include <features.h> - #if __GLIBC__ >= 2 - LIBC=gnu - #else - LIBC= - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - rm -f $dummy.c && rmdir $tmpdir - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} - exit 0 ;; + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; - i*:MINGW*:*) + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; + exit ;; + i*:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 - exit 0 ;; - x86:Interix*:3*) - echo i386-pc-interix3 - exit 0 ;; + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? - echo i386-pc-interix - exit 0 ;; + echo i586-pc-interix + exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin - exit 0 ;; + exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; *:GNU:*:*) + # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix - exit 0 ;; + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabihf + fi + fi + exit ;; + avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - mips:Linux:*:*) + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU - #undef mips - #undef mipsel + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel + CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips + CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - rm -f $dummy.c && rmdir $tmpdir - test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0 + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit 0 ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit 0 ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit 0 ;; + or32:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in @@ -845,90 +975,71 @@ PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac - exit 0 ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit 0 ;; + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux - exit 0 ;; + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit 0 ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - # Set LC_ALL=C to ensure ld outputs messages in English. - ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit 0 ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include <features.h> - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #ifdef __INTEL_COMPILER - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - rm -f $dummy.c && rmdir $tmpdir - test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 - test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 - ;; + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 - exit 0 ;; + exit ;; i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. + # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then @@ -936,15 +1047,16 @@ else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi - exit 0 ;; - i*86:*:5:[78]*) + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit 0 ;; + exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` @@ -962,73 +1074,86 @@ else echo ${UNAME_MACHINE}-pc-sysv32 fi - exit 0 ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; + exit ;; pc:*:*:*) # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit 0 ;; + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 - exit 0 ;; + exit ;; paragon:*:*:*) echo i860-intel-osf1 - exit 0 ;; + exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi - exit 0 ;; + exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv - exit 0 ;; - M68*:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0) + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 - exit 0 ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; + exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 - exit 0 ;; + exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 - exit 0 ;; + exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` @@ -1036,61 +1161,97 @@ else echo ns32k-sni-sysv fi - exit 0 ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says <Ric...@cc...> - echo i586-unisys-sysv4 - exit 0 ;; + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says <Ric...@cc...> + echo i586-unisys-sysv4 + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes <he...@op...>. # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 - exit 0 ;; + exit ;; *:*:*:FTX*) # From se...@sw.... echo i860-stratus-sysv4 - exit 0 ;; + exit ;; + i*86:VOS:*:*) + # From Pau...@st.... + echo ${UNAME_MACHINE}-stratus-vos + exit ;; *:VOS:*:*) # From Pau...@st.... echo hppa1.1-stratus-vos - exit 0 ;; + exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; + exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 - exit 0 ;; + exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} + echo mips-nec-sysv${UNAME_RELEASE} else - echo mips-unknown-sysv${UNAME_RELEASE} + echo mips-unknown-sysv${UNAME_RELEASE} fi - exit 0 ;; + exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos - exit 0 ;; + exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos - exit 0 ;; + exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos - exit 0 ;; + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; + exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Darwin:*:*) - echo `uname -p`-apple-darwin${UNAME_RELEASE} - exit 0 ;; + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then @@ -1098,22 +1259,28 @@ UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit 0 ;; + exit ;; *:QNX:*:4*) echo i386-pc-qnx - exit 0 ;; - NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*) + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} - exit 0 ;; + exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux - exit 0 ;; + exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv - exit 0 ;; + exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 @@ -1124,41 +1291,55 @@ UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 - exit 0 ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit 0 ;; + exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 - exit 0 ;; + exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex - exit 0 ;; + exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 - exit 0 ;; + exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 - exit 0 ;; + exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 - exit 0 ;; + exit ;; *:ITS:*:*) echo pdp10-unknown-its - exit 0 ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit 0 ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit 0 ;; + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; esac -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - eval $set_cc_for_build cat >$dummy.c <<EOF #ifdef _SEQUENT_ @@ -1176,16 +1357,16 @@ #include <sys/param.h> printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 - "4" + "4" #else - "" + "" #endif - ); exit (0); + ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); + printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) @@ -1274,12 +1455,12 @@ } EOF -$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 -rm -f $dummy.c $dummy && rmdir $tmpdir +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) @@ -1288,22 +1469,22 @@ case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd - exit 0 ;; + exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit 0 ;; + exit ;; c34*) echo c34-convex-bsd - exit 0 ;; + exit ;; c38*) echo c38-convex-bsd - exit 0 ;; + exit ;; c4*) echo c4-convex-bsd - exit 0 ;; + exit ;; esac fi @@ -1314,7 +1495,9 @@ the operating system you are using. It is advised that you download the most up to date version of the config scripts from - ftp://ftp.gnu.org/pub/gnu/config/ + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +and + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD If the version you run ($0) is already up to date, please send the following data and any information you think might be diff -urN dump-0.4b44/config.sub dump-0.4b44-aarch64/config.sub --- dump-0.4b44/config.sub 2003-01-24 05:01:45.000000000 -0600 +++ dump-0.4b44-aarch64/config.sub 2013-03-03 04:18:12.791796588 -0600 @@ -1,9 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002 Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011, 2012 Free Software Foundation, Inc. -timestamp='2002-07-03' +timestamp='2012-10-10' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -20,23 +21,25 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - +# along with this program; if not, see <http://www.gnu.org/licenses/>. +# # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. + # Please send patches to <con...@gn...>. Submit a context -# diff and a properly formatted ChangeLog entry. +# diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. @@ -70,7 +73,8 @@ version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO @@ -83,11 +87,11 @@ while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; + echo "$timestamp" ; exit ;; --version | -v ) - echo "$version" ; exit 0 ;; + echo "$version" ; exit ;; --help | --h* | -h ) - echo "$usage"; exit 0 ;; + echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. @@ -99,7 +103,7 @@ *local*) # First pass through any local machine types. echo $1 - exit 0;; + exit ;; * ) break ;; @@ -118,10 +122,18 @@ # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu* | freebsd*-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*) + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] @@ -144,10 +156,13 @@ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis) + -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; + -bluegene*) + os=-cnk + ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 @@ -162,13 +177,17 @@ os=-chorusos basic_machine=$1 ;; - -chorusrdb) - os=-chorusrdb + -chorusrdb) + os=-chorusrdb basic_machine=$1 - ;; + ;; -hiux*) os=-hiuxwe2 ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` @@ -185,6 +204,10 @@ # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` @@ -202,6 +225,12 @@ -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; -lynx*) os=-lynxos ;; @@ -226,51 +255,103 @@ # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ + | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | be32 | be64 \ + | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ - | fr30 | frv \ + | epiphany \ + | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ | i370 | i860 | i960 | ia64 \ - | ip2k \ - | m32r | m68000 | m68k | m88k | mcore \ + | ip2k | iq2000 \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 \ | ns16k ... [truncated message content] |
From: Petr H. <ph...@re...> - 2013-04-16 19:06:00
|
Dear folks, regarding that BZ https://bugzilla.redhat.com/show_bug.cgi?id=759806 I would like to ask you whether dump support new e2fsprogs01.42 64bit feature. For files systems large than 16TB -- S pozdravem / Best regards Petr Hracek |
From: Marc T. <ma...@dr...> - 2013-03-06 17:44:22
|
Thanks- I'll pass that on to the Slackware devs. Kind Regards, Marc On 04/03/13 21:11, Phillip Susi wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > On 3/4/2013 3:42 PM, Marc Thomas wrote: >> I finally figured this out. On Slackware64 14.0 (and 13.37 most >> likely), in order to compile dump-0.4b44, one must: export >> EXT2FS_LIBS="-lext2fs -lcom_err" >> >> before building. It seems that configure now relies on the output >> of "pkg-config --libs <package>" to get some of the flags, and in >> my case the com_err library is never specified. FWIW, "pkg-config >> --libs ext2fs" returns: "-L/lib64 -lext2fs" on this system. > Then slackware's e2fsprogs-dev package is broken. Specifically it's > pkg-config file is missing that flag. > > This is probably due to the still somewhat recent changes in gcc. You > used to be able to get away with just linking to ext2fs, and gcc would > see that it imports com_err, and link that as well. This was a bug > and gcc no longer does this so you have to explicitly link the other lib. > > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2.0.17 (MingW32) > Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ > > iQEcBAEBAgAGBQJRNQ4cAAoJEJrBOlT6nu75pQIIAMvq0WPHbpeRAKgCmUIBEGMh > gAU5tjGsyVh2ABYWQp8H628C7f5eXyVnSn7gnEXSrAnBx79RdocHXGNieMVuAQ90 > VHLlQF4ZcRPQHY3etVKUUg6rxHZVmp+AaNMBaNzTPlt2iOY0jgx/kw8BcWQJ/HH8 > hnpVR3A5nunF+MtfPYWdxxEnfOm+D/SEbW29p6zSUJGwe/yXuMJ4l9PUB+/T9Xdf > JvXhlAH60UJgjFAh+4xU/s8lAN2PJegPRMwGJBgngLkUKSK4TvwZ2+qoMpTPAU2/ > TvYInKI8y5/v8vGlDObEp7ntnPBMGUa2aaZcD9qrVdQsI3L0WDenenw1S/+EWbY= > =7wrs > -----END PGP SIGNATURE----- > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_feb > _______________________________________________ > Dump-devel mailing list > Dum...@li... > https://lists.sourceforge.net/lists/listinfo/dump-devel > |
From: Phillip S. <ps...@ub...> - 2013-03-04 22:20:34
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 3/4/2013 3:42 PM, Marc Thomas wrote: > I finally figured this out. On Slackware64 14.0 (and 13.37 most > likely), in order to compile dump-0.4b44, one must: export > EXT2FS_LIBS="-lext2fs -lcom_err" > > before building. It seems that configure now relies on the output > of "pkg-config --libs <package>" to get some of the flags, and in > my case the com_err library is never specified. FWIW, "pkg-config > --libs ext2fs" returns: "-L/lib64 -lext2fs" on this system. Then slackware's e2fsprogs-dev package is broken. Specifically it's pkg-config file is missing that flag. This is probably due to the still somewhat recent changes in gcc. You used to be able to get away with just linking to ext2fs, and gcc would see that it imports com_err, and link that as well. This was a bug and gcc no longer does this so you have to explicitly link the other lib. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.17 (MingW32) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBAgAGBQJRNQ4cAAoJEJrBOlT6nu75pQIIAMvq0WPHbpeRAKgCmUIBEGMh gAU5tjGsyVh2ABYWQp8H628C7f5eXyVnSn7gnEXSrAnBx79RdocHXGNieMVuAQ90 VHLlQF4ZcRPQHY3etVKUUg6rxHZVmp+AaNMBaNzTPlt2iOY0jgx/kw8BcWQJ/HH8 hnpVR3A5nunF+MtfPYWdxxEnfOm+D/SEbW29p6zSUJGwe/yXuMJ4l9PUB+/T9Xdf JvXhlAH60UJgjFAh+4xU/s8lAN2PJegPRMwGJBgngLkUKSK4TvwZ2+qoMpTPAU2/ TvYInKI8y5/v8vGlDObEp7ntnPBMGUa2aaZcD9qrVdQsI3L0WDenenw1S/+EWbY= =7wrs -----END PGP SIGNATURE----- |
From: Marc T. <ma...@dr...> - 2013-03-04 20:57:10
|
I finally figured this out. On Slackware64 14.0 (and 13.37 most likely), in order to compile dump-0.4b44, one must: export EXT2FS_LIBS="-lext2fs -lcom_err" before building. It seems that configure now relies on the output of "pkg-config --libs <package>" to get some of the flags, and in my case the com_err library is never specified. FWIW, "pkg-config --libs ext2fs" returns: "-L/lib64 -lext2fs" on this system. Kind Regards, Marc On 30/07/12 19:06, Marc Thomas wrote: > Hi All, > > I've never had a problem building dump before, but 0.4b44 doesn't > compile for me. 0.4b43 builds fine - I just rebuilt it for a sanity check. > > Distribution: > Slackware Linux 13.37.0 > > Platform: > Linux anvil 2.6.37.6 #2 SMP Sat Apr 9 13:24:51 CDT 2011 x86_64 AMD > Phenom(tm) 9850 Quad-Core Processor AuthenticAMD GNU/Linux > > GCC version: > gcc (GCC) 4.5.2 > > Configure command: > ./configure --with-binowner=root --with-bingrp=root --with-manowner=root > --with-mangrp=root --mandir=/usr/local/man --disable-transselinux > > Failure log: > marc@anvil:~/xxBuildxx/dump/dump-0.4b44$ make > for i in compat/lib compat/include common dump restore rmt; do \ > (cd $i && make all) || exit 1; \ > done > make[1]: Entering directory > `/home/marc/xxBuildxx/dump/dump-0.4b44/compat/lib' > gcc -c -D_BSD_SOURCE -D_USE_BSD_SIGNAL -g -O2 -pipe -I../.. > -I../../compat/include -I/usr/include/ext2fs -I/usr/include/et > -I../../compat/include -DRDUMP -DRRESTORE -DLINUX_FORK_BUG -DHAVE_LZO > -D_PATH_DUMPDATES=\"/usr/local/etc/dumpdates\" > -D_DUMP_VERSION=\"0.4b44\" compaterr.c -o compaterr.o > gcc -c -D_BSD_SOURCE -D_USE_BSD_SIGNAL -g -O2 -pipe -I../.. > -I../../compat/include -I/usr/include/ext2fs -I/usr/include/et > -I../../compat/include -DRDUMP -DRRESTORE -DLINUX_FORK_BUG -DHAVE_LZO > -D_PATH_DUMPDATES=\"/usr/local/etc/dumpdates\" > -D_DUMP_VERSION=\"0.4b44\" compatglob.c -o compatglob.o > gcc -c -D_BSD_SOURCE -D_USE_BSD_SIGNAL -g -O2 -pipe -I../.. > -I../../compat/include -I/usr/include/ext2fs -I/usr/include/et > -I../../compat/include -DRDUMP -DRRESTORE -DLINUX_FORK_BUG -DHAVE_LZO > -D_PATH_DUMPDATES=\"/usr/local/etc/dumpdates\" > -D_DUMP_VERSION=\"0.4b44\" bylabel.c -o bylabel.o > gcc -c -D_BSD_SOURCE -D_USE_BSD_SIGNAL -g -O2 -pipe -I../.. > -I../../compat/include -I/usr/include/ext2fs -I/usr/include/et > -I../../compat/include -DRDUMP -DRRESTORE -DLINUX_FORK_BUG -DHAVE_LZO > -D_PATH_DUMPDATES=\"/usr/local/etc/dumpdates\" > -D_DUMP_VERSION=\"0.4b44\" system.c -o system.o > gcc -c -D_BSD_SOURCE -D_USE_BSD_SIGNAL -g -O2 -pipe -I../.. > -I../../compat/include -I/usr/include/ext2fs -I/usr/include/et > -I../../compat/include -DRDUMP -DRRESTORE -DLINUX_FORK_BUG -DHAVE_LZO > -D_PATH_DUMPDATES=\"/usr/local/etc/dumpdates\" > -D_DUMP_VERSION=\"0.4b44\" rmtflags.c -o rmtflags.o > gcc -c -D_BSD_SOURCE -D_USE_BSD_SIGNAL -g -O2 -pipe -I../.. > -I../../compat/include -I/usr/include/ext2fs -I/usr/include/et > -I../../compat/include -DRDUMP -DRRESTORE -DLINUX_FORK_BUG -DHAVE_LZO > -D_PATH_DUMPDATES=\"/usr/local/etc/dumpdates\" > -D_DUMP_VERSION=\"0.4b44\" minilzo.c -o minilzo.o > ar r libcompat.a compaterr.o compatglob.o bylabel.o system.o rmtflags.o > minilzo.o > ar: creating libcompat.a > ranlib libcompat.a > make[1]: Leaving directory > `/home/marc/xxBuildxx/dump/dump-0.4b44/compat/lib' > make[1]: Entering directory > `/home/marc/xxBuildxx/dump/dump-0.4b44/compat/include' > make[1]: Nothing to be done for `all'. > make[1]: Leaving directory > `/home/marc/xxBuildxx/dump/dump-0.4b44/compat/include' > make[1]: Entering directory `/home/marc/xxBuildxx/dump/dump-0.4b44/common' > gcc -c -D_BSD_SOURCE -D_USE_BSD_SIGNAL -g -O2 -pipe -I.. > -I../compat/include -I/usr/include/ext2fs -I/usr/include/et -I../dump > -DRDUMP -DRRESTORE -DLINUX_FORK_BUG -DHAVE_LZO > -D_PATH_DUMPDATES=\"/usr/local/etc/dumpdates\" > -D_DUMP_VERSION=\"0.4b44\" dumprmt.c -o dumprmt.o > make[1]: Leaving directory `/home/marc/xxBuildxx/dump/dump-0.4b44/common' > make[1]: Entering directory `/home/marc/xxBuildxx/dump/dump-0.4b44/dump' > gcc -c -D_BSD_SOURCE -D_USE_BSD_SIGNAL -g -O2 -pipe -I.. > -I../compat/include -I/usr/include/ext2fs -I/usr/include/et -I../dump > -DRDUMP -DRRESTORE -DLINUX_FORK_BUG -DHAVE_LZO > -D_PATH_DUMPDATES=\"/usr/local/etc/dumpdates\" > -D_DUMP_VERSION=\"0.4b44\" itime.c -o itime.o > gcc -c -D_BSD_SOURCE -D_USE_BSD_SIGNAL -g -O2 -pipe -I.. > -I../compat/include -I/usr/include/ext2fs -I/usr/include/et -I../dump > -DRDUMP -DRRESTORE -DLINUX_FORK_BUG -DHAVE_LZO > -D_PATH_DUMPDATES=\"/usr/local/etc/dumpdates\" > -D_DUMP_VERSION=\"0.4b44\" main.c -o main.o > gcc -c -D_BSD_SOURCE -D_USE_BSD_SIGNAL -g -O2 -pipe -I.. > -I../compat/include -I/usr/include/ext2fs -I/usr/include/et -I../dump > -DRDUMP -DRRESTORE -DLINUX_FORK_BUG -DHAVE_LZO > -D_PATH_DUMPDATES=\"/usr/local/etc/dumpdates\" > -D_DUMP_VERSION=\"0.4b44\" optr.c -o optr.o > gcc -c -D_BSD_SOURCE -D_USE_BSD_SIGNAL -g -O2 -pipe -I.. > -I../compat/include -I/usr/include/ext2fs -I/usr/include/et -I../dump > -DRDUMP -DRRESTORE -DLINUX_FORK_BUG -DHAVE_LZO > -D_PATH_DUMPDATES=\"/usr/local/etc/dumpdates\" > -D_DUMP_VERSION=\"0.4b44\" tape.c -o tape.o > gcc -c -D_BSD_SOURCE -D_USE_BSD_SIGNAL -g -O2 -pipe -I.. > -I../compat/include -I/usr/include/ext2fs -I/usr/include/et -I../dump > -DRDUMP -DRRESTORE -DLINUX_FORK_BUG -DHAVE_LZO > -D_PATH_DUMPDATES=\"/usr/local/etc/dumpdates\" > -D_DUMP_VERSION=\"0.4b44\" traverse.c -o traverse.o > gcc -c -D_BSD_SOURCE -D_USE_BSD_SIGNAL -g -O2 -pipe -I.. > -I../compat/include -I/usr/include/ext2fs -I/usr/include/et -I../dump > -DRDUMP -DRRESTORE -DLINUX_FORK_BUG -DHAVE_LZO > -D_PATH_DUMPDATES=\"/usr/local/etc/dumpdates\" > -D_DUMP_VERSION=\"0.4b44\" unctime.c -o unctime.o > gcc -o dump itime.o main.o optr.o tape.o traverse.o unctime.o > ../common/dumprmt.o -L../compat/lib -lcompat -L/lib64 -lext2fs -lz > -lbz2 -lblkid -luuid > main.o: In function `main': > /home/marc/xxBuildxx/dump/dump-0.4b44/dump/main.c:726: undefined > reference to `com_err' > /home/marc/xxBuildxx/dump/dump-0.4b44/dump/main.c:719: undefined > reference to `com_err' > tape.o: In function `doslave': > /home/marc/xxBuildxx/dump/dump-0.4b44/dump/tape.c:1197: undefined > reference to `error_message' > traverse.o: In function `dump_xattr': > /home/marc/xxBuildxx/dump/dump-0.4b44/dump/traverse.c:813: undefined > reference to `com_err' > traverse.o: In function `dumpdirino': > /home/marc/xxBuildxx/dump/dump-0.4b44/dump/traverse.c:1143: undefined > reference to `com_err' > traverse.o: In function `getino': > /home/marc/xxBuildxx/dump/dump-0.4b44/dump/traverse.c:1371: undefined > reference to `com_err' > traverse.o: In function `mapfilesfromdir': > /home/marc/xxBuildxx/dump/dump-0.4b44/dump/traverse.c:501: undefined > reference to `com_err' > traverse.o: In function `maponefile': > /home/marc/xxBuildxx/dump/dump-0.4b44/dump/traverse.c:411: undefined > reference to `com_err' > traverse.o:/home/marc/xxBuildxx/dump/dump-0.4b44/dump/traverse.c:340: > more undefined references to `com_err' follow > /lib64/libext2fs.a(ext2_err.o): In function `initialize_ext2_error_table': > ext2_err.c:(.text+0x83): undefined reference to `_et_list' > /lib64/libext2fs.a(alloc_stats.o): In function `ext2fs_inode_alloc_stats2': > alloc_stats.c:(.text+0x121): undefined reference to `com_err' > /lib64/libext2fs.a(alloc_stats.o): In function `ext2fs_block_alloc_stats': > alloc_stats.c:(.text+0x231): undefined reference to `com_err' > /lib64/libext2fs.a(gen_bitmap.o): In function `ext2fs_warn_bitmap2': > gen_bitmap.c:(.text+0x19f): undefined reference to `com_err' > gen_bitmap.c:(.text+0x1be): undefined reference to `com_err' > /lib64/libext2fs.a(bitops.o): In function `ext2fs_warn_bitmap': > bitops.c:(.text+0x9a): undefined reference to `com_err' > /lib64/libext2fs.a(bitops.o):bitops.c:(.text+0xb2): more undefined > references to `com_err' follow > collect2: ld returned 1 exit status > make[1]: *** [dump] Error 1 > make[1]: Leaving directory `/home/marc/xxBuildxx/dump/dump-0.4b44/dump' > make: *** [all] Error 1 > marc@anvil:~/xxBuildxx/dump/dump-0.4b44$ > > > Any ideas? > > TIA, > Marc > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Dump-users mailing list > Dum...@li... > https://lists.sourceforge.net/lists/listinfo/dump-users > |
From: Phillip S. <ps...@ub...> - 2013-02-03 04:42:17
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I have been testing using e2image vs tar vs dump | restore to clone an ext{234] partition lately, and found that dump|restore is significantly slower ( 15m vs 4m on my system ). It seems the slowness is on the restore side, rather than the dump side. Looking at the restore code, I think I have found the culprit. It appears that there is a "directory file" that is a temp file created during restoration, that contains fixed 1KiB records for every directory in the dump. It looks like this file mostly duplicates what the symtable does, only it is initialized first, then the symtable is built after, first based on this dirfile, then with the regular files added on top. Am I missing something or could this dirfile not be removed entirely and just use the symtable instead? -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with undefined - http://www.enigmail.net/ iQEcBAEBAgAGBQJRDd9KAAoJEJrBOlT6nu75oJIIAIixG3LYMvA6RJVGboT2RiQd Vyb04Z5tE3/JMi/h8TkKvtZQCmCgXv8hBb3R5VRekaEFf2B6ZTJcQqPIFF2cU3EZ vuCIYVEZ4Ear9y7ayywHYGF2CSrubz/4EXHvFofBIszO3mWKYMHJuCVvRJfDFfiY Y0GvgyyJa6ck9XW5EvyL/ae2OvlnoN09IytwYVmhXxcmJ2twu8NicJe4w4hXxePt 8opZxRaSXU3jLITT/wvsiZrpadhoyASkvffmPRPTsQ5A7rd6rzb69KLWodWU3f9J p/mx8+GSg4ESiKXUEWVqMicUKOh19dIG0G0GFk8AvfmV51Njsv1y+LFfLwRx69Y= =AHgW -----END PGP SIGNATURE----- |
From: Cory V. <vi...@gc...> - 2012-08-19 02:00:41
|
All: Is there any interest in integrating Lzip compression support into dump/restore? Does this compression method make sense to integrate? http://www.nongnu.org/lzip/lzip.html This compression method is specifically targeted toward data archiving, so my assumption is that it would also make sense integrate with dump. If this makes sense, should Lzip (based on LZMA) replace the LZO compression integration? They are similar. If there is interest, I would be willing to provide the patch. Thanks, -Cory Visi |
From: Phillip S. <ps...@ub...> - 2012-07-10 20:36:32
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 6/10/2011 8:43 AM, Stelian Pop wrote: > I've commited your patch in CVS. > > This was done post-0.4b44, so it will take a while before going out > in a "stable" release, so we should have plenty of time to test if > something broke. I noticed in the CHANGES file you wrote: Improve data throughput when using compression in dump by allowing multiple slaves to compress in parallel. Thanks to Phillip Susi <ps...@cf...> for the patch. Compression was already done in parallel, what I did was make the reading NOT be done in parallel because that usually slows things down. I have noticed that on a well aged and fragmented filesystem, the old way can be a little faster, I presume because the IO is more random and having multiple slaves generating IO concurrently gives the IO elevator more to work with so it can derandomize it some. On two unrelated notes: 1) I was wondering if you might consider upgrading to a modern VCS; CVS is just terrible. 2) I noticed that http://dump.sourceforge.net/ still says that the latest release is 0.4-b43. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.17 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJP/JJIAAoJEJrBOlT6nu752NkH/1q8rSsy8m7iU13eQ+C0n3ad gisaXFxTP+9/NeoxlXU9pUTcSxWvYqNCmEoDJrPVV/4klXex4IA0YGl8bPXT0Txc R3gfdzHGgeMVta+Er6A1akchokrmgLtBc/q1wu91yd+E2BxQtxeu2QYFN90tkK4I n+ls5GqMoSDQ+AdUUlW78o6o2zIV3I8ZcgIMBqB/GXY5CoNSV05+4/KmHLmEusIP axlz0lsamtsLcS3y2wMugwD8eFTRgp1oZdpSGJ8+Xfe1zd+GFwA4YJqK4Qs2OGsX NE1C8yzSv+WnyyCF+SkiVeywuRatlHCNSGeXaKhW1+a7EF4yQf7t+z1KtFqpFpc= =nsMF -----END PGP SIGNATURE----- |
From: Stelian P. <st...@po...> - 2011-06-10 12:43:58
|
Hi Phillip, On Thu, Jun 02, 2011 at 10:57:16AM -0400, Phillip Susi wrote: > I have managed to come up with a test patch to have the slaves use > SIGUSR1 to signal the next slave to start the read phase, and > continue to use SIGUSR2 to start the write phase. This has resulted > in double the throughput in my initial test, taking the time it > takes to dump ( to /dev/zero ) a 6.9/22gb fs with 386988 inodes from > 6 minutes 15 seconds to 3 minutes 3 seconds. [...] I've commited your patch in CVS. This was done post-0.4b44, so it will take a while before going out in a "stable" release, so we should have plenty of time to test if something broke. Thanks! Stelian. -- Stelian Pop <st...@po...> |
From: Phillip S. <ps...@cf...> - 2011-06-03 15:45:04
|
On 6/2/2011 10:57 AM, Phillip Susi wrote: > I have managed to come up with a test patch to have the slaves use > SIGUSR1 to signal the next slave to start the read phase, and continue > to use SIGUSR2 to start the write phase. This has resulted in double the > throughput in my initial test, taking the time it takes to dump ( to > /dev/zero ) a 6.9/22gb fs with 386988 inodes from 6 minutes 15 seconds > to 3 minutes 3 seconds. That test was done on a duplicated fs. Because it was recently duplicated for testing purposes, it had fairly low fragmentation. I decided to do some further tests, starting with the original aged and fragmented filesystem. All tests done using -b 1024 after dropping cache. Without patch: 18m 48s With patch: 8m 35s When using compression ( -z, old slow single core cpu ) on the duplicate (defragged) fs: Without patch: 8m 51s With patch: 9m 55s When using compression ( -z ) on the original fs: Without patch: 20m 51s ( 8m 5s cpu time ) With patch: 13m 52s ( 9m 12s cpu time ) When using compression and writing the output to an actual file instead of /dev/zero, on the duplicate fs: Without patch: 9m 41s With patch: 10m 12s And on the original fs: Without patch: 23m 22s With patch: 15m 55s Time to duplicate the original fs using dump | restore: Without patch: 34m 50s With patch: 25m 35s I have no idea why the patch seems to cause a slight slow down when using compression on the defragged fs, but a significant speed up otherwise. |
From: Phillip S. <ps...@cf...> - 2011-06-02 14:57:25
|
I have managed to come up with a test patch to have the slaves use SIGUSR1 to signal the next slave to start the read phase, and continue to use SIGUSR2 to start the write phase. This has resulted in double the throughput in my initial test, taking the time it takes to dump ( to /dev/zero ) a 6.9/22gb fs with 386988 inodes from 6 minutes 15 seconds to 3 minutes 3 seconds. |
From: Phillip S. <ps...@cf...> - 2011-06-02 02:40:42
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Dump throughput seems to suffer significantly because each of the 3 slaves are simultaneously trying to read from the disk, causing unnecessary seeking. I'm a little unsure of how to fix the problem though. Right now, each slave reads the data blocks, then optionally compresses, then waits for the signal from the previous slave to write it to the output. Instead, I think it needs to be signaled when it is time to start reading, do the reading, signal the next slave to read, optionally do the compression, then wait to be signaled to do the writing. That way multiple slaves can be compressing at the same time, but only one can be reading or writing at a time. Right now it uses SIGUSR2 to notify the next slave to proceed, but two signals can not be queued at the same time. Should it also use SIGUSR1 for the other signal, or is there a better way than signals to notify the next slave to proceed? -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk3m+CEACgkQJ4UciIs+XuK9RQCeKwhAP/2p04E0SXIKK31aHpQm ookAoIniqonMY1/Z8Cl6LrOqHVXMu2M7 =IE+2 -----END PGP SIGNATURE----- |
From: Stelian P. <st...@po...> - 2011-05-24 18:07:01
|
On Tue, May 24, 2011 at 10:16:44AM -0400, Phillip Susi wrote: > On 5/23/2011 4:26 AM, Stelian Pop wrote: > >Ok, so this is not a problem with dump | restore, but with > >dump -b 1024 | restore. > > > >If you change the default blocksize in dump, you should do the > >same in restore. You'll find out that dump -b 1024 | restore -b 1024 > >works fine. > > I thought that restore was supposed to automatically detect the block size? Well, the man page states: "If the -b option is not specified, restore tries to determine the media block size dynamically." Emphasise on "tries". In fact, the "original" (read: cross-platform, BSD compatible) dump format does not have the blocksize information in the header. Linux' dump does have it, but it was added along with the compression abilities, this is why the blocksize information from the header is only used when the dump is compressed. Stelian. -- Stelian Pop <st...@po...> |
From: Phillip S. <ps...@cf...> - 2011-05-24 14:16:59
|
On 5/23/2011 4:26 AM, Stelian Pop wrote: > Ok, so this is not a problem with dump | restore, but with > dump -b 1024 | restore. > > If you change the default blocksize in dump, you should do the > same in restore. You'll find out that dump -b 1024 | restore -b 1024 > works fine. I thought that restore was supposed to automatically detect the block size? |
From: Stelian P. <st...@po...> - 2011-05-23 08:42:24
|
On Fri, May 20, 2011 at 11:44:59AM -0400, Phillip Susi wrote: > Did you intend to take this off list for some reason? No, sorry, MUA error. Adding back the CC: > On 5/20/2011 6:00 AM, Stelian Pop wrote: > >On Tue, May 10, 2011 at 10:01:02AM -0400, Phillip Susi wrote: > > > >>When running dump | restore, dump gets a SIGPIPE at the end and aborts. > > > >Can you post a log of this problem, because it works fine for me. > > root@iridev-svr1:/mnt# dump -0 -b 1024 -f - /dev/vg0/snap | restore -r -f - Ok, so this is not a problem with dump | restore, but with dump -b 1024 | restore. If you change the default blocksize in dump, you should do the same in restore. You'll find out that dump -b 1024 | restore -b 1024 works fine. Stelian. -- Stelian Pop <st...@po...> |
From: Phillip S. <ps...@cf...> - 2011-05-10 14:01:12
|
When running dump | restore, dump gets a SIGPIPE at the end and aborts. I think the correct fix is to make sure that restore continues to read from the pipe until EOF ( still looking in the code for that ). I guess that right now restore stops and exits when it sees the end of tape record or maybe when it gets the final inode. Would this be correct, and does anyone have a hint about where that fix is needed? |
From: Stelian P. <st...@po...> - 2010-06-10 12:02:35
|
On Thu, May 06, 2010 at 04:33:14PM +0200, Andreas Kies wrote: > Level 0 dumps are really fast. But a level 1 dump takes half an hour for > estimation here. CPU load is 100% after a few minutes. > It took me some time to find the bottle neck. Finding directories that need > not to be dumped takes a long time. > By rearranging just one line of code "mapdirs" is speed up by a factor of 100, > at least in my environment. it might not give the same improvement on all > platform, but on ix86 and gcc 4.3 it works great. Hi, Sorry for the delay, I applied your patch (a little bit modified) in CVS. Thanks ! Stelian. -- Stelian Pop <st...@po...> |
From: Phillip S. <ps...@cf...> - 2010-04-27 15:44:14
|
On 4/26/2010 5:18 PM, Kenneth Porter wrote: >> The archives show almost no activity on this list for some time, so I >> hope this finds its way to someone. > > That's likely an indication that those of us who use dump find it very > stable and have nothing to complain about. (At least, that we're willing to > put effort into fixing. ;)) > > I'll leave it to Stelian to explain the architecture. Heheh. I find it quite nice as well, but have been investigating how it works to see if I can make it faster on modern hardware, since the code is SO old. After parsing the code a lot more and walking through it a bit with gdb ( NOT easy when it uses multiple processes... gdb tends to get confused ) it seems that it has a master process and 3 slave processes. The master walks the inodes to be dumped, adds a 1kb inode record to the queue, then adds each of the 4kb disk blocks to the queue one at a time until the queue is full. More specifically, it adds the block number to the queue rather than actually reading the block. The size of the queue depends on the -b parameter, which defaults to only 10. Special blocks, like the inode header, are stored in another buffer, and the data blocks have their numbers stored in the queue. When the queue is full it is sent to a slave via a socketpair() as well as any of the queued special blocks. The slave walks the request list either reading the 1kb special block from the socket, or reading blocks from disk until it has assembled the entire -b size record. Then it optionally compresses the record and writes it to tape. At first I was using -b 64 -z9 and when I tried -b 1024 -z9, both of my cpu cores went to 100% for a long time to complete the dump and temperatures got rather high. Now that I understand what is going on, this seems to simply be a result of gzip actually being able to do much compression. See, with -z9, gzip tries to use a 900kb tree to hold recently repeated phrases. That doesn't do much good when you are only compressing 64kb at a time. It ran rather fast since with only 64k of input, the tree never gets very full. Once I switched to -b 1024, gzip had some real data to work with, filled the tree, and slowed down, though also getting better compression in the process. I may just try using -z3 in the future which seems to use much less cpu and compress almost as well with -b 1024. I noticed that the slave was only reading one 4kb block at a time, so I experimented a bit last night with having dumpblock() try to combine the new block with the last one in the request queue ( if they are contiguous ) to try to generate larger block read requests. This seemed to give me about 5-10% better throughput when dumping my root on an ssd to /dev/null. I also realized that the slave was leaving the special records sitting in the socket while reading disk blocks, so I changed that code to make two passes over the request queue and only read from the socket in the first pass, then go back and read the disk blocks. This seems to have gained another 5-10%. Unfortunately, it does not combine nearly as many large requests as it could, because if two different inodes happen to follow one another on the disk, they still have their inode special record inserted between them in the dump record, so the blocks can not be read into the dump record all at once. I'm mulling over a few more radical changes to speed things up, as I feel it could go quite a bit faster than it does now: First, why are the slaves completely separate processes that have their commands and any special blocks passed to them via socket? It would be better if the slaves were just threads that could directly access the request and special block buffers without the bother of copying them to kernel socket buffers and back. Second, why write the dump output as inode, data, inode, data, etc. instead of inode, inode, inode, data, data, data? It could be quite a bit faster to dump all of the inodes first, building block maps of them on the way, THEN go back and dump the data blocks. This would make parsing the dump file to find what files are in it much faster since it would only have to read the first part with all of the inodes in it, and not bother with the rest of the data, and dumping should be faster since it can walk the entire inode table in one go, then all of the data blocks ( combining sequential ones into larger reads ) in one go. Finally, this could be combined with O_DIRECT and aio to get rid of the time spent in the kernel copying data between buffer cache and the dump record buffer, and stop the kernel readahead from picking up data from the disk that isn't needed, and creating memory pressure in the buffer cache. I have just now also been looking at the TS_ADDR record. It looks like it has one byte per block in a file that is set to 0 or 1 to indicate whether the block actually exists and is present, or if it was a hole. Wouldn't it be better if this were instead an array of { blockno, count, present }? In fact present could probably be encoded in the high order bit of count, so count would be 100 for 100 actual blocks or -100 for a hole of 100 missing blocks. That way you would not need an additional TS_ADDR record for every 2mb of a file 2mb or larger where half of it is redundant information every special record contains about the entire volume, and the other half is just filled with 0x01. |