summaryrefslogtreecommitdiff
path: root/package/xfsprogs
diff options
context:
space:
mode:
Diffstat (limited to 'package/xfsprogs')
-rw-r--r--package/xfsprogs/Makefile2
-rw-r--r--package/xfsprogs/patches/patch-configure352
-rw-r--r--package/xfsprogs/patches/patch-copy_xfs_copy_c82
-rw-r--r--package/xfsprogs/patches/patch-fsr_xfs_fsr_c57
-rw-r--r--package/xfsprogs/patches/patch-libxfs_linux_c35
5 files changed, 527 insertions, 1 deletions
diff --git a/package/xfsprogs/Makefile b/package/xfsprogs/Makefile
index 6afc5e705..9f5b2ee38 100644
--- a/package/xfsprogs/Makefile
+++ b/package/xfsprogs/Makefile
@@ -22,7 +22,7 @@ include ${TOPDIR}/mk/package.mk
$(eval $(call PKG_template,XFSPROGS,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
INSTALL_STYLE:= manual
-
+TARGET_LDFLAGS+= -lrt
CONFIGURE_ARGS+= --enable-gettext=no \
--with-gnu-ld
CONFIGURE_ENV+= DEBUG=" " OPTIMIZER=" "
diff --git a/package/xfsprogs/patches/patch-configure b/package/xfsprogs/patches/patch-configure
new file mode 100644
index 000000000..24d7f645e
--- /dev/null
+++ b/package/xfsprogs/patches/patch-configure
@@ -0,0 +1,352 @@
+--- xfsprogs-3.1.4.orig/configure 2010-11-11 18:38:31.000000000 +0100
++++ xfsprogs-3.1.4/configure 2011-01-22 19:33:52.458658054 +0100
+@@ -12604,349 +12604,6 @@ fi
+
+
+
+-for ac_header in aio.h
+-do
+-as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+-$as_echo_n "checking for $ac_header... " >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- $as_echo_n "(cached) " >&6
+-fi
+-ac_res=`eval 'as_val=${'$as_ac_Header'}
+- $as_echo "$as_val"'`
+- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+-$as_echo "$ac_res" >&6; }
+-else
+- # Is the header compilable?
+-{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
+-$as_echo_n "checking $ac_header usability... " >&6; }
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-$ac_includes_default
+-#include <$ac_header>
+-_ACEOF
+-rm -f conftest.$ac_objext
+-if { (ac_try="$ac_compile"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+-$as_echo "$ac_try_echo") >&5
+- (eval "$ac_compile") 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } && {
+- test -z "$ac_c_werror_flag" ||
+- test ! -s conftest.err
+- } && test -s conftest.$ac_objext; then
+- ac_header_compiler=yes
+-else
+- $as_echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- ac_header_compiler=no
+-fi
+-
+-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+-{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+-$as_echo "$ac_header_compiler" >&6; }
+-
+-# Is the header present?
+-{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
+-$as_echo_n "checking $ac_header presence... " >&6; }
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-#include <$ac_header>
+-_ACEOF
+-if { (ac_try="$ac_cpp conftest.$ac_ext"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+-$as_echo "$ac_try_echo") >&5
+- (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } >/dev/null && {
+- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+- test ! -s conftest.err
+- }; then
+- ac_header_preproc=yes
+-else
+- $as_echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- ac_header_preproc=no
+-fi
+-
+-rm -f conftest.err conftest.$ac_ext
+-{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+-$as_echo "$ac_header_preproc" >&6; }
+-
+-# So? What about this header?
+-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+- yes:no: )
+- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+-$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+-$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+- ac_header_preproc=yes
+- ;;
+- no:yes:* )
+- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+-$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+-$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+-$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+-$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+-$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+- { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+-$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+-
+- ;;
+-esac
+-{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
+-$as_echo_n "checking for $ac_header... " >&6; }
+-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+- $as_echo_n "(cached) " >&6
+-else
+- eval "$as_ac_Header=\$ac_header_preproc"
+-fi
+-ac_res=`eval 'as_val=${'$as_ac_Header'}
+- $as_echo "$as_val"'`
+- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+-$as_echo "$ac_res" >&6; }
+-
+-fi
+-as_val=`eval 'as_val=${'$as_ac_Header'}
+- $as_echo "$as_val"'`
+- if test "x$as_val" = x""yes; then
+- cat >>confdefs.h <<_ACEOF
+-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+-_ACEOF
+-
+-fi
+-
+-done
+-
+- if test $ac_cv_header_aio_h = no; then
+- echo
+- echo 'FATAL ERROR: could not find a valid <aio.h> header.'
+- exit 1
+- fi
+-
+-
+-for ac_func in lio_listio
+-do
+-as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+-{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
+-$as_echo_n "checking for $ac_func... " >&6; }
+-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+- $as_echo_n "(cached) " >&6
+-else
+- cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+- For example, HP-UX 11i <limits.h> declares gettimeofday. */
+-#define $ac_func innocuous_$ac_func
+-
+-/* System header to define __stub macros and hopefully few prototypes,
+- which can conflict with char $ac_func (); below.
+- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+- <limits.h> exists even on freestanding compilers. */
+-
+-#ifdef __STDC__
+-# include <limits.h>
+-#else
+-# include <assert.h>
+-#endif
+-
+-#undef $ac_func
+-
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char $ac_func ();
+-/* The GNU C library defines this for functions which it implements
+- to always fail with ENOSYS. Some functions are actually named
+- something starting with __ and the normal name is an alias. */
+-#if defined __stub_$ac_func || defined __stub___$ac_func
+-choke me
+-#endif
+-
+-int
+-main ()
+-{
+-return $ac_func ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+-$as_echo "$ac_try_echo") >&5
+- (eval "$ac_link") 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } && {
+- test -z "$ac_c_werror_flag" ||
+- test ! -s conftest.err
+- } && test -s conftest$ac_exeext && {
+- test "$cross_compiling" = yes ||
+- $as_test_x conftest$ac_exeext
+- }; then
+- eval "$as_ac_var=yes"
+-else
+- $as_echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- eval "$as_ac_var=no"
+-fi
+-
+-rm -rf conftest.dSYM
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+- conftest$ac_exeext conftest.$ac_ext
+-fi
+-ac_res=`eval 'as_val=${'$as_ac_var'}
+- $as_echo "$as_val"'`
+- { $as_echo "$as_me:$LINENO: result: $ac_res" >&5
+-$as_echo "$ac_res" >&6; }
+-as_val=`eval 'as_val=${'$as_ac_var'}
+- $as_echo "$as_val"'`
+- if test "x$as_val" = x""yes; then
+- cat >>confdefs.h <<_ACEOF
+-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+-_ACEOF
+-
+-fi
+-done
+-
+- if test $ac_cv_func_lio_listio = yes; then
+- librt=""
+- else
+-
+-{ $as_echo "$as_me:$LINENO: checking for lio_listio in -lrt" >&5
+-$as_echo_n "checking for lio_listio in -lrt... " >&6; }
+-if test "${ac_cv_lib_rt_lio_listio+set}" = set; then
+- $as_echo_n "(cached) " >&6
+-else
+- ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lrt -lpthread $LIBS"
+-cat >conftest.$ac_ext <<_ACEOF
+-/* confdefs.h. */
+-_ACEOF
+-cat confdefs.h >>conftest.$ac_ext
+-cat >>conftest.$ac_ext <<_ACEOF
+-/* end confdefs.h. */
+-
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char lio_listio ();
+-int
+-main ()
+-{
+-return lio_listio ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-rm -f conftest.$ac_objext conftest$ac_exeext
+-if { (ac_try="$ac_link"
+-case "(($ac_try" in
+- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+- *) ac_try_echo=$ac_try;;
+-esac
+-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
+-$as_echo "$ac_try_echo") >&5
+- (eval "$ac_link") 2>conftest.er1
+- ac_status=$?
+- grep -v '^ *+' conftest.er1 >conftest.err
+- rm -f conftest.er1
+- cat conftest.err >&5
+- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+- (exit $ac_status); } && {
+- test -z "$ac_c_werror_flag" ||
+- test ! -s conftest.err
+- } && test -s conftest$ac_exeext && {
+- test "$cross_compiling" = yes ||
+- $as_test_x conftest$ac_exeext
+- }; then
+- ac_cv_lib_rt_lio_listio=yes
+-else
+- $as_echo "$as_me: failed program was:" >&5
+-sed 's/^/| /' conftest.$ac_ext >&5
+-
+- ac_cv_lib_rt_lio_listio=no
+-fi
+-
+-rm -rf conftest.dSYM
+-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+- conftest$ac_exeext conftest.$ac_ext
+-LIBS=$ac_check_lib_save_LIBS
+-fi
+-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_rt_lio_listio" >&5
+-$as_echo "$ac_cv_lib_rt_lio_listio" >&6; }
+-if test "x$ac_cv_lib_rt_lio_listio" = x""yes; then
+- cat >>confdefs.h <<_ACEOF
+-#define HAVE_LIBRT 1
+-_ACEOF
+-
+- LIBS="-lrt $LIBS"
+-
+-else
+-
+- echo
+- echo 'FATAL ERROR: could not find a library with lio_listio.'
+- exit 1
+-fi
+-
+- librt="-lrt"
+- fi
+-
+-
+-
+-
+-
+-
+ for ac_header in uuid.h sys/uuid.h uuid/uuid.h
+ do
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
diff --git a/package/xfsprogs/patches/patch-copy_xfs_copy_c b/package/xfsprogs/patches/patch-copy_xfs_copy_c
new file mode 100644
index 000000000..5640d0625
--- /dev/null
+++ b/package/xfsprogs/patches/patch-copy_xfs_copy_c
@@ -0,0 +1,82 @@
+--- xfsprogs-3.1.4.orig/copy/xfs_copy.c 2010-01-29 20:46:13.000000000 +0100
++++ xfsprogs-3.1.4/copy/xfs_copy.c 2011-01-22 20:44:49.478658642 +0100
+@@ -240,6 +240,10 @@ handler(int sig)
+ {
+ pid_t pid = getpid();
+ int status, i;
++ struct sigaction action;
++
++ action.sa_handler = handler;
++ action.sa_flags = 0;
+
+ pid = wait(&status);
+
+@@ -272,7 +276,7 @@ handler(int sig)
+ pthread_exit(NULL);
+ }
+
+- signal(SIGCHLD, handler);
++ sigaction(SIGCHLD, &action, NULL);
+ return;
+ } else {
+ /* it just croaked it bigtime, log it */
+@@ -294,7 +298,7 @@ handler(int sig)
+ do_warn(_("%s: Unknown child died (should never happen!)\n"), progname);
+ die_perror();
+ pthread_exit(NULL);
+- signal(SIGCHLD, handler);
++ sigaction(SIGCHLD, &action, NULL);
+ }
+
+ void
+@@ -467,6 +471,11 @@ void
+ write_wbuf(void)
+ {
+ int i;
++ sigset_t unblock, initial;
++
++ sigemptyset(&unblock);
++ sigaddset(&unblock, SIGCHLD);
++
+
+ /* verify target threads */
+ for (i = 0; i < num_targets; i++)
+@@ -478,9 +487,9 @@ write_wbuf(void)
+ if (target[i].state != INACTIVE)
+ pthread_mutex_unlock(&targ[i].wait); /* wake up */
+
+- sigrelse(SIGCHLD);
++ sigprocmask(SIG_UNBLOCK, &unblock, &initial);
+ pthread_mutex_lock(&mainwait);
+- sighold(SIGCHLD);
++ sigprocmask(SIG_SETMASK, &initial, NULL);
+ }
+
+
+@@ -521,6 +530,12 @@ main(int argc, char **argv)
+ libxfs_init_t xargs;
+ thread_args *tcarg;
+ struct stat64 statbuf;
++ struct sigaction saction;
++ sigset_t sigblock, initial;
++
++ saction.sa_handler = handler;
++ saction.sa_flags = 0;
++
+
+ progname = basename(argv[0]);
+
+@@ -846,8 +861,11 @@ main(int argc, char **argv)
+
+ /* set up sigchild signal handler */
+
+- signal(SIGCHLD, handler);
+- sighold(SIGCHLD);
++ sigaction(SIGCHLD, &saction, NULL);
++ sigemptyset(&sigblock);
++ sigaddset(&sigblock, SIGCHLD);
++ sigprocmask(SIG_BLOCK, &sigblock, &initial);
++
+
+ /* make children */
+
diff --git a/package/xfsprogs/patches/patch-fsr_xfs_fsr_c b/package/xfsprogs/patches/patch-fsr_xfs_fsr_c
new file mode 100644
index 000000000..5093c2924
--- /dev/null
+++ b/package/xfsprogs/patches/patch-fsr_xfs_fsr_c
@@ -0,0 +1,57 @@
+--- xfsprogs-3.1.4.orig/fsr/xfs_fsr.c 2010-10-01 19:33:38.000000000 +0200
++++ xfsprogs-3.1.4/fsr/xfs_fsr.c 2011-01-22 20:34:12.465325200 +0100
+@@ -35,7 +35,6 @@
+ #include <sys/wait.h>
+ #include <sys/vfs.h>
+ #include <sys/statvfs.h>
+-#include <sys/xattr.h>
+
+
+ #ifndef XFS_XFLAG_NODEFRAG
+@@ -1003,6 +1002,7 @@ fsr_setup_attr_fork(
+ * use the old method if we have attr1 or the kernel does not yet
+ * support passing the fork offset in the bulkstat data.
+ */
++#if 0
+ if (!(fsgeom.flags & XFS_FSOP_GEOM_FLAGS_ATTR2) ||
+ bstatp->bs_forkoff == 0) {
+ /* attr1 */
+@@ -1013,6 +1013,7 @@ fsr_setup_attr_fork(
+ }
+ goto out;
+ }
++#endif
+
+ /* attr2 w/ fork offsets */
+
+@@ -1050,6 +1051,7 @@ fsr_setup_attr_fork(
+ * If there is no attribute, then we need to create one to get
+ * an attribute fork at the default location.
+ */
++#if 0
+ if (!tbstat.bs_forkoff) {
+ ret = fsetxattr(tfd, name, "XX", 2, XATTR_CREATE);
+ if (ret) {
+@@ -1058,7 +1060,7 @@ fsr_setup_attr_fork(
+ }
+ continue;
+ }
+-
++#endif
+ /*
+ * make a progress check so we don't get stuck trying to extend
+ * a large btree form attribute fork.
+@@ -1097,11 +1099,13 @@ fsr_setup_attr_fork(
+ }
+
+ /* we need to grow the attr fork, so create another attr */
++#if 0
+ ret = fsetxattr(tfd, name, "XX", 2, XATTR_CREATE);
+ if (ret) {
+ fsrprintf(_("could not set ATTR\n"));
+ return -1;
+ }
++#endif
+
+ } while (++i < 100); /* don't go forever */
+
diff --git a/package/xfsprogs/patches/patch-libxfs_linux_c b/package/xfsprogs/patches/patch-libxfs_linux_c
new file mode 100644
index 000000000..586dab521
--- /dev/null
+++ b/package/xfsprogs/patches/patch-libxfs_linux_c
@@ -0,0 +1,35 @@
+--- xfsprogs-3.1.4.orig/libxfs/linux.c 2010-01-29 20:46:13.000000000 +0100
++++ xfsprogs-3.1.4/libxfs/linux.c 2011-01-22 20:27:29.458658270 +0100
+@@ -16,12 +16,10 @@
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+-#define ustat __kernel_ustat
+ #include <xfs/libxfs.h>
+ #include <mntent.h>
+ #include <sys/stat.h>
+-#undef ustat
+-#include <sys/ustat.h>
++#include <sys/statvfs.h>
+ #include <sys/mount.h>
+ #include <sys/ioctl.h>
+ #include <sys/sysinfo.h>
+@@ -49,8 +47,7 @@ static int max_block_alignment;
+ int
+ platform_check_ismounted(char *name, char *block, struct stat64 *s, int verbose)
+ {
+- /* Pad ust; pre-2.6.28 linux copies out too much in 32bit compat mode */
+- struct ustat ust[2];
++ struct statvfs info;
+ struct stat64 st;
+
+ if (!s) {
+@@ -61,7 +58,7 @@ platform_check_ismounted(char *name, cha
+ s = &st;
+ }
+
+- if (ustat(s->st_rdev, ust) >= 0) {
++ if (statvfs(name, &info) >= 0) {
+ if (verbose)
+ fprintf(stderr,
+ _("%s: %s contains a mounted filesystem\n"),