summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--MCONFIG.in4
-rw-r--r--Makefile.in3
-rw-r--r--RELEASE-NOTES89
-rw-r--r--aclocal.m445
-rwxr-xr-xconfigure271
-rw-r--r--configure.in74
-rwxr-xr-xcontrib/python-uuid/setup.py11
-rwxr-xr-xcontrib/python-uuid/test.py18
-rw-r--r--contrib/python-uuid/uuid.c23
-rw-r--r--debian/changelog37
-rw-r--r--debian/control6
-rw-r--r--debian/libuuid1.postinst1
-rwxr-xr-xdebian/rules49
-rw-r--r--debian/uuid-runtime.postinst1
-rw-r--r--debugfs/lsdel.c31
-rw-r--r--doc/libext2fs.texinfo8
-rw-r--r--e2fsck/Makefile.in14
-rw-r--r--e2fsck/super.c34
-rw-r--r--e2fsprogs.lsm10
-rw-r--r--e2fsprogs.spec.in31
-rw-r--r--lib/Makefile.bsd-lib4
-rw-r--r--lib/Makefile.checker2
-rw-r--r--lib/Makefile.darwin-lib2
-rw-r--r--lib/Makefile.profile4
-rw-r--r--lib/Makefile.solaris-lib2
-rw-r--r--lib/blkid/llseek.c4
-rw-r--r--lib/blkid/probe.c128
-rw-r--r--lib/blkid/probe.h100
-rw-r--r--lib/e2p/ls.c8
-rw-r--r--lib/ext2fs/ext2_fs.h4
-rw-r--r--lib/ext2fs/initialize.c1
-rw-r--r--lib/ext2fs/llseek.c4
-rw-r--r--lib/uuid/gen_uuid.c3
-rw-r--r--misc/e2image.c3
-rw-r--r--misc/mke2fs.8.in4
-rw-r--r--misc/mke2fs.c15
-rw-r--r--misc/mke2fs.conf8
-rw-r--r--misc/tune2fs.8.in19
-rw-r--r--misc/tune2fs.c68
-rw-r--r--misc/uuidd.8.in4
-rw-r--r--po/sv.gmobin82945 -> 84434 bytes
-rw-r--r--po/sv.po177
-rw-r--r--resize/main.c6
-rw-r--r--resize/resize2fs.8.in2
-rw-r--r--tests/m_dasd_bs/expect.14
-rw-r--r--tests/m_large_file/expect.119
-rw-r--r--tests/m_meta_bg/expect.14
-rw-r--r--tests/m_raid_opt/expect.14
-rw-r--r--tests/m_std/expect.14
-rw-r--r--tests/r_move_itable/expect8
-rw-r--r--tests/r_resize_inode/expect6
-rw-r--r--version.h4
53 files changed, 1070 insertions, 316 deletions
diff --git a/.gitignore b/.gitignore
index bac0892c..e52523f4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -112,3 +112,4 @@ tests/progs/test_icount_cmds.c
util/gen-tarball
util/subst
util/subst.conf
+Meta
diff --git a/MCONFIG.in b/MCONFIG.in
index c3e7685a..8cd2ccfc 100644
--- a/MCONFIG.in
+++ b/MCONFIG.in
@@ -76,8 +76,8 @@ LIBSS = $(LIB)/libss@LIB_EXT@
LIBCOM_ERR = $(LIB)/libcom_err@LIB_EXT@
LIBE2P = $(LIB)/libe2p@LIB_EXT@
LIBEXT2FS = $(LIB)/libext2fs@LIB_EXT@
-LIBUUID = $(LIB)/libuuid@LIB_EXT@ @SOCKET_LIB@
-LIBBLKID = $(LIB)/libblkid@LIB_EXT@
+LIBUUID = $(LIB)/libuuid@LIB_EXT@ @SOCKET_LIB@
+LIBBLKID = $(LIB)/libblkid@LIB_EXT@ @STATIC_BLKID_DEVMAPPER_LIBS@
LIBINTL = @LIBINTL@
DEPLIBUUID = $(LIB)/libuuid@LIB_EXT@
DEPLIBBLKID = $(LIB)/libblkid@LIB_EXT@
diff --git a/Makefile.in b/Makefile.in
index 53ca5265..47560fd9 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -99,8 +99,9 @@ mostlyclean: mostlyclean-recursive mostlyclean-local
clean: clean-recursive clean-local clean-doc
$(RM) -f $(SUBS)
-distclean: distclean-doc distclean-recursive distclean-local
+distclean: distclean-doc distclean-recursive
$(RM) -rf autom4te.cache e2fsprogs.spec ext2ed/Makefile po/stamp-po
+ $(MAKE) distclean-local
realclean: realclean-recursive realclean-local
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 46ef2be0..538d879b 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,3 +1,92 @@
+E2fsprogs 1.40.5 (January 27, 2008)
+===================================
+
+Fix a potential overflow big in e2image if the device name is too
+long.
+
+Mke2fs will now create new filesystems with 256 byte inodes and the
+ext_attr feature flag by default. This allows for much better future
+compatibity with ext4 and speeds up extended attributes even on ext3
+filesystems.
+
+Teach e2fsck to ignore certain "safe" filesystem features which are
+set automatically by the kernel. Having the kernel set features
+automagically behind the user's back is a bad idea, and we should try
+to break the kernel of this habit, especially for the newer ext4
+feature flags. But for now, we will try to avoid needless full checks
+which can annoy users who are doing fresh installs.
+
+Add support in tune2fs and mke2fs for making a filesystem as being "ok
+to be used with test kernel code". This will be needed for using test
+filesystems with the latest ext4 kernel code.
+
+Change e2fsck -fD so that it sorts non-htree directories by inode
+numbers instead of by name, since that optimizes performances much
+more significantly. (Addresses-Sourceforge-Feature-Request: #532439)
+
+If e2image fills the disk, fix it so it exits right away instead of
+spewing large numbers of error messages.
+(Addresses-Sourceforge-Feature-Request: #606508)
+
+If ftruncate64() is not available for resize2fs, let it use ftrucate()
+instead, but have it check to see if the size would get truncated, and
+skip calling ftruncate in that case.
+
+Add support for detecting HFS+ filesystems in the blkid library.
+
+Add supprt in the blkid library for ext4/ext4dev filesystems.
+
+Fix a bug in blkid where it could die on a floating point exception
+when presented with a corrupt reiserfs image.
+
+Fix blkid's handling of ntfs UUID's so that leading zeros are printed
+such that UUID string is a fixed length.
+
+Add sample python bindings for the uuid library to the contrib
+directory. (Addresses-Sourceforge-Patches: #778817)
+
+Fix debugfs's 'lsdel' command so it uses ext2fs_block_iterate2 so it
+will work with large files. (Addresses Sourceforge Feature Request:
+#1257500 and Sourceforge Support Request: #1253511)
+
+Allow the debugfs 'undel' command to undelete an inode without linking
+it to a specific destination directory, since this might require
+allocating blocks that could overwrite some yet-to-be-recovered
+deleted files. (Addresses-Sourceforge-Feature-Request: #967141)
+
+Update Swedish translations from the Translation Project.
+
+Programmer's Notes:
+-------------------
+
+Fix configure handling of --sbindir (which should rarely be used, but
+someone did complain, so let's fix it). (Addresses Sourceforge Bug:
+#498381)
+
+Updated e2fsprogs.spec file to include a new uuidd package
+
+Use pkg-config to determine where to find the devmapper library so we
+can find out where it is located on different distributions.
+
+Fix Makefile race so that "make -j3 distclean" works correctly
+
+Fix portability problems on non-Linux/non-Hurd/non-Masix systems,
+especially on MacOS X systems. (Addresses Sourceforge Bugs: #1861633,
+#1819034, #1863819)
+
+Fixed spelling mistakes, typos, and otherwise clarified man pages.
+
+Fixed various Debian packaging issues --- see debian/changelog for
+details. (Addresses Debian Bugs: #459403, #459475, #459614)
+
+Remove the --enable-dynamic-static configure option, and build e2fsck
+dynamically by default. If the user wants e2fsck.static, he/she will
+need to build it via "make -C e2fsck e2fsck.static"
+
+Fix various build warnings due to missing prototypes.
+(Addresses Sourceforge Patch: #1861663, #1861659)
+
+
E2fsprogs 1.40.4 (December 31, 2007)
====================================
diff --git a/aclocal.m4 b/aclocal.m4
index fc3ed733..3c32c839 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -2649,3 +2649,48 @@ AC_DEFUN([AX_TLS], [
fi
AC_MSG_RESULT($ac_cv_tls)
])
+
+# Excerpted from pkg.m4 - Macros to locate and utilise pkg-config
+#
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 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.
+#
+# 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.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=m4_default([$1], [0.9.0])
+ AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ PKG_CONFIG=""
+ fi
+
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
diff --git a/configure b/configure
index 4266a8d7..cea632ca 100755
--- a/configure
+++ b/configure
@@ -687,15 +687,16 @@ PROFILED_LIB_EXT
DEBUGFS_CMT
IMAGER_CMT
RESIZER_CMT
-E2FSCK_TYPE
FSCK_PROG
FSCK_MAN
E2INITRD_PROG
E2INITRD_MAN
+PKG_CONFIG
DEVMAPPER_REQ
DEVMAPPER_PC_LIBS
DEVMAPPER_LIBS
STATIC_DEVMAPPER_LIBS
+STATIC_BLKID_DEVMAPPER_LIBS
UUIDD_CMT
GETTEXT_PACKAGE
PACKAGE
@@ -785,7 +786,8 @@ CFLAGS
LDFLAGS
LIBS
CPPFLAGS
-CPP'
+CPP
+PKG_CONFIG'
# Initialize some variables set by options.
@@ -1371,7 +1373,6 @@ Optional Features:
--disable-debugfs disable support of debugfs program
--disable-imager disable support of e2image program
--disable-resizer disable support of e2resize program
- --enable-dynamic-e2fsck build e2fsck dynamically
--enable-fsck build fsck wrapper program
--enable-e2initrd-helper build e2initrd-helper program
--enable-blkid-devmapper build with device-mapper support
@@ -1405,6 +1406,7 @@ Some influential environment variables:
CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
CPP C preprocessor
+ PKG_CONFIG path to pkg-config utility
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
@@ -3833,6 +3835,7 @@ echo "Enabling htree directory support by default"
fi
+E2_PKG_CONFIG_STATIC=--static
# Check whether --enable-elf-shlibs was given.
if test "${enable_elf_shlibs+set}" = set; then
enableval=$enable_elf_shlibs; if test "$enableval" = "no"
@@ -3841,6 +3844,7 @@ then
MAKEFILE_ELF=/dev/null
echo "Disabling ELF shared libraries"
else
+ E2_PKG_CONFIG_STATIC=
ELF_CMT=
MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
case "$host_os" in
@@ -3870,6 +3874,7 @@ then
MAKEFILE_BSDLIB=/dev/null
echo "Disabling BSD shared libraries"
else
+ E2_PKG_CONFIG_STATIC=
BSDLIB_CMT=
MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
LIB_EXT=.so
@@ -4047,24 +4052,6 @@ RESIZER_CMT=
fi
-# Check whether --enable-dynamic-e2fsck was given.
-if test "${enable_dynamic_e2fsck+set}" = set; then
- enableval=$enable_dynamic_e2fsck; if test "$enableval" = "no"
-then
- E2FSCK_TYPE=static
- echo "Building e2fsck statically"
-else
- E2FSCK_TYPE=shared
- echo "Building e2fsck dynamically"
-fi
-
-else
- E2FSCK_TYPE=static
-echo "Building e2fsck statically by default"
-
-fi
-
-
# Check whether --enable-fsck was given.
if test "${enable_fsck+set}" = set; then
enableval=$enable_fsck; if test "$enableval" = "no"
@@ -4110,6 +4097,7 @@ fi
+STATIC_BLKID_DEVMAPPER_LIBS=''
# Check whether --enable-blkid-devmapper was given.
if test "${enable_blkid_devmapper+set}" = set; then
enableval=$enable_blkid_devmapper; if test "$enableval" = "no"
@@ -4125,12 +4113,218 @@ _ACEOF
echo "Enabling device-mapper support"
- DEVMAPPER_REQ='libselinux libsepol'
- DEVMAPPER_PC_LIBS='-ldevmapper'
- DEVMAPPER_LIBS='-ldevmapper -lselinux -lsepol -lpthread'
- STATIC_DEVMAPPER_LIBS='/usr/lib/libdevmapper.a /usr/lib/libselinux.a /usr/lib/libsepol.a -lpthread'
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+ { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+ ac_pt_PKG_CONFIG=$PKG_CONFIG
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $ac_pt_PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+fi
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+ { echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
+echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_pt_PKG_CONFIG" = x; then
+ PKG_CONFIG=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ PKG_CONFIG=$ac_pt_PKG_CONFIG
+ fi
+else
+ PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+ _pkg_min_version=0.9.0
+ { echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
+echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6; }
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+ PKG_CONFIG=""
+ fi
+
+fi
+
+ if test -z "$PKG_CONFIG"; then
+ echo "pkg-config not installed; please install it."
+ exit 1;
+ fi
+
+ { echo "$as_me:$LINENO: checking for dm_tree_create in -ldevmapper" >&5
+echo $ECHO_N "checking for dm_tree_create in -ldevmapper... $ECHO_C" >&6; }
+if test "${ac_cv_lib_devmapper_dm_tree_create+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldevmapper $DEVMAPPER_LIBS $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 dm_tree_create ();
+int
+main ()
+{
+return dm_tree_create ();
+ ;
+ 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 "echo \"\$as_me:$LINENO: $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
+ 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 &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_devmapper_dm_tree_create=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_devmapper_dm_tree_create=no
+fi
+
+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
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_devmapper_dm_tree_create" >&5
+echo "${ECHO_T}$ac_cv_lib_devmapper_dm_tree_create" >&6; }
+if test $ac_cv_lib_devmapper_dm_tree_create = yes; then
+ DEVMAPPER_LIBS=`$PKG_CONFIG --libs devmapper`;
+ STATIC_DEVMAPPER_LIBS=`$PKG_CONFIG --static --libs devmapper`;
+ DEVMAPPER_REQ="devmapper";
+ DEVMAPPER_PC_LIBS="-ldevmapper"
+else
+ { { echo "$as_me:$LINENO: error: device-mapper library not found" >&5
+echo "$as_me: error: device-mapper library not found" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ # work around stupid devmapper.pc bug in Debian
+ case "$STATIC_DEVMAPPER_LIBS" in
+ *pthread*)
+ ;;
+ *)
+ echo "Working around Debian bug #390243..."
+ STATIC_DEVMAPPER_LIBS="-pthread $STATIC_DEVMAPPER_LIBS"
+ ;;
+ esac
+ if test "$E2_PKG_CONFIG_STATIC" = "--static"; then
+ DEVMAPPER_LIBS="$STATIC_DEVMAPPER_LIBS"
+ STATIC_BLKID_DEVMAPPER_LIBS="$STATIC_DEVMAPPER_LIBS"
+ fi
+fi
else
echo "Disabling device-mapper support by default"
@@ -4141,6 +4335,7 @@ fi
+
# Check whether --enable-tls was given.
if test "${enable_tls+set}" = set; then
enableval=$enable_tls; if test "$enableval" = "no"
@@ -14617,7 +14812,8 @@ fi
-for ac_func in chflags getrusage llseek lseek64 open64 fstat64 getmntinfo strtoull strcasecmp srandom jrand48 fchown mallinfo fdatasync strnlen strptime strdup sysconf pathconf posix_memalign memalign valloc __secure_getenv prctl mmap utime setresuid setresgid
+
+for ac_func in chflags getrusage llseek lseek64 open64 fstat64 ftruncate64 getmntinfo strtoull strcasecmp srandom jrand48 fchown mallinfo fdatasync strnlen strptime strdup sysconf pathconf posix_memalign memalign valloc __secure_getenv prctl mmap utime setresuid setresgid
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
{ echo "$as_me:$LINENO: checking for $ac_func" >&5
@@ -14948,6 +15144,22 @@ else
root_libdir='${root_prefix}/lib'
root_sysconfdir='${root_prefix}/etc'
fi
+if test "$bindir" != '${exec_prefix}/bin'; then
+ root_bindir=$bindir
+ echo "Setting root_bindir to $root_bindir"
+fi
+if test "$sbindir" != '${exec_prefix}/sbin'; then
+ root_sbindir=$sbindir
+ echo "Setting root_sbindir to $root_sbindir"
+fi
+if test "$libdir" != '${exec_prefix}/lib'; then
+ root_libdir=$libdir
+ echo "Setting root_libdir to $root_libdir"
+fi
+if test "$sysconfdir" != '${prefix}/etc'; then
+ root_sysconfdir=$sysconfdir
+ echo "Setting root_sysconfdir to $root_sysconfdir"
+fi
@@ -15796,8 +16008,8 @@ PROFILED_LIB_EXT!$PROFILED_LIB_EXT$ac_delim
DEBUGFS_CMT!$DEBUGFS_CMT$ac_delim
IMAGER_CMT!$IMAGER_CMT$ac_delim
RESIZER_CMT!$RESIZER_CMT$ac_delim
-E2FSCK_TYPE!$E2FSCK_TYPE$ac_delim
FSCK_PROG!$FSCK_PROG$ac_delim
+FSCK_MAN!$FSCK_MAN$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 76; then
@@ -15867,13 +16079,14 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
-FSCK_MAN!$FSCK_MAN$ac_delim
E2INITRD_PROG!$E2INITRD_PROG$ac_delim
E2INITRD_MAN!$E2INITRD_MAN$ac_delim
+PKG_CONFIG!$PKG_CONFIG$ac_delim
DEVMAPPER_REQ!$DEVMAPPER_REQ$ac_delim
DEVMAPPER_PC_LIBS!$DEVMAPPER_PC_LIBS$ac_delim
DEVMAPPER_LIBS!$DEVMAPPER_LIBS$ac_delim
STATIC_DEVMAPPER_LIBS!$STATIC_DEVMAPPER_LIBS$ac_delim
+STATIC_BLKID_DEVMAPPER_LIBS!$STATIC_BLKID_DEVMAPPER_LIBS$ac_delim
UUIDD_CMT!$UUIDD_CMT$ac_delim
GETTEXT_PACKAGE!$GETTEXT_PACKAGE$ac_delim
PACKAGE!$PACKAGE$ac_delim
@@ -15950,7 +16163,7 @@ LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 81; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 82; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff --git a/configure.in b/configure.in
index 41173d47..20f5d16f 100644
--- a/configure.in
+++ b/configure.in
@@ -207,6 +207,10 @@ echo "Enabling htree directory support by default"
)
AC_SUBST(HTREE_CMT)
dnl
+dnl This needs to be before all of the --enable-*-shlibs options
+dnl
+E2_PKG_CONFIG_STATIC=--static
+dnl
dnl handle --enable-elf-shlibs
dnl
AC_ARG_ENABLE([elf-shlibs],
@@ -217,6 +221,7 @@ then
MAKEFILE_ELF=/dev/null
echo "Disabling ELF shared libraries"
else
+ E2_PKG_CONFIG_STATIC=
ELF_CMT=
MAKEFILE_ELF=$srcdir/lib/Makefile.elf-lib
[case "$host_os" in
@@ -246,6 +251,7 @@ then
MAKEFILE_BSDLIB=/dev/null
echo "Disabling BSD shared libraries"
else
+ E2_PKG_CONFIG_STATIC=
BSDLIB_CMT=
MAKEFILE_BSDLIB=$srcdir/lib/Makefile.bsd-lib
LIB_EXT=.so
@@ -415,24 +421,6 @@ RESIZER_CMT=
)
AC_SUBST(RESIZER_CMT)
dnl
-dnl handle --enable-dynamic-e2fsck
-dnl
-AC_ARG_ENABLE([dynamic-e2fsck],
-[ --enable-dynamic-e2fsck build e2fsck dynamically],
-if test "$enableval" = "no"
-then
- E2FSCK_TYPE=static
- echo "Building e2fsck statically"
-else
- E2FSCK_TYPE=shared
- echo "Building e2fsck dynamically"
-fi
-,
-E2FSCK_TYPE=static
-echo "Building e2fsck statically by default"
-)
-AC_SUBST(E2FSCK_TYPE)
-dnl
dnl See whether to install the `fsck' wrapper program (that calls e2fsck)
dnl
AC_ARG_ENABLE([fsck],
@@ -479,6 +467,7 @@ AC_SUBST(E2INITRD_PROG)
AC_SUBST(E2INITRD_MAN)
dnl handle --enable-blkid-devmapper
dnl
+STATIC_BLKID_DEVMAPPER_LIBS=''
AC_ARG_ENABLE([blkid-devmapper],
[ --enable-blkid-devmapper build with device-mapper support],
[if test "$enableval" = "no"
@@ -491,11 +480,33 @@ else
AC_DEFINE(HAVE_DEVMAPPER)
echo "Enabling device-mapper support"
- DEVMAPPER_REQ='libselinux libsepol'
- DEVMAPPER_PC_LIBS='-ldevmapper'
- DEVMAPPER_LIBS='-ldevmapper -lselinux -lsepol -lpthread'
- STATIC_DEVMAPPER_LIBS='/usr/lib/libdevmapper.a /usr/lib/libselinux.a /usr/lib/libsepol.a -lpthread'
+ PKG_PROG_PKG_CONFIG()
+ if test -z "$PKG_CONFIG"; then
+ echo "pkg-config not installed; please install it."
+ exit 1;
+ fi
+
+ AC_CHECK_LIB(devmapper, dm_tree_create,
+ [DEVMAPPER_LIBS=`$PKG_CONFIG --libs devmapper`;
+ STATIC_DEVMAPPER_LIBS=`$PKG_CONFIG --static --libs devmapper`;
+ DEVMAPPER_REQ="devmapper";
+ DEVMAPPER_PC_LIBS="-ldevmapper"],
+ [AC_MSG_ERROR([device-mapper library not found])],
+ [$DEVMAPPER_LIBS])
+ # work around stupid devmapper.pc bug in Debian
+ case "$STATIC_DEVMAPPER_LIBS" in
+ *pthread*)
+ ;;
+ *)
+ echo "Working around Debian bug #390243..."
+ STATIC_DEVMAPPER_LIBS="-pthread $STATIC_DEVMAPPER_LIBS"
+ ;;
+ esac
+ if test "$E2_PKG_CONFIG_STATIC" = "--static"; then
+ DEVMAPPER_LIBS="$STATIC_DEVMAPPER_LIBS"
+ STATIC_BLKID_DEVMAPPER_LIBS="$STATIC_DEVMAPPER_LIBS"
+ fi
fi]
,
echo "Disabling device-mapper support by default"
@@ -504,6 +515,7 @@ AC_SUBST(DEVMAPPER_REQ)
AC_SUBST(DEVMAPPER_PC_LIBS)
AC_SUBST(DEVMAPPER_LIBS)
AC_SUBST(STATIC_DEVMAPPER_LIBS)
+AC_SUBST(STATIC_BLKID_DEVMAPPER_LIBS)
dnl
dnl
dnl
@@ -697,7 +709,7 @@ AC_CHECK_MEMBER(struct sockaddr.sa_len,
[#include <sys/types.h>
#include <sys/socket.h>])
dnl
-AC_CHECK_FUNCS(chflags getrusage llseek lseek64 open64 fstat64 getmntinfo strtoull strcasecmp srandom jrand48 fchown mallinfo fdatasync strnlen strptime strdup sysconf pathconf posix_memalign memalign valloc __secure_getenv prctl mmap utime setresuid setresgid)
+AC_CHECK_FUNCS(chflags getrusage llseek lseek64 open64 fstat64 ftruncate64 getmntinfo strtoull strcasecmp srandom jrand48 fchown mallinfo fdatasync strnlen strptime strdup sysconf pathconf posix_memalign memalign valloc __secure_getenv prctl mmap utime setresuid setresgid)
dnl
dnl Check to see if -lsocket is required (solaris) to make something
dnl that uses socket() to compile; this is needed for the UUID library
@@ -803,6 +815,22 @@ else
root_libdir='${root_prefix}/lib'
root_sysconfdir='${root_prefix}/etc'
fi
+if test "$bindir" != '${exec_prefix}/bin'; then
+ root_bindir=$bindir
+ echo "Setting root_bindir to $root_bindir"
+fi
+if test "$sbindir" != '${exec_prefix}/sbin'; then
+ root_sbindir=$sbindir
+ echo "Setting root_sbindir to $root_sbindir"
+fi
+if test "$libdir" != '${exec_prefix}/lib'; then
+ root_libdir=$libdir
+ echo "Setting root_libdir to $root_libdir"
+fi
+if test "$sysconfdir" != '${prefix}/etc'; then
+ root_sysconfdir=$sysconfdir
+ echo "Setting root_sysconfdir to $root_sysconfdir"
+fi
AC_SUBST(root_prefix)
AC_SUBST(root_bindir)
AC_SUBST(root_sbindir)
diff --git a/contrib/python-uuid/setup.py b/contrib/python-uuid/setup.py
new file mode 100755
index 00000000..3934d170
--- /dev/null
+++ b/contrib/python-uuid/setup.py
@@ -0,0 +1,11 @@
+#!/usr/bin/python
+from distutils.core import setup, Extension
+
+uuid = Extension('e2fsprogs_uuid',
+ sources = ['uuid.c'],
+ libraries = ['uuid'])
+
+setup (name = 'e2fsprogs_uuid',
+ version = '1.0',
+ description = 'This is python uuid interface',
+ ext_modules = [uuid])
diff --git a/contrib/python-uuid/test.py b/contrib/python-uuid/test.py
new file mode 100755
index 00000000..2264f623
--- /dev/null
+++ b/contrib/python-uuid/test.py
@@ -0,0 +1,18 @@
+#!/usr/bin/python
+import e2fsprogs_uuid
+import time
+
+print "Generating uuid...",
+try:
+ time = time.time()
+ u = e2fsprogs_uuid.generate()
+except:
+ u = "FAIL"
+print u, "...", time
+
+print "Calling generate with param...",
+try:
+ e2fsprogs_uuid.generate("param")
+ print "FAIL."
+except:
+ print "OK"
diff --git a/contrib/python-uuid/uuid.c b/contrib/python-uuid/uuid.c
new file mode 100644
index 00000000..34dd56a0
--- /dev/null
+++ b/contrib/python-uuid/uuid.c
@@ -0,0 +1,23 @@
+#include <Python.h>
+#include <time.h>
+#include <uuid/uuid.h>
+
+static PyObject * _uuid_generate(PyObject *self, PyObject *args)
+{
+ uuid_t u;
+ char uuid[37];
+ if (!PyArg_ParseTuple(args, "")) return NULL;
+ uuid_generate(u);
+ uuid_unparse(u, uuid);
+ return Py_BuildValue("s", uuid);
+}
+
+static PyMethodDef _uuid_methods[] = {
+ {"generate", _uuid_generate, METH_VARARGS, "Generate UUID"},
+ {NULL, NULL, 0, NULL}
+};
+
+void inite2fsprogs_uuid(void)
+{
+ (void) Py_InitModule("e2fsprogs_uuid", _uuid_methods);
+}
diff --git a/debian/changelog b/debian/changelog
index 19de99c1..dd5cd7e0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,38 @@
+e2fsprogs (1.40.5-1) unstable; urgency=low
+
+ * New upstream release.
+ * Mke2fs will now create new filesystems with 256 byte inodes and the
+ ext_attr feature flag by default. This allows for much better
+ future compatibity with ext4 and speeds up extended attributes
+ even on ext3 filesystems.
+ * Teach mke2fs and tune2fs to set a "test_fs" flag, which indicates
+ that it is ok to use the filesystem on in-development kernel
+ code (i.e., ext4dev)
+ * E2fsck now optimizes non-htree directories by sorting them by inode
+ number.
+ * Add support for detecting HFS+ and ext4/ext4dev filesystems in blkid
+ * Fix blkid's ntfs UUID handling so it is compatible with vol_id
+ * Avoid a floating point exception when blkid tries to probe a corrpt
+ reiserfs filesystem.
+ * Fix potential overflow problem in e2image if the device name is
+ too long.
+ * Cause e2image to exit immediately with an error message on a disk
+ full situation.
+ * Fix a minor typos in the resize2fs and uuidd manpages.
+ * E2fsck will no longer backup superblocks when the kernel makes
+ certain "safe" feature set changes behind the user's back.
+ * Fix debugfs's lsdel command so it works on large files
+ * Allow a user to undelete an inode with linking to a destination
+ directory.
+ * Update Swedish translation file from the Translation Project
+ * The libuuid1 and uuid-runtime packages requires passwd package, so
+ declare it as a dependency. (Closes: #459403)
+ * Fix a FTBFS problem on x86_64 caused by the fact that dietlibc
+ doesn't provide llseek on the x86_64. (Closes: #459614)
+ * Don't use dietlibc on platforms that don't support it (Closes: #459475)
+
+ -- Theodore Y. Ts'o <tytso@mit.edu> Sun, 27 Jan 2008 16:57:34 -0500
+
e2fsprogs (1.40.4-1) unstable; urgency=low
* Make sure that programs like tune2fs, when modifying a mounted
@@ -426,7 +461,7 @@ e2fsprogs (1.38+1.39-WIP-2005.12.10-1) unstable; urgency=low
* Updated Dutch translation
* E2fsck will stop and print a warning if the user tries running a
read/write badblocks test on a read-only mounted root filesystem.
- * Add resize2fs and badblocks to the e2fsprogs udeb
+ * Add resize2fs and badblocks to the e2fsprogs udeb
(Closes: #290429, #310950)
* Avoid trying to mount the root device if it is an NFS device.
(Closes: #310428)
diff --git a/debian/control b/debian/control
index c41c829a..1b1c0f3d 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@ Source: e2fsprogs
Section: admin
Priority: required
Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
-Build-Depends: texi2html (>= 1.76), gettext, texinfo, dc, dietlibc-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], libsepol1-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], libdevmapper-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], libselinux1-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], debhelper (>= 4)
+Build-Depends: texi2html (>= 1.76), gettext, texinfo, dc, pkg-config, dietlibc-dev [alpha amd64 arm hppa i386 ia64 mips mipsel powerpc ppc64 s390 sparc], libsepol1-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], libdevmapper-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], libselinux1-dev [!hurd-i386 !kfreebsd-i386 !kfreebsd-amd64], debhelper (>= 4)
Standards-Version: 3.7.3.0
Package: e2fsck-static
@@ -77,7 +77,7 @@ Description: command-line interface parsing library - headers and static librari
Package: libuuid1
Section: libs
Priority: required
-Depends: ${shlibs:Depends}
+Depends: passwd, ${shlibs:Depends}
Recommends: uuid-runtime
Replaces: e2fsprogs (<< 1.34-1)
Architecture: any
@@ -88,7 +88,7 @@ Description: universally unique id library
Package: uuid-runtime
Section: libs
Priority: optional
-Depends: libuuid1 (>> 1.40.3-1), ${shlibs:Depends}
+Depends: passwd, libuuid1 (>> 1.40.3-1), ${shlibs:Depends}
Replaces: e2fsprogs (<= 1.40.3-1ubuntu1)
Architecture: any
Description: universally unique id library
diff --git a/debian/libuuid1.postinst b/debian/libuuid1.postinst
index 2f46f124..50a86183 100644
--- a/debian/libuuid1.postinst
+++ b/debian/libuuid1.postinst
@@ -1,5 +1,6 @@
#!/bin/sh
+set -e
groupadd -f -K GID_MIN=1 -K GID_MAX=999 libuuid
if ! grep -q libuuid /etc/passwd; then
useradd -d /var/lib/libuuid -K UID_MIN=1 -K UID_MAX=499 -g libuuid libuuid
diff --git a/debian/rules b/debian/rules
index 0f518188..c24d7691 100755
--- a/debian/rules
+++ b/debian/rules
@@ -97,8 +97,7 @@ endif
BF_CCOPTS = -Os -fomit-frame-pointer
COMMON_CONF_FLAGS = \
- --enable-elf-shlibs --enable-dynamic-e2fsck \
- --infodir=/usr/share/info --enable-fsck
+ --enable-elf-shlibs --infodir=/usr/share/info --enable-fsck
STD_CONF_FLAGS = --with-ccopts="${CCOPTS}" --enable-compression \
${DEVMAPPER}
@@ -112,7 +111,7 @@ STATIC_CONF_FLAGS = --with-ccopts="${CCOPTS}" \
--disable-nls --disable-imager \
--disable-uuidd --disable-tls \
--disable-e2initrd-helper \
- --with-diet-libc --with-ccopts=-fno-stack-protector
+ --with-ccopts=-fno-stack-protector
MIPS_NOPIC_CONF_FLAGS = --with-ccopts="${CCOPTS}" \
--disable-nls --disable-imager \
@@ -179,6 +178,9 @@ ${CFGSTATICSTAMP}:
mkdir -p ${staticbuilddir}
ifeq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
+ if type diet > /dev/null 2>&1 ; then \
+ STATIC_CONF_FLAGS="$STATIC_CONF_FLAGS --with-diet-libc"; \
+ fi
cd ${staticbuilddir} && AWK=/usr/bin/awk \
${topdir}/configure ${STATIC_CONF_FLAGS}
else
@@ -194,21 +196,22 @@ build: build-std build-bf $(BUILD_STATIC)
build-std: ${BUILDSTDSTAMP}
${BUILDSTDSTAMP}: ${CFGSTDSTAMP}
dh_testdir
- make -C ${stdbuilddir} all
+ $(MAKE) -C ${stdbuilddir} all
+ $(MAKE) -C ${stdbuilddir}/e2fsck e2fsck.static
( cd ${stdbuilddir}/doc && \
texi2html -split_chapter ${topdir}/doc/libext2fs.texinfo )
- ( cd ${stdbuilddir}/lib/et && make com_err.info && \
+ ( cd ${stdbuilddir}/lib/et && $(MAKE) com_err.info && \
texi2html -split_chapter -expandinfo ${topdir}/lib/et/com_err.texinfo )
# specially-built MIPS libs
ifneq ($(ismips),)
- make -C ${mipsbuilddir}/util
- make -C ${mipsbuilddir} \
+ $(MAKE) -C ${mipsbuilddir}/util
+ $(MAKE) -C ${mipsbuilddir} \
CFLAGS="${CCOPTS} ${MIPS_CFLAGS}" \
LIB_SUBDIRS="lib/et lib/ext2fs" libs
- make -C ${mipsbuilddir64}/util
- make -C ${mipsbuilddir64} \
+ $(MAKE) -C ${mipsbuilddir64}/util
+ $(MAKE) -C ${mipsbuilddir64} \
CFLAGS="${CCOPTS} ${MIPS_CFLAGS_64}" \
LIB_SUBDIRS="lib/et lib/ext2fs" libs
endif
@@ -218,24 +221,24 @@ endif
build-bf: ${BUILDBFSTAMP}
${BUILDBFSTAMP}: ${CFGBFSTAMP}
dh_testdir
- make -C ${bfbuilddir} libs
- make -C ${bfbuilddir}/e2fsck all
- make -C ${bfbuilddir}/misc all
+ $(MAKE) -C ${bfbuilddir} libs
+ $(MAKE) -C ${bfbuilddir}/e2fsck all
+ $(MAKE) -C ${bfbuilddir}/misc all
touch ${BUILDBFSTAMP}
build-static: ${BUILDSTATICSTAMP}
${BUILDSTATICSTAMP}: ${CFGSTATICSTAMP}
dh_testdir
- make -C ${staticbuilddir} libs
- make -C ${staticbuilddir}/e2fsck all
+ $(MAKE) -C ${staticbuilddir} libs
+ $(MAKE) -C ${staticbuilddir}/e2fsck all e2fsck.static
touch ${BUILDSTATICSTAMP}
clean:
dh_testdir
rm -rf ${STAMPSDIR}
- [ ! -f ${stdbuilddir}/Makefile ] || make -C ${stdbuilddir} distclean
- [ ! -f ${bfbuilddir}/Makefile ] || make -C ${bfbuilddir} distclean
- [ ! -f ${staticbuilddir}/Makefile ] || make -C ${staticbuilddir} distclean
+ [ ! -f ${stdbuilddir}/Makefile ] || $(MAKE) -C ${stdbuilddir} distclean
+ [ ! -f ${bfbuilddir}/Makefile ] || $(MAKE) -C ${bfbuilddir} distclean
+ [ ! -f ${staticbuilddir}/Makefile ] || $(MAKE) -C ${staticbuilddir} distclean
rm -rf ${stdbuilddir} ${bfbuilddir} ${staticbuilddir} ${mipsbuilddir} ${mipsbuilddir64}
rm -f doc/libext2fs/*.html lib/et/com_err/*.html debian/*.substvars
dh_clean
@@ -257,10 +260,10 @@ install-std: build
dh_installdirs
mkdir -p ${tmpdir}/sbin
- make -C ${stdbuilddir} install DESTDIR=${tmpdir} \
+ $(MAKE) -C ${stdbuilddir} install DESTDIR=${tmpdir} \
INSTALL_PROGRAM="${INSTALL_PROGRAM}" LDCONFIG=true
# static libs and .h files
- make -C ${stdbuilddir} install-libs DESTDIR=${tmpdir} LDCONFIG=true
+ $(MAKE) -C ${stdbuilddir} install-libs DESTDIR=${tmpdir} LDCONFIG=true
# statically-linked fsck
${INSTALL_PROGRAM} $(E2FSCK_STATIC) ${tmpdir}/sbin
@@ -284,13 +287,13 @@ install-udeb: build
dh_testdir
dh_testroot
- make -C ${bfbuilddir} install-shlibs-libs-recursive DESTDIR=${udebdir} \
+ $(MAKE) -C ${bfbuilddir} install-shlibs-libs-recursive DESTDIR=${udebdir} \
INSTALL_PROGRAM="${INSTALL_PROGRAM}" LDCONFIG=true
- make -C ${bfbuilddir}/e2fsck install DESTDIR=${udebdir} \
+ $(MAKE) -C ${bfbuilddir}/e2fsck install DESTDIR=${udebdir} \
INSTALL_PROGRAM="${INSTALL_PROGRAM}" LDCONFIG=true
- make -C ${bfbuilddir}/misc install DESTDIR=${udebdir} \
+ $(MAKE) -C ${bfbuilddir}/misc install DESTDIR=${udebdir} \
INSTALL_PROGRAM="${INSTALL_PROGRAM}" LDCONFIG=true
- make -C ${bfbuilddir}/resize install DESTDIR=${udebdir} \
+ $(MAKE) -C ${bfbuilddir}/resize install DESTDIR=${udebdir} \
INSTALL_PROGRAM="${INSTALL_PROGRAM}" LDCONFIG=true
rm -rf ${udebdir}/usr
diff --git a/debian/uuid-runtime.postinst b/debian/uuid-runtime.postinst
index 98293f90..36cd7b96 100644
--- a/debian/uuid-runtime.postinst
+++ b/debian/uuid-runtime.postinst
@@ -1,5 +1,6 @@
#!/bin/sh
+set -e
groupadd -f -K GID_MIN=1 -K GID_MAX=999 libuuid
if ! grep -q libuuid /etc/passwd; then
useradd -d /var/lib/libuuid -K UID_MIN=1 -K UID_MAX=499 -g libuuid libuuid
diff --git a/debugfs/lsdel.c b/debugfs/lsdel.c
index 3dc32a7a..b3293b85 100644
--- a/debugfs/lsdel.c
+++ b/debugfs/lsdel.c
@@ -26,15 +26,15 @@ struct deleted_info {
__u32 uid;
__u64 size;
time_t dtime;
- int num_blocks;
- int free_blocks;
+ e2_blkcnt_t num_blocks;
+ e2_blkcnt_t free_blocks;
};
struct lsdel_struct {
ext2_ino_t inode;
- int num_blocks;
- int free_blocks;
- int bad_blocks;
+ e2_blkcnt_t num_blocks;
+ e2_blkcnt_t free_blocks;
+ e2_blkcnt_t bad_blocks;
};
static int deleted_info_compare(const void *a, const void *b)
@@ -49,7 +49,9 @@ static int deleted_info_compare(const void *a, const void *b)
static int lsdel_proc(ext2_filsys fs,
blk_t *block_nr,
- int blockcnt EXT2FS_ATTR((unused)),
+ e2_blkcnt_t blockcnt EXT2FS_ATTR((unused)),
+ blk_t ref_block EXT2FS_ATTR((unused)),
+ int ref_offset EXT2FS_ATTR((unused)),
void *private)
{
struct lsdel_struct *lsd = (struct lsdel_struct *) private;
@@ -138,11 +140,11 @@ void do_lsdel(int argc, char **argv)
lsd.free_blocks = 0;
lsd.bad_blocks = 0;
- retval = ext2fs_block_iterate(current_fs, ino, 0, block_buf,
- lsdel_proc, &lsd);
+ retval = ext2fs_block_iterate2(current_fs, ino, 0, block_buf,
+ lsdel_proc, &lsd);
if (retval) {
com_err("ls_deleted_inodes", retval,
- "while calling ext2fs_block_iterate");
+ "while calling ext2fs_block_iterate2");
goto next;
}
if (lsd.free_blocks && !lsd.bad_blocks) {
@@ -184,16 +186,17 @@ void do_lsdel(int argc, char **argv)
out = open_pager();
- fprintf(out, " Inode Owner Mode Size Blocks Time deleted\n");
+ fprintf(out, " Inode Owner Mode Size Blocks Time deleted\n");
qsort(delarray, num_delarray, sizeof(struct deleted_info),
deleted_info_compare);
for (i = 0; i < num_delarray; i++) {
- fprintf(out, "%6u %6d %6o %6llu %4d/%4d %s", delarray[i].ino,
- delarray[i].uid, delarray[i].mode, delarray[i].size,
- delarray[i].free_blocks, delarray[i].num_blocks,
- time_to_string(delarray[i].dtime));
+ fprintf(out, "%6u %6d %6o %6llu %6lld/%6lld %s",
+ delarray[i].ino,
+ delarray[i].uid, delarray[i].mode, delarray[i].size,
+ delarray[i].free_blocks, delarray[i].num_blocks,
+ time_to_string(delarray[i].dtime));
}
fprintf(out, "%d deleted inodes found.\n", num_delarray);
close_pager(out);
diff --git a/doc/libext2fs.texinfo b/doc/libext2fs.texinfo
index 613ecdbb..576bd510 100644
--- a/doc/libext2fs.texinfo
+++ b/doc/libext2fs.texinfo
@@ -1,7 +1,7 @@
\input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename libext2fs.info
-@settitle The EXT2FS Library (version 1.40.4)
+@settitle The EXT2FS Library (version 1.40.5)
@synindex tp fn
@comment %**end of header
@@ -59,8 +59,8 @@ by the author.
@title The EXT2FS Library
@subtitle The EXT2FS Library
-@subtitle Version 1.40.4
-@subtitle December 2007
+@subtitle Version 1.40.5
+@subtitle January 2008
@author by Theodore Ts'o
@@ -101,7 +101,7 @@ by the Foundation.
@top The EXT2FS Library
-This manual documents the EXT2FS Library, version 1.40.4.
+This manual documents the EXT2FS Library, version 1.40.5.
@end ifinfo
diff --git a/e2fsck/Makefile.in b/e2fsck/Makefile.in
index 7750759f..f65ca6c8 100644
--- a/e2fsck/Makefile.in
+++ b/e2fsck/Makefile.in
@@ -103,7 +103,7 @@ SRCS= $(srcdir)/e2fsck.c \
prof_err.c \
$(MTRACE_SRC)
-all:: profiled $(PROGS) e2fsck.static e2fsck.shared $(MANPAGES) $(FMANPAGES)
+all:: profiled $(PROGS) e2fsck $(MANPAGES) $(FMANPAGES)
@PROFILE_CMT@all:: e2fsck.profiled
@@ -111,19 +111,15 @@ prof_err.c prof_err.h: prof_err.et
@echo " COMPILE_ET prof_err.et"
@$(COMPILE_ET) $(srcdir)/prof_err.et
-e2fsck: e2fsck.@E2FSCK_TYPE@
- @echo " CP $@"
- @$(CP) e2fsck.@E2FSCK_TYPE@ e2fsck
+e2fsck: $(OBJS) $(DEPLIBS)
+ @echo " LD $@"
+ @$(LD) $(ALL_LDFLAGS) -o e2fsck $(OBJS) $(LIBS)
-e2fsck.static: $(OBJS) $(STATIC_DEPLIBS)
+e2fsck.static: $(OBJS) $(STATIC_DEPLIBS)
@echo " LD $@"
@$(LD) $(ALL_LDFLAGS) $(LDFLAG_STATIC) -o e2fsck.static $(OBJS) \
$(STATIC_LIBS)
-e2fsck.shared: $(OBJS) $(DEPLIBS)
- @echo " LD $@"
- @$(LD) $(ALL_LDFLAGS) -o e2fsck.shared $(OBJS) $(LIBS)
-
e2fsck.profiled: $(PROFILED_OBJS) $(PROFILED_DEPLIBS)
@echo " LD $@"
@$(LD) $(ALL_LDFLAGS) -g -pg -o e2fsck.profiled $(PROFILED_OBJS) \
diff --git a/e2fsck/super.c b/e2fsck/super.c
index dbd7b1ac..b93ec955 100644
--- a/e2fsck/super.c
+++ b/e2fsck/super.c
@@ -778,8 +778,26 @@ void check_super_block(e2fsck_t ctx)
/*
* Check to see if we should backup the master sb to the backup super
- * blocks.
+ * blocks. Returns non-zero if the sb should be backed up.
*/
+
+/*
+ * A few flags are set on the fly by the kernel, but only in the
+ * primary superblock. This is actually a bad thing, and we should
+ * try to discourage it in the future. In particular, for the newer
+ * ext4 files, especially EXT4_FEATURE_RO_COMPAT_DIR_NLINK and
+ * EXT3_FEATURE_INCOMPAT_EXTENTS. So some of these may go away in the
+ * future.
+ *
+ * The kernel will set EXT2_FEATURE_COMPAT_EXT_ATTR, but
+ * unfortunately, we shouldn't ignore it since if it's not set in the
+ * backup, the extended attributes in the filesystem will be stripped
+ * away.
+ */
+#define FEATURE_RO_COMPAT_IGNORE (EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
+ EXT4_FEATURE_RO_COMPAT_DIR_NLINK)
+#define FEATURE_INCOMPAT_IGNORE (EXT3_FEATURE_INCOMPAT_EXTENTS)
+
int check_backup_super_block(e2fsck_t ctx)
{
ext2_filsys fs = ctx->fs;
@@ -819,10 +837,18 @@ int check_backup_super_block(e2fsck_t ctx)
continue;
}
-#define SUPER_DIFFERENT(x) (fs->super->x != tfs->super->x)
+#define SUPER_INCOMPAT_DIFFERENT(x) \
+ (( fs->super->x & ~FEATURE_INCOMPAT_IGNORE) != \
+ (tfs->super->x & ~FEATURE_INCOMPAT_IGNORE))
+#define SUPER_RO_COMPAT_DIFFERENT(x) \
+ (( fs->super->x & ~FEATURE_RO_COMPAT_IGNORE) != \
+ (tfs->super->x & ~FEATURE_RO_COMPAT_IGNORE))
+#define SUPER_DIFFERENT(x) \
+ (fs->super->x != tfs->super->x)
+
if (SUPER_DIFFERENT(s_feature_compat) ||
- SUPER_DIFFERENT(s_feature_incompat) ||
- SUPER_DIFFERENT(s_feature_ro_compat) ||
+ SUPER_INCOMPAT_DIFFERENT(s_feature_incompat) ||
+ SUPER_RO_COMPAT_DIFFERENT(s_feature_ro_compat) ||
SUPER_DIFFERENT(s_blocks_count) ||
SUPER_DIFFERENT(s_inodes_count) ||
memcmp(fs->super->s_uuid, tfs->super->s_uuid,
diff --git a/e2fsprogs.lsm b/e2fsprogs.lsm
index c205d27d..5839aecd 100644
--- a/e2fsprogs.lsm
+++ b/e2fsprogs.lsm
@@ -1,16 +1,16 @@
Begin3
Title: EXT2 Filesystem utilities
-Version: 1.40.4
-Entered-date: 31Dec2007
+Version: 1.40.5
+Entered-date: 27Jan2008
Description: The filesystem utilities for the EXT2 filesystem, including
e2fsck, mke2fs, dumpe2fs, fsck, and others.
Keywords: utilities, fsck, filesystem, Ext2fs
Author: tytso@mit.edu (Theodore Tso)
Maintained-by: tytso@mit.edu (Theodore Tso)
Primary-site: download.sourceforge.net /pub/sourceforge/e2fsprogs
- 3960kB e2fsprogs-1.40.4.tar.gz
- 436kB e2fsprogs-libs-1.40.4.tar.gz
- 1kB e2fsprogs-1.40.4.lsm
+ 3972kB e2fsprogs-1.40.5.tar.gz
+ 440kB e2fsprogs-libs-1.40.5.tar.gz
+ 1kB e2fsprogs-1.40.5.lsm
Alternate-site:
Platforms: linux 1.2.x/1.3.x/2.0.x/2.1.x/2.2.x/2.3.x/2.4.x/2.5.x/2.6.x
Copying-policy: GPL/LGPL
diff --git a/e2fsprogs.spec.in b/e2fsprogs.spec.in
index 2275a223..3e7d1eea 100644
--- a/e2fsprogs.spec.in
+++ b/e2fsprogs.spec.in
@@ -46,6 +46,18 @@ You should install e2fsprogs-devel if you want to develop ext2
filesystem-specific programs. If you install e2fsprogs-devel, you'll
also want to install e2fsprogs.
+%package -n uuidd
+Summary: helper daemon to guarantee uniqueness of time-based UUIDs
+Group: System Environment/Daemons
+License: GPLv2
+Requires: e2fsprogs = %{version}
+Requires(pre): shadow-utils
+
+%description -n uuidd
+The uuidd package contains a userspace daemon (uuidd) which guarantees
+uniqueness of time-based UUID generation even at very high rates on
+SMP systems.
+
%prep
%setup
@@ -60,6 +72,10 @@ export PATH=/sbin:$PATH
make install install-libs DESTDIR="$RPM_BUILD_ROOT" \
root_sbindir=%{_root_sbindir} root_libdir=%{_root_libdir}
/sbin/ldconfig -n ${RPM_BUILD_ROOT}%{_libdir}
+
+# Add a dir that uuidd needs that the Makefiles don't create
+install -d $RPM_BUILD_ROOT/var/lib/libuuid
+
%find_lang %{name}
%clean
@@ -81,6 +97,13 @@ if [ $1 = 0 -a -x /sbin/install-info -a -f %{_infodir}/libext2fs.info.gz ]; then
fi
exit 0
+%pre -n uuidd
+getent group uuidd >/dev/null || groupadd -r uuidd
+getent passwd uuidd >/dev/null || \
+useradd -r -g uuidd -d /var/lib/libuuid -s /sbin/nologin \
+ -c "UUID generator helper daemon" uuidd
+exit 0
+
%files -f %{name}.lang
%defattr(-,root,root)
%doc README RELEASE-NOTES
@@ -195,3 +218,11 @@ exit 0
%{_mandir}/man3/uuid_time.3*
%{_mandir}/man3/uuid_unparse.3*
+%files -n uuidd
+%defattr(-,root,root)
+# if you want to run via init
+# /etc/init.d/uuidd
+%{_mandir}/man8/uuidd.8*
+%attr(6755, uuidd, uuidd) %{_sbindir}/uuidd
+%dir %attr(2775, uuidd, uuidd) /var/lib/libuuid
+
diff --git a/lib/Makefile.bsd-lib b/lib/Makefile.bsd-lib
index 4ab776aa..ec7cae44 100644
--- a/lib/Makefile.bsd-lib
+++ b/lib/Makefile.bsd-lib
@@ -10,9 +10,9 @@
# BSDLIB_INSTALL_DIR = $(SHLIBDIR)
#
-all:: pic image
+all:: image
-real-subdirs:: pic
+real-subdirs:: Makefile
@echo " MKDIR pic"
@mkdir -p pic
diff --git a/lib/Makefile.checker b/lib/Makefile.checker
index 95974fad..8382a510 100644
--- a/lib/Makefile.checker
+++ b/lib/Makefile.checker
@@ -1,4 +1,4 @@
-all:: checker $(LIBRARY)_chk.a
+all:: $(LIBRARY)_chk.a
real-subdirs:: Makefile
@echo " MKDIR checker"
diff --git a/lib/Makefile.darwin-lib b/lib/Makefile.darwin-lib
index c9e44cc5..3052b2e0 100644
--- a/lib/Makefile.darwin-lib
+++ b/lib/Makefile.darwin-lib
@@ -10,7 +10,7 @@
# BSDLIB_INSTALL_DIR = $(SHLIBDIR)
#
-all:: pic image
+all:: image
real-subdirs:: Makefile
@echo " MKDIR pic"
diff --git a/lib/Makefile.profile b/lib/Makefile.profile
index deaa7cbe..a2e77c69 100644
--- a/lib/Makefile.profile
+++ b/lib/Makefile.profile
@@ -1,7 +1,7 @@
-all:: profiled $(LIBRARY)_p.a
+all:: $(LIBRARY)_p.a
real-subdirs:: Makefile
- @echo " MKDIR $@"
+ @echo " MKDIR profiled"
@mkdir -p profiled
clean::
diff --git a/lib/Makefile.solaris-lib b/lib/Makefile.solaris-lib
index 08745928..fcadfa3d 100644
--- a/lib/Makefile.solaris-lib
+++ b/lib/Makefile.solaris-lib
@@ -11,7 +11,7 @@
# ELF_INSTALL_DIR = $(SHLIBDIR)
# ELF_OTHER_LIBS = -lc
-all:: elfshared image
+all:: image
real-subdirs:: Makefile
@echo " MKDIR elfshared"
diff --git a/lib/blkid/llseek.c b/lib/blkid/llseek.c
index 4f49052e..5bd0e516 100644
--- a/lib/blkid/llseek.c
+++ b/lib/blkid/llseek.c
@@ -45,11 +45,11 @@ extern long long llseek(int fd, long long offset, int origin);
#else /* ! HAVE_LLSEEK */
-#if defined(__alpha__) || defined(__ia64__)
+#if SIZEOF_LONG == SIZEOF_LONG_LONG
#define llseek lseek
-#else /* !__alpha__ && !__ia64__*/
+#else /* SIZEOF_LONG != SIZEOF_LONG_LONG */
#include <linux/unistd.h>
diff --git a/lib/blkid/probe.c b/lib/blkid/probe.c
index c571c069..f003a4f6 100644
--- a/lib/blkid/probe.c
+++ b/lib/blkid/probe.c
@@ -131,7 +131,8 @@ static void set_uuid(blkid_dev dev, uuid_t uuid, const char *tag)
}
}
-static void get_ext2_info(blkid_dev dev, unsigned char *buf)
+static void get_ext2_info(blkid_dev dev, struct blkid_magic *id,
+ unsigned char *buf)
{
struct ext2_super_block *es = (struct ext2_super_block *) buf;
const char *label = 0;
@@ -146,61 +147,123 @@ static void get_ext2_info(blkid_dev dev, unsigned char *buf)
blkid_set_tag(dev, "LABEL", label, sizeof(es->s_volume_name));
set_uuid(dev, es->s_uuid, 0);
+
+ if ((es->s_feature_compat & EXT3_FEATURE_COMPAT_HAS_JOURNAL) &&
+ !uuid_is_null(es->s_journal_uuid))
+ set_uuid(dev, es->s_journal_uuid, "EXT_JOURNAL");
+
+ if (strcmp(id->bim_type, "ext2") &&
+ ((blkid_le32(es->s_feature_incompat) &
+ EXT2_FEATURE_INCOMPAT_UNSUPPORTED) == 0))
+ blkid_set_tag(dev, "SEC_TYPE", "ext2", sizeof("ext2"));
}
-static int probe_ext3(struct blkid_probe *probe,
- struct blkid_magic *id __BLKID_ATTR((unused)),
+static int probe_ext4dev(struct blkid_probe *probe,
+ struct blkid_magic *id,
+ unsigned char *buf)
+{
+ struct ext2_super_block *es;
+ es = (struct ext2_super_block *)buf;
+
+ /* Distinguish between ext4dev and other filesystems */
+ if ((blkid_le32(es->s_flags) & EXT2_FLAGS_TEST_FILESYS) == 0)
+ return -BLKID_ERR_PARAM;
+
+ /* Distinguish from jbd */
+ if (blkid_le32(es->s_feature_incompat) &
+ EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)
+ return -BLKID_ERR_PARAM;
+
+ /* ext4dev requires a journal */
+ if (!(blkid_le32(es->s_feature_compat) &
+ EXT3_FEATURE_COMPAT_HAS_JOURNAL))
+ return -BLKID_ERR_PARAM;
+
+ get_ext2_info(probe->dev, id, buf);
+ return 0;
+}
+
+static int probe_ext4(struct blkid_probe *probe, struct blkid_magic *id,
unsigned char *buf)
{
struct ext2_super_block *es;
es = (struct ext2_super_block *)buf;
- /* Distinguish between jbd and ext2/3 fs */
+ /* Distinguish from ext4dev */
+ if (blkid_le32(es->s_flags) & EXT2_FLAGS_TEST_FILESYS)
+ return -BLKID_ERR_PARAM;
+
+ /* Distinguish from jbd */
if (blkid_le32(es->s_feature_incompat) &
EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)
return -BLKID_ERR_PARAM;
- /* Distinguish between ext3 and ext2 */
+ /* ext4 requires journal */
if (!(blkid_le32(es->s_feature_compat) &
EXT3_FEATURE_COMPAT_HAS_JOURNAL))
return -BLKID_ERR_PARAM;
- get_ext2_info(probe->dev, buf);
+ /* Ext4 has at least one feature which ext3 doesn't understand */
+ if (!(blkid_le32(es->s_feature_ro_compat) &
+ EXT3_FEATURE_RO_COMPAT_UNSUPPORTED) &&
+ !(blkid_le32(es->s_feature_incompat) &
+ EXT3_FEATURE_INCOMPAT_UNSUPPORTED))
+ return -BLKID_ERR_PARAM;
- if ((es->s_feature_compat & EXT3_FEATURE_COMPAT_HAS_JOURNAL) &&
- !uuid_is_null(es->s_journal_uuid))
- set_uuid(probe->dev, es->s_journal_uuid, "EXT_JOURNAL");
+ get_ext2_info(probe->dev, id, buf);
+ return 0;
+}
- blkid_set_tag(probe->dev, "SEC_TYPE", "ext2", sizeof("ext2"));
+static int probe_ext3(struct blkid_probe *probe, struct blkid_magic *id,
+ unsigned char *buf)
+{
+ struct ext2_super_block *es;
+ es = (struct ext2_super_block *)buf;
+ /* Distinguish from ext4dev */
+ if (blkid_le32(es->s_flags) & EXT2_FLAGS_TEST_FILESYS)
+ return -BLKID_ERR_PARAM;
+
+ /* ext3 requires journal */
+ if (!(blkid_le32(es->s_feature_compat) &
+ EXT3_FEATURE_COMPAT_HAS_JOURNAL))
+ return -BLKID_ERR_PARAM;
+
+ /* Any features which ext3 doesn't understand */
+ if ((blkid_le32(es->s_feature_ro_compat) &
+ EXT3_FEATURE_RO_COMPAT_UNSUPPORTED) ||
+ (blkid_le32(es->s_feature_incompat) &
+ EXT3_FEATURE_INCOMPAT_UNSUPPORTED))
+ return -BLKID_ERR_PARAM;
+
+ get_ext2_info(probe->dev, id, buf);
return 0;
}
-static int probe_ext2(struct blkid_probe *probe,
- struct blkid_magic *id __BLKID_ATTR((unused)),
+static int probe_ext2(struct blkid_probe *probe, struct blkid_magic *id,
unsigned char *buf)
{
struct ext2_super_block *es;
es = (struct ext2_super_block *)buf;
- /* Distinguish between jbd and ext2/3 fs */
- if (blkid_le32(es->s_feature_incompat) &
- EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)
- return -BLKID_ERR_PARAM;
-
/* Distinguish between ext3 and ext2 */
if ((blkid_le32(es->s_feature_compat) &
EXT3_FEATURE_COMPAT_HAS_JOURNAL))
return -BLKID_ERR_PARAM;
- get_ext2_info(probe->dev, buf);
+ /* Any features which ext2 doesn't understand */
+ if ((blkid_le32(es->s_feature_ro_compat) &
+ EXT2_FEATURE_RO_COMPAT_UNSUPPORTED) ||
+ (blkid_le32(es->s_feature_incompat) &
+ EXT2_FEATURE_INCOMPAT_UNSUPPORTED))
+ return -BLKID_ERR_PARAM;
+ get_ext2_info(probe->dev, id, buf);
return 0;
}
-static int probe_jbd(struct blkid_probe *probe,
- struct blkid_magic *id __BLKID_ATTR((unused)),
+static int probe_jbd(struct blkid_probe *probe, struct blkid_magic *id,
unsigned char *buf)
{
struct ext2_super_block *es = (struct ext2_super_block *) buf;
@@ -209,7 +272,7 @@ static int probe_jbd(struct blkid_probe *probe,
EXT3_FEATURE_INCOMPAT_JOURNAL_DEV))
return -BLKID_ERR_PARAM;
- get_ext2_info(probe->dev, buf);
+ get_ext2_info(probe->dev, id, buf);
return 0;
}
@@ -500,7 +563,7 @@ static int probe_ntfs(struct blkid_probe *probe,
}
}
- sprintf(uuid_str, "%llX", blkid_le64(ns->volume_serial));
+ sprintf(uuid_str, "%016llX", blkid_le64(ns->volume_serial));
blkid_set_tag(probe->dev, "UUID", uuid_str, 0);
if (label_str[0])
blkid_set_tag(probe->dev, "LABEL", label_str, 0);
@@ -533,6 +596,10 @@ static int probe_reiserfs(struct blkid_probe *probe,
blocksize = blkid_le16(rs->rs_blocksize);
+ /* The blocksize must be at least 1k */
+ if ((blocksize >> 10) == 0)
+ return -BLKID_ERR_PARAM;
+
/* If the superblock is inside the journal, we have the wrong one */
if (id->bim_kboff/(blocksize>>10) > blkid_le32(rs->rs_journal_block))
return -BLKID_ERR_BIG;
@@ -815,6 +882,19 @@ static int probe_gfs2(struct blkid_probe *probe,
return 1;
}
+static int probe_hfsplus(struct blkid_probe *probe,
+ struct blkid_magic *id __BLKID_ATTR((unused)),
+ unsigned char *buf)
+{
+ struct hfs_mdb *sbd = (struct hfs_mdb *)buf;
+
+ /* Check for a HFS+ volume embedded in a HFS volume */
+ if (memcmp(sbd->embed_sig, "H+", 2) == 0)
+ return 0;
+
+ return 1;
+}
+
/*
* BLKID_BLK_OFFS is at least as large as the highest bim_kboff defined
* in the type_array table below + bim_kbalign.
@@ -834,6 +914,8 @@ static struct blkid_magic type_array[] = {
{ "oracleasm", 0, 32, 8, "ORCLDISK", probe_oracleasm },
{ "ntfs", 0, 3, 8, "NTFS ", probe_ntfs },
{ "jbd", 1, 0x38, 2, "\123\357", probe_jbd },
+ { "ext4dev", 1, 0x38, 2, "\123\357", probe_ext4dev },
+ { "ext4", 1, 0x38, 2, "\123\357", probe_ext4 },
{ "ext3", 1, 0x38, 2, "\123\357", probe_ext3 },
{ "ext2", 1, 0x38, 2, "\123\357", probe_ext2 },
{ "reiserfs", 8, 0x34, 8, "ReIsErFs", probe_reiserfs },
@@ -872,6 +954,8 @@ static struct blkid_magic type_array[] = {
{ "iso9660", 32, 1, 5, "CD001", probe_iso9660 },
{ "iso9660", 32, 9, 5, "CDROM", probe_iso9660 },
{ "jfs", 32, 0, 4, "JFS1", probe_jfs },
+ { "hfsplus", 1, 0, 2, "BD", probe_hfsplus },
+ { "hfsplus", 1, 0, 2, "H+", 0 },
{ "hfs", 1, 0, 2, "BD", 0 },
{ "ufs", 8, 0x55c, 4, "T\031\001\000", 0 },
{ "hpfs", 8, 0, 4, "I\350\225\371", 0 },
diff --git a/lib/blkid/probe.h b/lib/blkid/probe.h
index f22fb2ec..acfe1195 100644
--- a/lib/blkid/probe.h
+++ b/lib/blkid/probe.h
@@ -82,11 +82,61 @@ struct ext2_super_block {
__u32 s_first_meta_bg;
__u32 s_mkfs_time;
__u32 s_jnl_blocks[17];
- __u32 s_reserved[172];
+ __u32 s_blocks_count_hi;
+ __u32 s_r_blocks_count_hi;
+ __u32 s_free_blocks_hi;
+ __u16 s_min_extra_isize;
+ __u16 s_want_extra_isize;
+ __u32 s_flags;
+ __u16 s_raid_stride;
+ __u16 s_mmp_interval;
+ __u64 s_mmp_block;
+ __u32 s_raid_stripe_width;
+ __u32 s_reserved[163];
};
-#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x00000004
-#define EXT3_FEATURE_INCOMPAT_RECOVER 0x00000004
-#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x00000008
+
+/* for s_flags */
+#define EXT2_FLAGS_TEST_FILESYS 0x0004
+
+/* for s_feature_compat */
+#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004
+
+/* for s_feature_ro_compat */
+#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001
+#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002
+#define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004
+#define EXT4_FEATURE_RO_COMPAT_HUGE_FILE 0x0008
+#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010
+#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020
+#define EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE 0x0040
+
+/* for s_feature_incompat */
+#define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002
+#define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004
+#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008
+#define EXT2_FEATURE_INCOMPAT_META_BG 0x0010
+#define EXT4_FEATURE_INCOMPAT_EXTENTS 0x0040 /* extents support */
+#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080
+#define EXT4_FEATURE_INCOMPAT_MMP 0x0100
+#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200
+
+#define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
+ EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
+#define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \
+ EXT2_FEATURE_INCOMPAT_META_BG)
+#define EXT2_FEATURE_INCOMPAT_UNSUPPORTED ~EXT2_FEATURE_INCOMPAT_SUPP
+#define EXT2_FEATURE_RO_COMPAT_UNSUPPORTED ~EXT2_FEATURE_RO_COMPAT_SUPP
+
+#define EXT3_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
+ EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
+#define EXT3_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \
+ EXT3_FEATURE_INCOMPAT_RECOVER| \
+ EXT2_FEATURE_INCOMPAT_META_BG)
+#define EXT3_FEATURE_INCOMPAT_UNSUPPORTED ~EXT3_FEATURE_INCOMPAT_SUPP
+#define EXT3_FEATURE_RO_COMPAT_UNSUPPORTED ~EXT3_FEATURE_RO_COMPAT_SUPP
+
struct xfs_super_block {
unsigned char xs_magic[4];
@@ -440,6 +490,48 @@ struct file_attribute {
#define MFT_RECORD_ATTR_OBJECT_ID 0x40
#define MFT_RECORD_ATTR_END 0xffffffffu
+/* HFS / HFS+ */
+struct hfs_finder_info {
+ __u32 boot_folder;
+ __u32 start_app;
+ __u32 open_folder;
+ __u32 os9_folder;
+ __u32 reserved;
+ __u32 osx_folder;
+ __u8 id[8];
+} __attribute__((packed));
+
+struct hfs_mdb {
+ __u8 signature[2];
+ __u32 cr_date;
+ __u32 ls_Mod;
+ __u16 atrb;
+ __u16 nm_fls;
+ __u16 vbm_st;
+ __u16 alloc_ptr;
+ __u16 nm_al_blks;
+ __u32 al_blk_size;
+ __u32 clp_size;
+ __u16 al_bl_st;
+ __u32 nxt_cnid;
+ __u16 free_bks;
+ __u8 label_len;
+ __u8 label[27];
+ __u32 vol_bkup;
+ __u16 vol_seq_num;
+ __u32 wr_cnt;
+ __u32 xt_clump_size;
+ __u32 ct_clump_size;
+ __u16 num_root_dirs;
+ __u32 file_count;
+ __u32 dir_count;
+ struct hfs_finder_info finder_info;
+ __u8 embed_sig[2];
+ __u16 embed_startblock;
+ __u16 embed_blockcount;
+} __attribute__((packed));
+
+
/*
* Byte swap functions
*/
diff --git a/lib/e2p/ls.c b/lib/e2p/ls.c
index b9ae14ad..957ba5b0 100644
--- a/lib/e2p/ls.c
+++ b/lib/e2p/ls.c
@@ -147,11 +147,15 @@ static void print_super_flags(struct ext2_super_block * s, FILE *f)
fputs("Filesystem flags: ", f);
if (s->s_flags & EXT2_FLAGS_SIGNED_HASH) {
- fputs("signed directory hash ", f);
+ fputs("signed_directory_hash ", f);
flags_found++;
}
if (s->s_flags & EXT2_FLAGS_UNSIGNED_HASH) {
- fputs("unsigned directory hash ", f);
+ fputs("unsigned_directory_hash ", f);
+ flags_found++;
+ }
+ if (s->s_flags & EXT2_FLAGS_TEST_FILESYS) {
+ fputs("test_filesystem ", f);
flags_found++;
}
if (flags_found)
diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h
index e04ba9a1..896c590e 100644
--- a/lib/ext2fs/ext2_fs.h
+++ b/lib/ext2fs/ext2_fs.h
@@ -431,18 +431,22 @@ struct ext2_inode_large {
#define inode_uid(inode) ((inode).i_uid | (inode).osd2.linux2.l_i_uid_high << 16)
#define inode_gid(inode) ((inode).i_gid | (inode).osd2.linux2.l_i_gid_high << 16)
+#define ext2fs_set_i_uid_high(inode,x) ((inode).osd2.linux2.l_i_uid_high = (x))
+#define ext2fs_set_i_gid_high(inode,x) ((inode).osd2.linux2.l_i_gid_high = (x))
/*
* File system states
*/
#define EXT2_VALID_FS 0x0001 /* Unmounted cleanly */
#define EXT2_ERROR_FS 0x0002 /* Errors detected */
+#define EXT4_ORPHAN_FS 0x0004 /* Orphans being recovered */
/*
* Misc. filesystem flags
*/
#define EXT2_FLAGS_SIGNED_HASH 0x0001 /* Signed dirhash in use */
#define EXT2_FLAGS_UNSIGNED_HASH 0x0002 /* Unsigned dirhash in use */
+#define EXT2_FLAGS_TEST_FILESYS 0x0004 /* OK for use on development code */
/*
* Mount flags
diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c
index 69bbcf33..7a1d8927 100644
--- a/lib/ext2fs/initialize.c
+++ b/lib/ext2fs/initialize.c
@@ -156,6 +156,7 @@ errcode_t ext2fs_initialize(const char *name, int flags,
set_field(s_feature_incompat, 0);
set_field(s_feature_ro_compat, 0);
set_field(s_first_meta_bg, 0);
+ set_field(s_flags, 0);
if (super->s_feature_incompat & ~EXT2_LIB_FEATURE_INCOMPAT_SUPP) {
retval = EXT2_ET_UNSUPP_FEATURE;
goto cleanup;
diff --git a/lib/ext2fs/llseek.c b/lib/ext2fs/llseek.c
index aa4f54d4..5a5e560b 100644
--- a/lib/ext2fs/llseek.c
+++ b/lib/ext2fs/llseek.c
@@ -46,11 +46,11 @@ extern long long llseek (int fd, long long offset, int origin);
#else /* ! HAVE_LLSEEK */
-#if defined(__alpha__) || defined (__ia64__)
+#if SIZEOF_LONG == SIZEOF_LONG_LONG
#define llseek lseek
-#else /* !__alpha__ && !__ia64__*/
+#else /* SIZEOF_LONG != SIZEOF_LONG_LONG */
#include <linux/unistd.h>
diff --git a/lib/uuid/gen_uuid.c b/lib/uuid/gen_uuid.c
index 78fb336f..9254eb68 100644
--- a/lib/uuid/gen_uuid.c
+++ b/lib/uuid/gen_uuid.c
@@ -409,7 +409,8 @@ static int get_uuid_via_daemon(int op, uuid_t out, int *num)
access_ret = access(uuidd_path, X_OK);
if (access_ret == 0 && start_attempts++ < 5) {
if ((pid = fork()) == 0) {
- execl(uuidd_path, "uuidd", "-qT", "300", 0);
+ execl(uuidd_path, "uuidd", "-qT", "300",
+ (char *) NULL);
exit(1);
}
(void) waitpid(pid, 0, 0);
diff --git a/misc/e2image.c b/misc/e2image.c
index 04d51d47..1695d6ed 100644
--- a/misc/e2image.c
+++ b/misc/e2image.c
@@ -126,7 +126,8 @@ static void write_image_file(ext2_filsys fs, int fd)
hdr.magic_number = EXT2_ET_MAGIC_E2IMAGE;
strcpy(hdr.magic_descriptor, "Ext2 Image 1.0");
gethostname(hdr.fs_hostname, sizeof(hdr.fs_hostname));
- strncat(hdr.fs_device_name, device_name, sizeof(hdr.fs_device_name) - 1);
+ strncpy(hdr.fs_device_name, device_name, sizeof(hdr.fs_device_name)-1);
+ hdr.fs_device_name[sizeof(hdr.fs_device_name) - 1] = 0;
hdr.fs_blocksize = fs->blocksize;
if (stat(device_name, &st) == 0)
diff --git a/misc/mke2fs.8.in b/misc/mke2fs.8.in
index a3dc4a1c..9afd7f43 100644
--- a/misc/mke2fs.8.in
+++ b/misc/mke2fs.8.in
@@ -187,6 +187,10 @@ filesystem blocks per stripe.
.BI resize= max-online-resize
Reserve enough space so that the block group descriptor table can grow
to support a filesystem that has max-online-resize blocks.
+.TP
+.B test_fs
+Set a flag in the filesystem superblock indicating that it may be
+mounted using experimental kernel code, such as the ext4dev filesystem.
.RE
.TP
.BI \-f " fragment-size"
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index b0cbc42d..e6cd1ac7 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -495,11 +495,11 @@ static void create_root_dir(ext2_filsys fs)
}
uid = getuid();
inode.i_uid = uid;
- inode.i_uid_high = uid >> 16;
+ ext2fs_set_i_uid_high(inode, uid >> 16);
if (uid) {
gid = getgid();
inode.i_gid = gid;
- inode.i_gid_high = gid >> 16;
+ ext2fs_set_i_gid_high(inode, gid >> 16);
}
retval = ext2fs_write_new_inode(fs, EXT2_ROOT_INO, &inode);
if (retval) {
@@ -849,6 +849,8 @@ static void parse_extended_opts(struct ext2_super_block *param,
param->s_reserved_gdt_blocks = rsv_gdb;
}
+ } else if (!strcmp(token, "test_fs")) {
+ param->s_flags |= EXT2_FLAGS_TEST_FILESYS;
} else
r_usage++;
}
@@ -859,7 +861,8 @@ static void parse_extended_opts(struct ext2_super_block *param,
"\tis set off by an equals ('=') sign.\n\n"
"Valid extended options are:\n"
"\tstride=<stride length in blocks>\n"
- "\tresize=<resize maximum size in blocks>\n\n"));
+ "\tresize=<resize maximum size in blocks>\n"
+ "\ttest_fs\n"));
free(buf);
exit(1);
}
@@ -870,7 +873,8 @@ static __u32 ok_features[3] = {
EXT3_FEATURE_COMPAT_HAS_JOURNAL |
EXT2_FEATURE_COMPAT_RESIZE_INODE |
EXT2_FEATURE_COMPAT_DIR_INDEX |
- EXT2_FEATURE_COMPAT_LAZY_BG, /* Compat */
+ EXT2_FEATURE_COMPAT_LAZY_BG |
+ EXT2_FEATURE_COMPAT_EXT_ATTR, /* Compat */
EXT2_FEATURE_INCOMPAT_FILETYPE| /* Incompat */
EXT3_FEATURE_INCOMPAT_JOURNAL_DEV|
EXT2_FEATURE_INCOMPAT_META_BG|
@@ -1557,6 +1561,9 @@ int main (int argc, char *argv[])
exit(1);
}
+ if (fs_param.s_flags & EXT2_FLAGS_TEST_FILESYS)
+ fs->super->s_flags |= EXT2_FLAGS_TEST_FILESYS;
+
/*
* Wipe out the old on-disk superblock
*/
diff --git a/misc/mke2fs.conf b/misc/mke2fs.conf
index 9e59123e..d67593a0 100644
--- a/misc/mke2fs.conf
+++ b/misc/mke2fs.conf
@@ -1,15 +1,19 @@
[defaults]
- base_features = sparse_super,filetype,resize_inode,dir_index
+ base_features = sparse_super,filetype,resize_inode,dir_index,ext_attr
blocksize = 4096
- inode_ratio = 8192
+ inode_size = 256
+ inode_ratio = 16384
[fs_types]
small = {
blocksize = 1024
+ inode_size = 128
inode_ratio = 4096
}
floppy = {
blocksize = 1024
+ inode_size = 128
+ inode_ratio = 8192
}
news = {
inode_ratio = 4096
diff --git a/misc/tune2fs.8.in b/misc/tune2fs.8.in
index 2e617db8..d1edbd99 100644
--- a/misc/tune2fs.8.in
+++ b/misc/tune2fs.8.in
@@ -61,6 +61,10 @@ tune2fs \- adjust tunable filesystem parameters on ext2/ext3 filesystems
.I mount-count
]
[
+.B \-E
+.I extended-options
+]
+[
.B \-L
.I volume-name
]
@@ -144,6 +148,21 @@ Remount filesystem read-only.
Cause a kernel panic.
.RE
.TP
+.BI \-E " extended-options"
+Set extended options for the filesystem. Extended options are comma
+separated, and may take an argument using the equals ('=') sign. The
+following extended options are supported:
+.RS 1.2i
+.TP
+.B test_fs
+Set a flag in the filesystem superblock indicating that it may be
+mounted using experimental kernel code, such as the ext4dev filesystem.
+.TP
+.B ^test_fs
+Clear the test_fs flag, indicating the filesystem should only be mounted
+using production-level filesystem code.
+.RE
+.TP
.B \-f
Force the tune2fs operation to complete even in the face of errors. This
option is useful when removing the
diff --git a/misc/tune2fs.c b/misc/tune2fs.c
index f64e9977..1792ce85 100644
--- a/misc/tune2fs.c
+++ b/misc/tune2fs.c
@@ -71,6 +71,7 @@ static unsigned short errors;
static int open_flag;
static char *features_cmd;
static char *mntopts_cmd;
+static char *extended_cmd;
int journal_size, journal_flags;
char *journal_device;
@@ -87,10 +88,10 @@ static void usage(void)
"\t[-i interval[d|m|w]] [-j] [-J journal_options]\n"
"\t[-l] [-s sparse_flag] [-m reserved_blocks_percent]\n"
"\t[-o [^]mount_options[,...]] [-r reserved_blocks_count]\n"
- "\t[-u user] [-C mount_count] [-L volume_label] "
- "[-M last_mounted_dir]\n"
- "\t[-O [^]feature[,...]] [-T last_check_time] [-U UUID]"
- " device\n"), program_name);
+ "\t[-u user] [-C mount_count] [-L volume_label]\n"
+ "\t[-M last_mounted_dir] [-O [^]feature[,...]]\n"
+ "\t[-E extended-option[,...]] [-T last_check_time] "
+ "[-U UUID] device\n"), program_name);
exit (1);
}
@@ -519,7 +520,7 @@ static void parse_tune2fs_options(int argc, char **argv)
struct passwd * pw;
printf("tune2fs %s (%s)\n", E2FSPROGS_VERSION, E2FSPROGS_DATE);
- while ((c = getopt(argc, argv, "c:e:fg:i:jlm:o:r:s:u:C:J:L:M:O:T:U:")) != EOF)
+ while ((c = getopt(argc, argv, "c:e:fg:i:jlm:o:r:s:u:C:E:J:L:M:O:T:U:")) != EOF)
switch (c)
{
case 'c':
@@ -562,6 +563,10 @@ static void parse_tune2fs_options(int argc, char **argv)
e_flag = 1;
open_flag = EXT2_FLAG_RW;
break;
+ case 'E':
+ extended_cmd = optarg;
+ open_flag = EXT2_FLAG_RW;
+ break;
case 'f': /* Force */
f_flag = 1;
break;
@@ -753,6 +758,57 @@ void do_findfs(int argc, char **argv)
exit(0);
}
+static void parse_extended_opts(ext2_filsys fs, const char *opts)
+{
+ char *buf, *token, *next, *p, *arg;
+ int len;
+ int r_usage = 0;
+
+ len = strlen(opts);
+ buf = malloc(len+1);
+ if (!buf) {
+ fprintf(stderr,
+ _("Couldn't allocate memory to parse options!\n"));
+ exit(1);
+ }
+ strcpy(buf, opts);
+ for (token = buf; token && *token; token = next) {
+ p = strchr(token, ',');
+ next = 0;
+ if (p) {
+ *p = 0;
+ next = p+1;
+ }
+ arg = strchr(token, '=');
+ if (arg) {
+ *arg = 0;
+ arg++;
+ }
+ if (!strcmp(token, "test_fs")) {
+ fs->super->s_flags |= EXT2_FLAGS_TEST_FILESYS;
+ printf("Setting test filesystem flag\n");
+ ext2fs_mark_super_dirty(fs);
+ } else if (!strcmp(token, "^test_fs")) {
+ fs->super->s_flags &= ~EXT2_FLAGS_TEST_FILESYS;
+ printf("Clearing test filesystem flag\n");
+ ext2fs_mark_super_dirty(fs);
+ } else
+ r_usage++;
+ }
+ if (r_usage) {
+ fprintf(stderr, _("\nBad options specified.\n\n"
+ "Extended options are separated by commas, "
+ "and may take an argument which\n"
+ "\tis set off by an equals ('=') sign.\n\n"
+ "Valid extended options are:\n"
+ "\ttest_fs\n"
+ "\t^test_fs\n"));
+ free(buf);
+ exit(1);
+ }
+ free(buf);
+}
+
int main (int argc, char ** argv)
{
@@ -916,6 +972,8 @@ int main (int argc, char ** argv)
update_mntopts(fs, mntopts_cmd);
if (features_cmd)
update_feature_set(fs, features_cmd);
+ if (extended_cmd)
+ parse_extended_opts(fs, extended_cmd);
if (journal_size || journal_device)
add_journal(fs);
diff --git a/misc/uuidd.8.in b/misc/uuidd.8.in
index e45297d0..e65e3916 100644
--- a/misc/uuidd.8.in
+++ b/misc/uuidd.8.in
@@ -64,11 +64,11 @@ UUID's.
.TP
.BI \-p " pidfile"
Specify the pathname where the pid file should be written. By default,
-the pid file is written to /var/run/uuidd.pid.
+the pid file is written to /var/lib/libuuid/uuidd.pid.
.TP
.BI \-s " socketpath"
Specify the pathname used for the unix-domain socket used by uuidd. By
-qdefault, the pathname used is /var/run/uuidd.sock. This is primarily
+default, the pathname used is /var/lib/libuuid/request. This is primarily
for debugging purposes, since the pathname is hard-coded in the libuuid
library.
.TP
diff --git a/po/sv.gmo b/po/sv.gmo
index 394b4e33..fe59460e 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index 079ecc13..e45c3ca2 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,8 +1,9 @@
# Swedish messages for e2fsprogs.
-# Copyright © 2003, 2005, 2006 Free Software Foundation, Inc.
-# Göran Uddeborg <goeran@uddeborg.se>, 2003, 2005, 2006.
+# Copyright © 2003, 2005, 2006, 2008 Free Software Foundation, Inc.
+# This file is distributed under the same license as the e2fsprogs package.
+# Göran Uddeborg <goeran@uddeborg.se>, 2003, 2005, 2006, 2008.
#
-# $Revision: 1.29 $
+# $Revision: 1.34 $
#
#. The strings in e2fsck's problem.c can be very hard to translate,
#. since the strings are expanded in two different ways. First of all,
@@ -64,10 +65,10 @@
#.
msgid ""
msgstr ""
-"Project-Id-Version: e2fsprogs 1.40.1\n"
+"Project-Id-Version: e2fsprogs 1.40.4\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
"POT-Creation-Date: 2007-12-05 19:25-0500\n"
-"PO-Revision-Date: 2007-07-24 23:06+0200\n"
+"PO-Revision-Date: 2008-01-20 15:15+0100\n"
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"MIME-Version: 1.0\n"
@@ -890,8 +891,7 @@ msgstr "Extern journal stödjer inte detta filsystem\n"
#: e2fsck/problem.c:212
msgid ""
"Ext3 @j @S is unknown type %N (unsupported).\n"
-"It is likely that your copy of e2fsck is old and/or doesn't support this @j "
-"format.\n"
+"It is likely that your copy of e2fsck is old and/or doesn't support this @j format.\n"
"It is also possible the @j @S is corrupt.\n"
msgstr ""
"Ext3-journalsuperblock är av okänd typ %N (ej stött).\n"
@@ -913,8 +913,7 @@ msgstr "superblock har inte har-journal-flagga, men har ext3-journal %s.\n"
#. @-expanded: superblock has ext3 needs_recovery flag set, but no journal.\n
#: e2fsck/problem.c:230
msgid "@S has ext3 needs_recovery flag set, but no @j.\n"
-msgstr ""
-"superblock har ext3-behöver-rättas-flagga satt, men har ext3-journal %s.\n"
+msgstr "superblock har ext3-behöver-rättas-flagga satt, men har ext3-journal %s.\n"
#. @-expanded: ext3 recovery flag is clear, but journal has data.\n
#: e2fsck/problem.c:235
@@ -939,8 +938,7 @@ msgstr "Rättningsflagga inte satt i reservsuperblock, så kör journal ändå.\n"
#. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n
#: e2fsck/problem.c:255
msgid "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n"
-msgstr ""
-"%s föräldralös inod %i (uid=%Iu, gid=%Ig, rättighet=%Im, storlek=%Is)\n"
+msgstr "%s föräldralös inod %i (uid=%Iu, gid=%Ig, rättighet=%Im, storlek=%Is)\n"
#. @-expanded: illegal block #%B (%b) found in orphaned inode %i.\n
#: e2fsck/problem.c:260
@@ -967,8 +965,7 @@ msgstr "Ogiltig inod %i i föräldralös inodlista.\n"
#. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.
#: e2fsck/problem.c:280 e2fsck/problem.c:613
msgid "@f has feature flag(s) set, but is a revision 0 @f. "
-msgstr ""
-"filsystemet har funktionsflaggor satta, men är ett revision 0-filsystem. "
+msgstr "filsystemet har funktionsflaggor satta, men är ett revision 0-filsystem. "
#. @-expanded: Ext3 journal superblock has an unknown read-only feature flag set.\n
#: e2fsck/problem.c:285
@@ -1043,8 +1040,7 @@ msgstr ""
#. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.
#: e2fsck/problem.c:327
msgid "Resize_@i not enabled, but the resize @i is non-zero. "
-msgstr ""
-"Resize_inode är inte aktiverat, men storleksändringsinoden är inte noll. "
+msgstr "Resize_inode är inte aktiverat, men storleksändringsinoden är inte noll. "
#. @-expanded: Resize inode not valid.
#: e2fsck/problem.c:332
@@ -1118,20 +1114,17 @@ msgstr "Inod %i är en nollängds katalog. "
#. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
#: e2fsck/problem.c:392
msgid "@g %g's @b @B at %b @C.\n"
-msgstr ""
-"Grupp %g:s blockbitkarta vid %b står i konflikt med annat filsystemblock.\n"
+msgstr "Grupp %g:s blockbitkarta vid %b står i konflikt med annat filsystemblock.\n"
#. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
#: e2fsck/problem.c:397
msgid "@g %g's @i @B at %b @C.\n"
-msgstr ""
-"Grupp %g:s inodbitkarta vid %b står i konflikt med annat filsystemblock.\n"
+msgstr "Grupp %g:s inodbitkarta vid %b står i konflikt med annat filsystemblock.\n"
#. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
#: e2fsck/problem.c:402
msgid "@g %g's @i table at %b @C.\n"
-msgstr ""
-"Grupp %g:s inodtabell vid %b står i konflikt med annat filsystemblock.\n"
+msgstr "Grupp %g:s inodtabell vid %b står i konflikt med annat filsystemblock.\n"
#. @-expanded: group %g's block bitmap (%b) is bad.
#: e2fsck/problem.c:407
@@ -1193,8 +1186,7 @@ msgstr "Duplicerat eller felaktigt block används!\n"
#. @-expanded: Bad block %b used as bad block inode indirect block.
#: e2fsck/problem.c:462
msgid "Bad @b %b used as bad @b @i indirect @b. "
-msgstr ""
-"Felaktigt block %b använt som indirektblock för inod för dåliga block. "
+msgstr "Felaktigt block %b använt som indirektblock för inod för dåliga block. "
#. @-expanded: \n
#. @-expanded: The bad block inode has probably been corrupted. You probably\n
@@ -1243,8 +1235,7 @@ msgstr "Det primära superblocket (%b) är på listan över dåliga block.\n"
#. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
#: e2fsck/problem.c:490
msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
-msgstr ""
-"Block %b i de primära gruppbeskrivarna är på listan över dåliga block\n"
+msgstr "Block %b i de primära gruppbeskrivarna är på listan över dåliga block\n"
#. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
#: e2fsck/problem.c:496
@@ -1254,21 +1245,17 @@ msgstr "Varning: Grupp %g:s superblock (%b) är dåligt.\n"
#. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
#: e2fsck/problem.c:501
msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n"
-msgstr ""
-"Varning: Grupp %g:s kopia av gruppbeskrivarna har ett dåligt block (%b).\n"
+msgstr "Varning: Grupp %g:s kopia av gruppbeskrivarna har ett dåligt block (%b).\n"
#. @-expanded: Programming error? block #%b claimed for no reason in process_bad_block.\n
#: e2fsck/problem.c:507
msgid "Programming error? @b #%b claimed for no reason in process_bad_@b.\n"
-msgstr ""
-"Programmeringsfel? Block nr. %b tas i anspråk utan anledning i "
-"process_bad_block.\n"
+msgstr "Programmeringsfel? Block nr. %b tas i anspråk utan anledning i process_bad_block.\n"
#. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
#: e2fsck/problem.c:513
msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
-msgstr ""
-"Fel vid allokering av %N konsekutiva block i blockgrupp %g för %s: %m\n"
+msgstr "Fel vid allokering av %N konsekutiva block i blockgrupp %g för %s: %m\n"
#. @-expanded: error allocating block buffer for relocating %s\n
#: e2fsck/problem.c:518
@@ -1339,9 +1326,7 @@ msgstr "Fel vid lagring av inodsräknarinformation (inod=%i, antal=%N): %m\n"
#. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
#: e2fsck/problem.c:578
msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n"
-msgstr ""
-"Fel vid lagring av katalogblocksinformation (inod=%i, block=%b, antal=%N): %"
-"m\n"
+msgstr "Fel vid lagring av katalogblocksinformation (inod=%i, block=%b, antal=%N): %m\n"
#. @-expanded: Error reading inode %i: %m\n
#: e2fsck/problem.c:584
@@ -1370,8 +1355,7 @@ msgstr ""
#: e2fsck/problem.c:603
#, c-format
msgid "@i %i has @cion flag set on @f without @cion support. "
-msgstr ""
-"Inod %i har kompressionsflagga satt på filsystem utan kompressionsstöd. "
+msgstr "Inod %i har kompressionsflagga satt på filsystem utan kompressionsstöd. "
#. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.
#: e2fsck/problem.c:608
@@ -1549,16 +1533,12 @@ msgstr "Utökat attribut i inod %i har en värdeposition (%N) som är ogiltig\n"
#. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
#: e2fsck/problem.c:774
msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n"
-msgstr ""
-"Utökat attribut i inod %i har ett värdeblock (%N) som är ogiltigt (måste "
-"vara 0)\n"
+msgstr "Utökat attribut i inod %i har ett värdeblock (%N) som är ogiltigt (måste vara 0)\n"
#. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid (must be 0)\n
#: e2fsck/problem.c:779
msgid "@a in @i %i has a hash (%N) which is @n (must be 0)\n"
-msgstr ""
-"Utökat attribut i inod %i har en kontrollsumma (%N) som är ogiltig (måste "
-"vara 0)\n"
+msgstr "Utökat attribut i inod %i har en kontrollsumma (%N) som är ogiltig (måste vara 0)\n"
#. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
#: e2fsck/problem.c:784
@@ -1575,8 +1555,7 @@ msgid ""
"Pass 1B: Rescanning for @m @bs\n"
msgstr ""
"\n"
-"Kör ytterliggare pass för att lösa upp block som används av mer än en "
-"inod ...\n"
+"Kör ytterliggare pass för att lösa upp block som används av mer än en inod ...\n"
"Pass 1B: Söker igen efter block som används flera gånger\n"
#. @-expanded: multiply-claimed block(s) in inode %i:
@@ -1605,15 +1584,12 @@ msgstr "Fel vid iterering över block i inod %i (%s): %m\n"
#. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
#: e2fsck/problem.c:827 e2fsck/problem.c:1143
msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
-msgstr ""
-"Fel vid justering av referensräknare för externa attribut-block %b (inod %"
-"i): %m\n"
+msgstr "Fel vid justering av referensräknare för externa attribut-block %b (inod %i): %m\n"
#. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
#: e2fsck/problem.c:833
msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
-msgstr ""
-"Pass 1C: Söker kataloger efter inoder med flerfaldigt ianspråkstagna block\n"
+msgstr "Pass 1C: Söker kataloger efter inoder med flerfaldigt ianspråkstagna block\n"
#. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
#: e2fsck/problem.c:839
@@ -1694,8 +1670,7 @@ msgstr "Post \"%Dn\" i %p (%i) är en länk till \".\" "
#. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
#: e2fsck/problem.c:909
msgid "@E points to @i (%Di) located in a bad @b.\n"
-msgstr ""
-"Post \"%Dn\" i %p (%i) pekar på inod (%Di) som finns i ett trasigt block.\n"
+msgstr "Post \"%Dn\" i %p (%i) pekar på inod (%Di) som finns i ett trasigt block.\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
#: e2fsck/problem.c:914
@@ -1727,8 +1702,7 @@ msgstr "\"..\" saknas i kataloginod %i.\n"
#. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
#: e2fsck/problem.c:939
msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
-msgstr ""
-"Första post \"%Dn\" (inod=%Di) i kataloginod %i (%p) skulle varit \".\"\n"
+msgstr "Första post \"%Dn\" (inod=%Di) i kataloginod %i (%p) skulle varit \".\"\n"
#. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
#: e2fsck/problem.c:944
@@ -1881,8 +1855,7 @@ msgstr "Sätter filtyp för post \"%Dn\" i %p (%i) till %N.\n"
#. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
#: e2fsck/problem.c:1084
msgid "@E has an incorrect filetype (was %Dt, @s %N).\n"
-msgstr ""
-"Post \"%Dn\" i %p (%i) har felaktig filtyp (var %Dt, skulle varit %N).\n"
+msgstr "Post \"%Dn\" i %p (%i) har felaktig filtyp (var %Dt, skulle varit %N).\n"
#. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n
#: e2fsck/problem.c:1089
@@ -1907,9 +1880,7 @@ msgstr "Utökat attribut-block för inod %i (%Q) är ogiltigt (%If).\n"
#. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
#: e2fsck/problem.c:1109
msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
-msgstr ""
-"Filsystem innehåller stora filer, men saknar flaggan LARGE_FILE i "
-"superblock.\n"
+msgstr "Filsystem innehåller stora filer, men saknar flaggan LARGE_FILE i superblock.\n"
#. @-expanded: problem in HTREE directory inode %d: node (%B) not referenced\n
#: e2fsck/problem.c:1114
@@ -1962,8 +1933,7 @@ msgstr ""
#. @-expanded: problem in HTREE directory inode %d: node (%B) has an unordered hash table\n
#: e2fsck/problem.c:1163
msgid "@p @h %d: node (%B) has an unordered hash table\n"
-msgstr ""
-"Problem i HTREE-katalognod %d (%q): not (%B) har en oordnat hash-tabell\n"
+msgstr "Problem i HTREE-katalognod %d (%q): not (%B) har en oordnat hash-tabell\n"
#. @-expanded: problem in HTREE directory inode %d: node (%B) has invalid depth\n
#: e2fsck/problem.c:1168
@@ -2079,8 +2049,7 @@ msgstr "ext2fs_new_dir_block: %m när nytt katalogblock skapades\n"
#: e2fsck/problem.c:1260
#, c-format
msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"
-msgstr ""
-"ext2fs_write_dir_block: %m vid skrivning av katalogblocket för /lost+found\n"
+msgstr "ext2fs_write_dir_block: %m vid skrivning av katalogblocket för /lost+found\n"
#. @-expanded: Error while adjusting inode count on inode %i\n
#: e2fsck/problem.c:1265
@@ -2107,8 +2076,7 @@ msgid ""
"Couldn't fix parent of @i %i: Couldn't find parent @d @e\n"
"\n"
msgstr ""
-"Kunde inte rätta förälder till inod %i: Kunde inte hitta "
-"förälderkatalogpost\n"
+"Kunde inte rätta förälder till inod %i: Kunde inte hitta förälderkatalogpost\n"
"\n"
#. @-expanded: Error creating root directory (%s): %m\n
@@ -2187,8 +2155,7 @@ msgid ""
"@i_link_info[%i] is %N, @i.i_links_count is %Il. They @s the same!\n"
msgstr ""
"VARNING: PROGRAMMERINGSFEL I E2FSCK!\n"
-" ELLER NÅGON KLANTSKALLE (DU) KONTROLLERAR ETT MONTERAT (AKTIVT) "
-"FILSYSTEM.\n"
+" ELLER NÅGON KLANTSKALLE (DU) KONTROLLERAR ETT MONTERAT (AKTIVT) FILSYSTEM.\n"
"inod_link_info[%i] är %N, inod.i_links_count är %Il. De skulle vara samma!\n"
#. @-expanded: Pass 5: Checking group summary information\n
@@ -2244,9 +2211,7 @@ msgstr "Antal fria block är fel (%b, räknade=%c).\n"
#. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap
#. @-expanded: endpoints (%i, %j)\n
#: e2fsck/problem.c:1458
-msgid ""
-"PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B "
-"endpoints (%i, %j)\n"
+msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n"
msgstr ""
"PROGRAMMERINGSFEL: filsystem (nr. %N) bitkartas ändpunkter (%b, %c) stämmer\n"
"inte med beräknade bitkarteändpunkter (%i, %j)\n"
@@ -2377,8 +2342,7 @@ msgid ""
" -p Automatic repair (no questions)\n"
" -n Make no changes to the filesystem\n"
" -y Assume \"yes\" to all questions\n"
-" -c Check for bad blocks and add them to the badblock "
-"list\n"
+" -c Check for bad blocks and add them to the badblock list\n"
" -f Force checking even if filesystem is marked clean\n"
msgstr ""
"\n"
@@ -2387,8 +2351,7 @@ msgstr ""
" -n Gör inga förändringar av filsystemet\n"
" -y Anta \"ja\" som svar på alla frågor\n"
" -c Leta efter dåliga block och lägg till dem i listan\n"
-" -f Framtvinga kontroll även om filsystemet är markerat "
-"rent\n"
+" -f Framtvinga kontroll även om filsystemet är markerat rent\n"
#: e2fsck/unix.c:86
#, c-format
@@ -2475,7 +2438,7 @@ msgstr " var inte fläckfritt avmonterat"
#: e2fsck/unix.c:284
msgid " primary superblock features different from backup"
-msgstr ""
+msgstr " det primära superblockets egenskaper skiljer från reservens"
#: e2fsck/unix.c:288
#, c-format
@@ -2554,8 +2517,7 @@ msgstr "Flaggan -t stödjs inte i denna version av e2fsck.\n"
#: e2fsck/unix.c:747
#, c-format
msgid "Byte-swapping filesystems not compiled in this version of e2fsck\n"
-msgstr ""
-"Byteväxling av filsystem är inte inkompilerat i denna version av e2fsck\n"
+msgstr "Byteväxling av filsystem är inte inkompilerat i denna version av e2fsck\n"
#: e2fsck/unix.c:770 misc/tune2fs.c:459 misc/tune2fs.c:717 misc/tune2fs.c:734
#, c-format
@@ -2578,6 +2540,8 @@ msgid ""
"E2FSCK_JBD_DEBUG \"%s\" not an integer\n"
"\n"
msgstr ""
+"E2FSCK_JBD_DEBUG \"%s\" är inte ett heltal\n"
+"\n"
#: e2fsck/unix.c:864
#, c-format
@@ -2586,6 +2550,9 @@ msgid ""
"Invalid non-numeric argument to -%c (\"%s\")\n"
"\n"
msgstr ""
+"\n"
+"Ogiltigt ickenumerikst argument till -%c (\"%s\")\n"
+"\n"
#: e2fsck/unix.c:903
#, c-format
@@ -2606,13 +2573,13 @@ msgid "need terminal for interactive repairs"
msgstr "behöver terminal för interaktiva reparationer"
#: e2fsck/unix.c:977
-#, fuzzy, c-format
+#, c-format
msgid "%s: %s trying backup blocks...\n"
-msgstr "%s försöker med reservblock ...\n"
+msgstr "%s: %s försöker med reservblock ...\n"
#: e2fsck/unix.c:979
msgid "Superblock invalid,"
-msgstr ""
+msgstr "Superblocket är ogiltigt,"
#: e2fsck/unix.c:980
msgid "Group descriptors look bad..."
@@ -2669,12 +2636,8 @@ msgstr "vid kontroll av ext3-journal för %s"
#: e2fsck/unix.c:1109
#, c-format
-msgid ""
-"Warning: skipping journal recovery because doing a read-only filesystem "
-"check.\n"
-msgstr ""
-"Varning: hoppar över journalåterhämtning eftersom en läsningskontroll av "
-"filsystem görs.\n"
+msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n"
+msgstr "Varning: hoppar över journalåterhämtning eftersom en läsningskontroll av filsystem görs.\n"
#: e2fsck/unix.c:1122
#, c-format
@@ -2928,13 +2891,11 @@ msgstr "klar \n"
#, c-format
msgid ""
"Usage: %s [-b block_size] [-i input_file] [-o output_file] [-svwnf]\n"
-" [-c blocks_at_once] [-p num_passes] [-t test_pattern [-t test_pattern "
-"[...]]]\n"
+" [-c blocks_at_once] [-p num_passes] [-t test_pattern [-t test_pattern [...]]]\n"
" device [last_block [start_block]]\n"
msgstr ""
"Användning: %s [-b blockstorlek] [-i infil] [-o utfile] [-svwnf]\n"
-" [-c block_åt_gången] [-p antal_pass] [-t testmönster [-t testmönster "
-"[...]]]\n"
+" [-c block_åt_gången] [-p antal_pass] [-t testmönster [-t testmönster [...]]]\n"
" enhet [sista_block [start_block]]\n"
#: misc/badblocks.c:88
@@ -3444,10 +3405,8 @@ msgstr "Kunde inte allokera minne för filsystemtyper\n"
#: misc/fsck.c:875
#, c-format
-msgid ""
-"%s: skipping bad line in /etc/fstab: bind mount with nonzero fsck pass "
-"number\n"
-msgstr ""
+msgid "%s: skipping bad line in /etc/fstab: bind mount with nonzero fsck pass number\n"
+msgstr "%s: hoppar över felaktig rad i /etc/fstab: bind-montering med fsck-passnummer som inte är noll\n"
#: misc/fsck.c:902
#, c-format
@@ -3464,11 +3423,8 @@ msgid "--waiting-- (pass %d)\n"
msgstr "--väntar-- (pass %d)\n"
#: misc/fsck.c:1064
-msgid ""
-"Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
-msgstr ""
-"Användning: fsck [-ANPRTV] [ -C [ fh ] ] [-t fstyp] [fs-flaggor] "
-"[filsys ...]\n"
+msgid "Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
+msgstr "Användning: fsck [-ANPRTV] [ -C [ fh ] ] [-t fstyp] [fs-flaggor] [filsys ...]\n"
#: misc/fsck.c:1106
#, c-format
@@ -3496,7 +3452,7 @@ msgid "While reading version on %s"
msgstr "Vid läsning av version på %s"
#: misc/mke2fs.c:97
-#, fuzzy, c-format
+#, c-format
msgid ""
"Usage: %s [-c|-t|-l filename] [-b block-size] [-f fragment-size]\n"
"\t[-i bytes-per-inode] [-I inode-size] [-j] [-J journal-options]\n"
@@ -3509,7 +3465,7 @@ msgstr ""
"\t[-i byte-per-inod] [-I inodstorlek] [-j] [-J journalflaggor]\n"
"\t[-N antal-inoder] [-m reservade-block-procent] [-o skapar-os]\n"
"\t[-g block-per-grupp] [-L volymetikett] [-M senast-monterad-katalog]\n"
-"\t[-O funktion[,...]] [-r fs-revision] [-R flaggor] [-qvSV]\n"
+"\t[-O funktion[,...]] [-r fs-revision] [-E utökad-flagga[,...]] [-qvSV]\n"
"\tenhet [blockantal]\n"
#: misc/mke2fs.c:197
@@ -3727,8 +3683,7 @@ msgstr "Ogiltig storleksändringsparameter: %s\n"
#: misc/mke2fs.c:819
#, c-format
msgid "The resize maximum must be greater than the filesystem size.\n"
-msgstr ""
-"Storleksändringens maximum måste vara större än filsystemets storlek.\n"
+msgstr "Storleksändringens maximum måste vara större än filsystemets storlek.\n"
#: misc/mke2fs.c:843
#, c-format
@@ -3752,8 +3707,7 @@ msgstr ""
"\n"
"Felaktiga flaggor angivna.\n"
"\n"
-"Utökade flaggor separeras med komman, och kan ta ett argument som avdelas "
-"med\n"
+"Utökade flaggor separeras med komman, och kan ta ett argument som avdelas med\n"
"\tett likhetstecken (\"=\").\n"
"\n"
"Giltiga utökade flaggor är:\n"
@@ -3849,10 +3803,8 @@ msgstr "%d-byteblock för stort för systemet (max %d)"
#: misc/mke2fs.c:1211
#, c-format
-msgid ""
-"Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
-msgstr ""
-"Varning: %d-byteblock för stort för systemet (max %d), tvingas fortsätta\n"
+msgid "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
+msgstr "Varning: %d-byteblock för stort för systemet (max %d), tvingas fortsätta\n"
# "Ett" för att detta sätts in i annan sträng där det föregås av "a".
# Även "journal" kan sättas in på samma plats. Felrapporterat.
@@ -3909,9 +3861,7 @@ msgstr "vid försök att avgöra hårdvarusektorstorlek"
#: misc/mke2fs.c:1428
msgid "reserved online resize blocks not supported on non-sparse filesystem"
-msgstr ""
-"reserverade block för storleksändring under drift stöds inte på icke-glesa "
-"filsystem"
+msgstr "reserverade block för storleksändring under drift stöds inte på icke-glesa filsystem"
#: misc/mke2fs.c:1437
msgid "blocks per group count out of range"
@@ -4546,6 +4496,3 @@ msgstr "metadatablock"
#, c-format
msgid "Should never happen: resize inode corrupt!\n"
msgstr "Skulle aldrig inträffa: storleksändringsinoden trasig!\n"
-
-#~ msgid "Couldn't find ext2 superblock,"
-#~ msgstr "Kunde inte hitta ext2-superblock,"
diff --git a/resize/main.c b/resize/main.c
index 7db4ebc3..f283e412 100644
--- a/resize/main.c
+++ b/resize/main.c
@@ -413,10 +413,12 @@ int main (int argc, char ** argv)
if ((st_buf.st_size > new_file_size) &&
(fd > 0)) {
-#ifdef HAVE_FSTAT64
+#ifdef HAVE_FTRUNCATE64
ftruncate64(fd, new_file_size);
#else
- ftruncate(fd, (off_t) new_file_size);
+ /* Only truncate if new_file_size doesn't overflow off_t */
+ if (((off_t) new_file_size) == new_file_size)
+ ftruncate(fd, (off_t) new_file_size);
#endif
}
if (fd > 0)
diff --git a/resize/resize2fs.8.in b/resize/resize2fs.8.in
index c030def8..d43adadd 100644
--- a/resize/resize2fs.8.in
+++ b/resize/resize2fs.8.in
@@ -60,7 +60,7 @@ parameter is not specified, it will default to the size of the partition.
The
.B resize2fs
program does not manipulate the size of partitions. If you wish to enlarge
-a filesystem, you must first make sure you can expand the size of the
+a filesystem, you must make sure you can expand the size of the
underlying partition first. This can be done using
.BR fdisk (8)
by deleting the partition and recreating it with a larger size or using
diff --git a/tests/m_dasd_bs/expect.1 b/tests/m_dasd_bs/expect.1
index fd978ba4..ffaa4aae 100644
--- a/tests/m_dasd_bs/expect.1
+++ b/tests/m_dasd_bs/expect.1
@@ -15,7 +15,7 @@ Superblock backups stored on blocks:
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
-Filesystem features: resize_inode dir_index filetype sparse_super
+Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
@@ -29,7 +29,7 @@ Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
-Filesystem features: resize_inode dir_index filetype sparse_super
+Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
diff --git a/tests/m_large_file/expect.1 b/tests/m_large_file/expect.1
index a863e965..2323eac4 100644
--- a/tests/m_large_file/expect.1
+++ b/tests/m_large_file/expect.1
@@ -1,3 +1,4 @@
+Warning: 256-byte inodes not usable on older systems
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
@@ -13,21 +14,21 @@ Maximum filesystem blocks=16777216
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
-Filesystem features: resize_inode dir_index filetype sparse_super large_file
+Filesystem features: ext_attr resize_inode dir_index filetype sparse_super large_file
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
-test_filesys: 11/64 files (9.1% non-contiguous), 15/16384 blocks
+test_filesys: 11/64 files (9.1% non-contiguous), 17/16384 blocks
Exit status is 0
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
-Filesystem features: resize_inode dir_index filetype sparse_super large_file
+Filesystem features: ext_attr resize_inode dir_index filetype sparse_super large_file
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
@@ -35,7 +36,7 @@ Filesystem OS type: Linux
Inode count: 64
Block count: 16384
Reserved block count: 819
-Free blocks: 16369
+Free blocks: 16367
Free inodes: 53
First block: 0
Block size: 4096
@@ -44,13 +45,13 @@ Reserved GDT blocks: 3
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 64
-Inode blocks per group: 2
+Inode blocks per group: 4
Mount count: 0
Check interval: 15552000 (6 months)
Reserved blocks uid: 0
Reserved blocks gid: 0
First inode: 11
-Inode size: 128
+Inode size: 256
Default directory hash: tea
@@ -58,7 +59,7 @@ Group 0: (Blocks 0-16383)
Primary superblock at 0, Group descriptors at 1-1
Reserved GDT blocks at 2-4
Block bitmap at 5 (+5), Inode bitmap at 6 (+6)
- Inode table at 7-8 (+7)
- 16369 free blocks, 53 free inodes, 2 directories
- Free blocks: 15-16383
+ Inode table at 7-10 (+7)
+ 16367 free blocks, 53 free inodes, 2 directories
+ Free blocks: 17-16383
Free inodes: 12-64
diff --git a/tests/m_meta_bg/expect.1 b/tests/m_meta_bg/expect.1
index 2e9c5da4..95fb7082 100644
--- a/tests/m_meta_bg/expect.1
+++ b/tests/m_meta_bg/expect.1
@@ -15,7 +15,7 @@ Superblock backups stored on blocks:
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
-Filesystem features: resize_inode dir_index filetype meta_bg sparse_super
+Filesystem features: ext_attr resize_inode dir_index filetype meta_bg sparse_super
Pass 1: Checking inodes, blocks, and sizes
Reserved inode 9 (<Reserved inode 9>) has invalid mode. Clear? yes
@@ -71,7 +71,7 @@ Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
-Filesystem features: resize_inode dir_index filetype meta_bg sparse_super
+Filesystem features: ext_attr resize_inode dir_index filetype meta_bg sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
diff --git a/tests/m_raid_opt/expect.1 b/tests/m_raid_opt/expect.1
index 44c5b46d..28e11645 100644
--- a/tests/m_raid_opt/expect.1
+++ b/tests/m_raid_opt/expect.1
@@ -15,7 +15,7 @@ Superblock backups stored on blocks:
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
-Filesystem features: resize_inode dir_index filetype meta_bg sparse_super
+Filesystem features: ext_attr resize_inode dir_index filetype meta_bg sparse_super
Resize inode not valid. Recreate? yes
@@ -133,7 +133,7 @@ Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
-Filesystem features: resize_inode dir_index filetype meta_bg sparse_super
+Filesystem features: ext_attr resize_inode dir_index filetype meta_bg sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
diff --git a/tests/m_std/expect.1 b/tests/m_std/expect.1
index 41592595..376d1882 100644
--- a/tests/m_std/expect.1
+++ b/tests/m_std/expect.1
@@ -15,7 +15,7 @@ Superblock backups stored on blocks:
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
-Filesystem features: resize_inode dir_index filetype sparse_super
+Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
@@ -29,7 +29,7 @@ Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
-Filesystem features: resize_inode dir_index filetype sparse_super
+Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
diff --git a/tests/r_move_itable/expect b/tests/r_move_itable/expect
index a28f2a4a..e5145531 100644
--- a/tests/r_move_itable/expect
+++ b/tests/r_move_itable/expect
@@ -18,7 +18,7 @@ Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
-Filesystem features: resize_inode dir_index filetype sparse_super
+Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
@@ -319,7 +319,7 @@ Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
-Filesystem features: resize_inode dir_index filetype sparse_super
+Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
@@ -856,7 +856,7 @@ Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
-Filesystem features: resize_inode dir_index filetype sparse_super
+Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
@@ -1629,7 +1629,7 @@ Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
-Filesystem features: resize_inode dir_index filetype sparse_super
+Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
diff --git a/tests/r_resize_inode/expect b/tests/r_resize_inode/expect
index ecd0b7b3..129cdc40 100644
--- a/tests/r_resize_inode/expect
+++ b/tests/r_resize_inode/expect
@@ -16,7 +16,7 @@ Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
-Filesystem features: resize_inode dir_index filetype sparse_super
+Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
@@ -464,7 +464,7 @@ Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
-Filesystem features: resize_inode dir_index filetype sparse_super
+Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
@@ -621,7 +621,7 @@ Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
-Filesystem features: resize_inode dir_index filetype sparse_super
+Filesystem features: ext_attr resize_inode dir_index filetype sparse_super
Default mount options: (none)
Filesystem state: clean
Errors behavior: Continue
diff --git a/version.h b/version.h
index b2c09791..f480a1d0 100644
--- a/version.h
+++ b/version.h
@@ -7,5 +7,5 @@
* redistributed under the GNU Public License.
*/
-#define E2FSPROGS_VERSION "1.40.4"
-#define E2FSPROGS_DATE "31-Dec-2007"
+#define E2FSPROGS_VERSION "1.40.5"
+#define E2FSPROGS_DATE "27-Jan-2008"