aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ci.yml90
-rw-r--r--MCONFIG.in3
-rwxr-xr-xconfigure937
-rw-r--r--configure.ac103
-rw-r--r--debian/changelog52
-rw-r--r--debian/control22
-rw-r--r--debian/copyright87
-rwxr-xr-xdebian/e2fsprogs.install8
-rw-r--r--debian/e2fsprogs.lintian-overrides1
-rw-r--r--debian/e2fsprogs.shlibs.local4
-rw-r--r--debian/libext2fs2t64.install (renamed from debian/libext2fs2.install)0
-rw-r--r--debian/libext2fs2t64.lintian-overrides1
-rw-r--r--debian/libext2fs2t64.postrm12
-rw-r--r--debian/libext2fs2t64.preinst12
-rw-r--r--debian/libext2fs2t64.symbols (renamed from debian/libext2fs2.symbols)8
-rwxr-xr-xdebian/rules11
-rw-r--r--debian/shlibs.local2
-rw-r--r--debugfs/Makefile.in25
-rw-r--r--debugfs/debugfs.8.in17
-rw-r--r--debugfs/debugfs.c171
-rw-r--r--debugfs/debugfs.h209
-rw-r--r--debugfs/do_journal.c8
-rw-r--r--debugfs/dump.c6
-rw-r--r--debugfs/extent_inode.c52
-rw-r--r--debugfs/filefrag.c2
-rw-r--r--debugfs/htree.c38
-rw-r--r--debugfs/icheck.c2
-rw-r--r--debugfs/journal.c24
-rw-r--r--debugfs/logdump.c13
-rw-r--r--debugfs/ls.c2
-rw-r--r--debugfs/lsdel.c2
-rw-r--r--debugfs/ncheck.c2
-rw-r--r--debugfs/quota.c4
-rw-r--r--debugfs/set_fields.c97
-rw-r--r--debugfs/unused.c2
-rw-r--r--debugfs/util.c14
-rw-r--r--debugfs/xattrs.c8
-rw-r--r--debugfs/zap.c4
-rw-r--r--e2fsck/e2fsck.h3
-rw-r--r--e2fsck/ea_refcount.c4
-rw-r--r--e2fsck/extents.c9
-rw-r--r--e2fsck/iscan.c3
-rw-r--r--e2fsck/journal.c3
-rw-r--r--e2fsck/message.c2
-rw-r--r--e2fsck/pass1.c16
-rw-r--r--e2fsck/pass2.c153
-rw-r--r--e2fsck/pass3.c8
-rw-r--r--e2fsck/problem.c4
-rw-r--r--e2fsck/rehash.c27
-rw-r--r--e2fsck/sigcatcher.c2
-rw-r--r--e2fsck/super.c19
-rw-r--r--e2fsck/unix.c13
-rw-r--r--e2fsck/util.c92
-rw-r--r--lib/blkid/blkidP.h7
-rw-r--r--lib/blkid/read.c9
-rw-r--r--lib/config.h.in9
-rw-r--r--lib/e2p/ls.c32
-rw-r--r--lib/ext2fs/Makefile.in42
-rw-r--r--lib/ext2fs/alloc_sb.c28
-rw-r--r--lib/ext2fs/bb_inode.c14
-rw-r--r--lib/ext2fs/closefs.c2
-rw-r--r--lib/ext2fs/ext2_fs.h6
-rw-r--r--lib/ext2fs/ext2_io.h4
-rw-r--r--lib/ext2fs/ext2fs.h86
-rw-r--r--lib/ext2fs/ext2fsP.h7
-rw-r--r--lib/ext2fs/ext_attr.c4
-rw-r--r--lib/ext2fs/gen_bitmap64.c19
-rw-r--r--lib/ext2fs/getsize.c31
-rw-r--r--lib/ext2fs/hashmap.c4
-rw-r--r--lib/ext2fs/imager.c4
-rw-r--r--lib/ext2fs/initialize.c63
-rw-r--r--lib/ext2fs/inode.c18
-rw-r--r--lib/ext2fs/ismounted.c10
-rw-r--r--lib/ext2fs/llseek.c67
-rw-r--r--lib/ext2fs/mkjournal.c8
-rw-r--r--lib/ext2fs/openfs.c21
-rw-r--r--lib/ext2fs/orphan.c28
-rw-r--r--lib/ext2fs/progress.c2
-rw-r--r--lib/ext2fs/res_gdt.c43
-rw-r--r--lib/ext2fs/swapfs.c16
-rw-r--r--lib/ext2fs/test_io.c43
-rw-r--r--lib/ext2fs/tst_bitmaps.c45
-rw-r--r--lib/ext2fs/undo_io.c2
-rw-r--r--lib/ext2fs/unix_io.c73
-rw-r--r--lib/ext2fs/windows_io.c11
-rw-r--r--lib/ss/execute_cmd.c2
-rw-r--r--lib/ss/help.c2
-rw-r--r--lib/ss/list_rqs.c2
-rw-r--r--lib/ss/listen.c2
-rw-r--r--lib/ss/requests.c8
-rw-r--r--lib/ss/ss.h16
-rw-r--r--lib/ss/ss_internal.h2
-rw-r--r--lib/ss/test_ss.c6
-rw-r--r--lib/support/mkquota.c2
-rw-r--r--lib/support/plausible.c9
-rw-r--r--lib/support/quotaio.c7
-rw-r--r--lib/support/quotaio.h5
-rw-r--r--lib/support/sort_r.h2
-rw-r--r--misc/Makefile.in17
-rw-r--r--misc/create_inode.c72
-rw-r--r--misc/create_inode.h10
-rw-r--r--misc/create_inode_libarchive.c705
-rw-r--r--misc/create_inode_libarchive.h10
-rw-r--r--misc/dumpe2fs.c12
-rw-r--r--misc/e2freefrag.c4
-rw-r--r--misc/e2undo.c6
-rw-r--r--misc/e4crypt.c2
-rw-r--r--misc/findsuper.c7
-rw-r--r--misc/fuse2fs.c96
-rw-r--r--misc/mke2fs.8.in20
-rw-r--r--misc/mke2fs.c52
-rw-r--r--misc/tune2fs.c43
-rw-r--r--po/LINGUAS2
-rw-r--r--po/e2fsprogs.pot1156
-rw-r--r--po/ms.po1963
-rw-r--r--po/ro.gmobin0 -> 202812 bytes
-rw-r--r--po/ro.po8720
-rw-r--r--resize/main.c2
-rw-r--r--resize/resize2fs.c4
-rw-r--r--scrub/Makefile.in22
-rw-r--r--scrub/e2scrub.in7
-rw-r--r--scrub/e2scrub@.service.in4
-rw-r--r--scrub/e2scrub_all.cron.in2
-rw-r--r--scrub/e2scrub_all.in24
-rw-r--r--scrub/e2scrub_fail.in10
-rw-r--r--scrub/e2scrub_fail@.service.in4
-rw-r--r--scrub/ext4.rules.in13
-rw-r--r--tests/f_boundscheck/expect.11
-rw-r--r--tests/f_boundscheck/expect.21
-rw-r--r--tests/f_desc_size_bad/script4
-rw-r--r--tests/f_desc_size_zero/expect.113
-rw-r--r--tests/f_desc_size_zero/image.gzbin0 -> 589 bytes
-rw-r--r--tests/f_desc_size_zero/name1
-rw-r--r--tests/f_desc_size_zero/script2
-rw-r--r--tests/f_dup4/script2
-rw-r--r--tests/f_inlinedir_bad_symlink/expect.112
-rw-r--r--tests/f_inlinedir_bad_symlink/expect.27
-rw-r--r--tests/f_inlinedir_bad_symlink/image.gzbin0 -> 1797 bytes
-rw-r--r--tests/f_inlinedir_bad_symlink/name1
-rw-r--r--tests/f_itable_collision/expect.110
-rwxr-xr-xtests/f_itable_collision/script2
-rw-r--r--tests/f_preen_htree_csum/expect.14
-rw-r--r--tests/f_preen_htree_csum/expect.27
-rw-r--r--tests/f_preen_htree_csum/image.gzbin0 -> 144617 bytes
-rw-r--r--tests/f_preen_htree_csum/name1
-rw-r--r--tests/f_preen_htree_csum/script2
-rw-r--r--tests/f_quota_deallocate_inode/expect.118
-rw-r--r--tests/f_quota_deallocate_inode/expect.27
-rw-r--r--tests/f_quota_deallocate_inode/image.gzbin0 -> 11594 bytes
-rw-r--r--tests/f_quota_deallocate_inode/name1
-rw-r--r--tests/f_quota_shrinkdir/expect.118
-rw-r--r--tests/f_quota_shrinkdir/expect.27
-rw-r--r--tests/f_quota_shrinkdir/image.gzbin0 -> 10761 bytes
-rw-r--r--tests/f_quota_shrinkdir/name1
-rw-r--r--tests/f_uninit_last_uninit/script2
-rw-r--r--tests/j_ext_long_trans/expect2
-rw-r--r--tests/j_long_trans/expect2
-rw-r--r--tests/j_long_trans_mcsum_32bit/expect2
-rw-r--r--tests/j_long_trans_mcsum_64bit/expect2
-rw-r--r--tests/j_short_trans_mcsum_64bit/expect2
-rw-r--r--tests/j_short_trans_recover_mcsum_64bit/expect2
-rw-r--r--tests/m_bigjournal/expect.116
-rw-r--r--tests/m_resize_inode_meta_bg/expect.16
-rw-r--r--tests/m_rootgnutar/expect141
-rw-r--r--tests/m_rootgnutar/mkgnutar.pl138
-rw-r--r--tests/m_rootgnutar/output.sed5
-rw-r--r--tests/m_rootgnutar/script169
-rw-r--r--tests/m_rootpaxtar/expect87
-rw-r--r--tests/m_rootpaxtar/mkpaxtar.pl69
-rw-r--r--tests/m_rootpaxtar/output.sed5
-rw-r--r--tests/m_rootpaxtar/script44
-rw-r--r--tests/m_roottar/expect208
-rw-r--r--tests/m_roottar/mktar.pl62
-rw-r--r--tests/m_roottar/output.sed5
-rw-r--r--tests/m_roottar/script57
-rw-r--r--tests/m_uninit/expect.110
-rw-r--r--tests/progs/Makefile.in3
-rw-r--r--tests/progs/test_icount.c18
-rw-r--r--tests/progs/test_icount.h29
-rw-r--r--tests/progs/test_rel.c44
-rw-r--r--tests/progs/test_rel.h44
-rw-r--r--tests/r_move_itable_realloc/expect2
-rw-r--r--tests/r_move_itable_realloc/script2
-rw-r--r--tests/u_direct_io/expect2
-rw-r--r--tests/u_direct_io/script6
-rw-r--r--util/gen-tarball.in7
-rwxr-xr-xutil/get-ver2
-rw-r--r--util/subst.conf.in2
-rw-r--r--version.h4
189 files changed, 14478 insertions, 3070 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 51b27c88d..cc961bcb3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -8,17 +8,22 @@ jobs:
name: Build and test with gcc
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- run: ./configure CC=gcc CFLAGS="$DEF_CFLAGS"
- run: make -j8 check V=1 CFLAGS_WARN="-Werror"
- run: make -j8 install V=1 DESTDIR=$PWD/installdir
- run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir
+ - if: failure()
+ uses: actions/upload-artifact@v4
+ with:
+ name: gcc-test-fail-logs
+ path: tests/*.failed
clang-build-and-test:
name: Build and test with clang
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
@@ -27,12 +32,21 @@ jobs:
- run: make -j8 check V=1 CFLAGS_WARN="-Werror"
- run: make -j8 install V=1 DESTDIR=$PWD/installdir
- run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir
+ - uses: actions/upload-artifact@v4
+ with:
+ name: ubuntu-config.h
+ path: lib/config.h
+ - if: failure()
+ uses: actions/upload-artifact@v4
+ with:
+ name: clang-test-fail-logs
+ path: tests/*.failed
i386-build-and-test:
name: Build and test with gcc -m32
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
@@ -41,12 +55,17 @@ jobs:
- run: make -j8 check V=1 CFLAGS_WARN="-Werror"
- run: make -j8 install V=1 DESTDIR=$PWD/installdir
- run: make -j8 uninstall V=1 DESTDIR=$PWD/installdir
+ - if: failure()
+ uses: actions/upload-artifact@v4
+ with:
+ name: i386-test-fail-logs
+ path: tests/*.failed
asan-build-and-test:
name: Build and test with ASAN enabled
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
@@ -54,12 +73,17 @@ jobs:
- run: echo "ASAN_CFLAGS=$DEF_CFLAGS -fsanitize=address -fno-sanitize-recover=address" >> $GITHUB_ENV
- run: ./configure CC=clang CFLAGS="$ASAN_CFLAGS" LDFLAGS="$ASAN_CFLAGS"
- run: make -j8 check V=1 CFLAGS_WARN="-Werror"
+ - if: failure()
+ uses: actions/upload-artifact@v4
+ with:
+ name: asan-test-fail-logs
+ path: tests/*.failed
ubsan-build-and-test:
name: Build and test with UBSAN enabled
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
@@ -67,18 +91,32 @@ jobs:
- run: echo "UBSAN_CFLAGS=$DEF_CFLAGS -fsanitize=undefined -fno-sanitize-recover=undefined" >> $GITHUB_ENV
- run: ./configure CC=clang CFLAGS="$UBSAN_CFLAGS" LDFLAGS="$UBSAN_CFLAGS"
- run: make -j8 check V=1 CFLAGS_WARN="-Werror"
+ - if: failure()
+ uses: actions/upload-artifact@v4
+ with:
+ name: ubsan-test-fail-logs
+ path: tests/*.failed
macos-build-and-test:
name: Build and test on macOS
runs-on: macos-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- run: ./configure CFLAGS="$DEF_CFLAGS"
# -Wno-error=deprecated-declarations is needed to suppress known warnings
# due to e2fsprogs' use of sbrk(0) and daemon().
- run: make -j8 check V=1 CFLAGS_WARN="-Werror -Wno-error=deprecated-declarations"
+ - if: failure()
+ uses: actions/upload-artifact@v4
+ with:
+ name: macos-test-fail-logs
+ path: tests/*.failed
- run: make -j8 install DESTDIR=$PWD/installdir
- run: make -j8 uninstall DESTDIR=$PWD/installdir
+ - uses: actions/upload-artifact@v4
+ with:
+ name: macOS-config.h
+ path: lib/config.h
windows-msys2-build:
name: Build mke2fs on Windows with ${{matrix.sys}}
@@ -92,7 +130,7 @@ jobs:
run:
shell: msys2 {0}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- uses: msys2/setup-msys2@v2
with:
msystem: ${{matrix.sys}}
@@ -112,5 +150,41 @@ jobs:
- run: make -j8 -C lib/support/ all V=1 CFLAGS_WARN="-Werror"
- run: make -j8 -C lib/e2p/ all V=1 CFLAGS_WARN="-Werror"
- run: make -j8 -C misc/ mke2fs V=1 CFLAGS_WARN="-Werror"
- - run: touch image.ext4
- run: misc/mke2fs.exe -T ext4 image.ext4 128M
+ - uses: actions/upload-artifact@v4
+ with:
+ name: windows-${{matrix.env}}-config.h
+ path: lib/config.h
+
+ # Jobs that cross-compile e2fsprogs for Android using the Android NDK. Note
+ # that these use the autotools-based build system, which makes them a bit
+ # different from the actual Android builds from the Android source tree.
+ cross-compile-for-android:
+ name: Cross-compile for Android (${{matrix.arch}})
+ strategy:
+ matrix:
+ include:
+ - { arch: aarch64, target: aarch64-linux-android }
+ - { arch: armv7a, target: armv7a-linux-androideabi }
+ - { arch: i686, target: i686-linux-android }
+ - { arch: x86_64, target: x86_64-linux-android }
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ # See https://developer.android.com/ndk/guides/other_build_systems#autoconf
+ - name: configure
+ run: |
+ TOOLCHAIN=$ANDROID_NDK_LATEST_HOME/toolchains/llvm/prebuilt/linux-x86_64
+ API_LEVEL=29 # Android 10
+ export AR=$TOOLCHAIN/bin/llvm-ar
+ export CC=$TOOLCHAIN/bin/${{matrix.target}}${API_LEVEL}-clang
+ export AS=$CC
+ export LD=$TOOLCHAIN/bin/ld
+ export RANLIB=$TOOLCHAIN/bin/llvm-ranlib
+ export STRIP=$TOOLCHAIN/bin/llvm-strip
+ ./configure --host=${{matrix.target}} CFLAGS="$DEF_CFLAGS"
+ - run: make -j8 V=1 CFLAGS_WARN="-Werror"
+ - uses: actions/upload-artifact@v4
+ with:
+ name: android-${{matrix.arch}}-config.h
+ path: lib/config.h
diff --git a/MCONFIG.in b/MCONFIG.in
index 82c75a28e..751927faf 100644
--- a/MCONFIG.in
+++ b/MCONFIG.in
@@ -34,7 +34,7 @@ man8dir = $(mandir)/man8
infodir = @infodir@
datadir = @datadir@
pkgconfigdir = $(libdir)/pkgconfig
-pkglibdir = $(libdir)/e2fsprogs
+pkglibexecdir = @libexecdir@/e2fsprogs
HAVE_UDEV = @have_udev@
UDEV_RULES_DIR = @pkg_udev_rules_dir@
@@ -141,6 +141,7 @@ LIBFUSE = @FUSE_LIB@
LIBSUPPORT = $(LIBINTL) $(LIB)/libsupport@STATIC_LIB_EXT@
LIBBLKID = @LIBBLKID@ @PRIVATE_LIBS_CMT@ $(LIBUUID)
LIBINTL = @LIBINTL@
+LIBARCHIVE = @ARCHIVE_LIB@
SYSLIBS = @LIBS@ @PTHREAD_LIBS@
DEPLIBSS = $(LIB)/libss@LIB_EXT@
DEPLIBCOM_ERR = $(LIB)/libcom_err@LIB_EXT@
diff --git a/configure b/configure
index b0e8d1bf8..2ffbc6076 100755
--- a/configure
+++ b/configure
@@ -703,7 +703,10 @@ UNI_DIFF_OPTS
SEM_INIT_LIB
FUSE_CMT
FUSE_LIB
+fuse3_LIBS
+fuse3_CFLAGS
CLOCK_GETTIME_LIB
+ARCHIVE_LIB
MAGIC_LIB
SOCKET_LIB
SIZEOF_TIME_T
@@ -824,6 +827,7 @@ build_cpu
build
E2FSPROGS_DATE
E2FSPROGS_PKGVER
+E2FSPROGS_PKGREL
E2FSPROGS_VERSION
E2FSPROGS_DAY
E2FSPROGS_MONTH
@@ -925,6 +929,7 @@ with_gnu_ld
enable_rpath
with_libiconv_prefix
with_libintl_prefix
+enable_largefile
enable_fuse2fs
enable_lto
enable_ubsan
@@ -935,7 +940,6 @@ with_multiarch
with_udev_rules_dir
with_crond_dir
with_systemd_unit_dir
-enable_largefile
'
ac_precious_vars='build_alias
host_alias
@@ -949,6 +953,8 @@ CPP
PKG_CONFIG
PKG_CONFIG_PATH
PKG_CONFIG_LIBDIR
+fuse3_CFLAGS
+fuse3_LIBS
CXX
CXXFLAGS
CCC
@@ -1616,13 +1622,13 @@ Optional Features:
--enable-bmap-stats-ops enable collection of additional bitmap stats
--disable-nls do not use Native Language Support
--disable-rpath do not hardcode runtime library paths
+ --disable-largefile omit support for large files
--disable-fuse2fs do not build fuse2fs
--enable-lto enable link time optimization
--enable-ubsan enable undefined behavior sanitizer
--enable-addrsan enable address sanitizer
--enable-threadsan enable thread sanitizer
--enable-fuzzing enable fuzzing sanitizer
- --disable-largefile omit support for large files
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -4583,11 +4589,9 @@ fi
MCONFIG=./MCONFIG
BINARY_TYPE=bin
-E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h \
- | awk '{print $3}' | tr \" " " | awk '{print $1}'`
-E2FSPROGS_DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
- | tr \" " " | awk '{print $1}'`
-E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{print $1}' | sed -e '/^[1-9]$/s/^/0/')
+E2FSPROGS_VERSION=`awk -F\" '/E2FSPROGS_VERS/ { print $2 }' ${srcdir}/version.h`
+E2FSPROGS_DATE=`awk -F\" '/E2FSPROGS_DATE/ { print $2 }' ${srcdir}/version.h`
+E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{ printf "%02d", $1 }')
MONTH=`echo $E2FSPROGS_DATE | awk -F- '{print $2}'`
YEAR=`echo $E2FSPROGS_DATE | awk -F- '{print $3}'`
@@ -4616,23 +4620,27 @@ Dec) MONTH_NUM=12; E2FSPROGS_MONTH="December" ;;
printf "%s\n" "$as_me: WARNING: Unknown month $MONTH??" >&2;} ;;
esac
-base_ver=`echo $E2FSPROGS_VERSION | \
- sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'`
+base_ver=`echo $E2FSPROGS_VERSION | sed -e 's/pre-//' -e 's/-.*//'`
+base_rel=`echo $E2FSPROGS_VERSION | awk -F- '{ print $2 }'`
date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY}
case $E2FSPROGS_VERSION in
*-WIP|pre-*)
- E2FSPROGS_PKGVER="$base_ver~WIP.$date_spec"
+ E2FSPROGS_PKGVER="$base_ver"
+ E2FSPROGS_PKGREL="WIP.$date_spec"
;;
*)
E2FSPROGS_PKGVER="$base_ver"
+ E2FSPROGS_PKGREL="$base_rel"
;;
esac
unset DATE MONTH YEAR base_ver pre_vers date_spec
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION" >&5
printf "%s\n" "Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Package version ${E2FSPROGS_PKGVER} release ${E2FSPROGS_PKGREL}" >&5
+printf "%s\n" "Package version ${E2FSPROGS_PKGVER} release ${E2FSPROGS_PKGREL}" >&6; }
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}" >&5
printf "%s\n" "Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}" >&6; }
@@ -4641,6 +4649,7 @@ printf "%s\n" "Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}" >&6; }
+
WITH_DIET_LIBC=
# Check whether --with-diet-libc was given.
@@ -12337,6 +12346,219 @@ then :
printf "%s\n" "#define HAVE_LSEEK64_PROTOTYPE 1" >>confdefs.h
fi
+
+ac_fn_check_decl "$LINENO" "fsmap_sizeof" "ac_cv_have_decl_fsmap_sizeof" "#include <linux/fsmap.h>
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_fsmap_sizeof" = xyes
+then :
+
+printf "%s\n" "#define HAVE_FSMAP_SIZEOF 1" >>confdefs.h
+
+fi
+# Check whether --enable-largefile was given.
+if test ${enable_largefile+y}
+then :
+ enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+printf %s "checking for special C compiler options needed for large files... " >&6; }
+if test ${ac_cv_sys_largefile_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_sys_largefile_CC=no
+ if test "$GCC" != yes; then
+ ac_save_CC=$CC
+ while :; do
+ # IRIX 6.2 and later do not support large files by default,
+ # so use the C compiler's -n32 option if that helps.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ CC="$CC -n32"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_sys_largefile_CC=' -n32'; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ break
+ done
+ CC=$ac_save_CC
+ rm -f conftest.$ac_ext
+ fi
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; }
+ if test "$ac_cv_sys_largefile_CC" != no; then
+ CC=$CC$ac_cv_sys_largefile_CC
+ fi
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if test ${ac_cv_sys_file_offset_bits+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_sys_file_offset_bits=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_sys_file_offset_bits=64; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ ac_cv_sys_file_offset_bits=unknown
+ break
+done
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+ no | unknown) ;;
+ *)
+printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h
+;;
+esac
+rm -rf conftest*
+ if test $ac_cv_sys_file_offset_bits = unknown; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+printf %s "checking for _LARGE_FILES value needed for large files... " >&6; }
+if test ${ac_cv_sys_large_files+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ while :; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_sys_large_files=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_sys_large_files=1; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ ac_cv_sys_large_files=unknown
+ break
+done
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+printf "%s\n" "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+ no | unknown) ;;
+ *)
+printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h
+;;
+esac
+rm -rf conftest*
+ fi
+fi
+
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
@@ -13512,6 +13734,57 @@ if test "$ac_cv_func_dlopen" = yes ; then
MAGIC_LIB=$DLOPEN_LIB
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archive_read_new in -larchive" >&5
+printf %s "checking for archive_read_new in -larchive... " >&6; }
+if test ${ac_cv_lib_archive_archive_read_new+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-larchive $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* 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. */
+char archive_read_new ();
+int
+main (void)
+{
+return archive_read_new ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_archive_archive_read_new=yes
+else $as_nop
+ ac_cv_lib_archive_archive_read_new=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_archive_archive_read_new" >&5
+printf "%s\n" "$ac_cv_lib_archive_archive_read_new" >&6; }
+if test "x$ac_cv_lib_archive_archive_read_new" = xyes
+then :
+ ARCHIVE_LIB=-larchive
+ac_fn_c_check_header_compile "$LINENO" "archive.h" "ac_cv_header_archive_h" "$ac_includes_default"
+if test "x$ac_cv_header_archive_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ARCHIVE_H 1" >>confdefs.h
+
+fi
+
+fi
+
+if test "$ac_cv_func_dlopen" = yes ; then
+ ARCHIVE_LIB=$DLOPEN_LIB
+fi
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5
printf %s "checking for clock_gettime in -lrt... " >&6; }
if test ${ac_cv_lib_rt_clock_gettime+y}
@@ -13564,7 +13837,97 @@ then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Disabling fuse2fs" >&5
printf "%s\n" "Disabling fuse2fs" >&6; }
else
- for ac_header in pthread.h fuse.h
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __linux__
+#include <linux/fs.h>
+#include <linux/falloc.h>
+#include <linux/xattr.h>
+#endif
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"
+then :
+
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Cannot find fuse2fs Linux headers.
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ fuse3_CFLAGS
+ C compiler flags for fuse3, overriding pkg-config
+ fuse3_LIBS linker flags for fuse3, overriding pkg-config
+
+pkg_failed=no
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse3" >&5
+printf %s "checking for fuse3... " >&6; }
+
+if test -n "$fuse3_CFLAGS"; then
+ pkg_cv_fuse3_CFLAGS="$fuse3_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fuse3\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "fuse3") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_fuse3_CFLAGS=`$PKG_CONFIG --cflags "fuse3" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$fuse3_LIBS"; then
+ pkg_cv_fuse3_LIBS="$fuse3_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fuse3\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "fuse3") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_fuse3_LIBS=`$PKG_CONFIG --libs "fuse3" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ fuse3_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "fuse3" 2>&1`
+ else
+ fuse3_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "fuse3" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$fuse3_PKG_ERRORS" >&5
+
+
+ for ac_header in pthread.h fuse.h
do :
as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#define _FILE_OFFSET_BITS 64
@@ -13585,35 +13948,119 @@ fi
done
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse_main in -losxfuse" >&5
+printf %s "checking for fuse_main in -losxfuse... " >&6; }
+if test ${ac_cv_lib_osxfuse_fuse_main+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-losxfuse $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#define FUSE_USE_VERSION 29
-#ifdef __linux__
-#include <linux/fs.h>
-#include <linux/falloc.h>
-#include <linux/xattr.h>
-#endif
+/* 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. */
+char fuse_main ();
int
main (void)
{
+return fuse_main ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_osxfuse_fuse_main=yes
+else $as_nop
+ ac_cv_lib_osxfuse_fuse_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_osxfuse_fuse_main" >&5
+printf "%s\n" "$ac_cv_lib_osxfuse_fuse_main" >&6; }
+if test "x$ac_cv_lib_osxfuse_fuse_main" = xyes
+then :
+ FUSE_LIB=-losxfuse
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse_main in -lfuse" >&5
+printf %s "checking for fuse_main in -lfuse... " >&6; }
+if test ${ac_cv_lib_fuse_fuse_main+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lfuse $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* 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. */
+char fuse_main ();
+int
+main (void)
+{
+return fuse_main ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_fuse_fuse_main=yes
+else $as_nop
+ ac_cv_lib_fuse_fuse_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fuse_fuse_main" >&5
+printf "%s\n" "$ac_cv_lib_fuse_fuse_main" >&6; }
+if test "x$ac_cv_lib_fuse_fuse_main" = xyes
then :
+ FUSE_LIB=-lfuse
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Cannot find fuse library.
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+fi
+
+
+elif test $pkg_failed = untried; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+
+ for ac_header in pthread.h fuse.h
+do :
+ as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#define _FILE_OFFSET_BITS 64
+#define FUSE_USE_VERSION 29
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"
+then :
+ cat >>confdefs.h <<_ACEOF
+#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
else $as_nop
{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "Cannot find fuse2fs Linux headers.
+as_fn_error $? "Cannot find fuse2fs headers.
See \`config.log' for more details" "$LINENO" 5; }
fi
-rm -f conftest.err conftest.i conftest.$ac_ext
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse_main in -losxfuse" >&5
+done
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse_main in -losxfuse" >&5
printf %s "checking for fuse_main in -losxfuse... " >&6; }
if test ${ac_cv_lib_osxfuse_fuse_main+y}
then :
@@ -13699,12 +14146,82 @@ fi
fi
+
+else
+ fuse3_CFLAGS=$pkg_cv_fuse3_CFLAGS
+ fuse3_LIBS=$pkg_cv_fuse3_LIBS
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+
+ FUSE_LIB=-lfuse3
+
+fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Enabling fuse2fs" >&5
printf "%s\n" "Enabling fuse2fs" >&6; }
fi
else $as_nop
- for ac_header in pthread.h fuse.h
+
+pkg_failed=no
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse3" >&5
+printf %s "checking for fuse3... " >&6; }
+
+if test -n "$fuse3_CFLAGS"; then
+ pkg_cv_fuse3_CFLAGS="$fuse3_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fuse3\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "fuse3") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_fuse3_CFLAGS=`$PKG_CONFIG --cflags "fuse3" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$fuse3_LIBS"; then
+ pkg_cv_fuse3_LIBS="$fuse3_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"fuse3\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "fuse3") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_fuse3_LIBS=`$PKG_CONFIG --libs "fuse3" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ fuse3_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "fuse3" 2>&1`
+ else
+ fuse3_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "fuse3" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$fuse3_PKG_ERRORS" >&5
+
+
+ for ac_header in pthread.h fuse.h
do :
as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#define _FILE_OFFSET_BITS 64
@@ -13726,9 +14243,122 @@ else $as_nop
fi
done
-if test -z "$FUSE_CMT"
-then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse_main in -losxfuse" >&5
+ if test -z "$FUSE_CMT"
+ then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse_main in -losxfuse" >&5
+printf %s "checking for fuse_main in -losxfuse... " >&6; }
+if test ${ac_cv_lib_osxfuse_fuse_main+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-losxfuse $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* 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. */
+char fuse_main ();
+int
+main (void)
+{
+return fuse_main ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_osxfuse_fuse_main=yes
+else $as_nop
+ ac_cv_lib_osxfuse_fuse_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_osxfuse_fuse_main" >&5
+printf "%s\n" "$ac_cv_lib_osxfuse_fuse_main" >&6; }
+if test "x$ac_cv_lib_osxfuse_fuse_main" = xyes
+then :
+ FUSE_LIB=-losxfuse
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse_main in -lfuse" >&5
+printf %s "checking for fuse_main in -lfuse... " >&6; }
+if test ${ac_cv_lib_fuse_fuse_main+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lfuse $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* 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. */
+char fuse_main ();
+int
+main (void)
+{
+return fuse_main ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ac_cv_lib_fuse_fuse_main=yes
+else $as_nop
+ ac_cv_lib_fuse_fuse_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fuse_fuse_main" >&5
+printf "%s\n" "$ac_cv_lib_fuse_fuse_main" >&6; }
+if test "x$ac_cv_lib_fuse_fuse_main" = xyes
+then :
+ FUSE_LIB=-lfuse
+else $as_nop
+ FUSE_CMT="#"
+fi
+
+fi
+
+ fi
+
+elif test $pkg_failed = untried; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+
+ for ac_header in pthread.h fuse.h
+do :
+ as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#define _FILE_OFFSET_BITS 64
+#define FUSE_USE_VERSION 29
+#ifdef __linux__
+# include <linux/fs.h>
+# include <linux/falloc.h>
+# include <linux/xattr.h>
+#endif
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"
+then :
+ cat >>confdefs.h <<_ACEOF
+#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+else $as_nop
+ FUSE_CMT="#"
+fi
+
+done
+ if test -z "$FUSE_CMT"
+ then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fuse_main in -losxfuse" >&5
printf %s "checking for fuse_main in -losxfuse... " >&6; }
if test ${ac_cv_lib_osxfuse_fuse_main+y}
then :
@@ -13811,6 +14441,16 @@ fi
fi
+ fi
+
+else
+ fuse3_CFLAGS=$pkg_cv_fuse3_CFLAGS
+ fuse3_LIBS=$pkg_cv_fuse3_LIBS
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+
+ FUSE_LIB=-lfuse3
+
fi
if test -z "$FUSE_CMT"
then
@@ -13822,6 +14462,46 @@ fi
+if test "$FUSE_LIB" = "-lfuse3"
+then
+ FUSE_USE_VERSION=35
+ CFLAGS="$CFLAGS $fuse3_CFLAGS"
+ LDFLAGS="$LDFLAGS $fuse3_LDFLAGS"
+ for ac_header in pthread.h fuse.h
+do :
+ as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#define _FILE_OFFSET_BITS 64
+#define FUSE_USE_VERSION 35
+#ifdef __linux__
+#include <linux/fs.h>
+#include <linux/falloc.h>
+#include <linux/xattr.h>
+#endif
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"
+then :
+ cat >>confdefs.h <<_ACEOF
+#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Cannot find fuse3 fuse2fs headers.
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+done
+elif test -n "$FUSE_LIB"
+then
+ FUSE_USE_VERSION=29
+fi
+if test -n "$FUSE_USE_VERSION"
+then
+
+printf "%s\n" "#define FUSE_USE_VERSION $FUSE_USE_VERSION" >>confdefs.h
+
+fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for optreset" >&5
printf %s "checking for optreset... " >&6; }
if test ${ac_cv_have_optreset+y}
@@ -15408,211 +16088,6 @@ case "$host_os" in
esac
-# Check whether --enable-largefile was given.
-if test ${enable_largefile+y}
-then :
- enableval=$enable_largefile;
-fi
-
-if test "$enable_largefile" != no; then
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-printf %s "checking for special C compiler options needed for large files... " >&6; }
-if test ${ac_cv_sys_largefile_CC+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- ac_cv_sys_largefile_CC=no
- if test "$GCC" != yes; then
- ac_save_CC=$CC
- while :; do
- # IRIX 6.2 and later do not support large files by default,
- # so use the C compiler's -n32 option if that helps.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main (void)
-{
-
- ;
- return 0;
-}
-_ACEOF
- if ac_fn_c_try_compile "$LINENO"
-then :
- break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam
- CC="$CC -n32"
- if ac_fn_c_try_compile "$LINENO"
-then :
- ac_cv_sys_largefile_CC=' -n32'; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam
- break
- done
- CC=$ac_save_CC
- rm -f conftest.$ac_ext
- fi
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; }
- if test "$ac_cv_sys_largefile_CC" != no; then
- CC=$CC$ac_cv_sys_largefile_CC
- fi
-
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if test ${ac_cv_sys_file_offset_bits+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- while :; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main (void)
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- ac_cv_sys_file_offset_bits=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#define _FILE_OFFSET_BITS 64
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main (void)
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- ac_cv_sys_file_offset_bits=64; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- ac_cv_sys_file_offset_bits=unknown
- break
-done
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; }
-case $ac_cv_sys_file_offset_bits in #(
- no | unknown) ;;
- *)
-printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h
-;;
-esac
-rm -rf conftest*
- if test $ac_cv_sys_file_offset_bits = unknown; then
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-printf %s "checking for _LARGE_FILES value needed for large files... " >&6; }
-if test ${ac_cv_sys_large_files+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- while :; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main (void)
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- ac_cv_sys_large_files=no; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#define _LARGE_FILES 1
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
- We can't simply define LARGE_OFF_T to be 9223372036854775807,
- since some C++ compilers masquerading as C compilers
- incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
- int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
- && LARGE_OFF_T % 2147483647 == 1)
- ? 1 : -1];
-int
-main (void)
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"
-then :
- ac_cv_sys_large_files=1; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
- ac_cv_sys_large_files=unknown
- break
-done
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-printf "%s\n" "$ac_cv_sys_large_files" >&6; }
-case $ac_cv_sys_large_files in #(
- no | unknown) ;;
- *)
-printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h
-;;
-esac
-rm -rf conftest*
- fi
-fi
-
-
test -d lib || mkdir lib
test -d include || mkdir include
test -d include/linux || mkdir include/linux
diff --git a/configure.ac b/configure.ac
index 017a96ffe..e4a17b952 100644
--- a/configure.ac
+++ b/configure.ac
@@ -11,11 +11,9 @@ BINARY_TYPE=bin
dnl
dnl This is to figure out the version number and the date....
dnl
-E2FSPROGS_VERSION=`grep E2FSPROGS_VERSION ${srcdir}/version.h \
- | awk '{print $3}' | tr \" " " | awk '{print $1}'`
-E2FSPROGS_DATE=`grep E2FSPROGS_DATE ${srcdir}/version.h | awk '{print $3}' \
- | tr \" " " | awk '{print $1}'`
-E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{print $1}' | sed -e '/^[[1-9]]$/s/^/0/')
+E2FSPROGS_VERSION=`awk -F\" '/E2FSPROGS_VERS/ { print $2 }' ${srcdir}/version.h`
+E2FSPROGS_DATE=`awk -F\" '/E2FSPROGS_DATE/ { print $2 }' ${srcdir}/version.h`
+E2FSPROGS_DAY=$(echo $E2FSPROGS_DATE | awk -F- '{ printf "%02d", $1 }')
MONTH=`echo $E2FSPROGS_DATE | awk -F- '{print $2}'`
YEAR=`echo $E2FSPROGS_DATE | awk -F- '{print $3}'`
@@ -43,27 +41,31 @@ Dec) MONTH_NUM=12; E2FSPROGS_MONTH="December" ;;
*) AC_MSG_WARN([Unknown month $MONTH??]) ;;
esac
-base_ver=`echo $E2FSPROGS_VERSION | \
- sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'`
+base_ver=`echo $E2FSPROGS_VERSION | sed -e 's/pre-//' -e 's/-.*//'`
+base_rel=`echo $E2FSPROGS_VERSION | awk -F- '{ print $2 }'`
date_spec=${E2FSPROGS_YEAR}.${MONTH_NUM}.${E2FSPROGS_DAY}
case $E2FSPROGS_VERSION in
*-WIP|pre-*)
- E2FSPROGS_PKGVER="$base_ver~WIP.$date_spec"
+ E2FSPROGS_PKGVER="$base_ver"
+ E2FSPROGS_PKGREL="WIP.$date_spec"
;;
*)
E2FSPROGS_PKGVER="$base_ver"
+ E2FSPROGS_PKGREL="$base_rel"
;;
esac
unset DATE MONTH YEAR base_ver pre_vers date_spec
AC_MSG_RESULT([Generating configuration file for e2fsprogs version $E2FSPROGS_VERSION])
+AC_MSG_RESULT([Package version ${E2FSPROGS_PKGVER} release ${E2FSPROGS_PKGREL}])
AC_MSG_RESULT([Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}])
AC_SUBST(E2FSPROGS_YEAR)
AC_SUBST(E2FSPROGS_MONTH)
AC_SUBST(E2FSPROGS_DAY)
AC_SUBST(E2FSPROGS_VERSION)
+AC_SUBST(E2FSPROGS_PKGREL)
AC_SUBST(E2FSPROGS_PKGVER)
AC_SUBST(E2FSPROGS_DATE)
dnl
@@ -1107,9 +1109,16 @@ AC_CHECK_DECL(lseek64,[AC_DEFINE(HAVE_LSEEK64_PROTOTYPE, 1,
[#define _LARGEFILE_SOURCE
#define _LARGEFILE64_SOURCE
#include <unistd.h>])
+
+dnl The Android NDK has <linux/fsmap.h>, but it is missing the inline functions
+dnl fsmap_sizeof() and fsmap_advance(). Check whether this is the case.
+AC_CHECK_DECL(fsmap_sizeof,[AC_DEFINE(HAVE_FSMAP_SIZEOF, 1,
+ [Define to 1 if fsmap_sizeof() is declared in linux/fsmap.h])],,
+ [#include <linux/fsmap.h>])
dnl
dnl Word sizes...
dnl
+AC_SYS_LARGEFILE
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
@@ -1290,12 +1299,21 @@ if test "$ac_cv_func_dlopen" = yes ; then
fi
AC_SUBST(MAGIC_LIB)
dnl
+dnl libarchive
+dnl
+AC_CHECK_LIB(archive, archive_read_new, [ARCHIVE_LIB=-larchive
+AC_CHECK_HEADERS([archive.h])])
+if test "$ac_cv_func_dlopen" = yes ; then
+ ARCHIVE_LIB=$DLOPEN_LIB
+fi
+AC_SUBST(ARCHIVE_LIB)
+dnl
dnl Check to see if librt is required for clock_gettime() (glibc < 2.17)
dnl
AC_CHECK_LIB(rt, clock_gettime, [CLOCK_GETTIME_LIB=-lrt])
AC_SUBST(CLOCK_GETTIME_LIB)
dnl
-dnl Check to see if the FUSE library is -lfuse or -losxfuse
+dnl Check to see if the FUSE library is -lfuse3, -losxfuse, or -lfuse
dnl
FUSE_CMT=
FUSE_LIB=
@@ -1307,27 +1325,35 @@ then
FUSE_CMT="#"
AC_MSG_RESULT([Disabling fuse2fs])
else
- AC_CHECK_HEADERS([pthread.h fuse.h], [],
-[AC_MSG_FAILURE([Cannot find fuse2fs headers.])],
-[#define _FILE_OFFSET_BITS 64
-#define FUSE_USE_VERSION 29])
-
AC_PREPROC_IFELSE(
-[AC_LANG_PROGRAM([[#define FUSE_USE_VERSION 29
-#ifdef __linux__
+[AC_LANG_PROGRAM([[#ifdef __linux__
#include <linux/fs.h>
#include <linux/falloc.h>
#include <linux/xattr.h>
#endif
]], [])], [], [AC_MSG_FAILURE([Cannot find fuse2fs Linux headers.])])
- AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
- [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse],
- [AC_MSG_FAILURE([Cannot find fuse library.])])])
+ PKG_CHECK_MODULES([fuse3], [fuse3],
+ [
+ FUSE_LIB=-lfuse3
+ ], [
+ AC_CHECK_HEADERS([pthread.h fuse.h], [],
+ [AC_MSG_FAILURE([Cannot find fuse2fs headers.])],
+[#define _FILE_OFFSET_BITS 64
+#define FUSE_USE_VERSION 29])
+
+ AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
+ [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse],
+ [AC_MSG_FAILURE([Cannot find fuse library.])])])
+ ])
AC_MSG_RESULT([Enabling fuse2fs])
fi
,
-AC_CHECK_HEADERS([pthread.h fuse.h], [], [FUSE_CMT="#"],
+PKG_CHECK_MODULES([fuse3], [fuse3],
+ [
+ FUSE_LIB=-lfuse3
+ ], [
+ AC_CHECK_HEADERS([pthread.h fuse.h], [], [FUSE_CMT="#"],
[#define _FILE_OFFSET_BITS 64
#define FUSE_USE_VERSION 29
#ifdef __linux__
@@ -1335,11 +1361,13 @@ AC_CHECK_HEADERS([pthread.h fuse.h], [], [FUSE_CMT="#"],
# include <linux/falloc.h>
# include <linux/xattr.h>
#endif])
-if test -z "$FUSE_CMT"
-then
- AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
-[AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse], [FUSE_CMT="#"])])
-fi
+ if test -z "$FUSE_CMT"
+ then
+ AC_CHECK_LIB(osxfuse, fuse_main, [FUSE_LIB=-losxfuse],
+ [AC_CHECK_LIB(fuse, fuse_main, [FUSE_LIB=-lfuse],
+ [FUSE_CMT="#"])])
+ fi
+ ])
if test -z "$FUSE_CMT"
then
AC_MSG_RESULT([Enabling fuse2fs by default.])
@@ -1347,6 +1375,29 @@ fi
)
AC_SUBST(FUSE_LIB)
AC_SUBST(FUSE_CMT)
+if test "$FUSE_LIB" = "-lfuse3"
+then
+ FUSE_USE_VERSION=35
+ CFLAGS="$CFLAGS $fuse3_CFLAGS"
+ LDFLAGS="$LDFLAGS $fuse3_LDFLAGS"
+ AC_CHECK_HEADERS([pthread.h fuse.h], [],
+ [AC_MSG_FAILURE([Cannot find fuse3 fuse2fs headers.])],
+[#define _FILE_OFFSET_BITS 64
+#define FUSE_USE_VERSION 35
+#ifdef __linux__
+#include <linux/fs.h>
+#include <linux/falloc.h>
+#include <linux/xattr.h>
+#endif])
+elif test -n "$FUSE_LIB"
+then
+ FUSE_USE_VERSION=29
+fi
+if test -n "$FUSE_USE_VERSION"
+then
+ AC_DEFINE_UNQUOTED(FUSE_USE_VERSION, $FUSE_USE_VERSION,
+ [Define to the version of FUSE to use])
+fi
dnl
dnl See if optreset exists
dnl
@@ -1895,8 +1946,6 @@ OS_IO_FILE=""
esac]
AC_SUBST(OS_IO_FILE)
-AC_SYS_LARGEFILE
-
dnl
dnl Make our output files, being sure that we create the some miscellaneous
dnl directories
diff --git a/debian/changelog b/debian/changelog
index 60a0a9b89..21b8e5244 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,55 @@
+e2fsprogs (1.47.1~rc1-1) experimental; urgency=medium
+
+ * New upstream version
+
+ -- Theodore Y. Ts'o <tytso@mit.edu> Sun, 21 Apr 2024 23:58:04 -0400
+
+e2fsprogs (1.47.0-2.4) unstable; urgency=medium
+
+ * Non-maintainer upload.
+ * Upload to unstable.
+ * Version Provides and Breaks (thanks to Matthias Klose).
+
+ -- Helmut Grohne <helmut@subdivi.de> Wed, 13 Mar 2024 07:20:06 +0100
+
+e2fsprogs (1.47.0-2.4~exp1) experimental; urgency=medium
+
+ * Non-maintainer upload.
+ * Revert time64 transitions for libss2 and libcom-err2.
+ * Enable dh_movetousr (DEP17). (Closes: #1060000)
+ + Mitigate file loss in libext2fs2 -> libext2fs2t64 upgrade and /usr-move.
+
+ -- Helmut Grohne <helmut@subdivi.de> Sun, 10 Mar 2024 21:02:48 +0100
+
+e2fsprogs (1.47.0-2.3) unstable; urgency=medium
+
+ * Non-maintainer upload.
+ * Fix package names in d/*.shlibs.local. (Closes: #1065087)
+ * Update sonames in d/libext2fs2t64.lintian-overrides.
+ * Fix packages names in code for updating symbols fies in d/rules.
+
+ -- Michael Hudson-Doyle <michael.hudson@ubuntu.com> Fri, 01 Mar 2024 08:01:06 +1300
+
+e2fsprogs (1.47.0-2.2) unstable; urgency=medium
+
+ * Non-maintainer upload.
+
+ [ Helmut Grohne ]
+ * Fix FTBFS when systemd.pc changes systemdsystemunitdir. (Closes: #1053111)
+
+ [ Michael Hudson-Doyle ]
+ * Account for changes in udevudevdir as well.
+ * Rename libraries for 64-bit time_t transition.
+
+ -- Michael Hudson-Doyle <mwhudson@debian.org> Wed, 28 Feb 2024 23:40:42 +0000
+
+e2fsprogs (1.47.0-2) unstable; urgency=medium
+
+ * Don't enable metadata_csum_seed and orhpan_file by default (Closes:
+ #1031622, #1030939)
+
+ -- Theodore Y. Ts'o <tytso@mit.edu> Sat, 04 Mar 2023 22:16:08 -0500
+
e2fsprogs (1.47.0-1) unstable; urgency=medium
* New upstream version
diff --git a/debian/control b/debian/control
index 770198708..d51b56221 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: gettext, texinfo, pkg-config, libfuse-dev [linux-any kfreebsd-any] <!pkg.e2fsprogs.no-fuse2fs>, debhelper-compat (= 12), dh-exec, libblkid-dev, uuid-dev, m4, udev [linux-any], systemd [linux-any], cron [linux-any]
+Build-Depends: dpkg-dev (>= 1.22.5), gettext, texinfo, pkg-config, libarchive-dev, libfuse3-dev [linux-any kfreebsd-any] <!pkg.e2fsprogs.no-fuse2fs>, debhelper-compat (= 12), dh-exec, libblkid-dev, uuid-dev, m4, udev [linux-any], systemd [linux-any], systemd-dev [linux-any], cron [linux-any], dh-sequence-movetousr
Rules-Requires-Root: no
Standards-Version: 4.6.2
Homepage: http://e2fsprogs.sourceforge.net
@@ -68,9 +68,9 @@ Package: libcom-err2
Section: libs
Priority: optional
Depends: ${shlibs:Depends}, ${misc:Depends}
-Replaces: libcomerr2 (<< 1.43.9-1~)
-Breaks: libcomerr2 (<< 1.43.9-1~)
-Provides: libcomerr2 (= ${binary:Version})
+Replaces: libcom-err2t64, libcomerr2 (<< 1.43.9-1~)
+Breaks: libcom-err2t64 (<< 1.47.0-2.4~exp1~), libcomerr2 (<< 1.43.9-1~)
+Provides: libcom-err2t64 (= ${binary:Version}), libcomerr2 (= ${binary:Version})
Architecture: any
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends}
@@ -95,10 +95,12 @@ Description: common error description library - headers and static libraries
This package contains the development environment for the com_err library.
Package: libss2
+Provides: libss2t64 (= ${binary:Version})
+Breaks: libss2t64 (<< 1.47.0-2.4~exp1~)
Section: libs
Priority: optional
Depends: libcom-err2, ${shlibs:Depends}, ${misc:Depends}
-Replaces: e2fsprogs (<< 1.34-1)
+Replaces: libss2t64, e2fsprogs (<< 1.34-1)
Architecture: any
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends}
@@ -138,13 +140,13 @@ Description: stripped-down versions of e2fsprogs, for debian-installer
Don't attempt to install this package, it has no support for a couple of
features you surely want. Anyway it should refuse to install.
-Package: libext2fs2
+Package: libext2fs2t64
Section: libs
Priority: optional
Depends: ${shlibs:Depends}, ${misc:Depends}
-Replaces: e2fslibs (<< 1.43.9-1~)
-Breaks: e2fslibs (<< 1.43.9-1~)
-Provides: e2fslibs (= ${binary:Version})
+Replaces: libext2fs2, e2fslibs (<< 1.43.9-1~)
+Breaks: libext2fs2 (<< ${source:Version}), e2fslibs (<< 1.43.9-1~)
+Provides: ${t64:Provides}, e2fslibs (= ${binary:Version})
Architecture: any
Multi-Arch: same
Pre-Depends: ${misc:Pre-Depends}
@@ -161,7 +163,7 @@ Description: ext2/ext3/ext4 file system libraries
Package: libext2fs-dev
Section: libdevel
Priority: optional
-Depends: libc6-dev | libc-dev, comerr-dev, libext2fs2 (= ${binary:Version}), ${misc:Depends}
+Depends: libc6-dev | libc-dev, comerr-dev, libext2fs2t64 (= ${binary:Version}), ${misc:Depends}
Replaces: e2fslibs-dev (<< 1.43.9-1~)
Breaks: e2fslibs-dev (<< 1.43.9-1~)
Provides: e2fslibs-dev (= ${binary:Version})
diff --git a/debian/copyright b/debian/copyright
index f18058eb2..77bd5ea19 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -8,7 +8,7 @@ Comment:
written by Theodore Ts'o <tytso@mit.edu> and Remy Card <card@masi.ibp.fr>.
Files: *
-Copyright: 1993-2018 Theodore Ts'o <tytso@mit.edu>
+Copyright: 1993-2022 Theodore Ts'o <tytso@mit.edu>
License: GPL-2
Comment: Some files are GPL-2+ licensed or do not carry any license version.
They are distributable as GPL-2 and listed as such for simplification.
@@ -21,6 +21,47 @@ Copyright: 2003-2007 Theodore Ts'o <tytso@mit.edu>
1995-1996 Michael Nonweiler <mrn20@cam.ac.uk>
License: GPL-2
+Files: lib/et/*
+ lib/ss/*
+Copyright: 1987-1988 MIT Student Information Processing Board
+ 2003 Theodore Ts'o
+License: Expat
+ Permission to use, copy, modify, and distribute this software and
+ its documentation for any purpose is hereby granted, provided that
+ the names of M.I.T. and the M.I.T. S.I.P.B. not be used in
+ advertising or publicity pertaining to distribution of the software
+ without specific, written prior permission. M.I.T. and the
+ M.I.T. S.I.P.B. make no representations about the suitability of
+ this software for any purpose. It is provided "as is" without
+ express or implied warranty.
+
+Files: lib/et/vfprintf.c
+Copyright: 1988 Regents of the University of California
+License: BSD-3-Clause-Variant
+ Redistribution and use in source and binary forms are permitted
+ provided that the above copyright notice and this paragraph are
+ duplicated in all such forms and that any documentation,
+ advertising materials, and other materials related to such
+ distribution and use acknowledge that the software was developed
+ by the University of California, Berkeley. The name of the
+ University may not be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+Files: lib/et/com_right.c
+Comment: Taken from lib/com_err/error.c from Kerberos4kth distribution.
+Copyright: (c) 2003 by Theodore Ts'o
+ Copyright (c) 1997, 1998, 2001 Kungliga Tekniska Högskolan
+ (Royal Institute of Technology, Stockholm, Sweden).
+ All rights reserved.
+License: BSD-3-Clause
+
+Files: lib/et/test_cases/imap_err.et
+Copyright: 1994-2008 Carnegie Mellon University.
+License: BSD-4-Clause-CMU
+
Files: lib/ext2fs/*
lib/e2p/*
lib/support/print_fs_flags.c
@@ -211,6 +252,12 @@ Copyright: 1995-1999 by Theodore Ts'o
Linus Torvalds <Linus.Torvalds@cs.helsinki.fi>
License: GPL-2
+Files: po/fr.po
+ po/vi.po
+Copyright: 2008, 2014 Theodore Ts'o
+ 1996, 2014 Free Software Foundation, Inc.
+License: GPL-2
+
Files: resize/*
Copyright: 1997-2000 by Theodore Ts'o and PowerQuest, Inc.
License: GPL-2
@@ -370,6 +417,44 @@ License: BSD-3-Clause
USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
+License: BSD-4-Clause-CMU
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ .
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ .
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ .
+ 3. The name "Carnegie Mellon University" must not be used to
+ endorse or promote products derived from this software without
+ prior written permission. For permission or any legal
+ details, please contact
+ Carnegie Mellon University
+ Center for Technology Transfer and Enterprise Creation
+ 4615 Forbes Avenue
+ Suite 302
+ Pittsburgh, PA 15213
+ (412) 268-7393, fax: (412) 268-7395
+ innovation@andrew.cmu.edu
+ .
+ 4. Redistributions of any form whatsoever must retain the following
+ acknowledgment:
+ "This product includes software developed by Computing Services
+ at Carnegie Mellon University (http://www.cmu.edu/computing/)."
+ .
+ CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
+ THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
+ FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+ AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+ OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
License: GPL-2
This program is free software; you can redistribute it and/or modify
it under the terms version 2 of the GNU General Public License
diff --git a/debian/e2fsprogs.install b/debian/e2fsprogs.install
index 8cf07a6fc..17a80e392 100755
--- a/debian/e2fsprogs.install
+++ b/debian/e2fsprogs.install
@@ -16,8 +16,8 @@ sbin/resize2fs
sbin/tune2fs
usr/bin/chattr
usr/bin/lsattr
-[linux-any] usr/lib/*/e2fsprogs/e2scrub_all_cron
-[linux-any] usr/lib/*/e2fsprogs/e2scrub_fail
+[linux-any] usr/libexec/e2fsprogs/e2scrub_all_cron
+[linux-any] usr/libexec/e2fsprogs/e2scrub_fail
usr/sbin/e2freefrag
[linux-any] usr/sbin/e4crypt
[linux-any] usr/sbin/e4defrag
@@ -49,5 +49,5 @@ usr/share/man/man8/mklost+found.8
usr/share/man/man8/resize2fs.8
usr/share/man/man8/tune2fs.8
etc
-[linux-any] lib/udev/rules.d
-[linux-any] lib/systemd/system
+[linux-any] ${deb_udevudevdir}/rules.d
+[linux-any] ${deb_systemdsystemunitdir}
diff --git a/debian/e2fsprogs.lintian-overrides b/debian/e2fsprogs.lintian-overrides
deleted file mode 100644
index b40d11397..000000000
--- a/debian/e2fsprogs.lintian-overrides
+++ /dev/null
@@ -1 +0,0 @@
-e2fsprogs: package-supports-alternative-init-but-no-init.d-script
diff --git a/debian/e2fsprogs.shlibs.local b/debian/e2fsprogs.shlibs.local
index a99d2a0a8..8f2408284 100644
--- a/debian/e2fsprogs.shlibs.local
+++ b/debian/e2fsprogs.shlibs.local
@@ -1,2 +1,2 @@
-libext2fs 2 libext2fs2 (= ${binary:Version})
-libe2p 2 libext2fs2 (= ${binary:Version})
+libext2fs 2 libext2fs2t64 (= ${binary:Version})
+libe2p 2 libext2fs2t64 (= ${binary:Version})
diff --git a/debian/libext2fs2.install b/debian/libext2fs2t64.install
index 11198f761..11198f761 100644
--- a/debian/libext2fs2.install
+++ b/debian/libext2fs2t64.install
diff --git a/debian/libext2fs2t64.lintian-overrides b/debian/libext2fs2t64.lintian-overrides
new file mode 100644
index 000000000..c4fd83396
--- /dev/null
+++ b/debian/libext2fs2t64.lintian-overrides
@@ -0,0 +1 @@
+libext2fs2t64: package-name-doesnt-match-sonames libe2p2 libext2fs2
diff --git a/debian/libext2fs2t64.postrm b/debian/libext2fs2t64.postrm
new file mode 100644
index 000000000..8a2770851
--- /dev/null
+++ b/debian/libext2fs2t64.postrm
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+set -e
+
+if test "$1" = remove; then
+ # DEP17 P1 mitigation. Remove these diversions via postinst once trixie is released.
+ for lib in e2p.so.2 e2p.so.2.3 ext2fs.so.2 ext2fs.so.2.4; do
+ dpkg-divert --package libext2fs2t64 --no-rename --divert "/lib/#DEB_HOST_MULTIARCH#/lib$lib.usr-is-merged" --remove "/lib/#DEB_HOST_MULTIARCH#/lib$lib"
+ done
+fi
+
+#DEBHELPER#
diff --git a/debian/libext2fs2t64.preinst b/debian/libext2fs2t64.preinst
new file mode 100644
index 000000000..8c802dba6
--- /dev/null
+++ b/debian/libext2fs2t64.preinst
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+set -e
+
+if test "$1" = install -o "$1" = upgrade; then
+ # DEP17 P1 mitigation. Remove these diversions via postinst once trixie is released.
+ for lib in e2p.so.2 e2p.so.2.3 ext2fs.so.2 ext2fs.so.2.4; do
+ dpkg-divert --package libext2fs2t64 --no-rename --divert "/lib/#DEB_HOST_MULTIARCH#/lib$lib.usr-is-merged" --add "/lib/#DEB_HOST_MULTIARCH#/lib$lib"
+ done
+fi
+
+#DEBHELPER#
diff --git a/debian/libext2fs2.symbols b/debian/libext2fs2t64.symbols
index 6a97cf1e0..7e4742738 100644
--- a/debian/libext2fs2.symbols
+++ b/debian/libext2fs2t64.symbols
@@ -1,4 +1,4 @@
-libe2p.so.2 libext2fs2 #MINVER#
+libe2p.so.2 libext2fs2t64 #MINVER#
* Build-Depends-Package: libext2fs-dev
e2p_edit_feature2@Base 1.40.7
e2p_edit_feature@Base 1.37
@@ -44,7 +44,7 @@ libe2p.so.2 libext2fs2 #MINVER#
print_fs_state@Base 1.37
setflags@Base 1.37
setversion@Base 1.37
-libext2fs.so.2 libext2fs2 #MINVER#
+libext2fs.so.2 libext2fs2t64 #MINVER#
* Build-Depends-Package: libext2fs-dev
badblocks_list_add@Base 1.37
badblocks_list_create@Base 1.37
@@ -149,6 +149,7 @@ libext2fs.so.2 libext2fs2 #MINVER#
ext2fs_copy_generic_bitmap@Base 1.41.0
ext2fs_copy_generic_bmap@Base 1.42
ext2fs_count_blocks@Base 1.46.0
+ ext2fs_count_used_blocks@Base 1.47.1~rc1
ext2fs_count_used_clusters@Base 1.46.0
ext2fs_crc16@Base 1.41.1
ext2fs_crc32_be@Base 1.43
@@ -413,6 +414,7 @@ libext2fs.so.2 libext2fs2 #MINVER#
ext2fs_is_fast_symlink@Base 1.44.0~rc1
ext2fs_journal_sb_start@Base 1.42.12
ext2fs_link@Base 1.37
+ Ext2fs_list_backups@Base 1.47.1~rc1
ext2fs_llseek@Base 1.37
ext2fs_lookup@Base 1.37
ext2fs_make_generic_bitmap@Base 1.41.0
@@ -496,6 +498,7 @@ libext2fs.so.2 libext2fs2 #MINVER#
ext2fs_read_inode_bitmap@Base 1.37
ext2fs_read_inode_full@Base 1.37
ext2fs_remove_exit_fn@Base 1.43
+ ext2fs_reserve_super_and_bgd2@Base 1.47.1~rc1
ext2fs_reserve_super_and_bgd@Base 1.37
ext2fs_resize_array@Base 1.45.6
ext2fs_resize_block_bitmap2@Base 1.42
@@ -508,6 +511,7 @@ libext2fs.so.2 libext2fs2 #MINVER#
ext2fs_rewrite_to_io@Base 1.37
ext2fs_rw_bitmaps@Base 1.46.0
ext2fs_set_alloc_block_callback@Base 1.41.0
+ ext2fs_safe_getenv@Base 1.47.1~rc1
ext2fs_set_bit64@Base 1.42
ext2fs_set_bit@Base 1.37
ext2fs_set_bitmap_padding@Base 1.37
diff --git a/debian/rules b/debian/rules
index b85976f0c..b95e0fa32 100755
--- a/debian/rules
+++ b/debian/rules
@@ -14,6 +14,11 @@ ifeq ($(DEB_HOST_ARCH_OS), hurd)
SKIP_FUSE2FS=yes
endif
+ifeq ($(DEB_HOST_ARCH_OS), linux)
+export deb_systemdsystemunitdir = $(shell pkg-config --variable=systemdsystemunitdir systemd | sed s,^/,,)
+export deb_udevudevdir = $(shell pkg-config pkg-config --variable=udevdir udev | sed s,^/,,)
+endif
+
ifneq ($(filter pkg.e2fsprogs.no-fuse2fs,$(DEB_BUILD_PROFILES)),)
SKIP_FUSE2FS=yes
endif
@@ -30,7 +35,7 @@ INSTALL ?= install
INSTALL_PROGRAM ?= $(INSTALL) -p -m 0755
ifneq (,$(findstring update-symbols,$(DEB_BUILD_OPTIONS)))
-SYMBOL_LIBS := libext2fs libcomerr2 libss2
+SYMBOL_LIBS := libext2fst64 libcomerr2 libss2
endif
CFLAGS_SHLIB = $(CFLAGS)
@@ -148,6 +153,10 @@ override_dh_installinfo:
dh_installinfo -pcomerr-dev ${stdbuilddir}/lib/et/com_err.info
dh_installinfo -plibext2fs-dev ${stdbuilddir}/doc/libext2fs.info
+override_dh_installsystemd:
+ dh_installsystemd -p e2fsprogs --no-restart-after-upgrade --no-stop-on-upgrade e2scrub_all.timer e2scrub_reap.service
+ dh_installsystemd --name=service1
+
override_dh_makeshlibs:
for i in $(SYMBOL_LIBS); \
do \
diff --git a/debian/shlibs.local b/debian/shlibs.local
index e678de0b9..c87a16cae 100644
--- a/debian/shlibs.local
+++ b/debian/shlibs.local
@@ -1,4 +1,4 @@
-libext2fs 2
+libext2fst64 2
libe2p 2
libuuid 1
libcom_err 2
diff --git a/debugfs/Makefile.in b/debugfs/Makefile.in
index 67f8d0b65..b845a6f02 100644
--- a/debugfs/Makefile.in
+++ b/debugfs/Makefile.in
@@ -20,7 +20,8 @@ MK_CMDS= _SS_DIR_OVERRIDE=$(srcdir)/../lib/ss ../lib/ss/mk_cmds
DEBUG_OBJS= debug_cmds.o debugfs.o util.o ncheck.o icheck.o ls.o \
lsdel.o dump.o set_fields.o logdump.o htree.o unused.o e2freefrag.o \
filefrag.o extent_cmds.o extent_inode.o zap.o create_inode.o \
- quota.o xattrs.o journal.o revoke.o recovery.o do_journal.o
+ create_inode_libarchive.o quota.o xattrs.o journal.o revoke.o \
+ recovery.o do_journal.o
RO_DEBUG_OBJS= ro_debug_cmds.o ro_debugfs.o util.o ncheck.o icheck.o ls.o \
lsdel.o logdump.o htree.o e2freefrag.o filefrag.o extent_cmds.o \
@@ -31,12 +32,13 @@ SRCS= debug_cmds.c $(srcdir)/debugfs.c $(srcdir)/util.c $(srcdir)/ls.c \
$(srcdir)/dump.c $(srcdir)/set_fields.c ${srcdir}/logdump.c \
$(srcdir)/htree.c $(srcdir)/unused.c ${srcdir}/../misc/e2freefrag.c \
$(srcdir)/filefrag.c $(srcdir)/extent_inode.c $(srcdir)/zap.c \
- $(srcdir)/../misc/create_inode.c $(srcdir)/xattrs.c $(srcdir)/quota.c \
- $(srcdir)/journal.c $(srcdir)/../e2fsck/revoke.c \
+ $(srcdir)/../misc/create_inode.c \
+ $(srcdir)/../misc/create_inode_libarchive.c $(srcdir)/xattrs.c \
+ $(srcdir)/quota.c $(srcdir)/journal.c $(srcdir)/../e2fsck/revoke.c \
$(srcdir)/../e2fsck/recovery.c $(srcdir)/do_journal.c
LIBS= $(LIBSUPPORT) $(LIBEXT2FS) $(LIBE2P) $(LIBSS) $(LIBCOM_ERR) $(LIBBLKID) \
- $(LIBUUID) $(LIBMAGIC) $(SYSLIBS)
+ $(LIBUUID) $(LIBMAGIC) $(SYSLIBS) $(LIBARCHIVE)
DEPLIBS= $(DEPLIBSUPPORT) $(LIBEXT2FS) $(LIBE2P) $(DEPLIBSS) $(DEPLIBCOM_ERR) \
$(DEPLIBBLKID) $(DEPLIBUUID)
@@ -113,6 +115,11 @@ create_inode.o: $(srcdir)/../misc/create_inode.c
$(Q) $(CC) -c $(ALL_CFLAGS) -I$(srcdir) \
$(srcdir)/../misc/create_inode.c -o $@
+create_inode_libarchive.o: $(srcdir)/../misc/create_inode_libarchive.c
+ $(E) " CC $@"
+ $(Q) $(CC) -c $(ALL_CFLAGS) -I$(srcdir) \
+ $(srcdir)/../misc/create_inode_libarchive.c -o $@
+
debugfs.8: $(DEP_SUBSTITUTE) $(srcdir)/debugfs.8.in
$(E) " SUBST $@"
$(Q) $(SUBSTITUTE_UPTIME) $(srcdir)/debugfs.8.in debugfs.8
@@ -357,6 +364,16 @@ create_inode.o: $(srcdir)/../misc/create_inode.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/ext2fs/fiemap.h \
$(srcdir)/../misc/create_inode.h $(top_srcdir)/lib/e2p/e2p.h \
$(top_srcdir)/lib/support/nls-enable.h
+create_inode_libarchive.o: $(srcdir)/../misc/create_inode_libarchive.c \
+ $(top_builddir)/lib/config.h $(srcdir)/../misc/create_inode_libarchive.h \
+ $(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/ext2fs/ext2fs.h \
+ $(top_builddir)/lib/ext2fs/ext2_types.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \
+ $(top_srcdir)/lib/ext2fs/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
+ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
+ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \
+ $(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/ext2fs/fiemap.h \
+ $(srcdir)/../misc/create_inode.h $(top_srcdir)/lib/e2p/e2p.h \
+ $(top_srcdir)/lib/support/nls-enable.h
xattrs.o: $(srcdir)/xattrs.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/support/cstring.h \
$(srcdir)/debugfs.h $(top_srcdir)/lib/ss/ss.h \
diff --git a/debugfs/debugfs.8.in b/debugfs/debugfs.8.in
index 5b5329c38..7cf5c1659 100644
--- a/debugfs/debugfs.8.in
+++ b/debugfs/debugfs.8.in
@@ -268,9 +268,24 @@ number, otherwise use the
.B s_mmp_block
field in the superblock to locate and use the existing MMP block.
.TP
-.BI dx_hash " [-h hash_alg] [-s hash_seed] filename"
+.BI dx_hash " [-cv] [-h hash_alg] [-s hash_seed] filename"
Calculate the directory hash of
.IR filename .
+The
+.I -c
+option will casefold the filename before calculating the hash. The
+.I -v
+option will make the
+.B dx_hash
+command more verbose and print the hash algorithm and hash seed to
+calculate the hash.
+If a file system is open, use the hash_seed and
+default hash_algorithm used by the file system, although these can be
+overridden by the
+.I -h
+and
+.I -s
+options.
The hash algorithm specified with
.I -h
may be
diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c
index 9b6321dc4..16a03d48e 100644
--- a/debugfs/debugfs.c
+++ b/debugfs/debugfs.c
@@ -222,7 +222,7 @@ errout:
com_err(device, retval, "while trying to close filesystem");
}
-void do_open_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_open_filesys(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
int c, err;
@@ -305,7 +305,7 @@ print_usage:
"<device>\n", argv[0]);
}
-void do_lcd(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_lcd(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
if (argc != 2) {
@@ -343,7 +343,7 @@ static void close_filesystem(NOARGS)
return;
}
-void do_close_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_close_filesys(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
int c;
@@ -372,7 +372,7 @@ void do_close_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
}
#ifndef READ_ONLY
-void do_init_filesys(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_init_filesys(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
struct ext2_super_block param;
@@ -433,7 +433,7 @@ static void print_bg_opts(ext2_filsys fs, dgrp_t group, int mask,
}
}
-void do_show_super_stats(int argc, char *argv[],
+void do_show_super_stats(int argc, ss_argv_t argv,
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
@@ -531,7 +531,7 @@ print_usage:
#ifndef READ_ONLY
void do_dirty_filesys(int argc EXT2FS_ATTR((unused)),
- char **argv EXT2FS_ATTR((unused)),
+ ss_argv_t argv EXT2FS_ATTR((unused)),
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
@@ -831,11 +831,13 @@ void internal_dump_inode(FILE *out, const char *prefix,
char frag, fsize;
int os = current_fs->super->s_creator_os;
struct ext2_inode_large *large_inode;
- int is_large_inode = 0;
+ size_t inode_size;
- if (EXT2_INODE_SIZE(current_fs->super) > EXT2_GOOD_OLD_INODE_SIZE)
- is_large_inode = 1;
large_inode = (struct ext2_inode_large *) inode;
+ if (EXT2_INODE_SIZE(current_fs->super) > EXT2_GOOD_OLD_INODE_SIZE)
+ inode_size = ext2fs_inode_actual_size(large_inode);
+ else
+ inode_size = EXT2_GOOD_OLD_INODE_SIZE;
if (LINUX_S_ISDIR(inode->i_mode)) i_type = "directory";
else if (LINUX_S_ISREG(inode->i_mode)) i_type = "regular";
@@ -848,7 +850,7 @@ void internal_dump_inode(FILE *out, const char *prefix,
fprintf(out, "%sInode: %u Type: %s ", prefix, inode_num, i_type);
fprintf(out, "%sMode: 0%03o Flags: 0x%x\n",
prefix, inode->i_mode & 07777, inode->i_flags);
- if (is_large_inode && large_inode->i_extra_isize >= 24) {
+ if (ext2fs_inode_includes(inode_size, i_version_hi)) {
fprintf(out, "%sGeneration: %u Version: 0x%08x:%08x\n",
prefix, inode->i_generation, large_inode->i_version_hi,
inode->osd1.linux1.l_i_version);
@@ -858,7 +860,7 @@ void internal_dump_inode(FILE *out, const char *prefix,
}
fprintf(out, "%sUser: %5d Group: %5d",
prefix, inode_uid(*inode), inode_gid(*inode));
- if (is_large_inode && large_inode->i_extra_isize >= 32)
+ if (ext2fs_inode_includes(inode_size, i_projid))
fprintf(out, " Project: %5d", large_inode->i_projid);
fputs(" Size: ", out);
if (LINUX_S_ISREG(inode->i_mode) || LINUX_S_ISDIR(inode->i_mode))
@@ -895,39 +897,51 @@ void internal_dump_inode(FILE *out, const char *prefix,
}
fprintf(out, "%sFragment: Address: %u Number: %u Size: %u\n",
prefix, inode->i_faddr, frag, fsize);
- if (is_large_inode && large_inode->i_extra_isize >= 24) {
+ if (ext2fs_inode_includes(inode_size, i_ctime_extra))
fprintf(out, "%s ctime: 0x%08x:%08x -- %s", prefix,
inode->i_ctime, large_inode->i_ctime_extra,
- inode_time_to_string(inode->i_ctime,
- large_inode->i_ctime_extra));
+ time_to_string(ext2fs_inode_xtime_get(large_inode,
+ i_ctime)));
+ else
+ fprintf(out, "%sctime: 0x%08x -- %s", prefix, inode->i_ctime,
+ time_to_string((__s32) inode->i_ctime));
+ if (ext2fs_inode_includes(inode_size, i_atime_extra))
fprintf(out, "%s atime: 0x%08x:%08x -- %s", prefix,
inode->i_atime, large_inode->i_atime_extra,
- inode_time_to_string(inode->i_atime,
- large_inode->i_atime_extra));
+ time_to_string(ext2fs_inode_xtime_get(large_inode,
+ i_atime)));
+ else
+ fprintf(out, "%satime: 0x%08x -- %s", prefix, inode->i_atime,
+ time_to_string((__s32) inode->i_atime));
+ if (ext2fs_inode_includes(inode_size, i_mtime_extra))
fprintf(out, "%s mtime: 0x%08x:%08x -- %s", prefix,
inode->i_mtime, large_inode->i_mtime_extra,
- inode_time_to_string(inode->i_mtime,
- large_inode->i_mtime_extra));
+ time_to_string(ext2fs_inode_xtime_get(large_inode,
+ i_mtime)));
+ else
+ fprintf(out, "%smtime: 0x%08x -- %s", prefix, inode->i_mtime,
+ time_to_string((__s32) inode->i_mtime));
+ if (ext2fs_inode_includes(inode_size, i_crtime_extra))
fprintf(out, "%scrtime: 0x%08x:%08x -- %s", prefix,
large_inode->i_crtime, large_inode->i_crtime_extra,
- inode_time_to_string(large_inode->i_crtime,
- large_inode->i_crtime_extra));
- if (inode->i_dtime)
+ time_to_string(ext2fs_inode_xtime_get(large_inode,
+ i_crtime)));
+ if (inode->i_dtime) {
+ if (ext2fs_inode_includes(inode_size, i_ctime_extra)) {
+ time_t tm;
+
+ /* dtime doesn't have its own i_dtime_extra field, so
+ * approximate this with i_ctime_extra instead. */
+ tm = __decode_extra_sec(inode->i_dtime,
+ large_inode->i_ctime_extra);
fprintf(out, "%s dtime: 0x%08x:(%08x) -- %s", prefix,
- large_inode->i_dtime, large_inode->i_ctime_extra,
- inode_time_to_string(inode->i_dtime,
- large_inode->i_ctime_extra));
- } else {
- fprintf(out, "%sctime: 0x%08x -- %s", prefix, inode->i_ctime,
- time_to_string((__s32) inode->i_ctime));
- fprintf(out, "%satime: 0x%08x -- %s", prefix, inode->i_atime,
- time_to_string((__s32) inode->i_atime));
- fprintf(out, "%smtime: 0x%08x -- %s", prefix, inode->i_mtime,
- time_to_string((__s32) inode->i_mtime));
- if (inode->i_dtime)
+ inode->i_dtime, large_inode->i_ctime_extra,
+ time_to_string(tm));
+ } else {
fprintf(out, "%sdtime: 0x%08x -- %s", prefix,
inode->i_dtime,
time_to_string((__s32) inode->i_dtime));
+ }
}
if (EXT2_INODE_SIZE(current_fs->super) > EXT2_GOOD_OLD_INODE_SIZE)
internal_dump_inode_extra(out, prefix, inode_num,
@@ -935,11 +949,7 @@ void internal_dump_inode(FILE *out, const char *prefix,
dump_inode_attributes(out, inode_num);
if (ext2fs_has_feature_metadata_csum(current_fs->super)) {
__u32 crc = inode->i_checksum_lo;
- if (is_large_inode &&
- large_inode->i_extra_isize >=
- (offsetof(struct ext2_inode_large,
- i_checksum_hi) -
- EXT2_GOOD_OLD_INODE_SIZE))
+ if (ext2fs_inode_includes(inode_size, i_checksum_hi))
crc |= ((__u32)large_inode->i_checksum_hi) << 16;
fprintf(out, "Inode checksum: 0x%08x\n", crc);
}
@@ -986,7 +996,7 @@ static void dump_inode(ext2_ino_t inode_num, struct ext2_inode *inode)
close_pager(out);
}
-void do_stat(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_stat(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t inode;
@@ -1018,7 +1028,7 @@ void do_stat(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
return;
}
-void do_dump_extents(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_dump_extents(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
struct ext2_inode inode;
@@ -1090,7 +1100,7 @@ static int print_blocks_proc(ext2_filsys fs EXT2FS_ATTR((unused)),
return 0;
}
-void do_blocks(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_blocks(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t inode;
@@ -1108,7 +1118,7 @@ void do_blocks(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
return;
}
-void do_chroot(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_chroot(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t inode;
@@ -1126,7 +1136,7 @@ void do_chroot(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
#ifndef READ_ONLY
-void do_clri(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_clri(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t inode;
@@ -1142,7 +1152,7 @@ void do_clri(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
return;
}
-void do_freei(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_freei(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
unsigned int len = 1;
@@ -1173,7 +1183,7 @@ void do_freei(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
ext2fs_mark_ib_dirty(current_fs);
}
-void do_seti(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_seti(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
unsigned int len = 1;
@@ -1205,7 +1215,7 @@ void do_seti(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
#endif /* READ_ONLY */
-void do_testi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_testi(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t inode;
@@ -1220,7 +1230,7 @@ void do_testi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
#ifndef READ_ONLY
-void do_freeb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_freeb(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
blk64_t block;
@@ -1240,7 +1250,7 @@ void do_freeb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
ext2fs_mark_bb_dirty(current_fs);
}
-void do_setb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_setb(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
blk64_t block;
@@ -1261,7 +1271,7 @@ void do_setb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
#endif /* READ_ONLY */
-void do_testb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_testb(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
blk64_t block;
@@ -1348,7 +1358,7 @@ static void modify_u32(char *com, const char *prompt,
}
-void do_modify_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_modify_inode(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
struct ext2_inode inode;
@@ -1426,7 +1436,7 @@ void do_modify_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
#endif /* READ_ONLY */
-void do_change_working_dir(int argc, char *argv[],
+void do_change_working_dir(int argc, ss_argv_t argv,
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
@@ -1445,7 +1455,7 @@ void do_change_working_dir(int argc, char *argv[],
return;
}
-void do_print_working_directory(int argc, char *argv[],
+void do_print_working_directory(int argc, ss_argv_t argv,
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
@@ -1536,7 +1546,7 @@ static void make_link(char *sourcename, char *destname)
}
-void do_link(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_link(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
if (common_args_process(argc, argv, 3, 3, "link",
@@ -1559,7 +1569,7 @@ static int mark_blocks_proc(ext2_filsys fs, blk64_t *blocknr,
return 0;
}
-void do_undel(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_undel(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t ino;
@@ -1623,7 +1633,7 @@ static void unlink_file_by_name(char *filename)
return;
}
-void do_unlink(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_unlink(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
if (common_args_process(argc, argv, 2, 2, "link",
@@ -1633,7 +1643,7 @@ void do_unlink(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
unlink_file_by_name(argv[1]);
}
-void do_copy_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_copy_inode(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t src_ino, dest_ino;
@@ -1662,7 +1672,7 @@ void do_copy_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
#endif /* READ_ONLY */
-void do_find_free_block(int argc, char *argv[],
+void do_find_free_block(int argc, ss_argv_t argv,
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
@@ -1716,7 +1726,7 @@ void do_find_free_block(int argc, char *argv[],
printf("\n");
}
-void do_find_free_inode(int argc, char *argv[],
+void do_find_free_inode(int argc, ss_argv_t argv,
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
@@ -1758,7 +1768,7 @@ void do_find_free_inode(int argc, char *argv[],
}
#ifndef READ_ONLY
-void do_write(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_write(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
errcode_t retval;
@@ -1772,7 +1782,7 @@ void do_write(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
com_err(argv[0], retval, 0);
}
-void do_mknod(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_mknod(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
unsigned long major, minor;
@@ -1807,9 +1817,12 @@ void do_mknod(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
if (nr == 5) {
- major = strtoul(argv[3], argv+3, 0);
- minor = strtoul(argv[4], argv+4, 0);
- if (major > 65535 || minor > 65535 || argv[3][0] || argv[4][0])
+ char *end1 = NULL, *end2 = NULL;
+
+ major = strtoul(argv[3], &end1, 0);
+ minor = strtoul(argv[4], &end2, 0);
+ if (major > 65535 || minor > 65535 ||
+ (end1 && *end1) || (end2 && *end2))
nr = 0;
}
@@ -1823,7 +1836,7 @@ void do_mknod(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
com_err(argv[0], retval, 0);
}
-void do_mkdir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_mkdir(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
errcode_t retval;
@@ -1877,7 +1890,7 @@ static void kill_file_by_inode(ext2_ino_t inode)
}
-void do_kill_file(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_kill_file(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t inode_num;
@@ -1888,7 +1901,7 @@ void do_kill_file(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
kill_file_by_inode(inode_num);
}
-void do_rm(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_rm(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
int retval;
@@ -1950,7 +1963,7 @@ static int rmdir_proc(ext2_ino_t dir EXT2FS_ATTR((unused)),
return 0;
}
-void do_rmdir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_rmdir(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
int retval;
@@ -2009,7 +2022,7 @@ void do_rmdir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
#endif /* READ_ONLY */
void do_show_debugfs_params(int argc EXT2FS_ATTR((unused)),
- char *argv[] EXT2FS_ATTR((unused)),
+ ss_argv_t argv EXT2FS_ATTR((unused)),
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
@@ -2021,7 +2034,7 @@ void do_show_debugfs_params(int argc EXT2FS_ATTR((unused)),
}
#ifndef READ_ONLY
-void do_expand_dir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_expand_dir(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t inode;
@@ -2036,7 +2049,7 @@ void do_expand_dir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
return;
}
-void do_features(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_features(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
int i;
@@ -2058,7 +2071,7 @@ void do_features(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
#endif /* READ_ONLY */
-void do_bmap(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_bmap(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t ino;
@@ -2123,7 +2136,7 @@ void do_bmap(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
fputc('\n', stdout);
}
-void do_imap(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_imap(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t ino;
@@ -2155,7 +2168,7 @@ void do_imap(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
-void do_idump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_idump(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
struct ext2_inode_large *inode;
@@ -2226,7 +2239,7 @@ err:
}
#ifndef READ_ONLY
-void do_set_current_time(int argc, char *argv[],
+void do_set_current_time(int argc, ss_argv_t argv,
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
@@ -2287,7 +2300,7 @@ static int find_supp_feature(__u32 *supp, int feature_type, char *name)
return 0;
}
-void do_supported_features(int argc, char *argv[],
+void do_supported_features(int argc, ss_argv_t argv,
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
@@ -2317,7 +2330,7 @@ void do_supported_features(int argc, char *argv[],
}
#ifndef READ_ONLY
-void do_punch(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_punch(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t ino;
@@ -2353,7 +2366,7 @@ void do_punch(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
}
-void do_fallocate(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_fallocate(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t ino;
@@ -2390,7 +2403,7 @@ void do_fallocate(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
}
-void do_symlink(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_symlink(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
errcode_t retval;
@@ -2407,7 +2420,7 @@ void do_symlink(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
#endif /* READ_ONLY */
#if CONFIG_MMP
-void do_dump_mmp(int argc EXT2FS_ATTR((unused)), char *argv[],
+void do_dump_mmp(int argc EXT2FS_ATTR((unused)), ss_argv_t argv,
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
@@ -2473,7 +2486,7 @@ void do_dump_mmp(int argc EXT2FS_ATTR((unused)), char *argv[],
}
#else
void do_dump_mmp(int argc EXT2FS_ATTR((unused)),
- char *argv[] EXT2FS_ATTR((unused)),
+ ss_argv_t argv EXT2FS_ATTR((unused)),
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
diff --git a/debugfs/debugfs.h b/debugfs/debugfs.h
index 39bc0247f..88d929cbf 100644
--- a/debugfs/debugfs.h
+++ b/debugfs/debugfs.h
@@ -36,7 +36,6 @@ extern int check_fs_not_open(char *name);
extern int check_fs_read_write(char *name);
extern int check_fs_bitmaps(char *name);
extern ext2_ino_t string_to_inode(char *str);
-extern char *inode_time_to_string(__u32 xtime, __u32 xtime_extra);
extern char *time_to_string(__s64);
extern __s64 string_to_time(const char *);
extern unsigned long parse_ulong(const char *str, const char *cmd,
@@ -45,12 +44,12 @@ extern unsigned long long parse_ulonglong(const char *str, const char *cmd,
const char *descr, int *err);
extern int strtoblk(const char *cmd, const char *str, const char *errmsg,
blk64_t *ret);
-extern int common_args_process(int argc, char *argv[], int min_argc,
+extern int common_args_process(int argc, ss_argv_t argv, int min_argc,
int max_argc, const char *cmd,
const char *usage, int flags);
-extern int common_inode_args_process(int argc, char *argv[],
+extern int common_inode_args_process(int argc, ss_argv_t argv,
ext2_ino_t *inode, int flags);
-extern int common_block_args_process(int argc, char *argv[],
+extern int common_block_args_process(int argc, ss_argv_t argv,
blk64_t *block, blk64_t *count);
extern int debugfs_read_inode(ext2_ino_t ino, struct ext2_inode * inode,
const char *cmd);
@@ -67,60 +66,60 @@ extern int ext2_file_type(unsigned int mode);
/* ss command functions */
/* dump.c */
-extern void do_dump(int argc, char **argv, int sci_idx, void *infop);
-extern void do_cat(int argc, char **argv, int sci_idx, void *infop);
-extern void do_rdump(int argc, char **argv, int sci_idx, void *infop);
+extern void do_dump(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_cat(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_rdump(int argc, ss_argv_t argv, int sci_idx, void *infop);
/* extent_inode.c */
-extern void do_extent_open(int argc, char **argv, int sci_idx, void *infop);
-extern void do_extent_close(int argc, char **argv, int sci_idx, void *infop);
-extern void do_current_node(int argc, char **argv, int sci_idx, void *infop);
-extern void do_root_node(int argc, char **argv, int sci_idx, void *infop);
-extern void do_last_leaf(int argc, char **argv, int sci_idx, void *infop);
-extern void do_first_sib(int argc, char **argv, int sci_idx, void *infop);
-extern void do_last_sib(int argc, char **argv, int sci_idx, void *infop);
-extern void do_next_sib(int argc, char **argv, int sci_idx, void *infop);
-extern void do_prev_sib(int argc, char **argv, int sci_idx, void *infop);
-extern void do_next_leaf(int argc, char **argv, int sci_idx, void *infop);
-extern void do_prev_leaf(int argc, char **argv, int sci_idx, void *infop);
-extern void do_next(int argc, char **argv, int sci_idx, void *infop);
-extern void do_prev(int argc, char **argv, int sci_idx, void *infop);
-extern void do_up(int argc, char **argv, int sci_idx, void *infop);
-extern void do_down(int argc, char **argv, int sci_idx, void *infop);
-extern void do_delete_node(int argc, char **argv, int sci_idx, void *infop);
-extern void do_replace_node(int argc, char **argv, int sci_idx, void *infop);
-extern void do_split_node(int argc, char **argv, int sci_idx, void *infop);
-extern void do_insert_node(int argc, char **argv, int sci_idx, void *infop);
-extern void do_set_bmap(int argc, char **argv, int sci_idx, void *infop);
-extern void do_print_all(int argc, char **argv, int sci_idx, void *infop);
-extern void do_fix_parents(int argc, char **argv, int sci_idx, void *infop);
-extern void do_info(int argc, char **argv, int sci_idx, void *infop);
-extern void do_goto_block(int argc, char **argv, int sci_idx, void *infop);
+extern void do_extent_open(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_extent_close(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_current_node(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_root_node(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_last_leaf(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_first_sib(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_last_sib(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_next_sib(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_prev_sib(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_next_leaf(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_prev_leaf(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_next(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_prev(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_up(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_down(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_delete_node(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_replace_node(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_split_node(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_insert_node(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_set_bmap(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_print_all(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_fix_parents(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_info(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_goto_block(int argc, ss_argv_t argv, int sci_idx, void *infop);
/* htree.c */
-extern void do_htree_dump(int argc, char **argv, int sci_idx, void *infop);
-extern void do_dx_hash(int argc, char **argv, int sci_idx, void *infop);
-extern void do_dirsearch(int argc, char **argv, int sci_idx, void *infop);
+extern void do_htree_dump(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_dx_hash(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_dirsearch(int argc, ss_argv_t argv, int sci_idx, void *infop);
/* logdump.c */
-extern void do_logdump(int argc, char **argv, int sci_idx, void *infop);
+extern void do_logdump(int argc, ss_argv_t argv, int sci_idx, void *infop);
/* lsdel.c */
-extern void do_lsdel(int argc, char **argv, int sci_idx, void *infop);
+extern void do_lsdel(int argc, ss_argv_t argv, int sci_idx, void *infop);
/* icheck.c */
-extern void do_icheck(int argc, char **argv, int sci_idx, void *infop);
+extern void do_icheck(int argc, ss_argv_t argv, int sci_idx, void *infop);
/* ncheck.c */
-extern void do_ncheck(int argc, char **argv, int sci_idx, void *infop);
+extern void do_ncheck(int argc, ss_argv_t argv, int sci_idx, void *infop);
/* set_fields.c */
-extern void do_set_super(int argc, char **, int sci_idx, void *infop);
-extern void do_set_inode(int argc, char **, int sci_idx, void *infop);
-extern void do_set_block_group_descriptor(int argc, char **, int sci_idx, void *infop);
+extern void do_set_super(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_set_inode(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_set_block_group_descriptor(int argc, ss_argv_t argv, int sci_idx, void *infop);
/* unused.c */
-extern void do_dump_unused(int argc, char **argv, int sci_idx, void *infop);
+extern void do_dump_unused(int argc, ss_argv_t argv, int sci_idx, void *infop);
/* debugfs.c */
extern ss_request_table *extra_cmds;
@@ -128,68 +127,68 @@ extern const char *debug_prog_name;
extern void internal_dump_inode(FILE *, const char *, ext2_ino_t,
struct ext2_inode *, int);
-extern void do_dirty_filesys(int argc, char **argv, int sci_idx, void *infop);
-extern void do_open_filesys(int argc, char **argv, int sci_idx, void *infop);
-extern void do_close_filesys(int argc, char **argv, int sci_idx, void *infop);
-extern void do_lcd(int argc, char **argv, int sci_idx, void *infop);
-extern void do_init_filesys(int argc, char **argv, int sci_idx, void *infop);
-extern void do_show_super_stats(int argc, char **argv, int sci_idx, void *infop);
-extern void do_kill_file(int argc, char **argv, int sci_idx, void *infop);
-extern void do_rm(int argc, char **argv, int sci_idx, void *infop);
-extern void do_link(int argc, char **argv, int sci_idx, void *infop);
-extern void do_undel(int argc, char **argv, int sci_idx, void *infop);
-extern void do_unlink(int argc, char **argv, int sci_idx, void *infop);
-extern void do_copy_inode(int argc, char *argv[], int sci_idx, void *infop);
-extern void do_find_free_block(int argc, char **argv, int sci_idx, void *infop);
-extern void do_find_free_inode(int argc, char **argv, int sci_idx, void *infop);
-extern void do_stat(int argc, char **argv, int sci_idx, void *infop);
-extern void do_dump_extents(int argc, char **argv, int sci_idx, void *infop);
-extern void do_blocks(int argc, char *argv[], int sci_idx, void *infop);
-
-extern void do_chroot(int argc, char **argv, int sci_idx, void *infop);
-extern void do_clri(int argc, char **argv, int sci_idx, void *infop);
-extern void do_freei(int argc, char **argv, int sci_idx, void *infop);
-extern void do_seti(int argc, char **argv, int sci_idx, void *infop);
-extern void do_testi(int argc, char **argv, int sci_idx, void *infop);
-extern void do_freeb(int argc, char **argv, int sci_idx, void *infop);
-extern void do_setb(int argc, char **argv, int sci_idx, void *infop);
-extern void do_testb(int argc, char **argv, int sci_idx, void *infop);
-extern void do_modify_inode(int argc, char **argv, int sci_idx, void *infop);
-extern void do_list_dir(int argc, char **argv, int sci_idx, void *infop);
-extern void do_change_working_dir(int argc, char **argv, int sci_idx, void *infop);
-extern void do_print_working_directory(int argc, char **argv, int sci_idx, void *infop);
-extern void do_write(int argc, char **argv, int sci_idx, void *infop);
-extern void do_mknod(int argc, char **argv, int sci_idx, void *infop);
-extern void do_mkdir(int argc, char **argv, int sci_idx, void *infop);
-extern void do_rmdir(int argc, char **argv, int sci_idx, void *infop);
-extern void do_show_debugfs_params(int argc, char **argv, int sci_idx, void *infop);
-extern void do_expand_dir(int argc, char **argv, int sci_idx, void *infop);
-extern void do_features(int argc, char **argv, int sci_idx, void *infop);
-extern void do_bmap(int argc, char **argv, int sci_idx, void *infop);
-extern void do_imap(int argc, char **argv, int sci_idx, void *infop);
-extern void do_idump(int argc, char *argv[], int sci_idx, void *infop);
-extern void do_set_current_time(int argc, char **argv, int sci_idx, void *infop);
-extern void do_supported_features(int argc, char **argv, int sci_idx, void *infop);
-extern void do_punch(int argc, char **argv, int sci_idx, void *infop);
-extern void do_fallocate(int argc, char **argv, int sci_idx, void *infop);
-extern void do_symlink(int argc, char **argv, int sci_idx, void *infop);
-
-extern void do_dump_mmp(int argc, char **argv, int sci_idx, void *infop);
-extern void do_set_mmp_value(int argc, char **argv, int sci_idx, void *infop);
-
-extern void do_freefrag(int argc, char **argv, int sci_idx, void *infop);
-extern void do_filefrag(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_dirty_filesys(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_open_filesys(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_close_filesys(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_lcd(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_init_filesys(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_show_super_stats(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_kill_file(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_rm(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_link(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_undel(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_unlink(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_copy_inode(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_find_free_block(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_find_free_inode(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_stat(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_dump_extents(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_blocks(int argc, ss_argv_t argv, int sci_idx, void *infop);
+
+extern void do_chroot(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_clri(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_freei(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_seti(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_testi(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_freeb(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_setb(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_testb(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_modify_inode(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_list_dir(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_change_working_dir(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_print_working_directory(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_write(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_mknod(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_mkdir(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_rmdir(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_show_debugfs_params(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_expand_dir(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_features(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_bmap(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_imap(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_idump(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_set_current_time(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_supported_features(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_punch(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_fallocate(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_symlink(int argc, ss_argv_t argv, int sci_idx, void *infop);
+
+extern void do_dump_mmp(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_set_mmp_value(int argc, ss_argv_t argv, int sci_idx, void *infop);
+
+extern void do_freefrag(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_filefrag(int argc, ss_argv_t argv, int sci_idx, void *infop);
/* do_journal.c */
-extern void do_journal_write(int argc, char *argv[], int sci_idx, void *infop);
-extern void do_journal_open(int argc, char *argv[], int sci_idx, void *infop);
-extern void do_journal_close(int argc, char *argv[], int sci_idx, void *infop);
-extern void do_journal_run(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_journal_write(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_journal_open(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_journal_close(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_journal_run(int argc, ss_argv_t argv, int sci_idx, void *infop);
/* quota.c */
-extern void do_list_quota(int argc, char *argv[], int sci_idx, void *infop);
-extern void do_get_quota(int argc, char *argv[], int sci_idx, void *infop);
+extern void do_list_quota(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_get_quota(int argc, ss_argv_t argv, int sci_idx, void *infop);
/* util.c */
extern __s64 string_to_time(const char *arg);
@@ -198,13 +197,13 @@ extern void do_byte_hexdump(FILE *fp, unsigned char *buf, size_t bufsize);
/* xattrs.c */
void dump_inode_attributes(FILE *out, ext2_ino_t ino);
-void do_get_xattr(int argc, char **argv, int sci_idx, void *infop);
-void do_set_xattr(int argc, char **argv, int sci_idx, void *infop);
-void do_rm_xattr(int argc, char **argv, int sci_idx, void *infop);
-void do_list_xattr(int argc, char **argv, int sci_idx, void *infop);
+void do_get_xattr(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_set_xattr(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_rm_xattr(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_list_xattr(int argc, ss_argv_t argv, int sci_idx, void *infop);
void raw_inode_xattr_dump(FILE *f, unsigned char *buf, unsigned int len);
void block_xattr_dump(FILE *f, unsigned char *buf, unsigned int len);
/* zap.c */
-extern void do_zap_block(int argc, char **argv, int sci_idx, void *infop);
-extern void do_block_dump(int argc, char **argv, int sci_idx, void *infop);
+extern void do_zap_block(int argc, ss_argv_t argv, int sci_idx, void *infop);
+extern void do_block_dump(int argc, ss_argv_t argv, int sci_idx, void *infop);
diff --git a/debugfs/do_journal.c b/debugfs/do_journal.c
index 38439c692..116ca845d 100644
--- a/debugfs/do_journal.c
+++ b/debugfs/do_journal.c
@@ -534,7 +534,7 @@ error:
return err;
}
-void do_journal_write(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_journal_write(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
blk64_t *blist = NULL, *rlist = NULL;
@@ -862,7 +862,7 @@ static void update_64bit_flag(journal_t *journal)
jbd2_set_feature_64bit(journal);
}
-void do_journal_open(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_journal_open(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
int opt, enable_csum = 0, csum_ver = 3;
@@ -933,7 +933,7 @@ void do_journal_open(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
void do_journal_close(int argc EXT2FS_ATTR((unused)),
- char *argv[] EXT2FS_ATTR((unused)),
+ ss_argv_t argv EXT2FS_ATTR((unused)),
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
@@ -945,7 +945,7 @@ void do_journal_close(int argc EXT2FS_ATTR((unused)),
ext2fs_close_journal(current_fs, &current_journal);
}
-void do_journal_run(int argc EXT2FS_ATTR((unused)), char *argv[],
+void do_journal_run(int argc EXT2FS_ATTR((unused)), ss_argv_t argv,
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
diff --git a/debugfs/dump.c b/debugfs/dump.c
index 42f5204a8..4ab7cadcb 100644
--- a/debugfs/dump.c
+++ b/debugfs/dump.c
@@ -144,7 +144,7 @@ static void dump_file(const char *cmdname, ext2_ino_t ino, int fd,
return;
}
-void do_dump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_dump(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t inode;
@@ -323,7 +323,7 @@ static int rdump_dirent(struct ext2_dir_entry *dirent,
return 0;
}
-void do_rdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_rdump(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
struct stat st;
@@ -368,7 +368,7 @@ void do_rdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
}
}
-void do_cat(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_cat(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t inode;
diff --git a/debugfs/extent_inode.c b/debugfs/extent_inode.c
index e4e815ef4..6ef054d1a 100644
--- a/debugfs/extent_inode.c
+++ b/debugfs/extent_inode.c
@@ -48,7 +48,7 @@ static void dbg_print_extent(char *desc, struct ext2fs_extent *extent)
}
-static int common_extent_args_process(int argc, char *argv[], int min_argc,
+static int common_extent_args_process(int argc, ss_argv_t argv, int min_argc,
int max_argc, const char *cmd,
const char *usage, int flags)
{
@@ -65,7 +65,7 @@ static int common_extent_args_process(int argc, char *argv[], int min_argc,
static char *orig_prompt, *extent_prompt;
-void do_extent_open(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_extent_open(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t inode;
@@ -115,7 +115,7 @@ void do_extent_open(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
return;
}
-void do_extent_close(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_extent_close(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
int ret;
@@ -139,7 +139,7 @@ void do_extent_close(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
static void generic_goto_node(const char *my_name, int argc,
- char **argv, int op)
+ ss_argv_t argv, int op)
{
struct ext2fs_extent extent;
errcode_t retval;
@@ -161,85 +161,85 @@ static void generic_goto_node(const char *my_name, int argc,
dbg_print_extent(0, &extent);
}
-void do_current_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_current_node(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
generic_goto_node("current_node", argc, argv, EXT2_EXTENT_CURRENT);
}
-void do_root_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_root_node(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
generic_goto_node("root_node", argc, argv, EXT2_EXTENT_ROOT);
}
-void do_last_leaf(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_last_leaf(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
generic_goto_node("last_leaf", argc, argv, EXT2_EXTENT_LAST_LEAF);
}
-void do_first_sib(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_first_sib(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
generic_goto_node("first_sib", argc, argv, EXT2_EXTENT_FIRST_SIB);
}
-void do_last_sib(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_last_sib(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
generic_goto_node("next_sib", argc, argv, EXT2_EXTENT_LAST_SIB);
}
-void do_next_sib(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_next_sib(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
generic_goto_node("next_sib", argc, argv, EXT2_EXTENT_NEXT_SIB);
}
-void do_prev_sib(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_prev_sib(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
generic_goto_node("prev_sib", argc, argv, EXT2_EXTENT_PREV_SIB);
}
-void do_next_leaf(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_next_leaf(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
generic_goto_node("next_leaf", argc, argv, EXT2_EXTENT_NEXT_LEAF);
}
-void do_prev_leaf(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_prev_leaf(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
generic_goto_node("prev_leaf", argc, argv, EXT2_EXTENT_PREV_LEAF);
}
-void do_next(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_next(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
generic_goto_node("next", argc, argv, EXT2_EXTENT_NEXT);
}
-void do_prev(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_prev(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
generic_goto_node("prev", argc, argv, EXT2_EXTENT_PREV);
}
-void do_up(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_up(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
generic_goto_node("up", argc, argv, EXT2_EXTENT_UP);
}
-void do_down(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_down(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
generic_goto_node("down", argc, argv, EXT2_EXTENT_DOWN);
}
-void do_delete_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_delete_node(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
struct ext2fs_extent extent;
@@ -262,7 +262,7 @@ void do_delete_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
dbg_print_extent(0, &extent);
}
-void do_replace_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_replace_node(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
const char *usage = "[--uninit] <lblk> <len> <pblk>";
@@ -307,7 +307,7 @@ void do_replace_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
generic_goto_node(NULL, argc, argv, EXT2_EXTENT_CURRENT);
}
-void do_split_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_split_node(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
errcode_t retval;
@@ -324,7 +324,7 @@ void do_split_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
generic_goto_node(NULL, argc, argv, EXT2_EXTENT_CURRENT);
}
-void do_insert_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_insert_node(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
const char *usage = "[--after] [--uninit] <lblk> <len> <pblk>";
@@ -383,7 +383,7 @@ void do_insert_node(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
generic_goto_node(NULL, argc, argv, EXT2_EXTENT_CURRENT);
}
-void do_set_bmap(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_set_bmap(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
const char *usage = "[--uninit] <lblk> <pblk>";
@@ -432,7 +432,7 @@ void do_set_bmap(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
dbg_print_extent(0, &extent);
}
-void do_print_all(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_print_all(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
const char *usage = "[--leaf-only|--reverse|--reverse-leaf]";
@@ -484,7 +484,7 @@ void do_print_all(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
}
}
-void do_fix_parents(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_fix_parents(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
errcode_t retval;
@@ -500,7 +500,7 @@ void do_fix_parents(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
}
}
-void do_info(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_info(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
struct ext2fs_extent extent;
@@ -535,7 +535,7 @@ void do_info(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
info.max_uninit_len);
}
-void do_goto_block(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_goto_block(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
errcode_t retval;
diff --git a/debugfs/filefrag.c b/debugfs/filefrag.c
index 31c1440c5..9bda65def 100644
--- a/debugfs/filefrag.c
+++ b/debugfs/filefrag.c
@@ -264,7 +264,7 @@ static void dir_iterate(ext2_ino_t ino, struct filefrag_struct *fs)
}
}
-void do_filefrag(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_filefrag(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
struct filefrag_struct fs;
diff --git a/debugfs/htree.c b/debugfs/htree.c
index a9f9211ba..a10081507 100644
--- a/debugfs/htree.c
+++ b/debugfs/htree.c
@@ -245,7 +245,7 @@ errout:
-void do_htree_dump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_htree_dump(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t ino;
@@ -329,21 +329,31 @@ errout:
/*
* This function prints the hash of a given file.
*/
-void do_dx_hash(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_dx_hash(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_dirhash_t hash, minor_hash;
errcode_t err;
- int c;
+ int c, verbose = 0;
int hash_version = 0;
- __u32 hash_seed[4];
+ __u32 hash_seed[4] = { 0, };
int hash_flags = 0;
const struct ext2fs_nls_table *encoding = NULL;
- hash_seed[0] = hash_seed[1] = hash_seed[2] = hash_seed[3] = 0;
+ if (current_fs) {
+ hash_seed[0] = current_fs->super->s_hash_seed[0];
+ hash_seed[1] = current_fs->super->s_hash_seed[1];
+ hash_seed[2] = current_fs->super->s_hash_seed[2];
+ hash_seed[3] = current_fs->super->s_hash_seed[3];
+
+ hash_version = current_fs->super->s_def_hash_version;
+ if (hash_version <= EXT2_HASH_TEA &&
+ current_fs->super->s_flags & EXT2_FLAGS_UNSIGNED_HASH)
+ hash_version += 3;
+ }
reset_getopt();
- while ((c = getopt(argc, argv, "h:s:ce:")) != EOF) {
+ while ((c = getopt(argc, argv, "h:s:ce:v")) != EOF) {
switch (c) {
case 'h':
hash_version = e2p_string2hash(optarg);
@@ -368,14 +378,17 @@ void do_dx_hash(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
return;
}
break;
+ case 'v':
+ verbose = 1;
+ break;
default:
goto print_usage;
}
}
if (optind != argc-1) {
print_usage:
- com_err(argv[0], 0, "usage: dx_hash [-h hash_alg] "
- "[-s hash_seed] [-c] [-e encoding] filename");
+ com_err(argv[0], 0, "usage: dx_hash [-cv] [-h hash_alg] "
+ "[-s hash_seed] [-e encoding] filename");
return;
}
err = ext2fs_dirhash2(hash_version, argv[optind],
@@ -388,6 +401,13 @@ void do_dx_hash(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
printf("Hash of %s is 0x%0x (minor 0x%0x)\n", argv[optind],
hash, minor_hash);
+ if (verbose) {
+ char uuid_str[37];
+
+ uuid_unparse((__u8 *) hash_seed, uuid_str);
+ printf(" using hash algorithm %d and hash_seed %s\n",
+ hash_version, uuid_str);
+ }
}
/*
@@ -405,7 +425,7 @@ static int search_dir_block(ext2_filsys fs, blk64_t *blocknr,
e2_blkcnt_t blockcnt, blk64_t ref_blk,
int ref_offset, void *priv_data);
-void do_dirsearch(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_dirsearch(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t inode;
diff --git a/debugfs/icheck.c b/debugfs/icheck.c
index ed6e95092..175d12c9d 100644
--- a/debugfs/icheck.c
+++ b/debugfs/icheck.c
@@ -53,7 +53,7 @@ static int icheck_proc(ext2_filsys fs EXT2FS_ATTR((unused)),
return 0;
}
-void do_icheck(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_icheck(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
struct block_walk_struct bw;
diff --git a/debugfs/journal.c b/debugfs/journal.c
index 5bac0d3b0..04611acf7 100644
--- a/debugfs/journal.c
+++ b/debugfs/journal.c
@@ -245,6 +245,8 @@ void wait_on_buffer(struct buffer_head *bh)
static void ext2fs_clear_recover(ext2_filsys fs, int error)
{
+ time_t s_mtime;
+
ext2fs_clear_feature_journal_needs_recovery(fs->super);
/* if we had an error doing journal recovery, we need a full fsck */
@@ -254,8 +256,9 @@ static void ext2fs_clear_recover(ext2_filsys fs, int error)
* If we replayed the journal by definition the file system
* was mounted since the last time it was checked
*/
- if (fs->super->s_lastcheck >= fs->super->s_mtime)
- fs->super->s_lastcheck = fs->super->s_mtime - 1;
+ s_mtime = ext2fs_get_tstamp(fs->super, s_mtime);
+ if (ext2fs_get_tstamp(fs->super, s_lastcheck) >= s_mtime)
+ ext2fs_set_tstamp(fs->super, s_lastcheck, s_mtime - 1);
ext2fs_mark_super_dirty(fs);
}
@@ -789,6 +792,8 @@ errcode_t ext2fs_run_ext3_journal(ext2_filsys *fsp)
char *fsname;
int fsflags;
int fsblocksize;
+ char *save;
+ __u16 s_error_state;
if (!(fs->flags & EXT2_FLAG_RW))
return EXT2_ET_FILE_RO;
@@ -808,6 +813,12 @@ errcode_t ext2fs_run_ext3_journal(ext2_filsys *fsp)
if (stats && stats->bytes_written)
kbytes_written = stats->bytes_written >> 10;
+ save = malloc(EXT4_S_ERR_LEN);
+ if (save)
+ memcpy(save, ((char *) fs->super) + EXT4_S_ERR_START,
+ EXT4_S_ERR_LEN);
+ s_error_state = fs->super->s_state & EXT2_ERROR_FS;
+
ext2fs_mmp_stop(fs);
fsname = fs->device_name;
fs->device_name = NULL;
@@ -818,11 +829,15 @@ errcode_t ext2fs_run_ext3_journal(ext2_filsys *fsp)
retval = ext2fs_open(fsname, fsflags, 0, fsblocksize, io_ptr, fsp);
ext2fs_free_mem(&fsname);
if (retval)
- return retval;
+ goto outfree;
fs = *fsp;
fs->flags |= EXT2_FLAG_MASTER_SB_ONLY;
fs->super->s_kbytes_written += kbytes_written;
+ fs->super->s_state |= s_error_state;
+ if (save)
+ memcpy(((char *) fs->super) + EXT4_S_ERR_START, save,
+ EXT4_S_ERR_LEN);
/* Set the superblock flags */
ext2fs_clear_recover(fs, recover_retval != 0);
@@ -832,6 +847,9 @@ errcode_t ext2fs_run_ext3_journal(ext2_filsys *fsp)
* the EXT2_ERROR_FS flag in the fs superblock if needed.
*/
retval = ext2fs_check_ext3_journal(fs);
+
+outfree:
+ free(save);
return retval ? retval : recover_retval;
}
diff --git a/debugfs/logdump.c b/debugfs/logdump.c
index b600228ed..324ed425c 100644
--- a/debugfs/logdump.c
+++ b/debugfs/logdump.c
@@ -52,6 +52,7 @@ static int64_t dump_counts;
static blk64_t block_to_dump, bitmap_to_dump, inode_block_to_dump;
static unsigned int group_to_dump, inode_offset_to_dump;
static ext2_ino_t inode_to_dump;
+static bool wrapped_flag;
struct journal_source
{
@@ -80,10 +81,12 @@ static void dump_fc_block(FILE *out_file, char *buf, int blocksize,
static void do_hexdump (FILE *, char *, int);
#define WRAP(jsb, blocknr, maxlen) \
- if (blocknr >= (maxlen)) \
- blocknr -= (maxlen - be32_to_cpu((jsb)->s_first));
+ if (blocknr >= (maxlen)) { \
+ blocknr -= (maxlen - be32_to_cpu((jsb)->s_first)); \
+ wrapped_flag = true; \
+ }
-void do_logdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_logdump(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
int c;
@@ -115,6 +118,7 @@ void do_logdump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
inode_block_to_dump = ANY_BLOCK;
inode_to_dump = -1;
dump_counts = -1;
+ wrapped_flag = false;
reset_getopt();
while ((c = getopt (argc, argv, "ab:ci:f:OsSn:")) != EOF) {
@@ -477,8 +481,7 @@ static void dump_journal(char *cmdname, FILE *out_file,
if (dump_old && (dump_counts != -1) && (cur_counts >= dump_counts))
break;
- if ((blocknr == first_transaction_blocknr) &&
- (cur_counts != 0) && dump_old && (dump_counts != -1)) {
+ if ((blocknr == first_transaction_blocknr) && dump_old && wrapped_flag) {
fprintf(out_file, "Dump all %lld journal records.\n",
(long long) cur_counts);
break;
diff --git a/debugfs/ls.c b/debugfs/ls.c
index 525f084b8..613ad7380 100644
--- a/debugfs/ls.c
+++ b/debugfs/ls.c
@@ -179,7 +179,7 @@ static int list_dir_proc(ext2_ino_t dir EXT2FS_ATTR((unused)),
return 0;
}
-void do_list_dir(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_list_dir(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
struct ext2_inode inode;
diff --git a/debugfs/lsdel.c b/debugfs/lsdel.c
index 52c741973..a09fa8323 100644
--- a/debugfs/lsdel.c
+++ b/debugfs/lsdel.c
@@ -71,7 +71,7 @@ static int lsdel_proc(ext2_filsys fs,
return 0;
}
-void do_lsdel(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_lsdel(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
struct lsdel_struct lsd;
diff --git a/debugfs/ncheck.c b/debugfs/ncheck.c
index 963b3a12b..1410e7c6d 100644
--- a/debugfs/ncheck.c
+++ b/debugfs/ncheck.c
@@ -90,7 +90,7 @@ static int ncheck_proc(struct ext2_dir_entry *dirent,
return 0;
}
-void do_ncheck(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_ncheck(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
struct inode_walk_struct iw;
diff --git a/debugfs/quota.c b/debugfs/quota.c
index 1da1e03c6..7d8e82f66 100644
--- a/debugfs/quota.c
+++ b/debugfs/quota.c
@@ -102,7 +102,7 @@ static int list_quota_callback(struct dquot *dq,
return 0;
}
-void do_list_quota(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_list_quota(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
errcode_t retval;
@@ -132,7 +132,7 @@ void do_list_quota(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
}
-void do_get_quota(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_get_quota(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
int err, type;
diff --git a/debugfs/set_fields.c b/debugfs/set_fields.c
index f916deab8..bfe8a139b 100644
--- a/debugfs/set_fields.c
+++ b/debugfs/set_fields.c
@@ -71,7 +71,9 @@ static errcode_t parse_string(struct field_set_info *info, char *field, char *ar
static errcode_t parse_uuid(struct field_set_info *info, char *field, char *arg);
static errcode_t parse_hashalg(struct field_set_info *info, char *field, char *arg);
static errcode_t parse_encoding(struct field_set_info *info, char *field, char *arg);
-static errcode_t parse_time(struct field_set_info *info, char *field, char *arg);
+static errcode_t parse_sb_time(struct field_set_info *info, char *field, char *arg);
+static errcode_t parse_ino_time(struct field_set_info *info, char *field, char *arg);
+
static errcode_t parse_bmap(struct field_set_info *info, char *field, char *arg);
static errcode_t parse_gd_csum(struct field_set_info *info, char *field, char *arg);
static errcode_t parse_inode_csum(struct field_set_info *info, char *field,
@@ -99,15 +101,16 @@ static struct field_set_info super_fields[] = {
{ "blocks_per_group", &set_sb.s_blocks_per_group, NULL, 4, parse_uint },
{ "clusters_per_group", &set_sb.s_clusters_per_group, NULL, 4, parse_uint },
{ "inodes_per_group", &set_sb.s_inodes_per_group, NULL, 4, parse_uint },
- { "mtime", &set_sb.s_mtime, NULL, 4, parse_time },
- { "wtime", &set_sb.s_wtime, NULL, 4, parse_time },
+ { "mtime", &set_sb.s_mtime, &set_sb.s_mtime_hi, 5, parse_sb_time },
+ { "wtime", &set_sb.s_wtime, &set_sb.s_wtime_hi, 5, parse_sb_time },
{ "mnt_count", &set_sb.s_mnt_count, NULL, 2, parse_uint },
{ "max_mnt_count", &set_sb.s_max_mnt_count, NULL, 2, parse_int },
/* s_magic */
{ "state", &set_sb.s_state, NULL, 2, parse_uint },
{ "errors", &set_sb.s_errors, NULL, 2, parse_uint },
{ "minor_rev_level", &set_sb.s_minor_rev_level, NULL, 2, parse_uint },
- { "lastcheck", &set_sb.s_lastcheck, NULL, 4, parse_time },
+ { "lastcheck", &set_sb.s_lastcheck, &set_sb.s_lastcheck_hi, 5,
+ parse_sb_time },
{ "checkinterval", &set_sb.s_checkinterval, NULL, 4, parse_uint },
{ "creator_os", &set_sb.s_creator_os, NULL, 4, parse_uint },
{ "rev_level", &set_sb.s_rev_level, NULL, 4, parse_uint },
@@ -139,7 +142,8 @@ static struct field_set_info super_fields[] = {
{ "desc_size", &set_sb.s_desc_size, NULL, 2, parse_uint },
{ "default_mount_opts", &set_sb.s_default_mount_opts, NULL, 4, parse_uint },
{ "first_meta_bg", &set_sb.s_first_meta_bg, NULL, 4, parse_uint },
- { "mkfs_time", &set_sb.s_mkfs_time, NULL, 4, parse_time },
+ { "mkfs_time", &set_sb.s_mkfs_time, &set_sb.s_mkfs_time_hi, 5,
+ parse_sb_time },
{ "jnl_blocks", &set_sb.s_jnl_blocks[0], NULL, 4, parse_uint, FLAG_ARRAY,
17 },
{ "min_extra_isize", &set_sb.s_min_extra_isize, NULL, 2, parse_uint },
@@ -167,12 +171,14 @@ static struct field_set_info super_fields[] = {
{ "checksum_type", &set_sb.s_checksum_type, NULL, 1, parse_uint },
{ "encryption_level", &set_sb.s_encryption_level, NULL, 1, parse_uint },
{ "error_count", &set_sb.s_error_count, NULL, 4, parse_uint },
- { "first_error_time", &set_sb.s_first_error_time, NULL, 4, parse_time },
+ { "first_error_time", &set_sb.s_first_error_time,
+ &set_sb.s_first_error_time_hi, 5, parse_sb_time },
{ "first_error_ino", &set_sb.s_first_error_ino, NULL, 4, parse_uint },
{ "first_error_block", &set_sb.s_first_error_block, NULL, 8, parse_uint },
{ "first_error_func", &set_sb.s_first_error_func, NULL, 32, parse_string },
{ "first_error_line", &set_sb.s_first_error_line, NULL, 4, parse_uint },
- { "last_error_time", &set_sb.s_last_error_time, NULL, 4, parse_time },
+ { "last_error_time", &set_sb.s_last_error_time,
+ &set_sb.s_last_error_time_hi, 5, parse_sb_time },
{ "last_error_ino", &set_sb.s_last_error_ino, NULL, 4, parse_uint },
{ "last_error_block", &set_sb.s_last_error_block, NULL, 8, parse_uint },
{ "last_error_func", &set_sb.s_last_error_func, NULL, 32, parse_string },
@@ -193,13 +199,13 @@ static struct field_set_info inode_fields[] = {
2, parse_uint },
{ "size", &set_inode.i_size, &set_inode.i_size_high, 4, parse_uint },
{ "atime", &set_inode.i_atime, &set_inode.i_atime_extra,
- 4, parse_time },
+ 4, parse_ino_time },
{ "ctime", &set_inode.i_ctime, &set_inode.i_ctime_extra,
- 4, parse_time },
+ 4, parse_ino_time },
{ "mtime", &set_inode.i_mtime, &set_inode.i_mtime_extra,
- 4, parse_time },
+ 4, parse_ino_time },
{ "dtime", &set_inode.i_dtime, NULL,
- 4, parse_time },
+ 4, parse_ino_time },
{ "gid", &set_inode.i_gid, &set_inode.osd2.linux2.l_i_gid_high,
2, parse_uint },
{ "links_count", &set_inode.i_links_count, NULL, 2, parse_uint },
@@ -236,7 +242,7 @@ static struct field_set_info inode_fields[] = {
{ "atime_extra", &set_inode.i_atime_extra, NULL,
4, parse_uint, FLAG_ALIAS },
{ "crtime", &set_inode.i_crtime, &set_inode.i_crtime_extra,
- 4, parse_time },
+ 4, parse_ino_time },
{ "crtime_extra", &set_inode.i_crtime_extra, NULL,
4, parse_uint, FLAG_ALIAS },
{ "projid", &set_inode.i_projid, NULL, 4, parse_uint },
@@ -441,6 +447,9 @@ static struct field_set_info *find_field(struct field_set_info *fields,
* Note: info->size == 6 is special; this means a base size 4 bytes,
* and secondary (high) size of 2 bytes. This is needed for the
* special case of i_blocks_high and i_file_acl_high.
+ *
+ * Similarly, info->size == 5 is for superblock timestamps, which have
+ * a 4-byte primary field and a 1-byte _hi field.
*/
static errcode_t parse_uint(struct field_set_info *info, char *field,
char *arg)
@@ -449,7 +458,8 @@ static errcode_t parse_uint(struct field_set_info *info, char *field,
int suffix = check_suffix(field);
char *tmp;
void *field1 = info->ptr, *field2 = info->ptr2;
- int size = (info->size == 6) ? 4 : info->size;
+ unsigned int size = (info->size == 6 || info->size == 5) ? 4 :
+ info->size;
union {
__u64 *ptr64;
__u32 *ptr32;
@@ -477,7 +487,7 @@ static errcode_t parse_uint(struct field_set_info *info, char *field,
}
mask = ~0ULL >> ((8 - size) * 8);
limit = ~0ULL >> ((8 - info->size) * 8);
- if (field2 && info->size != 6)
+ if (field2 && (info->size != 6 && info->size != 5))
limit = ~0ULL >> ((8 - info->size*2) * 8);
if (num > limit) {
@@ -504,13 +514,14 @@ static errcode_t parse_uint(struct field_set_info *info, char *field,
return 0;
n = (size == 8) ? 0 : (num >> (size*8));
u.ptr8 = (__u8 *) field2;
- if (info->size == 6)
- size = 2;
+ if (info->size > size)
+ size = info->size - size;
switch (size) {
case 8:
/* Should never get here */
- fprintf(stderr, "64-bit field %s has a second 64-bit field\n"
- "defined; BUG?!?\n", info->name);
+ fprintf(stderr,
+ "64-bit field %s has a second 64-bit field defined; BUG?!?\n",
+ info->name);
*u.ptr64 = 0;
break;
case 4:
@@ -572,18 +583,19 @@ static errcode_t parse_string(struct field_set_info *info,
return 0;
}
-static errcode_t parse_time(struct field_set_info *info,
- char *field, char *arg)
+static errcode_t parse_sb_time(struct field_set_info *info,
+ char *field, char *arg)
{
__s64 t;
__u32 t_low, t_high;
- __u32 *ptr_low, *ptr_high;
+ __u32 *ptr_low;
+ __u8 *ptr_high;
if (check_suffix(field))
return parse_uint(info, field, arg);
ptr_low = (__u32 *) info->ptr;
- ptr_high = (__u32 *) info->ptr2;
+ ptr_high = (__u8 *) info->ptr2;
t = string_to_time(arg);
@@ -600,6 +612,34 @@ static errcode_t parse_time(struct field_set_info *info,
return 0;
}
+static errcode_t parse_ino_time(struct field_set_info *info,
+ char *field, char *arg)
+{
+ __s64 t;
+ __u32 t_low, t_high;
+ __u32 *ptr_low, *ptr_high;
+
+ if (check_suffix(field))
+ return parse_uint(info, field, arg);
+
+ ptr_low = (__u32 *) info->ptr;
+ ptr_high = (__u32 *) info->ptr2;
+
+ t = string_to_time(arg);
+
+ if (t == -1) {
+ fprintf(stderr, "Couldn't parse '%s' for field %s.\n",
+ arg, info->name);
+ return EINVAL;
+ }
+ t_low = (__u32) t;
+ t_high = __encode_extra_time(t, 0);
+ *ptr_low = t_low;
+ if (ptr_high)
+ *ptr_high = t_high;
+ return 0;
+}
+
static errcode_t parse_uuid(struct field_set_info *info,
char *field EXT2FS_ATTR((unused)), char *arg)
{
@@ -781,7 +821,8 @@ static void print_possible_fields(struct field_set_info *fields)
type = "UUID";
else if (ss->func == parse_hashalg)
type = "hash algorithm";
- else if (ss->func == parse_time)
+ else if ((ss->func == parse_sb_time) ||
+ (ss->func == parse_ino_time))
type = "date/time";
else if (ss->func == parse_bmap)
type = "set physical->logical block map";
@@ -803,7 +844,7 @@ static void print_possible_fields(struct field_set_info *fields)
}
-void do_set_super(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_set_super(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
const char *usage = "<field> <value>\n"
@@ -831,7 +872,7 @@ void do_set_super(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
}
-void do_set_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_set_inode(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
const char *usage = "<inode> <field> <value>\n"
@@ -873,7 +914,7 @@ void do_set_inode(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
}
-void do_set_block_group_descriptor(int argc, char *argv[],
+void do_set_block_group_descriptor(int argc, ss_argv_t argv,
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
@@ -953,7 +994,7 @@ static errcode_t parse_mmp_clear(struct field_set_info *info,
}
#ifdef CONFIG_MMP
-void do_set_mmp_value(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_set_mmp_value(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
const char *usage = "<field> <value>\n"
@@ -1013,7 +1054,7 @@ void do_set_mmp_value(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
#else
void do_set_mmp_value(int argc EXT2FS_ATTR((unused)),
- char *argv[] EXT2FS_ATTR((unused)),
+ ss_argv_t argv EXT2FS_ATTR((unused)),
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
diff --git a/debugfs/unused.c b/debugfs/unused.c
index 08191a0e4..3d97cc473 100644
--- a/debugfs/unused.c
+++ b/debugfs/unused.c
@@ -25,7 +25,7 @@ extern char *optarg;
#include "debugfs.h"
-void do_dump_unused(int argc EXT2FS_ATTR((unused)), char **argv,
+void do_dump_unused(int argc EXT2FS_ATTR((unused)), ss_argv_t argv,
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
diff --git a/debugfs/util.c b/debugfs/util.c
index 9e8805481..00ab6f6a2 100644
--- a/debugfs/util.c
+++ b/debugfs/util.c
@@ -191,14 +191,6 @@ int check_fs_bitmaps(char *name)
return 0;
}
-char *inode_time_to_string(__u32 xtime, __u32 xtime_extra)
-{
- __s64 t = (__s32) xtime;
-
- t += (__s64) (xtime_extra & EXT4_EPOCH_MASK) << 32;
- return time_to_string(t);
-}
-
/*
* This function takes a __s64 time value and converts it to a string,
* using ctime
@@ -355,7 +347,7 @@ int strtoblk(const char *cmd, const char *str, const char *errmsg,
* This is a common helper function used by the command processing
* routines
*/
-int common_args_process(int argc, char *argv[], int min_argc, int max_argc,
+int common_args_process(int argc, ss_argv_t argv, int min_argc, int max_argc,
const char *cmd, const char *usage, int flags)
{
if (argc < min_argc || argc > max_argc) {
@@ -381,7 +373,7 @@ int common_args_process(int argc, char *argv[], int min_argc, int max_argc,
* do_testi, etc. Basically, any command which takes a single
* argument which is a file/inode number specifier.
*/
-int common_inode_args_process(int argc, char *argv[],
+int common_inode_args_process(int argc, ss_argv_t argv,
ext2_ino_t *inode, int flags)
{
if (common_args_process(argc, argv, 2, 2, argv[0], "<file>", flags))
@@ -396,7 +388,7 @@ int common_inode_args_process(int argc, char *argv[],
/*
* This is a helper function used by do_freeb, do_setb, and do_testb
*/
-int common_block_args_process(int argc, char *argv[],
+int common_block_args_process(int argc, ss_argv_t argv,
blk64_t *block, blk64_t *count)
{
int err;
diff --git a/debugfs/xattrs.c b/debugfs/xattrs.c
index cd042bc8b..b518941c9 100644
--- a/debugfs/xattrs.c
+++ b/debugfs/xattrs.c
@@ -117,7 +117,7 @@ out:
err = ext2fs_xattrs_close(&h);
}
-void do_list_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_list_xattr(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t ino;
@@ -138,7 +138,7 @@ void do_list_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
dump_inode_attributes(stdout, ino);
}
-void do_get_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_get_xattr(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t ino;
@@ -236,7 +236,7 @@ out2:
fclose(fp);
}
-void do_set_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_set_xattr(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t ino;
@@ -320,7 +320,7 @@ out2:
}
}
-void do_rm_xattr(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_rm_xattr(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t ino;
diff --git a/debugfs/zap.c b/debugfs/zap.c
index f862482f4..8d1e84283 100644
--- a/debugfs/zap.c
+++ b/debugfs/zap.c
@@ -25,7 +25,7 @@ extern char *optarg;
#include "debugfs.h"
-void do_zap_block(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_zap_block(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
unsigned long pattern = 0;
@@ -171,7 +171,7 @@ errout:
return;
}
-void do_block_dump(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_block_dump(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
unsigned char *buf;
diff --git a/e2fsck/e2fsck.h b/e2fsck/e2fsck.h
index 3f2dc3084..55738fdc1 100644
--- a/e2fsck/e2fsck.h
+++ b/e2fsck/e2fsck.h
@@ -663,7 +663,8 @@ extern void *e2fsck_allocate_memory(e2fsck_t ctx, unsigned long size,
const char *description);
extern int ask(e2fsck_t ctx, const char * string, int def);
extern int ask_yn(e2fsck_t ctx, const char * string, int def);
-extern void fatal_error(e2fsck_t ctx, const char * fmt_string);
+extern void fatal_error(e2fsck_t ctx, const char * fmt_string)
+ E2FSCK_ATTR((noreturn));
extern void log_out(e2fsck_t ctx, const char *fmt, ...)
E2FSCK_ATTR((format(printf, 2, 3)));
extern void log_err(e2fsck_t ctx, const char *fmt, ...)
diff --git a/e2fsck/ea_refcount.c b/e2fsck/ea_refcount.c
index 7154b47c3..7ca56696e 100644
--- a/e2fsck/ea_refcount.c
+++ b/e2fsck/ea_refcount.c
@@ -120,7 +120,7 @@ static struct ea_refcount_el *insert_refcount_el(ext2_refcount_t refcount,
if (refcount->count >= refcount->size) {
new_size = refcount->size + 100;
#ifdef DEBUG
- printf("Reallocating refcount %d entries...\n", new_size);
+ printf("Reallocating refcount %zu entries...\n", new_size);
#endif
retval = ext2fs_resize_mem((size_t) refcount->size *
sizeof(struct ea_refcount_el),
@@ -177,7 +177,7 @@ retry:
if (ea_key == refcount->list[refcount->cursor].ea_key)
return &refcount->list[refcount->cursor++];
#ifdef DEBUG
- printf("Non-cursor get_refcount_el: %u\n", ea_key);
+ printf("Non-cursor get_refcount_el: %llu\n", (unsigned long long) ea_key);
#endif
while (low <= high) {
mid = (low+high)/2;
diff --git a/e2fsck/extents.c b/e2fsck/extents.c
index 70798f346..652e938dc 100644
--- a/e2fsck/extents.c
+++ b/e2fsck/extents.c
@@ -201,7 +201,10 @@ static errcode_t rewrite_extent_replay(e2fsck_t ctx, struct extent_list *list,
{
errcode_t retval;
ext2_extent_handle_t handle;
- unsigned int i, ext_written;
+ unsigned int i;
+#if defined(DEBUG) || defined(DEBUG_SUMMARY)
+ unsigned int ext_written = 0;
+#endif
struct ext2fs_extent *ex, extent;
blk64_t start_val, delta;
@@ -223,8 +226,6 @@ static errcode_t rewrite_extent_replay(e2fsck_t ctx, struct extent_list *list,
if (retval)
return retval;
- ext_written = 0;
-
start_val = ext2fs_get_stat_i_blocks(ctx->fs, EXT2_INODE(inode));
for (i = 0, ex = list->extents; i < list->count; i++, ex++) {
@@ -263,7 +264,9 @@ static errcode_t rewrite_extent_replay(e2fsck_t ctx, struct extent_list *list,
retval = ext2fs_extent_fix_parents(handle);
if (retval)
goto err;
+#if defined(DEBUG) || defined(DEBUG_SUMMARY)
ext_written++;
+#endif
}
delta = ext2fs_get_stat_i_blocks(ctx->fs, EXT2_INODE(inode)) -
diff --git a/e2fsck/iscan.c b/e2fsck/iscan.c
index 33c6a4cdc..1253f52ff 100644
--- a/e2fsck/iscan.c
+++ b/e2fsck/iscan.c
@@ -120,7 +120,8 @@ void print_resource_track(const char *desc,
} else
#elif defined HAVE_MALLINFO
/* don't use mallinfo() if over 2GB used, since it returns "int" */
- if ((char *)sbrk(0) - (char *)track->brk_start < 2LL << 30) {
+ if ((unsigned long)((char *)sbrk(0) - (char *)track->brk_start) <
+ 2UL << 30) {
struct mallinfo malloc_info = mallinfo();
printf("Memory used: %lluk/%lluk (%lluk/%lluk), ",
diff --git a/e2fsck/journal.c b/e2fsck/journal.c
index c7868d894..0144aa45a 100644
--- a/e2fsck/journal.c
+++ b/e2fsck/journal.c
@@ -1683,6 +1683,7 @@ errcode_t e2fsck_run_ext3_journal(e2fsck_t ctx)
errcode_t retval, recover_retval;
io_stats stats = 0;
unsigned long long kbytes_written = 0;
+ __u16 s_error_state;
printf(_("%s: recovering journal\n"), ctx->device_name);
if (ctx->options & E2F_OPT_READONLY) {
@@ -1705,6 +1706,7 @@ errcode_t e2fsck_run_ext3_journal(e2fsck_t ctx)
ctx->fs->io->manager->get_stats(ctx->fs->io, &stats);
if (stats && stats->bytes_written)
kbytes_written = stats->bytes_written >> 10;
+ s_error_state = ctx->fs->super->s_state & EXT2_ERROR_FS;
ext2fs_mmp_stop(ctx->fs);
ext2fs_free(ctx->fs);
@@ -1721,6 +1723,7 @@ errcode_t e2fsck_run_ext3_journal(e2fsck_t ctx)
ctx->fs->now = ctx->now;
ctx->fs->flags |= EXT2_FLAG_MASTER_SB_ONLY;
ctx->fs->super->s_kbytes_written += kbytes_written;
+ ctx->fs->super->s_state |= s_error_state;
/* Set the superblock flags */
e2fsck_clear_recover(ctx, recover_retval != 0);
diff --git a/e2fsck/message.c b/e2fsck/message.c
index ba38038cf..9c42b13fb 100644
--- a/e2fsck/message.c
+++ b/e2fsck/message.c
@@ -301,7 +301,7 @@ static _INLINE_ void expand_inode_expression(FILE *f, ext2_filsys fs, char ch,
fprintf(f, "0%o", inode->i_mode);
break;
case 'M':
- print_time(f, inode->i_mtime);
+ print_time(f, ext2fs_inode_xtime_get(inode, i_mtime));
break;
case 'F':
fprintf(f, "%u", inode->i_faddr);
diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c
index a341c72ac..078bcb9bf 100644
--- a/e2fsck/pass1.c
+++ b/e2fsck/pass1.c
@@ -1181,6 +1181,7 @@ void e2fsck_pass1(e2fsck_t ctx)
ext2_ino_t ino_threshold = 0;
dgrp_t ra_group = 0;
struct ea_quota ea_ibody_quota;
+ time_t tm;
init_resource_track(&rtrack, ctx->fs->io);
clear_problem_context(&pctx);
@@ -1357,12 +1358,13 @@ void e2fsck_pass1(e2fsck_t ctx)
if (ctx->progress && ((ctx->progress)(ctx, 1, 0,
ctx->fs->group_desc_count)))
goto endit;
- if ((fs->super->s_wtime &&
- fs->super->s_wtime < fs->super->s_inodes_count) ||
- (fs->super->s_mtime &&
- fs->super->s_mtime < fs->super->s_inodes_count) ||
- (fs->super->s_mkfs_time &&
- fs->super->s_mkfs_time < fs->super->s_inodes_count))
+
+ if (((tm = ext2fs_get_tstamp(fs->super, s_wtime)) &&
+ tm < fs->super->s_inodes_count) ||
+ ((tm = ext2fs_get_tstamp(fs->super, s_mtime)) &&
+ tm < fs->super->s_inodes_count) ||
+ ((tm = ext2fs_get_tstamp(fs->super, s_mkfs_time)) &&
+ tm < fs->super->s_inodes_count))
low_dtime_check = 0;
if (ext2fs_has_feature_mmp(fs->super) &&
@@ -2076,7 +2078,7 @@ void e2fsck_pass1(e2fsck_t ctx)
if (!pctx.errcode) {
e2fsck_read_inode(ctx, EXT2_RESIZE_INO, inode,
"recreate inode");
- inode->i_mtime = ctx->now;
+ ext2fs_inode_xtime_set(inode, i_mtime, ctx->now);
e2fsck_write_inode(ctx, EXT2_RESIZE_INO, inode,
"recreate inode");
}
diff --git a/e2fsck/pass2.c b/e2fsck/pass2.c
index 410edd116..08ab40fa8 100644
--- a/e2fsck/pass2.c
+++ b/e2fsck/pass2.c
@@ -1341,57 +1341,68 @@ skip_checksum:
(rec_len < min_dir_len) ||
((rec_len % 4) != 0) ||
((ext2fs_dir_rec_len(ext2fs_dirent_name_len(dirent),
- extended)) > rec_len)) {
- if (fix_problem(ctx, PR_2_DIR_CORRUPTED,
- &cd->pctx)) {
+ extended)) > rec_len))
+ problem = PR_2_DIR_CORRUPTED;
+ if (problem) {
+ if ((offset == 0) &&
+ (rec_len == fs->blocksize) &&
+ (dirent->inode == 0) &&
+ e2fsck_dir_will_be_rehashed(ctx, ino)) {
+ problem = 0;
+ max_block_size = fs->blocksize;
+ }
+ }
+ if (problem) {
#ifdef WORDS_BIGENDIAN
- /*
- * On big-endian systems, if the dirent
- * swap routine finds a rec_len that it
- * doesn't like, it continues
- * processing the block as if rec_len
- * == EXT2_DIR_ENTRY_HEADER_LEN. This means that the name
- * field gets byte swapped, which means
- * that salvage will not detect the
- * correct name length (unless the name
- * has a length that's an exact
- * multiple of four bytes), and it'll
- * discard the entry (unnecessarily)
- * and the rest of the dirent block.
- * Therefore, swap the rest of the
- * block back to disk order, run
- * salvage, and re-swap anything after
- * the salvaged dirent.
- */
- int need_reswab = 0;
- if (rec_len < EXT2_DIR_ENTRY_HEADER_LEN || rec_len % 4) {
- need_reswab = 1;
- ext2fs_dirent_swab_in2(fs,
- ((char *)dirent) + EXT2_DIR_ENTRY_HEADER_LEN,
- max_block_size - offset - EXT2_DIR_ENTRY_HEADER_LEN,
- 0);
- }
+ int need_reswab = 0;
#endif
- salvage_directory(fs, dirent, prev,
- &offset,
- max_block_size,
- hash_in_dirent);
+
+ if (!fix_problem(ctx, PR_2_DIR_CORRUPTED,
+ &cd->pctx))
+ goto abort_free_dict;
#ifdef WORDS_BIGENDIAN
- if (need_reswab) {
- unsigned int len;
-
- (void) ext2fs_get_rec_len(fs,
- dirent, &len);
- len += offset;
- if (max_block_size > len)
- ext2fs_dirent_swab_in2(fs,
- ((char *)dirent) + len, max_block_size - len, 0);
- }
+ /*
+ * On big-endian systems, if the dirent
+ * swap routine finds a rec_len that it
+ * doesn't like, it continues processing
+ * the block as if rec_len ==
+ * EXT2_DIR_ENTRY_HEADER_LEN. This means
+ * that the name field gets byte swapped,
+ * which means that salvage will not detect
+ * the correct name length (unless the name
+ * has a length that's an exact multiple of
+ * four bytes), and it'll discard the entry
+ * (unnecessarily) and the rest of the
+ * dirent block. Therefore, swap the rest
+ * of the block back to disk order, run
+ * salvage, and re-swap anything after the
+ * salvaged dirent.
+ */
+ if (rec_len < EXT2_DIR_ENTRY_HEADER_LEN ||
+ rec_len % 4) {
+ need_reswab = 1;
+ ext2fs_dirent_swab_in2(fs,
+ ((char *)dirent) + EXT2_DIR_ENTRY_HEADER_LEN,
+ max_block_size - offset - EXT2_DIR_ENTRY_HEADER_LEN, 0);
+ }
#endif
- dir_modified++;
- continue;
- } else
- goto abort_free_dict;
+ salvage_directory(fs, dirent, prev, &offset,
+ max_block_size,
+ hash_in_dirent);
+#ifdef WORDS_BIGENDIAN
+ if (need_reswab) {
+ unsigned int len;
+
+ (void) ext2fs_get_rec_len(fs, dirent,
+ &len);
+ len += offset;
+ if (max_block_size > len)
+ ext2fs_dirent_swab_in2(fs,
+ ((char *)dirent) + len, max_block_size - len, 0);
+ }
+#endif
+ dir_modified++;
+ continue;
}
} else {
if (dot_state == 0) {
@@ -1513,7 +1524,7 @@ skip_checksum:
dirent->inode)) {
if (e2fsck_process_bad_inode(ctx, ino,
dirent->inode,
- buf + fs->blocksize)) {
+ cd->buf + fs->blocksize)) {
dirent->inode = 0;
dir_modified++;
goto next;
@@ -1574,7 +1585,8 @@ skip_checksum:
*/
if (!(ctx->flags & E2F_FLAG_RESTART_LATER) &&
!(ext2fs_test_inode_bitmap2(ctx->inode_used_map,
- dirent->inode)))
+ dirent->inode))
+ )
problem = PR_2_UNUSED_INODE;
if (problem) {
@@ -1842,17 +1854,26 @@ static int deallocate_inode_block(ext2_filsys fs,
}
/*
- * This function deallocates an inode
+ * This function reverts various counters and bitmaps incremented in
+ * pass1 for the inode, blocks, and quotas before it was decided the
+ * inode was corrupt and needed to be cleared. This avoids the need
+ * to run e2fsck a second time (or have it restart itself) to repair
+ * these counters.
+ *
+ * It does not modify any on-disk state, so even if the inode is bad
+ * it _should_ reset in-memory state to before the inode was first
+ * processed.
*/
static void deallocate_inode(e2fsck_t ctx, ext2_ino_t ino, char* block_buf)
{
ext2_filsys fs = ctx->fs;
- struct ext2_inode inode;
+ struct ext2_inode_large inode;
struct problem_context pctx;
__u32 count;
struct del_block del_block;
- e2fsck_read_inode(ctx, ino, &inode, "deallocate_inode");
+ e2fsck_read_inode_full(ctx, ino, EXT2_INODE(&inode),
+ sizeof(inode), "deallocate_inode");
clear_problem_context(&pctx);
pctx.ino = ino;
@@ -1862,29 +1883,29 @@ static void deallocate_inode(e2fsck_t ctx, ext2_ino_t ino, char* block_buf)
e2fsck_read_bitmaps(ctx);
ext2fs_inode_alloc_stats2(fs, ino, -1, LINUX_S_ISDIR(inode.i_mode));
- if (ext2fs_file_acl_block(fs, &inode) &&
+ if (ext2fs_file_acl_block(fs, EXT2_INODE(&inode)) &&
ext2fs_has_feature_xattr(fs->super)) {
pctx.errcode = ext2fs_adjust_ea_refcount3(fs,
- ext2fs_file_acl_block(fs, &inode),
+ ext2fs_file_acl_block(fs, EXT2_INODE(&inode)),
block_buf, -1, &count, ino);
if (pctx.errcode == EXT2_ET_BAD_EA_BLOCK_NUM) {
pctx.errcode = 0;
count = 1;
}
if (pctx.errcode) {
- pctx.blk = ext2fs_file_acl_block(fs, &inode);
+ pctx.blk = ext2fs_file_acl_block(fs, EXT2_INODE(&inode));
fix_problem(ctx, PR_2_ADJ_EA_REFCOUNT, &pctx);
ctx->flags |= E2F_FLAG_ABORT;
return;
}
if (count == 0) {
ext2fs_block_alloc_stats2(fs,
- ext2fs_file_acl_block(fs, &inode), -1);
+ ext2fs_file_acl_block(fs, EXT2_INODE(&inode)), -1);
}
- ext2fs_file_acl_block_set(fs, &inode, 0);
+ ext2fs_file_acl_block_set(fs, EXT2_INODE(&inode), 0);
}
- if (!ext2fs_inode_has_valid_blocks2(fs, &inode))
+ if (!ext2fs_inode_has_valid_blocks2(fs, EXT2_INODE(&inode)))
goto clear_inode;
/* Inline data inodes don't have blocks to iterate */
@@ -1909,10 +1930,22 @@ static void deallocate_inode(e2fsck_t ctx, ext2_ino_t ino, char* block_buf)
ctx->flags |= E2F_FLAG_ABORT;
return;
}
+
+ if ((ino != quota_type2inum(PRJQUOTA, fs->super)) &&
+ (ino != fs->super->s_orphan_file_inum) &&
+ (ino == EXT2_ROOT_INO || ino >= EXT2_FIRST_INODE(ctx->fs->super)) &&
+ !(inode.i_flags & EXT4_EA_INODE_FL)) {
+ if (del_block.num > 0)
+ quota_data_sub(ctx->qctx, &inode, ino,
+ del_block.num * EXT2_CLUSTER_SIZE(fs->super));
+ quota_data_inodes(ctx->qctx, (struct ext2_inode_large *)&inode,
+ ino, -1);
+ }
+
clear_inode:
/* Inode may have changed by block_iterate, so reread it */
- e2fsck_read_inode(ctx, ino, &inode, "deallocate_inode");
- e2fsck_clear_inode(ctx, ino, &inode, 0, "deallocate_inode");
+ e2fsck_read_inode(ctx, ino, EXT2_INODE(&inode), "deallocate_inode");
+ e2fsck_clear_inode(ctx, ino, EXT2_INODE(&inode), 0, "deallocate_inode");
}
/*
diff --git a/e2fsck/pass3.c b/e2fsck/pass3.c
index 16d243f6c..ba794165b 100644
--- a/e2fsck/pass3.c
+++ b/e2fsck/pass3.c
@@ -212,7 +212,9 @@ skip_new_block:
memset(&inode, 0, sizeof(inode));
inode.i_mode = 040755;
inode.i_size = fs->blocksize;
- inode.i_atime = inode.i_ctime = inode.i_mtime = ctx->now;
+ ext2fs_inode_xtime_set(&inode, i_atime, ctx->now);
+ ext2fs_inode_xtime_set(&inode, i_ctime, ctx->now);
+ ext2fs_inode_xtime_set(&inode, i_mtime, ctx->now);
inode.i_links_count = 2;
ext2fs_iblk_set(fs, iptr, 1);
inode.i_block[0] = blk;
@@ -528,7 +530,9 @@ skip_new_block:
memset(&inode, 0, sizeof(inode));
inode.i_mode = 040700;
inode.i_size = fs->blocksize;
- inode.i_atime = inode.i_ctime = inode.i_mtime = ctx->now;
+ ext2fs_inode_xtime_set(&inode, i_atime, ctx->now);
+ ext2fs_inode_xtime_set(&inode, i_ctime, ctx->now);
+ ext2fs_inode_xtime_set(&inode, i_mtime, ctx->now);
inode.i_links_count = 2;
ext2fs_iblk_set(fs, EXT2_INODE(&inode), 1);
inode.i_block[0] = blk;
diff --git a/e2fsck/problem.c b/e2fsck/problem.c
index 6ad6fb849..207ebbb34 100644
--- a/e2fsck/problem.c
+++ b/e2fsck/problem.c
@@ -2327,7 +2327,7 @@ static struct e2fsck_problem problem_table[] = {
/* orphan_present set but orphan file is empty */
{ PR_6_ORPHAN_PRESENT_CLEAN_FILE,
N_("Feature orphan_present is set but orphan file is clean.\n"),
- PROMPT_CLEAR, PR_PREEN_OK },
+ PROMPT_CLEAR, PR_PREEN_OK | PR_NO_OK | PR_PREEN_NOMSG },
/* orphan_present set but orphan_file is not */
{ PR_6_ORPHAN_PRESENT_NO_FILE,
@@ -2689,7 +2689,7 @@ void print_e2fsck_message(FILE *f, e2fsck_t ctx, const char *msg,
void fatal_error(e2fsck_t ctx, const char *msg)
{
- return;
+ exit(0);
}
void preenhalt(e2fsck_t ctx)
diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c
index c1da7d527..4847d172e 100644
--- a/e2fsck/rehash.c
+++ b/e2fsck/rehash.c
@@ -987,14 +987,18 @@ errcode_t e2fsck_rehash_dir(e2fsck_t ctx, ext2_ino_t ino,
{
ext2_filsys fs = ctx->fs;
errcode_t retval;
- struct ext2_inode inode;
+ struct ext2_inode_large inode;
char *dir_buf = 0;
struct fill_dir_struct fd = { NULL, NULL, 0, 0, 0, NULL,
0, 0, 0, 0, 0, 0 };
struct out_dir outdir = { 0, 0, 0, 0 };
- struct name_cmp_ctx name_cmp_ctx = {0, NULL};
+ struct name_cmp_ctx name_cmp_ctx = {0, NULL};
+ __u64 osize;
- e2fsck_read_inode(ctx, ino, &inode, "rehash_dir");
+ e2fsck_read_inode_full(ctx, ino, EXT2_INODE(&inode),
+ sizeof(inode), "rehash_dir");
+
+ osize = EXT2_I_SIZE(&inode);
if (ext2fs_has_feature_inline_data(fs->super) &&
(inode.i_flags & EXT4_INLINE_DATA_FL))
@@ -1013,7 +1017,7 @@ errcode_t e2fsck_rehash_dir(e2fsck_t ctx, ext2_ino_t ino,
fd.ino = ino;
fd.ctx = ctx;
fd.buf = dir_buf;
- fd.inode = &inode;
+ fd.inode = EXT2_INODE(&inode);
fd.dir = ino;
if (!ext2fs_has_feature_dir_index(fs->super) ||
(inode.i_size / fs->blocksize) < 2)
@@ -1092,14 +1096,25 @@ resort:
goto errout;
}
- retval = write_directory(ctx, fs, &outdir, ino, &inode, fd.compress);
+ retval = write_directory(ctx, fs, &outdir, ino, EXT2_INODE(&inode),
+ fd.compress);
if (retval)
goto errout;
+ if ((osize > EXT2_I_SIZE(&inode)) &&
+ (ino != quota_type2inum(PRJQUOTA, fs->super)) &&
+ (ino != fs->super->s_orphan_file_inum) &&
+ (ino == EXT2_ROOT_INO || ino >= EXT2_FIRST_INODE(ctx->fs->super)) &&
+ !(inode.i_flags & EXT4_EA_INODE_FL)) {
+ quota_data_sub(ctx->qctx, &inode,
+ ino, osize - EXT2_I_SIZE(&inode));
+ }
+
if (ctx->options & E2F_OPT_CONVERT_BMAP)
retval = e2fsck_rebuild_extents_later(ctx, ino);
else
- retval = e2fsck_check_rebuild_extents(ctx, ino, &inode, pctx);
+ retval = e2fsck_check_rebuild_extents(ctx, ino,
+ EXT2_INODE(&inode), pctx);
errout:
ext2fs_free_mem(&dir_buf);
ext2fs_free_mem(&fd.harray);
diff --git a/e2fsck/sigcatcher.c b/e2fsck/sigcatcher.c
index a9d3b7f2c..e20273486 100644
--- a/e2fsck/sigcatcher.c
+++ b/e2fsck/sigcatcher.c
@@ -413,7 +413,7 @@ int main(int argc, char** argv)
struct sigaction sa;
char *p = 0;
int i, c;
- volatile x=0;
+ volatile int x = 0;
memset(&sa, 0, sizeof(struct sigaction));
sa.sa_sigaction = die_signal_handler;
diff --git a/e2fsck/super.c b/e2fsck/super.c
index 9495e029e..051dc963a 100644
--- a/e2fsck/super.c
+++ b/e2fsck/super.c
@@ -1320,25 +1320,25 @@ void check_super_block(e2fsck_t ctx)
*/
if (((ctx->options & E2F_OPT_FORCE) || fs->super->s_checkinterval) &&
!broken_system_clock && !(ctx->flags & E2F_FLAG_TIME_INSANE) &&
- (fs->super->s_mtime > (__u32) ctx->now)) {
- pctx.num = fs->super->s_mtime;
+ (ext2fs_get_tstamp(fs->super, s_mtime) > ctx->now)) {
+ pctx.num = ext2fs_get_tstamp(fs->super, s_mtime);
problem = PR_0_FUTURE_SB_LAST_MOUNT;
- if (fs->super->s_mtime <= (__u32) ctx->now + ctx->time_fudge)
+ if ((time_t) pctx.num <= ctx->now + ctx->time_fudge)
problem = PR_0_FUTURE_SB_LAST_MOUNT_FUDGED;
if (fix_problem(ctx, problem, &pctx)) {
- fs->super->s_mtime = ctx->now;
+ ext2fs_set_tstamp(fs->super, s_mtime, ctx->now);
fs->flags |= EXT2_FLAG_DIRTY;
}
}
if (((ctx->options & E2F_OPT_FORCE) || fs->super->s_checkinterval) &&
!broken_system_clock && !(ctx->flags & E2F_FLAG_TIME_INSANE) &&
- (fs->super->s_wtime > (__u32) ctx->now)) {
- pctx.num = fs->super->s_wtime;
+ (ext2fs_get_tstamp(fs->super, s_wtime) > ctx->now)) {
+ pctx.num = ext2fs_get_tstamp(fs->super, s_wtime);
problem = PR_0_FUTURE_SB_LAST_WRITE;
- if (fs->super->s_wtime <= (__u32) ctx->now + ctx->time_fudge)
+ if ((time_t) pctx.num <= ctx->now + ctx->time_fudge)
problem = PR_0_FUTURE_SB_LAST_WRITE_FUDGED;
if (fix_problem(ctx, problem, &pctx)) {
- fs->super->s_wtime = ctx->now;
+ ext2fs_set_tstamp(fs->super, s_wtime, ctx->now);
fs->flags |= EXT2_FLAG_DIRTY;
}
}
@@ -1388,7 +1388,8 @@ void check_super_block(e2fsck_t ctx)
* away.
*/
#define FEATURE_RO_COMPAT_IGNORE (EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \
- EXT4_FEATURE_RO_COMPAT_DIR_NLINK)
+ EXT4_FEATURE_RO_COMPAT_DIR_NLINK| \
+ EXT4_FEATURE_RO_COMPAT_ORPHAN_PRESENT)
#define FEATURE_INCOMPAT_IGNORE (EXT3_FEATURE_INCOMPAT_EXTENTS| \
EXT3_FEATURE_INCOMPAT_RECOVER)
diff --git a/e2fsck/unix.c b/e2fsck/unix.c
index e5b672a2e..de20b216d 100644
--- a/e2fsck/unix.c
+++ b/e2fsck/unix.c
@@ -342,6 +342,7 @@ static int is_on_batt(void)
static void check_if_skip(e2fsck_t ctx)
{
ext2_filsys fs = ctx->fs;
+ struct ext2_super_block *sb = fs->super;
struct problem_context pctx;
const char *reason = NULL;
unsigned int reason_arg = 0;
@@ -370,7 +371,7 @@ static void check_if_skip(e2fsck_t ctx)
if (ctx->options & E2F_OPT_JOURNAL_ONLY)
goto skip;
- lastcheck = fs->super->s_lastcheck;
+ lastcheck = ext2fs_get_tstamp(sb, s_lastcheck);
if (lastcheck > ctx->now)
lastcheck -= ctx->time_fudge;
if ((fs->super->s_state & EXT2_ERROR_FS) ||
@@ -397,8 +398,9 @@ static void check_if_skip(e2fsck_t ctx)
((ctx->now - lastcheck) >=
((time_t) fs->super->s_checkinterval))) {
reason = _(" has gone %u days without being checked");
- reason_arg = (ctx->now - fs->super->s_lastcheck)/(3600*24);
- if (batt && ((ctx->now - fs->super->s_lastcheck) <
+ reason_arg = (ctx->now - ext2fs_get_tstamp(sb, s_lastcheck)) /
+ (3600*24);
+ if (batt && ((ctx->now - ext2fs_get_tstamp(sb, s_lastcheck)) <
fs->super->s_checkinterval*2))
reason = 0;
} else if (broken_system_clock && fs->super->s_checkinterval) {
@@ -457,7 +459,8 @@ static void check_if_skip(e2fsck_t ctx)
next_check = 1;
}
if (!broken_system_clock && fs->super->s_checkinterval &&
- ((ctx->now - fs->super->s_lastcheck) >= fs->super->s_checkinterval))
+ ((ctx->now - ext2fs_get_tstamp(sb, s_lastcheck)) >=
+ fs->super->s_checkinterval))
next_check = 1;
if (next_check <= 5) {
if (next_check == 1) {
@@ -2080,7 +2083,7 @@ cleanup:
} else
sb->s_state &= ~EXT2_VALID_FS;
if (!(ctx->flags & E2F_FLAG_TIME_INSANE))
- sb->s_lastcheck = ctx->now;
+ ext2fs_set_tstamp(sb, s_lastcheck, ctx->now);
sb->s_mnt_count = 0;
memset(((char *) sb) + EXT4_S_ERR_START, 0, EXT4_S_ERR_LEN);
pctx.errcode = ext2fs_set_gdt_csum(ctx->fs);
diff --git a/e2fsck/util.c b/e2fsck/util.c
index 42740d9ef..27b3a0d61 100644
--- a/e2fsck/util.c
+++ b/e2fsck/util.c
@@ -441,7 +441,8 @@ void print_resource_track(e2fsck_t ctx, const char *desc,
} else
#elif defined HAVE_MALLINFO
/* don't use mallinfo() if over 2GB used, since it returns "int" */
- if ((char *)sbrk(0) - (char *)track->brk_start < 2LL << 30) {
+ if ((unsigned long)((char *)sbrk(0) - (char *)track->brk_start) <
+ 2UL << 30) {
struct mallinfo malloc_info = mallinfo();
log_out(ctx, _("Memory used: %lluk/%lluk (%lluk/%lluk), "),
@@ -559,29 +560,20 @@ blk64_t get_backup_sb(e2fsck_t ctx, ext2_filsys fs, const char *name,
struct ext2_super_block *sb;
io_channel io = NULL;
void *buf = NULL;
- int blocksize;
- blk64_t superblock, ret_sb = 8193;
+ unsigned int blocksize = EXT2_MIN_BLOCK_SIZE;
+ int blocksize_known = 0;
+ blk_t bpg = 0;
+ blk64_t ret_sb = 8193;
if (fs && fs->super) {
- ret_sb = (fs->super->s_blocks_per_group +
- fs->super->s_first_data_block);
- if (ctx) {
- ctx->superblock = ret_sb;
- ctx->blocksize = fs->blocksize;
- }
- return ret_sb;
+ blocksize = fs->blocksize;
+ blocksize_known = 1;
+ bpg = fs->super->s_blocks_per_group;
}
- if (ctx) {
- if (ctx->blocksize) {
- ret_sb = ctx->blocksize * 8;
- if (ctx->blocksize == 1024)
- ret_sb++;
- ctx->superblock = ret_sb;
- return ret_sb;
- }
- ctx->superblock = ret_sb;
- ctx->blocksize = 1024;
+ if (ctx && ctx->blocksize) {
+ blocksize = ctx->blocksize;
+ blocksize_known = 1;
}
if (!name || !manager)
@@ -594,28 +586,54 @@ blk64_t get_backup_sb(e2fsck_t ctx, ext2_filsys fs, const char *name,
goto cleanup;
sb = (struct ext2_super_block *) buf;
- for (blocksize = EXT2_MIN_BLOCK_SIZE;
- blocksize <= EXT2_MAX_BLOCK_SIZE ; blocksize *= 2) {
- superblock = blocksize*8;
- if (blocksize == 1024)
- superblock++;
+ for (; blocksize <= EXT2_MAX_BLOCK_SIZE; blocksize *= 2) {
+ dgrp_t grp, three = 1, five = 5, seven = 7;
+ dgrp_t limit;
+ blk_t this_bpg = bpg ? bpg : blocksize * 8;
+ blk64_t num_blocks;
+
+ if (fs && fs->super) {
+ limit = ext2fs_blocks_count(fs->super) / this_bpg;
+ } else if (ctx && ext2fs_get_device_size2(ctx->filesystem_name,
+ blocksize,
+ &num_blocks) == 0) {
+ limit = num_blocks / this_bpg;
+ } else {
+ /* If we can't figure out the device size,
+ * arbitrarily set a limit which is enough for
+ * 8 block groups or so...
+ */
+ limit = 128;
+ }
+
io_channel_set_blksize(io, blocksize);
- if (io_channel_read_blk64(io, superblock,
- -SUPERBLOCK_SIZE, buf))
- continue;
+
+ while ((grp = ext2fs_list_backups(NULL, &three,
+ &five, &seven)) <= limit) {
+ blk64_t superblock = (blk64_t)grp * this_bpg;
+
+ if (blocksize == 1024)
+ superblock++;
+ if (io_channel_read_blk64(io, superblock,
+ -SUPERBLOCK_SIZE, buf))
+ continue;
#ifdef WORDS_BIGENDIAN
- if (sb->s_magic == ext2fs_swab16(EXT2_SUPER_MAGIC))
- ext2fs_swap_super(sb);
+ if (sb->s_magic == ext2fs_swab16(EXT2_SUPER_MAGIC))
+ ext2fs_swap_super(sb);
#endif
- if ((sb->s_magic == EXT2_SUPER_MAGIC) &&
- (EXT2_BLOCK_SIZE(sb) == blocksize)) {
- ret_sb = superblock;
- if (ctx) {
- ctx->superblock = superblock;
- ctx->blocksize = blocksize;
+ if ((sb->s_magic == EXT2_SUPER_MAGIC) &&
+ ((unsigned) EXT2_BLOCK_SIZE(sb) == blocksize)) {
+ ret_sb = superblock;
+ if (ctx) {
+ ctx->superblock = superblock;
+ ctx->blocksize = blocksize;
+ }
+ goto cleanup;
}
- break;
}
+
+ if (blocksize_known)
+ break;
}
cleanup:
diff --git a/lib/blkid/blkidP.h b/lib/blkid/blkidP.h
index b3fe4a668..dad8bfbbf 100644
--- a/lib/blkid/blkidP.h
+++ b/lib/blkid/blkidP.h
@@ -23,9 +23,12 @@
#endif
#include <blkid/blkid.h>
-
#include <blkid/list.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#ifdef __GNUC__
#define __BLKID_ATTR(x) __attribute__(x)
#else
@@ -149,8 +152,10 @@ extern char *blkid_strndup(const char *s, const int length);
#include <stdio.h>
extern int blkid_debug_mask;
#define DBG(m,x) if ((m) & blkid_debug_mask) x;
+#define INC_LINENO lineno++
#else
#define DBG(m,x)
+#define INC_LINENO
#endif
#ifdef CONFIG_BLKID_DEBUG
diff --git a/lib/blkid/read.c b/lib/blkid/read.c
index b8948564c..ad4f44f0a 100644
--- a/lib/blkid/read.c
+++ b/lib/blkid/read.c
@@ -382,7 +382,10 @@ void blkid_read_cache(blkid_cache cache)
{
FILE *file;
char buf[4096];
- int fd, lineno = 0;
+ int fd;
+#ifdef CONFIG_BLKID_DEBUG
+ int lineno = 0;
+#endif
struct stat st;
if (!cache)
@@ -414,7 +417,7 @@ void blkid_read_cache(blkid_cache cache)
blkid_dev dev;
unsigned int end;
- lineno++;
+ INC_LINENO;
if (buf[0] == 0)
continue;
end = strlen(buf) - 1;
@@ -422,7 +425,7 @@ void blkid_read_cache(blkid_cache cache)
while (buf[end] == '\\' && end < sizeof(buf) - 2 &&
fgets(buf + end, sizeof(buf) - end, file)) {
end = strlen(buf) - 1;
- lineno++;
+ INC_LINENO;
}
if (blkid_parse_line(cache, &dev, buf) < 0) {
diff --git a/lib/config.h.in b/lib/config.h.in
index ab38266f6..9a4058ec5 100644
--- a/lib/config.h.in
+++ b/lib/config.h.in
@@ -37,9 +37,15 @@
language is requested. */
#undef ENABLE_NLS
+/* Define to the version of FUSE to use */
+#undef FUSE_USE_VERSION
+
/* Define to 1 if you have the `add_key' function. */
#undef HAVE_ADD_KEY
+/* Define to 1 if you have the <archive.h> header file. */
+#undef HAVE_ARCHIVE_H
+
/* Define to 1 if you have the <attr/xattr.h> header file. */
#undef HAVE_ATTR_XATTR_H
@@ -109,6 +115,9 @@
/* Define to 1 if you have the `fdatasync' function. */
#undef HAVE_FDATASYNC
+/* Define to 1 if fsmap_sizeof() is declared in linux/fsmap.h */
+#undef HAVE_FSMAP_SIZEOF
+
/* Define to 1 if you have the `fstat64' function. */
#undef HAVE_FSTAT64
diff --git a/lib/e2p/ls.c b/lib/e2p/ls.c
index 0b74aea2b..7024dea19 100644
--- a/lib/e2p/ls.c
+++ b/lib/e2p/ls.c
@@ -313,27 +313,23 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
if (sb->s_log_groups_per_flex)
fprintf(f, "Flex block group size: %u\n",
1U << sb->s_log_groups_per_flex);
- if (sb->s_mkfs_time) {
- tm = sb->s_mkfs_time;
+ tm = ext2fs_get_tstamp(sb, s_mkfs_time);
+ if (tm)
fprintf(f, "Filesystem created: %s", ctime(&tm));
- }
- tm = sb->s_mtime;
- fprintf(f, "Last mount time: %s",
- sb->s_mtime ? ctime(&tm) : "n/a\n");
- tm = sb->s_wtime;
+ tm = ext2fs_get_tstamp(sb, s_mtime);
+ fprintf(f, "Last mount time: %s", tm ? ctime(&tm) : "n/a\n");
+ tm = ext2fs_get_tstamp(sb, s_wtime);
fprintf(f, "Last write time: %s", ctime(&tm));
fprintf(f, "Mount count: %u\n", sb->s_mnt_count);
fprintf(f, "Maximum mount count: %d\n", sb->s_max_mnt_count);
- tm = sb->s_lastcheck;
+ tm = ext2fs_get_tstamp(sb, s_lastcheck);
fprintf(f, "Last checked: %s", ctime(&tm));
fprintf(f, "Check interval: %u (%s)\n", sb->s_checkinterval,
interval_string(sb->s_checkinterval));
if (sb->s_checkinterval)
{
- time_t next;
-
- next = sb->s_lastcheck + sb->s_checkinterval;
- fprintf(f, "Next check after: %s", ctime(&next));
+ tm += sb->s_checkinterval;
+ fprintf(f, "Next check after: %s", ctime(&tm));
}
#define POW2(x) ((__u64) 1 << (x))
if (sb->s_kbytes_written) {
@@ -360,7 +356,7 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
print_group(sb->s_def_resgid, f);
if (sb->s_rev_level >= EXT2_DYNAMIC_REV) {
fprintf(f, "First inode: %d\n", sb->s_first_ino);
- fprintf(f, "Inode size: %d\n", sb->s_inode_size);
+ fprintf(f, "Inode size: %d\n", sb->s_inode_size);
if (sb->s_min_extra_isize)
fprintf(f, "Required extra isize: %d\n",
sb->s_min_extra_isize);
@@ -375,7 +371,7 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
fprintf(f, "Journal inode: %u\n",
sb->s_journal_inum);
if (sb->s_journal_dev)
- fprintf(f, "Journal device: 0x%04x\n",
+ fprintf(f, "Journal device: 0x%04x\n",
sb->s_journal_dev);
if (sb->s_last_orphan)
fprintf(f, "First orphan inode: %u\n",
@@ -419,8 +415,8 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
if (sb->s_error_count)
fprintf(f, "FS Error count: %u\n",
sb->s_error_count);
- if (sb->s_first_error_time) {
- tm = sb->s_first_error_time;
+ tm = ext2fs_get_tstamp(sb, s_first_error_time);
+ if (tm) {
fprintf(f, "First error time: %s", ctime(&tm));
fprintf(f, "First error function: %.*s\n",
EXT2_LEN_STR(sb->s_first_error_func));
@@ -436,8 +432,8 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
fprintf(f, "First error err: %s\n",
e2p_errcode2str(sb->s_first_error_errcode));
}
- if (sb->s_last_error_time) {
- tm = sb->s_last_error_time;
+ tm = ext2fs_get_tstamp(sb, s_last_error_time);
+ if (tm) {
fprintf(f, "Last error time: %s", ctime(&tm));
fprintf(f, "Last error function: %.*s\n",
EXT2_LEN_STR(sb->s_last_error_func));
diff --git a/lib/ext2fs/Makefile.in b/lib/ext2fs/Makefile.in
index 798ff6098..e9c23d341 100644
--- a/lib/ext2fs/Makefile.in
+++ b/lib/ext2fs/Makefile.in
@@ -24,8 +24,8 @@ COMPILE_ET= _ET_DIR_OVERRIDE=$(srcdir)/../et ../et/compile_et
DEBUG_OBJS= debug_cmds.o extent_cmds.o tst_cmds.o debugfs.o util.o \
ncheck.o icheck.o ls.o lsdel.o dump.o set_fields.o logdump.o \
htree.o unused.o e2freefrag.o filefrag.o extent_inode.o zap.o \
- xattrs.o quota.o tst_libext2fs.o create_inode.o journal.o \
- revoke.o recovery.o do_journal.o
+ xattrs.o quota.o tst_libext2fs.o create_inode.o \
+ create_inode_libarchive.o journal.o revoke.o recovery.o do_journal.o
DEBUG_SRCS= debug_cmds.c extent_cmds.c tst_cmds.c \
$(top_srcdir)/debugfs/debugfs.c \
@@ -46,6 +46,7 @@ DEBUG_SRCS= debug_cmds.c extent_cmds.c tst_cmds.c \
$(top_srcdir)/debugfs/xattrs.c \
$(top_srcdir)/misc/e2freefrag.c \
$(top_srcdir)/misc/create_inode.c \
+ $(top_srcdir)/misc/create_inode_libarchive.c \
$(top_srcdir)/debugfs/journal.c \
$(top_srcdir)/e2fsck/revoke.c \
$(top_srcdir)/e2fsck/recovery.c \
@@ -92,6 +93,7 @@ OBJS= $(DEBUGFS_LIB_OBJS) $(RESIZE_LIB_OBJS) $(E2IMAGE_LIB_OBJS) \
gen_bitmap64.o \
get_num_dirs.o \
get_pathname.o \
+ getenv.o \
getsize.o \
getsectsize.o \
hashmap.o \
@@ -174,6 +176,7 @@ SRCS= ext2_err.c \
$(srcdir)/gen_bitmap64.c \
$(srcdir)/get_num_dirs.c \
$(srcdir)/get_pathname.c \
+ $(srcdir)/getenv.c \
$(srcdir)/getsize.c \
$(srcdir)/getsectsize.c \
$(srcdir)/hashmap.c \
@@ -458,7 +461,13 @@ e2freefrag.o: $(top_srcdir)/misc/e2freefrag.c
$(E) " CC $<"
$(Q) $(CC) $(ALL_CFLAGS) -DDEBUGFS -I$(top_srcdir)/debugfs -c $< -o $@
-create_inode.o: $(top_srcdir)/misc/create_inode.c
+create_inode.o: $(top_srcdir)/misc/create_inode.c \
+ $(top_srcdir)/misc/create_inode_libarchive.c
+ $(E) " CC $<"
+ $(Q) $(CC) $(ALL_CFLAGS) -DDEBUGFS -c $< -o $@
+
+create_inode_libarchive.o: $(top_srcdir)/misc/create_inode_libarchive.c \
+ $(top_srcdir)/misc/create_inode_libarchive.c
$(E) " CC $<"
$(Q) $(CC) $(ALL_CFLAGS) -DDEBUGFS -c $< -o $@
@@ -499,7 +508,7 @@ tst_libext2fs: $(DEBUG_OBJS) \
$(Q) $(CC) -o tst_libext2fs $(ALL_LDFLAGS) -DDEBUG $(DEBUG_OBJS) \
$(STATIC_LIBSS) $(STATIC_LIBE2P) $(LIBSUPPORT) \
$(STATIC_LIBEXT2FS) $(LIBBLKID) $(LIBUUID) $(LIBMAGIC) \
- $(STATIC_LIBCOM_ERR) $(SYSLIBS) -I $(top_srcdir)/debugfs
+ $(STATIC_LIBCOM_ERR) $(SYSLIBS) $(LIBARCHIVE) -I $(top_srcdir)/debugfs
tst_inline: $(srcdir)/inline.c $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBCOM_ERR)
$(E) " LD $@"
@@ -896,6 +905,12 @@ get_pathname.o: $(srcdir)/get_pathname.c $(top_builddir)/lib/config.h \
$(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
$(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
$(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h
+getenv.o: $(srcdir)/getenv.c $(top_builddir)/lib/config.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2fs.h \
+ $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2_fs.h \
+ $(srcdir)/ext3_extents.h $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
+ $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
+ $(srcdir)/hashmap.h $(srcdir)/bitops.h
getsize.o: $(srcdir)/getsize.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
$(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fs.h \
@@ -1049,6 +1064,13 @@ openfs.o: $(srcdir)/openfs.c $(top_builddir)/lib/config.h \
$(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
$(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
$(srcdir)/e2image.h
+orphan.o: $(srcdir)/orphan.c $(top_builddir)/lib/config.h \
+ $(top_builddir)/lib/dirpaths.h $(srcdir)/ext2_fs.h \
+ $(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2fsP.h \
+ $(srcdir)/ext2fs.h $(srcdir)/ext2_fs.h $(srcdir)/ext3_extents.h \
+ $(top_srcdir)/lib/et/com_err.h $(srcdir)/ext2_io.h \
+ $(top_builddir)/lib/ext2fs/ext2_err.h $(srcdir)/ext2_ext_attr.h \
+ $(srcdir)/hashmap.h $(srcdir)/bitops.h
progress.o: $(srcdir)/progress.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(srcdir)/ext2fs.h \
$(top_builddir)/lib/ext2fs/ext2_types.h $(srcdir)/ext2_fs.h \
@@ -1419,7 +1441,17 @@ create_inode.o: $(top_srcdir)/misc/create_inode.c \
$(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
$(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
$(srcdir)/fiemap.h $(top_srcdir)/misc/create_inode.h \
- $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/nls-enable.h
+ $(top_srcdir)/lib/e2p/e2p.h $(top_srcdir)/lib/support/nls-enable.h \
+ $(top_srcdir)/misc/create_inode_libarchive.h
+create_inode_libarchive.o: $(top_srcdir)/misc/create_inode_libarchive.c \
+ $(top_builddir)/lib/config.h $(top_builddir)/lib/dirpaths.h \
+ $(top_builddir)/lib/ext2fs/ext2_types.h $(top_srcdir)/misc/create_inode.h \
+ $(top_srcdir)/lib/et/com_err.h $(top_srcdir)/lib/e2p/e2p.h \
+ $(srcdir)/ext2_fs.h $(srcdir)/ext2fs.h $(srcdir)/ext3_extents.h \
+ $(srcdir)/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
+ $(srcdir)/ext2_ext_attr.h $(srcdir)/hashmap.h $(srcdir)/bitops.h \
+ $(top_srcdir)/misc/create_inode_libarchive.h \
+ $(top_srcdir)/lib/support/nls-enable.h
journal.o: $(top_srcdir)/debugfs/journal.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(top_srcdir)/debugfs/journal.h \
$(srcdir)/../../e2fsck/jfs_user.h $(srcdir)/ext2_fs.h \
diff --git a/lib/ext2fs/alloc_sb.c b/lib/ext2fs/alloc_sb.c
index 8530b40f6..e92739ecc 100644
--- a/lib/ext2fs/alloc_sb.c
+++ b/lib/ext2fs/alloc_sb.c
@@ -46,8 +46,7 @@ int ext2fs_reserve_super_and_bgd(ext2_filsys fs,
ext2fs_block_bitmap bmap)
{
blk64_t super_blk, old_desc_blk, new_desc_blk;
- blk_t used_blks;
- int old_desc_blocks, num_blocks;
+ blk_t used_blks, old_desc_blocks, num_blocks;
ext2fs_super_and_bgd_loc2(fs, group, &super_blk,
&old_desc_blk, &new_desc_blk, &used_blks);
@@ -79,3 +78,28 @@ int ext2fs_reserve_super_and_bgd(ext2_filsys fs,
return num_blocks ;
}
+
+/*
+ * This function reserves the superblock and block group descriptors
+ * for a given block group and returns the number of blocks used by the
+ * super block and group descriptors by looking up the block bitmap.
+ */
+errcode_t ext2fs_reserve_super_and_bgd2(ext2_filsys fs,
+ dgrp_t group,
+ ext2fs_block_bitmap bmap,
+ blk_t *desc_blocks)
+{
+ blk64_t num_blocks;
+ errcode_t retval = 0;
+
+ ext2fs_reserve_super_and_bgd(fs, group, bmap);
+
+ retval = ext2fs_count_used_blocks(fs,
+ ext2fs_group_first_block2(fs, group),
+ ext2fs_group_last_block2(fs, group),
+ &num_blocks);
+ if (!retval)
+ *desc_blocks = num_blocks;
+
+ return retval;
+}
diff --git a/lib/ext2fs/bb_inode.c b/lib/ext2fs/bb_inode.c
index 11f10ebcd..8b29e1c8d 100644
--- a/lib/ext2fs/bb_inode.c
+++ b/lib/ext2fs/bb_inode.c
@@ -20,7 +20,6 @@
#include <unistd.h>
#endif
#include <fcntl.h>
-#include <time.h>
#if HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
@@ -29,7 +28,7 @@
#endif
#include "ext2_fs.h"
-#include "ext2fs.h"
+#include "ext2fsP.h"
struct set_badblock_record {
ext2_badblocks_iterate bb_iter;
@@ -58,8 +57,9 @@ static int clear_bad_block_proc(ext2_filsys fs, blk_t *block_nr,
errcode_t ext2fs_update_bb_inode(ext2_filsys fs, ext2_badblocks_list bb_list)
{
errcode_t retval;
- struct set_badblock_record rec;
+ struct set_badblock_record rec;
struct ext2_inode inode;
+ time_t now;
EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
@@ -124,9 +124,11 @@ errcode_t ext2fs_update_bb_inode(ext2_filsys fs, ext2_badblocks_list bb_list)
if (retval)
goto cleanup;
- inode.i_atime = inode.i_mtime = fs->now ? fs->now : time(0);
- if (!inode.i_ctime)
- inode.i_ctime = fs->now ? fs->now : time(0);
+ now = ext2fsP_get_time(fs);
+ ext2fs_inode_xtime_set(&inode, i_atime, now);
+ if (!ext2fs_inode_xtime_get(&inode, i_ctime))
+ ext2fs_inode_xtime_set(&inode, i_ctime, now);
+ ext2fs_inode_xtime_set(&inode, i_mtime, now);
ext2fs_iblk_set(fs, &inode, rec.bad_block_count);
retval = ext2fs_inode_size_set(fs, &inode,
rec.bad_block_count * fs->blocksize);
diff --git a/lib/ext2fs/closefs.c b/lib/ext2fs/closefs.c
index 69cbdd8c1..8e5bec03a 100644
--- a/lib/ext2fs/closefs.c
+++ b/lib/ext2fs/closefs.c
@@ -301,7 +301,7 @@ errcode_t ext2fs_flush2(ext2_filsys fs, int flags)
fs_state = fs->super->s_state;
feature_incompat = fs->super->s_feature_incompat;
- fs->super->s_wtime = fs->now ? fs->now : time(NULL);
+ ext2fs_set_tstamp(fs->super, s_wtime, ext2fsP_get_time(fs));
fs->super->s_block_group_nr = 0;
/*
diff --git a/lib/ext2fs/ext2_fs.h b/lib/ext2fs/ext2_fs.h
index 0fc9c09a5..586141f89 100644
--- a/lib/ext2fs/ext2_fs.h
+++ b/lib/ext2fs/ext2_fs.h
@@ -512,9 +512,9 @@ struct ext2_inode_large {
#define i_checksum_lo osd2.linux2.l_i_checksum_lo
-#define inode_includes(size, field) \
- (size >= (sizeof(((struct ext2_inode_large *)0)->field) + \
- offsetof(struct ext2_inode_large, field)))
+#define ext2fs_inode_includes(size, field) \
+ ((size) >= (sizeof(((struct ext2_inode_large *)0)->field) + \
+ offsetof(struct ext2_inode_large, field)))
#if defined(__KERNEL__) || defined(__linux__)
#define i_reserved1 osd1.linux1.l_i_reserved1
diff --git a/lib/ext2fs/ext2_io.h b/lib/ext2fs/ext2_io.h
index 679184e39..27eaaf1be 100644
--- a/lib/ext2fs/ext2_io.h
+++ b/lib/ext2fs/ext2_io.h
@@ -34,6 +34,8 @@ typedef struct struct_io_stats *io_stats;
#define CHANNEL_FLAGS_DISCARD_ZEROES 0x02
#define CHANNEL_FLAGS_BLOCK_DEVICE 0x04
#define CHANNEL_FLAGS_THREADS 0x08
+#define CHANNEL_FLAGS_NODISCARD 0x10
+#define CHANNEL_FLAGS_NOZEROOUT 0x20
#define io_channel_discard_zeroes_data(i) (i->flags & CHANNEL_FLAGS_DISCARD_ZEROES)
@@ -57,7 +59,7 @@ struct struct_io_channel {
int actual_bytes_written,
errcode_t error);
int refcount;
- int flags;
+ unsigned int flags;
long reserved[14];
void *private_data;
void *app_data;
diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h
index 72c60d2b5..c2638b803 100644
--- a/lib/ext2fs/ext2fs.h
+++ b/lib/ext2fs/ext2fs.h
@@ -222,6 +222,11 @@ typedef struct ext2_file *ext2_file_t;
#define EXT2_FLAG_IGNORE_SWAP_DIRENT 0x8000000
/*
+ * Internal flags for use by the ext2fs library only
+ */
+#define EXT2_FLAG2_USE_FAKE_TIME 0x000000001
+
+/*
* Special flag in the ext2 inode i_flag field that means that this is
* a new inode. (So that ext2_write_inode() can clear extra fields.)
*/
@@ -275,10 +280,11 @@ struct struct_ext2_filsys {
int cluster_ratio_bits;
__u16 default_bitmap_type;
__u16 pad;
+ __u32 flags2;
/*
* Reserved for future expansion
*/
- __u32 reserved[5];
+ __u32 reserved[4];
/*
* Reserved for the use of the calling application.
@@ -579,6 +585,73 @@ typedef struct ext2_struct_inode_scan *ext2_inode_scan;
*/
#define EXT2_I_SIZE(i) ((i)->i_size | ((__u64) (i)->i_size_high << 32))
+static inline __u32 __encode_extra_time(time_t seconds, __u32 nsec)
+{
+ __u32 extra = 0;
+
+#if (SIZEOF_TIME_T > 4)
+ extra = ((seconds - (__s32)(seconds & 0xffffffff)) >> 32) &
+ EXT4_EPOCH_MASK;
+#endif
+ return extra | (nsec << EXT4_EPOCH_BITS);
+}
+static inline time_t __decode_extra_sec(time_t seconds, __u32 extra)
+{
+#if (SIZEOF_TIME_T > 4)
+ if (extra & EXT4_EPOCH_MASK)
+ seconds += ((time_t)(extra & EXT4_EPOCH_MASK) << 32);
+#endif
+ return seconds;
+}
+static inline __u32 __decode_extra_nsec(__u32 extra)
+{
+ return (extra & EXT4_NSEC_MASK) >> EXT4_EPOCH_BITS;
+}
+#define ext2fs_inode_actual_size(inode) \
+ ((size_t)(EXT2_GOOD_OLD_INODE_SIZE + \
+ (sizeof(*inode) > EXT2_GOOD_OLD_INODE_SIZE ? \
+ ((struct ext2_inode_large *)(inode))->i_extra_isize : 0)))
+#define clamp(val, min, max) ((val) < (min) ? (min) : ((val) > (max) ? \
+ (max) : (val)))
+#define ext2fs_inode_xtime_set(inode, field, sec) \
+do { \
+ if (ext2fs_inode_includes(ext2fs_inode_actual_size(inode), \
+ field ## _extra)) { \
+ (inode)->field = (__s32)(sec & 0xfffffff); \
+ ((struct ext2_inode_large *)(inode))->field ## _extra = \
+ __encode_extra_time(sec, 0); \
+ } else { \
+ (inode)->field = clamp(sec, INT32_MIN, INT32_MAX); \
+ } \
+} while (0)
+#define ext2fs_inode_xtime_get(inode, field) \
+(ext2fs_inode_includes(ext2fs_inode_actual_size(inode), field ## _extra) ? \
+ __decode_extra_sec((inode)->field, \
+ ((struct ext2_inode_large *)(inode))->field ## _extra) : \
+ (time_t)(inode)->field)
+
+static inline void __sb_set_tstamp(__u32 *lo, __u8 *hi, time_t seconds)
+{
+ *lo = seconds & 0xffffffff;
+#if (SIZEOF_TIME_T > 4)
+ *hi = (seconds >> 32) & EXT4_EPOCH_MASK;
+#else
+ *hi = 0;
+#endif
+}
+static inline time_t __sb_get_tstamp(__u32 *lo, __u8 *hi)
+{
+#if (SIZEOF_TIME_T == 4)
+ return *lo;
+#else
+ return ((time_t)(*hi) << 32) | *lo;
+#endif
+}
+#define ext2fs_set_tstamp(sb, field, seconds) \
+ __sb_set_tstamp(&(sb)->field, &(sb)->field ## _hi, seconds)
+#define ext2fs_get_tstamp(sb, field) \
+ __sb_get_tstamp(&(sb)->field, &(sb)->field ## _hi)
+
/*
* ext2_icount_t abstraction
*/
@@ -795,6 +868,10 @@ errcode_t ext2fs_alloc_range(ext2_filsys fs, int flags, blk64_t goal,
extern int ext2fs_reserve_super_and_bgd(ext2_filsys fs,
dgrp_t group,
ext2fs_block_bitmap bmap);
+extern errcode_t ext2fs_reserve_super_and_bgd2(ext2_filsys fs,
+ dgrp_t group,
+ ext2fs_block_bitmap bmap,
+ blk_t *desc_blocks);
extern void ext2fs_set_block_alloc_stats_callback(ext2_filsys fs,
void (*func)(ext2_filsys fs,
blk64_t blk,
@@ -1483,6 +1560,13 @@ errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs,
ext2fs_block_bitmap *bitmap);
errcode_t ext2fs_count_used_clusters(ext2_filsys fs, blk64_t start,
blk64_t end, blk64_t *out);
+errcode_t ext2fs_count_used_blocks(ext2_filsys fs, blk64_t start,
+ blk64_t end, blk64_t *out);
+extern unsigned int ext2fs_list_backups(ext2_filsys fs, unsigned int *three,
+ unsigned int *five, unsigned int *seven);
+
+/* getenv.c */
+extern char *ext2fs_safe_getenv(const char *arg);
/* get_num_dirs.c */
extern errcode_t ext2fs_get_num_dirs(ext2_filsys fs, ext2_ino_t *ret_num_dirs);
diff --git a/lib/ext2fs/ext2fsP.h b/lib/ext2fs/ext2fsP.h
index 06873847c..d1f2105e9 100644
--- a/lib/ext2fs/ext2fsP.h
+++ b/lib/ext2fs/ext2fsP.h
@@ -26,6 +26,13 @@ static inline int ext2fsP_is_disk_device(mode_t mode)
#endif
}
+static inline time_t ext2fsP_get_time(ext2_filsys fs)
+{
+ if (fs->now || (fs->flags2 & EXT2_FLAG2_USE_FAKE_TIME))
+ return fs->now;
+ return time(NULL);
+}
+
/*
* Badblocks list
*/
diff --git a/lib/ext2fs/ext_attr.c b/lib/ext2fs/ext_attr.c
index 349404639..b33bcce39 100644
--- a/lib/ext2fs/ext_attr.c
+++ b/lib/ext2fs/ext_attr.c
@@ -23,7 +23,7 @@
#include "ext2_ext_attr.h"
#include "ext4_acl.h"
-#include "ext2fs.h"
+#include "ext2fsP.h"
static errcode_t read_ea_inode_hash(ext2_filsys fs, ext2_ino_t ino, __u32 *hash)
{
@@ -1342,7 +1342,7 @@ static errcode_t xattr_inode_dec_ref(ext2_filsys fs, ext2_ino_t ino)
goto write_out;
inode.i_links_count = 0;
- inode.i_dtime = fs->now ? fs->now : time(0);
+ inode.i_dtime = ext2fsP_get_time(fs);
ret = ext2fs_free_ext_attr(fs, ino, &inode);
if (ret)
diff --git a/lib/ext2fs/gen_bitmap64.c b/lib/ext2fs/gen_bitmap64.c
index 4289e8155..48745551c 100644
--- a/lib/ext2fs/gen_bitmap64.c
+++ b/lib/ext2fs/gen_bitmap64.c
@@ -257,7 +257,7 @@ void ext2fs_free_generic_bmap(ext2fs_generic_bitmap gen_bmap)
return;
#ifdef ENABLE_BMAP_STATS
- if (getenv("E2FSPROGS_BITMAP_STATS")) {
+ if (ext2fs_safe_getenv("E2FSPROGS_BITMAP_STATS")) {
ext2fs_print_bmap_statistics(bmap);
bmap->bitmap_ops->print_stats(bmap);
}
@@ -945,8 +945,8 @@ errcode_t ext2fs_find_first_set_generic_bmap(ext2fs_generic_bitmap bitmap,
return ENOENT;
}
-errcode_t ext2fs_count_used_clusters(ext2_filsys fs, blk64_t start,
- blk64_t end, blk64_t *out)
+errcode_t ext2fs_count_used_blocks(ext2_filsys fs, blk64_t start,
+ blk64_t end, blk64_t *out)
{
blk64_t next;
blk64_t tot_set = 0;
@@ -976,6 +976,19 @@ errcode_t ext2fs_count_used_clusters(ext2_filsys fs, blk64_t start,
}
if (!retval)
+ *out = tot_set;
+ return retval;
+}
+
+errcode_t ext2fs_count_used_clusters(ext2_filsys fs, blk64_t start,
+ blk64_t end, blk64_t *out)
+{
+ blk64_t tot_set = 0;
+ errcode_t retval = 0;
+
+ retval = ext2fs_count_used_blocks(fs, start, end, &tot_set);
+
+ if (!retval)
*out = EXT2FS_NUM_B2C(fs, tot_set);
return retval;
}
diff --git a/lib/ext2fs/getsize.c b/lib/ext2fs/getsize.c
index bcf30208e..a02863443 100644
--- a/lib/ext2fs/getsize.c
+++ b/lib/ext2fs/getsize.c
@@ -71,12 +71,11 @@
#define HAVE_GET_FILE_SIZE_EX 1
#endif
-HANDLE windows_get_handle(io_channel channel);
-
errcode_t ext2fs_get_device_size2(const char *file, int blocksize,
blk64_t *retblocks)
{
- HANDLE dev;
+ int fd;
+ HANDLE h;
PARTITION_INFORMATION pi;
DISK_GEOMETRY gi;
DWORD retbytes;
@@ -86,25 +85,18 @@ errcode_t ext2fs_get_device_size2(const char *file, int blocksize,
DWORD filesize;
#endif /* HAVE_GET_FILE_SIZE_EX */
- io_channel data_io = 0;
- int retval;
-
- retval = windows_io_manager->open(file, 0, &data_io);
- if (retval)
- return retval;
-
- dev = windows_get_handle(data_io);
- if (dev == INVALID_HANDLE_VALUE)
- return EBADF;
-
- if (DeviceIoControl(dev, IOCTL_DISK_GET_PARTITION_INFO,
+ fd = ext2fs_open_file(file, O_RDONLY, 0);
+ if (fd < 0)
+ return errno;
+ h = (HANDLE)_get_osfhandle(fd);
+ if (DeviceIoControl(h, IOCTL_DISK_GET_PARTITION_INFO,
&pi, sizeof(PARTITION_INFORMATION),
&pi, sizeof(PARTITION_INFORMATION),
&retbytes, NULL)) {
*retblocks = pi.PartitionLength.QuadPart / blocksize;
- } else if (DeviceIoControl(dev, IOCTL_DISK_GET_DRIVE_GEOMETRY,
+ } else if (DeviceIoControl(h, IOCTL_DISK_GET_DRIVE_GEOMETRY,
&gi, sizeof(DISK_GEOMETRY),
&gi, sizeof(DISK_GEOMETRY),
&retbytes, NULL)) {
@@ -115,20 +107,19 @@ errcode_t ext2fs_get_device_size2(const char *file, int blocksize,
gi.Cylinders.QuadPart / blocksize;
#ifdef HAVE_GET_FILE_SIZE_EX
- } else if (GetFileSizeEx(dev, &filesize)) {
+ } else if (GetFileSizeEx(h, &filesize)) {
*retblocks = filesize.QuadPart / blocksize;
}
#else
} else {
- filesize = GetFileSize(dev, NULL);
+ filesize = GetFileSize(h, NULL);
if (INVALID_FILE_SIZE != filesize) {
*retblocks = filesize / blocksize;
}
}
#endif /* HAVE_GET_FILE_SIZE_EX */
- windows_io_manager->close(data_io);
-
+ close(fd);
return 0;
}
diff --git a/lib/ext2fs/hashmap.c b/lib/ext2fs/hashmap.c
index 697b2bcc6..15794673e 100644
--- a/lib/ext2fs/hashmap.c
+++ b/lib/ext2fs/hashmap.c
@@ -34,8 +34,8 @@ struct ext2fs_hashmap *ext2fs_hashmap_create(
uint32_t(*hash_fct)(const void*, size_t),
void(*free_fct)(void*), size_t size)
{
- struct ext2fs_hashmap *h = calloc(sizeof(struct ext2fs_hashmap) +
- sizeof(struct ext2fs_hashmap_entry) * size, 1);
+ struct ext2fs_hashmap *h = calloc(1, sizeof(struct ext2fs_hashmap) +
+ sizeof(struct ext2fs_hashmap_entry) * size);
if (!h)
return NULL;
diff --git a/lib/ext2fs/imager.c b/lib/ext2fs/imager.c
index 23290a6a2..16b09770c 100644
--- a/lib/ext2fs/imager.c
+++ b/lib/ext2fs/imager.c
@@ -299,7 +299,7 @@ errcode_t ext2fs_image_super_read(ext2_filsys fs, int fd,
ssize_t actual, size;
errcode_t retval;
- size = (ssize_t)fs->blocksize * (fs->group_desc_count + 1);
+ size = (ssize_t)fs->blocksize * (fs->desc_blocks + 1);
buf = malloc(size);
if (!buf)
return ENOMEM;
@@ -323,7 +323,7 @@ errcode_t ext2fs_image_super_read(ext2_filsys fs, int fd,
memcpy(fs->super, buf, SUPERBLOCK_SIZE);
memcpy(fs->group_desc, buf + fs->blocksize,
- (ssize_t)fs->blocksize * fs->group_desc_count);
+ (ssize_t)fs->blocksize * fs->desc_blocks);
retval = 0;
diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c
index edd692bb9..b9cfd1bb3 100644
--- a/lib/ext2fs/initialize.c
+++ b/lib/ext2fs/initialize.c
@@ -26,7 +26,7 @@
#endif
#include "ext2_fs.h"
-#include "ext2fs.h"
+#include "ext2fsP.h"
#ifndef O_BINARY
#define O_BINARY 0
@@ -125,9 +125,15 @@ errcode_t ext2fs_initialize(const char *name, int flags,
fs->flags |= EXT2_FLAG_SWAP_BYTES;
#endif
- time_env = getenv("E2FSPROGS_FAKE_TIME");
- if (time_env)
+ time_env = ext2fs_safe_getenv("SOURCE_DATE_EPOCH");
+ if (time_env) {
fs->now = strtoul(time_env, NULL, 0);
+ fs->flags2 |= EXT2_FLAG2_USE_FAKE_TIME;
+ } else {
+ time_env = ext2fs_safe_getenv("E2FSPROGS_FAKE_TIME");
+ if (time_env)
+ fs->now = strtoul(time_env, NULL, 0);
+ }
io_flags = IO_FLAG_RW;
if (flags & EXT2_FLAG_EXCLUSIVE)
@@ -218,7 +224,8 @@ errcode_t ext2fs_initialize(const char *name, int flags,
}
set_field(s_checkinterval, 0);
- super->s_mkfs_time = super->s_lastcheck = fs->now ? fs->now : time(NULL);
+ ext2fs_set_tstamp(super, s_mkfs_time, ext2fsP_get_time(fs));
+ ext2fs_set_tstamp(super, s_lastcheck, ext2fsP_get_time(fs));
super->s_creator_os = CREATOR_OS;
@@ -308,13 +315,6 @@ retry:
set_field(s_inodes_count, ext2fs_blocks_count(super) / i);
/*
- * Make sure we have at least EXT2_FIRST_INO + 1 inodes, so
- * that we have enough inodes for the filesystem(!)
- */
- if (super->s_inodes_count < EXT2_FIRST_INODE(super)+1)
- super->s_inodes_count = EXT2_FIRST_INODE(super)+1;
-
- /*
* There should be at least as many inodes as the user
* requested. Figure out how many inodes per group that
* should be. But make sure that we don't allocate more than
@@ -375,6 +375,15 @@ ipg_retry:
}
super->s_inodes_count = super->s_inodes_per_group *
fs->group_desc_count;
+ /*
+ * Make sure we have at least EXT2_FIRST_INO + 1 inodes, so
+ * that we have enough inodes for the filesystem(!)
+ */
+ if (super->s_inodes_count < EXT2_FIRST_INODE(super)+1) {
+ ipg += 8;
+ goto ipg_retry;
+ }
+
super->s_free_inodes_count = super->s_inodes_count;
/*
@@ -521,33 +530,43 @@ ipg_retry:
csum_flag = ext2fs_has_group_desc_csum(fs);
reserved_inos = super->s_first_ino;
for (i = 0; i < fs->group_desc_count; i++) {
+ blk_t grp_free_blocks;
+ ext2_ino_t inodes;
+
+ retval = ext2fs_reserve_super_and_bgd2(fs, i,
+ fs->block_map,
+ &numblocks);
+ if (retval)
+ goto cleanup;
+
/*
* Don't set the BLOCK_UNINIT group for the last group
* because the block bitmap needs to be padded.
*/
if (csum_flag) {
- if (i != fs->group_desc_count - 1)
+ if (i != fs->group_desc_count - 1 && numblocks == 0)
ext2fs_bg_flags_set(fs, i,
EXT2_BG_BLOCK_UNINIT);
ext2fs_bg_flags_set(fs, i, EXT2_BG_INODE_UNINIT);
- numblocks = super->s_inodes_per_group;
+ inodes = super->s_inodes_per_group;
if (reserved_inos) {
- if (numblocks > reserved_inos) {
- numblocks -= reserved_inos;
+ if (inodes > reserved_inos) {
+ inodes -= reserved_inos;
reserved_inos = 0;
} else {
- reserved_inos -= numblocks;
- numblocks = 0;
+ reserved_inos -= inodes;
+ inodes = 0;
}
}
- ext2fs_bg_itable_unused_set(fs, i, numblocks);
+ ext2fs_bg_itable_unused_set(fs, i, inodes);
}
- numblocks = ext2fs_reserve_super_and_bgd(fs, i, fs->block_map);
- if (fs->super->s_log_groups_per_flex)
+
+ if (!fs->super->s_log_groups_per_flex)
numblocks += 2 + fs->inode_blocks_per_group;
- free_blocks += numblocks;
- ext2fs_bg_free_blocks_count_set(fs, i, numblocks);
+ grp_free_blocks = ext2fs_group_blocks_count(fs, i) - numblocks;
+ free_blocks += grp_free_blocks;
+ ext2fs_bg_free_blocks_count_set(fs, i, grp_free_blocks);
ext2fs_bg_free_inodes_count_set(fs, i, fs->super->s_inodes_per_group);
ext2fs_bg_used_dirs_count_set(fs, i, 0);
ext2fs_group_desc_csum_set(fs, i);
diff --git a/lib/ext2fs/inode.c b/lib/ext2fs/inode.c
index 957d5aa9f..c9389a232 100644
--- a/lib/ext2fs/inode.c
+++ b/lib/ext2fs/inode.c
@@ -1039,17 +1039,17 @@ errcode_t ext2fs_write_new_inode(ext2_filsys fs, ext2_ino_t ino,
struct ext2_inode *inode)
{
struct ext2_inode *buf;
- int size = EXT2_INODE_SIZE(fs->super);
+ int size = EXT2_INODE_SIZE(fs->super);
struct ext2_inode_large *large_inode;
errcode_t retval;
- __u32 t = fs->now ? fs->now : time(NULL);
-
- if (!inode->i_ctime)
- inode->i_ctime = t;
- if (!inode->i_mtime)
- inode->i_mtime = t;
- if (!inode->i_atime)
- inode->i_atime = t;
+ time_t t = ext2fsP_get_time(fs);
+
+ if (!ext2fs_inode_xtime_get(inode, i_atime))
+ ext2fs_inode_xtime_set(inode, i_atime, t);
+ if (!ext2fs_inode_xtime_get(inode, i_ctime))
+ ext2fs_inode_xtime_set(inode, i_ctime, t);
+ if (!ext2fs_inode_xtime_get(inode, i_mtime))
+ ext2fs_inode_xtime_set(inode, i_mtime, t);
if (size == sizeof(struct ext2_inode))
return ext2fs_write_inode_full(fs, ino, inode,
diff --git a/lib/ext2fs/ismounted.c b/lib/ext2fs/ismounted.c
index a7db1a5c4..c1c3102b0 100644
--- a/lib/ext2fs/ismounted.c
+++ b/lib/ext2fs/ismounted.c
@@ -108,7 +108,7 @@ static errcode_t check_mntent_file(const char *mtab_file, const char *file,
if ((f = setmntent (mtab_file, "r")) == NULL) {
if (errno == ENOENT) {
- if (getenv("EXT2FS_NO_MTAB_OK"))
+ if (ext2fs_safe_getenv("EXT2FS_NO_MTAB_OK"))
return 0;
else
return EXT2_ET_NO_MTAB_FILE;
@@ -366,15 +366,15 @@ errcode_t ext2fs_check_mount_point(const char *device, int *mount_flags,
errcode_t retval = 0;
int busy = 0;
- if (getenv("EXT2FS_PRETEND_RO_MOUNT")) {
+ if (ext2fs_safe_getenv("EXT2FS_PRETEND_RO_MOUNT")) {
*mount_flags = EXT2_MF_MOUNTED | EXT2_MF_READONLY;
- if (getenv("EXT2FS_PRETEND_ROOTFS"))
+ if (ext2fs_safe_getenv("EXT2FS_PRETEND_ROOTFS"))
*mount_flags = EXT2_MF_ISROOT;
return 0;
}
- if (getenv("EXT2FS_PRETEND_RW_MOUNT")) {
+ if (ext2fs_safe_getenv("EXT2FS_PRETEND_RW_MOUNT")) {
*mount_flags = EXT2_MF_MOUNTED;
- if (getenv("EXT2FS_PRETEND_ROOTFS"))
+ if (ext2fs_safe_getenv("EXT2FS_PRETEND_ROOTFS"))
*mount_flags = EXT2_MF_ISROOT;
return 0;
}
diff --git a/lib/ext2fs/llseek.c b/lib/ext2fs/llseek.c
index 45f21d09d..9118b23f4 100644
--- a/lib/ext2fs/llseek.c
+++ b/lib/ext2fs/llseek.c
@@ -35,68 +35,32 @@
#ifdef __linux__
-#if defined(HAVE_LSEEK64) && defined(HAVE_LSEEK64_PROTOTYPE)
-
-#define my_llseek lseek64
-
-#else
-#if defined(HAVE_LLSEEK)
-#include <sys/syscall.h>
-
-#ifndef HAVE_LLSEEK_PROTOTYPE
-extern long long llseek (int fd, long long offset, int origin);
-#endif
-
-#define my_llseek llseek
-
-#else /* ! HAVE_LLSEEK */
-
-#if SIZEOF_LONG == SIZEOF_LONG_LONG || _FILE_OFFSET_BITS+0 == 64
-
-#define my_llseek lseek
-
-#else /* SIZEOF_LONG != SIZEOF_LONG_LONG */
-
#include <linux/unistd.h>
-#ifndef __NR__llseek
-#define __NR__llseek 140
-#endif
-
-#ifndef __i386__
-static int _llseek (unsigned int, unsigned long,
- unsigned long, ext2_loff_t *, unsigned int);
-
-static _syscall5(int,_llseek,unsigned int,fd,unsigned long,offset_high,
- unsigned long, offset_low,ext2_loff_t *,result,
- unsigned int, origin);
-#endif
-
static ext2_loff_t my_llseek (int fd, ext2_loff_t offset, int origin)
{
- ext2_loff_t result;
+#if SIZEOF_OFF_T >= 8
+ return lseek(fd, offset, origin);
+#elif HAVE_LSEEK64_PROTOTYPE
+ return lseek64(fd, offset, origin);
+#elif HAVE_LLSEEK_PROTOTYPE
+ return llseek(fd, offset, origin);
+#elif defined(__NR__llseek)
+ loff_t result;
int retval;
-
-#ifndef __i386__
- retval = _llseek(fd, ((unsigned long long) offset) >> 32,
+ retval = syscall(__NR__llseek, fd,
+ (unsigned long)(offset >> 32),
+ (unsigned long)(offset & 0xffffffff),
+ &result, origin);
+ return (retval == -1 ? retval : result);
#else
- retval = syscall(__NR__llseek, fd, (unsigned long long) (offset >> 32),
+ errno = ENOSYS;
+ return -1;
#endif
- ((unsigned long long) offset) & 0xffffffff,
- &result, origin);
- return (retval == -1 ? (ext2_loff_t) retval : result);
}
-#endif /* SIZE_LONG == SIZEOF_LONG_LONG */
-
-#endif /* HAVE_LLSEEK */
-#endif /* defined(HAVE_LSEEK64) && defined(HAVE_LSEEK64_PROTOTYPE) */
-
ext2_loff_t ext2fs_llseek (int fd, ext2_loff_t offset, int origin)
{
-#if SIZEOF_OFF_T >= SIZEOF_LONG_LONG
- return my_llseek (fd, offset, origin);
-#else
ext2_loff_t result;
static int do_compat = 0;
@@ -117,7 +81,6 @@ ext2_loff_t ext2fs_llseek (int fd, ext2_loff_t offset, int origin)
return -1;
}
return result;
-#endif
}
#else /* !linux */
diff --git a/lib/ext2fs/mkjournal.c b/lib/ext2fs/mkjournal.c
index 54772dd50..27cdfa05a 100644
--- a/lib/ext2fs/mkjournal.c
+++ b/lib/ext2fs/mkjournal.c
@@ -20,7 +20,6 @@
#include <errno.h>
#endif
#include <fcntl.h>
-#include <time.h>
#if HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
@@ -36,7 +35,7 @@
#include "ext2_fs.h"
#include "e2p/e2p.h"
-#include "ext2fs.h"
+#include "ext2fsP.h"
#include "kernel-jbd.h"
@@ -285,6 +284,7 @@ static errcode_t write_journal_inode(ext2_filsys fs, ext2_ino_t journal_ino,
unsigned long long inode_size;
int falloc_flags = EXT2_FALLOCATE_FORCE_INIT;
blk64_t zblk;
+ time_t now;
if ((retval = ext2fs_create_journal_superblock2(fs, jparams, flags,
&buf)))
@@ -312,7 +312,9 @@ static errcode_t write_journal_inode(ext2_filsys fs, ext2_ino_t journal_ino,
inode_size = (unsigned long long)fs->blocksize *
(jparams->num_journal_blocks + jparams->num_fc_blocks);
- inode.i_mtime = inode.i_ctime = fs->now ? fs->now : time(0);
+ now = ext2fsP_get_time(fs);
+ ext2fs_inode_xtime_set(&inode, i_mtime, now);
+ ext2fs_inode_xtime_set(&inode, i_ctime, now);
inode.i_links_count = 1;
inode.i_mode = LINUX_S_IFREG | 0600;
retval = ext2fs_inode_size_set(fs, &inode, inode_size);
diff --git a/lib/ext2fs/openfs.c b/lib/ext2fs/openfs.c
index fd56a9acd..2b8e0e753 100644
--- a/lib/ext2fs/openfs.c
+++ b/lib/ext2fs/openfs.c
@@ -149,9 +149,15 @@ errcode_t ext2fs_open2(const char *name, const char *io_options,
fs->flags |= EXT2_FLAG_MASTER_SB_ONLY;
fs->umask = 022;
- time_env = getenv("E2FSPROGS_FAKE_TIME");
- if (time_env)
+ time_env = ext2fs_safe_getenv("SOURCE_DATE_EPOCH");
+ if (time_env) {
fs->now = strtoul(time_env, NULL, 0);
+ fs->flags2 |= EXT2_FLAG2_USE_FAKE_TIME;
+ } else {
+ time_env = ext2fs_safe_getenv("E2FSPROGS_FAKE_TIME");
+ if (time_env)
+ fs->now = strtoul(time_env, NULL, 0);
+ }
retval = ext2fs_get_mem(strlen(name)+1, &fs->device_name);
if (retval)
@@ -330,13 +336,14 @@ retry:
}
/* Enforce the block group descriptor size */
- if (!(flags & EXT2_FLAG_IGNORE_SB_ERRORS) &&
- ext2fs_has_feature_64bit(fs->super)) {
+ if (ext2fs_has_feature_64bit(fs->super)) {
unsigned desc_size = fs->super->s_desc_size;
- if ((desc_size < EXT2_MIN_DESC_SIZE_64BIT) ||
- (desc_size > EXT2_MAX_DESC_SIZE) ||
- (desc_size & (desc_size - 1)) != 0) {
+ if (desc_size == 0 ||
+ (!(flags & EXT2_FLAG_IGNORE_SB_ERRORS) &&
+ ((desc_size > EXT2_MAX_DESC_SIZE) ||
+ (desc_size < EXT2_MIN_DESC_SIZE_64BIT) ||
+ (desc_size & (desc_size - 1)) != 0))) {
retval = EXT2_ET_BAD_DESC_SIZE;
goto cleanup;
}
diff --git a/lib/ext2fs/orphan.c b/lib/ext2fs/orphan.c
index e25f20ca2..913eb9a03 100644
--- a/lib/ext2fs/orphan.c
+++ b/lib/ext2fs/orphan.c
@@ -126,23 +126,23 @@ errcode_t ext2fs_create_orphan_file(ext2_filsys fs, blk_t num_blocks)
char *buf = NULL, *zerobuf = NULL;
struct mkorphan_info oi;
struct ext4_orphan_block_tail *ob_tail;
+ time_t now;
- if (!ino) {
+ if (ino) {
+ err = ext2fs_read_inode(fs, ino, &inode);
+ if (err)
+ return err;
+ if (EXT2_I_SIZE(&inode)) {
+ err = ext2fs_truncate_orphan_file(fs);
+ if (err)
+ return err;
+ }
+ } else {
err = ext2fs_new_inode(fs, EXT2_ROOT_INO, LINUX_S_IFREG | 0600,
0, &ino);
if (err)
return err;
ext2fs_inode_alloc_stats2(fs, ino, +1, 0);
- ext2fs_mark_ib_dirty(fs);
- }
-
- err = ext2fs_read_inode(fs, ino, &inode);
- if (err)
- return err;
- if (EXT2_I_SIZE(&inode)) {
- err = ext2fs_truncate_orphan_file(fs);
- if (err)
- return err;
}
memset(&inode, 0, sizeof(struct ext2_inode));
@@ -185,8 +185,10 @@ errcode_t ext2fs_create_orphan_file(ext2_filsys fs, blk_t num_blocks)
if (err)
goto out;
ext2fs_iblk_set(fs, &inode, 0);
- inode.i_atime = inode.i_mtime =
- inode.i_ctime = fs->now ? fs->now : time(0);
+ now = ext2fsP_get_time(fs);
+ ext2fs_inode_xtime_set(&inode, i_atime, now);
+ ext2fs_inode_xtime_set(&inode, i_ctime, now);
+ ext2fs_inode_xtime_set(&inode, i_mtime, now);
inode.i_links_count = 1;
inode.i_mode = LINUX_S_IFREG | 0600;
ext2fs_iblk_add_blocks(fs, &inode, oi.alloc_blocks);
diff --git a/lib/ext2fs/progress.c b/lib/ext2fs/progress.c
index fe4292fa7..61ab3f04a 100644
--- a/lib/ext2fs/progress.c
+++ b/lib/ext2fs/progress.c
@@ -53,7 +53,7 @@ void ext2fs_numeric_progress_init(ext2_filsys fs,
backspaces[sizeof(backspaces)-1] = 0;
memset(progress, 0, sizeof(*progress));
- if (getenv("E2FSPROGS_SKIP_PROGRESS"))
+ if (ext2fs_safe_getenv("E2FSPROGS_SKIP_PROGRESS"))
progress->skip_progress++;
diff --git a/lib/ext2fs/res_gdt.c b/lib/ext2fs/res_gdt.c
index fa8d8d6be..334964808 100644
--- a/lib/ext2fs/res_gdt.c
+++ b/lib/ext2fs/res_gdt.c
@@ -15,23 +15,24 @@
#include <string.h>
#include <time.h>
#include "ext2_fs.h"
-#include "ext2fs.h"
+#include "ext2fsP.h"
/*
* Iterate through the groups which hold BACKUP superblock/GDT copies in an
* ext3 filesystem. The counters should be initialized to 1, 5, and 7 before
- * calling this for the first time. In a sparse filesystem it will be the
- * sequence of powers of 3, 5, and 7: 1, 3, 5, 7, 9, 25, 27, 49, 81, ...
+ * calling this for the first time. In a sparse_super filesystem it will be
+ * the sequence of powers of 3, 5, and 7: 1, 3, 5, 7, 9, 25, 27, 49, 81, ...
* For a non-sparse filesystem it will be every group: 1, 2, 3, 4, ...
+ * For a sparse_super2 filesystem there are two backups in specific groups.
*/
-static unsigned int list_backups(ext2_filsys fs, unsigned int *three,
- unsigned int *five, unsigned int *seven)
+dgrp_t ext2fs_list_backups(ext2_filsys fs, dgrp_t *three,
+ dgrp_t *five, dgrp_t *seven)
{
- unsigned int *min = three;
- int mult = 3;
- unsigned int ret;
+ dgrp_t *min = three;
+ unsigned long long mult = 3;
+ dgrp_t ret;
- if (ext2fs_has_feature_sparse_super2(fs->super)) {
+ if (fs && ext2fs_has_feature_sparse_super2(fs->super)) {
if (*min == 1) {
*min += 1;
if (fs->super->s_backup_bgs[0])
@@ -42,11 +43,14 @@ static unsigned int list_backups(ext2_filsys fs, unsigned int *three,
if (fs->super->s_backup_bgs[1])
return fs->super->s_backup_bgs[1];
}
+
return fs->group_desc_count;
}
- if (!ext2fs_has_feature_sparse_super(fs->super)) {
+
+ if (fs && !ext2fs_has_feature_sparse_super(fs->super)) {
ret = *min;
*min += 1;
+
return ret;
}
@@ -60,7 +64,11 @@ static unsigned int list_backups(ext2_filsys fs, unsigned int *three,
}
ret = *min;
- *min *= mult;
+ mult *= *min;
+ if (mult > (dgrp_t)-1)
+ *min = (dgrp_t)-1;
+ else
+ *min = mult;
return ret;
}
@@ -135,15 +143,15 @@ errcode_t ext2fs_create_resize_inode(ext2_filsys fs)
retval = ext2fs_inode_size_set(fs, &inode, inode_size);
if (retval)
goto out_free;
- inode.i_ctime = fs->now ? fs->now : time(0);
+ inode.i_ctime = ext2fsP_get_time(fs);
}
for (rsv_off = 0, gdt_off = fs->desc_blocks,
gdt_blk = sb_blk + 1 + fs->desc_blocks;
rsv_off < sb->s_reserved_gdt_blocks;
rsv_off++, gdt_off++, gdt_blk++) {
- unsigned int three = 1, five = 5, seven = 7;
- unsigned int grp, last = 0;
+ dgrp_t three = 1, five = 5, seven = 7;
+ dgrp_t grp, last = 0;
int gdt_dirty = 0;
gdt_off %= apb;
@@ -183,7 +191,7 @@ errcode_t ext2fs_create_resize_inode(ext2_filsys fs)
goto out_dindir;
}
- while ((grp = list_backups(fs, &three, &five, &seven)) <
+ while ((grp = ext2fs_list_backups(fs, &three, &five, &seven)) <
fs->group_desc_count) {
blk_t expect = gdt_blk + grp * sb->s_blocks_per_group;
@@ -227,7 +235,10 @@ out_inode:
EXT2_I_SIZE(&inode));
#endif
if (inode_dirty) {
- inode.i_atime = inode.i_mtime = fs->now ? fs->now : time(0);
+ time_t now = ext2fsP_get_time(fs);
+
+ ext2fs_inode_xtime_set(&inode, i_atime, now);
+ ext2fs_inode_xtime_set(&inode, i_mtime, now);
retval2 = ext2fs_write_new_inode(fs, EXT2_RESIZE_INO, &inode);
if (!retval)
retval = retval2;
diff --git a/lib/ext2fs/swapfs.c b/lib/ext2fs/swapfs.c
index fe764b9e0..d8d214079 100644
--- a/lib/ext2fs/swapfs.c
+++ b/lib/ext2fs/swapfs.c
@@ -345,21 +345,21 @@ void ext2fs_swap_inode_full(ext2_filsys fs, struct ext2_inode_large *t,
return; /* Illegal inode extra_isize */
inode_size = EXT2_GOOD_OLD_INODE_SIZE + extra_isize;
- if (inode_includes(inode_size, i_checksum_hi))
+ if (ext2fs_inode_includes(inode_size, i_checksum_hi))
t->i_checksum_hi = ext2fs_swab16(f->i_checksum_hi);
- if (inode_includes(inode_size, i_ctime_extra))
+ if (ext2fs_inode_includes(inode_size, i_ctime_extra))
t->i_ctime_extra = ext2fs_swab32(f->i_ctime_extra);
- if (inode_includes(inode_size, i_mtime_extra))
+ if (ext2fs_inode_includes(inode_size, i_mtime_extra))
t->i_mtime_extra = ext2fs_swab32(f->i_mtime_extra);
- if (inode_includes(inode_size, i_atime_extra))
+ if (ext2fs_inode_includes(inode_size, i_atime_extra))
t->i_atime_extra = ext2fs_swab32(f->i_atime_extra);
- if (inode_includes(inode_size, i_crtime))
+ if (ext2fs_inode_includes(inode_size, i_crtime))
t->i_crtime = ext2fs_swab32(f->i_crtime);
- if (inode_includes(inode_size, i_crtime_extra))
+ if (ext2fs_inode_includes(inode_size, i_crtime_extra))
t->i_crtime_extra = ext2fs_swab32(f->i_crtime_extra);
- if (inode_includes(inode_size, i_version_hi))
+ if (ext2fs_inode_includes(inode_size, i_version_hi))
t->i_version_hi = ext2fs_swab32(f->i_version_hi);
- if (inode_includes(inode_size, i_projid))
+ if (ext2fs_inode_includes(inode_size, i_projid))
t->i_projid = ext2fs_swab32(f->i_projid);
/* catch new static fields added after i_projid */
EXT2FS_BUILD_BUG_ON(sizeof(struct ext2_inode_large) != 160);
diff --git a/lib/ext2fs/test_io.c b/lib/ext2fs/test_io.c
index 6843edbcf..0324e532d 100644
--- a/lib/ext2fs/test_io.c
+++ b/lib/ext2fs/test_io.c
@@ -23,14 +23,6 @@
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
-#ifdef HAVE_SYS_PRCTL_H
-#include <sys/prctl.h>
-#else
-#define PR_GET_DUMPABLE 3
-#endif
-#if (!defined(HAVE_PRCTL) && defined(linux))
-#include <sys/syscall.h>
-#endif
#include "ext2_fs.h"
#include "ext2fs.h"
@@ -144,31 +136,6 @@ static void test_abort(io_channel channel, unsigned long block)
abort();
}
-static char *safe_getenv(const char *arg)
-{
-#if !defined(_WIN32)
- if ((getuid() != geteuid()) || (getgid() != getegid()))
- return NULL;
-#endif
-#if HAVE_PRCTL
- if (prctl(PR_GET_DUMPABLE, 0, 0, 0, 0) == 0)
- return NULL;
-#else
-#if (defined(linux) && defined(SYS_prctl))
- if (syscall(SYS_prctl, PR_GET_DUMPABLE, 0, 0, 0, 0) == 0)
- return NULL;
-#endif
-#endif
-
-#if defined(HAVE_SECURE_GETENV)
- return secure_getenv(arg);
-#elif defined(HAVE___SECURE_GETENV)
- return __secure_getenv(arg);
-#else
- return getenv(arg);
-#endif
-}
-
static errcode_t test_open(const char *name, int flags, io_channel *channel)
{
io_channel io = NULL;
@@ -217,25 +184,25 @@ static errcode_t test_open(const char *name, int flags, io_channel *channel)
data->write_blk64 = test_io_cb_write_blk64;
data->outfile = NULL;
- if ((value = safe_getenv("TEST_IO_LOGFILE")) != NULL)
+ if ((value = ext2fs_safe_getenv("TEST_IO_LOGFILE")) != NULL)
data->outfile = fopen(value, "w");
if (!data->outfile)
data->outfile = stderr;
data->flags = 0;
- if ((value = safe_getenv("TEST_IO_FLAGS")) != NULL)
+ if ((value = ext2fs_safe_getenv("TEST_IO_FLAGS")) != NULL)
data->flags = strtoul(value, NULL, 0);
data->block = 0;
- if ((value = safe_getenv("TEST_IO_BLOCK")) != NULL)
+ if ((value = ext2fs_safe_getenv("TEST_IO_BLOCK")) != NULL)
data->block = strtoul(value, NULL, 0);
data->read_abort_count = 0;
- if ((value = safe_getenv("TEST_IO_READ_ABORT")) != NULL)
+ if ((value = ext2fs_safe_getenv("TEST_IO_READ_ABORT")) != NULL)
data->read_abort_count = strtoul(value, NULL, 0);
data->write_abort_count = 0;
- if ((value = safe_getenv("TEST_IO_WRITE_ABORT")) != NULL)
+ if ((value = ext2fs_safe_getenv("TEST_IO_WRITE_ABORT")) != NULL)
data->write_abort_count = strtoul(value, NULL, 0);
if (data->real) {
diff --git a/lib/ext2fs/tst_bitmaps.c b/lib/ext2fs/tst_bitmaps.c
index cb3c70dcd..eaf2c595f 100644
--- a/lib/ext2fs/tst_bitmaps.c
+++ b/lib/ext2fs/tst_bitmaps.c
@@ -140,7 +140,7 @@ unsigned long parse_ulong(const char *str, const char *cmd,
}
-int check_fs_open(char *name)
+int check_fs_open(const char *name)
{
if (!test_fs) {
com_err(name, 0, "Filesystem not open");
@@ -190,7 +190,8 @@ errout:
ext2fs_close_free(&test_fs);
}
-void setup_cmd(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void setup_cmd(int argc, ss_argv_t argv,
+ int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
int c, err;
@@ -271,7 +272,7 @@ void dump_bitmap(ext2fs_generic_bitmap bmap, unsigned int start, unsigned num)
free(buf);
}
-void dump_inode_bitmap_cmd(int argc, char **argv,
+void dump_inode_bitmap_cmd(int argc, ss_argv_t argv,
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
@@ -282,7 +283,7 @@ void dump_inode_bitmap_cmd(int argc, char **argv,
dump_bitmap(test_fs->inode_map, 1, test_fs->super->s_inodes_count);
}
-void dump_block_bitmap_cmd(int argc, char **argv,
+void dump_block_bitmap_cmd(int argc, ss_argv_t argv,
int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
@@ -294,7 +295,8 @@ void dump_block_bitmap_cmd(int argc, char **argv,
test_fs->super->s_blocks_count);
}
-void do_setb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_setb(int argc, ss_argv_t argv,
+ int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
unsigned int block, num;
@@ -333,7 +335,8 @@ void do_setb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
test_result, op_result);
}
-void do_clearb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_clearb(int argc, ss_argv_t argv,
+ int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
unsigned int block, num;
@@ -372,7 +375,8 @@ void do_clearb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
test_result, op_result);
}
-void do_testb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_testb(int argc, ss_argv_t argv,
+ int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
unsigned int block, num;
@@ -408,7 +412,8 @@ void do_testb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
printf("Block %u is %s\n", block, test_result ? "set" : "clear");
}
-void do_ffzb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_ffzb(int argc, ss_argv_t argv,
+ int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
unsigned int start, end;
@@ -442,7 +447,8 @@ void do_ffzb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
printf("First unmarked block is %llu\n", (unsigned long long) out);
}
-void do_ffsb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_ffsb(int argc, ss_argv_t argv,
+ int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
unsigned int start, end;
@@ -477,7 +483,8 @@ void do_ffsb(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
-void do_zerob(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_zerob(int argc, ss_argv_t argv,
+ int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
if (check_fs_open(argv[0]))
@@ -487,7 +494,8 @@ void do_zerob(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
ext2fs_clear_block_bitmap(test_fs->block_map);
}
-void do_seti(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_seti(int argc, ss_argv_t argv,
+ int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
unsigned int inode;
@@ -517,7 +525,8 @@ void do_seti(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
}
-void do_cleari(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_cleari(int argc, ss_argv_t argv,
+ int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
unsigned int inode;
@@ -547,7 +556,8 @@ void do_cleari(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
}
}
-void do_testi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_testi(int argc, ss_argv_t argv,
+ int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
unsigned int inode;
@@ -570,7 +580,8 @@ void do_testi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
printf("Inode %u is %s\n", inode, test_result ? "set" : "clear");
}
-void do_ffzi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_ffzi(int argc, ss_argv_t argv,
+ int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
unsigned int start, end;
@@ -604,7 +615,8 @@ void do_ffzi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
printf("First unmarked inode is %u\n", out);
}
-void do_ffsi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_ffsi(int argc, ss_argv_t argv,
+ int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
unsigned int start, end;
@@ -638,7 +650,8 @@ void do_ffsi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
printf("First marked inode is %u\n", out);
}
-void do_zeroi(int argc, char *argv[], int sci_idx EXT2FS_ATTR((unused)),
+void do_zeroi(int argc, ss_argv_t argv,
+ int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
if (check_fs_open(argv[0]))
diff --git a/lib/ext2fs/undo_io.c b/lib/ext2fs/undo_io.c
index f4a6d5267..a1bb4054f 100644
--- a/lib/ext2fs/undo_io.c
+++ b/lib/ext2fs/undo_io.c
@@ -809,7 +809,7 @@ static errcode_t undo_close(io_channel channel)
if (--channel->refcount > 0)
return 0;
/* Before closing write the file system identity */
- if (!getenv("UNDO_IO_SIMULATE_UNFINISHED"))
+ if (!ext2fs_safe_getenv("UNDO_IO_SIMULATE_UNFINISHED"))
data->hdr.state = ext2fs_cpu_to_le32(E2UNDO_STATE_FINISHED);
err = write_undo_indexes(data, 1);
ext2fs_remove_exit_fn(undo_atexit, data);
diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c
index 3171c7368..b06df0681 100644
--- a/lib/ext2fs/unix_io.c
+++ b/lib/ext2fs/unix_io.c
@@ -53,11 +53,6 @@
#ifdef HAVE_SYS_MOUNT_H
#include <sys/mount.h>
#endif
-#ifdef HAVE_SYS_PRCTL_H
-#include <sys/prctl.h>
-#else
-#define PR_GET_DUMPABLE 3
-#endif
#if HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
@@ -182,29 +177,6 @@ static errcode_t unix_get_stats(io_channel channel, io_stats *stats)
return retval;
}
-static char *safe_getenv(const char *arg)
-{
- if ((getuid() != geteuid()) || (getgid() != getegid()))
- return NULL;
-#ifdef HAVE_PRCTL
- if (prctl(PR_GET_DUMPABLE, 0, 0, 0, 0) == 0)
- return NULL;
-#else
-#if (defined(linux) && defined(SYS_prctl))
- if (syscall(SYS_prctl, PR_GET_DUMPABLE, 0, 0, 0, 0) == 0)
- return NULL;
-#endif
-#endif
-
-#if defined(HAVE_SECURE_GETENV)
- return secure_getenv(arg);
-#elif defined(HAVE___SECURE_GETENV)
- return __secure_getenv(arg);
-#else
- return getenv(arg);
-#endif
-}
-
/*
* Here are the raw I/O functions
*/
@@ -728,7 +700,7 @@ static errcode_t unix_open_channel(const char *name, int fd,
struct utsname ut;
#endif
- if (safe_getenv("UNIX_IO_FORCE_BOUNCE"))
+ if (ext2fs_safe_getenv("UNIX_IO_FORCE_BOUNCE"))
flags |= IO_FLAG_FORCE_BOUNCE;
#ifdef __linux__
@@ -761,6 +733,9 @@ static errcode_t unix_open_channel(const char *name, int fd,
io->refcount = 1;
io->flags = 0;
+ if (ext2fs_safe_getenv("UNIX_IO_NOZEROOUT"))
+ io->flags |= CHANNEL_FLAGS_NOZEROOUT;
+
memset(data, 0, sizeof(struct unix_private_data));
data->magic = EXT2_ET_MAGIC_UNIX_IO_CHANNEL;
data->io_stats.num_fields = 2;
@@ -783,20 +758,19 @@ static errcode_t unix_open_channel(const char *name, int fd,
* zero.
*/
if (ext2fs_fstat(data->dev, &st) == 0) {
- if (ext2fsP_is_disk_device(st.st_mode))
- io->flags |= CHANNEL_FLAGS_BLOCK_DEVICE;
- else
- io->flags |= CHANNEL_FLAGS_DISCARD_ZEROES;
- }
-
+ if (ext2fsP_is_disk_device(st.st_mode)) {
#ifdef BLKDISCARDZEROES
- {
- int zeroes = 0;
- if (ioctl(data->dev, BLKDISCARDZEROES, &zeroes) == 0 &&
- zeroes)
+ int zeroes = 0;
+
+ if (ioctl(data->dev, BLKDISCARDZEROES, &zeroes) == 0 &&
+ zeroes)
+ io->flags |= CHANNEL_FLAGS_DISCARD_ZEROES;
+#endif
+ io->flags |= CHANNEL_FLAGS_BLOCK_DEVICE;
+ } else {
io->flags |= CHANNEL_FLAGS_DISCARD_ZEROES;
+ }
}
-#endif
#if defined(__CYGWIN__)
/*
@@ -1344,12 +1318,15 @@ static errcode_t unix_discard(io_channel channel, unsigned long long block,
unsigned long long count)
{
struct unix_private_data *data;
- int ret;
+ int ret = EOPNOTSUPP;
EXT2_CHECK_MAGIC(channel, EXT2_ET_MAGIC_IO_CHANNEL);
data = (struct unix_private_data *) channel->private_data;
EXT2_CHECK_MAGIC(data, EXT2_ET_MAGIC_UNIX_IO_CHANNEL);
+ if (channel->flags & CHANNEL_FLAGS_NODISCARD)
+ goto unimplemented;
+
if (channel->flags & CHANNEL_FLAGS_BLOCK_DEVICE) {
#ifdef BLKDISCARD
__u64 range[2];
@@ -1376,8 +1353,10 @@ static errcode_t unix_discard(io_channel channel, unsigned long long block,
#endif
}
if (ret < 0) {
- if (errno == EOPNOTSUPP)
+ if (errno == EOPNOTSUPP) {
+ channel->flags |= CHANNEL_FLAGS_NODISCARD;
goto unimplemented;
+ }
return errno;
}
return 0;
@@ -1425,9 +1404,6 @@ static errcode_t unix_zeroout(io_channel channel, unsigned long long block,
data = (struct unix_private_data *) channel->private_data;
EXT2_CHECK_MAGIC(data, EXT2_ET_MAGIC_UNIX_IO_CHANNEL);
- if (safe_getenv("UNIX_IO_NOZEROOUT"))
- goto unimplemented;
-
if (!(channel->flags & CHANNEL_FLAGS_BLOCK_DEVICE)) {
/* Regular file, try to use truncate/punch/zero. */
struct stat statbuf;
@@ -1450,13 +1426,18 @@ static errcode_t unix_zeroout(io_channel channel, unsigned long long block,
}
}
+ if (channel->flags & CHANNEL_FLAGS_NOZEROOUT)
+ goto unimplemented;
+
ret = __unix_zeroout(data->dev,
(off_t)(block) * channel->block_size + data->offset,
(off_t)(count) * channel->block_size);
err:
if (ret < 0) {
- if (errno == EOPNOTSUPP)
+ if (errno == EOPNOTSUPP) {
+ channel->flags |= CHANNEL_FLAGS_NOZEROOUT;
goto unimplemented;
+ }
return errno;
}
return 0;
diff --git a/lib/ext2fs/windows_io.c b/lib/ext2fs/windows_io.c
index aefef115e..4bff07462 100644
--- a/lib/ext2fs/windows_io.c
+++ b/lib/ext2fs/windows_io.c
@@ -865,17 +865,6 @@ static errcode_t windows_write_byte(io_channel channel, unsigned long offset,
return EXT2_ET_UNIMPLEMENTED;
}
-HANDLE windows_get_handle(io_channel channel)
-{
- struct windows_private_data *data;
-
- EXT2_CHECK_MAGIC_RETURN(channel, EXT2_ET_MAGIC_IO_CHANNEL, INVALID_HANDLE_VALUE);
- data = (struct windows_private_data *) channel->private_data;
- EXT2_CHECK_MAGIC_RETURN(data, EXT2_ET_MAGIC_WINDOWS_IO_CHANNEL, INVALID_HANDLE_VALUE);
-
- return data->handle;
-}
-
/*
* Flush data buffers to disk.
*/
diff --git a/lib/ss/execute_cmd.c b/lib/ss/execute_cmd.c
index d092134a3..1f4399019 100644
--- a/lib/ss/execute_cmd.c
+++ b/lib/ss/execute_cmd.c
@@ -100,7 +100,7 @@ static int check_request_table(register ss_request_table *rqtbl, int argc,
for (name = request->command_names; *name; name++)
if (!strcmp(*name, string)) {
info->current_request = request->command_names[0];
- (request->function)(argc, (const char *const *) argv,
+ (request->function)(argc, (ss_argv_t) argv,
sci_idx,info->info_ptr);
info->current_request = (char *)NULL;
return(0);
diff --git a/lib/ss/help.c b/lib/ss/help.c
index 54c78f239..d3319b697 100644
--- a/lib/ss/help.c
+++ b/lib/ss/help.c
@@ -34,7 +34,7 @@
#endif
#include "ss_internal.h"
-void ss_help(int argc, char const * const *argv, int sci_idx, pointer info_ptr)
+void ss_help(int argc, ss_argv_t argv, int sci_idx, pointer info_ptr)
{
char *buffer;
char const *request_name;
diff --git a/lib/ss/list_rqs.c b/lib/ss/list_rqs.c
index 89e37bb20..408d3ac3f 100644
--- a/lib/ss/list_rqs.c
+++ b/lib/ss/list_rqs.c
@@ -22,7 +22,7 @@
typedef void sigret_t;
void ss_list_requests(int argc __SS_ATTR((unused)),
- const char * const *argv __SS_ATTR((unused)),
+ ss_argv_t argv __SS_ATTR((unused)),
int sci_idx, void *infop __SS_ATTR((unused)))
{
ss_request_entry *entry;
diff --git a/lib/ss/listen.c b/lib/ss/listen.c
index 9578c3e82..df1311d13 100644
--- a/lib/ss/listen.c
+++ b/lib/ss/listen.c
@@ -135,7 +135,7 @@ void ss_abort_subsystem(int sci_idx, int code)
}
void ss_quit(int argc __SS_ATTR((unused)),
- const char * const *argv __SS_ATTR((unused)),
+ ss_argv_t argv __SS_ATTR((unused)),
int sci_idx, pointer infop __SS_ATTR((unused)))
{
ss_abort_subsystem(sci_idx, 0);
diff --git a/lib/ss/requests.c b/lib/ss/requests.c
index 33ce5d206..6a8d00bee 100644
--- a/lib/ss/requests.c
+++ b/lib/ss/requests.c
@@ -24,7 +24,7 @@
* ss_self_identify -- assigned by default to the "." request
*/
void ss_self_identify(int argc __SS_ATTR((unused)),
- const char * const *argv __SS_ATTR((unused)),
+ ss_argv_t argv __SS_ATTR((unused)),
int sci_idx, void *infop __SS_ATTR((unused)))
{
register ss_data *info = ss_info(sci_idx);
@@ -36,7 +36,7 @@ void ss_self_identify(int argc __SS_ATTR((unused)),
* ss_subsystem_name -- print name of subsystem
*/
void ss_subsystem_name(int argc __SS_ATTR((unused)),
- const char * const *argv __SS_ATTR((unused)),
+ ss_argv_t argv __SS_ATTR((unused)),
int sci_idx,
void *infop __SS_ATTR((unused)))
{
@@ -47,7 +47,7 @@ void ss_subsystem_name(int argc __SS_ATTR((unused)),
* ss_subsystem_version -- print version of subsystem
*/
void ss_subsystem_version(int argc __SS_ATTR((unused)),
- const char * const *argv __SS_ATTR((unused)),
+ ss_argv_t argv __SS_ATTR((unused)),
int sci_idx,
void *infop __SS_ATTR((unused)))
{
@@ -59,7 +59,7 @@ void ss_subsystem_version(int argc __SS_ATTR((unused)),
* set up as (dont_list,dont_summarize))
*/
void ss_unimplemented(int argc __SS_ATTR((unused)),
- const char * const *argv __SS_ATTR((unused)),
+ ss_argv_t argv __SS_ATTR((unused)),
int sci_idx, void *infop __SS_ATTR((unused)))
{
ss_perror(sci_idx, SS_ET_UNIMPLEMENTED, "");
diff --git a/lib/ss/ss.h b/lib/ss/ss.h
index 7333ffc90..e53da5093 100644
--- a/lib/ss/ss.h
+++ b/lib/ss/ss.h
@@ -26,7 +26,8 @@
#include <ss/ss_err.h>
#define __SS_CONST const
-#define __SS_PROTO (int, const char * const *, int, void *)
+typedef char * const *ss_argv_t;
+#define __SS_PROTO (int, ss_argv_t, int, void *)
#ifdef __GNUC__
#define __SS_ATTR(x) __attribute__(x)
@@ -79,14 +80,11 @@ int ss_execute_line(int, char *);
void ss_add_request_table(int, ss_request_table *, int, int *);
void ss_delete_request_table(int, ss_request_table *, int *);
void ss_abort_subsystem(int sci_idx, int code);
-void ss_quit(int argc, const char * const *argv, int sci_idx, void *infop);
-void ss_self_identify(int argc, const char * const *argv, int sci_idx, void *infop);
-void ss_subsystem_name(int argc, const char * const *argv,
- int sci_idx, void *infop);
-void ss_subsystem_version(int argc, const char * const *argv,
- int sci_idx, void *infop);
-void ss_unimplemented(int argc, const char * const *argv,
- int sci_idx, void *infop);
+void ss_quit(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void ss_self_identify(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void ss_subsystem_name(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void ss_subsystem_version(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void ss_unimplemented(int argc, ss_argv_t argv, int sci_idx, void *infop);
void ss_set_prompt(int sci_idx, char *new_prompt);
char *ss_get_prompt(int sci_idx);
void ss_get_readline(int sci_idx);
diff --git a/lib/ss/ss_internal.h b/lib/ss/ss_internal.h
index 7b1d23bd2..e2a8d75ad 100644
--- a/lib/ss/ss_internal.h
+++ b/lib/ss/ss_internal.h
@@ -86,7 +86,7 @@ int ss_execute_line(int sci_idx, char *line_ptr);
char **ss_parse(int sci_idx, char *line_ptr, int *argc_ptr);
ss_abbrev_info *ss_abbrev_initialize(char *, int *);
void ss_page_stdin(void) __SS_ATTR((noreturn));
-void ss_list_requests(int, char const * const *, int, pointer);
+void ss_list_requests(int argc, ss_argv_t argv, int sci_idex, void *infop);
int ss_execute_command(int sci_idx, char *argv[]);
int ss_pager_create(void);
char *ss_safe_getenv(const char *arg);
diff --git a/lib/ss/test_ss.c b/lib/ss/test_ss.c
index 53ca99fc4..1258000ee 100644
--- a/lib/ss/test_ss.c
+++ b/lib/ss/test_ss.c
@@ -136,9 +136,9 @@ int main(int argc, char **argv)
}
-void test_cmd (argc, argv)
- int argc;
- char **argv;
+void test_cmd(int argc, ss_argv_t argv,
+ int sci_idx __SS_ATTR((unused)),
+ void *infop __SS_ATTR((unused)))
{
printf("Hello, world!\n");
printf("Args: ");
diff --git a/lib/support/mkquota.c b/lib/support/mkquota.c
index 9339c9943..81cfbf1fa 100644
--- a/lib/support/mkquota.c
+++ b/lib/support/mkquota.c
@@ -269,7 +269,7 @@ static inline qid_t get_qid(struct ext2_inode_large *inode, enum quota_type qtyp
case PRJQUOTA:
inode_size = EXT2_GOOD_OLD_INODE_SIZE +
inode->i_extra_isize;
- if (inode_includes(inode_size, i_projid))
+ if (ext2fs_inode_includes(inode_size, i_projid))
return inode_projid(*inode);
return 0;
default:
diff --git a/lib/support/plausible.c b/lib/support/plausible.c
index 65a6b2e14..eccba22a3 100644
--- a/lib/support/plausible.c
+++ b/lib/support/plausible.c
@@ -108,18 +108,15 @@ static void print_ext2_info(const char *device)
return;
sb = fs->super;
- if (sb->s_mtime) {
- tm = sb->s_mtime;
+ if ((tm = ext2fs_get_tstamp(sb, s_mtime))) {
if (sb->s_last_mounted[0])
printf(_("\tlast mounted on %.*s on %s"),
EXT2_LEN_STR(sb->s_last_mounted), ctime(&tm));
else
printf(_("\tlast mounted on %s"), ctime(&tm));
- } else if (sb->s_mkfs_time) {
- tm = sb->s_mkfs_time;
+ } else if ((tm = ext2fs_get_tstamp(sb, s_mkfs_time))) {
printf(_("\tcreated on %s"), ctime(&tm));
- } else if (sb->s_wtime) {
- tm = sb->s_wtime;
+ } else if ((tm = ext2fs_get_tstamp(sb, s_wtime))) {
printf(_("\tlast modified on %s"), ctime(&tm));
}
ext2fs_close_free(&fs);
diff --git a/lib/support/quotaio.c b/lib/support/quotaio.c
index b41bb7498..916e28cf5 100644
--- a/lib/support/quotaio.c
+++ b/lib/support/quotaio.c
@@ -272,6 +272,7 @@ static errcode_t quota_inode_init_new(ext2_filsys fs, ext2_ino_t ino)
{
struct ext2_inode inode;
errcode_t err = 0;
+ time_t now;
err = ext2fs_read_inode(fs, ino, &inode);
if (err) {
@@ -287,8 +288,10 @@ static errcode_t quota_inode_init_new(ext2_filsys fs, ext2_ino_t ino)
memset(&inode, 0, sizeof(struct ext2_inode));
ext2fs_iblk_set(fs, &inode, 0);
- inode.i_atime = inode.i_mtime =
- inode.i_ctime = fs->now ? fs->now : time(0);
+ now = fs->now ? fs->now : time(0);
+ ext2fs_inode_xtime_set(&inode, i_atime, now);
+ ext2fs_inode_xtime_set(&inode, i_ctime, now);
+ ext2fs_inode_xtime_set(&inode, i_mtime, now);
inode.i_links_count = 1;
inode.i_mode = LINUX_S_IFREG | 0600;
inode.i_flags |= EXT2_IMMUTABLE_FL;
diff --git a/lib/support/quotaio.h b/lib/support/quotaio.h
index 84fac35dd..390f7dc92 100644
--- a/lib/support/quotaio.h
+++ b/lib/support/quotaio.h
@@ -16,8 +16,7 @@
* AND/OR
* quota_data_add/quota_data_sub/quota_data_inodes();
* }
- * quota_write_inode(qctx, USRQUOTA);
- * quota_write_inode(qctx, GRPQUOTA);
+ * quota_write_inode(qctx, (1 << USRQUOTA) | (1 << GRPQUOTA));
* quota_release_context(&qctx);
* }
*
@@ -223,7 +222,7 @@ void quota_data_add(quota_ctx_t qctx, struct ext2_inode_large *inode,
ext2_ino_t ino, qsize_t space);
void quota_data_sub(quota_ctx_t qctx, struct ext2_inode_large *inode,
ext2_ino_t ino, qsize_t space);
-errcode_t quota_write_inode(quota_ctx_t qctx, enum quota_type qtype);
+errcode_t quota_write_inode(quota_ctx_t qctx, unsigned int qtype_bits);
/* Flags for quota_read_all_dquots() */
#define QREAD_USAGE 0x01
#define QREAD_LIMITS 0x02
diff --git a/lib/support/sort_r.h b/lib/support/sort_r.h
index 8473ca834..660294e0a 100644
--- a/lib/support/sort_r.h
+++ b/lib/support/sort_r.h
@@ -267,7 +267,7 @@ static _SORT_R_INLINE void sort_r_simple(void *base, size_t nel, size_t w,
#if defined _SORT_R_GNU
typedef int(* __compar_d_fn_t)(const void *, const void *, void *);
- extern void qsort_r(void *base, size_t nel, size_t width,
+ extern void (qsort_r)(void *base, size_t nel, size_t width,
__compar_d_fn_t __compar, void *arg)
__attribute__((nonnull (1, 4)));
diff --git a/misc/Makefile.in b/misc/Makefile.in
index e5420bbdb..814e7064d 100644
--- a/misc/Makefile.in
+++ b/misc/Makefile.in
@@ -56,7 +56,7 @@ LPROGS= @E2INITRD_PROG@
TUNE2FS_OBJS= tune2fs.o util.o journal.o recovery.o revoke.o
MKLPF_OBJS= mklost+found.o
MKE2FS_OBJS= mke2fs.o util.o default_profile.o mk_hugefiles.o \
- create_inode.o
+ create_inode.o create_inode_libarchive.o
CHATTR_OBJS= chattr.o
LSATTR_OBJS= lsattr.o
UUIDGEN_OBJS= uuidgen.o
@@ -80,7 +80,8 @@ PROFILED_MKLPF_OBJS= profiled/mklost+found.o
PROFILED_MKE2FS_OBJS= profiled/mke2fs.o profiled/util.o \
profiled/default_profile.o \
profiled/mk_hugefiles.o \
- profiled/create_inode.o
+ profiled/create_inode.o \
+ profiled/create_inode_libarchive.o
PROFILED_CHATTR_OBJS= profiled/chattr.o
PROFILED_LSATTR_OBJS= profiled/lsattr.o
PROFILED_UUIDGEN_OBJS= profiled/uuidgen.o
@@ -281,7 +282,7 @@ mke2fs: $(MKE2FS_OBJS) $(DEPLIBS) $(LIBE2P) $(DEPLIBBLKID) $(DEPLIBUUID) \
$(E) " LD $@"
$(Q) $(CC) $(ALL_LDFLAGS) -o mke2fs $(MKE2FS_OBJS) $(LIBS) $(LIBBLKID) \
$(LIBUUID) $(LIBEXT2FS) $(LIBE2P) $(LIBINTL) \
- $(SYSLIBS) $(LIBMAGIC)
+ $(SYSLIBS) $(LIBMAGIC) $(LIBARCHIVE)
mke2fs.static: $(MKE2FS_OBJS) $(STATIC_DEPLIBS) $(STATIC_LIBE2P) $(DEPSTATIC_LIBUUID) \
$(DEPSTATIC_LIBBLKID)
@@ -857,6 +858,16 @@ create_inode.o: $(srcdir)/create_inode.c $(top_builddir)/lib/config.h \
$(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/ext2fs/fiemap.h \
$(srcdir)/create_inode.h $(top_srcdir)/lib/e2p/e2p.h \
$(top_srcdir)/lib/support/nls-enable.h
+create_inode_libarchive.o: $(srcdir)/create_inode_libarchive.c \
+ $(top_builddir)/lib/config.h \
+ $(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/ext2fs/ext2fs.h \
+ $(top_builddir)/lib/ext2fs/ext2_types.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \
+ $(top_srcdir)/lib/ext2fs/ext3_extents.h $(top_srcdir)/lib/et/com_err.h \
+ $(top_srcdir)/lib/ext2fs/ext2_io.h $(top_builddir)/lib/ext2fs/ext2_err.h \
+ $(top_srcdir)/lib/ext2fs/ext2_ext_attr.h $(top_srcdir)/lib/ext2fs/hashmap.h \
+ $(top_srcdir)/lib/ext2fs/bitops.h $(top_srcdir)/lib/ext2fs/fiemap.h \
+ $(srcdir)/create_inode.h $(top_srcdir)/lib/e2p/e2p.h \
+ $(top_srcdir)/lib/support/nls-enable.h
fuse2fs.o: $(srcdir)/fuse2fs.c $(top_builddir)/lib/config.h \
$(top_builddir)/lib/dirpaths.h $(top_srcdir)/lib/ext2fs/ext2fs.h \
$(top_builddir)/lib/ext2fs/ext2_types.h $(top_srcdir)/lib/ext2fs/ext2_fs.h \
diff --git a/misc/create_inode.c b/misc/create_inode.c
index a3a34cd9a..e2676a057 100644
--- a/misc/create_inode.c
+++ b/misc/create_inode.c
@@ -39,6 +39,8 @@
#include "create_inode.h"
#include "support/nls-enable.h"
+#include "create_inode_libarchive.h"
+
/* 64KiB is the minimum blksize to best minimize system call overhead. */
#define COPY_FILE_BUFLEN 65536
@@ -69,7 +71,7 @@ static int ext2_file_type(unsigned int mode)
}
/* Link an inode number to a directory */
-static errcode_t add_link(ext2_filsys fs, ext2_ino_t parent_ino,
+errcode_t add_link(ext2_filsys fs, ext2_ino_t parent_ino,
ext2_ino_t ino, const char *name)
{
struct ext2_inode inode;
@@ -107,9 +109,16 @@ static errcode_t add_link(ext2_filsys fs, ext2_ino_t parent_ino,
return retval;
}
+static time_t clamped_time(ext2_filsys fs, time_t t)
+{
+ if ((fs->flags2 & EXT2_FLAG2_USE_FAKE_TIME) && t > fs->now)
+ return fs->now;
+ return t;
+}
+
/* Set the uid, gid, mode and time for the inode */
-static errcode_t set_inode_extra(ext2_filsys fs, ext2_ino_t ino,
- struct stat *st)
+errcode_t set_inode_extra(ext2_filsys fs, ext2_ino_t ino,
+ const struct stat *st)
{
errcode_t retval;
struct ext2_inode inode;
@@ -125,9 +134,9 @@ static errcode_t set_inode_extra(ext2_filsys fs, ext2_ino_t ino,
inode.i_gid = st->st_gid;
ext2fs_set_i_gid_high(inode, st->st_gid >> 16);
inode.i_mode = (LINUX_S_IFMT & inode.i_mode) | (~S_IFMT & st->st_mode);
- inode.i_atime = st->st_atime;
- inode.i_mtime = st->st_mtime;
- inode.i_ctime = st->st_ctime;
+ ext2fs_inode_xtime_set(&inode, i_atime, clamped_time(fs, st->st_atime));
+ ext2fs_inode_xtime_set(&inode, i_ctime, clamped_time(fs, st->st_ctime));
+ ext2fs_inode_xtime_set(&inode, i_mtime, clamped_time(fs, st->st_mtime));
retval = ext2fs_write_inode(fs, ino, &inode);
if (retval)
@@ -256,6 +265,7 @@ errcode_t do_mknod_internal(ext2_filsys fs, ext2_ino_t cwd, const char *name,
struct ext2_inode inode;
unsigned long devmajor, devminor, mode;
int filetype;
+ time_t now;
switch(st_mode & S_IFMT) {
case S_IFCHR:
@@ -309,8 +319,10 @@ errcode_t do_mknod_internal(ext2_filsys fs, ext2_ino_t cwd, const char *name,
ext2fs_inode_alloc_stats2(fs, ino, +1, 0);
memset(&inode, 0, sizeof(inode));
inode.i_mode = mode;
- inode.i_atime = inode.i_ctime = inode.i_mtime =
- fs->now ? fs->now : time(0);
+ now = fs->now ? fs->now : time(0);
+ ext2fs_inode_xtime_set(&inode, i_atime, now);
+ ext2fs_inode_xtime_set(&inode, i_ctime, now);
+ ext2fs_inode_xtime_set(&inode, i_mtime, now);
if (filetype != S_IFIFO) {
devmajor = major(st_rdev);
@@ -631,6 +643,7 @@ errcode_t do_write_internal(ext2_filsys fs, ext2_ino_t cwd, const char *src,
errcode_t retval;
struct ext2_inode inode;
char *cp;
+ time_t now;
fd = ext2fs_open_file(src, O_RDONLY, 0);
if (fd < 0) {
@@ -684,8 +697,10 @@ errcode_t do_write_internal(ext2_filsys fs, ext2_ino_t cwd, const char *src,
ext2fs_inode_alloc_stats2(fs, newfile, +1, 0);
memset(&inode, 0, sizeof(inode));
inode.i_mode = (statbuf.st_mode & ~S_IFMT) | LINUX_S_IFREG;
- inode.i_atime = inode.i_ctime = inode.i_mtime =
- fs->now ? fs->now : time(0);
+ now = fs->now ? fs->now : time(0);
+ ext2fs_inode_xtime_set(&inode, i_atime, now);
+ ext2fs_inode_xtime_set(&inode, i_ctime, now);
+ ext2fs_inode_xtime_set(&inode, i_mtime, now);
inode.i_links_count = 1;
retval = ext2fs_inode_size_set(fs, &inode, statbuf.st_size);
if (retval)
@@ -720,12 +735,6 @@ out:
return retval;
}
-struct file_info {
- char *path;
- size_t path_len;
- size_t path_max_len;
-};
-
static errcode_t path_append(struct file_info *target, const char *file)
{
if (strlen(file) + target->path_len + 1 > target->path_max_len) {
@@ -1044,7 +1053,7 @@ out:
}
errcode_t populate_fs2(ext2_filsys fs, ext2_ino_t parent_ino,
- const char *source_dir, ext2_ino_t root,
+ const char *source, ext2_ino_t root,
struct fs_ops_callbacks *fs_callbacks)
{
struct file_info file_info;
@@ -1069,14 +1078,35 @@ errcode_t populate_fs2(ext2_filsys fs, ext2_ino_t parent_ino,
file_info.path_max_len = 255;
file_info.path = calloc(file_info.path_max_len, 1);
- retval = set_inode_xattr(fs, root, source_dir);
+ /* interpret input as tarball either if it's "-" (stdin) or if it's
+ * a regular file (or a symlink pointing to a regular file)
+ */
+ if (strcmp(source, "-") == 0) {
+ retval = __populate_fs_from_tar(fs, parent_ino, NULL, root, &hdlinks,
+ &file_info, fs_callbacks);
+ goto out;
+ }
+
+ struct stat st;
+ if (stat(source, &st)) {
+ retval = errno;
+ com_err(__func__, retval, _("while calling stat"));
+ return retval;
+ }
+ if (S_ISREG(st.st_mode)) {
+ retval = __populate_fs_from_tar(fs, parent_ino, source, root, &hdlinks,
+ &file_info, fs_callbacks);
+ goto out;
+ }
+
+ retval = set_inode_xattr(fs, root, source);
if (retval) {
com_err(__func__, retval,
_("while copying xattrs on root directory"));
goto out;
}
- retval = __populate_fs(fs, parent_ino, source_dir, root, &hdlinks,
+ retval = __populate_fs(fs, parent_ino, source, root, &hdlinks,
&file_info, fs_callbacks);
out:
@@ -1086,7 +1116,7 @@ out:
}
errcode_t populate_fs(ext2_filsys fs, ext2_ino_t parent_ino,
- const char *source_dir, ext2_ino_t root)
+ const char *source, ext2_ino_t root)
{
- return populate_fs2(fs, parent_ino, source_dir, root, NULL);
+ return populate_fs2(fs, parent_ino, source, root, NULL);
}
diff --git a/misc/create_inode.h b/misc/create_inode.h
index b5eeb420f..c75d68553 100644
--- a/misc/create_inode.h
+++ b/misc/create_inode.h
@@ -22,6 +22,12 @@ struct hdlinks_s
struct hdlink_s *hdl;
};
+struct file_info {
+ char *path;
+ size_t path_len;
+ size_t path_max_len;
+};
+
#define HDLINK_CNT (4)
struct fs_ops_callbacks {
@@ -53,5 +59,9 @@ extern errcode_t do_mkdir_internal(ext2_filsys fs, ext2_ino_t cwd,
extern errcode_t do_write_internal(ext2_filsys fs, ext2_ino_t cwd,
const char *src, const char *dest,
ext2_ino_t root);
+extern errcode_t add_link(ext2_filsys fs, ext2_ino_t parent_ino,
+ ext2_ino_t ino, const char *name);
+extern errcode_t set_inode_extra(ext2_filsys fs, ext2_ino_t ino,
+ const struct stat *st);
#endif /* _CREATE_INODE_H */
diff --git a/misc/create_inode_libarchive.c b/misc/create_inode_libarchive.c
new file mode 100644
index 000000000..d7822d8af
--- /dev/null
+++ b/misc/create_inode_libarchive.c
@@ -0,0 +1,705 @@
+/*
+ * create_inode_libarchive.c --- create an inode from libarchive input
+ *
+ * Copyright (C) 2023 Johannes Schauer Marin Rodrigues <josch@debian.org>
+ *
+ * %Begin-Header%
+ * This file may be redistributed under the terms of the GNU library
+ * General Public License, version 2.
+ * %End-Header%
+ */
+
+#define _FILE_OFFSET_BITS 64
+#define _LARGEFILE64_SOURCE 1
+#define _GNU_SOURCE 1
+
+#include "config.h"
+#include <ext2fs/ext2_types.h>
+#include "create_inode.h"
+#include "create_inode_libarchive.h"
+#include "support/nls-enable.h"
+
+#ifdef HAVE_ARCHIVE_H
+
+/* 64KiB is the minimum blksize to best minimize system call overhead. */
+//#define COPY_FILE_BUFLEN 65536
+//#define COPY_FILE_BUFLEN 1048576
+#define COPY_FILE_BUFLEN 16777216
+
+#include <archive.h>
+#include <archive_entry.h>
+#include <libgen.h>
+#include <locale.h>
+
+static const char *(*dl_archive_entry_hardlink)(struct archive_entry *);
+static const char *(*dl_archive_entry_pathname)(struct archive_entry *);
+static const struct stat *(*dl_archive_entry_stat)(struct archive_entry *);
+static const char *(*dl_archive_entry_symlink)(struct archive_entry *);
+static int (*dl_archive_entry_xattr_count)(struct archive_entry *);
+static int (*dl_archive_entry_xattr_next)(struct archive_entry *, const char **,
+ const void **, size_t *);
+static int (*dl_archive_entry_xattr_reset)(struct archive_entry *);
+static const char *(*dl_archive_error_string)(struct archive *);
+static int (*dl_archive_read_close)(struct archive *);
+static la_ssize_t (*dl_archive_read_data)(struct archive *, void *, size_t);
+static int (*dl_archive_read_free)(struct archive *);
+static struct archive *(*dl_archive_read_new)(void);
+static int (*dl_archive_read_next_header)(struct archive *,
+ struct archive_entry **);
+static int (*dl_archive_read_open_filename)(struct archive *,
+ const char *filename, size_t);
+static int (*dl_archive_read_support_filter_all)(struct archive *);
+static int (*dl_archive_read_support_format_all)(struct archive *);
+
+#ifdef HAVE_DLOPEN
+#include <dlfcn.h>
+
+static void *libarchive_handle;
+
+#if defined(__FreeBSD__)
+#define LIBARCHIVE_SO "libarchive.so.7"
+#else
+#define LIBARCHIVE_SO "libarchive.so.13"
+#endif
+
+static int libarchive_available(void)
+{
+ if (!libarchive_handle) {
+ libarchive_handle = dlopen(LIBARCHIVE_SO, RTLD_NOW);
+ if (!libarchive_handle)
+ return 0;
+
+ dl_archive_entry_hardlink =
+ (const char *(*)(struct archive_entry *))dlsym(
+ libarchive_handle, "archive_entry_hardlink");
+ if (!dl_archive_entry_hardlink)
+ return 0;
+ dl_archive_entry_pathname =
+ (const char *(*)(struct archive_entry *))dlsym(
+ libarchive_handle, "archive_entry_pathname");
+ if (!dl_archive_entry_pathname)
+ return 0;
+ dl_archive_entry_stat =
+ (const struct stat *(*)(struct archive_entry *))dlsym(
+ libarchive_handle, "archive_entry_stat");
+ if (!dl_archive_entry_stat)
+ return 0;
+ dl_archive_entry_symlink =
+ (const char *(*)(struct archive_entry *))dlsym(
+ libarchive_handle, "archive_entry_symlink");
+ if (!dl_archive_entry_symlink)
+ return 0;
+ dl_archive_entry_xattr_count =
+ (int (*)(struct archive_entry *))dlsym(
+ libarchive_handle, "archive_entry_xattr_count");
+ if (!dl_archive_entry_xattr_count)
+ return 0;
+ dl_archive_entry_xattr_next = (int (*)(
+ struct archive_entry *, const char **, const void **,
+ size_t *))dlsym(libarchive_handle,
+ "archive_entry_xattr_next");
+ if (!dl_archive_entry_xattr_next)
+ return 0;
+ dl_archive_entry_xattr_reset =
+ (int (*)(struct archive_entry *))dlsym(
+ libarchive_handle, "archive_entry_xattr_reset");
+ if (!dl_archive_entry_xattr_reset)
+ return 0;
+ dl_archive_error_string =
+ (const char *(*)(struct archive *))dlsym(
+ libarchive_handle, "archive_error_string");
+ if (!dl_archive_error_string)
+ return 0;
+ dl_archive_read_close = (int (*)(struct archive *))dlsym(
+ libarchive_handle, "archive_read_close");
+ if (!dl_archive_read_close)
+ return 0;
+ dl_archive_read_data =
+ (la_ssize_t(*)(struct archive *, void *, size_t))dlsym(
+ libarchive_handle, "archive_read_data");
+ if (!dl_archive_read_data)
+ return 0;
+ dl_archive_read_free = (int (*)(struct archive *))dlsym(
+ libarchive_handle, "archive_read_free");
+ if (!dl_archive_read_free)
+ return 0;
+ dl_archive_read_new = (struct archive * (*)(void))
+ dlsym(libarchive_handle, "archive_read_new");
+ if (!dl_archive_read_new)
+ return 0;
+ dl_archive_read_next_header = (int (*)(struct archive *,
+ struct archive_entry **))
+ dlsym(libarchive_handle, "archive_read_next_header");
+ if (!dl_archive_read_next_header)
+ return 0;
+ dl_archive_read_open_filename =
+ (int (*)(struct archive *, const char *filename,
+ size_t))dlsym(libarchive_handle,
+ "archive_read_open_filename");
+ if (!dl_archive_read_open_filename)
+ return 0;
+ dl_archive_read_support_filter_all =
+ (int (*)(struct archive *))dlsym(
+ libarchive_handle,
+ "archive_read_support_filter_all");
+ if (!dl_archive_read_support_filter_all)
+ return 0;
+ dl_archive_read_support_format_all =
+ (int (*)(struct archive *))dlsym(
+ libarchive_handle,
+ "archive_read_support_format_all");
+ if (!dl_archive_read_support_format_all)
+ return 0;
+ }
+
+ return 1;
+}
+#else
+static int libarchive_available(void)
+{
+ dl_archive_entry_hardlink = archive_entry_hardlink;
+ dl_archive_entry_pathname = archive_entry_pathname;
+ dl_archive_entry_stat = archive_entry_stat;
+ dl_archive_entry_symlink = archive_entry_symlink;
+ dl_archive_entry_xattr_count = archive_entry_xattr_count;
+ dl_archive_entry_xattr_next = archive_entry_xattr_next;
+ dl_archive_entry_xattr_reset = archive_entry_xattr_reset;
+ dl_archive_error_string = archive_error_string;
+ dl_archive_read_close = archive_read_close;
+ dl_archive_read_data = archive_read_data;
+ dl_archive_read_free = archive_read_free;
+ dl_archive_read_new = archive_read_new;
+ dl_archive_read_next_header = archive_read_next_header;
+ dl_archive_read_open_filename = archive_read_open_filename;
+ dl_archive_read_support_filter_all = archive_read_support_filter_all;
+ dl_archive_read_support_format_all = archive_read_support_format_all;
+
+ return 1;
+}
+#endif
+
+static errcode_t __find_path(ext2_filsys fs, ext2_ino_t root, const char *name,
+ ext2_ino_t *inode)
+{
+ errcode_t retval = 0;
+ ext2_ino_t tmpino;
+ char *p, *n, *n2 = strdup(name);
+
+ if (n2 == NULL) {
+ retval = errno;
+ goto out;
+ }
+ n = n2;
+ *inode = root;
+ /* any number of leading slashes */
+ while (*n == '/')
+ n++;
+ while (*n) {
+ /* replace the next slash by a NULL, if any */
+ if ((p = strchr(n, '/')))
+ (*p) = 0;
+ /* find the inode of the next component */
+ retval = ext2fs_lookup(fs, *inode, n, strlen(n), 0, &tmpino);
+ if (retval)
+ goto out;
+ *inode = tmpino;
+ /* continue the search at the character after the slash */
+ if (p)
+ n = p + 1;
+ else
+ break;
+ }
+
+out:
+ free(n2);
+ return retval;
+}
+
+/* Rounds quantity up to a multiple of size. size should be a power of 2 */
+static inline unsigned int __round_up(unsigned int quantity, unsigned int size)
+{
+ return (quantity + (size - 1)) & ~(size - 1);
+}
+
+static int remove_inode(ext2_filsys fs, ext2_ino_t ino)
+{
+ errcode_t ret = 0;
+ struct ext2_inode_large inode;
+
+ memset(&inode, 0, sizeof(inode));
+ ret = ext2fs_read_inode_full(fs, ino, (struct ext2_inode *)&inode,
+ sizeof(inode));
+ if (ret)
+ goto out;
+
+ switch (inode.i_links_count) {
+ case 0:
+ return 0; /* XXX: already done? */
+ case 1:
+ inode.i_links_count--;
+ inode.i_dtime = fs->now ? fs->now : time(0);
+ break;
+ default:
+ inode.i_links_count--;
+ }
+
+ if (inode.i_links_count)
+ goto write_out;
+
+ /* Nobody holds this file; free its blocks! */
+ ret = ext2fs_free_ext_attr(fs, ino, &inode);
+ if (ret)
+ goto write_out;
+
+ if (ext2fs_inode_has_valid_blocks2(fs, (struct ext2_inode *)&inode)) {
+ ret = ext2fs_punch(fs, ino, (struct ext2_inode *)&inode, NULL,
+ 0, ~0ULL);
+ if (ret)
+ goto write_out;
+ }
+
+ ext2fs_inode_alloc_stats2(fs, ino, -1, LINUX_S_ISDIR(inode.i_mode));
+
+write_out:
+ ret = ext2fs_write_inode_full(fs, ino, (struct ext2_inode *)&inode,
+ sizeof(inode));
+ if (ret)
+ goto out;
+out:
+ return ret;
+}
+
+static errcode_t copy_file_chunk_tar(ext2_filsys fs, struct archive *archive,
+ ext2_file_t e2_file, off_t start,
+ off_t end, char *buf, char *zerobuf)
+{
+ off_t off, bpos;
+ ssize_t got, blen;
+ unsigned int written;
+ char *ptr;
+ errcode_t err = 0;
+
+ for (off = start; off < end; off += COPY_FILE_BUFLEN) {
+ got = dl_archive_read_data(archive, buf, COPY_FILE_BUFLEN);
+ if (got < 0) {
+ err = errno;
+ goto fail;
+ }
+ for (bpos = 0, ptr = buf; bpos < got; bpos += fs->blocksize) {
+ blen = fs->blocksize;
+ if (blen > got - bpos)
+ blen = got - bpos;
+ if (memcmp(ptr, zerobuf, blen) == 0) {
+ ptr += blen;
+ continue;
+ }
+ err = ext2fs_file_llseek(e2_file, off + bpos,
+ EXT2_SEEK_SET, NULL);
+ if (err)
+ goto fail;
+ while (blen > 0) {
+ err = ext2fs_file_write(e2_file, ptr, blen,
+ &written);
+ if (err)
+ goto fail;
+ if (written == 0) {
+ err = EIO;
+ goto fail;
+ }
+ blen -= written;
+ ptr += written;
+ }
+ }
+ }
+fail:
+ return err;
+}
+static errcode_t copy_file_tar(ext2_filsys fs, struct archive *archive,
+ const struct stat *statbuf, ext2_ino_t ino)
+{
+ ext2_file_t e2_file;
+ char *buf = NULL, *zerobuf = NULL;
+ errcode_t err, close_err;
+
+ err = ext2fs_file_open(fs, ino, EXT2_FILE_WRITE, &e2_file);
+ if (err)
+ return err;
+
+ err = ext2fs_get_mem(COPY_FILE_BUFLEN, &buf);
+ if (err)
+ goto out;
+
+ err = ext2fs_get_memzero(fs->blocksize, &zerobuf);
+ if (err)
+ goto out;
+
+ err = copy_file_chunk_tar(fs, archive, e2_file, 0, statbuf->st_size,
+ buf, zerobuf);
+out:
+ ext2fs_free_mem(&zerobuf);
+ ext2fs_free_mem(&buf);
+ close_err = ext2fs_file_close(e2_file);
+ if (err == 0)
+ err = close_err;
+ return err;
+}
+
+static errcode_t do_write_internal_tar(ext2_filsys fs, ext2_ino_t cwd,
+ struct archive *archive,
+ const char *dest,
+ const struct stat *statbuf)
+{
+ ext2_ino_t newfile;
+ errcode_t retval;
+ struct ext2_inode inode;
+
+ retval = ext2fs_new_inode(fs, cwd, 010755, 0, &newfile);
+ if (retval)
+ goto out;
+#ifdef DEBUGFS
+ printf("Allocated inode: %u\n", newfile);
+#endif
+ retval = ext2fs_link(fs, cwd, dest, newfile, EXT2_FT_REG_FILE);
+ if (retval == EXT2_ET_DIR_NO_SPACE) {
+ retval = ext2fs_expand_dir(fs, cwd);
+ if (retval)
+ goto out;
+ retval = ext2fs_link(fs, cwd, dest, newfile, EXT2_FT_REG_FILE);
+ }
+ if (retval)
+ goto out;
+ if (ext2fs_test_inode_bitmap2(fs->inode_map, newfile))
+ com_err(__func__, 0, "Warning: inode already set");
+ ext2fs_inode_alloc_stats2(fs, newfile, 1, 0);
+ memset(&inode, 0, sizeof(inode));
+ inode.i_mode = (statbuf->st_mode & ~S_IFMT) | LINUX_S_IFREG;
+ inode.i_atime = inode.i_ctime = inode.i_mtime = fs->now ? fs->now :
+ time(0);
+ inode.i_links_count = 1;
+ retval = ext2fs_inode_size_set(fs, &inode, statbuf->st_size);
+ if (retval)
+ goto out;
+ if (ext2fs_has_feature_inline_data(fs->super)) {
+ inode.i_flags |= EXT4_INLINE_DATA_FL;
+ } else if (ext2fs_has_feature_extents(fs->super)) {
+ ext2_extent_handle_t handle;
+
+ inode.i_flags &= ~EXT4_EXTENTS_FL;
+ retval = ext2fs_extent_open2(fs, newfile, &inode, &handle);
+ if (retval)
+ goto out;
+ ext2fs_extent_free(handle);
+ }
+
+ retval = ext2fs_write_new_inode(fs, newfile, &inode);
+ if (retval)
+ goto out;
+ if (inode.i_flags & EXT4_INLINE_DATA_FL) {
+ retval = ext2fs_inline_data_init(fs, newfile);
+ if (retval)
+ goto out;
+ }
+ if (LINUX_S_ISREG(inode.i_mode)) {
+ retval = copy_file_tar(fs, archive, statbuf, newfile);
+ if (retval)
+ goto out;
+ }
+out:
+ return retval;
+}
+
+static errcode_t set_inode_xattr_tar(ext2_filsys fs, ext2_ino_t ino,
+ struct archive_entry *entry)
+{
+ errcode_t retval, close_retval;
+ struct ext2_xattr_handle *handle;
+ ssize_t size;
+ const char *name;
+ const void *value;
+ size_t value_size;
+
+ if (no_copy_xattrs)
+ return 0;
+
+ size = dl_archive_entry_xattr_count(entry);
+ if (size == 0)
+ return 0;
+
+ retval = ext2fs_xattrs_open(fs, ino, &handle);
+ if (retval) {
+ if (retval == EXT2_ET_MISSING_EA_FEATURE)
+ return 0;
+ com_err(__func__, retval, _("while opening inode %u"), ino);
+ return retval;
+ }
+
+ retval = ext2fs_xattrs_read(handle);
+ if (retval) {
+ com_err(__func__, retval,
+ _("while reading xattrs for inode %u"), ino);
+ goto out;
+ }
+
+ dl_archive_entry_xattr_reset(entry);
+ while (dl_archive_entry_xattr_next(entry, &name, &value, &value_size) ==
+ ARCHIVE_OK) {
+ if (strcmp(name, "security.capability") != 0)
+ continue;
+
+ retval = ext2fs_xattr_set(handle, name, value, value_size);
+ if (retval) {
+ com_err(__func__, retval,
+ _("while writing attribute \"%s\" to inode %u"),
+ name, ino);
+ break;
+ }
+ }
+out:
+ close_retval = ext2fs_xattrs_close(&handle);
+ if (close_retval) {
+ com_err(__func__, retval, _("while closing inode %u"), ino);
+ retval = retval ? retval : close_retval;
+ }
+ return retval;
+}
+
+static errcode_t handle_entry(ext2_filsys fs, ext2_ino_t root_ino,
+ ext2_ino_t root, ext2_ino_t dirinode, char *name,
+ struct archive *a, struct archive_entry *entry,
+ const struct stat *st)
+{
+ errcode_t retval = 0;
+ char *ln_target;
+ ext2_ino_t tmpino;
+
+ switch (st->st_mode & S_IFMT) {
+ case S_IFCHR:
+ case S_IFBLK:
+ case S_IFIFO:
+ case S_IFSOCK:
+ retval = do_mknod_internal(fs, dirinode, name, st->st_mode,
+ st->st_rdev);
+ if (retval) {
+ com_err(__func__, retval,
+ _("while creating special file "
+ "\"%s\""),
+ name);
+ return 1;
+ }
+ break;
+ case S_IFLNK:
+ ln_target = calloc(
+ 1, __round_up(strlen(dl_archive_entry_symlink(entry)),
+ 1024));
+ strcpy(ln_target, dl_archive_entry_symlink(entry));
+ retval = do_symlink_internal(fs, dirinode, name, ln_target,
+ root);
+ free(ln_target);
+ if (retval) {
+ com_err(__func__, retval,
+ _("while writing symlink\"%s\""), name);
+ return 1;
+ }
+ break;
+ case S_IFREG:
+ retval = do_write_internal_tar(fs, dirinode, a, name, st);
+ if (retval) {
+ com_err(__func__, retval,
+ _("while writing file \"%s\""), name);
+ return 1;
+ }
+ break;
+ case S_IFDIR:
+ retval = do_mkdir_internal(fs, dirinode, name, root);
+ if (retval) {
+ com_err(__func__, retval, _("while making dir \"%s\""),
+ name);
+ return 1;
+ }
+ break;
+ default:
+ if (dl_archive_entry_hardlink(entry) != NULL) {
+ if ((retval = __find_path(
+ fs, root_ino,
+ dl_archive_entry_hardlink(entry),
+ &tmpino))) {
+ com_err(__func__, retval,
+ _("cannot find hardlink destination \"%s\" "
+ "to create \"%s\""),
+ dl_archive_entry_hardlink(entry), name);
+ return 1;
+ }
+ retval = add_link(fs, dirinode, tmpino, name);
+ if (retval) {
+ com_err(__func__, retval, "while linking %s",
+ name);
+ return 1;
+ }
+ } else {
+ com_err(__func__, 0, _("ignoring entry \"%s\""),
+ dl_archive_entry_pathname(entry));
+ }
+ }
+ return 0;
+}
+#endif
+
+errcode_t __populate_fs_from_tar(ext2_filsys fs, ext2_ino_t root_ino,
+ const char *source_tar, ext2_ino_t root,
+ struct hdlinks_s *hdlinks EXT2FS_ATTR((unused)),
+ struct file_info *target,
+ struct fs_ops_callbacks *fs_callbacks)
+{
+#ifndef HAVE_ARCHIVE_H
+ com_err(__func__, 0,
+ _("you need to compile e2fsprogs with libarchive to "
+ "be able to process tarballs"));
+ return 1;
+#else
+ char *path2, *path3, *dir, *name;
+ unsigned int dir_exists;
+ struct archive *a;
+ struct archive_entry *entry;
+ errcode_t retval = 0;
+ locale_t archive_locale;
+ locale_t old_locale;
+ ext2_ino_t dirinode, tmpino;
+ const struct stat *st;
+
+ if (!libarchive_available()) {
+ com_err(__func__, 0,
+ _("you need libarchive to be able to process tarballs"));
+ return 1;
+ }
+
+ archive_locale = newlocale(LC_CTYPE_MASK, "", (locale_t)0);
+ old_locale = uselocale(archive_locale);
+ a = dl_archive_read_new();
+ if (a == NULL) {
+ retval = 1;
+ com_err(__func__, retval, _("while creating archive reader"));
+ goto out;
+ }
+ if (dl_archive_read_support_filter_all(a) != ARCHIVE_OK) {
+ retval = 1;
+ com_err(__func__, retval, _("while enabling decompression"));
+ goto out;
+ }
+ if (dl_archive_read_support_format_all(a) != ARCHIVE_OK) {
+ retval = 1;
+ com_err(__func__, retval, _("while enabling reader formats"));
+ goto out;
+ }
+
+ if ((retval = dl_archive_read_open_filename(a, source_tar, 4096))) {
+ com_err(__func__, retval, _("while opening \"%s\""),
+ dl_archive_error_string(a));
+ goto out;
+ }
+
+ for (;;) {
+ retval = dl_archive_read_next_header(a, &entry);
+ if (retval == ARCHIVE_EOF) {
+ retval = 0;
+ break;
+ }
+ if (retval != ARCHIVE_OK) {
+ com_err(__func__, retval,
+ _("cannot read archive header: \"%s\""),
+ dl_archive_error_string(a));
+ goto out;
+ }
+ path2 = strdup(dl_archive_entry_pathname(entry));
+ path3 = strdup(dl_archive_entry_pathname(entry));
+ name = basename(path2);
+ dir = dirname(path3);
+ if ((retval = __find_path(fs, root_ino, dir, &dirinode))) {
+ com_err(__func__, retval,
+ _("cannot find directory \"%s\" to create \"%s\""),
+ dir, name);
+ goto out;
+ }
+
+ /*
+ * Did we already create this file as the result of a repeated entry
+ * in the tarball? Delete the existing one (except if it is a
+ * directory) so that it can be re-created by handle_entry().
+ */
+ dir_exists = 0;
+ st = dl_archive_entry_stat(entry);
+ retval = ext2fs_namei(fs, root, dirinode, name, &tmpino);
+ if (!retval) {
+ if ((st->st_mode & S_IFMT) == S_IFDIR) {
+ dir_exists = 1;
+ } else {
+ retval = ext2fs_unlink(fs, dirinode, name,
+ tmpino, 0);
+ if (retval) {
+ com_err(__func__, retval,
+ _("failed to unlink \"%s/%s\""),
+ dir, name);
+ goto out;
+ }
+ retval = remove_inode(fs, tmpino);
+ if (retval) {
+ com_err(__func__, retval,
+ _("failed to remove inode of \"%s/%s\""),
+ dir, name);
+ goto out;
+ }
+ }
+ }
+
+ /*
+ * Create files, directories, symlinks etc referenced by this archive
+ * entry unless this is an already existing directory
+ */
+ if (!dir_exists) {
+ retval = handle_entry(fs, root_ino, root, dirinode,
+ name, a, entry, st);
+ if (retval)
+ goto out;
+ retval =
+ ext2fs_namei(fs, root, dirinode, name, &tmpino);
+ if (retval) {
+ com_err(__func__, retval,
+ _("while looking up \"%s\""), name);
+ goto out;
+ }
+ }
+
+ /* set uid, gid, mode and time for the new (or re-created) inode */
+ retval = set_inode_extra(fs, tmpino, st);
+ if (retval) {
+ com_err(__func__, retval,
+ _("while setting inode for \"%s\""), name);
+ goto out;
+ }
+
+ retval = set_inode_xattr_tar(fs, tmpino, entry);
+ if (retval) {
+ com_err(__func__, retval,
+ _("while setting xattrs for \"%s\""), name);
+ goto out;
+ }
+
+ if (fs_callbacks && fs_callbacks->end_create_new_inode) {
+ retval = fs_callbacks->end_create_new_inode(
+ fs, target->path, name, dirinode, root,
+ st->st_mode & S_IFMT);
+ if (retval)
+ goto out;
+ }
+
+ free(path2);
+ free(path3);
+ }
+
+out:
+ dl_archive_read_close(a);
+ dl_archive_read_free(a);
+ uselocale(old_locale);
+ freelocale(archive_locale);
+ return retval;
+#endif
+}
diff --git a/misc/create_inode_libarchive.h b/misc/create_inode_libarchive.h
new file mode 100644
index 000000000..78c454e3c
--- /dev/null
+++ b/misc/create_inode_libarchive.h
@@ -0,0 +1,10 @@
+#ifndef _CREATE_INODE_LIBARCHIVE_H
+#define _CREATE_INODE_LIBARCHIVE_H
+
+errcode_t __populate_fs_from_tar(ext2_filsys fs, ext2_ino_t root_ino,
+ const char *source_tar, ext2_ino_t root,
+ struct hdlinks_s *hdlinks,
+ struct file_info *target,
+ struct fs_ops_callbacks *fs_callbacks);
+
+#endif /* _CREATE_INODE_LIBARCHIVE_H */
diff --git a/misc/dumpe2fs.c b/misc/dumpe2fs.c
index 7c080ed9f..d2d57fb0a 100644
--- a/misc/dumpe2fs.c
+++ b/misc/dumpe2fs.c
@@ -84,8 +84,7 @@ static void print_free(unsigned long group, char * bitmap,
unsigned long num, unsigned long offset, int ratio)
{
int p = 0;
- unsigned long i;
- unsigned long j;
+ unsigned long i, j;
offset /= ratio;
offset += group * num;
@@ -95,13 +94,14 @@ static void print_free(unsigned long group, char * bitmap,
if (p)
printf (", ");
print_number((i + offset) * ratio);
- for (j = i; j < num && !in_use (bitmap, j); j++)
+ for (j = i + 1; j < num && !in_use(bitmap, j); j++)
;
- if (--j != i) {
+ if (j != i + 1 || ratio > 1) {
fputc('-', stdout);
- print_number((j + offset) * ratio);
- i = j;
+ print_number(((j - 1 + offset) * ratio) +
+ ratio - 1);
}
+ i = j;
p = 1;
}
}
diff --git a/misc/e2freefrag.c b/misc/e2freefrag.c
index 49b6346e4..63a3d4351 100644
--- a/misc/e2freefrag.c
+++ b/misc/e2freefrag.c
@@ -38,7 +38,7 @@ extern int optind;
#include "e2freefrag.h"
#if defined(HAVE_EXT2_IOCTLS) && !defined(DEBUGFS)
-# ifdef HAVE_LINUX_FSMAP_H
+# if defined(HAVE_LINUX_FSMAP_H) && defined(HAVE_FSMAP_SIZEOF)
# include <linux/fsmap.h>
# endif
# include "fsmap.h"
@@ -377,7 +377,7 @@ static void open_device(char *device_name, ext2_filsys *fs)
#ifdef DEBUGFS
#include "debugfs.h"
-void do_freefrag(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_freefrag(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
#else
int main(int argc, char *argv[])
diff --git a/misc/e2undo.c b/misc/e2undo.c
index bc78fb2eb..4cbf8884e 100644
--- a/misc/e2undo.c
+++ b/misc/e2undo.c
@@ -154,9 +154,11 @@ static void print_undo_mismatch(struct ext2_super_block *fs_super,
if (memcmp(fs_super->s_uuid, undo_super->s_uuid,
sizeof(fs_super->s_uuid)))
printf("%s", _("UUID does not match.\n"));
- if (fs_super->s_mtime != undo_super->s_mtime)
+ if (ext2fs_get_tstamp(fs_super, s_mtime) !=
+ ext2fs_get_tstamp(undo_super, s_mtime))
printf("%s", _("Last mount time does not match.\n"));
- if (fs_super->s_wtime != undo_super->s_wtime)
+ if (ext2fs_get_tstamp(fs_super, s_wtime) !=
+ ext2fs_get_tstamp(undo_super, s_wtime))
printf("%s", _("Last write time does not match.\n"));
if (fs_super->s_kbytes_written != undo_super->s_kbytes_written)
printf("%s", _("Lifetime write counter does not match.\n"));
diff --git a/misc/e4crypt.c b/misc/e4crypt.c
index 67d25d88d..af907041c 100644
--- a/misc/e4crypt.c
+++ b/misc/e4crypt.c
@@ -144,7 +144,7 @@ static void validate_paths(int argc, char *argv[], int path_start_index)
if (ret < 0)
goto invalid;
if (!S_ISDIR(st.st_mode)) {
- fprintf(stderr, "%s is not a directory\n", argv[x]);
+ errno = ENOTDIR;
goto invalid;
}
}
diff --git a/misc/findsuper.c b/misc/findsuper.c
index 7e78c1fc8..1f5c3e72f 100644
--- a/misc/findsuper.c
+++ b/misc/findsuper.c
@@ -230,10 +230,9 @@ int main(int argc, char *argv[])
WHY("free_inodes_count > inodes_count (%u > %u)\n",
ext2.s_free_inodes_count, ext2.s_inodes_count);
- if (ext2.s_mkfs_time != 0)
- tm = ext2.s_mkfs_time;
- else
- tm = ext2.s_mtime;
+ tm = ext2fs_get_tstamp(ext2, s_mkfs_time);
+ if (tm == 0)
+ tm = ext2fs_get_tstamp(ext2, s_mtime);
s = ctime(&tm);
s[24] = 0;
bsize = 1 << (ext2.s_log_block_size + 10);
diff --git a/misc/fuse2fs.c b/misc/fuse2fs.c
index 0dc77eadc..6b2e727e4 100644
--- a/misc/fuse2fs.c
+++ b/misc/fuse2fs.c
@@ -9,7 +9,6 @@
* %End-Header%
*/
#define _FILE_OFFSET_BITS 64
-#define FUSE_USE_VERSION 29
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
@@ -19,12 +18,9 @@
# include <linux/fs.h>
# include <linux/falloc.h>
# include <linux/xattr.h>
-# define FUSE_PLATFORM_OPTS ",big_writes"
# ifdef HAVE_SYS_ACL_H
# define TRANSLATE_LINUX_ACLS
# endif
-#else
-# define FUSE_PLATFORM_OPTS ""
#endif
#ifdef TRANSLATE_LINUX_ACLS
# include <sys/acl.h>
@@ -35,6 +31,15 @@
#include <inttypes.h>
#include "ext2fs/ext2fs.h"
#include "ext2fs/ext2_fs.h"
+#if FUSE_VERSION >= FUSE_MAKE_VERSION(3, 0)
+# define FUSE_PLATFORM_OPTS ""
+#else
+# ifdef __linux__
+# define FUSE_PLATFORM_OPTS ",use_ino,big_writes"
+# else
+# define FUSE_PLATFORM_OPTS ",use_ino"
+# endif
+#endif
#include "../version.h"
@@ -728,7 +733,11 @@ static void op_destroy(void *p EXT2FS_ATTR((unused)))
}
}
-static void *op_init(struct fuse_conn_info *conn)
+static void *op_init(struct fuse_conn_info *conn
+#if FUSE_VERSION >= FUSE_MAKE_VERSION(3, 0)
+ , struct fuse_config *cfg EXT2FS_ATTR((unused))
+#endif
+ )
{
struct fuse_context *ctxt = fuse_get_context();
struct fuse2fs *ff = (struct fuse2fs *)ctxt->private_data;
@@ -746,7 +755,7 @@ static void *op_init(struct fuse_conn_info *conn)
#endif
if (fs->flags & EXT2_FLAG_RW) {
fs->super->s_mnt_count++;
- fs->super->s_mtime = time(NULL);
+ ext2fs_set_tstamp(fs->super, s_mtime, time(NULL));
fs->super->s_state &= ~EXT2_VALID_FS;
ext2fs_mark_super_dirty(fs);
err = ext2fs_flush2(fs, 0);
@@ -798,7 +807,11 @@ static int stat_inode(ext2_filsys fs, ext2_ino_t ino, struct stat *statbuf)
return ret;
}
-static int op_getattr(const char *path, struct stat *statbuf)
+static int op_getattr(const char *path, struct stat *statbuf
+#if FUSE_VERSION >= FUSE_MAKE_VERSION(3, 0)
+ , struct fuse_file_info *fi EXT2FS_ATTR((unused))
+#endif
+ )
{
struct fuse_context *ctxt = fuse_get_context();
struct fuse2fs *ff = (struct fuse2fs *)ctxt->private_data;
@@ -1129,7 +1142,7 @@ static int op_mkdir(const char *path, mode_t mode)
ext2fs_set_i_uid_high(inode, ctxt->uid >> 16);
inode.i_gid = ctxt->gid;
ext2fs_set_i_gid_high(inode, ctxt->gid >> 16);
- inode.i_mode = LINUX_S_IFDIR | (mode & ~(S_ISUID | fs->umask)) |
+ inode.i_mode = LINUX_S_IFDIR | (mode & ~S_ISUID) |
parent_sgid;
inode.i_generation = ff->next_generation++;
@@ -1542,7 +1555,11 @@ static int update_dotdot_helper(ext2_ino_t dir EXT2FS_ATTR((unused)),
return 0;
}
-static int op_rename(const char *from, const char *to)
+static int op_rename(const char *from, const char *to
+#if FUSE_VERSION >= FUSE_MAKE_VERSION(3, 0)
+ , unsigned int flags EXT2FS_ATTR((unused))
+#endif
+ )
{
struct fuse_context *ctxt = fuse_get_context();
struct fuse2fs *ff = (struct fuse2fs *)ctxt->private_data;
@@ -1871,7 +1888,11 @@ out:
return ret;
}
-static int op_chmod(const char *path, mode_t mode)
+static int op_chmod(const char *path, mode_t mode
+#if FUSE_VERSION >= FUSE_MAKE_VERSION(3, 0)
+ , struct fuse_file_info *fi EXT2FS_ATTR((unused))
+#endif
+ )
{
struct fuse_context *ctxt = fuse_get_context();
struct fuse2fs *ff = (struct fuse2fs *)ctxt->private_data;
@@ -1930,7 +1951,11 @@ out:
return ret;
}
-static int op_chown(const char *path, uid_t owner, gid_t group)
+static int op_chown(const char *path, uid_t owner, gid_t group
+#if FUSE_VERSION >= FUSE_MAKE_VERSION(3, 0)
+ , struct fuse_file_info *fi EXT2FS_ATTR((unused))
+#endif
+ )
{
struct fuse_context *ctxt = fuse_get_context();
struct fuse2fs *ff = (struct fuse2fs *)ctxt->private_data;
@@ -2000,7 +2025,11 @@ out:
return ret;
}
-static int op_truncate(const char *path, off_t len)
+static int op_truncate(const char *path, off_t len
+#if FUSE_VERSION >= FUSE_MAKE_VERSION(3, 0)
+ , struct fuse_file_info *fi EXT2FS_ATTR((unused))
+#endif
+ )
{
struct fuse_context *ctxt = fuse_get_context();
struct fuse2fs *ff = (struct fuse2fs *)ctxt->private_data;
@@ -2753,7 +2782,11 @@ static int op_readdir_iter(ext2_ino_t dir EXT2FS_ATTR((unused)),
memcpy(namebuf, dirent->name, dirent->name_len & 0xFF);
namebuf[dirent->name_len & 0xFF] = 0;
- ret = i->func(i->buf, namebuf, NULL, 0);
+ ret = i->func(i->buf, namebuf, NULL, 0
+#if FUSE_VERSION >= FUSE_MAKE_VERSION(3, 0)
+ , 0
+#endif
+ );
if (ret)
return DIRENT_ABORT;
@@ -2763,7 +2796,11 @@ static int op_readdir_iter(ext2_ino_t dir EXT2FS_ATTR((unused)),
static int op_readdir(const char *path EXT2FS_ATTR((unused)),
void *buf, fuse_fill_dir_t fill_func,
off_t offset EXT2FS_ATTR((unused)),
- struct fuse_file_info *fp)
+ struct fuse_file_info *fp
+#if FUSE_VERSION >= FUSE_MAKE_VERSION(3, 0)
+ , enum fuse_readdir_flags flags EXT2FS_ATTR((unused))
+#endif
+ )
{
struct fuse_context *ctxt = fuse_get_context();
struct fuse2fs *ff = (struct fuse2fs *)ctxt->private_data;
@@ -2951,6 +2988,7 @@ out:
return ret;
}
+#if FUSE_VERSION < FUSE_MAKE_VERSION(3, 0)
static int op_ftruncate(const char *path EXT2FS_ATTR((unused)),
off_t len, struct fuse_file_info *fp)
{
@@ -3024,8 +3062,13 @@ static int op_fgetattr(const char *path EXT2FS_ATTR((unused)),
return ret;
}
+#endif /* FUSE_VERSION < FUSE_MAKE_VERSION(3, 0) */
-static int op_utimens(const char *path, const struct timespec ctv[2])
+static int op_utimens(const char *path, const struct timespec ctv[2]
+#if FUSE_VERSION >= FUSE_MAKE_VERSION(3, 0)
+ , struct fuse_file_info *fi EXT2FS_ATTR((unused))
+#endif
+ )
{
struct fuse_context *ctxt = fuse_get_context();
struct fuse2fs *ff = (struct fuse2fs *)ctxt->private_data;
@@ -3259,7 +3302,12 @@ static int ioctl_fitrim(ext2_filsys fs, struct fuse2fs_file_handle *fh,
#endif /* FITRIM */
#if FUSE_VERSION >= FUSE_MAKE_VERSION(2, 8)
-static int op_ioctl(const char *path EXT2FS_ATTR((unused)), int cmd,
+static int op_ioctl(const char *path EXT2FS_ATTR((unused)),
+#if FUSE_VERSION >= FUSE_MAKE_VERSION(3, 0)
+ unsigned int cmd,
+#else
+ int cmd,
+#endif
void *arg EXT2FS_ATTR((unused)),
struct fuse_file_info *fp,
unsigned int flags EXT2FS_ATTR((unused)), void *data)
@@ -3603,10 +3651,12 @@ static struct fuse_operations fs_ops = {
.fsyncdir = op_fsync,
.access = op_access,
.create = op_create,
+#if FUSE_VERSION < FUSE_MAKE_VERSION(3, 0)
.ftruncate = op_ftruncate,
.fgetattr = op_fgetattr,
+#endif
.utimens = op_utimens,
-#if FUSE_VERSION >= FUSE_MAKE_VERSION(2, 9)
+#if (FUSE_VERSION >= FUSE_MAKE_VERSION(2, 9)) && (FUSE_VERSION < FUSE_MAKE_VERSION(3, 0))
# if defined(UTIME_NOW) || defined(UTIME_OMIT)
.flag_utime_omit_ok = 1,
# endif
@@ -3618,10 +3668,14 @@ static struct fuse_operations fs_ops = {
#endif
#if FUSE_VERSION >= FUSE_MAKE_VERSION(2, 8)
.ioctl = op_ioctl,
+#if FUSE_VERSION < FUSE_MAKE_VERSION(3, 0)
.flag_nullpath_ok = 1,
#endif
+#endif
#if FUSE_VERSION >= FUSE_MAKE_VERSION(2, 9)
+#if FUSE_VERSION < FUSE_MAKE_VERSION(3, 0)
.flag_nopath = 1,
+#endif
# ifdef SUPPORT_FALLOCATE
.fallocate = op_fallocate,
# endif
@@ -3860,7 +3914,7 @@ int main(int argc, char *argv[])
get_random_bytes(&fctx.next_generation, sizeof(unsigned int));
/* Set up default fuse parameters */
- snprintf(extra_args, BUFSIZ, "-okernel_cache,subtype=ext4,use_ino,"
+ snprintf(extra_args, BUFSIZ, "-okernel_cache,subtype=ext4,"
"fsname=%s,attr_timeout=0" FUSE_PLATFORM_OPTS,
fctx.device);
if (fctx.no_default_opts == 0)
@@ -3984,14 +4038,14 @@ no_translation:
/* Make a note in the error log */
get_now(&now);
- fs->super->s_last_error_time = now.tv_sec;
+ ext2fs_set_tstamp(fs->super, s_last_error_time, now.tv_sec);
fs->super->s_last_error_ino = ino;
fs->super->s_last_error_line = line;
fs->super->s_last_error_block = err; /* Yeah... */
strncpy((char *)fs->super->s_last_error_func, file,
sizeof(fs->super->s_last_error_func));
- if (fs->super->s_first_error_time == 0) {
- fs->super->s_first_error_time = now.tv_sec;
+ if (ext2fs_get_tstamp(fs->super, s_first_error_time) == 0) {
+ ext2fs_set_tstamp(fs->super, s_first_error_time, now.tv_sec);
fs->super->s_first_error_ino = ino;
fs->super->s_first_error_line = line;
fs->super->s_first_error_block = err;
diff --git a/misc/mke2fs.8.in b/misc/mke2fs.8.in
index 30f97bb5c..69039cb80 100644
--- a/misc/mke2fs.8.in
+++ b/misc/mke2fs.8.in
@@ -23,7 +23,7 @@ mke2fs \- create an ext2/ext3/ext4 file system
]
[
.B \-d
-.I root-directory
+.I root-directory|tarball
]
[
.B \-D
@@ -232,16 +232,18 @@ test is used instead of a fast read-only test.
.TP
.B \-C " cluster-size"
Specify the size of cluster in bytes for file systems using the bigalloc
-feature. Valid cluster-size values are from 2048 to 256M bytes per
-cluster. This can only be specified if the bigalloc feature is
-enabled. (See the
+feature. Valid cluster-size values range from 2 to 32768 times the
+filesystem blocksize and must be a power of 2. The cluster-size can
+only be specified if the bigalloc feature is enabled. (See the
.B ext4 (5)
man page for more details about bigalloc.) The default cluster size if
bigalloc is enabled is 16 times the block size.
.TP
-.BI \-d " root-directory"
-Copy the contents of the given directory into the root directory of the
-file system.
+.BI \-d " root-directory|tarball"
+Copy the contents of the given directory or tarball into the root directory of the
+file system. Tarball input is only available if mke2fs was compiled with
+libarchive support enabled and if the libarchive shared library is available
+at run-time. The special value "-" will read a tarball from standard input.
.TP
.B \-D
Use direct I/O when writing to the disk. This avoids mke2fs dirtying a
@@ -508,8 +510,8 @@ The default inode size is controlled by the
file. In the
.B mke2fs.conf
file shipped with e2fsprogs, the default inode size is 256 bytes for
-most file systems, except for small file systems where the inode size
-will be 128 bytes.
+all file systems, except for the GNU Hurd since it only supports
+128-byte inodes.
.TP
.B \-j
Create the file system with an ext3 journal. If the
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index 4a9c1b092..d54b7bc22 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -117,7 +117,7 @@ static char *mount_dir;
char *journal_device;
static int sync_kludge; /* Set using the MKE2FS_SYNC env. option */
char **fs_types;
-const char *src_root_dir; /* Copy files from the specified directory */
+const char *src_root; /* Copy files from the specified directory or tarball */
static char *undo_file;
static int android_sparse_file; /* -E android_sparse */
@@ -134,7 +134,7 @@ static void usage(void)
"[-C cluster-size]\n\t[-i bytes-per-inode] [-I inode-size] "
"[-J journal-options]\n"
"\t[-G flex-group-size] [-N number-of-inodes] "
- "[-d root-directory]\n"
+ "[-d root-directory|tarball]\n"
"\t[-m reserved-blocks-percentage] [-o creator-os]\n"
"\t[-g blocks-per-group] [-L volume-label] "
"[-M last-mounted-directory]\n\t[-O feature[,...]] "
@@ -415,9 +415,9 @@ static errcode_t packed_allocate_tables(ext2_filsys fs)
static void write_inode_tables(ext2_filsys fs, int lazy_flag, int itable_zeroed)
{
errcode_t retval;
- blk64_t blk;
+ blk64_t start = 0;
dgrp_t i;
- int num;
+ int len = 0;
struct ext2fs_numeric_progress_struct progress;
ext2fs_numeric_progress_init(fs, &progress,
@@ -425,10 +425,10 @@ static void write_inode_tables(ext2_filsys fs, int lazy_flag, int itable_zeroed)
fs->group_desc_count);
for (i = 0; i < fs->group_desc_count; i++) {
- ext2fs_numeric_progress_update(fs, &progress, i);
+ blk64_t blk = ext2fs_inode_table_loc(fs, i);
+ int num = fs->inode_blocks_per_group;
- blk = ext2fs_inode_table_loc(fs, i);
- num = fs->inode_blocks_per_group;
+ ext2fs_numeric_progress_update(fs, &progress, i);
if (lazy_flag)
num = ext2fs_div_ceil((fs->super->s_inodes_per_group -
@@ -441,14 +441,26 @@ static void write_inode_tables(ext2_filsys fs, int lazy_flag, int itable_zeroed)
ext2fs_group_desc_csum_set(fs, i);
}
if (!itable_zeroed) {
- retval = ext2fs_zero_blocks2(fs, blk, num, &blk, &num);
+ if (len == 0) {
+ start = blk;
+ len = num;
+ continue;
+ }
+ /* 'len' must not overflow 2^31 blocks for ext2fs_zero_blocks2() */
+ if (start + len == blk && len + num >= len) {
+ len += num;
+ continue;
+ }
+ retval = ext2fs_zero_blocks2(fs, start, len, &start, &len);
if (retval) {
fprintf(stderr, _("\nCould not write %d "
"blocks in inode table starting at %llu: %s\n"),
- num, (unsigned long long) blk,
+ len, (unsigned long long) start,
error_message(retval));
exit(1);
}
+ start = blk;
+ len = num;
}
if (sync_kludge) {
if (sync_kludge == 1)
@@ -457,6 +469,18 @@ static void write_inode_tables(ext2_filsys fs, int lazy_flag, int itable_zeroed)
io_channel_flush(fs->io);
}
}
+ if (len) {
+ retval = ext2fs_zero_blocks2(fs, start, len, &start, &len);
+ if (retval) {
+ fprintf(stderr, _("\nCould not write %d "
+ "blocks in inode table starting at %llu: %s\n"),
+ len, (unsigned long long) start,
+ error_message(retval));
+ exit(1);
+ }
+ if (sync_kludge)
+ io_channel_flush(fs->io);
+ }
ext2fs_numeric_progress_close(fs, &progress,
_("done \n"));
@@ -1712,7 +1736,7 @@ profile_error:
}
break;
case 'd':
- src_root_dir = optarg;
+ src_root = optarg;
break;
case 'D':
direct_io = 1;
@@ -3522,7 +3546,7 @@ no_journal:
fs->super->s_mmp_update_interval);
}
- overhead += fs->super->s_first_data_block;
+ overhead += EXT2FS_NUM_B2C(fs, fs->super->s_first_data_block);
if (!super_only)
fs->super->s_overhead_clusters = overhead;
@@ -3551,12 +3575,12 @@ no_journal:
retval = mk_hugefiles(fs, device_name);
if (retval)
com_err(program_name, retval, "while creating huge files");
- /* Copy files from the specified directory */
- if (src_root_dir) {
+ /* Copy files from the specified directory or tarball */
+ if (src_root) {
if (!quiet)
printf("%s", _("Copying files into the device: "));
- retval = populate_fs(fs, EXT2_ROOT_INO, src_root_dir,
+ retval = populate_fs(fs, EXT2_ROOT_INO, src_root,
EXT2_ROOT_INO);
if (retval) {
com_err(program_name, retval, "%s",
diff --git a/misc/tune2fs.c b/misc/tune2fs.c
index 458f7cf6a..6de40e93c 100644
--- a/misc/tune2fs.c
+++ b/misc/tune2fs.c
@@ -51,11 +51,15 @@ extern int optind;
#include <unistd.h>
#include <sys/types.h>
#include <libgen.h>
-#include <limits.h>
+#include <limits.h> /* for PATH_MAX */
#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
#endif
+#ifndef PATH_MAX
+#define PATH_MAX 4096
+#endif
+
#include "ext2fs/ext2_fs.h"
#include "ext2fs/ext2fs.h"
#include "ext2fs/kernel-jbd.h"
@@ -466,7 +470,8 @@ static int check_fsck_needed(ext2_filsys fs, const char *prompt)
/* Refuse to modify anything but a freshly checked valid filesystem. */
if (!(fs->super->s_state & EXT2_VALID_FS) ||
(fs->super->s_state & EXT2_ERROR_FS) ||
- (fs->super->s_lastcheck < fs->super->s_mtime)) {
+ (ext2fs_get_tstamp(fs->super, s_lastcheck) <
+ ext2fs_get_tstamp(fs->super, s_mtime))) {
puts(_(fsck_explain));
puts(_(please_fsck));
if (mount_flags & EXT2_MF_READONLY)
@@ -520,7 +525,8 @@ static void convert_64bit(ext2_filsys fs, int direction)
if (!fsck_requested &&
((fs->super->s_state & EXT2_ERROR_FS) ||
!(fs->super->s_state & EXT2_VALID_FS) ||
- fs->super->s_lastcheck < fs->super->s_mtime))
+ ext2fs_get_tstamp(fs->super, s_lastcheck) <
+ ext2fs_get_tstamp(fs->super, s_mtime)))
request_fsck_afterwards(fs);
if (fsck_requested)
fprintf(stderr, _("After running e2fsck, please run `resize2fs %s %s"),
@@ -3091,29 +3097,24 @@ static int handle_fslabel(int setlabel)
errcode_t ret;
int mnt_flags, fd;
char label[FSLABEL_MAX];
- int maxlen = FSLABEL_MAX - 1;
+ unsigned int maxlen = FSLABEL_MAX - 1;
char mntpt[PATH_MAX + 1];
ret = ext2fs_check_mount_point(device_name, &mnt_flags,
mntpt, sizeof(mntpt));
- if (ret) {
- com_err(device_name, ret, _("while checking mount status"));
- return 1;
- }
+ if (ret)
+ return -1;
+
if (!(mnt_flags & EXT2_MF_MOUNTED) ||
(setlabel && (mnt_flags & EXT2_MF_READONLY)))
return -1;
- if (!mntpt[0]) {
- fprintf(stderr,_("Unknown mount point for %s\n"), device_name);
- return 1;
- }
+ if (!mntpt[0])
+ return -1;
fd = open(mntpt, O_RDONLY);
- if (fd < 0) {
- com_err(mntpt, errno, _("while opening mount point"));
- return 1;
- }
+ if (fd < 0)
+ return -1;
/* Get fs label */
if (!setlabel) {
@@ -3444,7 +3445,7 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
goto closefs;
}
if (T_flag) {
- sb->s_lastcheck = last_check_time;
+ ext2fs_set_tstamp(sb, s_lastcheck, last_check_time);
ext2fs_mark_super_dirty(fs);
printf(_("Setting time filesystem last checked to %s\n"),
ctime(&last_check_time));
@@ -3520,9 +3521,9 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
}
if (Q_flag) {
- if (mount_flags & EXT2_MF_MOUNTED) {
+ if (mount_flags & (EXT2_MF_BUSY | EXT2_MF_MOUNTED)) {
fputs(_("The quota feature may only be changed when "
- "the filesystem is unmounted.\n"), stderr);
+ "the filesystem is unmounted and not in use.\n"), stderr);
rc = 1;
goto closefs;
}
@@ -3673,10 +3674,10 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
}
if (I_flag) {
- if (mount_flags & EXT2_MF_MOUNTED) {
+ if (mount_flags & (EXT2_MF_BUSY | EXT2_MF_MOUNTED)) {
fputs(_("The inode size may only be "
"changed when the filesystem is "
- "unmounted.\n"), stderr);
+ "unmounted and not in use.\n"), stderr);
rc = 1;
goto closefs;
}
diff --git a/po/LINGUAS b/po/LINGUAS
index ef3bda20a..256fbc1ae 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1 +1 @@
-ca cs da de eo es fi fr fur hu id it ms nl pl pt sr sv tr uk vi zh_CN
+ca cs da de eo es fi fr fur hu id it ms nl pl pt ro sr sv tr uk vi zh_CN
diff --git a/po/e2fsprogs.pot b/po/e2fsprogs.pot
index 6e03e9715..1a324df6b 100644
--- a/po/e2fsprogs.pot
+++ b/po/e2fsprogs.pot
@@ -78,9 +78,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: e2fsprogs 1.47.0\n"
+"Project-Id-Version: e2fsprogs 1.47.0.95\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
-"POT-Creation-Date: 2023-02-05 15:05-0500\n"
+"POT-Creation-Date: 2024-04-24 13:22-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -103,12 +103,12 @@ msgstr ""
msgid "while reading the bad blocks inode"
msgstr ""
-#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1592
-#: e2fsck/unix.c:1707 misc/badblocks.c:1273 misc/badblocks.c:1281
+#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1595
+#: e2fsck/unix.c:1710 misc/badblocks.c:1273 misc/badblocks.c:1281
#: misc/badblocks.c:1295 misc/badblocks.c:1307 misc/dumpe2fs.c:438
#: misc/dumpe2fs.c:704 misc/dumpe2fs.c:708 misc/e2image.c:1441
#: misc/e2image.c:1641 misc/e2image.c:1662 misc/mke2fs.c:239
-#: misc/tune2fs.c:3037 misc/tune2fs.c:3231 resize/main.c:422
+#: misc/tune2fs.c:3043 misc/tune2fs.c:3232 resize/main.c:424
#, c-format
msgid "while trying to open %s"
msgstr ""
@@ -224,17 +224,17 @@ msgstr ""
msgid "%s: incorrect fast commit blocks\n"
msgstr ""
-#: e2fsck/journal.c:1687 misc/fuse2fs.c:3803
+#: e2fsck/journal.c:1688 misc/fuse2fs.c:3857
#, c-format
msgid "%s: recovering journal\n"
msgstr ""
-#: e2fsck/journal.c:1689
+#: e2fsck/journal.c:1690
#, c-format
msgid "%s: won't do journal recovery while read-only\n"
msgstr ""
-#: e2fsck/journal.c:1716
+#: e2fsck/journal.c:1718
#, c-format
msgid "while trying to re-open %s"
msgstr ""
@@ -508,77 +508,77 @@ msgstr ""
msgid "getting next inode from scan"
msgstr ""
-#: e2fsck/pass1.c:1227
+#: e2fsck/pass1.c:1228
msgid "in-use inode map"
msgstr ""
-#: e2fsck/pass1.c:1238
+#: e2fsck/pass1.c:1239
msgid "directory inode map"
msgstr ""
-#: e2fsck/pass1.c:1248
+#: e2fsck/pass1.c:1249
msgid "regular file inode map"
msgstr ""
-#: e2fsck/pass1.c:1257 misc/e2image.c:1290
+#: e2fsck/pass1.c:1258 misc/e2image.c:1290
msgid "in-use block map"
msgstr ""
-#: e2fsck/pass1.c:1266
+#: e2fsck/pass1.c:1267
msgid "metadata block map"
msgstr ""
-#: e2fsck/pass1.c:1277
+#: e2fsck/pass1.c:1278
msgid "inode casefold map"
msgstr ""
-#: e2fsck/pass1.c:1342
+#: e2fsck/pass1.c:1343
msgid "opening inode scan"
msgstr ""
-#: e2fsck/pass1.c:2137
+#: e2fsck/pass1.c:2139
msgid "Pass 1"
msgstr ""
-#: e2fsck/pass1.c:2198
+#: e2fsck/pass1.c:2200
#, c-format
msgid "reading indirect blocks of inode %u"
msgstr ""
-#: e2fsck/pass1.c:2249
+#: e2fsck/pass1.c:2251
msgid "bad inode map"
msgstr ""
-#: e2fsck/pass1.c:2289
+#: e2fsck/pass1.c:2291
msgid "inode in bad block map"
msgstr ""
-#: e2fsck/pass1.c:2309
+#: e2fsck/pass1.c:2311
msgid "imagic inode map"
msgstr ""
-#: e2fsck/pass1.c:2340
+#: e2fsck/pass1.c:2342
msgid "multiply claimed block map"
msgstr ""
-#: e2fsck/pass1.c:2465
+#: e2fsck/pass1.c:2467
msgid "ext attr block map"
msgstr ""
-#: e2fsck/pass1.c:3766
+#: e2fsck/pass1.c:3768
#, c-format
msgid "%6lu(%c): expecting %6lu got phys %6lu (blkcnt %lld)\n"
msgstr ""
-#: e2fsck/pass1.c:4187
+#: e2fsck/pass1.c:4189
msgid "block bitmap"
msgstr ""
-#: e2fsck/pass1.c:4193
+#: e2fsck/pass1.c:4195
msgid "inode bitmap"
msgstr ""
-#: e2fsck/pass1.c:4199
+#: e2fsck/pass1.c:4201
msgid "inode table"
msgstr ""
@@ -590,7 +590,7 @@ msgstr ""
msgid "NLS is broken."
msgstr ""
-#: e2fsck/pass2.c:1228 e2fsck/pass2.c:1414
+#: e2fsck/pass2.c:1228 e2fsck/pass2.c:1425
msgid "Can not continue."
msgstr ""
@@ -606,7 +606,7 @@ msgstr ""
msgid "Pass 3"
msgstr ""
-#: e2fsck/pass3.c:355
+#: e2fsck/pass3.c:357
msgid "inode loop detection bitmap"
msgstr ""
@@ -3258,7 +3258,7 @@ msgid_plural "%12u files\n"
msgstr[0] ""
msgstr[1] ""
-#: e2fsck/unix.c:241 misc/badblocks.c:1001 misc/tune2fs.c:3324 misc/util.c:135
+#: e2fsck/unix.c:241 misc/badblocks.c:1001 misc/tune2fs.c:3325 misc/util.c:135
#: resize/main.c:359
#, c-format
msgid "while determining whether %s is mounted."
@@ -3307,77 +3307,77 @@ msgstr ""
msgid "check aborted.\n"
msgstr ""
-#: e2fsck/unix.c:378
+#: e2fsck/unix.c:379
msgid " contains a file system with errors"
msgstr ""
-#: e2fsck/unix.c:380
+#: e2fsck/unix.c:381
msgid " was not cleanly unmounted"
msgstr ""
-#: e2fsck/unix.c:382
+#: e2fsck/unix.c:383
msgid " primary superblock features different from backup"
msgstr ""
-#: e2fsck/unix.c:386
+#: e2fsck/unix.c:387
#, c-format
msgid " has been mounted %u times without being checked"
msgstr ""
-#: e2fsck/unix.c:393
+#: e2fsck/unix.c:394
msgid " has filesystem last checked time in the future"
msgstr ""
-#: e2fsck/unix.c:399
+#: e2fsck/unix.c:400
#, c-format
msgid " has gone %u days without being checked"
msgstr ""
-#: e2fsck/unix.c:407
+#: e2fsck/unix.c:409
msgid "ignoring check interval, broken_system_clock set\n"
msgstr ""
-#: e2fsck/unix.c:413
+#: e2fsck/unix.c:415
msgid ", check forced.\n"
msgstr ""
-#: e2fsck/unix.c:446
+#: e2fsck/unix.c:448
#, c-format
msgid "%s: clean, %u/%u files, %llu/%llu blocks"
msgstr ""
-#: e2fsck/unix.c:466
+#: e2fsck/unix.c:469
msgid " (check deferred; on battery)"
msgstr ""
-#: e2fsck/unix.c:469
+#: e2fsck/unix.c:472
msgid " (check after next mount)"
msgstr ""
-#: e2fsck/unix.c:471
+#: e2fsck/unix.c:474
#, c-format
msgid " (check in %ld mounts)"
msgstr ""
-#: e2fsck/unix.c:621
+#: e2fsck/unix.c:624
#, c-format
msgid "ERROR: Couldn't open /dev/null (%s)\n"
msgstr ""
-#: e2fsck/unix.c:692
+#: e2fsck/unix.c:695
msgid "Invalid EA version.\n"
msgstr ""
-#: e2fsck/unix.c:705
+#: e2fsck/unix.c:708
msgid "Invalid readahead buffer size.\n"
msgstr ""
-#: e2fsck/unix.c:768
+#: e2fsck/unix.c:771
#, c-format
msgid "Unknown extended option: %s\n"
msgstr ""
-#: e2fsck/unix.c:776
+#: e2fsck/unix.c:779
msgid ""
"\n"
"Extended options are separated by commas, and may take an argument which\n"
@@ -3385,87 +3385,87 @@ msgid ""
"\n"
msgstr ""
-#: e2fsck/unix.c:780
+#: e2fsck/unix.c:783
msgid "\tea_ver=<ea_version (1 or 2)>\n"
msgstr ""
-#: e2fsck/unix.c:789
+#: e2fsck/unix.c:792
msgid "\treadahead_kb=<buffer size>\n"
msgstr ""
-#: e2fsck/unix.c:802
+#: e2fsck/unix.c:805
#, c-format
msgid ""
"Syntax error in e2fsck config file (%s, line #%d)\n"
"\t%s\n"
msgstr ""
-#: e2fsck/unix.c:875
+#: e2fsck/unix.c:878
#, c-format
msgid "Error validating file descriptor %d: %s\n"
msgstr ""
-#: e2fsck/unix.c:879
+#: e2fsck/unix.c:882
msgid "Invalid completion information file descriptor"
msgstr ""
-#: e2fsck/unix.c:894
+#: e2fsck/unix.c:897
msgid "Only one of the options -p/-a, -n or -y may be specified."
msgstr ""
-#: e2fsck/unix.c:915
+#: e2fsck/unix.c:918
#, c-format
msgid "The -t option is not supported on this version of e2fsck.\n"
msgstr ""
-#: e2fsck/unix.c:947 e2fsck/unix.c:1025 misc/e2initrd_helper.c:331
-#: misc/tune2fs.c:1914 misc/tune2fs.c:2214 misc/tune2fs.c:2232
+#: e2fsck/unix.c:950 e2fsck/unix.c:1028 misc/e2initrd_helper.c:331
+#: misc/tune2fs.c:1920 misc/tune2fs.c:2220 misc/tune2fs.c:2238
#, c-format
msgid "Unable to resolve '%s'"
msgstr ""
-#: e2fsck/unix.c:1004
+#: e2fsck/unix.c:1007
msgid "The -n and -D options are incompatible."
msgstr ""
-#: e2fsck/unix.c:1009
+#: e2fsck/unix.c:1012
msgid "The -n and -c options are incompatible."
msgstr ""
-#: e2fsck/unix.c:1014
+#: e2fsck/unix.c:1017
msgid "The -n and -l/-L options are incompatible."
msgstr ""
-#: e2fsck/unix.c:1038
+#: e2fsck/unix.c:1041
msgid "The -D and -E fixes_only options are incompatible."
msgstr ""
-#: e2fsck/unix.c:1044
+#: e2fsck/unix.c:1047
msgid "The -E bmap2extent and fixes_only options are incompatible."
msgstr ""
-#: e2fsck/unix.c:1095
+#: e2fsck/unix.c:1098
#, c-format
msgid "while opening %s for flushing"
msgstr ""
-#: e2fsck/unix.c:1101 resize/main.c:391
+#: e2fsck/unix.c:1104 resize/main.c:391
#, c-format
msgid "while trying to flush %s"
msgstr ""
-#: e2fsck/unix.c:1108
+#: e2fsck/unix.c:1111
msgid "The -c and the -l/-L options may not be both used at the same time.\n"
msgstr ""
-#: e2fsck/unix.c:1155
+#: e2fsck/unix.c:1158
#, c-format
msgid ""
"E2FSCK_JBD_DEBUG \"%s\" not an integer\n"
"\n"
msgstr ""
-#: e2fsck/unix.c:1164
+#: e2fsck/unix.c:1167
#, c-format
msgid ""
"\n"
@@ -3473,31 +3473,31 @@ msgid ""
"\n"
msgstr ""
-#: e2fsck/unix.c:1262
+#: e2fsck/unix.c:1265
#, c-format
msgid ""
"MMP interval is %u seconds and total wait time is %u seconds. Please "
"wait...\n"
msgstr ""
-#: e2fsck/unix.c:1279 e2fsck/unix.c:1284
+#: e2fsck/unix.c:1282 e2fsck/unix.c:1287
msgid "while checking MMP block"
msgstr ""
-#: e2fsck/unix.c:1286
+#: e2fsck/unix.c:1289
#, c-format
msgid ""
"If you are sure the filesystem is not in use on any node, run:\n"
"'tune2fs -f -E clear_mmp %s'\n"
msgstr ""
-#: e2fsck/unix.c:1302
+#: e2fsck/unix.c:1305
msgid "while reading MMP block"
msgstr ""
-#: e2fsck/unix.c:1322 e2fsck/unix.c:1374 misc/e2undo.c:240 misc/e2undo.c:285
-#: misc/mke2fs.c:2802 misc/mke2fs.c:2853 misc/tune2fs.c:2954
-#: misc/tune2fs.c:2999 resize/main.c:188 resize/main.c:233
+#: e2fsck/unix.c:1325 e2fsck/unix.c:1377 misc/e2undo.c:242 misc/e2undo.c:287
+#: misc/mke2fs.c:2826 misc/mke2fs.c:2877 misc/tune2fs.c:2960
+#: misc/tune2fs.c:3005 resize/main.c:188 resize/main.c:233
#, c-format
msgid ""
"Overwriting existing filesystem; this can be undone using the command:\n"
@@ -3505,215 +3505,215 @@ msgid ""
"\n"
msgstr ""
-#: e2fsck/unix.c:1363 misc/e2undo.c:274 misc/mke2fs.c:2842 misc/tune2fs.c:2988
+#: e2fsck/unix.c:1366 misc/e2undo.c:276 misc/mke2fs.c:2866 misc/tune2fs.c:2994
#: resize/main.c:222
#, c-format
msgid "while trying to delete %s"
msgstr ""
-#: e2fsck/unix.c:1389 misc/mke2fs.c:2868 resize/main.c:243
+#: e2fsck/unix.c:1392 misc/mke2fs.c:2892 resize/main.c:243
msgid "while trying to setup undo file\n"
msgstr ""
-#: e2fsck/unix.c:1433
+#: e2fsck/unix.c:1436
msgid "Error: ext2fs library version out of date!\n"
msgstr ""
-#: e2fsck/unix.c:1440
+#: e2fsck/unix.c:1443
msgid "while trying to initialize program"
msgstr ""
-#: e2fsck/unix.c:1477
+#: e2fsck/unix.c:1480
#, c-format
msgid "\tUsing %s, %s\n"
msgstr ""
-#: e2fsck/unix.c:1489
+#: e2fsck/unix.c:1492
msgid "need terminal for interactive repairs"
msgstr ""
-#: e2fsck/unix.c:1550
+#: e2fsck/unix.c:1553
#, c-format
msgid "%s: %s trying backup blocks...\n"
msgstr ""
-#: e2fsck/unix.c:1552
+#: e2fsck/unix.c:1555
msgid "Superblock invalid,"
msgstr ""
-#: e2fsck/unix.c:1553
+#: e2fsck/unix.c:1556
msgid "Group descriptors look bad..."
msgstr ""
-#: e2fsck/unix.c:1563
+#: e2fsck/unix.c:1566
#, c-format
msgid "%s: %s while using the backup blocks"
msgstr ""
-#: e2fsck/unix.c:1567
+#: e2fsck/unix.c:1570
#, c-format
msgid "%s: going back to original superblock\n"
msgstr ""
-#: e2fsck/unix.c:1596
+#: e2fsck/unix.c:1599
msgid ""
"The filesystem revision is apparently too high for this version of e2fsck.\n"
"(Or the filesystem superblock is corrupt)\n"
"\n"
msgstr ""
-#: e2fsck/unix.c:1603
+#: e2fsck/unix.c:1606
msgid "Could this be a zero-length partition?\n"
msgstr ""
-#: e2fsck/unix.c:1605
+#: e2fsck/unix.c:1608
#, c-format
msgid "You must have %s access to the filesystem or be root\n"
msgstr ""
-#: e2fsck/unix.c:1611
+#: e2fsck/unix.c:1614
msgid "Possibly non-existent or swap device?\n"
msgstr ""
-#: e2fsck/unix.c:1613
+#: e2fsck/unix.c:1616
msgid "Filesystem mounted or opened exclusively by another program?\n"
msgstr ""
-#: e2fsck/unix.c:1617
+#: e2fsck/unix.c:1620
msgid "Possibly non-existent device?\n"
msgstr ""
-#: e2fsck/unix.c:1620
+#: e2fsck/unix.c:1623
msgid ""
"Disk write-protected; use the -n option to do a read-only\n"
"check of the device.\n"
msgstr ""
-#: e2fsck/unix.c:1635
+#: e2fsck/unix.c:1638
#, c-format
msgid "%s: Trying to load superblock despite errors...\n"
msgstr ""
-#: e2fsck/unix.c:1710
+#: e2fsck/unix.c:1713
msgid "Get a newer version of e2fsck!"
msgstr ""
-#: e2fsck/unix.c:1770
+#: e2fsck/unix.c:1773
#, c-format
msgid "while checking journal for %s"
msgstr ""
-#: e2fsck/unix.c:1773
+#: e2fsck/unix.c:1776
msgid "Cannot proceed with file system check"
msgstr ""
-#: e2fsck/unix.c:1784
+#: e2fsck/unix.c:1787
msgid ""
"Warning: skipping journal recovery because doing a read-only filesystem "
"check.\n"
msgstr ""
-#: e2fsck/unix.c:1796
+#: e2fsck/unix.c:1799
#, c-format
msgid "unable to set superblock flags on %s\n"
msgstr ""
-#: e2fsck/unix.c:1802
+#: e2fsck/unix.c:1805
#, c-format
msgid "Journal checksum error found in %s\n"
msgstr ""
-#: e2fsck/unix.c:1806
+#: e2fsck/unix.c:1809
#, c-format
msgid "Journal corrupted in %s\n"
msgstr ""
-#: e2fsck/unix.c:1810
+#: e2fsck/unix.c:1813
#, c-format
msgid "while recovering journal of %s"
msgstr ""
-#: e2fsck/unix.c:1832
+#: e2fsck/unix.c:1835
#, c-format
msgid "%s has unsupported feature(s):"
msgstr ""
-#: e2fsck/unix.c:1847
+#: e2fsck/unix.c:1850
#, c-format
msgid "%s has unsupported encoding: %0x\n"
msgstr ""
-#: e2fsck/unix.c:1897
+#: e2fsck/unix.c:1900
#, c-format
msgid "%s: %s while reading bad blocks inode\n"
msgstr ""
-#: e2fsck/unix.c:1900
+#: e2fsck/unix.c:1903
msgid "This doesn't bode well, but we'll try to go on...\n"
msgstr ""
-#: e2fsck/unix.c:1943
+#: e2fsck/unix.c:1946
#, c-format
msgid "Creating journal (%d blocks): "
msgstr ""
-#: e2fsck/unix.c:1952 e2fsck/unix.c:2024
+#: e2fsck/unix.c:1955 e2fsck/unix.c:2027
msgid " Done.\n"
msgstr ""
-#: e2fsck/unix.c:1954
+#: e2fsck/unix.c:1957
msgid ""
"\n"
"*** journal has been regenerated ***\n"
msgstr ""
-#: e2fsck/unix.c:1960
+#: e2fsck/unix.c:1963
msgid "aborted"
msgstr ""
-#: e2fsck/unix.c:1962
+#: e2fsck/unix.c:1965
#, c-format
msgid "%s: e2fsck canceled.\n"
msgstr ""
-#: e2fsck/unix.c:2012
+#: e2fsck/unix.c:2015
#, c-format
msgid "Creating orphan file (%d blocks): "
msgstr ""
-#: e2fsck/unix.c:2056
+#: e2fsck/unix.c:2059
msgid "Restarting e2fsck from the beginning...\n"
msgstr ""
-#: e2fsck/unix.c:2060
+#: e2fsck/unix.c:2063
msgid "while resetting context"
msgstr ""
-#: e2fsck/unix.c:2120
+#: e2fsck/unix.c:2123
#, c-format
msgid ""
"\n"
"%s: ***** FILE SYSTEM ERRORS CORRECTED *****\n"
msgstr ""
-#: e2fsck/unix.c:2122
+#: e2fsck/unix.c:2125
#, c-format
msgid "%s: File system was modified.\n"
msgstr ""
-#: e2fsck/unix.c:2126 e2fsck/util.c:67
+#: e2fsck/unix.c:2129 e2fsck/util.c:67
#, c-format
msgid ""
"\n"
"%s: ***** FILE SYSTEM WAS MODIFIED *****\n"
msgstr ""
-#: e2fsck/unix.c:2131
+#: e2fsck/unix.c:2134
#, c-format
msgid "%s: ***** REBOOT SYSTEM *****\n"
msgstr ""
-#: e2fsck/unix.c:2141 e2fsck/util.c:73
+#: e2fsck/unix.c:2144 e2fsck/util.c:73
#, c-format
msgid ""
"\n"
@@ -3819,37 +3819,37 @@ msgid ""
"\t(i.e., without -a or -p options)\n"
msgstr ""
-#: e2fsck/util.c:437 e2fsck/util.c:447
+#: e2fsck/util.c:437 e2fsck/util.c:448
#, c-format
msgid "Memory used: %lluk/%lluk (%lluk/%lluk), "
msgstr ""
-#: e2fsck/util.c:453
+#: e2fsck/util.c:454
#, c-format
msgid "Memory used: %lluk, "
msgstr ""
-#: e2fsck/util.c:459
+#: e2fsck/util.c:460
#, c-format
msgid "time: %5.2f/%5.2f/%5.2f\n"
msgstr ""
-#: e2fsck/util.c:464
+#: e2fsck/util.c:465
#, c-format
msgid "elapsed time: %6.3f\n"
msgstr ""
-#: e2fsck/util.c:499 e2fsck/util.c:513
+#: e2fsck/util.c:500 e2fsck/util.c:514
#, c-format
msgid "while reading inode %lu in %s"
msgstr ""
-#: e2fsck/util.c:527 e2fsck/util.c:540
+#: e2fsck/util.c:528 e2fsck/util.c:541
#, c-format
msgid "while writing inode %lu in %s"
msgstr ""
-#: e2fsck/util.c:799
+#: e2fsck/util.c:817
msgid ""
"UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is "
"running.\n"
@@ -4138,164 +4138,168 @@ msgstr ""
msgid "Must use '-v', =, - or +\n"
msgstr ""
-#: misc/create_inode.c:80 misc/create_inode.c:119
+#: misc/create_inode.c:82 misc/create_inode.c:121
#, c-format
msgid "while reading inode %u"
msgstr ""
-#: misc/create_inode.c:90 misc/create_inode.c:298 misc/create_inode.c:363
-#: misc/create_inode.c:401
+#: misc/create_inode.c:92 misc/create_inode.c:301 misc/create_inode.c:368
+#: misc/create_inode.c:406
msgid "while expanding directory"
msgstr ""
-#: misc/create_inode.c:97
+#: misc/create_inode.c:99
#, c-format
msgid "while linking \"%s\""
msgstr ""
-#: misc/create_inode.c:105 misc/create_inode.c:134 misc/create_inode.c:332
+#: misc/create_inode.c:107 misc/create_inode.c:136 misc/create_inode.c:337
#, c-format
msgid "while writing inode %u"
msgstr ""
-#: misc/create_inode.c:156 misc/create_inode.c:187
+#: misc/create_inode.c:158 misc/create_inode.c:189
#, c-format
msgid "while listing attributes of \"%s\""
msgstr ""
-#: misc/create_inode.c:167
+#: misc/create_inode.c:169
#, c-format
msgid "while opening inode %u"
msgstr ""
-#: misc/create_inode.c:174
+#: misc/create_inode.c:176
#, c-format
msgid "while reading xattrs for inode %u"
msgstr ""
-#: misc/create_inode.c:180 misc/create_inode.c:207 misc/create_inode.c:1064
-#: misc/e2undo.c:186 misc/e2undo.c:483 misc/e2undo.c:489 misc/e2undo.c:495
+#: misc/create_inode.c:182 misc/create_inode.c:209 misc/create_inode.c:1066
+#: misc/e2undo.c:188 misc/e2undo.c:485 misc/e2undo.c:491 misc/e2undo.c:497
#: misc/mke2fs.c:363
msgid "while allocating memory"
msgstr ""
-#: misc/create_inode.c:200 misc/create_inode.c:216
+#: misc/create_inode.c:202 misc/create_inode.c:218
#, c-format
msgid "while reading attribute \"%s\" of \"%s\""
msgstr ""
-#: misc/create_inode.c:225
+#: misc/create_inode.c:227
#, c-format
msgid "while writing attribute \"%s\" to inode %u"
msgstr ""
-#: misc/create_inode.c:235
+#: misc/create_inode.c:237
#, c-format
msgid "while closing inode %u"
msgstr ""
-#: misc/create_inode.c:285
+#: misc/create_inode.c:288
#, c-format
msgid "while allocating inode \"%s\""
msgstr ""
-#: misc/create_inode.c:304
+#: misc/create_inode.c:307
#, c-format
msgid "while creating inode \"%s\""
msgstr ""
-#: misc/create_inode.c:370
+#: misc/create_inode.c:375
#, c-format
msgid "while creating symlink \"%s\""
msgstr ""
-#: misc/create_inode.c:388 misc/create_inode.c:652 misc/create_inode.c:984
+#: misc/create_inode.c:393 misc/create_inode.c:658 misc/create_inode.c:986
#, c-format
msgid "while looking up \"%s\""
msgstr ""
-#: misc/create_inode.c:408
+#: misc/create_inode.c:413
#, c-format
msgid "while creating directory \"%s\""
msgstr ""
-#: misc/create_inode.c:638
+#: misc/create_inode.c:644
#, c-format
msgid "while opening \"%s\" to copy"
msgstr ""
-#: misc/create_inode.c:822
+#: misc/create_inode.c:824
#, c-format
msgid "while changing working directory to \"%s\""
msgstr ""
-#: misc/create_inode.c:832
+#: misc/create_inode.c:834
#, c-format
msgid "while scanning directory \"%s\""
msgstr ""
-#: misc/create_inode.c:842
+#: misc/create_inode.c:844
#, c-format
msgid "while lstat \"%s\""
msgstr ""
-#: misc/create_inode.c:892
+#: misc/create_inode.c:894
#, c-format
msgid "while creating special file \"%s\""
msgstr ""
-#: misc/create_inode.c:904
+#: misc/create_inode.c:906
msgid "malloc failed"
msgstr ""
-#: misc/create_inode.c:912
+#: misc/create_inode.c:914
#, c-format
msgid "while trying to read link \"%s\""
msgstr ""
-#: misc/create_inode.c:919
+#: misc/create_inode.c:921
msgid "symlink increased in size between lstat() and readlink()"
msgstr ""
-#: misc/create_inode.c:930
+#: misc/create_inode.c:932
#, c-format
msgid "while writing symlink\"%s\""
msgstr ""
-#: misc/create_inode.c:942
+#: misc/create_inode.c:944
#, c-format
msgid "while writing file \"%s\""
msgstr ""
-#: misc/create_inode.c:955
+#: misc/create_inode.c:957
#, c-format
msgid "while making dir \"%s\""
msgstr ""
-#: misc/create_inode.c:973
+#: misc/create_inode.c:975
msgid "while changing directory"
msgstr ""
-#: misc/create_inode.c:979
+#: misc/create_inode.c:981
#, c-format
msgid "ignoring entry \"%s\""
msgstr ""
-#: misc/create_inode.c:992
+#: misc/create_inode.c:994
#, c-format
msgid "while setting inode for \"%s\""
msgstr ""
-#: misc/create_inode.c:999
+#: misc/create_inode.c:1001
#, c-format
msgid "while setting xattrs for \"%s\""
msgstr ""
-#: misc/create_inode.c:1025
+#: misc/create_inode.c:1027
msgid "while saving inode data"
msgstr ""
-#: misc/create_inode.c:1075
+#: misc/create_inode.c:1086
+msgid "while calling stat"
+msgstr ""
+
+#: misc/create_inode.c:1098
msgid "while copying xattrs on root directory"
msgstr ""
@@ -4413,7 +4417,7 @@ msgstr ""
msgid "Bad blocks: %u"
msgstr ""
-#: misc/dumpe2fs.c:375 misc/tune2fs.c:409
+#: misc/dumpe2fs.c:375 misc/tune2fs.c:413
msgid "while reading journal inode"
msgstr ""
@@ -4429,7 +4433,7 @@ msgstr ""
msgid "Journal superblock magic number invalid!\n"
msgstr ""
-#: misc/dumpe2fs.c:414 misc/tune2fs.c:252
+#: misc/dumpe2fs.c:414 misc/tune2fs.c:256
msgid "while reading journal superblock"
msgstr ""
@@ -4446,7 +4450,7 @@ msgstr ""
msgid "reading MMP block %llu from '%s'\n"
msgstr ""
-#: misc/dumpe2fs.c:520 misc/mke2fs.c:813 misc/tune2fs.c:2254
+#: misc/dumpe2fs.c:520 misc/mke2fs.c:837 misc/tune2fs.c:2260
msgid "Couldn't allocate memory to parse options!\n"
msgstr ""
@@ -4474,13 +4478,13 @@ msgid ""
"\tblocksize=<blocksize>\n"
msgstr ""
-#: misc/dumpe2fs.c:663 misc/mke2fs.c:1939
+#: misc/dumpe2fs.c:663 misc/mke2fs.c:1963
#, c-format
msgid "\tUsing %s\n"
msgstr ""
-#: misc/dumpe2fs.c:710 misc/e2image.c:1643 misc/tune2fs.c:3249
-#: resize/main.c:424
+#: misc/dumpe2fs.c:710 misc/e2image.c:1643 misc/tune2fs.c:3250
+#: resize/main.c:426
msgid "Couldn't find valid filesystem superblock.\n"
msgstr ""
@@ -4778,7 +4782,7 @@ msgstr ""
msgid "e2label: not an ext2 filesystem\n"
msgstr ""
-#: misc/e2label.c:97 misc/tune2fs.c:3136 misc/tune2fs.c:3459
+#: misc/e2label.c:97 misc/tune2fs.c:3137 misc/tune2fs.c:3460
#, c-format
msgid "Warning: label too long, truncating.\n"
msgstr ""
@@ -4793,7 +4797,7 @@ msgstr ""
msgid "e2label: error writing superblock\n"
msgstr ""
-#: misc/e2label.c:117 misc/tune2fs.c:1906
+#: misc/e2label.c:117 misc/tune2fs.c:1912
#, c-format
msgid "Usage: e2label device [newlabel]\n"
msgstr ""
@@ -4813,143 +4817,143 @@ msgstr ""
msgid "UUID does not match.\n"
msgstr ""
-#: misc/e2undo.c:158
+#: misc/e2undo.c:159
msgid "Last mount time does not match.\n"
msgstr ""
-#: misc/e2undo.c:160
+#: misc/e2undo.c:162
msgid "Last write time does not match.\n"
msgstr ""
-#: misc/e2undo.c:162
+#: misc/e2undo.c:164
msgid "Lifetime write counter does not match.\n"
msgstr ""
-#: misc/e2undo.c:176
+#: misc/e2undo.c:178
msgid "while reading filesystem superblock."
msgstr ""
-#: misc/e2undo.c:192
+#: misc/e2undo.c:194
msgid "while fetching superblock"
msgstr ""
-#: misc/e2undo.c:205
+#: misc/e2undo.c:207
#, c-format
msgid "Undo file superblock checksum doesn't match.\n"
msgstr ""
-#: misc/e2undo.c:344
+#: misc/e2undo.c:346
#, c-format
msgid "illegal offset - %s"
msgstr ""
-#: misc/e2undo.c:368
+#: misc/e2undo.c:370
#, c-format
msgid "Will not write to an undo file while replaying it.\n"
msgstr ""
-#: misc/e2undo.c:377
+#: misc/e2undo.c:379
#, c-format
msgid "while opening undo file `%s'\n"
msgstr ""
-#: misc/e2undo.c:384
+#: misc/e2undo.c:386
msgid "while reading undo file"
msgstr ""
-#: misc/e2undo.c:389
+#: misc/e2undo.c:391
#, c-format
msgid "%s: Not an undo file.\n"
msgstr ""
-#: misc/e2undo.c:400
+#: misc/e2undo.c:402
#, c-format
msgid "%s: Header checksum doesn't match.\n"
msgstr ""
-#: misc/e2undo.c:407
+#: misc/e2undo.c:409
#, c-format
msgid "%s: Corrupt undo file header.\n"
msgstr ""
-#: misc/e2undo.c:411
+#: misc/e2undo.c:413
#, c-format
msgid "%s: Undo block size too large.\n"
msgstr ""
-#: misc/e2undo.c:416
+#: misc/e2undo.c:418
#, c-format
msgid "%s: Undo block size too small.\n"
msgstr ""
-#: misc/e2undo.c:429
+#: misc/e2undo.c:431
#, c-format
msgid "%s: Unknown undo file feature set.\n"
msgstr ""
-#: misc/e2undo.c:437
+#: misc/e2undo.c:439
#, c-format
msgid "Error while determining whether %s is mounted."
msgstr ""
-#: misc/e2undo.c:443
+#: misc/e2undo.c:445
msgid "e2undo should only be run on unmounted filesystems"
msgstr ""
-#: misc/e2undo.c:459
+#: misc/e2undo.c:461
#, c-format
msgid "while opening `%s'"
msgstr ""
-#: misc/e2undo.c:470
+#: misc/e2undo.c:472
msgid "specified offset is too large"
msgstr ""
-#: misc/e2undo.c:511
+#: misc/e2undo.c:513
msgid "while reading keys"
msgstr ""
-#: misc/e2undo.c:523
+#: misc/e2undo.c:525
#, c-format
msgid "%s: wrong key magic at %llu\n"
msgstr ""
-#: misc/e2undo.c:533
+#: misc/e2undo.c:535
#, c-format
msgid "%s: key block checksum error at %llu.\n"
msgstr ""
-#: misc/e2undo.c:556
+#: misc/e2undo.c:558
#, c-format
msgid "%s: block %llu is too long."
msgstr ""
-#: misc/e2undo.c:569 misc/e2undo.c:606
+#: misc/e2undo.c:571 misc/e2undo.c:608
#, c-format
msgid "while fetching block %llu."
msgstr ""
-#: misc/e2undo.c:581
+#: misc/e2undo.c:583
#, c-format
msgid "checksum error in filesystem block %llu (undo blk %llu)\n"
msgstr ""
-#: misc/e2undo.c:622
+#: misc/e2undo.c:624
#, c-format
msgid "while writing block %llu."
msgstr ""
-#: misc/e2undo.c:629
+#: misc/e2undo.c:631
#, c-format
msgid "Undo file corruption; run e2fsck NOW!\n"
msgstr ""
-#: misc/e2undo.c:631
+#: misc/e2undo.c:633
#, c-format
msgid "IO error during replay; run e2fsck NOW!\n"
msgstr ""
-#: misc/e2undo.c:634
+#: misc/e2undo.c:636
#, c-format
msgid "Incomplete undo record; run e2fsck.\n"
msgstr ""
@@ -4998,7 +5002,7 @@ msgid ""
"mount_time sb_uuid label\n"
msgstr ""
-#: misc/findsuper.c:265
+#: misc/findsuper.c:264
#, c-format
msgid ""
"\n"
@@ -5099,56 +5103,56 @@ msgstr ""
msgid "%s: too many arguments\n"
msgstr ""
-#: misc/fuse2fs.c:3750
+#: misc/fuse2fs.c:3804
msgid "Mounting read-only.\n"
msgstr ""
-#: misc/fuse2fs.c:3774
+#: misc/fuse2fs.c:3828
#, c-format
msgid "%s: Allowing users to allocate all blocks. This is dangerous!\n"
msgstr ""
-#: misc/fuse2fs.c:3788 misc/fuse2fs.c:3806
+#: misc/fuse2fs.c:3842 misc/fuse2fs.c:3860
#, c-format
msgid "%s: %s.\n"
msgstr ""
-#: misc/fuse2fs.c:3789 misc/fuse2fs.c:3808 misc/tune2fs.c:3350
+#: misc/fuse2fs.c:3843 misc/fuse2fs.c:3862 misc/tune2fs.c:3351
#, c-format
msgid "Please run e2fsck -fy %s.\n"
msgstr ""
-#: misc/fuse2fs.c:3799
+#: misc/fuse2fs.c:3853
#, c-format
msgid "%s: mounting read-only without recovering journal\n"
msgstr ""
-#: misc/fuse2fs.c:3815
+#: misc/fuse2fs.c:3869
msgid "Journal needs recovery; running `e2fsck -E journal_only' is required.\n"
msgstr ""
-#: misc/fuse2fs.c:3823
+#: misc/fuse2fs.c:3877
#, c-format
msgid "%s: Writing to the journal is not supported.\n"
msgstr ""
-#: misc/fuse2fs.c:3838
+#: misc/fuse2fs.c:3892
msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
msgstr ""
-#: misc/fuse2fs.c:3842
+#: misc/fuse2fs.c:3896
msgid "Warning: Maximal mount count reached, running e2fsck is recommended.\n"
msgstr ""
-#: misc/fuse2fs.c:3847
+#: misc/fuse2fs.c:3901
msgid "Warning: Check time reached; running e2fsck is recommended.\n"
msgstr ""
-#: misc/fuse2fs.c:3851
+#: misc/fuse2fs.c:3905
msgid "Orphans detected; running e2fsck is recommended.\n"
msgstr ""
-#: misc/fuse2fs.c:3855
+#: misc/fuse2fs.c:3909
msgid "Errors detected; running e2fsck is required.\n"
msgstr ""
@@ -5181,7 +5185,7 @@ msgstr ""
msgid ""
"Usage: %s [-c|-l filename] [-b block-size] [-C cluster-size]\n"
"\t[-i bytes-per-inode] [-I inode-size] [-J journal-options]\n"
-"\t[-G flex-group-size] [-N number-of-inodes] [-d root-directory]\n"
+"\t[-G flex-group-size] [-N number-of-inodes] [-d root-directory|tarball]\n"
"\t[-m reserved-blocks-percentage] [-o creator-os]\n"
"\t[-g blocks-per-group] [-L volume-label] [-M last-mounted-directory]\n"
"\t[-O feature[,...]] [-r fs-revision] [-E extended-option[,...]]\n"
@@ -5226,7 +5230,7 @@ msgid ""
"\n"
msgstr ""
-#: misc/mke2fs.c:347 misc/mke2fs.c:3374
+#: misc/mke2fs.c:347 misc/mke2fs.c:3398
msgid "while marking bad blocks as used"
msgstr ""
@@ -5238,256 +5242,256 @@ msgstr ""
msgid "Writing inode tables: "
msgstr ""
-#: misc/mke2fs.c:446
+#: misc/mke2fs.c:456 misc/mke2fs.c:475
#, c-format
msgid ""
"\n"
"Could not write %d blocks in inode table starting at %llu: %s\n"
msgstr ""
-#: misc/mke2fs.c:461 misc/mke2fs.c:2914 misc/mke2fs.c:3334
+#: misc/mke2fs.c:485 misc/mke2fs.c:2938 misc/mke2fs.c:3358
msgid "done \n"
msgstr ""
-#: misc/mke2fs.c:476
+#: misc/mke2fs.c:500
msgid "while creating root dir"
msgstr ""
-#: misc/mke2fs.c:483
+#: misc/mke2fs.c:507
msgid "while reading root inode"
msgstr ""
-#: misc/mke2fs.c:495
+#: misc/mke2fs.c:519
msgid "while setting root inode ownership"
msgstr ""
-#: misc/mke2fs.c:513
+#: misc/mke2fs.c:537
msgid "while creating /lost+found"
msgstr ""
-#: misc/mke2fs.c:520
+#: misc/mke2fs.c:544
msgid "while looking up /lost+found"
msgstr ""
-#: misc/mke2fs.c:533
+#: misc/mke2fs.c:557
msgid "while expanding /lost+found"
msgstr ""
-#: misc/mke2fs.c:548
+#: misc/mke2fs.c:572
msgid "while setting bad block inode"
msgstr ""
-#: misc/mke2fs.c:575
+#: misc/mke2fs.c:599
#, c-format
msgid "Out of memory erasing sectors %d-%d\n"
msgstr ""
-#: misc/mke2fs.c:585
+#: misc/mke2fs.c:609
#, c-format
msgid "Warning: could not read block 0: %s\n"
msgstr ""
-#: misc/mke2fs.c:603
+#: misc/mke2fs.c:627
#, c-format
msgid "Warning: could not erase sector %d: %s\n"
msgstr ""
-#: misc/mke2fs.c:619
+#: misc/mke2fs.c:643
msgid "while splitting the journal size"
msgstr ""
-#: misc/mke2fs.c:626
+#: misc/mke2fs.c:650
msgid "while initializing journal superblock"
msgstr ""
-#: misc/mke2fs.c:634
+#: misc/mke2fs.c:658
msgid "Zeroing journal device: "
msgstr ""
-#: misc/mke2fs.c:646
+#: misc/mke2fs.c:670
#, c-format
msgid "while zeroing journal device (block %llu, count %d)"
msgstr ""
-#: misc/mke2fs.c:664
+#: misc/mke2fs.c:688
msgid "while writing journal superblock"
msgstr ""
-#: misc/mke2fs.c:678
+#: misc/mke2fs.c:702
#, c-format
msgid "Creating filesystem with %llu %dk blocks and %u inodes\n"
msgstr ""
-#: misc/mke2fs.c:686
+#: misc/mke2fs.c:710
#, c-format
msgid ""
"warning: %llu blocks unused.\n"
"\n"
msgstr ""
-#: misc/mke2fs.c:690
+#: misc/mke2fs.c:714
#, c-format
msgid "Filesystem label=%.*s\n"
msgstr ""
-#: misc/mke2fs.c:694
+#: misc/mke2fs.c:718
#, c-format
msgid "OS type: %s\n"
msgstr ""
-#: misc/mke2fs.c:696
+#: misc/mke2fs.c:720
#, c-format
msgid "Block size=%u (log=%u)\n"
msgstr ""
-#: misc/mke2fs.c:699
+#: misc/mke2fs.c:723
#, c-format
msgid "Cluster size=%u (log=%u)\n"
msgstr ""
-#: misc/mke2fs.c:703
+#: misc/mke2fs.c:727
#, c-format
msgid "Fragment size=%u (log=%u)\n"
msgstr ""
-#: misc/mke2fs.c:705
+#: misc/mke2fs.c:729
#, c-format
msgid "Stride=%u blocks, Stripe width=%u blocks\n"
msgstr ""
-#: misc/mke2fs.c:707
+#: misc/mke2fs.c:731
#, c-format
msgid "%u inodes, %llu blocks\n"
msgstr ""
-#: misc/mke2fs.c:709
+#: misc/mke2fs.c:733
#, c-format
msgid "%llu blocks (%2.2f%%) reserved for the super user\n"
msgstr ""
-#: misc/mke2fs.c:712
+#: misc/mke2fs.c:736
#, c-format
msgid "First data block=%u\n"
msgstr ""
-#: misc/mke2fs.c:714
+#: misc/mke2fs.c:738
#, c-format
msgid "Root directory owner=%u:%u\n"
msgstr ""
-#: misc/mke2fs.c:716
+#: misc/mke2fs.c:740
#, c-format
msgid "Maximum filesystem blocks=%lu\n"
msgstr ""
-#: misc/mke2fs.c:720
+#: misc/mke2fs.c:744
#, c-format
msgid "%u block groups\n"
msgstr ""
-#: misc/mke2fs.c:722
+#: misc/mke2fs.c:746
#, c-format
msgid "%u block group\n"
msgstr ""
-#: misc/mke2fs.c:724
+#: misc/mke2fs.c:748
#, c-format
msgid "%u blocks per group, %u clusters per group\n"
msgstr ""
-#: misc/mke2fs.c:727
+#: misc/mke2fs.c:751
#, c-format
msgid "%u blocks per group, %u fragments per group\n"
msgstr ""
-#: misc/mke2fs.c:729
+#: misc/mke2fs.c:753
#, c-format
msgid "%u inodes per group\n"
msgstr ""
-#: misc/mke2fs.c:738
+#: misc/mke2fs.c:762
#, c-format
msgid "Filesystem UUID: %s\n"
msgstr ""
-#: misc/mke2fs.c:739
+#: misc/mke2fs.c:763
msgid "Superblock backups stored on blocks: "
msgstr ""
-#: misc/mke2fs.c:835
+#: misc/mke2fs.c:859
#, c-format
msgid "%s requires '-O 64bit'\n"
msgstr ""
-#: misc/mke2fs.c:841
+#: misc/mke2fs.c:865
#, c-format
msgid "'%s' must be before 'resize=%u'\n"
msgstr ""
-#: misc/mke2fs.c:854
+#: misc/mke2fs.c:878
#, c-format
msgid "Invalid desc_size: '%s'\n"
msgstr ""
-#: misc/mke2fs.c:868
+#: misc/mke2fs.c:892
#, c-format
msgid "Invalid hash seed: %s\n"
msgstr ""
-#: misc/mke2fs.c:880
+#: misc/mke2fs.c:904
#, c-format
msgid "Invalid offset: %s\n"
msgstr ""
-#: misc/mke2fs.c:894 misc/tune2fs.c:2282
+#: misc/mke2fs.c:918 misc/tune2fs.c:2288
#, c-format
msgid "Invalid mmp_update_interval: %s\n"
msgstr ""
-#: misc/mke2fs.c:911
+#: misc/mke2fs.c:935
#, c-format
msgid "Invalid # of backup superblocks: %s\n"
msgstr ""
-#: misc/mke2fs.c:933
+#: misc/mke2fs.c:957
#, c-format
msgid "Invalid stride parameter: %s\n"
msgstr ""
-#: misc/mke2fs.c:948
+#: misc/mke2fs.c:972
#, c-format
msgid "Invalid stripe-width parameter: %s\n"
msgstr ""
-#: misc/mke2fs.c:971
+#: misc/mke2fs.c:995
#, c-format
msgid "Invalid resize parameter: %s\n"
msgstr ""
-#: misc/mke2fs.c:978
+#: misc/mke2fs.c:1002
msgid "The resize maximum must be greater than the filesystem size.\n"
msgstr ""
-#: misc/mke2fs.c:1002
+#: misc/mke2fs.c:1026
msgid "On-line resizing not supported with revision 0 filesystems\n"
msgstr ""
-#: misc/mke2fs.c:1033 misc/mke2fs.c:1042
+#: misc/mke2fs.c:1057 misc/mke2fs.c:1066
#, c-format
msgid "Invalid root_owner: '%s'\n"
msgstr ""
-#: misc/mke2fs.c:1087
+#: misc/mke2fs.c:1111
#, c-format
msgid "Invalid encoding: %s"
msgstr ""
-#: misc/mke2fs.c:1109 misc/tune2fs.c:2417
+#: misc/mke2fs.c:1133 misc/tune2fs.c:2423
#, c-format
msgid "Invalid size of orphan file %s\n"
msgstr ""
-#: misc/mke2fs.c:1120
+#: misc/mke2fs.c:1144
#, c-format
msgid ""
"\n"
@@ -5517,7 +5521,7 @@ msgid ""
"\n"
msgstr ""
-#: misc/mke2fs.c:1148
+#: misc/mke2fs.c:1172
#, c-format
msgid ""
"\n"
@@ -5525,52 +5529,52 @@ msgid ""
"\n"
msgstr ""
-#: misc/mke2fs.c:1159 misc/tune2fs.c:2433
+#: misc/mke2fs.c:1183 misc/tune2fs.c:2439
#, c-format
msgid "error: Invalid encoding flag: %s\n"
msgstr ""
-#: misc/mke2fs.c:1165 misc/tune2fs.c:2442
+#: misc/mke2fs.c:1189 misc/tune2fs.c:2448
#, c-format
msgid ""
"error: An encoding must be explicitly specified when passing encoding-flags\n"
msgstr ""
-#: misc/mke2fs.c:1216
+#: misc/mke2fs.c:1240
#, c-format
msgid ""
"Syntax error in mke2fs config file (%s, line #%d)\n"
"\t%s\n"
msgstr ""
-#: misc/mke2fs.c:1229 misc/tune2fs.c:1176
+#: misc/mke2fs.c:1253 misc/tune2fs.c:1182
#, c-format
msgid "Invalid filesystem option set: %s\n"
msgstr ""
-#: misc/mke2fs.c:1241 misc/tune2fs.c:455
+#: misc/mke2fs.c:1265 misc/tune2fs.c:459
#, c-format
msgid "Invalid mount option set: %s\n"
msgstr ""
-#: misc/mke2fs.c:1377
+#: misc/mke2fs.c:1401
#, c-format
msgid ""
"\n"
"Your mke2fs.conf file does not define the %s filesystem type.\n"
msgstr ""
-#: misc/mke2fs.c:1381
+#: misc/mke2fs.c:1405
msgid ""
"You probably need to install an updated mke2fs.conf file.\n"
"\n"
msgstr ""
-#: misc/mke2fs.c:1385
+#: misc/mke2fs.c:1409
msgid "Aborting...\n"
msgstr ""
-#: misc/mke2fs.c:1426
+#: misc/mke2fs.c:1450
#, c-format
msgid ""
"\n"
@@ -5578,164 +5582,164 @@ msgid ""
"\n"
msgstr ""
-#: misc/mke2fs.c:1616
+#: misc/mke2fs.c:1640
msgid "Couldn't allocate memory for new PATH.\n"
msgstr ""
-#: misc/mke2fs.c:1656
+#: misc/mke2fs.c:1680
#, c-format
msgid "Couldn't init profile successfully (error: %ld).\n"
msgstr ""
-#: misc/mke2fs.c:1689
+#: misc/mke2fs.c:1713
#, c-format
msgid "invalid block size - %s"
msgstr ""
-#: misc/mke2fs.c:1693
+#: misc/mke2fs.c:1717
#, c-format
msgid "Warning: blocksize %d not usable on most systems.\n"
msgstr ""
-#: misc/mke2fs.c:1709
+#: misc/mke2fs.c:1733
#, c-format
msgid "invalid cluster size - %s"
msgstr ""
-#: misc/mke2fs.c:1722
+#: misc/mke2fs.c:1746
msgid "'-R' is deprecated, use '-E' instead"
msgstr ""
-#: misc/mke2fs.c:1736 misc/tune2fs.c:2008
+#: misc/mke2fs.c:1760 misc/tune2fs.c:2014
#, c-format
msgid "bad error behavior - %s"
msgstr ""
-#: misc/mke2fs.c:1748
+#: misc/mke2fs.c:1772
msgid "Illegal number for blocks per group"
msgstr ""
-#: misc/mke2fs.c:1753
+#: misc/mke2fs.c:1777
msgid "blocks per group must be multiple of 8"
msgstr ""
-#: misc/mke2fs.c:1761
+#: misc/mke2fs.c:1785
msgid "Illegal number for flex_bg size"
msgstr ""
-#: misc/mke2fs.c:1767
+#: misc/mke2fs.c:1791
msgid "flex_bg size must be a power of 2"
msgstr ""
-#: misc/mke2fs.c:1772
+#: misc/mke2fs.c:1796
#, c-format
msgid "flex_bg size (%lu) must be less than or equal to 2^31"
msgstr ""
-#: misc/mke2fs.c:1782
+#: misc/mke2fs.c:1806
#, c-format
msgid "invalid inode ratio %s (min %d/max %d)"
msgstr ""
-#: misc/mke2fs.c:1792
+#: misc/mke2fs.c:1816
#, c-format
msgid "invalid inode size - %s"
msgstr ""
-#: misc/mke2fs.c:1807
+#: misc/mke2fs.c:1831
msgid ""
"Warning: -K option is deprecated and should not be used anymore. Use '-E "
"nodiscard' extended option instead!\n"
msgstr ""
-#: misc/mke2fs.c:1818
+#: misc/mke2fs.c:1842
msgid "in malloc for bad_blocks_filename"
msgstr ""
-#: misc/mke2fs.c:1827
+#: misc/mke2fs.c:1851
#, c-format
msgid ""
"Warning: label too long; will be truncated to '%s'\n"
"\n"
msgstr ""
-#: misc/mke2fs.c:1836
+#: misc/mke2fs.c:1860
#, c-format
msgid "invalid reserved blocks percent - %s"
msgstr ""
-#: misc/mke2fs.c:1851
+#: misc/mke2fs.c:1875
#, c-format
msgid "bad num inodes - %s"
msgstr ""
-#: misc/mke2fs.c:1864
+#: misc/mke2fs.c:1888
msgid "while allocating fs_feature string"
msgstr ""
-#: misc/mke2fs.c:1881
+#: misc/mke2fs.c:1905
#, c-format
msgid "bad revision level - %s"
msgstr ""
-#: misc/mke2fs.c:1886
+#: misc/mke2fs.c:1910
#, c-format
msgid "while trying to create revision %d"
msgstr ""
-#: misc/mke2fs.c:1900
+#: misc/mke2fs.c:1924
msgid "The -t option may only be used once"
msgstr ""
-#: misc/mke2fs.c:1908
+#: misc/mke2fs.c:1932
msgid "The -T option may only be used once"
msgstr ""
-#: misc/mke2fs.c:1964 misc/mke2fs.c:3457
+#: misc/mke2fs.c:1988 misc/mke2fs.c:3481
#, c-format
msgid "while trying to open journal device %s\n"
msgstr ""
-#: misc/mke2fs.c:1970
+#: misc/mke2fs.c:1994
#, c-format
msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
msgstr ""
-#: misc/mke2fs.c:1976
+#: misc/mke2fs.c:2000
#, c-format
msgid "Using journal device's blocksize: %d\n"
msgstr ""
-#: misc/mke2fs.c:1987
+#: misc/mke2fs.c:2011
#, c-format
msgid "invalid blocks '%s' on device '%s'"
msgstr ""
-#: misc/mke2fs.c:2007
+#: misc/mke2fs.c:2031
msgid "filesystem"
msgstr ""
-#: misc/mke2fs.c:2022 lib/support/plausible.c:187
+#: misc/mke2fs.c:2046 lib/support/plausible.c:184
#, c-format
msgid "The file %s does not exist and no size was specified.\n"
msgstr ""
-#: misc/mke2fs.c:2034 lib/support/plausible.c:195
+#: misc/mke2fs.c:2058 lib/support/plausible.c:192
#, c-format
msgid "Creating regular file %s\n"
msgstr ""
-#: misc/mke2fs.c:2039 resize/main.c:512
+#: misc/mke2fs.c:2063 resize/main.c:514
msgid "while trying to determine filesystem size"
msgstr ""
-#: misc/mke2fs.c:2045
+#: misc/mke2fs.c:2069
msgid ""
"Couldn't determine device size; you must specify\n"
"the size of the filesystem\n"
msgstr ""
-#: misc/mke2fs.c:2052
+#: misc/mke2fs.c:2076
msgid ""
"Device size reported to be zero. Invalid partition specified, or\n"
"\tpartition table wasn't reread after running fdisk, due to\n"
@@ -5743,149 +5747,149 @@ msgid ""
"\tto re-read your partition table.\n"
msgstr ""
-#: misc/mke2fs.c:2069
+#: misc/mke2fs.c:2093
msgid "Filesystem larger than apparent device size."
msgstr ""
-#: misc/mke2fs.c:2092
+#: misc/mke2fs.c:2116
msgid "Failed to parse fs types list\n"
msgstr ""
-#: misc/mke2fs.c:2158
+#: misc/mke2fs.c:2182
msgid "The HURD does not support the filetype feature.\n"
msgstr ""
-#: misc/mke2fs.c:2163
+#: misc/mke2fs.c:2187
msgid "The HURD does not support the huge_file feature.\n"
msgstr ""
-#: misc/mke2fs.c:2168
+#: misc/mke2fs.c:2192
msgid "The HURD does not support the metadata_csum feature.\n"
msgstr ""
-#: misc/mke2fs.c:2173
+#: misc/mke2fs.c:2197
msgid "The HURD does not support the ea_inode feature.\n"
msgstr ""
-#: misc/mke2fs.c:2183
+#: misc/mke2fs.c:2207
msgid "while trying to determine hardware sector size"
msgstr ""
-#: misc/mke2fs.c:2189
+#: misc/mke2fs.c:2213
msgid "while trying to determine physical sector size"
msgstr ""
-#: misc/mke2fs.c:2221
+#: misc/mke2fs.c:2245
msgid "while setting blocksize; too small for device\n"
msgstr ""
-#: misc/mke2fs.c:2226
+#: misc/mke2fs.c:2250
#, c-format
msgid ""
"Warning: specified blocksize %d is less than device physical sectorsize %d\n"
msgstr ""
-#: misc/mke2fs.c:2250
+#: misc/mke2fs.c:2274
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
"\tin 32 bits using a blocksize of %d.\n"
msgstr ""
-#: misc/mke2fs.c:2264
+#: misc/mke2fs.c:2288
#, c-format
msgid ""
"%s: Size of device (0x%llx blocks) %s too big to create\n"
"\ta filesystem using a blocksize of %d.\n"
msgstr ""
-#: misc/mke2fs.c:2286
+#: misc/mke2fs.c:2310
msgid "fs_types for mke2fs.conf resolution: "
msgstr ""
-#: misc/mke2fs.c:2293
+#: misc/mke2fs.c:2317
msgid "Filesystem features not supported with revision 0 filesystems\n"
msgstr ""
-#: misc/mke2fs.c:2301
+#: misc/mke2fs.c:2325
msgid "Sparse superblocks not supported with revision 0 filesystems\n"
msgstr ""
-#: misc/mke2fs.c:2311
+#: misc/mke2fs.c:2335
msgid "Journals not supported with revision 0 filesystems\n"
msgstr ""
-#: misc/mke2fs.c:2324
+#: misc/mke2fs.c:2348
#, c-format
msgid "invalid reserved blocks percent - %lf"
msgstr ""
-#: misc/mke2fs.c:2341
+#: misc/mke2fs.c:2365
msgid ""
"Extents MUST be enabled for a 64-bit filesystem. Pass -O extents to "
"rectify.\n"
msgstr ""
-#: misc/mke2fs.c:2361
+#: misc/mke2fs.c:2385
msgid "The cluster size may not be smaller than the block size.\n"
msgstr ""
-#: misc/mke2fs.c:2367
+#: misc/mke2fs.c:2391
msgid "specifying a cluster size requires the bigalloc feature"
msgstr ""
-#: misc/mke2fs.c:2387
+#: misc/mke2fs.c:2411
#, c-format
msgid "warning: Unable to get device geometry for %s\n"
msgstr ""
-#: misc/mke2fs.c:2399
+#: misc/mke2fs.c:2423
#, c-format
msgid "%s alignment is offset by %lu bytes.\n"
msgstr ""
-#: misc/mke2fs.c:2401
+#: misc/mke2fs.c:2425
#, c-format
msgid ""
"This may result in very poor performance, (re)-partitioning suggested.\n"
msgstr ""
-#: misc/mke2fs.c:2407
+#: misc/mke2fs.c:2431
#, c-format
msgid ""
"%s is capable of DAX but current block size %u is different from system page "
"size %u so filesystem will not support DAX.\n"
msgstr ""
-#: misc/mke2fs.c:2431
+#: misc/mke2fs.c:2455
#, c-format
msgid "%d-byte blocks too big for system (max %d)"
msgstr ""
-#: misc/mke2fs.c:2435
+#: misc/mke2fs.c:2459
#, c-format
msgid ""
"Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
msgstr ""
-#: misc/mke2fs.c:2443
+#: misc/mke2fs.c:2467
#, c-format
msgid ""
"Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata "
"and journal checksum features.\n"
msgstr ""
-#: misc/mke2fs.c:2489
+#: misc/mke2fs.c:2513
#, c-format
msgid "Unknown filename encoding from profile: %s"
msgstr ""
-#: misc/mke2fs.c:2500
+#: misc/mke2fs.c:2524
#, c-format
msgid "Unknown encoding flags from profile: %s"
msgstr ""
-#: misc/mke2fs.c:2525
+#: misc/mke2fs.c:2549
#, c-format
msgid ""
"\n"
@@ -5895,66 +5899,66 @@ msgid ""
"\n"
msgstr ""
-#: misc/mke2fs.c:2540
+#: misc/mke2fs.c:2564
#, c-format
msgid "%d byte inodes are too small for project quota"
msgstr ""
-#: misc/mke2fs.c:2562
+#: misc/mke2fs.c:2586
msgid "Can't support bigalloc feature without extents feature"
msgstr ""
-#: misc/mke2fs.c:2569
+#: misc/mke2fs.c:2593
msgid ""
"The resize_inode and meta_bg features are not compatible.\n"
"They can not be both enabled simultaneously.\n"
msgstr ""
-#: misc/mke2fs.c:2578
+#: misc/mke2fs.c:2602
msgid ""
"\n"
"Warning: bigalloc file systems with a cluster size greater than\n"
"16 times the block size is considered experimental\n"
msgstr ""
-#: misc/mke2fs.c:2590
+#: misc/mke2fs.c:2614
msgid "reserved online resize blocks not supported on non-sparse filesystem"
msgstr ""
-#: misc/mke2fs.c:2599
+#: misc/mke2fs.c:2623
msgid "blocks per group count out of range"
msgstr ""
-#: misc/mke2fs.c:2621
+#: misc/mke2fs.c:2645
msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
msgstr ""
-#: misc/mke2fs.c:2633
+#: misc/mke2fs.c:2657
#, c-format
msgid "invalid inode size %d (min %d/max %d)"
msgstr ""
-#: misc/mke2fs.c:2648
+#: misc/mke2fs.c:2672
#, c-format
msgid "%d byte inodes are too small for inline data; specify larger size"
msgstr ""
-#: misc/mke2fs.c:2663
+#: misc/mke2fs.c:2687
#, c-format
msgid "128-byte inodes cannot handle dates beyond 2038 and are deprecated\n"
msgstr ""
-#: misc/mke2fs.c:2674
+#: misc/mke2fs.c:2698
#, c-format
msgid "too many inodes (%llu), raise inode ratio?"
msgstr ""
-#: misc/mke2fs.c:2682
+#: misc/mke2fs.c:2706
#, c-format
msgid "too many inodes (%llu), specify < 2^32 inodes"
msgstr ""
-#: misc/mke2fs.c:2696
+#: misc/mke2fs.c:2720
#, c-format
msgid ""
"inode_size (%u) * inodes_count (%u) too big for a\n"
@@ -5962,175 +5966,175 @@ msgid ""
"\tor lower inode count (-N).\n"
msgstr ""
-#: misc/mke2fs.c:2893
+#: misc/mke2fs.c:2917
msgid "Discarding device blocks: "
msgstr ""
-#: misc/mke2fs.c:2909
+#: misc/mke2fs.c:2933
msgid "failed - "
msgstr ""
-#: misc/mke2fs.c:2968
+#: misc/mke2fs.c:2992
msgid "while initializing quota context"
msgstr ""
-#: misc/mke2fs.c:2975
+#: misc/mke2fs.c:2999
msgid "while writing quota inodes"
msgstr ""
-#: misc/mke2fs.c:3000
+#: misc/mke2fs.c:3024
#, c-format
msgid "bad error behavior in profile - %s"
msgstr ""
-#: misc/mke2fs.c:3079
+#: misc/mke2fs.c:3103
msgid "in malloc for android_sparse_params"
msgstr ""
-#: misc/mke2fs.c:3093
+#: misc/mke2fs.c:3117
msgid "while setting up superblock"
msgstr ""
-#: misc/mke2fs.c:3109
+#: misc/mke2fs.c:3133
msgid ""
"Extents are not enabled. The file extent tree can be checksummed, whereas "
"block maps cannot. Not enabling extents reduces the coverage of metadata "
"checksumming. Pass -O extents to rectify.\n"
msgstr ""
-#: misc/mke2fs.c:3116
+#: misc/mke2fs.c:3140
msgid ""
"64-bit filesystem support is not enabled. The larger fields afforded by "
"this feature enable full-strength checksumming. Pass -O 64bit to rectify.\n"
msgstr ""
-#: misc/mke2fs.c:3124
+#: misc/mke2fs.c:3148
msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
msgstr ""
-#: misc/mke2fs.c:3145
+#: misc/mke2fs.c:3169
msgid ""
"Assuming the storage device is prezeroed - skipping inode table and journal "
"wipe\n"
msgstr ""
-#: misc/mke2fs.c:3160
+#: misc/mke2fs.c:3184
msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
msgstr ""
-#: misc/mke2fs.c:3259
+#: misc/mke2fs.c:3283
#, c-format
msgid "unknown os - %s"
msgstr ""
-#: misc/mke2fs.c:3322
+#: misc/mke2fs.c:3346
msgid "Allocating group tables: "
msgstr ""
-#: misc/mke2fs.c:3330
+#: misc/mke2fs.c:3354
msgid "while trying to allocate filesystem tables"
msgstr ""
-#: misc/mke2fs.c:3345
+#: misc/mke2fs.c:3369
msgid "while unmarking bad blocks"
msgstr ""
-#: misc/mke2fs.c:3356
+#: misc/mke2fs.c:3380
msgid ""
"\n"
"\twhile converting subcluster bitmap"
msgstr ""
-#: misc/mke2fs.c:3365
+#: misc/mke2fs.c:3389
msgid "while calculating overhead"
msgstr ""
-#: misc/mke2fs.c:3384
+#: misc/mke2fs.c:3408
#, c-format
msgid "%s may be further corrupted by superblock rewrite\n"
msgstr ""
-#: misc/mke2fs.c:3425
+#: misc/mke2fs.c:3449
#, c-format
msgid "while zeroing block %llu at end of filesystem"
msgstr ""
-#: misc/mke2fs.c:3438
+#: misc/mke2fs.c:3462
msgid "while reserving blocks for online resize"
msgstr ""
-#: misc/mke2fs.c:3450 misc/tune2fs.c:1704
+#: misc/mke2fs.c:3474 misc/tune2fs.c:1710
msgid "journal"
msgstr ""
-#: misc/mke2fs.c:3462
+#: misc/mke2fs.c:3486
#, c-format
msgid "Adding journal to device %s: "
msgstr ""
-#: misc/mke2fs.c:3469
+#: misc/mke2fs.c:3493
#, c-format
msgid ""
"\n"
"\twhile trying to add journal to device %s"
msgstr ""
-#: misc/mke2fs.c:3474 misc/mke2fs.c:3507 misc/mke2fs.c:3566
-#: misc/mk_hugefiles.c:486 misc/tune2fs.c:1733 misc/tune2fs.c:1755
+#: misc/mke2fs.c:3498 misc/mke2fs.c:3531 misc/mke2fs.c:3590
+#: misc/mk_hugefiles.c:486 misc/tune2fs.c:1739 misc/tune2fs.c:1761
msgid "done\n"
msgstr ""
-#: misc/mke2fs.c:3481
+#: misc/mke2fs.c:3505
msgid "Skipping journal creation in super-only mode\n"
msgstr ""
-#: misc/mke2fs.c:3494
+#: misc/mke2fs.c:3518
#, c-format
msgid "Creating journal (%u blocks): "
msgstr ""
-#: misc/mke2fs.c:3503
+#: misc/mke2fs.c:3527
msgid ""
"\n"
"\twhile trying to create journal"
msgstr ""
-#: misc/mke2fs.c:3515 misc/tune2fs.c:1291
+#: misc/mke2fs.c:3539 misc/tune2fs.c:1297
msgid ""
"\n"
"Error while enabling multiple mount protection feature."
msgstr ""
-#: misc/mke2fs.c:3520
+#: misc/mke2fs.c:3544
#, c-format
msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
msgstr ""
-#: misc/mke2fs.c:3535
+#: misc/mke2fs.c:3559
msgid "cannot set orphan_file feature without a journal."
msgstr ""
-#: misc/mke2fs.c:3546 misc/tune2fs.c:3516
+#: misc/mke2fs.c:3570 misc/tune2fs.c:3517
msgid "while creating orphan file"
msgstr ""
-#: misc/mke2fs.c:3557
+#: misc/mke2fs.c:3581
msgid "Copying files into the device: "
msgstr ""
-#: misc/mke2fs.c:3563
+#: misc/mke2fs.c:3587
msgid "while populating file system"
msgstr ""
-#: misc/mke2fs.c:3570
+#: misc/mke2fs.c:3594
msgid "Writing superblocks and filesystem accounting information: "
msgstr ""
-#: misc/mke2fs.c:3577 misc/tune2fs.c:3764
+#: misc/mke2fs.c:3601 misc/tune2fs.c:3765
msgid "while writing out and closing file system"
msgstr ""
-#: misc/mke2fs.c:3580
+#: misc/mke2fs.c:3604
msgid ""
"done\n"
"\n"
@@ -6200,21 +6204,21 @@ msgstr ""
msgid "%s: h=%3d s=%3d c=%4d start=%8d size=%8lu end=%8d\n"
msgstr ""
-#: misc/tune2fs.c:148
+#: misc/tune2fs.c:152
msgid ""
"\n"
"This operation requires a freshly checked filesystem.\n"
msgstr ""
-#: misc/tune2fs.c:150
+#: misc/tune2fs.c:154
msgid "Please run e2fsck -f on the filesystem.\n"
msgstr ""
-#: misc/tune2fs.c:152
+#: misc/tune2fs.c:156
msgid "Please run e2fsck -fD on the filesystem.\n"
msgstr ""
-#: misc/tune2fs.c:165
+#: misc/tune2fs.c:169
#, c-format
msgid ""
"Usage: %s [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]\n"
@@ -6227,340 +6231,340 @@ msgid ""
"\t[-I new_inode_size] [-z undo_file] device\n"
msgstr ""
-#: misc/tune2fs.c:259
+#: misc/tune2fs.c:263
msgid "Journal superblock not found!\n"
msgstr ""
-#: misc/tune2fs.c:317
+#: misc/tune2fs.c:321
msgid "while trying to open external journal"
msgstr ""
-#: misc/tune2fs.c:323 misc/tune2fs.c:3045
+#: misc/tune2fs.c:327 misc/tune2fs.c:3051
#, c-format
msgid "%s is not a journal device.\n"
msgstr ""
-#: misc/tune2fs.c:332 misc/tune2fs.c:3054
+#: misc/tune2fs.c:336 misc/tune2fs.c:3060
#, c-format
msgid ""
"Journal superblock is corrupted, nr_users\n"
"is too high (%d).\n"
msgstr ""
-#: misc/tune2fs.c:339 misc/tune2fs.c:3061
+#: misc/tune2fs.c:343 misc/tune2fs.c:3067
msgid "Filesystem's UUID not found on journal device.\n"
msgstr ""
-#: misc/tune2fs.c:363
+#: misc/tune2fs.c:367
msgid ""
"Cannot locate journal device. It was NOT removed\n"
"Use -f option to remove missing journal device.\n"
msgstr ""
-#: misc/tune2fs.c:372
+#: misc/tune2fs.c:376
msgid "Journal removed\n"
msgstr ""
-#: misc/tune2fs.c:416
+#: misc/tune2fs.c:420
msgid "while reading bitmaps"
msgstr ""
-#: misc/tune2fs.c:424
+#: misc/tune2fs.c:428
msgid "while clearing journal inode"
msgstr ""
-#: misc/tune2fs.c:437
+#: misc/tune2fs.c:441
msgid "while writing journal inode"
msgstr ""
-#: misc/tune2fs.c:473 misc/tune2fs.c:498 misc/tune2fs.c:511
+#: misc/tune2fs.c:478 misc/tune2fs.c:503 misc/tune2fs.c:516
msgid "(and reboot afterwards!)\n"
msgstr ""
-#: misc/tune2fs.c:526
+#: misc/tune2fs.c:532
#, c-format
msgid "After running e2fsck, please run `resize2fs %s %s"
msgstr ""
-#: misc/tune2fs.c:529
+#: misc/tune2fs.c:535
#, c-format
msgid "Please run `resize2fs %s %s"
msgstr ""
-#: misc/tune2fs.c:533
+#: misc/tune2fs.c:539
#, c-format
msgid " -z \"%s\""
msgstr ""
-#: misc/tune2fs.c:535
+#: misc/tune2fs.c:541
#, c-format
msgid "' to enable 64-bit mode.\n"
msgstr ""
-#: misc/tune2fs.c:537
+#: misc/tune2fs.c:543
#, c-format
msgid "' to disable 64-bit mode.\n"
msgstr ""
-#: misc/tune2fs.c:1143
+#: misc/tune2fs.c:1149
msgid ""
"WARNING: Could not confirm kernel support for metadata_csum_seed.\n"
" This requires Linux >= v4.4.\n"
msgstr ""
-#: misc/tune2fs.c:1179
+#: misc/tune2fs.c:1185
#, c-format
msgid "Clearing filesystem feature '%s' not supported.\n"
msgstr ""
-#: misc/tune2fs.c:1185
+#: misc/tune2fs.c:1191
#, c-format
msgid "Setting filesystem feature '%s' not supported.\n"
msgstr ""
-#: misc/tune2fs.c:1194
+#: misc/tune2fs.c:1200
msgid ""
"The has_journal feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
msgstr ""
-#: misc/tune2fs.c:1202
+#: misc/tune2fs.c:1208
msgid ""
"The needs_recovery flag is set. Please run e2fsck before clearing\n"
"the has_journal flag.\n"
msgstr ""
-#: misc/tune2fs.c:1221
+#: misc/tune2fs.c:1227
msgid ""
"The orphan_file feature may only be cleared when the filesystem is "
"unmounted.\n"
msgstr ""
-#: misc/tune2fs.c:1226
+#: misc/tune2fs.c:1232
msgid ""
"The orphan_present feature is set. Please run e2fsck before clearing "
"orphan_file feature.\n"
msgstr ""
-#: misc/tune2fs.c:1235 misc/tune2fs.c:3509
+#: misc/tune2fs.c:1241 misc/tune2fs.c:3510
msgid "while loading bitmaps"
msgstr ""
-#: misc/tune2fs.c:1241
+#: misc/tune2fs.c:1247
msgid ""
"\n"
"\twhile trying to delete orphan file\n"
msgstr ""
-#: misc/tune2fs.c:1254
+#: misc/tune2fs.c:1260
msgid "orphan_file feature can be set only for filesystems with journal.\n"
msgstr ""
-#: misc/tune2fs.c:1270
+#: misc/tune2fs.c:1276
msgid ""
"Setting filesystem feature 'sparse_super' not supported\n"
"for filesystems with the meta_bg feature enabled.\n"
msgstr ""
-#: misc/tune2fs.c:1283
+#: misc/tune2fs.c:1289
msgid ""
"The multiple mount protection feature can't\n"
"be set if the filesystem is mounted or\n"
"read-only.\n"
msgstr ""
-#: misc/tune2fs.c:1301
+#: misc/tune2fs.c:1307
#, c-format
msgid "Multiple mount protection has been enabled with update interval %ds.\n"
msgstr ""
-#: misc/tune2fs.c:1310
+#: misc/tune2fs.c:1316
msgid ""
"The multiple mount protection feature cannot\n"
"be disabled if the filesystem is readonly.\n"
msgstr ""
-#: misc/tune2fs.c:1318
+#: misc/tune2fs.c:1324
msgid "Error while reading bitmaps\n"
msgstr ""
-#: misc/tune2fs.c:1327
+#: misc/tune2fs.c:1333
#, c-format
msgid "Magic number in MMP block does not match. expected: %x, actual: %x\n"
msgstr ""
-#: misc/tune2fs.c:1332
+#: misc/tune2fs.c:1338
msgid "while reading MMP block."
msgstr ""
-#: misc/tune2fs.c:1365
+#: misc/tune2fs.c:1371
msgid ""
"Disabling directory index on filesystem with checksums could take some time."
msgstr ""
-#: misc/tune2fs.c:1369
+#: misc/tune2fs.c:1375
msgid "Cannot disable dir_index on a mounted filesystem!\n"
msgstr ""
-#: misc/tune2fs.c:1382
+#: misc/tune2fs.c:1388
msgid ""
"Clearing the flex_bg flag would cause the the filesystem to be\n"
"inconsistent.\n"
msgstr ""
-#: misc/tune2fs.c:1393
+#: misc/tune2fs.c:1399
msgid ""
"The huge_file feature may only be cleared when the filesystem is\n"
"unmounted or mounted read-only.\n"
msgstr ""
-#: misc/tune2fs.c:1404
+#: misc/tune2fs.c:1410
msgid "Enabling checksums could take some time."
msgstr ""
-#: misc/tune2fs.c:1407
+#: misc/tune2fs.c:1413
msgid "Cannot enable metadata_csum on a mounted filesystem!\n"
msgstr ""
-#: misc/tune2fs.c:1413
+#: misc/tune2fs.c:1419
msgid ""
"Extents are not enabled. The file extent tree can be checksummed, whereas "
"block maps cannot. Not enabling extents reduces the coverage of metadata "
"checksumming. Re-run with -O extent to rectify.\n"
msgstr ""
-#: misc/tune2fs.c:1420
+#: misc/tune2fs.c:1426
msgid ""
"64-bit filesystem support is not enabled. The larger fields afforded by "
"this feature enable full-strength checksumming. Run resize2fs -b to "
"rectify.\n"
msgstr ""
-#: misc/tune2fs.c:1446
+#: misc/tune2fs.c:1452
msgid "Disabling checksums could take some time."
msgstr ""
-#: misc/tune2fs.c:1449
+#: misc/tune2fs.c:1455
msgid "Cannot disable metadata_csum on a mounted filesystem!\n"
msgstr ""
-#: misc/tune2fs.c:1490
+#: misc/tune2fs.c:1496
msgid "Cannot enable uninit_bg on a mounted filesystem!\n"
msgstr ""
-#: misc/tune2fs.c:1505
+#: misc/tune2fs.c:1511
msgid "Cannot disable uninit_bg on a mounted filesystem!\n"
msgstr ""
-#: misc/tune2fs.c:1524
+#: misc/tune2fs.c:1530
#, c-format
msgid "Cannot enable 64-bit mode while mounted!\n"
msgstr ""
-#: misc/tune2fs.c:1534
+#: misc/tune2fs.c:1540
#, c-format
msgid "Cannot disable 64-bit mode while mounted!\n"
msgstr ""
-#: misc/tune2fs.c:1564
+#: misc/tune2fs.c:1570
#, c-format
msgid "Cannot enable project feature; inode size too small.\n"
msgstr ""
-#: misc/tune2fs.c:1585
+#: misc/tune2fs.c:1591
msgid ""
"\n"
"Warning: '^quota' option overrides '-Q'arguments.\n"
msgstr ""
-#: misc/tune2fs.c:1602 misc/tune2fs.c:2380
+#: misc/tune2fs.c:1608 misc/tune2fs.c:2386
msgid ""
"The casefold feature may only be enabled when the filesystem is unmounted.\n"
msgstr ""
-#: misc/tune2fs.c:1613
+#: misc/tune2fs.c:1619
msgid ""
"The casefold feature may only be disabled when the filesystem is unmounted.\n"
msgstr ""
-#: misc/tune2fs.c:1618
+#: misc/tune2fs.c:1624
msgid ""
"The casefold feature can't be cleared when there are inodes with +F flag.\n"
msgstr ""
-#: misc/tune2fs.c:1630
+#: misc/tune2fs.c:1636
msgid ""
"Setting feature 'metadata_csum_seed' is only supported\n"
"on filesystems with the metadata_csum feature enabled.\n"
msgstr ""
-#: misc/tune2fs.c:1648
+#: misc/tune2fs.c:1654
msgid ""
"UUID has changed since enabling metadata_csum. Filesystem must be "
"unmounted \n"
"to safely rewrite all metadata to match the new UUID.\n"
msgstr ""
-#: misc/tune2fs.c:1654
+#: misc/tune2fs.c:1660
msgid "Recalculating checksums could take some time."
msgstr ""
-#: misc/tune2fs.c:1697
+#: misc/tune2fs.c:1703
msgid "The filesystem already has a journal.\n"
msgstr ""
-#: misc/tune2fs.c:1717
+#: misc/tune2fs.c:1723
#, c-format
msgid ""
"\n"
"\twhile trying to open journal on %s\n"
msgstr ""
-#: misc/tune2fs.c:1721
+#: misc/tune2fs.c:1727
#, c-format
msgid "Creating journal on device %s: "
msgstr ""
-#: misc/tune2fs.c:1729
+#: misc/tune2fs.c:1735
#, c-format
msgid "while adding filesystem to journal on %s"
msgstr ""
-#: misc/tune2fs.c:1735
+#: misc/tune2fs.c:1741
msgid "Creating journal inode: "
msgstr ""
-#: misc/tune2fs.c:1749
+#: misc/tune2fs.c:1755
msgid ""
"\n"
"\twhile trying to create journal file"
msgstr ""
-#: misc/tune2fs.c:1791
+#: misc/tune2fs.c:1797
#, c-format
msgid "Cannot enable project quota; inode size too small.\n"
msgstr ""
-#: misc/tune2fs.c:1804
+#: misc/tune2fs.c:1810
msgid "while initializing quota context in support library"
msgstr ""
-#: misc/tune2fs.c:1820
+#: misc/tune2fs.c:1826
#, c-format
msgid "while updating quota limits (%d)"
msgstr ""
-#: misc/tune2fs.c:1830
+#: misc/tune2fs.c:1836
#, c-format
msgid "while writing quota file (%d)"
msgstr ""
-#: misc/tune2fs.c:1848
+#: misc/tune2fs.c:1854
#, c-format
msgid "while removing quota file (%d)"
msgstr ""
-#: misc/tune2fs.c:1891
+#: misc/tune2fs.c:1897
msgid ""
"\n"
"Bad quota options specified.\n"
@@ -6574,65 +6578,65 @@ msgid ""
"\n"
msgstr ""
-#: misc/tune2fs.c:1949
+#: misc/tune2fs.c:1955
#, c-format
msgid "Couldn't parse date/time specifier: %s"
msgstr ""
-#: misc/tune2fs.c:1981 misc/tune2fs.c:1992
+#: misc/tune2fs.c:1987 misc/tune2fs.c:1998
#, c-format
msgid "bad mounts count - %s"
msgstr ""
-#: misc/tune2fs.c:2035
+#: misc/tune2fs.c:2041
#, c-format
msgid "bad gid/group name - %s"
msgstr ""
-#: misc/tune2fs.c:2068
+#: misc/tune2fs.c:2074
#, c-format
msgid "bad interval - %s"
msgstr ""
-#: misc/tune2fs.c:2097
+#: misc/tune2fs.c:2103
#, c-format
msgid "bad reserved block ratio - %s"
msgstr ""
-#: misc/tune2fs.c:2112
+#: misc/tune2fs.c:2118
msgid "-o may only be specified once"
msgstr ""
-#: misc/tune2fs.c:2121
+#: misc/tune2fs.c:2127
msgid "-O may only be specified once"
msgstr ""
-#: misc/tune2fs.c:2138
+#: misc/tune2fs.c:2144
#, c-format
msgid "bad reserved blocks count - %s"
msgstr ""
-#: misc/tune2fs.c:2167
+#: misc/tune2fs.c:2173
#, c-format
msgid "bad uid/user name - %s"
msgstr ""
-#: misc/tune2fs.c:2184
+#: misc/tune2fs.c:2190
#, c-format
msgid "bad inode size - %s"
msgstr ""
-#: misc/tune2fs.c:2191
+#: misc/tune2fs.c:2197
#, c-format
msgid "Inode size must be a power of two- %s"
msgstr ""
-#: misc/tune2fs.c:2291
+#: misc/tune2fs.c:2297
#, c-format
msgid "mmp_update_interval too big: %lu\n"
msgstr ""
-#: misc/tune2fs.c:2296
+#: misc/tune2fs.c:2302
#, c-format
msgid "Setting multiple mount protection update interval to %lu second\n"
msgid_plural ""
@@ -6640,52 +6644,52 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: misc/tune2fs.c:2305
+#: misc/tune2fs.c:2311
#, c-format
msgid "Setting filesystem error flag to force fsck.\n"
msgstr ""
-#: misc/tune2fs.c:2323
+#: misc/tune2fs.c:2329
#, c-format
msgid "Invalid RAID stride: %s\n"
msgstr ""
-#: misc/tune2fs.c:2338
+#: misc/tune2fs.c:2344
#, c-format
msgid "Invalid RAID stripe-width: %s\n"
msgstr ""
-#: misc/tune2fs.c:2353
+#: misc/tune2fs.c:2359
#, c-format
msgid "Invalid hash algorithm: %s\n"
msgstr ""
-#: misc/tune2fs.c:2359
+#: misc/tune2fs.c:2365
#, c-format
msgid "Setting default hash algorithm to %s (%d)\n"
msgstr ""
-#: misc/tune2fs.c:2386
+#: misc/tune2fs.c:2392
#, c-format
msgid "Cannot alter existing encoding\n"
msgstr ""
-#: misc/tune2fs.c:2392
+#: misc/tune2fs.c:2398
#, c-format
msgid "Invalid encoding: %s\n"
msgstr ""
-#: misc/tune2fs.c:2398
+#: misc/tune2fs.c:2404
#, c-format
msgid "Setting encoding to '%s'\n"
msgstr ""
-#: misc/tune2fs.c:2437
+#: misc/tune2fs.c:2443
#, c-format
msgid "Setting encoding_flags to '%s'\n"
msgstr ""
-#: misc/tune2fs.c:2447
+#: misc/tune2fs.c:2453
msgid ""
"\n"
"Bad options specified.\n"
@@ -6707,93 +6711,80 @@ msgid ""
"\tencoding_flags=<flags>\n"
msgstr ""
-#: misc/tune2fs.c:2863
+#: misc/tune2fs.c:2869
msgid "Failed to read inode bitmap\n"
msgstr ""
-#: misc/tune2fs.c:2868
+#: misc/tune2fs.c:2874
msgid "Failed to read block bitmap\n"
msgstr ""
-#: misc/tune2fs.c:2885 resize/resize2fs.c:1368
+#: misc/tune2fs.c:2891 resize/resize2fs.c:1368
msgid "blocks to be moved"
msgstr ""
-#: misc/tune2fs.c:2888
+#: misc/tune2fs.c:2894
msgid "Failed to allocate block bitmap when increasing inode size\n"
msgstr ""
-#: misc/tune2fs.c:2894
+#: misc/tune2fs.c:2900
msgid "Not enough space to increase inode size \n"
msgstr ""
-#: misc/tune2fs.c:2899
+#: misc/tune2fs.c:2905
msgid "Failed to relocate blocks during inode resize \n"
msgstr ""
-#: misc/tune2fs.c:2931
+#: misc/tune2fs.c:2937
msgid ""
"Error in resizing the inode size.\n"
"Run e2undo to undo the file system changes. \n"
msgstr ""
-#: misc/tune2fs.c:3100
-msgid "while checking mount status"
-msgstr ""
-
-#: misc/tune2fs.c:3108
-#, c-format
-msgid "Unknown mount point for %s\n"
-msgstr ""
-
-#: misc/tune2fs.c:3114
-msgid "while opening mount point"
-msgstr ""
-
-#: misc/tune2fs.c:3124
+#: misc/tune2fs.c:3125
msgid "while trying to get fs label"
msgstr ""
-#: misc/tune2fs.c:3146
+#: misc/tune2fs.c:3147
msgid "while trying to set fs label"
msgstr ""
-#: misc/tune2fs.c:3236
+#: misc/tune2fs.c:3237
msgid ""
"If you are sure the filesystem is not in use on any node, run:\n"
"'tune2fs -f -E clear_mmp {device}'\n"
msgstr ""
-#: misc/tune2fs.c:3243
+#: misc/tune2fs.c:3244
#, c-format
msgid ""
"MMP block magic is bad. Try to fix it by running:\n"
"'e2fsck -f %s'\n"
msgstr ""
-#: misc/tune2fs.c:3255
+#: misc/tune2fs.c:3256
msgid "Cannot modify a journal device.\n"
msgstr ""
-#: misc/tune2fs.c:3268
+#: misc/tune2fs.c:3269
#, c-format
msgid "The inode size is already %lu\n"
msgstr ""
-#: misc/tune2fs.c:3275
+#: misc/tune2fs.c:3276
msgid "Shrinking inode size is not supported\n"
msgstr ""
-#: misc/tune2fs.c:3280
+#: misc/tune2fs.c:3281
#, c-format
msgid "Invalid inode size %lu (max %d)\n"
msgstr ""
-#: misc/tune2fs.c:3286
+#: misc/tune2fs.c:3287
msgid "Resizing inodes could take some time."
msgstr ""
-#: misc/tune2fs.c:3336
+#: misc/tune2fs.c:3337
#, c-format
msgid ""
"Warning: The journal is dirty. You may wish to replay the journal like:\n"
@@ -6804,159 +6795,162 @@ msgid ""
"by journal recovery.\n"
msgstr ""
-#: misc/tune2fs.c:3345
+#: misc/tune2fs.c:3346
#, c-format
msgid "Recovering journal.\n"
msgstr ""
-#: misc/tune2fs.c:3369
+#: misc/tune2fs.c:3370
#, c-format
msgid "Setting maximal mount count to %d\n"
msgstr ""
-#: misc/tune2fs.c:3375
+#: misc/tune2fs.c:3376
#, c-format
msgid "Setting current mount count to %d\n"
msgstr ""
-#: misc/tune2fs.c:3380
+#: misc/tune2fs.c:3381
#, c-format
msgid "Setting error behavior to %d\n"
msgstr ""
-#: misc/tune2fs.c:3385
+#: misc/tune2fs.c:3386
#, c-format
msgid "Setting reserved blocks gid to %lu\n"
msgstr ""
-#: misc/tune2fs.c:3390
+#: misc/tune2fs.c:3391
#, c-format
msgid "interval between checks is too big (%lu)"
msgstr ""
-#: misc/tune2fs.c:3397
+#: misc/tune2fs.c:3398
#, c-format
msgid "Setting interval between checks to %lu seconds\n"
msgstr ""
-#: misc/tune2fs.c:3404
+#: misc/tune2fs.c:3405
#, c-format
msgid "Setting reserved blocks percentage to %g%% (%llu blocks)\n"
msgstr ""
-#: misc/tune2fs.c:3411
+#: misc/tune2fs.c:3412
#, c-format
msgid "reserved blocks count is too big (%llu)"
msgstr ""
-#: misc/tune2fs.c:3418
+#: misc/tune2fs.c:3419
#, c-format
msgid "Setting reserved blocks count to %llu\n"
msgstr ""
-#: misc/tune2fs.c:3423
+#: misc/tune2fs.c:3424
msgid ""
"\n"
"The filesystem already has sparse superblocks.\n"
msgstr ""
-#: misc/tune2fs.c:3426
+#: misc/tune2fs.c:3427
msgid ""
"\n"
"Setting the sparse superblock flag not supported\n"
"for filesystems with the meta_bg feature enabled.\n"
msgstr ""
-#: misc/tune2fs.c:3436
+#: misc/tune2fs.c:3437
#, c-format
msgid ""
"\n"
"Sparse superblock flag set. %s"
msgstr ""
-#: misc/tune2fs.c:3441
+#: misc/tune2fs.c:3442
msgid ""
"\n"
"Clearing the sparse superblock flag not supported.\n"
msgstr ""
-#: misc/tune2fs.c:3449
+#: misc/tune2fs.c:3450
#, c-format
msgid "Setting time filesystem last checked to %s\n"
msgstr ""
-#: misc/tune2fs.c:3455
+#: misc/tune2fs.c:3456
#, c-format
msgid "Setting reserved blocks uid to %lu\n"
msgstr ""
-#: misc/tune2fs.c:3487
+#: misc/tune2fs.c:3488
msgid "Error in using clear_mmp. It must be used with -f\n"
msgstr ""
-#: misc/tune2fs.c:3524
+#: misc/tune2fs.c:3525
msgid ""
-"The quota feature may only be changed when the filesystem is unmounted.\n"
+"The quota feature may only be changed when the filesystem is unmounted and "
+"not in use.\n"
msgstr ""
-#: misc/tune2fs.c:3543
+#: misc/tune2fs.c:3544
msgid ""
"Cannot change the UUID of this filesystem because it has the stable_inodes "
"feature flag.\n"
msgstr ""
-#: misc/tune2fs.c:3553
+#: misc/tune2fs.c:3554
msgid "Setting the UUID on this filesystem could take some time."
msgstr ""
-#: misc/tune2fs.c:3570
+#: misc/tune2fs.c:3571
msgid "The UUID may only be changed when the filesystem is unmounted.\n"
msgstr ""
-#: misc/tune2fs.c:3573
+#: misc/tune2fs.c:3574
msgid ""
"If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' "
"and re-run this command.\n"
msgstr ""
-#: misc/tune2fs.c:3623
+#: misc/tune2fs.c:3624
msgid "Invalid UUID format\n"
msgstr ""
-#: misc/tune2fs.c:3657
+#: misc/tune2fs.c:3658
msgid "Need to update journal superblock.\n"
msgstr ""
-#: misc/tune2fs.c:3677
-msgid "The inode size may only be changed when the filesystem is unmounted.\n"
+#: misc/tune2fs.c:3678
+msgid ""
+"The inode size may only be changed when the filesystem is unmounted and not "
+"in use.\n"
msgstr ""
-#: misc/tune2fs.c:3684
+#: misc/tune2fs.c:3685
msgid ""
"Changing the inode size not supported for filesystems with the flex_bg\n"
"feature enabled.\n"
msgstr ""
-#: misc/tune2fs.c:3702
+#: misc/tune2fs.c:3703
#, c-format
msgid "Setting inode size %lu\n"
msgstr ""
-#: misc/tune2fs.c:3706
+#: misc/tune2fs.c:3707
msgid "Failed to change inode size\n"
msgstr ""
-#: misc/tune2fs.c:3726
+#: misc/tune2fs.c:3727
#, c-format
msgid "Setting stride size to %d\n"
msgstr ""
-#: misc/tune2fs.c:3731
+#: misc/tune2fs.c:3732
#, c-format
msgid "Setting stripe width to %d\n"
msgstr ""
-#: misc/tune2fs.c:3738
+#: misc/tune2fs.c:3739
#, c-format
msgid "Setting extended default mount options to '%s'\n"
msgstr ""
@@ -7239,41 +7233,41 @@ msgstr ""
msgid "while getting stat information for %s"
msgstr ""
-#: resize/main.c:463
+#: resize/main.c:465
#, c-format
msgid ""
"Please run 'e2fsck -f %s' first.\n"
"\n"
msgstr ""
-#: resize/main.c:482
+#: resize/main.c:484
#, c-format
msgid "Estimated minimum size of the filesystem: %llu\n"
msgstr ""
-#: resize/main.c:522
+#: resize/main.c:524
#, c-format
msgid "Invalid new size: %s\n"
msgstr ""
-#: resize/main.c:541
+#: resize/main.c:543
msgid "New size too large to be expressed in 32 bits\n"
msgstr ""
-#: resize/main.c:560
+#: resize/main.c:562
msgid "New size results in too many block group descriptors.\n"
msgstr ""
-#: resize/main.c:567
+#: resize/main.c:569
#, c-format
msgid "New size smaller than minimum (%llu)\n"
msgstr ""
-#: resize/main.c:574
+#: resize/main.c:576
msgid "Invalid stride length"
msgstr ""
-#: resize/main.c:598
+#: resize/main.c:600
#, c-format
msgid ""
"The containing partition (or device) is only %llu (%dk) blocks.\n"
@@ -7281,89 +7275,89 @@ msgid ""
"\n"
msgstr ""
-#: resize/main.c:605
+#: resize/main.c:607
#, c-format
msgid "Cannot set and unset 64bit feature.\n"
msgstr ""
-#: resize/main.c:609
+#: resize/main.c:611
#, c-format
msgid ""
"Cannot change the 64bit feature on a filesystem that is larger than 2^32 "
"blocks.\n"
msgstr ""
-#: resize/main.c:615
+#: resize/main.c:617
#, c-format
msgid "Cannot change the 64bit feature while the filesystem is mounted.\n"
msgstr ""
-#: resize/main.c:621
+#: resize/main.c:623
#, c-format
msgid ""
"Please enable the extents feature with tune2fs before enabling the 64bit "
"feature.\n"
msgstr ""
-#: resize/main.c:629
+#: resize/main.c:631
#, c-format
msgid ""
"The filesystem is already %llu (%dk) blocks long. Nothing to do!\n"
"\n"
msgstr ""
-#: resize/main.c:639
+#: resize/main.c:641
#, c-format
msgid "The filesystem is already 64-bit.\n"
msgstr ""
-#: resize/main.c:644
+#: resize/main.c:646
#, c-format
msgid "The filesystem is already 32-bit.\n"
msgstr ""
-#: resize/main.c:649
+#: resize/main.c:651
#, c-format
msgid ""
"Cannot shrink this filesystem because it has the stable_inodes feature "
"flag.\n"
msgstr ""
-#: resize/main.c:658
+#: resize/main.c:660
#, c-format
msgid "Converting the filesystem to 64-bit.\n"
msgstr ""
-#: resize/main.c:660
+#: resize/main.c:662
#, c-format
msgid "Converting the filesystem to 32-bit.\n"
msgstr ""
-#: resize/main.c:662
+#: resize/main.c:664
#, c-format
msgid "Resizing the filesystem on %s to %llu (%dk) blocks.\n"
msgstr ""
-#: resize/main.c:672
+#: resize/main.c:674
#, c-format
msgid "while trying to resize %s"
msgstr ""
-#: resize/main.c:675
+#: resize/main.c:677
#, c-format
msgid ""
"Please run 'e2fsck -fy %s' to fix the filesystem\n"
"after the aborted resize operation.\n"
msgstr ""
-#: resize/main.c:680
+#: resize/main.c:682
#, c-format
msgid ""
"The filesystem on %s is now %llu (%dk) blocks long.\n"
"\n"
msgstr ""
-#: resize/main.c:695
+#: resize/main.c:697
#, c-format
msgid "while trying to truncate %s"
msgstr ""
@@ -7466,7 +7460,7 @@ msgid "Should never happen: resize inode corrupt!\n"
msgstr ""
#: lib/ext2fs/ext2_err.c:11
-msgid "EXT2FS Library version 1.47.0"
+msgid "EXT2FS Library version 1.47.1-rc1"
msgstr ""
#: lib/ext2fs/ext2_err.c:12
@@ -8321,58 +8315,58 @@ msgstr ""
msgid "Bad magic value in profile_file_data_t"
msgstr ""
-#: lib/support/plausible.c:114
+#: lib/support/plausible.c:113
#, c-format
msgid "\tlast mounted on %.*s on %s"
msgstr ""
-#: lib/support/plausible.c:117
+#: lib/support/plausible.c:116
#, c-format
msgid "\tlast mounted on %s"
msgstr ""
-#: lib/support/plausible.c:120
+#: lib/support/plausible.c:118
#, c-format
msgid "\tcreated on %s"
msgstr ""
-#: lib/support/plausible.c:123
+#: lib/support/plausible.c:120
#, c-format
msgid "\tlast modified on %s"
msgstr ""
-#: lib/support/plausible.c:157
+#: lib/support/plausible.c:154
#, c-format
msgid "Found a %s partition table in %s\n"
msgstr ""
-#: lib/support/plausible.c:198
+#: lib/support/plausible.c:195
#, c-format
msgid "Could not open %s: %s\n"
msgstr ""
-#: lib/support/plausible.c:201
+#: lib/support/plausible.c:198
msgid ""
"\n"
"The device apparently does not exist; did you specify it correctly?\n"
msgstr ""
-#: lib/support/plausible.c:223
+#: lib/support/plausible.c:220
#, c-format
msgid "%s is not a block special device.\n"
msgstr ""
-#: lib/support/plausible.c:245
+#: lib/support/plausible.c:242
#, c-format
msgid "%s contains a %s file system labelled '%s'\n"
msgstr ""
-#: lib/support/plausible.c:248
+#: lib/support/plausible.c:245
#, c-format
msgid "%s contains a %s file system\n"
msgstr ""
-#: lib/support/plausible.c:272
+#: lib/support/plausible.c:269
#, c-format
msgid "%s contains `%s' data\n"
msgstr ""
diff --git a/po/ms.po b/po/ms.po
index 27ebbcbb9..8656f8c9b 100644
--- a/po/ms.po
+++ b/po/ms.po
@@ -1,7 +1,7 @@
# e2fsprogs Bahasa Melayu (Malay) (ms).
-# Copyright (C) 2008, 2009, 2015, 2018, 2019, 2020, 2021, 2022, 2023 Theodore Tso (msgids)
+# Copyright (C) 2008, 2009, 2015, 2018, 2019, 2020, 2021, 2022, 2023, 2024 Theodore Tso (msgids)
# This file is distributed under the same license as the e2fsprogs package.
-# Sharuzzaman Ahmat Raslan <sharuzzaman@gmail.com>, 2008, 2009, 2015, 2018, 2019, 2020, 2021, 2022, 2023.
+# Sharuzzaman Ahmat Raslan <sharuzzaman@gmail.com>, 2008, 2009, 2015, 2018, 2019, 2020, 2021, 2022, 2023, 2024.
#
#. 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,
@@ -77,7 +77,7 @@ msgstr ""
"Project-Id-Version: e2fsprogs 1.46.6-rc1\n"
"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
"POT-Creation-Date: 2022-09-12 08:19-0400\n"
-"PO-Revision-Date: 2023-01-28 23:57+0800\n"
+"PO-Revision-Date: 2024-03-27 22:59+0800\n"
"Last-Translator: Sharuzzaman Ahmat Raslan <sharuzzaman@gmail.com>\n"
"Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n"
"Language: ms\n"
@@ -86,7 +86,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"X-Generator: Poedit 3.2.2\n"
+"X-Generator: Poedit 3.4.2\n"
#: e2fsck/badblocks.c:23 misc/mke2fs.c:221
#, c-format
@@ -98,9 +98,8 @@ msgid "while sanity checking the bad blocks inode"
msgstr "ketika memeriksa kewarasan blok inode buruk"
#: e2fsck/badblocks.c:58
-#, fuzzy
msgid "while reading the bad blocks inode"
-msgstr "ketika membaca dalam senarai blok buruk dari fail"
+msgstr ""
#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1592
#: e2fsck/unix.c:1707 misc/badblocks.c:1266 misc/badblocks.c:1274
@@ -113,18 +112,17 @@ msgid "while trying to open %s"
msgstr "Ralat tidak diketahui berlaku bila cuba membuka \"%s\"."
#: e2fsck/badblocks.c:84
-#, fuzzy, c-format
+#, c-format
msgid "while trying popen '%s'"
-msgstr "ketika cuba untuk stat %s"
+msgstr ""
#: e2fsck/badblocks.c:95 misc/mke2fs.c:244
msgid "while reading in list of bad blocks from file"
msgstr "ketika membaca dalam senarai blok buruk dari fail"
#: e2fsck/badblocks.c:106
-#, fuzzy
msgid "while updating bad block inode"
-msgstr "ketika menetapkan inod blok buruk"
+msgstr ""
#: e2fsck/badblocks.c:134
#, c-format
@@ -151,29 +149,26 @@ msgid "Ignore error"
msgstr "Abai ralat dan teruskan ke modul berikutnya"
#: e2fsck/ehandler.c:67
-#, fuzzy
msgid "Force rewrite"
-msgstr "Gagal menulis semula pengepala\n"
+msgstr ""
#: e2fsck/ehandler.c:109
-#, fuzzy, c-format
+#, c-format
msgid "Error writing block %lu (%s) while %s. "
-msgstr "Ralat membaca blok %lu (%s) ketika %s. "
+msgstr ""
#: e2fsck/ehandler.c:112
-#, fuzzy, c-format
+#, c-format
msgid "Error writing block %lu (%s). "
-msgstr "Ralat membaca blok %lu (%s) ketika %s. "
+msgstr ""
#: e2fsck/emptydir.c:56
-#, fuzzy
msgid "empty dirblocks"
-msgstr "Kosong"
+msgstr ""
#: e2fsck/emptydir.c:61
-#, fuzzy
msgid "empty dir map"
-msgstr "Mencipta peta kosong..."
+msgstr ""
#: e2fsck/emptydir.c:97
#, c-format
@@ -181,14 +176,14 @@ msgid "Empty directory block %u (#%d) in inode %u\n"
msgstr "Blok direktori kosong %u (#%d) dalam inode %u\n"
#: e2fsck/extend.c:22
-#, fuzzy, c-format
+#, c-format
msgid "%s: %s filename nblocks blocksize\n"
-msgstr "Parameter saiz blok tidak sah: %s\n"
+msgstr ""
#: e2fsck/extend.c:45
-#, fuzzy, c-format
+#, c-format
msgid "Illegal number of blocks!\n"
-msgstr "Nombor tidak sah untuk saiz flex_bg"
+msgstr ""
#: e2fsck/extend.c:51
#, c-format
@@ -196,14 +191,13 @@ msgid "Couldn't allocate block buffer (size=%d)\n"
msgstr ""
#: e2fsck/extents.c:42
-#, fuzzy
msgid "extent rebuild inode map"
-msgstr "Tiada ruang bebas dalam peta takat"
+msgstr ""
#: e2fsck/flushb.c:35
-#, fuzzy, c-format
+#, c-format
msgid "Usage: %s disk\n"
-msgstr "Penggunaan cakera"
+msgstr ""
#: e2fsck/flushb.c:64
#, c-format
@@ -216,14 +210,14 @@ msgid "reading journal superblock\n"
msgstr "ketika membaca superblok jurnal"
#: e2fsck/journal.c:1362
-#, fuzzy, c-format
+#, c-format
msgid "%s: no valid journal superblock found\n"
-msgstr "Superblok jurnal tidak dijumpai!\n"
+msgstr ""
#: e2fsck/journal.c:1371
-#, fuzzy, c-format
+#, c-format
msgid "%s: journal too short\n"
-msgstr "%s: fail terlalu pendek untuk menjadi fail gmon\n"
+msgstr ""
#: e2fsck/journal.c:1384
#, c-format
@@ -231,9 +225,9 @@ msgid "%s: incorrect fast commit blocks\n"
msgstr ""
#: e2fsck/journal.c:1686 misc/fuse2fs.c:3797
-#, fuzzy, c-format
+#, c-format
msgid "%s: recovering journal\n"
-msgstr "ketika mendapatkan semula jurnal ext3 bagi %s"
+msgstr ""
#: e2fsck/journal.c:1688
#, c-format
@@ -241,19 +235,17 @@ msgid "%s: won't do journal recovery while read-only\n"
msgstr ""
#: e2fsck/journal.c:1715
-#, fuzzy, c-format
+#, c-format
msgid "while trying to re-open %s"
-msgstr "Ralat tidak diketahui berlaku bila cuba membuka \"%s\"."
+msgstr ""
#: e2fsck/message.c:116
-#, fuzzy
msgid "aextended attribute"
-msgstr "Atribut:"
+msgstr ""
#: e2fsck/message.c:117
-#, fuzzy
msgid "Aerror allocating"
-msgstr "Memperuntuk Imej Cakera"
+msgstr ""
#: e2fsck/message.c:118
msgid "bblock"
@@ -284,27 +276,24 @@ msgid "eentry"
msgstr ""
#: e2fsck/message.c:125
-#, fuzzy
msgid "E@e '%Dn' in %p (%i)"
-msgstr "hari ini pada %-I:%M %p"
+msgstr ""
#: e2fsck/message.c:126
msgid "ffilesystem"
msgstr ""
#: e2fsck/message.c:127
-#, fuzzy
msgid "Ffor @i %i (%Q) is"
-msgstr "Symlink %Q (@i #%i) adalah @n.\n"
+msgstr ""
#: e2fsck/message.c:128
msgid "ggroup"
msgstr ""
#: e2fsck/message.c:129
-#, fuzzy
msgid "hHTREE @d @i"
-msgstr "Yahoo I_D:"
+msgstr ""
#: e2fsck/message.c:130
msgid "iinode"
@@ -319,14 +308,12 @@ msgid "jjournal"
msgstr ""
#: e2fsck/message.c:133
-#, fuzzy
msgid "llost+found"
-msgstr "Tidak dijumpai."
+msgstr ""
#: e2fsck/message.c:134
-#, fuzzy
msgid "Lis a link"
-msgstr "Fleur De Lis"
+msgstr ""
#: e2fsck/message.c:135
msgid "mmultiply-claimed"
@@ -349,14 +336,12 @@ msgid "qquota"
msgstr ""
#: e2fsck/message.c:140
-#, fuzzy
msgid "rroot @i"
-msgstr "%i%%"
+msgstr ""
#: e2fsck/message.c:141
-#, fuzzy
msgid "sshould be"
-msgstr "%s mestilah nombor"
+msgstr ""
#: e2fsck/message.c:142
msgid "Ssuper@b"
@@ -375,14 +360,12 @@ msgid "xextent"
msgstr ""
#: e2fsck/message.c:146
-#, fuzzy
msgid "zzero-length"
-msgstr "Mengikut Pan_jang"
+msgstr ""
#: e2fsck/message.c:157
-#, fuzzy
msgid "<The NULL inode>"
-msgstr "kosong"
+msgstr ""
#: e2fsck/message.c:158
#, fuzzy
@@ -390,29 +373,24 @@ msgid "<The bad blocks inode>"
msgstr "ketika memeriksa kewarasan blok inode buruk"
#: e2fsck/message.c:160
-#, fuzzy
msgid "<The user quota inode>"
-msgstr "Kuota penggunaan"
+msgstr ""
#: e2fsck/message.c:161
-#, fuzzy
msgid "<The group quota inode>"
-msgstr "Satu kumpulan blok kehilangan jadual inode"
+msgstr ""
#: e2fsck/message.c:162
-#, fuzzy
msgid "<The boot loader inode>"
-msgstr "Pemuat plugin"
+msgstr ""
#: e2fsck/message.c:163
-#, fuzzy
msgid "<The undelete directory inode>"
-msgstr "Inode Ext2 adalah bukan direktori"
+msgstr ""
#: e2fsck/message.c:164
-#, fuzzy
msgid "<The group descriptor inode>"
-msgstr " Penghurai kumpulan di "
+msgstr ""
#: e2fsck/message.c:165
#, fuzzy
@@ -420,14 +398,12 @@ msgid "<The journal inode>"
msgstr "Mencipta inode jurnal: "
#: e2fsck/message.c:166
-#, fuzzy
msgid "<Reserved inode 9>"
-msgstr "9"
+msgstr ""
#: e2fsck/message.c:167
-#, fuzzy
msgid "<Reserved inode 10>"
-msgstr "Simpanan"
+msgstr ""
#: e2fsck/message.c:325
msgid "regular file"
@@ -448,9 +424,8 @@ msgid "block device"
msgstr "Peranti blok"
#: e2fsck/message.c:333
-#, fuzzy
msgid "named pipe"
-msgstr "(paip)"
+msgstr ""
#: e2fsck/message.c:335
msgid "symbolic link"
@@ -471,19 +446,16 @@ msgid "indirect block"
msgstr "Blok tidak langsung dua kali yang tidak sah dijumpai"
#: e2fsck/message.c:412
-#, fuzzy
msgid "double indirect block"
-msgstr "Blok tidak langsung dua kali yang tidak sah dijumpai"
+msgstr ""
#: e2fsck/message.c:414
-#, fuzzy
msgid "triple indirect block"
-msgstr "Blok tidak langsung dua kali yang tidak sah dijumpai"
+msgstr ""
#: e2fsck/message.c:416
-#, fuzzy
msgid "translator block"
-msgstr "Blok"
+msgstr ""
#: e2fsck/message.c:418
#, fuzzy
@@ -505,10 +477,8 @@ msgid "project"
msgstr "Projek:"
#: e2fsck/message.c:491
-#, fuzzy
-#| msgid "unknown os - %s"
msgid "unknown quota type"
-msgstr "Jenis tidak diketahui"
+msgstr ""
#: e2fsck/pass1b.c:223
msgid "multiply claimed inode map"
@@ -539,49 +509,40 @@ msgid "while hashing entry with e_value_inum = %u"
msgstr ""
#: e2fsck/pass1.c:770 e2fsck/pass2.c:1155
-#, fuzzy
msgid "reading directory block"
-msgstr "membaca direktori %s"
+msgstr ""
#: e2fsck/pass1.c:1169
msgid "getting next inode from scan"
msgstr ""
#: e2fsck/pass1.c:1221
-#, fuzzy
msgid "in-use inode map"
-msgstr "Guna peta imej"
+msgstr ""
#: e2fsck/pass1.c:1232
-#, fuzzy
msgid "directory inode map"
-msgstr "Inode Ext2 adalah bukan direktori"
+msgstr ""
#: e2fsck/pass1.c:1242
-#, fuzzy
msgid "regular file inode map"
-msgstr "Bukan satu fail nalar."
+msgstr ""
#: e2fsck/pass1.c:1251 misc/e2image.c:1290
-#, fuzzy
msgid "in-use block map"
-msgstr "Guna url suai bagi peta radar"
+msgstr ""
#: e2fsck/pass1.c:1260
-#, fuzzy
-#| msgid "meta-data blocks"
msgid "metadata block map"
-msgstr "Data meta"
+msgstr ""
#: e2fsck/pass1.c:1271
-#, fuzzy
msgid "inode casefold map"
-msgstr "Peta"
+msgstr ""
#: e2fsck/pass1.c:1336
-#, fuzzy
msgid "opening inode scan"
-msgstr "ketika melakukan pengesanan inod"
+msgstr ""
#: e2fsck/pass1.c:2104
#, fuzzy
@@ -589,24 +550,21 @@ msgid "Pass 1"
msgstr "Takrifkan pilihan pengekodan anda untuk laluan 1 \\n (biarkan lalai jika anda tidak tahu apa perlu dibuat)"
#: e2fsck/pass1.c:2165
-#, fuzzy, c-format
+#, c-format
msgid "reading indirect blocks of inode %u"
-msgstr "ketika membaca inod jurnal"
+msgstr ""
#: e2fsck/pass1.c:2216
-#, fuzzy
msgid "bad inode map"
-msgstr "ketika menetapkan inod blok buruk"
+msgstr ""
#: e2fsck/pass1.c:2256
-#, fuzzy
msgid "inode in bad block map"
-msgstr "Inode adalah dari blok buruk dalam jadual inode"
+msgstr ""
#: e2fsck/pass1.c:2276
-#, fuzzy
msgid "imagic inode map"
-msgstr "Peta"
+msgstr ""
#: e2fsck/pass1.c:2307
msgid "multiply claimed block map"
@@ -644,9 +602,8 @@ msgid "Pass 2"
msgstr "Takrifkan pilihan pengekodan anda untuk laluan 2 \\n (biarkan lalai jika anda tidak tahu apa perlu dibuat)"
#: e2fsck/pass2.c:576
-#, fuzzy
msgid "NLS is broken."
-msgstr "Rosak"
+msgstr ""
#: e2fsck/pass2.c:1228 e2fsck/pass2.c:1414
#, fuzzy
@@ -654,14 +611,12 @@ msgid "Can not continue."
msgstr "OTRS Verify™ tidak boleh diteruskan."
#: e2fsck/pass3.c:77
-#, fuzzy
msgid "inode done bitmap"
-msgstr ", Bitmap inode di"
+msgstr ""
#: e2fsck/pass3.c:86
-#, fuzzy
msgid "Peak memory"
-msgstr "Puncak"
+msgstr ""
#: e2fsck/pass3.c:149
#, fuzzy
@@ -669,19 +624,16 @@ msgid "Pass 3"
msgstr "Ulangan 3: Memeriksa sambungan @d\n"
#: e2fsck/pass3.c:355
-#, fuzzy
msgid "inode loop detection bitmap"
-msgstr ", Bitmap inode di"
+msgstr ""
#: e2fsck/pass4.c:289
-#, fuzzy
msgid "Pass 4"
-msgstr "Katalaluan: "
+msgstr ""
#: e2fsck/pass5.c:79
-#, fuzzy
msgid "Pass 5"
-msgstr "Katalaluan: "
+msgstr ""
#: e2fsck/pass5.c:102
msgid "check_inode_bitmap_checksum: Memory allocation error"
@@ -713,16 +665,15 @@ msgstr "Tempat semula"
#: e2fsck/problem.c:57
#, fuzzy
msgid "Allocate"
-msgstr "tak dapat memperuntukkan warna \"%s\""
+msgstr "Tidak dapat peruntukkan ingatan: %s"
#: e2fsck/problem.c:58
msgid "Expand"
msgstr "Kembang"
#: e2fsck/problem.c:59
-#, fuzzy
msgid "Connect to /lost+found"
-msgstr "Hilang Kata Laluan"
+msgstr ""
#: e2fsck/problem.c:60
msgid "Create"
@@ -736,12 +687,11 @@ msgstr "Sisaan"
#: e2fsck/problem.c:62
#, fuzzy
msgid "Truncate"
-msgstr "Pangkaskan"
+msgstr "Pangkas"
#: e2fsck/problem.c:63
-#, fuzzy
msgid "Clear inode"
-msgstr "kosongkan"
+msgstr ""
#: e2fsck/problem.c:64
#, fuzzy
@@ -775,14 +725,13 @@ msgid "Unlink"
msgstr "nyahpaut"
#: e2fsck/problem.c:71
-#, fuzzy
msgid "Clear HTree index"
-msgstr "kosongkan"
+msgstr ""
#: e2fsck/problem.c:72
#, fuzzy
msgid "Recreate"
-msgstr "Cipta semula folder yang tersimpan dalam arkib"
+msgstr "Cipta semula laluan relatif"
#: e2fsck/problem.c:73
#, fuzzy
@@ -797,7 +746,7 @@ msgstr "_Buang Bendera"
#: e2fsck/problem.c:83
#, fuzzy
msgid "(NONE)"
-msgstr "[tiada]"
+msgstr "tiada"
#: e2fsck/problem.c:84
#, fuzzy
@@ -853,12 +802,12 @@ msgstr "Amaran: blok tidak sah %u terdapat di dalam blok inode buruk. Dibersihka
#: e2fsck/problem.c:94
#, fuzzy
msgid "ABORTED"
-msgstr "dibatalkan"
+msgstr "Dihenti Paksa"
#: e2fsck/problem.c:95
#, fuzzy
msgid "SPLIT"
-msgstr "Pisah"
+msgstr "Split"
#: e2fsck/problem.c:96
#, fuzzy
@@ -872,7 +821,7 @@ msgstr ""
#: e2fsck/problem.c:98
#, fuzzy
msgid "FILE DELETED"
-msgstr "%d fail dipadam"
+msgstr "Fail dipadamkan"
#: e2fsck/problem.c:99
#, fuzzy
@@ -885,14 +834,13 @@ msgid "UNLINKED"
msgstr "Ralat menutup fail kunci (nyahpaut) \"%s\": %s"
#: e2fsck/problem.c:101
-#, fuzzy
msgid "HTREE INDEX CLEARED"
-msgstr "Padamkan"
+msgstr ""
#: e2fsck/problem.c:102
#, fuzzy
msgid "WILL RECREATE"
-msgstr "Cipta semula folder yang tersimpan dalam arkib"
+msgstr "Cipta semula laluan relatif"
#: e2fsck/problem.c:103
#, fuzzy
@@ -900,9 +848,8 @@ msgid "WILL OPTIMIZE"
msgstr "Mengoptimumkan"
#: e2fsck/problem.c:104
-#, fuzzy
msgid "FLAG CLEARED"
-msgstr "Padamkan"
+msgstr ""
#. @-expanded: block bitmap for group %g is not in group. (block %b)\n
#: e2fsck/problem.c:118
@@ -995,21 +942,19 @@ msgstr ""
#. @-expanded: Corruption found in superblock. (%s = %N).\n
#: e2fsck/problem.c:183
-#, fuzzy
msgid "Corruption found in @S. (%s = %N).\n"
-msgstr "%n milisaat"
+msgstr ""
#. @-expanded: Error determining size of the physical device: %m\n
#: e2fsck/problem.c:189
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Error determining size of the physical @v: %m\n"
-msgstr "Ralat ketika menentukan sama ada %s telah dilekapkan.\n"
+msgstr ""
#. @-expanded: inode count in superblock is %i, should be %j.\n
#: e2fsck/problem.c:194
-#, fuzzy
msgid "@i count in @S is %i, @s %j.\n"
-msgstr "'..' dalam %Q (%i) adalah %P (%j), @s %q (%d).\n"
+msgstr ""
#: e2fsck/problem.c:198
msgid "The Hurd does not support the filetype feature.\n"
@@ -1017,9 +962,9 @@ msgstr ""
#. @-expanded: superblock has an invalid journal (inode %i).\n
#: e2fsck/problem.c:204
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@S has an @n @j (@i %i).\n"
-msgstr "'..' dalam %Q (%i) adalah %P (%j), @s %q (%d).\n"
+msgstr ""
#. @-expanded: External journal has multiple filesystem users (unsupported).\n
#: e2fsck/problem.c:209
@@ -1028,21 +973,18 @@ msgstr ""
#. @-expanded: Can't find external journal\n
#: e2fsck/problem.c:214
-#, fuzzy
msgid "Can't find external @j\n"
-msgstr "Tidak dapat mencari objek piawai"
+msgstr ""
#. @-expanded: External journal has bad superblock\n
#: e2fsck/problem.c:219
-#, fuzzy
msgid "External @j has bad @S\n"
-msgstr "%s: fail `%s' mempunyai cecikut magik buruk\n"
+msgstr ""
#. @-expanded: External journal does not support this filesystem\n
#: e2fsck/problem.c:224
-#, fuzzy
msgid "External @j does not support this @f\n"
-msgstr "Cdrdao %1 tidak menyokong overburning."
+msgstr ""
#. @-expanded: filesystem journal superblock is unknown type %N (unsupported).\n
#. @-expanded: It is likely that your copy of e2fsck is old and/or doesn't support this journal
@@ -1057,9 +999,8 @@ msgstr ""
#. @-expanded: journal superblock is corrupt.\n
#: e2fsck/problem.c:238
-#, fuzzy
msgid "@j @S is corrupt.\n"
-msgstr "J"
+msgstr ""
#. @-expanded: superblock has_journal flag is clear, but a journal is present.\n
#: e2fsck/problem.c:243
@@ -1078,9 +1019,8 @@ msgstr ""
#. @-expanded: Clear journal
#: e2fsck/problem.c:258
-#, fuzzy
msgid "Clear @j"
-msgstr "J$"
+msgstr ""
#. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.
#: e2fsck/problem.c:263 e2fsck/problem.c:799
@@ -1094,27 +1034,25 @@ msgstr ""
#. @-expanded: illegal %B (%b) found in orphaned inode %i.\n
#: e2fsck/problem.c:273
-#, fuzzy
msgid "@I %B (%b) found in @o @i %i.\n"
-msgstr "@i %i (%Q) adalah @I @b @v.\n"
+msgstr ""
#. @-expanded: Already cleared %B (%b) found in orphaned inode %i.\n
#: e2fsck/problem.c:278
-#, fuzzy
msgid "Already cleared %B (%b) found in @o @i %i.\n"
-msgstr "Fail Telah Ada dalam Senarai"
+msgstr ""
#. @-expanded: illegal orphaned inode %i in superblock.\n
#: e2fsck/problem.c:284
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@I @o @i %i in @S.\n"
-msgstr "%i × %i piksel %s %i%%"
+msgstr ""
#. @-expanded: illegal inode %i in orphaned inode list.\n
#: e2fsck/problem.c:290
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@I @i %i in @o @i list.\n"
-msgstr "I/O sekarang dibolehkan"
+msgstr ""
#. @-expanded: journal superblock has an unknown read-only feature flag set.\n
#: e2fsck/problem.c:295
@@ -1128,27 +1066,26 @@ msgstr ""
#. @-expanded: journal version not supported by this e2fsck.\n
#: e2fsck/problem.c:305
-#, fuzzy
msgid "@j version not supported by this e2fsck.\n"
-msgstr "Gzip tidak disokong oleh versi zlib ini"
+msgstr ""
#. @-expanded: Moving journal from /%s to hidden inode.\n
#. @-expanded: \n
#: e2fsck/problem.c:311
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"Moving @j from /%s to hidden @i.\n"
"\n"
-msgstr "Direktori Untuk Dikembalikan Dari"
+msgstr ""
#. @-expanded: Error moving journal: %m\n
#. @-expanded: \n
#: e2fsck/problem.c:317
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"Error moving @j: %m\n"
"\n"
-msgstr "Ralat ketika mengalih."
+msgstr ""
#. @-expanded: Found invalid V2 journal superblock fields (from V1 journal).\n
#. @-expanded: Clearing fields beyond the V1 journal superblock...\n
@@ -1162,9 +1099,8 @@ msgstr ""
#. @-expanded: Run journal anyway
#: e2fsck/problem.c:328
-#, fuzzy
msgid "Run @j anyway"
-msgstr "-J <nombor>"
+msgstr ""
#. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n
#: e2fsck/problem.c:333
@@ -1174,11 +1110,10 @@ msgstr ""
#. @-expanded: Backing up journal inode block information.\n
#. @-expanded: \n
#: e2fsck/problem.c:338
-#, fuzzy
msgid ""
"Backing up @j @i @b information.\n"
"\n"
-msgstr "Toggle salinan fail asal"
+msgstr ""
#. @-expanded: filesystem does not have resize_inode enabled, but s_reserved_gdt_blocks\n
#. @-expanded: is %N; should be zero.
@@ -1195,9 +1130,8 @@ msgstr ""
#. @-expanded: Resize inode not valid.
#: e2fsck/problem.c:355
-#, fuzzy
msgid "Resize @i not valid. "
-msgstr "\"%s\" adalah bukan nilai atribut ubahsaiz yang sah"
+msgstr ""
#. @-expanded: superblock last mount time (%t,\n
#. @-expanded: \tnow = %T) is in the future.\n
@@ -1217,24 +1151,22 @@ msgstr ""
#. @-expanded: superblock hint for external superblock should be %X.
#: e2fsck/problem.c:371
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@S hint for external superblock @s %X. "
-msgstr "Tetap masa untuk memaparkan hint:"
+msgstr ""
#. @-expanded: Adding dirhash hint to filesystem.\n
#. @-expanded: \n
#: e2fsck/problem.c:376
-#, fuzzy
msgid ""
"Adding dirhash hint to @f.\n"
"\n"
-msgstr "Menambah jurnal ke peranti %s:"
+msgstr ""
#. @-expanded: group descriptor %g checksum is %04x, should be %04y.
#: e2fsck/problem.c:381
-#, fuzzy
msgid "@g descriptor %g checksum is %04x, should be %04y. "
-msgstr "Saiz tab \"%s\" yang diminta tidak sah"
+msgstr ""
#. @-expanded: group descriptor %g marked uninitialized without feature set.\n
#: e2fsck/problem.c:387
@@ -1249,9 +1181,8 @@ msgstr ""
#. @-expanded: Last group block bitmap uninitialized.
#: e2fsck/problem.c:397
-#, fuzzy
msgid "Last @g @b @B uninitialized. "
-msgstr "@i @B untuk @g %g tiada didalam @g. (@b %b)\n"
+msgstr ""
#: e2fsck/problem.c:403
#, no-c-format
@@ -1282,9 +1213,8 @@ msgstr ""
#. @-expanded: One or more block group descriptor checksums are invalid.
#: e2fsck/problem.c:425
-#, fuzzy
msgid "One or more @b @g descriptor checksums are invalid. "
-msgstr "Saiz tab \"%s\" yang diminta tidak sah"
+msgstr ""
#. @-expanded: Setting free inodes count to %j (was %i)\n
#: e2fsck/problem.c:430
@@ -1298,31 +1228,28 @@ msgstr ""
#. @-expanded: Hiding %U quota inode %i (%Q).\n
#: e2fsck/problem.c:440
-#, fuzzy
msgid "Hiding %U @q @i %i (%Q).\n"
-msgstr "@i %i (%Q) adalah soket @I.\n"
+msgstr ""
#. @-expanded: superblock has invalid MMP block.
#: e2fsck/problem.c:445
-#, fuzzy
msgid "@S has invalid MMP block. "
-msgstr "Blok vendor %s tidak sah"
+msgstr ""
#. @-expanded: superblock has invalid MMP magic.
#: e2fsck/problem.c:450
-#, fuzzy
msgid "@S has invalid MMP magic. "
-msgstr "MMP: nombor magic tidak sah"
+msgstr ""
#: e2fsck/problem.c:456
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ext2fs_open2: %m\n"
-msgstr "%a dari %m"
+msgstr ""
#: e2fsck/problem.c:462
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ext2fs_check_desc: %m\n"
-msgstr "Huraian Pendek: %s\n"
+msgstr ""
#. @-expanded: superblock metadata_csum supersedes uninit_bg; both feature bits cannot be set
#. @-expanded: simultaneously.
@@ -1332,9 +1259,8 @@ msgstr ""
#. @-expanded: superblock MMP block checksum does not match.
#: e2fsck/problem.c:474
-#, fuzzy
msgid "@S MMP @b checksum does not match. "
-msgstr "Pengiraan bitmap MMP tidak sepadan"
+msgstr ""
#. @-expanded: superblock 64bit filesystem needs extents to access the whole disk.
#: e2fsck/problem.c:479
@@ -1347,9 +1273,8 @@ msgstr ""
#. @-expanded: External journal superblock checksum does not match superblock.
#: e2fsck/problem.c:489
-#, fuzzy
msgid "External @j @S checksum does not match @S. "
-msgstr "Cdrdao %1 tidak menyokong overburning."
+msgstr ""
#. @-expanded: superblock metadata_csum_seed is not necessary without metadata_csum.
#: e2fsck/problem.c:494
@@ -1373,9 +1298,8 @@ msgstr ""
#. @-expanded: Invalid %U quota inode %i.
#: e2fsck/problem.c:515
-#, fuzzy
msgid "Invalid %U @q @i %i. "
-msgstr "@i %i (%Q) adalah @I FIFO.\n"
+msgstr ""
#. @-expanded: superblock would have too many inodes (%N).\n
#: e2fsck/problem.c:520
@@ -1408,15 +1332,14 @@ msgstr ""
#. @-expanded: Reserved inode %i (%Q) has invalid mode.
#: e2fsck/problem.c:547
-#, fuzzy
msgid "Reserved @i %i (%Q) has @n mode. "
-msgstr "@i %i (%Q) mempunyai mod @n (%Im).\n"
+msgstr ""
#. @-expanded: deleted inode %i has zero dtime.
#: e2fsck/problem.c:553
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@D @i %i has zero dtime. "
-msgstr "i_blocks_hi @F %N, @s sifar.\n"
+msgstr ""
#. @-expanded: inode %i is in use, but has dtime set.
#: e2fsck/problem.c:559
@@ -1426,69 +1349,60 @@ msgstr ""
#. @-expanded: inode %i is a zero-length directory.
#: e2fsck/problem.c:565
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@i %i is a @z @d. "
-msgstr "@u @z @i %i. "
+msgstr ""
#. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
#: e2fsck/problem.c:570
-#, fuzzy
msgid "@g %g's @b @B at %b @C.\n"
-msgstr "@i @B untuk @g %g tiada didalam @g. (@b %b)\n"
+msgstr ""
#. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
#: e2fsck/problem.c:575
-#, fuzzy
msgid "@g %g's @i @B at %b @C.\n"
-msgstr "@i @B untuk @g %g tiada didalam @g. (@b %b)\n"
+msgstr ""
#. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
#: e2fsck/problem.c:580
-#, fuzzy
msgid "@g %g's @i table at %b @C.\n"
-msgstr "@i @B untuk @g %g tiada didalam @g. (@b %b)\n"
+msgstr ""
#. @-expanded: group %g's block bitmap (%b) is bad.
#: e2fsck/problem.c:585
-#, fuzzy
msgid "@g %g's @b @B (%b) is bad. "
-msgstr "warna [R,G,B] teruk"
+msgstr ""
#. @-expanded: group %g's inode bitmap (%b) is bad.
#: e2fsck/problem.c:590
-#, fuzzy
msgid "@g %g's @i @B (%b) is bad. "
-msgstr "@i @B untuk @g %g tiada didalam @g. (@b %b)\n"
+msgstr ""
#. @-expanded: inode %i, i_size is %Is, should be %N.
#: e2fsck/problem.c:595
-#, fuzzy
msgid "@i %i, i_size is %Is, @s %N. "
-msgstr "Symlink %Q (@i #%i) adalah @n.\n"
+msgstr ""
#. @-expanded: inode %i, i_blocks is %Ib, should be %N.
#: e2fsck/problem.c:600
-#, fuzzy
msgid "@i %i, i_@bs is %Ib, @s %N. "
-msgstr "i_frag @F %N, @s sifar.\n"
+msgstr ""
#. @-expanded: illegal %B (%b) in inode %i.
#: e2fsck/problem.c:605
-#, fuzzy
msgid "@I %B (%b) in @i %i. "
-msgstr "<b><i>Perintah</i></b>"
+msgstr ""
#. @-expanded: %B (%b) overlaps filesystem metadata in inode %i.
#: e2fsck/problem.c:610
-#, fuzzy
msgid "%B (%b) overlaps @f metadata in @i %i. "
-msgstr "&Dalam pelayar web"
+msgstr ""
#. @-expanded: inode %i has illegal block(s).
#: e2fsck/problem.c:616
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@i %i has illegal @b(s). "
-msgstr "<b>%s</b> (versi <i>%s</i>) akan dipasang\n"
+msgstr ""
#. @-expanded: Too many illegal blocks in inode %i.\n
#: e2fsck/problem.c:622
@@ -1498,21 +1412,18 @@ msgstr ""
#. @-expanded: illegal %B (%b) in bad block inode.
#: e2fsck/problem.c:627
-#, fuzzy
msgid "@I %B (%b) in bad @b @i. "
-msgstr "<b><i>Perintah</i></b>"
+msgstr ""
#. @-expanded: Bad block inode has illegal block(s).
#: e2fsck/problem.c:632
-#, fuzzy
msgid "Bad @b @i has illegal @b(s). "
-msgstr "Parameter tidak sah telah diterima."
+msgstr ""
#. @-expanded: Duplicate or bad block in use!\n
#: e2fsck/problem.c:637
-#, fuzzy
msgid "Duplicate or bad @b in use!\n"
-msgstr "<b>_Guna pengesahihan</b>"
+msgstr ""
#. @-expanded: Bad block %b used as bad block inode indirect block.
#: e2fsck/problem.c:642
@@ -1561,9 +1472,8 @@ msgstr ""
#. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
#: e2fsck/problem.c:676
-#, fuzzy
msgid "Warning: Group %g's @S (%b) is bad.\n"
-msgstr "gid/nama kumpulan buruk - %s"
+msgstr ""
#. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
#: e2fsck/problem.c:682
@@ -1577,41 +1487,35 @@ msgstr ""
#. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
#: e2fsck/problem.c:694
-#, fuzzy
msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
-msgstr "&Cari Bantuan"
+msgstr ""
#. @-expanded: error allocating block buffer for relocating %s\n
#: e2fsck/problem.c:700
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@A @b buffer for relocating %s\n"
msgstr ""
-"\n"
-"Buffer ditulis ke %s\n"
#. @-expanded: Relocating group %g's %s from %b to %c...\n
#: e2fsck/problem.c:705
-#, fuzzy
msgid "Relocating @g %g's %s from %b to %c...\n"
-msgstr "Direktori Untuk Dikembalikan Dari"
+msgstr ""
#. @-expanded: Relocating group %g's %s to %c...\n
#: e2fsck/problem.c:711
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Relocating @g %g's %s to %c...\n"
-msgstr "%s %g — %g, lalai %g"
+msgstr ""
#. @-expanded: Warning: could not read block %b of %s: %m\n
#: e2fsck/problem.c:716
-#, fuzzy
msgid "Warning: could not read @b %b of %s: %m\n"
-msgstr "Amaran: tidak dapat membaca blok 0: %s\n"
+msgstr ""
#. @-expanded: Warning: could not write block %b for %s: %m\n
#: e2fsck/problem.c:721
-#, fuzzy
msgid "Warning: could not write @b %b for %s: %m\n"
-msgstr "Tidak dapat menulis kepada fail %s"
+msgstr ""
#. @-expanded: error allocating inode bitmap (%N): %m\n
#: e2fsck/problem.c:726 e2fsck/problem.c:1936
@@ -1625,21 +1529,21 @@ msgstr "@A @b @B (%N): %m\n"
#. @-expanded: error allocating icount link information: %m\n
#: e2fsck/problem.c:737
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@A icount link information: %m\n"
-msgstr "Maklumat Peranti Terlampir"
+msgstr ""
#. @-expanded: error allocating directory block array: %m\n
#: e2fsck/problem.c:743
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@A @d @b array: %m\n"
-msgstr "%a, %b %d / %H∶%M"
+msgstr ""
#. @-expanded: Error while scanning inodes (%i): %m\n
#: e2fsck/problem.c:749
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Error while scanning @is (%i): %m\n"
-msgstr "Ralat menyahumpuk @i %i: %m\n"
+msgstr ""
#. @-expanded: Error while iterating over blocks in inode %i: %m\n
#: e2fsck/problem.c:755
@@ -1659,9 +1563,9 @@ msgstr ""
#. @-expanded: Error reading inode %i: %m\n
#: e2fsck/problem.c:772
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Error reading @i %i: %m\n"
-msgstr "Ralat menyahumpuk @i %i: %m\n"
+msgstr ""
#. @-expanded: inode %i has imagic flag set.
#: e2fsck/problem.c:781
@@ -1686,21 +1590,19 @@ msgstr ""
#. @-expanded: journal inode is not in use, but contains data.
#: e2fsck/problem.c:804
-#, fuzzy
msgid "@j @i is not in use, but contains data. "
-msgstr "Data EXIF mengandungi gambar kecil (%i byte)."
+msgstr ""
#. @-expanded: journal is not regular file.
#: e2fsck/problem.c:809
-#, fuzzy
msgid "@j is not regular file. "
-msgstr "J"
+msgstr ""
#. @-expanded: inode %i was part of the orphaned inode list.
#: e2fsck/problem.c:815
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@i %i was part of the @o @i list. "
-msgstr "I/O sekarang dibolehkan"
+msgstr ""
#. @-expanded: inodes that were part of a corrupted orphan linked list found.
#: e2fsck/problem.c:821
@@ -1709,75 +1611,64 @@ msgstr ""
#. @-expanded: error allocating refcount structure (%N): %m\n
#: e2fsck/problem.c:826
-#, fuzzy
msgid "@A refcount structure (%N): %m\n"
-msgstr "@A @i @B (%N): %m\n"
+msgstr ""
#. @-expanded: Error reading extended attribute block %b for inode %i.
#: e2fsck/problem.c:831
-#, fuzzy
msgid "Error reading @a @b %b for @i %i. "
-msgstr "Ralat membaca @d @b %b (@i %i): %m\n"
+msgstr ""
#. @-expanded: inode %i has a bad extended attribute block %b.
#: e2fsck/problem.c:836
-#, fuzzy
msgid "@i %i has a bad @a @b %b. "
-msgstr "<b><i>Perintah</i></b>"
+msgstr ""
#. @-expanded: Error reading extended attribute block %b (%m).
#: e2fsck/problem.c:841
-#, fuzzy
msgid "Error reading @a @b %b (%m). "
-msgstr "Terdapat ralat semasa membaca folder \"%B\"."
+msgstr ""
#. @-expanded: extended attribute block %b has reference count %r, should be %N.
#: e2fsck/problem.c:846
-#, fuzzy
msgid "@a @b %b has reference count %r, @s %N. "
-msgstr "@p @h %d: nod (%B) mempunyai @n bilangan (%N)\n"
+msgstr ""
#. @-expanded: Error writing extended attribute block %b (%m).
#: e2fsck/problem.c:851
-#, fuzzy
msgid "Error writing @a @b %b (%m). "
-msgstr "Ralat menyalin dalam gantian @b @B: %m\n"
+msgstr ""
#. @-expanded: extended attribute block %b has h_blocks > 1.
#: e2fsck/problem.c:856
-#, fuzzy
msgid "@a @b %b has h_@bs > 1. "
-msgstr "Mempunyai &Heading"
+msgstr ""
#. @-expanded: error allocating extended attribute region allocation structure.
#: e2fsck/problem.c:861
-#, fuzzy
msgid "@A @a region allocation structure. "
-msgstr "Peruntukan"
+msgstr ""
#. @-expanded: extended attribute block %b is corrupt (allocation collision).
#: e2fsck/problem.c:866
-#, fuzzy
msgid "@a @b %b is corrupt (allocation collision). "
-msgstr "<b>Allocation</b>"
+msgstr ""
#. @-expanded: extended attribute block %b is corrupt (invalid name).
#: e2fsck/problem.c:871
-#, fuzzy
msgid "@a @b %b is corrupt (@n name). "
-msgstr "<b>Nama Profil</b>"
+msgstr ""
#. @-expanded: extended attribute block %b is corrupt (invalid value).
#: e2fsck/problem.c:876
-#, fuzzy
msgid "@a @b %b is corrupt (@n value). "
-msgstr "@A @i @B (%N): %m\n"
+msgstr ""
#. @-expanded: inode %i is too big.
#: e2fsck/problem.c:882
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@i %i is too big. "
-msgstr "Regular expression terlalu besar"
+msgstr ""
#. @-expanded: %B (%b) causes directory to be too big.
#: e2fsck/problem.c:886
@@ -1785,9 +1676,8 @@ msgid "%B (%b) causes @d to be too big. "
msgstr ""
#: e2fsck/problem.c:891
-#, fuzzy
msgid "%B (%b) causes file to be too big. "
-msgstr "<big><b>Fail telah wujud</b></big>\n"
+msgstr ""
#: e2fsck/problem.c:896
msgid "%B (%b) causes symlink to be too big. "
@@ -1807,15 +1697,14 @@ msgstr ""
#. @-expanded: HTREE directory inode %i has an invalid root node.\n
#: e2fsck/problem.c:914
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@h %i has an @n root node.\n"
-msgstr "@p @h %d: nod root node ialah @n\n"
+msgstr ""
#. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n
#: e2fsck/problem.c:919
-#, fuzzy
msgid "@h %i has an unsupported hash version (%N)\n"
-msgstr "Sijil tidak mempunyai ciri disokong."
+msgstr ""
#. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n
#: e2fsck/problem.c:925
@@ -1849,9 +1738,8 @@ msgstr ""
#. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n
#: e2fsck/problem.c:953
-#, fuzzy
msgid "@a in @i %i has a namelen (%N) which is @n\n"
-msgstr "@i %i (%Q) mempunyai mod @n (%Im).\n"
+msgstr ""
#. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
#: e2fsck/problem.c:958
@@ -1870,9 +1758,8 @@ msgstr ""
#. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid\n
#: e2fsck/problem.c:973
-#, fuzzy
msgid "@a in @i %i has a hash (%N) which is @n\n"
-msgstr "@i %i (%Q) mempunyai mod @n (%Im).\n"
+msgstr ""
#. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
#: e2fsck/problem.c:978
@@ -1881,9 +1768,9 @@ msgstr ""
#. @-expanded: Error while reading over extent tree in inode %i: %m\n
#: e2fsck/problem.c:984
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Error while reading over @x tree in @i %i: %m\n"
-msgstr "Ralat berlaku bila cuba menyalin cekupan skrin."
+msgstr ""
#. @-expanded: Failed to iterate extents in inode %i\n
#. @-expanded: \t(op %s, blk %b, lblk %c): %m\n
@@ -1947,33 +1834,29 @@ msgstr ""
#. @-expanded: Error converting subcluster block bitmap: %m\n
#: e2fsck/problem.c:1039
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Error converting subcluster @b @B: %m\n"
-msgstr "Ralat menyalin dalam gantian @b @B: %m\n"
+msgstr ""
#. @-expanded: quota inode is not a regular file.
#: e2fsck/problem.c:1044
-#, fuzzy
msgid "@q @i is not a regular file. "
-msgstr "@i %i (%Q) adalah soket @I.\n"
+msgstr ""
#. @-expanded: quota inode is not in use, but contains data.
#: e2fsck/problem.c:1049
-#, fuzzy
msgid "@q @i is not in use, but contains data. "
-msgstr "Data EXIF mengandungi gambar kecil (%i byte)."
+msgstr ""
#. @-expanded: quota inode is visible to the user.
#: e2fsck/problem.c:1054
-#, fuzzy
msgid "@q @i is visible to the user. "
-msgstr "Symlink %Q (@i #%i) adalah @n.\n"
+msgstr ""
#. @-expanded: The bad block inode looks invalid.
#: e2fsck/problem.c:1059
-#, fuzzy
msgid "The bad @b @i looks @n. "
-msgstr "@A @i @B (%N): %m\n"
+msgstr ""
#. @-expanded: inode %i has zero length extent\n
#. @-expanded: \t(invalid logical block %c, physical block %b)\n
@@ -1985,9 +1868,9 @@ msgstr ""
#. @-expanded: inode %i seems to contain garbage.
#: e2fsck/problem.c:1070
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@i %i seems to contain garbage. "
-msgstr "Regular expression terlalu besar"
+msgstr ""
#. @-expanded: inode %i passes checks, but checksum does not match inode.
#: e2fsck/problem.c:1076
@@ -2050,15 +1933,14 @@ msgstr ""
#. @-expanded: directory inode %i block %b should be at block %c.
#: e2fsck/problem.c:1135
-#, fuzzy
msgid "@d @i %i @b %b should be at @b %c. "
-msgstr "@A baru @d @b untuk @i %i (%s): %m\n"
+msgstr ""
#. @-expanded: directory inode %i has extent marked uninitialized at block %c.
#: e2fsck/problem.c:1141
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@d @i %i has @x marked uninitialized at @b %c. "
-msgstr "@d @i %i mempunyai @b tidak diumpuk #%B. "
+msgstr ""
#. @-expanded: inode %i logical block %b (physical block %c) violates cluster allocation rules.\n
#. @-expanded: Will fix in pass 1B.\n
@@ -2114,9 +1996,8 @@ msgstr ""
#. @-expanded: error allocating extent region allocation structure.
#: e2fsck/problem.c:1194
-#, fuzzy
msgid "@A @x region allocation structure. "
-msgstr "Struktur utama yang mengandungi maklumat berasaskan kawasan"
+msgstr ""
#. @-expanded: inode %i has a duplicate extent mapping\n
#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
@@ -2128,9 +2009,8 @@ msgstr ""
#. @-expanded: error allocating %N bytes of memory for encrypted inode list\n
#: e2fsck/problem.c:1204
-#, fuzzy
msgid "@A %N bytes of memory for encrypted @i list\n"
-msgstr "Kehabisan memori ketika memadam sektor %d-%d\n"
+msgstr ""
#. @-expanded: inode %i extent tree could be more shallow (%b; could be <= %c)\n
#: e2fsck/problem.c:1209
@@ -2145,9 +2025,9 @@ msgstr ""
#. @-expanded: inode %i has corrupt extent header.
#: e2fsck/problem.c:1221
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@i %i has corrupt @x header. "
-msgstr "Nama terlalu panjang"
+msgstr ""
#. @-expanded: Timestamp(s) on inode %i beyond 2310-04-04 are likely pre-1970.\n
#: e2fsck/problem.c:1227
@@ -2157,9 +2037,8 @@ msgstr ""
#. @-expanded: inode %i has illegal extended attribute value inode %N.\n
#: e2fsck/problem.c:1232
-#, fuzzy
msgid "@i %i has @I @a value @i %N.\n"
-msgstr "@i %i (%Q) mempunyai mod @n (%Im).\n"
+msgstr ""
#. @-expanded: inode %i has invalid extended attribute. EA inode %N missing EA_INODE flag.\n
#: e2fsck/problem.c:1238
@@ -2176,9 +2055,9 @@ msgstr ""
#. @-expanded: inode %i has extent marked uninitialized at block %c (len %N).
#: e2fsck/problem.c:1249
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@i %i has @x marked uninitialized at @b %c (len %N). "
-msgstr "@d @i %i mempunyai @b tidak diumpuk #%B. "
+msgstr ""
#. @-expanded: inode %i has the casefold flag set but is not a directory.
#: e2fsck/problem.c:1254
@@ -2203,9 +2082,9 @@ msgstr ""
#. @-expanded: Encrypted inode %i has corrupt encryption extended attribute.\n
#: e2fsck/problem.c:1269
-#, fuzzy, c-format
+#, c-format
msgid "Encrypted @i %i has corrupt encryption @a.\n"
-msgstr "%s: fail terlalu pendek untuk menjadi fail gmon\n"
+msgstr ""
#. @-expanded: HTREE directory inode %i uses hash version (%N), but should use SipHash (6) \n
#: e2fsck/problem.c:1274
@@ -2230,20 +2109,20 @@ msgstr ""
#. @-expanded: multiply-claimed block(s) in inode %i:
#: e2fsck/problem.c:1294
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@m @b(s) in @i %i:"
-msgstr "%A, %-d %B %Y pada %-I:%M:%S %p"
+msgstr ""
#: e2fsck/problem.c:1310
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Error while scanning inodes (%i): %m\n"
-msgstr "Ralat apabila membaca fail."
+msgstr ""
#. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n
#: e2fsck/problem.c:1316
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@A @i @B (@i_dup_map): %m\n"
-msgstr "@A baru @d @b untuk @i %i (%s): %m\n"
+msgstr ""
#. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
#: e2fsck/problem.c:1322
@@ -2253,9 +2132,8 @@ msgstr ""
#. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
#: e2fsck/problem.c:1327 e2fsck/problem.c:1707
-#, fuzzy
msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
-msgstr "Ralat menyalin dalam penggantian @i @B: %m\n"
+msgstr ""
#. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
#: e2fsck/problem.c:1337
@@ -2277,24 +2155,21 @@ msgstr ""
#. @-expanded: \t%Q (inode #%i, mod time %IM)\n
#: e2fsck/problem.c:1354
-#, fuzzy
msgid "\t%Q (@i #%i, mod time %IM)\n"
-msgstr "@i %i (%Q) mempunyai mod @n (%Im).\n"
+msgstr ""
#. @-expanded: \t<filesystem metadata>\n
#: e2fsck/problem.c:1359
-#, fuzzy
msgid "\t<@f metadata>\n"
-msgstr "Data meta"
+msgstr ""
#. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n
#. @-expanded: \n
#: e2fsck/problem.c:1364
-#, fuzzy
msgid ""
"(There are %N @is containing @m @bs.)\n"
"\n"
-msgstr "HYPGEOMDIST(x; n; M; N)"
+msgstr ""
#. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
#. @-expanded: \n
@@ -2305,28 +2180,25 @@ msgid ""
msgstr ""
#: e2fsck/problem.c:1383
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Couldn't clone file: %m\n"
-msgstr "Tidak dapat membuka fail profil"
+msgstr ""
#. @-expanded: Pass 1E: Optimizing extent trees\n
#: e2fsck/problem.c:1389
-#, fuzzy
msgid "Pass 1E: Optimizing @x trees\n"
-msgstr "Mengoptimakan direktori"
+msgstr ""
#. @-expanded: Failed to optimize extent tree %p (%i): %m\n
#: e2fsck/problem.c:1395
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Failed to optimize @x tree %p (%i): %m\n"
-msgstr "Gagal untuk mengoptima direktori %q (%d): %m"
+msgstr ""
#. @-expanded: Optimizing extent trees:
#: e2fsck/problem.c:1400
-#, fuzzy
-#| msgid "Optimizing directories: "
msgid "Optimizing @x trees: "
-msgstr "Mengoptimumkan direktori: "
+msgstr ""
#: e2fsck/problem.c:1415
msgid "Internal error: max extent tree depth too large (%b; expected=%c).\n"
@@ -2344,29 +2216,24 @@ msgstr ""
#. @-expanded: Pass 2: Checking directory structure\n
#: e2fsck/problem.c:1432
-#, fuzzy
msgid "Pass 2: Checking @d structure\n"
-msgstr "Ulangan 3: Memeriksa sambungan @d\n"
+msgstr ""
#. @-expanded: invalid inode number for '.' in directory inode %i.\n
#: e2fsck/problem.c:1438
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@n @i number for '.' in @d @i %i.\n"
-msgstr "Symlink %Q (@i #%i) adalah @n.\n"
+msgstr ""
#. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
#: e2fsck/problem.c:1443
-#, fuzzy
msgid "@E has @n @i #: %Di.\n"
-msgstr "@i %i (%Q) mempunyai mod @n (%Im).\n"
+msgstr ""
#. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di.
#: e2fsck/problem.c:1448
-#, fuzzy
msgid "@E has @D/unused @i %Di. "
msgstr ""
-"amaran: %u blok tidak digunakan.\n"
-"\n"
#. @-expanded: entry '%Dn' in %p (%i) is a link to '.'
#: e2fsck/problem.c:1453
@@ -2381,15 +2248,13 @@ msgstr ""
#. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
#: e2fsck/problem.c:1463
-#, fuzzy
msgid "@E @L to @d %P (%Di).\n"
-msgstr "%a %e %b_%l:%M %p"
+msgstr ""
#. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n
#: e2fsck/problem.c:1468
-#, fuzzy
msgid "@E @L to the @r.\n"
-msgstr "%a %e %b_%R:%S"
+msgstr ""
#. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n
#: e2fsck/problem.c:1473
@@ -2398,21 +2263,20 @@ msgstr ""
#. @-expanded: Missing '.' in directory inode %i.\n
#: e2fsck/problem.c:1479
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Missing '.' in @d @i %i.\n"
-msgstr "/@l adalah bukan sejenis @d (ino=%i)\n"
+msgstr ""
#. @-expanded: Missing '..' in directory inode %i.\n
#: e2fsck/problem.c:1485
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Missing '..' in @d @i %i.\n"
-msgstr "/@l adalah bukan sejenis @d (ino=%i)\n"
+msgstr ""
#. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
#: e2fsck/problem.c:1490
-#, fuzzy
msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
-msgstr "Pergi ke fail pertama dalam senarai"
+msgstr ""
#. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
#: e2fsck/problem.c:1495
@@ -2426,16 +2290,13 @@ msgstr "i_faddr @F %IF, @s sifar.\n"
#. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n
#: e2fsck/problem.c:1505
-#, fuzzy
msgid "i_file_acl @F %If, @s zero.\n"
-msgstr "i_faddr @F %IF, @s sifar.\n"
+msgstr ""
#. @-expanded: i_size_high for inode %i (%Q) is %Id, should be zero.\n
#: e2fsck/problem.c:1510
-#, fuzzy
-#| msgid "i_fsize @F %N, @s zero.\n"
msgid "i_size_high @F %Id, @s zero.\n"
-msgstr "i_fsize @F %N, @s sifar.\n"
+msgstr ""
#. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
#: e2fsck/problem.c:1515
@@ -2454,21 +2315,18 @@ msgstr "@i %i (%Q) mempunyai mod @n (%Im).\n"
#. @-expanded: directory inode %i, %B, offset %N: directory corrupted\n
#: e2fsck/problem.c:1530
-#, fuzzy
msgid "@d @i %i, %B, offset %N: @d corrupted\n"
-msgstr "@d @i %i, @b %B, offset %N: @d rosak\n"
+msgstr ""
#. @-expanded: directory inode %i, %B, offset %N: filename too long\n
#: e2fsck/problem.c:1535
-#, fuzzy
msgid "@d @i %i, %B, offset %N: filename too long\n"
-msgstr "@d @i %i, @b %B, offset %N: namafail terlalu panjang\n"
+msgstr ""
#. @-expanded: directory inode %i has an unallocated %B.
#: e2fsck/problem.c:1540
-#, fuzzy
msgid "@d @i %i has an unallocated %B. "
-msgstr "%b %d %I∶%M %p"
+msgstr ""
#. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n
#: e2fsck/problem.c:1546
@@ -2514,9 +2372,9 @@ msgstr ""
#. @-expanded: error allocating icount structure: %m\n
#: e2fsck/problem.c:1589
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@A icount structure: %m\n"
-msgstr "Nombor ajaib yang salah untuk struktur icount"
+msgstr ""
#. @-expanded: Error iterating over directory blocks: %m\n
#: e2fsck/problem.c:1595
@@ -2548,9 +2406,9 @@ msgstr "Ralat menyahumpuk @i %i: %m\n"
#. @-expanded: directory entry for '.' in %p (%i) is big.\n
#: e2fsck/problem.c:1623
-#, fuzzy, no-c-format
+#, no-c-format
msgid "@d @e for '.' in %p (%i) is big.\n"
-msgstr "%B %e %Y, %I∶%M∶%S %p"
+msgstr ""
#. @-expanded: inode %i (%Q) is an illegal FIFO.\n
#: e2fsck/problem.c:1628
@@ -2589,9 +2447,8 @@ msgstr "Symlink %Q (@i #%i) adalah @n.\n"
#. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n
#: e2fsck/problem.c:1663
-#, fuzzy
msgid "@a @b @F @n (%If).\n"
-msgstr "@A @b @B (%N): %m\n"
+msgstr ""
#. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
#: e2fsck/problem.c:1668
@@ -2600,27 +2457,23 @@ msgstr ""
#. @-expanded: problem in HTREE directory inode %d: %B not referenced\n
#: e2fsck/problem.c:1673
-#, fuzzy
msgid "@p @h %d: %B not referenced\n"
-msgstr "%b %d, %H∶%M"
+msgstr ""
#. @-expanded: problem in HTREE directory inode %d: %B referenced twice\n
#: e2fsck/problem.c:1678
-#, fuzzy
msgid "@p @h %d: %B referenced twice\n"
-msgstr "@p @h %d (%q): buruk @b nombor %b.\n"
+msgstr ""
#. @-expanded: problem in HTREE directory inode %d: %B has bad min hash\n
#: e2fsck/problem.c:1683
-#, fuzzy
msgid "@p @h %d: %B has bad min hash\n"
-msgstr "@p @h %d: nod (%B) mempunyai kedalaman @n\n"
+msgstr ""
#. @-expanded: problem in HTREE directory inode %d: %B has bad max hash\n
#: e2fsck/problem.c:1688
-#, fuzzy
msgid "@p @h %d: %B has bad max hash\n"
-msgstr "@p @h %d: nod (%B) mempunyai kedalaman @n\n"
+msgstr ""
#. @-expanded: invalid HTREE directory inode %d (%q).
#: e2fsck/problem.c:1693
@@ -2645,27 +2498,23 @@ msgstr "@p @h %d: nod root node ialah @n\n"
#. @-expanded: problem in HTREE directory inode %d: %B has invalid limit (%N)\n
#: e2fsck/problem.c:1718
-#, fuzzy
msgid "@p @h %d: %B has @n limit (%N)\n"
-msgstr "@p @h %d: nod (%B) mempunyai had @n (%N)\n"
+msgstr ""
#. @-expanded: problem in HTREE directory inode %d: %B has invalid count (%N)\n
#: e2fsck/problem.c:1723
-#, fuzzy
msgid "@p @h %d: %B has @n count (%N)\n"
-msgstr "@p @h %d: nod (%B) mempunyai @n bilangan (%N)\n"
+msgstr ""
#. @-expanded: problem in HTREE directory inode %d: %B has an unordered hash table\n
#: e2fsck/problem.c:1728
-#, fuzzy
msgid "@p @h %d: %B has an unordered hash table\n"
-msgstr "@p @h %d: nod (%B) mempunyai kedalaman @n\n"
+msgstr ""
#. @-expanded: problem in HTREE directory inode %d: %B has invalid depth (%N)\n
#: e2fsck/problem.c:1733
-#, fuzzy
msgid "@p @h %d: %B has @n depth (%N)\n"
-msgstr "@p @h %d: nod (%B) mempunyai kedalaman @n\n"
+msgstr ""
#. @-expanded: Duplicate entry '%Dn' in %p (%i) found.
#: e2fsck/problem.c:1738
@@ -2713,29 +2562,25 @@ msgstr ""
#. @-expanded: i_file_acl_hi for inode %i (%Q) is %N, should be zero.\n
#: e2fsck/problem.c:1773
-#, fuzzy
msgid "i_file_acl_hi @F %N, @s zero.\n"
-msgstr "i_blocks_hi @F %N, @s sifar.\n"
+msgstr ""
#. @-expanded: problem in HTREE directory inode %d: root node fails checksum.\n
#: e2fsck/problem.c:1779
-#, fuzzy, no-c-format
-#| msgid "@p @h %d: root node is @n\n"
+#, no-c-format
msgid "@p @h %d: root node fails checksum.\n"
-msgstr "@p @h %d: nod root node ialah @n\n"
+msgstr ""
#. @-expanded: problem in HTREE directory inode %d: internal node fails checksum.\n
#: e2fsck/problem.c:1785
-#, fuzzy, no-c-format
-#| msgid "@p @h %d: root node is @n\n"
+#, no-c-format
msgid "@p @h %d: internal node fails checksum.\n"
-msgstr "@p @h %d: nod root node ialah @n\n"
+msgstr ""
#. @-expanded: directory inode %i, %B, offset %N: directory has no checksum.\n
#: e2fsck/problem.c:1790
-#, fuzzy
msgid "@d @i %i, %B, offset %N: @d has no checksum.\n"
-msgstr "@d @i %i, @b %B, offset %N: @d rosak\n"
+msgstr ""
#. @-expanded: directory inode %i, %B: directory passes checks but fails checksum.\n
#: e2fsck/problem.c:1795
@@ -2755,9 +2600,8 @@ msgstr ""
#. @-expanded: Encrypted entry '%Dn' in %p (%i) is too short.\n
#: e2fsck/problem.c:1811
-#, fuzzy
msgid "Encrypted @E is too short.\n"
-msgstr "Tajuk filem terlalu pendek"
+msgstr ""
#. @-expanded: Encrypted entry '%Dn' in %p (%i) references unencrypted inode %Di.\n
#: e2fsck/problem.c:1816
@@ -2776,10 +2620,8 @@ msgstr ""
#. @-expanded: Duplicate filename entry '%Dn' in %p (%i) found.
#: e2fsck/problem.c:1831
-#, fuzzy
-#| msgid "Duplicate @E found. "
msgid "Duplicate filename @E found. "
-msgstr "Salinan @E dijumpai. "
+msgstr ""
#. @-expanded: Pass 3: Checking directory connectivity\n
#: e2fsck/problem.c:1839
@@ -2798,9 +2640,9 @@ msgstr "Tiada ruang dalam @l @d. "
#. @-expanded: Unconnected directory inode %i (was in %q)\n
#: e2fsck/problem.c:1855
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Unconnected @d @i %i (was in %q)\n"
-msgstr "@i %i (%Q) adalah @I FIFO.\n"
+msgstr ""
#. @-expanded: /lost+found not found.
#: e2fsck/problem.c:1860
@@ -2915,9 +2757,8 @@ msgstr "/@l adalah bukan sejenis @d (ino=%i)\n"
#. @-expanded: /lost+found has inline data\n
#: e2fsck/problem.c:1974
-#, fuzzy
msgid "/@l has inline data\n"
-msgstr "Inode tidak mempunyai data sebaris"
+msgstr ""
#. @-expanded: Cannot allocate space for /lost+found.\n
#. @-expanded: Place lost files in root directory instead
@@ -2939,20 +2780,18 @@ msgstr ""
#. @-expanded: /lost+found is encrypted\n
#: e2fsck/problem.c:1989
-#, fuzzy
msgid "/@l is encrypted\n"
-msgstr "Disulitkan oleh:"
+msgstr ""
#. @-expanded: Recursively looped directory inode %i (%p)\n
#: e2fsck/problem.c:1995
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Recursively looped @d @i %i (%p)\n"
-msgstr "'..' dalam %Q (%i) adalah %P (%j), @s %q (%d).\n"
+msgstr ""
#: e2fsck/problem.c:2002
-#, fuzzy
msgid "Pass 3A: Optimizing directories\n"
-msgstr "Mengoptimumkan direktori: "
+msgstr ""
#: e2fsck/problem.c:2008
#, no-c-format
@@ -2960,9 +2799,8 @@ msgid "Failed to create dirs_to_hash iterator: %m\n"
msgstr ""
#: e2fsck/problem.c:2013
-#, fuzzy
msgid "Failed to optimize directory %q (%d): %m\n"
-msgstr "Gagal untuk mengoptima direktori %q (%d): %m"
+msgstr ""
#: e2fsck/problem.c:2018
msgid "Optimizing directories: "
@@ -3001,9 +2839,8 @@ msgstr ""
#. @-expanded: extended attribute inode %i ref count is %N, should be %n.
#: e2fsck/problem.c:2063
-#, fuzzy
msgid "@a @i %i ref count is %N, @s %n. "
-msgstr "i_fsize @F %N, @s sifar.\n"
+msgstr ""
#. @-expanded: directory exceeds max links, but no DIR_NLINK feature in superblock.\n
#: e2fsck/problem.c:2068
@@ -3027,9 +2864,8 @@ msgstr ""
#. @-expanded: Padding at end of block bitmap is not set.
#: e2fsck/problem.c:2090
-#, fuzzy
msgid "Padding at end of @b @B is not set. "
-msgstr "<b>Tetapkan Aplikasi Kegemaran</b>"
+msgstr ""
#. @-expanded: block bitmap differences:
#: e2fsck/problem.c:2095
@@ -3114,9 +2950,8 @@ msgstr ""
#. @-expanded: Recreate journal
#: e2fsck/problem.c:2237
-#, fuzzy
msgid "Recreate @j"
-msgstr "Cipta semula folder yang tersimpan dalam arkib"
+msgstr ""
#: e2fsck/problem.c:2242
msgid "Update quota info for quota type %N"
@@ -3124,15 +2959,14 @@ msgstr ""
#. @-expanded: Error setting block group checksum info: %m\n
#: e2fsck/problem.c:2248
-#, fuzzy, no-c-format
-#| msgid "while setting block group checksum info"
+#, no-c-format
msgid "Error setting @b @g checksum info: %m\n"
-msgstr "ketika menetapkan maklumat checksum kumpulan blok"
+msgstr ""
#: e2fsck/problem.c:2254
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Error writing file system info: %m\n"
-msgstr "Ralat memadam gulungan mel.\n"
+msgstr ""
#: e2fsck/problem.c:2260
#, no-c-format
@@ -3140,23 +2974,21 @@ msgid "Error flushing writes to storage device: %m\n"
msgstr ""
#: e2fsck/problem.c:2265
-#, fuzzy
msgid "Error writing quota info for quota type %N: %m\n"
-msgstr "Ralat memadam gulungan mel.\n"
+msgstr ""
#: e2fsck/problem.c:2430
-#, fuzzy, c-format
+#, c-format
msgid "Unhandled error code (0x%x)!\n"
-msgstr "Ralat LDAP 0x%x (%s)"
+msgstr ""
#: e2fsck/problem.c:2558 e2fsck/problem.c:2562
msgid "IGNORED"
msgstr "DIABAIKAN"
#: e2fsck/quota.c:30 e2fsck/quota.c:37 e2fsck/quota.c:50 e2fsck/quota.c:59
-#, fuzzy
msgid "in move_quota_inode"
-msgstr "Inod"
+msgstr ""
#: e2fsck/scantest.c:79
#, c-format
@@ -3169,9 +3001,8 @@ msgid "size of inode=%d\n"
msgstr "saiz inod=%d\n"
#: e2fsck/scantest.c:114 misc/e2image.c:1331
-#, fuzzy
msgid "while opening inode scan"
-msgstr "ketika memulakan pengesanan inod"
+msgstr ""
#: e2fsck/scantest.c:119
msgid "while starting inode scan"
@@ -3182,9 +3013,9 @@ msgid "while doing inode scan"
msgstr "ketika melakukan pengesanan inod"
#: e2fsck/super.c:224
-#, fuzzy, c-format
+#, c-format
msgid "while calling ext2fs_block_iterate for inode %u"
-msgstr "ketika mengosongkan inod jurnal"
+msgstr ""
#: e2fsck/super.c:249
#, c-format
@@ -3231,9 +3062,9 @@ msgid ""
msgstr ""
#: e2fsck/unix.c:138
-#, fuzzy, c-format
+#, c-format
msgid "%s: %u/%u files (%0d.%d%% non-contiguous), %llu/%llu blocks\n"
-msgstr "%s: bersih, %u/%u fail, %u/%u blok"
+msgstr ""
#: e2fsck/unix.c:165
#, c-format
@@ -3263,9 +3094,8 @@ msgid " # of inodes with ind/dind/tind blocks: %u/%u/%u\n"
msgstr ""
#: e2fsck/unix.c:187
-#, fuzzy
msgid " Extent depth histogram: "
-msgstr "Kedalaman:"
+msgstr ""
#: e2fsck/unix.c:196
#, c-format
@@ -3274,44 +3104,44 @@ msgid_plural "%12llu blocks used (%2.2f%%, out of %llu)\n"
msgstr[0] ""
#: e2fsck/unix.c:201
-#, fuzzy, c-format
+#, c-format
msgid "%12u bad block\n"
msgid_plural "%12u bad blocks\n"
-msgstr[0] "%12u fifo\n"
+msgstr[0] ""
#: e2fsck/unix.c:203
-#, fuzzy, c-format
+#, c-format
msgid "%12u large file\n"
msgid_plural "%12u large files\n"
-msgstr[0] "%12u fifo\n"
+msgstr[0] ""
#: e2fsck/unix.c:205
-#, fuzzy, c-format
+#, c-format
msgid ""
"\n"
"%12u regular file\n"
msgid_plural ""
"\n"
"%12u regular files\n"
-msgstr[0] "Bukan satu fail nalar."
+msgstr[0] ""
#: e2fsck/unix.c:207
-#, fuzzy, c-format
+#, c-format
msgid "%12u directory\n"
msgid_plural "%12u directories\n"
-msgstr[0] "%12u fifo\n"
+msgstr[0] ""
#: e2fsck/unix.c:209
-#, fuzzy, c-format
+#, c-format
msgid "%12u character device file\n"
msgid_plural "%12u character device files\n"
-msgstr[0] "/dev/urandom bukan peranti aksara"
+msgstr[0] ""
#: e2fsck/unix.c:212
-#, fuzzy, c-format
+#, c-format
msgid "%12u block device file\n"
msgid_plural "%12u block device files\n"
-msgstr[0] "Peranti blok"
+msgstr[0] ""
#: e2fsck/unix.c:214
#, c-format
@@ -3320,34 +3150,34 @@ msgid_plural "%12u fifos\n"
msgstr[0] "%12u fifo\n"
#: e2fsck/unix.c:216
-#, fuzzy, c-format
+#, c-format
msgid "%12u link\n"
msgid_plural "%12u links\n"
-msgstr[0] "%12u fifo\n"
+msgstr[0] ""
#: e2fsck/unix.c:218
-#, fuzzy, c-format
+#, c-format
msgid "%12u symbolic link"
msgid_plural "%12u symbolic links"
-msgstr[0] "pautan simbolik"
+msgstr[0] ""
#: e2fsck/unix.c:220
-#, fuzzy, c-format
+#, c-format
msgid " (%u fast symbolic link)\n"
msgid_plural " (%u fast symbolic links)\n"
-msgstr[0] "Cipta pautan simbolik ke fail."
+msgstr[0] ""
#: e2fsck/unix.c:224
-#, fuzzy, c-format
+#, c-format
msgid "%12u socket\n"
msgid_plural "%12u sockets\n"
-msgstr[0] "soket"
+msgstr[0] ""
#: e2fsck/unix.c:228
-#, fuzzy, c-format
+#, c-format
msgid "%12u file\n"
msgid_plural "%12u files\n"
-msgstr[0] "%12u fifo\n"
+msgstr[0] ""
#: e2fsck/unix.c:241 misc/badblocks.c:1001 misc/tune2fs.c:3082 misc/util.c:130
#: resize/main.c:359
@@ -3356,14 +3186,14 @@ msgid "while determining whether %s is mounted."
msgstr "ketika menentukan sama ada %s telah dilekapkan."
#: e2fsck/unix.c:262
-#, fuzzy, c-format
+#, c-format
msgid "Warning! %s is mounted.\n"
-msgstr "%s dilekapkan; "
+msgstr ""
#: e2fsck/unix.c:265
-#, fuzzy, c-format
+#, c-format
msgid "Warning! %s is in use.\n"
-msgstr "%s Amaran"
+msgstr ""
#: e2fsck/unix.c:271
#, fuzzy, c-format
@@ -3403,9 +3233,8 @@ msgid "check aborted.\n"
msgstr "pemeriksaan dibatalkan.\n"
#: e2fsck/unix.c:378
-#, fuzzy
msgid " contains a file system with errors"
-msgstr "%s mengandungi sistem fail %s\n"
+msgstr ""
#: e2fsck/unix.c:380
msgid " was not cleanly unmounted"
@@ -3438,14 +3267,13 @@ msgid ", check forced.\n"
msgstr ", pemeriksaan dipaksa.\n"
#: e2fsck/unix.c:446
-#, fuzzy, c-format
+#, c-format
msgid "%s: clean, %u/%u files, %llu/%llu blocks"
-msgstr "%s: bersih, %u/%u fail, %u/%u blok"
+msgstr ""
#: e2fsck/unix.c:466
-#, fuzzy
msgid " (check deferred; on battery)"
-msgstr "Ditangguhkan"
+msgstr ""
#: e2fsck/unix.c:469
msgid " (check after next mount)"
@@ -3457,19 +3285,17 @@ msgid " (check in %ld mounts)"
msgstr " (diperiksa daiam lekapan %ld)"
#: e2fsck/unix.c:621
-#, fuzzy, c-format
+#, c-format
msgid "ERROR: Couldn't open /dev/null (%s)\n"
-msgstr "RALAT: tidak dapat buka %s untuk penulisan"
+msgstr ""
#: e2fsck/unix.c:692
msgid "Invalid EA version.\n"
msgstr "Versi EA tidak sah.\n"
#: e2fsck/unix.c:705
-#, fuzzy
-#| msgid "Invalid resize parameter: %s\n"
msgid "Invalid readahead buffer size.\n"
-msgstr "Penimbal mengandungi aksara-aksara tidak sah."
+msgstr ""
#: e2fsck/unix.c:768
#, c-format
@@ -3489,10 +3315,8 @@ msgid "\tea_ver=<ea_version (1 or 2)>\n"
msgstr ""
#: e2fsck/unix.c:789
-#, fuzzy
-#| msgid "Invalid resize parameter: %s\n"
msgid "\treadahead_kb=<buffer size>\n"
-msgstr "Saiz penimbal FIFO (dalam kb)"
+msgstr ""
#: e2fsck/unix.c:802
#, c-format
@@ -3507,18 +3331,17 @@ msgid "Error validating file descriptor %d: %s\n"
msgstr "Ralat mengesahkan penghurai fail %d: %s\n"
#: e2fsck/unix.c:879
-#, fuzzy
msgid "Invalid completion information file descriptor"
-msgstr "Ralat mendapatkan maklumat untuk penerang fail: %s"
+msgstr ""
#: e2fsck/unix.c:894
msgid "Only one of the options -p/-a, -n or -y may be specified."
msgstr ""
#: e2fsck/unix.c:915
-#, fuzzy, c-format
+#, c-format
msgid "The -t option is not supported on this version of e2fsck.\n"
-msgstr "Pilihan “%s” tidak lagi disokong dalam versi gnome-terminal ini."
+msgstr ""
#: e2fsck/unix.c:947 e2fsck/unix.c:1025 misc/e2initrd_helper.c:331
#: misc/tune2fs.c:1780 misc/tune2fs.c:2080 misc/tune2fs.c:2098
@@ -3527,58 +3350,53 @@ msgid "Unable to resolve '%s'"
msgstr "Tidak dapat menghurai '%s'"
#: e2fsck/unix.c:1004
-#, fuzzy
msgid "The -n and -D options are incompatible."
-msgstr "pilihan -l dan -s tidak sepadan"
+msgstr ""
#: e2fsck/unix.c:1009
-#, fuzzy
msgid "The -n and -c options are incompatible."
-msgstr "pilihan -l dan -s tidak sepadan"
+msgstr ""
#: e2fsck/unix.c:1014
-#, fuzzy
msgid "The -n and -l/-L options are incompatible."
-msgstr "pilihan -l dan -s tidak sepadan"
+msgstr ""
#: e2fsck/unix.c:1038
-#, fuzzy
msgid "The -D and -E fixes_only options are incompatible."
-msgstr "pilihan -l dan -s tidak sepadan"
+msgstr ""
#: e2fsck/unix.c:1044
-#, fuzzy
msgid "The -E bmap2extent and fixes_only options are incompatible."
-msgstr "pilihan -l dan -s tidak sepadan"
+msgstr ""
#: e2fsck/unix.c:1095
-#, fuzzy, c-format
+#, c-format
msgid "while opening %s for flushing"
-msgstr "Ralat mengosongkan sambungan: %s\n"
+msgstr ""
#: e2fsck/unix.c:1101 resize/main.c:391
-#, fuzzy, c-format
+#, c-format
msgid "while trying to flush %s"
-msgstr "ketika cuba untuk melaksana '%s'"
+msgstr ""
#: e2fsck/unix.c:1108
msgid "The -c and the -l/-L options may not be both used at the same time.\n"
msgstr ""
#: e2fsck/unix.c:1155
-#, fuzzy, c-format
+#, c-format
msgid ""
"E2FSCK_JBD_DEBUG \"%s\" not an integer\n"
"\n"
-msgstr "integer diluar julat: %s"
+msgstr ""
#: e2fsck/unix.c:1164
-#, fuzzy, c-format
+#, c-format
msgid ""
"\n"
"Invalid non-numeric argument to -%c (\"%s\")\n"
"\n"
-msgstr "%s: hujah tidak sah untuk %s%c escape"
+msgstr ""
#: e2fsck/unix.c:1262
#, c-format
@@ -3586,9 +3404,8 @@ msgid "MMP interval is %u seconds and total wait time is %u seconds. Please wait
msgstr ""
#: e2fsck/unix.c:1279 e2fsck/unix.c:1284
-#, fuzzy
msgid "while checking MMP block"
-msgstr "Pengiraan bitmap MMP tidak sepadan"
+msgstr ""
#: e2fsck/unix.c:1286
#, c-format
@@ -3598,9 +3415,8 @@ msgid ""
msgstr ""
#: e2fsck/unix.c:1302
-#, fuzzy
msgid "while reading MMP block"
-msgstr "Pengiraan bitmap MMP tidak sepadan"
+msgstr ""
#: e2fsck/unix.c:1322 e2fsck/unix.c:1374 misc/e2undo.c:240 misc/e2undo.c:285
#: misc/mke2fs.c:2758 misc/mke2fs.c:2809 misc/tune2fs.c:2805
@@ -3619,9 +3435,8 @@ msgid "while trying to delete %s"
msgstr "ketika cuba untuk memadam %s"
#: e2fsck/unix.c:1389 misc/mke2fs.c:2824 resize/main.c:243
-#, fuzzy
msgid "while trying to setup undo file\n"
-msgstr "Ralat berlaku bila membaca fail"
+msgstr ""
#: e2fsck/unix.c:1433
msgid "Error: ext2fs library version out of date!\n"
@@ -3657,14 +3472,14 @@ msgid "Group descriptors look bad..."
msgstr "Pemerihal kumpulan kelihatan buruk..."
#: e2fsck/unix.c:1563
-#, fuzzy, c-format
+#, c-format
msgid "%s: %s while using the backup blocks"
-msgstr "Menggunakan nama sandar: %s"
+msgstr ""
#: e2fsck/unix.c:1567
-#, fuzzy, c-format
+#, c-format
msgid "%s: going back to original superblock\n"
-msgstr "ketika membaca superblok jurnal"
+msgstr ""
#: e2fsck/unix.c:1596
msgid ""
@@ -3674,9 +3489,8 @@ msgid ""
msgstr ""
#: e2fsck/unix.c:1603
-#, fuzzy
msgid "Could this be a zero-length partition?\n"
-msgstr "rujukan simbolik panjang-sifar"
+msgstr ""
#: e2fsck/unix.c:1605
#, c-format
@@ -3692,9 +3506,8 @@ msgid "Filesystem mounted or opened exclusively by another program?\n"
msgstr ""
#: e2fsck/unix.c:1617
-#, fuzzy
msgid "Possibly non-existent device?\n"
-msgstr "rujukan ke subpola tidak-wujud"
+msgstr ""
#: e2fsck/unix.c:1620
msgid ""
@@ -3708,47 +3521,41 @@ msgid "%s: Trying to load superblock despite errors...\n"
msgstr ""
#: e2fsck/unix.c:1710
-#, fuzzy
msgid "Get a newer version of e2fsck!"
-msgstr "Versi baru (%s) telah dipasang."
+msgstr ""
#: e2fsck/unix.c:1770
-#, fuzzy, c-format
+#, c-format
msgid "while checking journal for %s"
-msgstr "ketika mendapatkan semula jurnal ext3 bagi %s"
+msgstr ""
#: e2fsck/unix.c:1773
-#, fuzzy
-#| msgid "Cannot proceed without a @r.\n"
msgid "Cannot proceed with file system check"
-msgstr "tak dapat membaca maklumat sistem fail bagi %s"
+msgstr ""
#: e2fsck/unix.c:1784
msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n"
msgstr ""
#: e2fsck/unix.c:1796
-#, fuzzy, c-format
+#, c-format
msgid "unable to set superblock flags on %s\n"
-msgstr "Bendera bagi %s ditetapkan sebagai "
+msgstr ""
#: e2fsck/unix.c:1802
-#, fuzzy, c-format
-#| msgid "Journal superblock not found!\n"
+#, c-format
msgid "Journal checksum error found in %s\n"
-msgstr "%s: hasil tambah semak teruk (dijangka %u, temui %u)\n"
+msgstr ""
#: e2fsck/unix.c:1806
-#, fuzzy, c-format
-#| msgid "Journal removed\n"
+#, c-format
msgid "Journal corrupted in %s\n"
-msgstr "Menambah jurnal ke peranti %s: "
+msgstr ""
#: e2fsck/unix.c:1810
-#, fuzzy, c-format
-#| msgid "while recovering ext3 journal of %s"
+#, c-format
msgid "while recovering journal of %s"
-msgstr "ketika mendapatkan semula jurnal ext3 bagi %s"
+msgstr ""
#: e2fsck/unix.c:1832
#, c-format
@@ -3756,15 +3563,14 @@ msgid "%s has unsupported feature(s):"
msgstr "%s tidak mempunyai ciri disokong:"
#: e2fsck/unix.c:1847
-#, fuzzy, c-format
-#| msgid "%s has unsupported feature(s):"
+#, c-format
msgid "%s has unsupported encoding: %0x\n"
-msgstr "Pengekodan \"%s\" tidak disokong"
+msgstr ""
#: e2fsck/unix.c:1897
-#, fuzzy, c-format
+#, c-format
msgid "%s: %s while reading bad blocks inode\n"
-msgstr "ketika menetapkan inod blok buruk"
+msgstr ""
#: e2fsck/unix.c:1900
msgid "This doesn't bode well, but we'll try to go on...\n"
@@ -3780,11 +3586,10 @@ msgid " Done.\n"
msgstr " Selesai.\n"
#: e2fsck/unix.c:1954
-#, fuzzy
msgid ""
"\n"
"*** journal has been regenerated ***\n"
-msgstr "Sistemfail telah mempunyai jurnal.\n"
+msgstr ""
#: e2fsck/unix.c:1960
msgid "aborted"
@@ -3796,23 +3601,19 @@ msgid "%s: e2fsck canceled.\n"
msgstr "%s: e2fsck dibatalkan.\n"
#: e2fsck/unix.c:1989
-#, fuzzy
msgid "Restarting e2fsck from the beginning...\n"
-msgstr "Teruskan dari permulaan?"
+msgstr ""
#: e2fsck/unix.c:1993
msgid "while resetting context"
msgstr "ketika mengulangtetap konteks"
#: e2fsck/unix.c:2052
-#, fuzzy, c-format
-#| msgid ""
-#| "\n"
-#| "%s: ***** FILE SYSTEM WAS MODIFIED *****\n"
+#, c-format
msgid ""
"\n"
"%s: ***** FILE SYSTEM ERRORS CORRECTED *****\n"
-msgstr "%s: Ralat ditemui dalam fail. Menghenti paksa.\n"
+msgstr ""
#: e2fsck/unix.c:2054
#, fuzzy, c-format
@@ -3831,10 +3632,9 @@ msgstr ""
"%s: ***** SISTEM FAIL TELAH DIUBAHSUAI *****\n"
#: e2fsck/unix.c:2063
-#, fuzzy, c-format
-#| msgid "%s: ***** REBOOT LINUX *****\n"
+#, c-format
msgid "%s: ***** REBOOT SYSTEM *****\n"
-msgstr "%s: ***** ULANGBOOT LINUX *****\n"
+msgstr ""
#: e2fsck/unix.c:2073 e2fsck/util.c:73
#, c-format
@@ -3857,9 +3657,8 @@ msgid "aA"
msgstr "aA"
#: e2fsck/util.c:197
-#, fuzzy
msgid " ('a' enables 'yes' to all) "
-msgstr "Ya untuk se_mua"
+msgstr ""
#: e2fsck/util.c:214
msgid "<y>"
@@ -3868,7 +3667,7 @@ msgstr "<y>"
#: e2fsck/util.c:216
#, fuzzy
msgid "<n>"
-msgstr "Tidak tersedia"
+msgstr "T/A"
#: e2fsck/util.c:218
#, fuzzy
@@ -3924,9 +3723,8 @@ msgid "e2fsck_read_bitmaps: illegal bitmap block(s) for %s"
msgstr ""
#: e2fsck/util.c:317
-#, fuzzy
msgid "reading inode and block bitmaps"
-msgstr "ketika membaca bitmap"
+msgstr ""
#: e2fsck/util.c:329
#, c-format
@@ -3934,14 +3732,13 @@ msgid "while retrying to read bitmaps for %s"
msgstr ""
#: e2fsck/util.c:341
-#, fuzzy
msgid "writing block and inode bitmaps"
-msgstr "Peta bit inode tidak sama"
+msgstr ""
#: e2fsck/util.c:346
-#, fuzzy, c-format
+#, c-format
msgid "while rewriting block and inode bitmaps for %s"
-msgstr "ketika menulis bitmap blok"
+msgstr ""
#: e2fsck/util.c:358
#, c-format
@@ -3953,14 +3750,14 @@ msgid ""
msgstr ""
#: e2fsck/util.c:437 e2fsck/util.c:447
-#, fuzzy, c-format
+#, c-format
msgid "Memory used: %lluk/%lluk (%lluk/%lluk), "
-msgstr "Memori digunakan: %dk/%dk (%dk/%dk), "
+msgstr ""
#: e2fsck/util.c:453
-#, fuzzy, c-format
+#, c-format
msgid "Memory used: %lluk, "
-msgstr "Ingatan: %ldMB dari %ldMB digunakan"
+msgstr ""
#: e2fsck/util.c:459
#, c-format
@@ -3973,14 +3770,14 @@ msgid "elapsed time: %6.3f\n"
msgstr "masa lepas: %6.3f\n"
#: e2fsck/util.c:499 e2fsck/util.c:513
-#, fuzzy, c-format
+#, c-format
msgid "while reading inode %lu in %s"
-msgstr "ketika membaca inod jurnal"
+msgstr ""
#: e2fsck/util.c:527 e2fsck/util.c:540
-#, fuzzy, c-format
+#, c-format
msgid "while writing inode %lu in %s"
-msgstr "ketika menulis jadual inod"
+msgstr ""
#: e2fsck/util.c:799
msgid "UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is running.\n"
@@ -3989,7 +3786,7 @@ msgstr ""
#: misc/badblocks.c:75
#, fuzzy
msgid "done \n"
-msgstr "selesai \n"
+msgstr "Selesai"
#: misc/badblocks.c:100
#, c-format
@@ -4013,14 +3810,12 @@ msgid "%6.2f%% done, %s elapsed. (%d/%d/%d errors)"
msgstr ""
#: misc/badblocks.c:337
-#, fuzzy
msgid "Testing with random pattern: "
-msgstr "Pengujian"
+msgstr ""
#: misc/badblocks.c:355
-#, fuzzy
msgid "Testing with pattern 0x"
-msgstr "Cuba, ..."
+msgstr ""
#: misc/badblocks.c:387 misc/badblocks.c:460
msgid "during seek"
@@ -4032,9 +3827,8 @@ msgid "Weird value (%ld) in do_read\n"
msgstr ""
#: misc/badblocks.c:485
-#, fuzzy
msgid "during ext2fs_sync_device"
-msgstr "Peranti tidak dapat digunakan ketika kemas kini."
+msgstr ""
#: misc/badblocks.c:505 misc/badblocks.c:767
msgid "while beginning bad block list iteration"
@@ -4084,11 +3878,10 @@ msgid "Checking for bad blocks (non-destructive read-write test)\n"
msgstr ""
#: misc/badblocks.c:803
-#, fuzzy
msgid ""
"\n"
"Interrupt caught, cleaning up\n"
-msgstr "Membersihkan..."
+msgstr ""
#: misc/badblocks.c:886
#, c-format
@@ -4105,14 +3898,13 @@ msgid "badblocks forced anyway. Hope /etc/mtab is incorrect.\n"
msgstr ""
#: misc/badblocks.c:1013
-#, fuzzy
msgid "it's not safe to run badblocks!\n"
-msgstr "blok buruk dipaksa juga.\n"
+msgstr ""
#: misc/badblocks.c:1018 misc/util.c:146
-#, fuzzy, c-format
+#, c-format
msgid "%s is apparently in use by the system; "
-msgstr "G_una fon lebar tetap sistem (%s)"
+msgstr ""
#: misc/badblocks.c:1021
msgid "badblocks forced anyway.\n"
@@ -4142,16 +3934,14 @@ msgid "Random test_pattern is not allowed in read-only mode"
msgstr ""
#: misc/badblocks.c:1207
-#, fuzzy, c-format
-#| msgid "invalid block size - %s"
+#, c-format
msgid "Invalid block size: %d\n"
-msgstr "saiz blok tidak sah - %s"
+msgstr ""
#: misc/badblocks.c:1213
-#, fuzzy, c-format
-#| msgid "Invalid blocksize parameter: %s\n"
+#, c-format
msgid "Invalid blocks_at_once: %d\n"
-msgstr "Hanya %d blok tersedia"
+msgstr ""
#: misc/badblocks.c:1227
msgid ""
@@ -4172,24 +3962,22 @@ msgid "first block"
msgstr "blok pertama"
#: misc/badblocks.c:1247
-#, fuzzy, c-format
+#, c-format
msgid "invalid starting block (%llu): must be less than %llu"
-msgstr "blok permulaan tidak sah (%lu): mesti kurang dari %lu"
+msgstr ""
#: misc/badblocks.c:1255
-#, fuzzy, c-format
+#, c-format
msgid "invalid end block (%llu): must be 32-bit value"
-msgstr "blok permulaan tidak sah (%lu): mesti kurang dari %lu"
+msgstr ""
#: misc/badblocks.c:1311
-#, fuzzy
msgid "while creating in-memory bad blocks list"
-msgstr "ketika membaca dalam senarai blok buruk dari fail"
+msgstr ""
#: misc/badblocks.c:1320
-#, fuzzy
msgid "input file - bad format"
-msgstr "Format fail rosak."
+msgstr ""
#: misc/badblocks.c:1328 misc/badblocks.c:1337
msgid "while adding to in-memory bad block list"
@@ -4201,15 +3989,14 @@ msgid "Pass completed, %u bad blocks found. (%d/%d/%d errors)\n"
msgstr ""
#: misc/chattr.c:89
-#, fuzzy, c-format
+#, c-format
msgid "Usage: %s [-RVf] [-+=aAcCdDeijPsStTuFx] [-p project] [-v version] files...\n"
-msgstr "Penggunaan: %s [-RVf] [-+=AacDdijsSu] [-v versi] fail...\n"
+msgstr ""
#: misc/chattr.c:162
-#, fuzzy, c-format
-#| msgid "bad version - %s\n"
+#, c-format
msgid "bad project - %s\n"
-msgstr "URI tidak elok: %s"
+msgstr ""
#: misc/chattr.c:176
#, c-format
@@ -4247,16 +4034,14 @@ msgid "while setting version on %s"
msgstr "ketika menetapkan versi pada %s"
#: misc/chattr.c:273
-#, fuzzy, c-format
-#| msgid "Version of %s set as %lu\n"
+#, c-format
msgid "Project of %s set as %lu\n"
-msgstr "Versi %s ditetapkan sebagai %lu\n"
+msgstr ""
#: misc/chattr.c:277
-#, fuzzy, c-format
-#| msgid "while setting version on %s"
+#, c-format
msgid "while setting project on %s"
-msgstr "ketika menetapkan penanda pada %s"
+msgstr ""
#: misc/chattr.c:299
msgid "Couldn't allocate path variable in chattr_dir_proc"
@@ -4271,90 +4056,80 @@ msgid "Must use '-v', =, - or +\n"
msgstr "Mesti menggunakan '-v', =, - atau +\n"
#: misc/create_inode.c:80 misc/create_inode.c:119
-#, fuzzy, c-format
+#, c-format
msgid "while reading inode %u"
-msgstr "ketika membaca inod root"
+msgstr ""
#: misc/create_inode.c:90 misc/create_inode.c:296 misc/create_inode.c:361
#: misc/create_inode.c:399
-#, fuzzy
msgid "while expanding directory"
-msgstr "Ralat berlaku semasa memuatkan direktori"
+msgstr ""
#: misc/create_inode.c:97
-#, fuzzy, c-format
-#| msgid "while opening %s"
+#, c-format
msgid "while linking \"%s\""
-msgstr "Hubungikan..."
+msgstr ""
#: misc/create_inode.c:105 misc/create_inode.c:134 misc/create_inode.c:330
-#, fuzzy, c-format
+#, c-format
msgid "while writing inode %u"
-msgstr "ketika menulis jadual inod"
+msgstr ""
#: misc/create_inode.c:154 misc/create_inode.c:185
-#, fuzzy, c-format
+#, c-format
msgid "while listing attributes of \"%s\""
-msgstr "Ralat menyenaraikan dir pada '%s': %s"
+msgstr ""
#: misc/create_inode.c:165
-#, fuzzy, c-format
+#, c-format
msgid "while opening inode %u"
-msgstr "ketika melakukan pengesanan inod"
+msgstr ""
#: misc/create_inode.c:172
-#, fuzzy, c-format
+#, c-format
msgid "while reading xattrs for inode %u"
-msgstr "ketika membaca inod jurnal"
+msgstr ""
#: misc/create_inode.c:178 misc/create_inode.c:205 misc/create_inode.c:1066
#: misc/e2undo.c:186 misc/e2undo.c:483 misc/e2undo.c:489 misc/e2undo.c:495
#: misc/mke2fs.c:361
-#, fuzzy
msgid "while allocating memory"
-msgstr "ketika mengumpukkan penimbal"
+msgstr ""
#: misc/create_inode.c:198 misc/create_inode.c:214
-#, fuzzy, c-format
-#| msgid "while reading flags on %s"
+#, c-format
msgid "while reading attribute \"%s\" of \"%s\""
msgstr ""
-"Terdapat ralat ketika pembacaan CD:\n"
-"\n"
-"%s"
#: misc/create_inode.c:223
-#, fuzzy, c-format
+#, c-format
msgid "while writing attribute \"%s\" to inode %u"
-msgstr "ketika menulis inod jurnal"
+msgstr ""
#: misc/create_inode.c:233
-#, fuzzy, c-format
-#| msgid "while doing inode scan"
+#, c-format
msgid "while closing inode %u"
-msgstr "ketika melakukan pengesanan inod"
+msgstr ""
#: misc/create_inode.c:283
-#, fuzzy, c-format
-#| msgid "while allocating buffers"
+#, c-format
msgid "while allocating inode \"%s\""
-msgstr "ketika mengumpukkan penimbal"
+msgstr ""
#: misc/create_inode.c:302
-#, fuzzy, c-format
+#, c-format
msgid "while creating inode \"%s\""
-msgstr "Ralat ketika mencipta fail %s."
+msgstr ""
#: misc/create_inode.c:368
-#, fuzzy, c-format
-#| msgid "while reading flags on %s"
+#, c-format
msgid "while creating symlink \"%s\""
-msgstr "Terdapat ralat ketika mencipta pautan simbolik di dalam %s."
+msgstr ""
#: misc/create_inode.c:386 misc/create_inode.c:650 misc/create_inode.c:986
-#, fuzzy, c-format
+#, c-format
msgid "while looking up \"%s\""
-msgstr "Ralat semasa mencari takrifan"
+msgstr ""
#: misc/create_inode.c:406
#, fuzzy, c-format
@@ -4363,32 +4138,29 @@ msgid "while creating directory \"%s\""
msgstr "Ralat ketika mencipta direktori %s."
#: misc/create_inode.c:636
-#, fuzzy, c-format
-#| msgid "while opening %s"
+#, c-format
msgid "while opening \"%s\" to copy"
-msgstr "ketika membuka %s"
+msgstr ""
#: misc/create_inode.c:828
-#, fuzzy, c-format
+#, c-format
msgid "while changing working directory to \"%s\""
-msgstr "Semasa menukar %s:"
+msgstr ""
#: misc/create_inode.c:838
-#, fuzzy, c-format
-#| msgid "while creating root dir"
+#, c-format
msgid "while scanning directory \"%s\""
-msgstr "Mengimbas %s"
+msgstr ""
#: misc/create_inode.c:848
-#, fuzzy, c-format
-#| msgid "while trying to stat %s"
+#, c-format
msgid "while lstat \"%s\""
-msgstr "tak dapat lstat %s"
+msgstr ""
#: misc/create_inode.c:898
-#, fuzzy, c-format
+#, c-format
msgid "while creating special file \"%s\""
-msgstr "Ralat ketika mencipta fail %s."
+msgstr ""
#: misc/create_inode.c:907
#, fuzzy
@@ -4396,63 +4168,55 @@ msgid "malloc failed"
msgstr "malloc() gagal. Tidak dapat memperuntukkan memori yang cukup."
#: misc/create_inode.c:915
-#, fuzzy, c-format
-#| msgid "while trying to resize %s"
+#, c-format
msgid "while trying to read link \"%s\""
-msgstr "Ralat berlaku bila membaca fail"
+msgstr ""
#: misc/create_inode.c:922
msgid "symlink increased in size between lstat() and readlink()"
msgstr ""
#: misc/create_inode.c:933
-#, fuzzy, c-format
+#, c-format
msgid "while writing symlink\"%s\""
-msgstr "Ralat semasa menulis ke `%s'"
+msgstr ""
#: misc/create_inode.c:944
-#, fuzzy, c-format
+#, c-format
msgid "while writing file \"%s\""
-msgstr "Ralat semasa menulis '%s': %s"
+msgstr ""
#: misc/create_inode.c:957
-#, fuzzy, c-format
-#| msgid "while opening %s"
+#, c-format
msgid "while making dir \"%s\""
-msgstr "ketika mencipta direktori root"
+msgstr ""
#: misc/create_inode.c:975
-#, fuzzy
msgid "while changing directory"
-msgstr "Ralat ketika mengubah kata laluan NIS."
+msgstr ""
#: misc/create_inode.c:981
-#, fuzzy, c-format
+#, c-format
msgid "ignoring entry \"%s\""
-msgstr "[%s] Fail konfigurasi: mengabaikan masukan tidak diketahui %s=%s. %s\n"
+msgstr ""
#: misc/create_inode.c:994
-#, fuzzy, c-format
-#| msgid "while setting version on %s"
+#, c-format
msgid "while setting inode for \"%s\""
-msgstr "ketika menetapkan inod blok buruk"
+msgstr ""
#: misc/create_inode.c:1001
-#, fuzzy, c-format
-#| msgid "while setting flags on %s"
+#, c-format
msgid "while setting xattrs for \"%s\""
-msgstr "ketika menetapkan versi pada %s"
+msgstr ""
#: misc/create_inode.c:1027
-#, fuzzy
-#| msgid "while starting inode scan"
msgid "while saving inode data"
-msgstr "Ralat ketika menyimpan tangkap layar"
+msgstr ""
#: misc/create_inode.c:1077
-#, fuzzy
msgid "while copying xattrs on root directory"
-msgstr "Ralat berlaku semasa menetapkan direktori root"
+msgstr ""
#: misc/dumpe2fs.c:56
#, c-format
@@ -4464,9 +4228,8 @@ msgid "blocks"
msgstr "blok"
#: misc/dumpe2fs.c:168
-#, fuzzy
msgid "clusters"
-msgstr "Kelompok"
+msgstr "kelompok"
#: misc/dumpe2fs.c:219
#, c-format
@@ -4474,14 +4237,14 @@ msgid "Group %lu: (Blocks "
msgstr "Kumpulan %lu: (Blok "
#: misc/dumpe2fs.c:226
-#, fuzzy, c-format
+#, c-format
msgid " csum 0x%04x"
-msgstr "Tidak diketahui (0x%04x)<br>"
+msgstr ""
#: misc/dumpe2fs.c:228
-#, fuzzy, c-format
+#, c-format
msgid " (EXPECTED 0x%04x)"
-msgstr "Tidak diketahui (0x%04x)<br>"
+msgstr ""
#: misc/dumpe2fs.c:233
#, c-format
@@ -4501,11 +4264,10 @@ msgid ", Group descriptors at "
msgstr ", Penerangan kumpulan di "
#: misc/dumpe2fs.c:242
-#, fuzzy
msgid ""
"\n"
" Reserved GDT blocks at "
-msgstr "blok dikhaskan"
+msgstr ""
#: misc/dumpe2fs.c:249
msgid " Group descriptor at "
@@ -4516,9 +4278,9 @@ msgid " Block bitmap at "
msgstr " Blok peta bit di "
#: misc/dumpe2fs.c:260 misc/dumpe2fs.c:271
-#, fuzzy, c-format
+#, c-format
msgid ", csum 0x%08x"
-msgstr "Eksponen: 0x"
+msgstr ""
#: misc/dumpe2fs.c:263
msgid ","
@@ -4533,10 +4295,8 @@ msgstr ""
" "
#: misc/dumpe2fs.c:266
-#, fuzzy
-#| msgid ", Inode bitmap at "
msgid " Inode bitmap at "
-msgstr ", Bitmap inode di"
+msgstr " Peta bit inode di "
#: misc/dumpe2fs.c:273
msgid ""
@@ -4567,9 +4327,8 @@ msgid " Free inodes: "
msgstr " Inodes bebas: "
#: misc/dumpe2fs.c:340
-#, fuzzy
msgid "while printing bad block list"
-msgstr "ketika menetapkan inod blok buruk"
+msgstr ""
#: misc/dumpe2fs.c:347
#, c-format
@@ -4581,19 +4340,16 @@ msgid "while reading journal inode"
msgstr "ketika membaca inod jurnal"
#: misc/dumpe2fs.c:381
-#, fuzzy
msgid "while opening journal inode"
-msgstr "ketika membaca inod jurnal"
+msgstr ""
#: misc/dumpe2fs.c:387
-#, fuzzy
msgid "while reading journal super block"
-msgstr "ketika membaca superblok jurnal"
+msgstr ""
#: misc/dumpe2fs.c:394
-#, fuzzy
msgid "Journal superblock magic number invalid!\n"
-msgstr "MMP: nombor magic tidak sah"
+msgstr ""
#: misc/dumpe2fs.c:414 misc/tune2fs.c:222
msgid "while reading journal superblock"
@@ -4604,20 +4360,17 @@ msgid "Couldn't find journal superblock magic numbers"
msgstr ""
#: misc/dumpe2fs.c:477
-#, fuzzy
msgid "failed to alloc MMP buffer\n"
-msgstr "gagal memperuntuk penimbal imej bersaiz %u bait"
+msgstr ""
#: misc/dumpe2fs.c:488
-#, fuzzy, c-format
-#| msgid "Checking blocks %lu to %lu\n"
+#, c-format
msgid "reading MMP block %llu from '%s'\n"
-msgstr "Memeriksa blok %lu ke %lu\n"
+msgstr ""
#: misc/dumpe2fs.c:520 misc/mke2fs.c:811 misc/tune2fs.c:2120
-#, fuzzy
msgid "Couldn't allocate memory to parse options!\n"
-msgstr "BMP: Gagal sediakan memori."
+msgstr ""
#: misc/dumpe2fs.c:546
#, c-format
@@ -4644,9 +4397,9 @@ msgid ""
msgstr ""
#: misc/dumpe2fs.c:663 misc/mke2fs.c:1911
-#, fuzzy, c-format
+#, c-format
msgid "\tUsing %s\n"
-msgstr "Tiada nama kumpulan dinyatakan, menggunakan %s.\n"
+msgstr "\tMenggunakan %s\n"
#: misc/dumpe2fs.c:710 misc/e2image.c:1642 misc/tune2fs.c:3008
#: resize/main.c:424
@@ -4654,22 +4407,20 @@ msgid "Couldn't find valid filesystem superblock.\n"
msgstr ""
#: misc/dumpe2fs.c:732
-#, fuzzy, c-format
+#, c-format
msgid "%s: MMP feature not enabled.\n"
-msgstr "Ciri ini diaktifkan!"
+msgstr ""
#: misc/dumpe2fs.c:763
-#, fuzzy, c-format
-#| msgid "while trying to run '%s'"
+#, c-format
msgid "while trying to read '%s' bitmaps\n"
-msgstr "Ralat berlaku bila membaca fail"
+msgstr ""
#: misc/dumpe2fs.c:772
-#, fuzzy
msgid ""
"*** Run e2fsck now!\n"
"\n"
-msgstr "Main Sekarang!"
+msgstr ""
#: misc/e2image.c:108
#, c-format
@@ -4677,44 +4428,40 @@ msgid "Usage: %s [ -r|-Q ] [ -f ] [ -b superblock ] [ -B blocksize ] device imag
msgstr ""
#: misc/e2image.c:111
-#, fuzzy, c-format
+#, c-format
msgid " %s -I device image-file\n"
-msgstr "\"%s\" adalah sebuah fail peranti"
+msgstr ""
#: misc/e2image.c:112
#, c-format
msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
msgstr ""
-#: misc/e2image.c:177 misc/e2image.c:593 misc/e2image.c:599
-#: misc/e2image.c:1201
-#, fuzzy
+#: misc/e2image.c:177 misc/e2image.c:593 misc/e2image.c:599 misc/e2image.c:1201
msgid "while allocating buffer"
-msgstr "ketika mengumpukkan penimbal"
+msgstr ""
#: misc/e2image.c:182
-#, fuzzy, c-format
+#, c-format
msgid "Writing block %llu\n"
-msgstr "ketika menulis bitmap blok"
+msgstr ""
#: misc/e2image.c:196
-#, fuzzy, c-format
+#, c-format
msgid "error writing block %llu"
-msgstr "ketika menulis bitmap blok"
+msgstr ""
#: misc/e2image.c:200
-#, fuzzy
msgid "error in generic_write()"
-msgstr "Ralat libmtp generik"
+msgstr ""
#: misc/e2image.c:217
msgid "Error: header size is bigger than wrt_size\n"
msgstr ""
#: misc/e2image.c:222
-#, fuzzy
msgid "Couldn't allocate header buffer\n"
-msgstr "Tak dapat memperuntukkan memori untuk penimbal konteks"
+msgstr ""
#: misc/e2image.c:250
msgid "while writing superblock"
@@ -4743,9 +4490,9 @@ msgid "Corrupt directory block %llu: bad name_len (%d)\n"
msgstr ""
#: misc/e2image.c:570
-#, fuzzy, c-format
+#, c-format
msgid "%llu / %llu blocks (%d%%)"
-msgstr "inode (%llu) mesti kurang dari %u"
+msgstr ""
#: misc/e2image.c:603 misc/e2image.c:643
msgid "Copying "
@@ -4756,14 +4503,14 @@ msgid "Stopping now will destroy the filesystem, interrupt again if you are sure
msgstr ""
#: misc/e2image.c:666
-#, fuzzy, c-format
+#, c-format
msgid " %s remaining at %.2f MB/s"
-msgstr "%.2f Mb/s"
+msgstr ""
#: misc/e2image.c:678 misc/e2image.c:1211
-#, fuzzy, c-format
+#, c-format
msgid "error reading block %llu"
-msgstr "e2label: ralat membaca superblok\n"
+msgstr ""
#: misc/e2image.c:733
#, c-format
@@ -4771,91 +4518,74 @@ msgid "Copied %llu / %llu blocks (%d%%) in %s "
msgstr ""
#: misc/e2image.c:738
-#, fuzzy, c-format
+#, c-format
msgid "at %.2f MB/s"
-msgstr "%.2f Mb/s"
+msgstr "pada %.2f MB/s"
#: misc/e2image.c:774
-#, fuzzy
msgid "while allocating l1 table"
-msgstr "ketika mengumpukkan penimbal"
+msgstr ""
#: misc/e2image.c:819
-#, fuzzy
msgid "while allocating l2 cache"
-msgstr "ketika mengumpukkan penimbal"
+msgstr ""
#: misc/e2image.c:842
msgid "Warning: There are still tables in the cache while putting the cache, data will be lost so the image may not be valid.\n"
msgstr ""
#: misc/e2image.c:1168
-#, fuzzy
msgid "while allocating ext2_qcow2_image"
-msgstr "ketika mengumpukkan penimbal"
+msgstr ""
#: misc/e2image.c:1175
-#, fuzzy
msgid "while initializing ext2_qcow2_image"
-msgstr "ketika memulakan superblok jurnal"
+msgstr ""
#: misc/e2image.c:1235 misc/e2image.c:1253
msgid "Programming error: multiple sequential refcount blocks created!\n"
msgstr ""
#: misc/e2image.c:1294
-#, fuzzy
msgid "while allocating block bitmap"
-msgstr "ketika menulis bitmap blok"
+msgstr ""
#: misc/e2image.c:1303
-#, fuzzy
msgid "while allocating scramble block bitmap"
-msgstr "ketika menulis bitmap blok"
+msgstr ""
#: misc/e2image.c:1326
-#, fuzzy
msgid "Scanning inodes...\n"
-msgstr "Mengimbas"
+msgstr ""
#: misc/e2image.c:1338
-#, fuzzy
msgid "Can't allocate block buffer"
-msgstr "Tak dapat memperuntukkan ruang penimbal"
+msgstr ""
#: misc/e2image.c:1350
-#, fuzzy
msgid "while getting next inode"
msgstr ""
-"Hampir siap.\n"
-"Tapi, akan ambil masa sikit."
#: misc/e2image.c:1379 misc/e2image.c:1393
-#, fuzzy, c-format
+#, c-format
msgid "while iterating over inode %u"
-msgstr "ketika mengosongkan inod jurnal"
+msgstr ""
#: misc/e2image.c:1425
msgid "Raw and qcow2 images cannot be installed"
msgstr ""
#: misc/e2image.c:1447
-#, fuzzy
msgid "error reading bitmaps"
-msgstr ""
-"\n"
-"%s: %s: ralat membaca bitmap: %s\n"
+msgstr "ralat membaca peta bit"
#: misc/e2image.c:1459
-#, fuzzy
msgid "while opening device file"
-msgstr "Satu ralat berlaku ketika membuka fail."
+msgstr ""
#: misc/e2image.c:1470
-#, fuzzy
-#| msgid "while writing inode table"
msgid "while restoring the image table"
-msgstr "Ralat memulihkan imej cakera"
+msgstr ""
#: misc/e2image.c:1578
msgid "-a option can only be used with raw or QCOW2 images."
@@ -4878,9 +4608,8 @@ msgid "Move mode requires all data mode."
msgstr ""
#: misc/e2image.c:1609
-#, fuzzy
msgid "checking if mounted"
-msgstr "Memeriksa"
+msgstr ""
#: misc/e2image.c:1616
msgid ""
@@ -4895,24 +4624,23 @@ msgid "QCOW2 image can not be written to the stdout!\n"
msgstr ""
#: misc/e2image.c:1676
-#, fuzzy
msgid "Can not stat output\n"
-msgstr "Nombor Statistik."
+msgstr ""
#: misc/e2image.c:1686
-#, fuzzy, c-format
+#, c-format
msgid "Image (%s) is compressed\n"
-msgstr "Saiz Imej Termampat"
+msgstr ""
#: misc/e2image.c:1689
-#, fuzzy, c-format
+#, c-format
msgid "Image (%s) is encrypted\n"
-msgstr "%s Berkemungkinan Tersulit"
+msgstr ""
#: misc/e2image.c:1692
-#, fuzzy, c-format
+#, c-format
msgid "Image (%s) is corrupted\n"
-msgstr "Fail %s telah rosak semasa muat naik."
+msgstr ""
#: misc/e2image.c:1696
#, c-format
@@ -4928,9 +4656,8 @@ msgid "The -c option not supported when writing to stdout\n"
msgstr ""
#: misc/e2image.c:1718
-#, fuzzy
msgid "while allocating check_buf"
-msgstr "ketika mengumpukkan penimbal"
+msgstr ""
#: misc/e2image.c:1724
msgid "The -p option only supported in raw mode\n"
@@ -4942,9 +4669,9 @@ msgid "%d blocks already contained the data to be copied\n"
msgstr ""
#: misc/e2initrd_helper.c:69
-#, fuzzy, c-format
+#, c-format
msgid "Usage: %s -r device\n"
-msgstr "Penggunaan: %s [-r] [-t]\n"
+msgstr ""
#: misc/e2label.c:58
#, c-format
@@ -4952,9 +4679,9 @@ msgid "e2label: cannot open %s\n"
msgstr "e2label: tidak dapat membuka %s\n"
#: misc/e2label.c:63
-#, fuzzy, c-format
+#, c-format
msgid "e2label: cannot seek to superblock\n"
-msgstr "e2label: ralat membaca superblok\n"
+msgstr ""
#: misc/e2label.c:68
#, c-format
@@ -4962,9 +4689,9 @@ msgid "e2label: error reading superblock\n"
msgstr "e2label: ralat membaca superblok\n"
#: misc/e2label.c:72
-#, fuzzy, c-format
+#, c-format
msgid "e2label: not an ext2 filesystem\n"
-msgstr "Sistem Fail"
+msgstr ""
#: misc/e2label.c:97 misc/tune2fs.c:3215
#, c-format
@@ -4987,19 +4714,17 @@ msgid "Usage: e2label device [newlabel]\n"
msgstr ""
#: misc/e2undo.c:124
-#, fuzzy, c-format
-#| msgid "Usage: %s <transaction file> <filesystem>\n"
+#, c-format
msgid "Usage: %s [-f] [-h] [-n] [-o offset] [-v] [-z undo_file] <transaction file> <filesystem>\n"
-msgstr "Penggunaan: %s <fail transaksi> <sistemfail>\n"
+msgstr ""
#: misc/e2undo.c:153
msgid "The file system superblock doesn't match the undo file.\n"
msgstr ""
#: misc/e2undo.c:156
-#, fuzzy
msgid "UUID does not match.\n"
-msgstr "(TIDAK SEPADAN)"
+msgstr ""
#: misc/e2undo.c:158
msgid "Last mount time does not match.\n"
@@ -5014,16 +4739,12 @@ msgid "Lifetime write counter does not match.\n"
msgstr ""
#: misc/e2undo.c:176
-#, fuzzy
-#| msgid "while reading journal superblock"
msgid "while reading filesystem superblock."
-msgstr "ketika membaca superblok jurnal"
+msgstr ""
#: misc/e2undo.c:192
-#, fuzzy
-#| msgid "while writing superblock"
msgid "while fetching superblock"
-msgstr "ketika menulis superblok"
+msgstr ""
#: misc/e2undo.c:205
#, c-format
@@ -5031,9 +4752,9 @@ msgid "Undo file superblock checksum doesn't match.\n"
msgstr ""
#: misc/e2undo.c:344
-#, fuzzy, c-format
+#, c-format
msgid "illegal offset - %s"
-msgstr "%s: pilihan salah -- %c\n"
+msgstr ""
#: misc/e2undo.c:368
#, c-format
@@ -5041,31 +4762,28 @@ msgid "Will not write to an undo file while replaying it.\n"
msgstr ""
#: misc/e2undo.c:377
-#, fuzzy, c-format
+#, c-format
msgid "while opening undo file `%s'\n"
-msgstr "Ralat bila membuka fail xbase."
+msgstr ""
#: misc/e2undo.c:384
-#, fuzzy
-#| msgid "while reading root inode"
msgid "while reading undo file"
-msgstr "Ralat apabila membaca fail."
+msgstr ""
#: misc/e2undo.c:389
-#, fuzzy, c-format
-#| msgid "%s: too many devices\n"
+#, c-format
msgid "%s: Not an undo file.\n"
-msgstr "Undur fail yang rosak"
+msgstr ""
#: misc/e2undo.c:400
-#, fuzzy, c-format
+#, c-format
msgid "%s: Header checksum doesn't match.\n"
-msgstr "Kepala DIB: pengenkod tidak sepadan kedalaman bit."
+msgstr ""
#: misc/e2undo.c:407
-#, fuzzy, c-format
+#, c-format
msgid "%s: Corrupt undo file header.\n"
-msgstr "Undur fail yang rosak"
+msgstr ""
#: misc/e2undo.c:411
#, c-format
@@ -5083,36 +4801,31 @@ msgid "%s: Unknown undo file feature set.\n"
msgstr ""
#: misc/e2undo.c:437
-#, fuzzy, c-format
-#| msgid "Error while determining whether %s is mounted.\n"
+#, c-format
msgid "Error while determining whether %s is mounted."
-msgstr "Ralat ketika menentukan sama ada %s telah dilekapkan.\n"
+msgstr "Ralat ketika menentukan sama ada %s telah dilekapkan."
#: misc/e2undo.c:443
msgid "e2undo should only be run on unmounted filesystems"
msgstr ""
#: misc/e2undo.c:459
-#, fuzzy, c-format
-#| msgid "while opening %s"
+#, c-format
msgid "while opening `%s'"
-msgstr "ketika membuka %s"
+msgstr "ketika membuka `%s'"
#: misc/e2undo.c:470
-#, fuzzy
msgid "specified offset is too large"
-msgstr "nombor token terlalu besar"
+msgstr ""
#: misc/e2undo.c:511
-#, fuzzy
-#| msgid "while reading bitmaps"
msgid "while reading keys"
-msgstr "ketika membaca bitmap"
+msgstr ""
#: misc/e2undo.c:523
-#, fuzzy, c-format
+#, c-format
msgid "%s: wrong key magic at %llu\n"
-msgstr "Nilai salah untuk kekunci \"%s\". Sepatutnya Koordinat"
+msgstr ""
#: misc/e2undo.c:533
#, c-format
@@ -5120,15 +4833,14 @@ msgid "%s: key block checksum error at %llu.\n"
msgstr ""
#: misc/e2undo.c:556
-#, fuzzy, c-format
-#| msgid "From block %lu to %lu\n"
+#, c-format
msgid "%s: block %llu is too long."
-msgstr "%s: fail terlalu panjang"
+msgstr ""
#: misc/e2undo.c:569 misc/e2undo.c:606
-#, fuzzy, c-format
+#, c-format
msgid "while fetching block %llu."
-msgstr "ketika menulis bitmap blok"
+msgstr ""
#: misc/e2undo.c:581
#, c-format
@@ -5136,9 +4848,9 @@ msgid "checksum error in filesystem block %llu (undo blk %llu)\n"
msgstr ""
#: misc/e2undo.c:622
-#, fuzzy, c-format
+#, c-format
msgid "while writing block %llu."
-msgstr "ketika menulis bitmap blok"
+msgstr ""
#: misc/e2undo.c:629
#, c-format
@@ -5161,19 +4873,19 @@ msgid "Usage: findsuper device [skipbytes [startkb]]\n"
msgstr ""
#: misc/findsuper.c:155
-#, fuzzy, c-format
+#, c-format
msgid "skipbytes should be a number, not %s\n"
-msgstr "Ruang ini haruslah disi dengan nombor."
+msgstr ""
#: misc/findsuper.c:162
-#, fuzzy, c-format
+#, c-format
msgid "skipbytes must be a multiple of the sector size\n"
-msgstr "Saiz rekod mesti dalam gandaan %d."
+msgstr ""
#: misc/findsuper.c:169
-#, fuzzy, c-format
+#, c-format
msgid "startkb should be a number, not %s\n"
-msgstr "Ruang ini haruslah disi dengan nombor."
+msgstr ""
#: misc/findsuper.c:175
#, c-format
@@ -5198,11 +4910,11 @@ msgid "byte_offset byte_start byte_end fs_blocks blksz grp mkfs/mount_ti
msgstr ""
#: misc/findsuper.c:265
-#, fuzzy, c-format
+#, c-format
msgid ""
"\n"
"%11Lu: finished with errno %d\n"
-msgstr "Buka %s gagal. Errno = %d, "
+msgstr ""
#: misc/fsck.c:344
#, c-format
@@ -5210,9 +4922,9 @@ msgid "WARNING: couldn't open %s: %s\n"
msgstr "AMARAN: tidak dapat membuka %s: %s\n"
#: misc/fsck.c:354
-#, fuzzy, c-format
+#, c-format
msgid "WARNING: bad format on line %d of %s\n"
-msgstr "Amaran gFTP: Melangkah baris %d pada fail tandabuku: %s\n"
+msgstr ""
#: misc/fsck.c:371
msgid ""
@@ -5228,9 +4940,9 @@ msgid "fsck: %s: not found\n"
msgstr "fsck: %s: tidak dijumpai\n"
#: misc/fsck.c:602
-#, fuzzy, c-format
+#, c-format
msgid "%s: wait: No more child process?!?\n"
-msgstr "Gagal melakukan proses anak (%s)"
+msgstr ""
#: misc/fsck.c:624
#, c-format
@@ -5259,9 +4971,8 @@ msgid ""
msgstr ""
#: misc/fsck.c:769
-#, fuzzy
msgid "Couldn't allocate memory for filesystem types\n"
-msgstr "Tak dapat memperuntukkan memori untuk penimbal konteks"
+msgstr ""
#: misc/fsck.c:892
#, c-format
@@ -5274,9 +4985,8 @@ msgid "fsck: cannot check %s: fsck.%s not found\n"
msgstr ""
#: misc/fsck.c:975
-#, fuzzy
msgid "Checking all file systems.\n"
-msgstr "Tunjuk semu_a sistem fail"
+msgstr ""
#: misc/fsck.c:1066
#, c-format
@@ -5298,9 +5008,8 @@ msgid "%s: too many arguments\n"
msgstr "%s: terlalu banyak hujah\n"
#: misc/fuse2fs.c:3746
-#, fuzzy
msgid "Mounting read-only.\n"
-msgstr "Baca-Sahaja"
+msgstr ""
#: misc/fuse2fs.c:3770
#, c-format
@@ -5318,18 +5027,18 @@ msgid "Please run e2fsck -fy %s.\n"
msgstr ""
#: misc/fuse2fs.c:3793
-#, fuzzy, c-format
+#, c-format
msgid "%s: mounting read-only without recovering journal\n"
-msgstr "ketika mendapatkan semula jurnal ext3 bagi %s"
+msgstr ""
#: misc/fuse2fs.c:3809
msgid "Journal needs recovery; running `e2fsck -E journal_only' is required.\n"
msgstr ""
#: misc/fuse2fs.c:3817
-#, fuzzy, c-format
+#, c-format
msgid "%s: Writing to the journal is not supported.\n"
-msgstr "Menulis ke jurnal (%s)"
+msgstr ""
#: misc/fuse2fs.c:3832
msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
@@ -5352,10 +5061,9 @@ msgid "Errors detected; running e2fsck is required.\n"
msgstr ""
#: misc/lsattr.c:75
-#, fuzzy, c-format
-#| msgid "Usage: %s [-RVadlv] [files...]\n"
+#, c-format
msgid "Usage: %s [-RVadlpv] [files...]\n"
-msgstr "Penggunaan: %s [-RVadlv] [fail...]\n"
+msgstr ""
#: misc/lsattr.c:86
#, c-format
@@ -5363,10 +5071,9 @@ msgid "While reading flags on %s"
msgstr "Ketika membaca penanda pada %s"
#: misc/lsattr.c:93
-#, fuzzy, c-format
-#| msgid "While reading version on %s"
+#, c-format
msgid "While reading project on %s"
-msgstr "Ketika membaca versi pada %s"
+msgstr ""
#: misc/lsattr.c:102
#, c-format
@@ -5374,9 +5081,8 @@ msgid "While reading version on %s"
msgstr "Ketika membaca versi pada %s"
#: misc/lsattr.c:148
-#, fuzzy
msgid "Couldn't allocate path variable in lsattr_dir_proc\n"
-msgstr "Tak dapat memperuntukkan memori untuk penimbal konteks"
+msgstr ""
#: misc/mke2fs.c:131
#, c-format
@@ -5402,9 +5108,8 @@ msgid "while trying to run '%s'"
msgstr "ketika cuba untuk melaksana '%s'"
#: misc/mke2fs.c:274
-#, fuzzy
msgid "while processing list of bad blocks from program"
-msgstr "ketika membaca dalam senarai blok buruk dari fail"
+msgstr ""
#: misc/mke2fs.c:301
#, c-format
@@ -5429,15 +5134,12 @@ msgid ""
msgstr ""
#: misc/mke2fs.c:345 misc/mke2fs.c:3318
-#, fuzzy
msgid "while marking bad blocks as used"
-msgstr "ketika memeriksa kewarasan blok inode buruk"
+msgstr ""
#: misc/mke2fs.c:370
-#, fuzzy
-#| msgid "while writing journal inode"
msgid "while writing reserved inodes"
-msgstr "ketika menulis inod jurnal"
+msgstr ""
#: misc/mke2fs.c:422
msgid "Writing inode tables: "
@@ -5463,23 +5165,20 @@ msgid "while reading root inode"
msgstr "ketika membaca inod root"
#: misc/mke2fs.c:493
-#, fuzzy
msgid "while setting root inode ownership"
-msgstr "ketika membaca inod root"
+msgstr ""
#: misc/mke2fs.c:511
msgid "while creating /lost+found"
msgstr "ketika mencipta /lost+found"
#: misc/mke2fs.c:518
-#, fuzzy
msgid "while looking up /lost+found"
-msgstr "Ralat semasa mencari takrifan"
+msgstr ""
#: misc/mke2fs.c:531
-#, fuzzy
msgid "while expanding /lost+found"
-msgstr "ketika mencipta /lost+found"
+msgstr ""
#: misc/mke2fs.c:546
msgid "while setting bad block inode"
@@ -5501,10 +5200,8 @@ msgid "Warning: could not erase sector %d: %s\n"
msgstr "Amaran: tidak dapat memadam sektor %d: %s\n"
#: misc/mke2fs.c:617
-#, fuzzy
-#| msgid "while writing journal inode"
msgid "while splitting the journal size"
-msgstr "ketika membaca inod jurnal"
+msgstr ""
#: misc/mke2fs.c:624
msgid "while initializing journal superblock"
@@ -5515,9 +5212,9 @@ msgid "Zeroing journal device: "
msgstr "Mengosongkan peranti jurnal: "
#: misc/mke2fs.c:644
-#, fuzzy, c-format
+#, c-format
msgid "while zeroing journal device (block %llu, count %d)"
-msgstr "Menggunakan saiz blok peranti jurnal: %d\n"
+msgstr ""
#: misc/mke2fs.c:662
msgid "while writing journal superblock"
@@ -5529,24 +5226,21 @@ msgid "Creating filesystem with %llu %dk blocks and %u inodes\n"
msgstr ""
#: misc/mke2fs.c:684
-#, fuzzy, c-format
+#, c-format
msgid ""
"warning: %llu blocks unused.\n"
"\n"
msgstr ""
-"amaran: %u blok tidak digunakan.\n"
-"\n"
#: misc/mke2fs.c:688
-#, fuzzy, c-format
-#| msgid "Filesystem label=%s\n"
+#, c-format
msgid "Filesystem label=%.*s\n"
-msgstr "Label sistemfail=%s\n"
+msgstr "Label sistemfail=%.*s\n"
#: misc/mke2fs.c:692
-#, fuzzy, c-format
+#, c-format
msgid "OS type: %s\n"
-msgstr "Jenis OS:"
+msgstr ""
#: misc/mke2fs.c:694
#, c-format
@@ -5554,9 +5248,9 @@ msgid "Block size=%u (log=%u)\n"
msgstr "Saiz blok=%u (log=%u)\n"
#: misc/mke2fs.c:697
-#, fuzzy, c-format
+#, c-format
msgid "Cluster size=%u (log=%u)\n"
-msgstr "Saiz pecahan=%u (log=%u)\n"
+msgstr ""
#: misc/mke2fs.c:701
#, c-format
@@ -5569,9 +5263,9 @@ msgid "Stride=%u blocks, Stripe width=%u blocks\n"
msgstr ""
#: misc/mke2fs.c:705
-#, fuzzy, c-format
+#, c-format
msgid "%u inodes, %llu blocks\n"
-msgstr "inode (%llu) mesti kurang dari %u"
+msgstr ""
#: misc/mke2fs.c:707
#, c-format
@@ -5584,9 +5278,9 @@ msgid "First data block=%u\n"
msgstr "Blok data pertama=%u\n"
#: misc/mke2fs.c:712
-#, fuzzy, c-format
+#, c-format
msgid "Root directory owner=%u:%u\n"
-msgstr "Blok direktori kosong %u (#%d) dalam inode %u\n"
+msgstr ""
#: misc/mke2fs.c:714
#, c-format
@@ -5619,20 +5313,18 @@ msgid "%u inodes per group\n"
msgstr "%u inod setiap kumpulan\n"
#: misc/mke2fs.c:736
-#, fuzzy, c-format
-#| msgid "Filesystem label=%s\n"
+#, c-format
msgid "Filesystem UUID: %s\n"
-msgstr "Sistem fail %s pada %s tidak rosak."
+msgstr ""
#: misc/mke2fs.c:737
-#, fuzzy
msgid "Superblock backups stored on blocks: "
-msgstr "Folder yang mana sandar disimpan"
+msgstr ""
#: misc/mke2fs.c:833
-#, fuzzy, c-format
+#, c-format
msgid "%s requires '-O 64bit'\n"
-msgstr "%i pakej memerlukan %s"
+msgstr ""
#: misc/mke2fs.c:839
#, c-format
@@ -5640,30 +5332,29 @@ msgid "'%s' must be before 'resize=%u'\n"
msgstr ""
#: misc/mke2fs.c:852
-#, fuzzy, c-format
+#, c-format
msgid "Invalid desc_size: '%s'\n"
-msgstr "saiz blok tidak sah - %s"
+msgstr ""
#: misc/mke2fs.c:866
-#, fuzzy, c-format
+#, c-format
msgid "Invalid hash seed: %s\n"
-msgstr "Data tidak sah - %s cincangan tidak sepadan untuk fail:"
+msgstr ""
#: misc/mke2fs.c:878
-#, fuzzy, c-format
+#, c-format
msgid "Invalid offset: %s\n"
-msgstr "Ralat menjangkau ke ofset %s"
+msgstr ""
#: misc/mke2fs.c:892 misc/tune2fs.c:2148
-#, fuzzy, c-format
+#, c-format
msgid "Invalid mmp_update_interval: %s\n"
-msgstr "jarakmasa `%s' tidak sah"
+msgstr ""
#: misc/mke2fs.c:909
-#, fuzzy, c-format
-#| msgid "Invalid superblock parameter: %s\n"
+#, c-format
msgid "Invalid # of backup superblocks: %s\n"
-msgstr "Permintaan backup tidak sah"
+msgstr ""
#: misc/mke2fs.c:931
#, c-format
@@ -5689,14 +5380,14 @@ msgid "On-line resizing not supported with revision 0 filesystems\n"
msgstr ""
#: misc/mke2fs.c:1026 misc/mke2fs.c:1035
-#, fuzzy, c-format
+#, c-format
msgid "Invalid root_owner: '%s'\n"
-msgstr "UTF-8 tidak sah pada pemilik bagi skema"
+msgstr ""
#: misc/mke2fs.c:1080
-#, fuzzy, c-format
+#, c-format
msgid "Invalid encoding: %s"
-msgstr "%s: pengekodan tidak sah."
+msgstr ""
#: misc/mke2fs.c:1098
#, c-format
@@ -5736,9 +5427,9 @@ msgid ""
msgstr ""
#: misc/mke2fs.c:1136 misc/tune2fs.c:2284
-#, fuzzy, c-format
+#, c-format
msgid "error: Invalid encoding flag: %s\n"
-msgstr "%s: pengekodan tidak sah.⏎\n"
+msgstr ""
#: misc/mke2fs.c:1142 misc/tune2fs.c:2293
#, c-format
@@ -5776,9 +5467,8 @@ msgid ""
msgstr ""
#: misc/mke2fs.c:1361
-#, fuzzy
msgid "Aborting...\n"
-msgstr "Menghentikan....\n"
+msgstr "Menghentikan...\n"
#: misc/mke2fs.c:1402
#, c-format
@@ -5789,9 +5479,8 @@ msgid ""
msgstr ""
#: misc/mke2fs.c:1591
-#, fuzzy
msgid "Couldn't allocate memory for new PATH.\n"
-msgstr "Tak dapat memperuntukkan memori bagi pengepala"
+msgstr ""
#: misc/mke2fs.c:1628
#, c-format
@@ -5809,14 +5498,13 @@ msgid "Warning: blocksize %d not usable on most systems.\n"
msgstr ""
#: misc/mke2fs.c:1681
-#, fuzzy, c-format
+#, c-format
msgid "invalid cluster size - %s"
-msgstr "saiz pecahan tidak sah - %s"
+msgstr ""
#: misc/mke2fs.c:1694
-#, fuzzy
msgid "'-R' is deprecated, use '-E' instead"
-msgstr "atribut telah lapuk. Guna revspec sebagai ganti."
+msgstr ""
#: misc/mke2fs.c:1708 misc/tune2fs.c:1874
#, c-format
@@ -5840,10 +5528,9 @@ msgid "flex_bg size must be a power of 2"
msgstr ""
#: misc/mke2fs.c:1744
-#, fuzzy, c-format
-#| msgid "inodes (%llu) must be less than %u"
+#, c-format
msgid "flex_bg size (%lu) must be less than or equal to 2^31"
-msgstr "inod (%llu) mesti kurang dari %u"
+msgstr ""
#: misc/mke2fs.c:1754
#, c-format
@@ -5860,9 +5547,8 @@ msgid "Warning: -K option is deprecated and should not be used anymore. Use '-E
msgstr ""
#: misc/mke2fs.c:1790
-#, fuzzy
msgid "in malloc for bad_blocks_filename"
-msgstr "ketika memeriksa kewarasan blok inode buruk"
+msgstr ""
#: misc/mke2fs.c:1799
#, c-format
@@ -5882,10 +5568,8 @@ msgid "bad num inodes - %s"
msgstr "nombor inode buruk - %s"
#: misc/mke2fs.c:1836
-#, fuzzy
-#| msgid "while allocating buffers"
msgid "while allocating fs_feature string"
-msgstr "ketika mengumpukkan penimbal"
+msgstr ""
#: misc/mke2fs.c:1853
#, c-format
@@ -5893,25 +5577,22 @@ msgid "bad revision level - %s"
msgstr "tahap semakan buruk - %s"
#: misc/mke2fs.c:1858
-#, fuzzy, c-format
-#| msgid "while trying to resize %s"
+#, c-format
msgid "while trying to create revision %d"
-msgstr "Ketika cuba menambah kumpulan #%d"
+msgstr ""
#: misc/mke2fs.c:1872
-#, fuzzy
msgid "The -t option may only be used once"
-msgstr "pilihan -T hanya boleh digunakan dengan tindakan nama semula\n"
+msgstr ""
#: misc/mke2fs.c:1880
-#, fuzzy
msgid "The -T option may only be used once"
-msgstr "pilihan -T hanya boleh digunakan dengan tindakan nama semula\n"
+msgstr ""
#: misc/mke2fs.c:1936 misc/mke2fs.c:3401
-#, fuzzy, c-format
+#, c-format
msgid "while trying to open journal device %s\n"
-msgstr "ketika cuba untuk membuka titiklekap %s"
+msgstr ""
#: misc/mke2fs.c:1942
#, c-format
@@ -5924,9 +5605,9 @@ msgid "Using journal device's blocksize: %d\n"
msgstr "Menggunakan saiz blok peranti jurnal: %d\n"
#: misc/mke2fs.c:1959
-#, fuzzy, c-format
+#, c-format
msgid "invalid blocks '%s' on device '%s'"
-msgstr "nombor peranti major tidak sah %s"
+msgstr ""
#: misc/mke2fs.c:1979
msgid "filesystem"
@@ -5969,37 +5650,32 @@ msgid "Failed to parse fs types list\n"
msgstr ""
#: misc/mke2fs.c:2114
-#, fuzzy
msgid "The HURD does not support the filetype feature.\n"
-msgstr "Cdrdao %1 tidak menyokong overburning."
+msgstr ""
#: misc/mke2fs.c:2119
-#, fuzzy
msgid "The HURD does not support the huge_file feature.\n"
-msgstr "Cdrdao %1 tidak menyokong overburning."
+msgstr ""
#: misc/mke2fs.c:2124
msgid "The HURD does not support the metadata_csum feature.\n"
msgstr ""
#: misc/mke2fs.c:2129
-#, fuzzy
msgid "The HURD does not support the ea_inode feature.\n"
-msgstr "Cdrdao %1 tidak menyokong overburning."
+msgstr ""
#: misc/mke2fs.c:2139
msgid "while trying to determine hardware sector size"
msgstr ""
#: misc/mke2fs.c:2145
-#, fuzzy
msgid "while trying to determine physical sector size"
-msgstr "ketika cuba untuk memadam %s"
+msgstr ""
#: misc/mke2fs.c:2177
-#, fuzzy
msgid "while setting blocksize; too small for device\n"
-msgstr "ketika menetapkan maklumat checksum kumpulan blok"
+msgstr ""
#: misc/mke2fs.c:2182
#, c-format
@@ -6037,9 +5713,9 @@ msgid "Journals not supported with revision 0 filesystems\n"
msgstr ""
#: misc/mke2fs.c:2280
-#, fuzzy, c-format
+#, c-format
msgid "invalid reserved blocks percent - %lf"
-msgstr "kiraan blok tidak sah - %s"
+msgstr ""
#: misc/mke2fs.c:2297
msgid "Extents MUST be enabled for a 64-bit filesystem. Pass -O extents to rectify.\n"
@@ -6059,9 +5735,9 @@ msgid "warning: Unable to get device geometry for %s\n"
msgstr ""
#: misc/mke2fs.c:2355
-#, fuzzy, c-format
+#, c-format
msgid "%s alignment is offset by %lu bytes.\n"
-msgstr "Muat naik gagal, \"%s\", telah memindahkan %lu daripada %lu bait"
+msgstr ""
#: misc/mke2fs.c:2357
#, c-format
@@ -6176,36 +5852,29 @@ msgid ""
msgstr ""
#: misc/mke2fs.c:2849
-#, fuzzy
msgid "Discarding device blocks: "
-msgstr "Blok"
+msgstr ""
#: misc/mke2fs.c:2865
-#, fuzzy
msgid "failed - "
-msgstr "Gagal"
+msgstr "gagal - "
#: misc/mke2fs.c:2924
-#, fuzzy
msgid "while initializing quota context"
-msgstr "ketika memulakan superblok jurnal"
+msgstr ""
#: misc/mke2fs.c:2931
-#, fuzzy
-#| msgid "while writing journal inode"
msgid "while writing quota inodes"
-msgstr "ketika menulis bitmap blok"
+msgstr ""
#: misc/mke2fs.c:2956
-#, fuzzy, c-format
-#| msgid "bad error behavior - %s"
+#, c-format
msgid "bad error behavior in profile - %s"
-msgstr "kelakuan ralat buruk - %s"
+msgstr ""
#: misc/mke2fs.c:3035
-#, fuzzy
msgid "in malloc for android_sparse_params"
-msgstr "ketika memeriksa kewarasan blok inode buruk"
+msgstr ""
#: misc/mke2fs.c:3049
msgid "while setting up superblock"
@@ -6233,30 +5902,26 @@ msgid "unknown os - %s"
msgstr "OS tidak diketahui - %s"
#: misc/mke2fs.c:3266
-#, fuzzy
msgid "Allocating group tables: "
-msgstr "ketika mengumpukkan penimbal"
+msgstr ""
#: misc/mke2fs.c:3274
msgid "while trying to allocate filesystem tables"
msgstr ""
#: misc/mke2fs.c:3289
-#, fuzzy
msgid "while unmarking bad blocks"
-msgstr "ketika memeriksa kewarasan blok inode buruk"
+msgstr ""
#: misc/mke2fs.c:3300
-#, fuzzy
msgid ""
"\n"
"\twhile converting subcluster bitmap"
-msgstr "ketika menulis bitmap blok"
+msgstr ""
#: misc/mke2fs.c:3309
-#, fuzzy
msgid "while calculating overhead"
-msgstr "Mengira..."
+msgstr ""
#: misc/mke2fs.c:3328
#, c-format
@@ -6303,11 +5968,10 @@ msgid "Creating journal (%u blocks): "
msgstr "Mencipta jurnal (%u blok): "
#: misc/mke2fs.c:3444
-#, fuzzy
msgid ""
"\n"
"\twhile trying to create journal"
-msgstr "ketika membaca inod jurnal"
+msgstr ""
#: misc/mke2fs.c:3456 misc/tune2fs.c:1173
msgid ""
@@ -6321,23 +5985,20 @@ msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
msgstr ""
#: misc/mke2fs.c:3481
-#, fuzzy
msgid "Copying files into the device: "
-msgstr "Menyalin peranti ke imej cakera"
+msgstr ""
#: misc/mke2fs.c:3487
-#, fuzzy
msgid "while populating file system"
-msgstr "Ralat apabila membaca fail."
+msgstr ""
#: misc/mke2fs.c:3494
msgid "Writing superblocks and filesystem accounting information: "
msgstr ""
#: misc/mke2fs.c:3501
-#, fuzzy
msgid "while writing out and closing file system"
-msgstr "Abai fail tetapan sistem"
+msgstr ""
#: misc/mke2fs.c:3504
msgid ""
@@ -6348,9 +6009,9 @@ msgstr ""
"\n"
#: misc/mk_hugefiles.c:339
-#, fuzzy, c-format
+#, c-format
msgid "while zeroing block %llu for hugefile"
-msgstr "ketika menetapkan maklumat checksum kumpulan blok"
+msgstr ""
#: misc/mk_hugefiles.c:516
#, c-format
@@ -6358,24 +6019,23 @@ msgid "Partition offset of %llu (%uk) blocks not compatible with cluster size %u
msgstr ""
#: misc/mk_hugefiles.c:584
-#, fuzzy
msgid "Huge files will be zero'ed\n"
-msgstr "Trak pembuang besar."
+msgstr ""
#: misc/mk_hugefiles.c:585
-#, fuzzy, c-format
+#, c-format
msgid "Creating %lu huge file(s) "
-msgstr "Mencipta fail biasa %s\n"
+msgstr ""
#: misc/mk_hugefiles.c:587
-#, fuzzy, c-format
+#, c-format
msgid "with %llu blocks each"
-msgstr "Saiz blok kod dalam setiap sub-jalur"
+msgstr ""
#: misc/mk_hugefiles.c:597
-#, fuzzy, c-format
+#, c-format
msgid "while creating huge file %lu"
-msgstr "Ralat ketika mencipta fail %s."
+msgstr ""
#: misc/mklost+found.c:50
msgid "Usage: mklost+found\n"
@@ -6392,19 +6052,19 @@ msgid ""
msgstr ""
#: misc/partinfo.c:53
-#, fuzzy, c-format
+#, c-format
msgid "Cannot open %s: %s"
-msgstr "Tidak dapat membuka pengkalan data %s: %s"
+msgstr ""
#: misc/partinfo.c:59
-#, fuzzy, c-format
+#, c-format
msgid "Cannot get geometry of %s: %s"
-msgstr "Tak dapat memperolehi skema bagi %s: %s"
+msgstr ""
#: misc/partinfo.c:67
-#, fuzzy, c-format
+#, c-format
msgid "Cannot get size of %s: %s"
-msgstr "Tidak memperoleh mesej %s: "
+msgstr ""
#: misc/partinfo.c:73
#, c-format
@@ -6443,9 +6103,8 @@ msgid "Journal superblock not found!\n"
msgstr "Superblok jurnal tidak dijumpai!\n"
#: misc/tune2fs.c:287
-#, fuzzy
msgid "while trying to open external journal"
-msgstr "ketika cuba untuk membuka titiklekap %s"
+msgstr ""
#: misc/tune2fs.c:293 misc/tune2fs.c:2896
#, c-format
@@ -6453,16 +6112,15 @@ msgid "%s is not a journal device.\n"
msgstr "%s adalah bukan peranti jurnal.\n"
#: misc/tune2fs.c:302 misc/tune2fs.c:2905
-#, fuzzy, c-format
+#, c-format
msgid ""
"Journal superblock is corrupted, nr_users\n"
"is too high (%d).\n"
-msgstr "ketika membaca superblok jurnal"
+msgstr ""
#: misc/tune2fs.c:309 misc/tune2fs.c:2912
-#, fuzzy
msgid "Filesystem's UUID not found on journal device.\n"
-msgstr "Temui UUID bagi fail silih {device} ialah {uuid}."
+msgstr ""
#: misc/tune2fs.c:333
msgid ""
@@ -6496,9 +6154,9 @@ msgid "After running e2fsck, please run `resize2fs %s %s"
msgstr ""
#: misc/tune2fs.c:499
-#, fuzzy, c-format
+#, c-format
msgid "Please run `resize2fs %s %s"
-msgstr "Gagal untuk melaksanakan arahan \"%s\": %s\n"
+msgstr ""
#: misc/tune2fs.c:503
#, c-format
@@ -6506,14 +6164,14 @@ msgid " -z \"%s\""
msgstr " -z \"%s\""
#: misc/tune2fs.c:505
-#, fuzzy, c-format
+#, c-format
msgid "' to enable 64-bit mode.\n"
-msgstr "Satu bendera untuk membenarkan mod termaksimum"
+msgstr ""
#: misc/tune2fs.c:507
-#, fuzzy, c-format
+#, c-format
msgid "' to disable 64-bit mode.\n"
-msgstr "Benar/lumpuhkan mod karet"
+msgstr ""
#: misc/tune2fs.c:1075
msgid ""
@@ -6522,14 +6180,14 @@ msgid ""
msgstr ""
#: misc/tune2fs.c:1111
-#, fuzzy, c-format
+#, c-format
msgid "Clearing filesystem feature '%s' not supported.\n"
-msgstr "Sistem fail mempunyai ciri baca-sahaja yang tidak disokong"
+msgstr ""
#: misc/tune2fs.c:1117
-#, fuzzy, c-format
+#, c-format
msgid "Setting filesystem feature '%s' not supported.\n"
-msgstr "Sistem fail mempunyai ciri yang tidak disokong"
+msgstr ""
#: misc/tune2fs.c:1126
msgid ""
@@ -6568,9 +6226,8 @@ msgid ""
msgstr ""
#: misc/tune2fs.c:1200
-#, fuzzy
msgid "Error while reading bitmaps\n"
-msgstr "ketika membaca bitmap"
+msgstr ""
#: misc/tune2fs.c:1209
#, c-format
@@ -6578,9 +6235,8 @@ msgid "Magic number in MMP block does not match. expected: %x, actual: %x\n"
msgstr ""
#: misc/tune2fs.c:1214
-#, fuzzy
msgid "while reading MMP block."
-msgstr "Pengiraan bitmap MMP tidak sepadan"
+msgstr ""
#: misc/tune2fs.c:1247
msgid "Disabling directory index on filesystem with checksums could take some time."
@@ -6680,11 +6336,11 @@ msgid "The filesystem already has a journal.\n"
msgstr "Sistemfail telah mempunyai jurnal.\n"
#: misc/tune2fs.c:1583
-#, fuzzy, c-format
+#, c-format
msgid ""
"\n"
"\twhile trying to open journal on %s\n"
-msgstr "ketika cuba untuk membuka titiklekap %s"
+msgstr ""
#: misc/tune2fs.c:1587
#, c-format
@@ -6692,20 +6348,19 @@ msgid "Creating journal on device %s: "
msgstr "Mencipta jurnal pada peranti %s: "
#: misc/tune2fs.c:1595
-#, fuzzy, c-format
+#, c-format
msgid "while adding filesystem to journal on %s"
-msgstr "Menambah jurnal ke peranti %s: "
+msgstr ""
#: misc/tune2fs.c:1601
msgid "Creating journal inode: "
msgstr "Mencipta inode jurnal: "
#: misc/tune2fs.c:1615
-#, fuzzy
msgid ""
"\n"
"\twhile trying to create journal file"
-msgstr "Ralat berlaku bila membaca fail"
+msgstr ""
#: misc/tune2fs.c:1657
#, c-format
@@ -6713,27 +6368,23 @@ msgid "Cannot enable project quota; inode size too small.\n"
msgstr ""
#: misc/tune2fs.c:1670
-#, fuzzy
-#| msgid "while initializing journal superblock"
msgid "while initializing quota context in support library"
-msgstr "ketika memulakan superblok jurnal"
+msgstr ""
#: misc/tune2fs.c:1686
-#, fuzzy, c-format
+#, c-format
msgid "while updating quota limits (%d)"
-msgstr "ketika menetapkan inod blok buruk"
+msgstr ""
#: misc/tune2fs.c:1696
-#, fuzzy, c-format
-#| msgid "while writing inode table"
+#, c-format
msgid "while writing quota file (%d)"
-msgstr "ketika menulis jadual inod"
+msgstr ""
#: misc/tune2fs.c:1714
-#, fuzzy, c-format
-#| msgid "while reading root inode"
+#, c-format
msgid "while removing quota file (%d)"
-msgstr "ketika membaca inod root"
+msgstr ""
#: misc/tune2fs.c:1757
msgid ""
@@ -6774,19 +6425,17 @@ msgid "bad reserved block ratio - %s"
msgstr ""
#: misc/tune2fs.c:1978
-#, fuzzy
msgid "-o may only be specified once"
-msgstr "hanya satu jenis senarai boleh dinyatakan"
+msgstr ""
#: misc/tune2fs.c:1987
-#, fuzzy
msgid "-O may only be specified once"
-msgstr "hanya satu jenis senarai boleh dinyatakan"
+msgstr ""
#: misc/tune2fs.c:2004
-#, fuzzy, c-format
+#, c-format
msgid "bad reserved blocks count - %s"
-msgstr "kiraan lekapan buruk - %s"
+msgstr ""
#: misc/tune2fs.c:2033
#, c-format
@@ -6815,10 +6464,9 @@ msgid_plural "Setting multiple mount protection update interval to %lu seconds\n
msgstr[0] ""
#: misc/tune2fs.c:2171
-#, fuzzy, c-format
-#| msgid "Setting filetype for @E to %N.\n"
+#, c-format
msgid "Setting filesystem error flag to force fsck.\n"
-msgstr "Menetapkan jenisfail untuk @E ke %N.\n"
+msgstr ""
#: misc/tune2fs.c:2189
#, c-format
@@ -6831,9 +6479,9 @@ msgid "Invalid RAID stripe-width: %s\n"
msgstr "Lebar stripe RAID tidak sah: %s\n"
#: misc/tune2fs.c:2219
-#, fuzzy, c-format
+#, c-format
msgid "Invalid hash algorithm: %s\n"
-msgstr "Algoritma hash tidak diketahui."
+msgstr ""
#: misc/tune2fs.c:2225
#, c-format
@@ -6841,29 +6489,24 @@ msgid "Setting default hash algorithm to %s (%d)\n"
msgstr ""
#: misc/tune2fs.c:2252
-#, fuzzy, c-format
+#, c-format
msgid "Cannot alter existing encoding\n"
-msgstr "Tidak jumpa pengekodan: %1"
+msgstr ""
#: misc/tune2fs.c:2258
-#, fuzzy, c-format
+#, c-format
msgid "Invalid encoding: %s\n"
-msgstr "%s: pengekodan tidak sah."
+msgstr ""
#: misc/tune2fs.c:2264
-#, fuzzy, c-format
-#| msgid "Setting error behavior to %d\n"
+#, c-format
msgid "Setting encoding to '%s'\n"
msgstr ""
-"%s%s\n"
-"Pengekodan: %s\n"
-"%s"
#: misc/tune2fs.c:2288
-#, fuzzy, c-format
-#| msgid "while setting flags on %s"
+#, c-format
msgid "Setting encoding_flags to '%s'\n"
-msgstr "ketika menetapkan penanda pada %s"
+msgstr ""
#: misc/tune2fs.c:2298
msgid ""
@@ -6888,14 +6531,12 @@ msgid ""
msgstr ""
#: misc/tune2fs.c:2714
-#, fuzzy
msgid "Failed to read inode bitmap\n"
-msgstr "Tidak dapat membaca peta bit inode"
+msgstr ""
#: misc/tune2fs.c:2719
-#, fuzzy
msgid "Failed to read block bitmap\n"
-msgstr "Tidak dapat membaca peta bit blok"
+msgstr ""
#: misc/tune2fs.c:2736 resize/resize2fs.c:1372
msgid "blocks to be moved"
@@ -6933,25 +6574,22 @@ msgid ""
msgstr ""
#: misc/tune2fs.c:3014
-#, fuzzy
-#| msgid "%s is not a journal device.\n"
msgid "Cannot modify a journal device.\n"
-msgstr "Mengosongkan peranti jurnal: "
+msgstr ""
#: misc/tune2fs.c:3027
-#, fuzzy, c-format
+#, c-format
msgid "The inode size is already %lu\n"
-msgstr "Menetapkan saiz inod %lu\n"
+msgstr ""
#: misc/tune2fs.c:3034
-#, fuzzy
msgid "Shrinking inode size is not supported\n"
-msgstr "Pengecutan dalam talian tidak disokong"
+msgstr ""
#: misc/tune2fs.c:3039
-#, fuzzy, c-format
+#, c-format
msgid "Invalid inode size %lu (max %d)\n"
-msgstr "saiz inode tidak sah - %s"
+msgstr ""
#: misc/tune2fs.c:3045
msgid "Resizing inodes could take some time."
@@ -6969,9 +6607,9 @@ msgid ""
msgstr ""
#: misc/tune2fs.c:3103
-#, fuzzy, c-format
+#, c-format
msgid "Recovering journal.\n"
-msgstr "ketika mendapatkan semula jurnal ext3 bagi %s"
+msgstr ""
#: misc/tune2fs.c:3125
#, c-format
@@ -7014,16 +6652,17 @@ msgid "reserved blocks count is too big (%llu)"
msgstr ""
#: misc/tune2fs.c:3174
-#, fuzzy, c-format
+#, c-format
msgid "Setting reserved blocks count to %llu\n"
-msgstr "Memeriksa blok %lu ke %lu\n"
+msgstr ""
#: misc/tune2fs.c:3179
-#, fuzzy
msgid ""
"\n"
"The filesystem already has sparse superblocks.\n"
-msgstr "Sistemfail telah mempunyai jurnal.\n"
+msgstr ""
+"\n"
+"Sistemfail telah mempunyai superblock jarang.\n"
#: misc/tune2fs.c:3182
msgid ""
@@ -7084,9 +6723,8 @@ msgid "Invalid UUID format\n"
msgstr "Format UUID tidak sah\n"
#: misc/tune2fs.c:3356
-#, fuzzy
msgid "Need to update journal superblock.\n"
-msgstr "ketika memulakan superblok jurnal"
+msgstr "Perlu mengemaskini superblok jurnal.\n"
#: misc/tune2fs.c:3378
msgid "The inode size may only be changed when the filesystem is unmounted.\n"
@@ -7104,9 +6742,8 @@ msgid "Setting inode size %lu\n"
msgstr "Menetapkan saiz inod %lu\n"
#: misc/tune2fs.c:3407
-#, fuzzy
msgid "Failed to change inode size\n"
-msgstr "Ubah Saiz"
+msgstr "Gagal menukar saiz inode\n"
#: misc/tune2fs.c:3421
#, c-format
@@ -7124,21 +6761,17 @@ msgid "Setting extended default mount options to '%s'\n"
msgstr ""
#: misc/util.c:102
-#, fuzzy
msgid "<proceeding>\n"
-msgstr "Metadata kiriman telah dimuat turun, meneruskan dengan kiriman..."
+msgstr "<meneruskan>\n"
#: misc/util.c:106
-#, fuzzy, c-format
-#| msgid "Proceed anyway? (y,n) "
+#, c-format
msgid "Proceed anyway (or wait %d seconds to proceed) ? (y,N) "
-msgstr "Teruskan juga? (y,t)"
+msgstr "Teruskan juga? (atau tunggu %d saat untuk teruskan) ? (y,T) "
#: misc/util.c:110
-#, fuzzy
-#| msgid "Proceed anyway? (y,n) "
msgid "Proceed anyway? (y,N) "
-msgstr "Teruskan juga? (y,t)"
+msgstr "Teruskan juga? (y,T) "
#: misc/util.c:137
msgid "mke2fs forced anyway. Hope /etc/mtab is incorrect.\n"
@@ -7198,13 +6831,12 @@ msgid ""
msgstr ""
#: misc/util.c:293
-#, fuzzy
msgid ""
"\n"
"Total journal size too big for filesystem.\n"
msgstr ""
"\n"
-"Sistemfail terlalu kecil untuk jurnal\n"
+"Jumlah saiz jurnal terlalu besar untuk sistemfail.\n"
#: misc/util.c:306
#, c-format
@@ -7229,9 +6861,8 @@ msgid " %s -k\n"
msgstr " %s -k\n"
#: misc/uuidd.c:155
-#, fuzzy
msgid "bad arguments"
-msgstr "Hujah teruk ke arahan pengguna\n"
+msgstr "hujah buruk"
#: misc/uuidd.c:173
msgid "connect"
@@ -7242,14 +6873,12 @@ msgid "write"
msgstr "tulis"
#: misc/uuidd.c:200
-#, fuzzy
msgid "read count"
-msgstr "kiraan"
+msgstr "kiraan baca"
#: misc/uuidd.c:206
-#, fuzzy
msgid "bad response length"
-msgstr "Respons pengesahihan teruk daripada pelayan."
+msgstr "panjang jawapan yang buruk"
#: misc/uuidd.c:271
#, c-format
@@ -7257,81 +6886,80 @@ msgid "uuidd daemon already running at pid %s\n"
msgstr ""
#: misc/uuidd.c:279
-#, fuzzy, c-format
+#, c-format
msgid "Couldn't create unix stream socket: %s"
-msgstr "Tidak dapat mencipta soket: %s"
+msgstr "Tidak dapat mencipta soket aliran unix: %s"
#: misc/uuidd.c:308
-#, fuzzy, c-format
+#, c-format
msgid "Couldn't bind unix socket %s: %s\n"
-msgstr "Tidak dapat ikat port %d pada %s: %s (%s)"
+msgstr "Tidak dapat mengikat soket unix %s: %s\n"
#: misc/uuidd.c:316
-#, fuzzy, c-format
+#, c-format
msgid "Couldn't listen on unix socket %s: %s\n"
-msgstr "Tidak dapat menulis pada soket! %s."
+msgstr "Tidak dapat mendengar pada soket unix %s: %s\n"
#: misc/uuidd.c:354
-#, fuzzy, c-format
+#, c-format
msgid "Error reading from client, len = %d\n"
-msgstr "Ralat membaca '%s': %s"
+msgstr "Ralat membaca dari klien, len = %d\n"
#: misc/uuidd.c:362
-#, fuzzy, c-format
+#, c-format
msgid "operation %d, incoming num = %d\n"
-msgstr "%d operasi muat turun aktif"
+msgstr "operasi %d, nombor masuk = %d\n"
#: misc/uuidd.c:381
-#, fuzzy, c-format
+#, c-format
msgid "Generated time UUID: %s\n"
-msgstr "Masa (s): "
+msgstr "Dijana masa UUID: %s\n"
#: misc/uuidd.c:391
-#, fuzzy, c-format
+#, c-format
msgid "Generated random UUID: %s\n"
-msgstr "Guna nombor rawak terjana-perkakasan"
+msgstr "Dijana rawak UUID: %s\n"
#: misc/uuidd.c:400
#, c-format
msgid "Generated time UUID %s and subsequent UUID\n"
msgid_plural "Generated time UUID %s and %d subsequent UUIDs\n"
-msgstr[0] ""
+msgstr[0] "Dijana masa UUID %s dan %d UUID seterusnya\n"
#: misc/uuidd.c:421
-#, fuzzy, c-format
+#, c-format
msgid "Generated %d UUID's:\n"
-msgstr "Dijana"
+msgstr "Dijana %d UUID:\n"
#: misc/uuidd.c:433
-#, fuzzy, c-format
+#, c-format
msgid "Invalid operation %d\n"
-msgstr "%d operasi fail berjalan"
+msgstr "Operasi tidak sah %d\n"
#: misc/uuidd.c:477 misc/uuidd.c:499
-#, fuzzy, c-format
+#, c-format
msgid "Bad number: %s\n"
-msgstr "Nombor ajaib buruk dalam blok-super"
+msgstr "Nombor buruk: %s\n"
#: misc/uuidd.c:534 misc/uuidd.c:563
-#, fuzzy, c-format
+#, c-format
msgid "Error calling uuidd daemon (%s): %s\n"
-msgstr "Ralat memanggil StartServiceByName untuk %s: "
+msgstr "Ralat memanggil daemon uuidd (%s): %s\n"
#: misc/uuidd.c:544
-#, fuzzy, c-format
+#, c-format
msgid "%s and subsequent UUID\n"
msgid_plural "%s and subsequent %d UUIDs\n"
-msgstr[0] "Peristiwa berikutn_ya"
+msgstr[0] "%s dan %d UUID seterusnya\n"
#: misc/uuidd.c:548
-#, fuzzy
msgid "List of UUID's:\n"
-msgstr "UUID:"
+msgstr "Senarai UUID:\n"
#: misc/uuidd.c:569
-#, fuzzy, c-format
+#, c-format
msgid "Unexpected reply length from server %d\n"
-msgstr "Balas tidak jangka daripada pelayan"
+msgstr "Panjang balasan tidak dijangka daripada pelayan %d\n"
#: misc/uuidd.c:586
#, c-format
@@ -7339,9 +6967,9 @@ msgid "Couldn't kill uuidd running at pid %d: %s\n"
msgstr ""
#: misc/uuidd.c:592
-#, fuzzy, c-format
+#, c-format
msgid "Killed uuidd running at pid %d\n"
-msgstr "Program ini dilaksanakan sebagai proses bernombor %(pid)d."
+msgstr "Mematikan uuidd dilaksanakan di pid %d\n"
#: misc/uuidgen.c:32
#, c-format
@@ -7407,9 +7035,9 @@ msgid "while opening %s"
msgstr "ketika membuka %s"
#: resize/main.c:382
-#, fuzzy, c-format
+#, c-format
msgid "while getting stat information for %s"
-msgstr "RaLat semasa mendapatkan maklumat kongsi: %s"
+msgstr "semasa mendapatkan maklumat statistik untuk %s"
#: resize/main.c:463
#, c-format
@@ -7419,14 +7047,14 @@ msgid ""
msgstr ""
#: resize/main.c:482
-#, fuzzy, c-format
+#, c-format
msgid "Estimated minimum size of the filesystem: %llu\n"
-msgstr "Ralat melekapkan sistem fail untuk mengira saiz minimum"
+msgstr "Anggaran saiz minimum sistem fail: %llu\n"
#: resize/main.c:522
-#, fuzzy, c-format
+#, c-format
msgid "Invalid new size: %s\n"
-msgstr "%s: fail saiz tidak sah"
+msgstr "Saiz baharu tidak sah: %s\n"
#: resize/main.c:541
msgid "New size too large to be expressed in 32 bits\n"
@@ -7481,16 +7109,14 @@ msgid ""
msgstr ""
#: resize/main.c:639
-#, fuzzy, c-format
-#| msgid "The filesystem already has a journal.\n"
+#, c-format
msgid "The filesystem is already 64-bit.\n"
-msgstr "64-bit"
+msgstr "Sistem fail sudah 64-bit.\n"
#: resize/main.c:644
-#, fuzzy, c-format
-#| msgid "The filesystem already has a journal.\n"
+#, c-format
msgid "The filesystem is already 32-bit.\n"
-msgstr "Sistemfail telah mempunyai jurnal.\n"
+msgstr "Sistem fail sudah 32-bit.\n"
#: resize/main.c:649
#, c-format
@@ -7498,14 +7124,14 @@ msgid "Cannot shrink this filesystem because it has the stable_inodes feature fl
msgstr ""
#: resize/main.c:658
-#, fuzzy, c-format
+#, c-format
msgid "Converting the filesystem to 64-bit.\n"
-msgstr "Menukarkan"
+msgstr "Menukar sistem fail kepada 64-bit.\n"
#: resize/main.c:660
-#, fuzzy, c-format
+#, c-format
msgid "Converting the filesystem to 32-bit.\n"
-msgstr "32-bit"
+msgstr "Menukar sistem fail kepada 32-bit.\n"
#: resize/main.c:662
#, c-format
@@ -7538,7 +7164,7 @@ msgstr "ketika cuba untuk memangkas %s"
#: resize/online.c:81
msgid "kernel does not support online resize with sparse_super2"
-msgstr ""
+msgstr "kernel tidak menyokong saiz semula dalam talian dengan sparse_super2"
#: resize/online.c:86
#, c-format
@@ -7580,9 +7206,8 @@ msgid "While checking for on-line resizing support"
msgstr ""
#: resize/online.c:181
-#, fuzzy
msgid "Kernel does not support online resizing"
-msgstr "Sistem fail tidak menyokong saiz semula dalam talian"
+msgstr "Kernel tidak menyokong saiz semula dalam talian"
#: resize/online.c:220
#, c-format
diff --git a/po/ro.gmo b/po/ro.gmo
new file mode 100644
index 000000000..912d2a33e
--- /dev/null
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
new file mode 100644
index 000000000..09b6f5d14
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,8720 @@
+# E2fsprogs translation template file
+# Mesajele în limba română pentru pachetul e2fsprogs.
+# Copyright © 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
+# 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 by Theodore Ts'o
+# This file is distributed under the same license as the e2fsprogs package.
+# Theodore Ts'o <tytso@mit.edu>, 2022.
+#
+# Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2023.
+#
+# Cronologia traducerii fișierului „e2fsprogs”:
+# Traducerea inițială, făcută de R-GC, pentru versiunea e2fsprogs 1.46.6-rc1, oct-2023.
+# Corectări făcute de R-GC, pentru versiunea e2fsprogs 1.46.6-rc1, noi-2023.
+# Actualizare a traducerii pentru versiunea Y, făcută de X, Z(luna-anul).
+#
+#. 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,
+#. there is an @-expansion, where strings like "@i" are expanded to
+#. "inode", and so on. In order to make it easier for translators, the
+#. e2fsprogs po template file has been enhanced with comments that show
+#. the @-expansion, for the strings in the problem.c file.
+#.
+#. Translators are free to use the @-expansion facility if they so
+#. choose, by providing translations for strings in e2fsck/message.c.
+#. These translation can completely replace an expansion; for example,
+#. if "bblock" (which indicated that "@b" would be expanded to "block")
+#. is translated as "ddatenverlust", then "@d" will be expanded to
+#. "datenverlust". Alternatively, translators can simply not use the
+#. @-expansion facility at all.
+#.
+#. The second expansion which is done for e2fsck's problem.c messages is
+#. a dynamic %-expansion, which expands %i as an inode number, and so
+#. on. A table of these expansions can be found below. Note that
+#. %-expressions that begin with "%D" and "%I" are two-character
+#. expansions; so for example, "%Iu" expands to the inode's user id
+#. ownership field (inode->i_uid). Also the "%B" expansion is special:
+#. it can expand to either the string "indirect block" (possibly preceded
+#. by the word "double" or "triple"), or the string "block #" immediately
+#. followed by an integer indicating a block sequence number.
+#.
+#. Please note that the %-expansion for most e2fsck's problem.c should not
+#. use positional indicators such as %1, since although they look like c-style
+#. format strings, they are NOT c-style format strings, and the positional
+#. indicators (which BTW are GNU extensions and so won't work on other Unix
+#. gettext implementations) won't work with e2fsck's print_e2fsck_message()
+#. function found in e2fsck/message.c
+#.
+#. %b <blk> block number
+#. %B "indirect block" | "block #"<blkcount> string | string+integer
+#. %c <blk2> block number
+#. %Di <dirent> -> ino inode number
+#. %Dn <dirent> -> name string
+#. %Dr <dirent> -> rec_len
+#. %Dl <dirent> -> name_len
+#. %Dt <dirent> -> filetype
+#. %d <dir> inode number
+#. %g <group> integer
+#. %i <ino> inode number
+#. %Is <inode> -> i_size
+#. %IS <inode> -> i_extra_isize
+#. %Ib <inode> -> i_blocks
+#. %Il <inode> -> i_links_count
+#. %Im <inode> -> i_mode
+#. %IM <inode> -> i_mtime
+#. %IF <inode> -> i_faddr
+#. %If <inode> -> i_file_acl
+#. %Id <inode> -> i_size_high
+#. %Iu <inode> -> i_uid
+#. %Ig <inode> -> i_gid
+#. %It <str> file type
+#. %j <ino2> inode number
+#. %m <com_err error message>
+#. %N <num>
+#. %p ext2fs_get_pathname of directory <ino>
+#. %P ext2fs_get_pathname of <dirent>->ino with <ino2> as
+#. the containing directory. (If dirent is NULL
+#. then return the pathname of directory <ino2>)
+#. %q ext2fs_get_pathname of directory <dir>
+#. %Q ext2fs_get_pathname of directory <ino> with <dir> as
+#. the containing directory.
+#. %s <str> miscellaneous string
+#. %S backup superblock
+#. %X <num> hexadecimal format
+#.
+msgid ""
+msgstr ""
+"Project-Id-Version: e2fsprogs 1.46.6-rc1\n"
+"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n"
+"POT-Creation-Date: 2022-09-12 08:19-0400\n"
+"PO-Revision-Date: 2023-11-08 01:25+0100\n"
+"Last-Translator: Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>\n"
+"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=((n==1) ? 0 : (n==2) ? 1 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 2 : 3);\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 3.2.2\n"
+
+#: e2fsck/badblocks.c:23 misc/mke2fs.c:221
+#, c-format
+msgid "Bad block %u out of range; ignored.\n"
+msgstr "Blocul defectuos %u este în afara intervalului; se ignoră.\n"
+
+#: e2fsck/badblocks.c:46
+msgid "while sanity checking the bad blocks inode"
+msgstr "la verificarea integrității nodului-i al blocurilor defectuoase"
+
+#: e2fsck/badblocks.c:58
+msgid "while reading the bad blocks inode"
+msgstr "în timp ce se citea nodul-i al blocurilor defectuoase"
+
+#: e2fsck/badblocks.c:72 e2fsck/scantest.c:107 e2fsck/unix.c:1592
+#: e2fsck/unix.c:1707 misc/badblocks.c:1266 misc/badblocks.c:1274
+#: misc/badblocks.c:1288 misc/badblocks.c:1300 misc/dumpe2fs.c:438
+#: misc/dumpe2fs.c:704 misc/dumpe2fs.c:708 misc/e2image.c:1440
+#: misc/e2image.c:1640 misc/e2image.c:1661 misc/mke2fs.c:237
+#: misc/tune2fs.c:2888 misc/tune2fs.c:2990 resize/main.c:422
+#, c-format
+msgid "while trying to open %s"
+msgstr "în timp ce se încerca să se deschidă %s"
+
+#: e2fsck/badblocks.c:84
+#, c-format
+msgid "while trying popen '%s'"
+msgstr "în timp ce se încerca să se deschidă via popen() „%s”"
+
+#: e2fsck/badblocks.c:95 misc/mke2fs.c:244
+msgid "while reading in list of bad blocks from file"
+msgstr "în timp ce se citea lista de blocuri defectuoase din fișier"
+
+#: e2fsck/badblocks.c:106
+msgid "while updating bad block inode"
+msgstr "în timp ce se actualiza nodul-i al blocului defectuos"
+
+#: e2fsck/badblocks.c:134
+#, c-format
+msgid "Warning: illegal block %u found in bad block inode. Cleared.\n"
+msgstr "Avertizare: blocul ilegal %u a fost găsit în nodul-i de blocuri defectuoase. Se curăță.\n"
+
+#: e2fsck/dirinfo.c:332
+msgid "while freeing dir_info tdb file"
+msgstr "în timp ce se elibera fișierul tdb dir_info"
+
+#: e2fsck/ehandler.c:55
+#, c-format
+msgid "Error reading block %lu (%s) while %s. "
+msgstr "Eroare la citirea blocului %lu (%s) în timp ce %s. "
+
+#: e2fsck/ehandler.c:58
+#, c-format
+msgid "Error reading block %lu (%s). "
+msgstr "Eroare la citirea blocului %lu (%s). "
+
+#: e2fsck/ehandler.c:66 e2fsck/ehandler.c:115
+msgid "Ignore error"
+msgstr "Ignoră eroarea"
+
+#: e2fsck/ehandler.c:67
+msgid "Force rewrite"
+msgstr "Forțează rescrierea"
+
+#: e2fsck/ehandler.c:109
+#, c-format
+msgid "Error writing block %lu (%s) while %s. "
+msgstr "Eroare la scrierea blocului %lu (%s) în timp ce %s. "
+
+#: e2fsck/ehandler.c:112
+#, c-format
+msgid "Error writing block %lu (%s). "
+msgstr "Eroare la scrierea blocului %lu (%s). "
+
+#: e2fsck/emptydir.c:56
+msgid "empty dirblocks"
+msgstr "blocuri de directoare goale"
+
+#: e2fsck/emptydir.c:61
+msgid "empty dir map"
+msgstr "hartă de directoare goală"
+
+#: e2fsck/emptydir.c:97
+#, c-format
+msgid "Empty directory block %u (#%d) in inode %u\n"
+msgstr "Bloc de directoare gol %u (#%d) în nodul-i %u\n"
+
+#: e2fsck/extend.c:22
+#, c-format
+msgid "%s: %s filename nblocks blocksize\n"
+msgstr "%s: %s nume-de-fișier număr-de-blocuri dimensiune-bloc\n"
+
+#: e2fsck/extend.c:45
+#, c-format
+msgid "Illegal number of blocks!\n"
+msgstr "Număr ilegal de blocuri!\n"
+
+#: e2fsck/extend.c:51
+#, c-format
+msgid "Couldn't allocate block buffer (size=%d)\n"
+msgstr "Nu s-a putut aloca memoria tampon de bloc (dimensiune=%d)\n"
+
+#: e2fsck/extents.c:42
+msgid "extent rebuild inode map"
+msgstr "harta de noduri-i de reconstrucție de „extents”"
+
+#: e2fsck/flushb.c:35
+#, c-format
+msgid "Usage: %s disk\n"
+msgstr "Utilizare: %s disc\n"
+
+#: e2fsck/flushb.c:64
+#, c-format
+msgid "BLKFLSBUF ioctl not supported! Can't flush buffers.\n"
+msgstr "ioctl(BLKFLSBUF) nu este implementat! Nu se pot goli memoriile tampon.\n"
+
+#: e2fsck/journal.c:1289
+msgid "reading journal superblock\n"
+msgstr "se citește super-blocul jurnalului\n"
+
+#: e2fsck/journal.c:1362
+#, c-format
+msgid "%s: no valid journal superblock found\n"
+msgstr "%s: nu a fost găsit niciun super-bloc de jurnal valid\n"
+
+#: e2fsck/journal.c:1371
+#, c-format
+msgid "%s: journal too short\n"
+msgstr "%s: jurnalul este prea scurt\n"
+
+#: e2fsck/journal.c:1384
+#, c-format
+msgid "%s: incorrect fast commit blocks\n"
+msgstr "%s: blocuri de fast-commit incorecte\n"
+
+#: e2fsck/journal.c:1686 misc/fuse2fs.c:3797
+#, c-format
+msgid "%s: recovering journal\n"
+msgstr "%s: se recuperează jurnalul\n"
+
+#: e2fsck/journal.c:1688
+#, c-format
+msgid "%s: won't do journal recovery while read-only\n"
+msgstr "%s: nu se poate face recuperarea jurnalului în timp ce este numai-pentru-citire\n"
+
+#: e2fsck/journal.c:1715
+#, c-format
+msgid "while trying to re-open %s"
+msgstr "în timp ce se încerca să se re-deschidă %s"
+
+#: e2fsck/message.c:116
+msgid "aextended attribute"
+msgstr "aatribut extins"
+
+#: e2fsck/message.c:117
+msgid "Aerror allocating"
+msgstr "Aeroare la alocare"
+
+#: e2fsck/message.c:118
+msgid "bblock"
+msgstr "bbloc"
+
+#: e2fsck/message.c:119
+msgid "Bbitmap"
+msgstr "Bhartă de biți"
+
+#: e2fsck/message.c:120
+msgid "ccompress"
+msgstr "ccomprimare"
+
+#: e2fsck/message.c:121
+msgid "Cconflicts with some other fs @b"
+msgstr "Cintră în conflict cu un alt @b din sistemul de fișiere"
+
+#: e2fsck/message.c:122
+msgid "ddirectory"
+msgstr "ddirector"
+
+#: e2fsck/message.c:123
+msgid "Ddeleted"
+msgstr "Dșters"
+
+#: e2fsck/message.c:124
+msgid "eentry"
+msgstr "eintrare"
+
+#: e2fsck/message.c:125
+msgid "E@e '%Dn' in %p (%i)"
+msgstr "E@e „%Dn” din %p (%i)"
+
+#: e2fsck/message.c:126
+msgid "ffilesystem"
+msgstr "fsistem de fișiere"
+
+# R-GC, scrie:
+# a se vedea comentariile inițiale ale
+# autorilor privind utilizarea elementelor
+# de expansiune (sau neutilizarea).
+#: e2fsck/message.c:127
+msgid "Ffor @i %i (%Q) is"
+msgstr "Fpentru nodul-i %i (%Q) este"
+
+#: e2fsck/message.c:128
+msgid "ggroup"
+msgstr "ggrup"
+
+#: e2fsck/message.c:129
+msgid "hHTREE @d @i"
+msgstr "@i de @d de hHTREE"
+
+#: e2fsck/message.c:130
+msgid "iinode"
+msgstr "inod-i"
+
+#: e2fsck/message.c:131
+msgid "Iillegal"
+msgstr "Iilegal"
+
+#: e2fsck/message.c:132
+msgid "jjournal"
+msgstr "jjurnal"
+
+#: e2fsck/message.c:133
+msgid "llost+found"
+msgstr "llost+found"
+
+#: e2fsck/message.c:134
+msgid "Lis a link"
+msgstr "Leste o legătură"
+
+#: e2fsck/message.c:135
+msgid "mmultiply-claimed"
+msgstr "mrevendicat de mai multe ori"
+
+#: e2fsck/message.c:136
+msgid "ninvalid"
+msgstr "nnevalid"
+
+#: e2fsck/message.c:137
+msgid "oorphaned"
+msgstr "oorfan"
+
+#: e2fsck/message.c:138
+msgid "pproblem in"
+msgstr "pproblemă în"
+
+#: e2fsck/message.c:139
+msgid "qquota"
+msgstr "qcota"
+
+#: e2fsck/message.c:140
+msgid "rroot @i"
+msgstr "r@i rădăcină"
+
+#: e2fsck/message.c:141
+msgid "sshould be"
+msgstr "strebuie să fie"
+
+#: e2fsck/message.c:142
+msgid "Ssuper@b"
+msgstr "Ssuper-@b"
+
+#: e2fsck/message.c:143
+msgid "uunattached"
+msgstr "uneatașat"
+
+#: e2fsck/message.c:144
+msgid "vdevice"
+msgstr "vdispozitiv"
+
+#: e2fsck/message.c:145
+msgid "xextent"
+msgstr "xextent"
+
+#: e2fsck/message.c:146
+msgid "zzero-length"
+msgstr "zlungime-zero"
+
+#: e2fsck/message.c:157
+msgid "<The NULL inode>"
+msgstr "<nodul-i NULL>"
+
+#: e2fsck/message.c:158
+msgid "<The bad blocks inode>"
+msgstr "<nodul-i al blocurilor defectuoase>"
+
+#: e2fsck/message.c:160
+msgid "<The user quota inode>"
+msgstr "<nodul-i al cotei de utilizator>"
+
+#: e2fsck/message.c:161
+msgid "<The group quota inode>"
+msgstr "<nodul-i al cotei de grup>"
+
+#: e2fsck/message.c:162
+msgid "<The boot loader inode>"
+msgstr "<nodul-i al încărcătorului de pornire>"
+
+#: e2fsck/message.c:163
+msgid "<The undelete directory inode>"
+msgstr "<nodul-i al directorului de anulare a ștergerii>"
+
+#: e2fsck/message.c:164
+msgid "<The group descriptor inode>"
+msgstr "<nodul-i al descriptorului de grup>"
+
+#: e2fsck/message.c:165
+msgid "<The journal inode>"
+msgstr "<nodul-i al jurnalului>"
+
+#: e2fsck/message.c:166
+msgid "<Reserved inode 9>"
+msgstr "<nodul-i 9 rezervat>"
+
+#: e2fsck/message.c:167
+msgid "<Reserved inode 10>"
+msgstr "<nodul-i 10 rezervat>"
+
+#: e2fsck/message.c:325
+msgid "regular file"
+msgstr "fișier obișnuit"
+
+#: e2fsck/message.c:327
+msgid "directory"
+msgstr "director"
+
+#: e2fsck/message.c:329
+msgid "character device"
+msgstr "dispozitiv de caractere"
+
+#: e2fsck/message.c:331
+msgid "block device"
+msgstr "dispozitiv de blocuri"
+
+#: e2fsck/message.c:333
+msgid "named pipe"
+msgstr "conductă cu nume"
+
+#: e2fsck/message.c:335
+msgid "symbolic link"
+msgstr "legătură simbolică"
+
+#: e2fsck/message.c:337 misc/uuidd.c:162
+msgid "socket"
+msgstr "soclu"
+
+#: e2fsck/message.c:339
+#, c-format
+msgid "unknown file type with mode 0%o"
+msgstr "tip de fișier necunoscut cu modul 0%o"
+
+#: e2fsck/message.c:410
+msgid "indirect block"
+msgstr "bloc indirect"
+
+#: e2fsck/message.c:412
+msgid "double indirect block"
+msgstr "bloc indirect dublu"
+
+#: e2fsck/message.c:414
+msgid "triple indirect block"
+msgstr "bloc indirect triplu"
+
+#: e2fsck/message.c:416
+msgid "translator block"
+msgstr "bloc traducător(de transfer)"
+
+#: e2fsck/message.c:418
+msgid "block #"
+msgstr "bloc nr."
+
+#: e2fsck/message.c:482
+msgid "user"
+msgstr "utilizator"
+
+#: e2fsck/message.c:485
+msgid "group"
+msgstr "grup"
+
+#: e2fsck/message.c:488
+msgid "project"
+msgstr "proiect"
+
+#: e2fsck/message.c:491
+msgid "unknown quota type"
+msgstr "tip de cotă necunoscut"
+
+#: e2fsck/pass1b.c:223
+msgid "multiply claimed inode map"
+msgstr "harta nodurilor-i revendicată de mai multe ori"
+
+#: e2fsck/pass1b.c:673 e2fsck/pass1b.c:831
+#, c-format
+msgid "internal error: can't find dup_blk for %llu\n"
+msgstr "eroare internă: nu se poate găsi dup_blk pentru %llu\n"
+
+#: e2fsck/pass1b.c:958
+msgid "returned from clone_file_block"
+msgstr "returnat de clone_file_block"
+
+#: e2fsck/pass1b.c:982
+#, c-format
+msgid "internal error: couldn't lookup EA block record for %llu"
+msgstr "eroare internă: nu s-a putut căuta înregistrarea blocului EA pentru %llu"
+
+#: e2fsck/pass1b.c:995
+#, c-format
+msgid "internal error: couldn't lookup EA inode record for %u"
+msgstr "eroare internă: nu s-a putut căuta înregistrarea nodului-i EA pentru %u"
+
+#: e2fsck/pass1.c:349
+#, c-format
+msgid "while hashing entry with e_value_inum = %u"
+msgstr "în timp ce se calcula suma de control a intrării cu e_value_inum = %u"
+
+#: e2fsck/pass1.c:770 e2fsck/pass2.c:1155
+msgid "reading directory block"
+msgstr "se citește blocul de directoare"
+
+#: e2fsck/pass1.c:1169
+msgid "getting next inode from scan"
+msgstr "obținând următorul nod-i din scanare"
+
+#: e2fsck/pass1.c:1221
+msgid "in-use inode map"
+msgstr "harta de noduri-i în uz"
+
+#: e2fsck/pass1.c:1232
+msgid "directory inode map"
+msgstr "harta de noduri-i de directoare"
+
+#: e2fsck/pass1.c:1242
+msgid "regular file inode map"
+msgstr "harta de noduri-i de fișiere obișnuite"
+
+#: e2fsck/pass1.c:1251 misc/e2image.c:1290
+msgid "in-use block map"
+msgstr "harta de blocuri în uz"
+
+#: e2fsck/pass1.c:1260
+msgid "metadata block map"
+msgstr "harta de blocuri de metadate"
+
+#: e2fsck/pass1.c:1271
+msgid "inode casefold map"
+msgstr "harta „casefold” de noduri-i"
+
+#: e2fsck/pass1.c:1336
+msgid "opening inode scan"
+msgstr "se inițiază scanarea nodurilor-i"
+
+# R-GC, scrie:
+# am ales traducerea cu „Pasul X”, dar
+# cred că la fel de bine putea să fie
+# „X-a Trecere” sau de ce nu,
+# „X-a Periere”.
+#: e2fsck/pass1.c:2104
+msgid "Pass 1"
+msgstr "Pasul 1"
+
+#: e2fsck/pass1.c:2165
+#, c-format
+msgid "reading indirect blocks of inode %u"
+msgstr "se citesc blocurile indirecte din nodul-i %u"
+
+#: e2fsck/pass1.c:2216
+msgid "bad inode map"
+msgstr "harta de noduri-i defectuoase"
+
+#: e2fsck/pass1.c:2256
+msgid "inode in bad block map"
+msgstr "nod-i în harta de blocuri defectuoase"
+
+#: e2fsck/pass1.c:2276
+msgid "imagic inode map"
+msgstr "harta de noduri-i cu „imagic”"
+
+#: e2fsck/pass1.c:2307
+msgid "multiply claimed block map"
+msgstr "harta de blocuri revendicate de mai multe ori"
+
+#: e2fsck/pass1.c:2432
+msgid "ext attr block map"
+msgstr "harta de blocuri de atribute extinse"
+
+#: e2fsck/pass1.c:3729
+#, c-format
+msgid "%6lu(%c): expecting %6lu got phys %6lu (blkcnt %lld)\n"
+msgstr "%6lu(%c): se așteptau %6lu, s-au primit fizic %6lu (număr de blocuri %lld)\n"
+
+#: e2fsck/pass1.c:4150
+msgid "block bitmap"
+msgstr "harta de biți de blocuri"
+
+#: e2fsck/pass1.c:4156
+msgid "inode bitmap"
+msgstr "harta de biți de noduri-i"
+
+#: e2fsck/pass1.c:4162
+msgid "inode table"
+msgstr "tabelul de noduri-i"
+
+#: e2fsck/pass2.c:318
+msgid "Pass 2"
+msgstr "Pasul 2"
+
+#: e2fsck/pass2.c:576
+msgid "NLS is broken."
+msgstr "NLS este defect."
+
+#: e2fsck/pass2.c:1228 e2fsck/pass2.c:1414
+msgid "Can not continue."
+msgstr "Nu se poate continua."
+
+#: e2fsck/pass3.c:77
+msgid "inode done bitmap"
+msgstr "harta de biți a nodurilor-i tratate"
+
+#: e2fsck/pass3.c:86
+msgid "Peak memory"
+msgstr "Vârful de memorie (consumul max. de memorie)"
+
+#: e2fsck/pass3.c:149
+msgid "Pass 3"
+msgstr "Pasul 3"
+
+#: e2fsck/pass3.c:355
+msgid "inode loop detection bitmap"
+msgstr "harta de biți de detectare a buclelor de noduri-i"
+
+#: e2fsck/pass4.c:289
+msgid "Pass 4"
+msgstr "Pasul 4"
+
+#: e2fsck/pass5.c:79
+msgid "Pass 5"
+msgstr "Pasul 5"
+
+#: e2fsck/pass5.c:102
+msgid "check_inode_bitmap_checksum: Memory allocation error"
+msgstr "check_inode_bitmap_checksum: Eroare de alocare a memoriei"
+
+#: e2fsck/pass5.c:156
+msgid "check_block_bitmap_checksum: Memory allocation error"
+msgstr "check_block_bitmap_checksum: Eroare de alocare a memoriei"
+
+#: e2fsck/problem.c:53
+msgid "(no prompt)"
+msgstr "(fără prompt)"
+
+#: e2fsck/problem.c:54
+msgid "Fix"
+msgstr "Reparare"
+
+#: e2fsck/problem.c:55
+msgid "Clear"
+msgstr "Curățare"
+
+#: e2fsck/problem.c:56
+msgid "Relocate"
+msgstr "Realocare"
+
+#: e2fsck/problem.c:57
+msgid "Allocate"
+msgstr "Alocare"
+
+#: e2fsck/problem.c:58
+msgid "Expand"
+msgstr "Extindere"
+
+#: e2fsck/problem.c:59
+msgid "Connect to /lost+found"
+msgstr "Conectare la /lost+found"
+
+#: e2fsck/problem.c:60
+msgid "Create"
+msgstr "Creare"
+
+#: e2fsck/problem.c:61
+msgid "Salvage"
+msgstr "Recuperare"
+
+#: e2fsck/problem.c:62
+msgid "Truncate"
+msgstr "Trunchiere"
+
+#: e2fsck/problem.c:63
+msgid "Clear inode"
+msgstr "Golire nod-i"
+
+#: e2fsck/problem.c:64
+msgid "Abort"
+msgstr "Întrerupere"
+
+#: e2fsck/problem.c:65
+msgid "Split"
+msgstr "Împărțire"
+
+#: e2fsck/problem.c:66
+msgid "Continue"
+msgstr "Continuare"
+
+#: e2fsck/problem.c:67
+msgid "Clone multiply-claimed blocks"
+msgstr "Clonează blocurile revendicate de mai multe ori"
+
+#: e2fsck/problem.c:68
+msgid "Delete file"
+msgstr "Șterge fișierul"
+
+#: e2fsck/problem.c:69
+msgid "Suppress messages"
+msgstr "Suprimare mesaje"
+
+#: e2fsck/problem.c:70
+msgid "Unlink"
+msgstr "Dezlegare(elimină legătura)"
+
+#: e2fsck/problem.c:71
+msgid "Clear HTree index"
+msgstr "Șterge indexul HTree"
+
+#: e2fsck/problem.c:72
+msgid "Recreate"
+msgstr "Recreare"
+
+#: e2fsck/problem.c:73
+msgid "Optimize"
+msgstr "Optimizare"
+
+#: e2fsck/problem.c:74
+msgid "Clear flag"
+msgstr "Șterge fanionul"
+
+#: e2fsck/problem.c:83
+msgid "(NONE)"
+msgstr "(NICIUNUL)"
+
+#: e2fsck/problem.c:84
+msgid "FIXED"
+msgstr "REPARAT"
+
+#: e2fsck/problem.c:85
+msgid "CLEARED"
+msgstr "CURĂȚAT"
+
+#: e2fsck/problem.c:86
+msgid "RELOCATED"
+msgstr "REALOCAT"
+
+#: e2fsck/problem.c:87
+msgid "ALLOCATED"
+msgstr "ALOCAT"
+
+#: e2fsck/problem.c:88
+msgid "EXPANDED"
+msgstr "EXTINS"
+
+#: e2fsck/problem.c:89
+msgid "RECONNECTED"
+msgstr "RECONECTAT"
+
+#: e2fsck/problem.c:90
+msgid "CREATED"
+msgstr "CREAT"
+
+#: e2fsck/problem.c:91
+msgid "SALVAGED"
+msgstr "RECUPERAT"
+
+#: e2fsck/problem.c:92
+msgid "TRUNCATED"
+msgstr "TRUNCHIAT"
+
+#: e2fsck/problem.c:93
+msgid "INODE CLEARED"
+msgstr "NOD-I CURĂȚAT"
+
+#: e2fsck/problem.c:94
+msgid "ABORTED"
+msgstr "ABANDONARE/ÎNTRERUPERE"
+
+#: e2fsck/problem.c:95
+msgid "SPLIT"
+msgstr "ÎMPĂRȚIT"
+
+#: e2fsck/problem.c:96
+msgid "CONTINUING"
+msgstr "SE CONTINUĂ"
+
+#: e2fsck/problem.c:97
+msgid "MULTIPLY-CLAIMED BLOCKS CLONED"
+msgstr "CLONEAZĂ BLOCURILE REVENDICATE DE MAI MULTE ORI"
+
+#: e2fsck/problem.c:98
+msgid "FILE DELETED"
+msgstr "FIȘIER ȘTERS"
+
+#: e2fsck/problem.c:99
+msgid "SUPPRESSED"
+msgstr "SUPRIMAT"
+
+#: e2fsck/problem.c:100
+msgid "UNLINKED"
+msgstr "DEZLEGAT(LEGĂTURĂ ELIMINATĂ)"
+
+#: e2fsck/problem.c:101
+msgid "HTREE INDEX CLEARED"
+msgstr "ȘTERGE INDEXUL HTREE"
+
+#: e2fsck/problem.c:102
+msgid "WILL RECREATE"
+msgstr "SE VA RECREA"
+
+#: e2fsck/problem.c:103
+msgid "WILL OPTIMIZE"
+msgstr "SE VA OPTIMIZA"
+
+#: e2fsck/problem.c:104
+msgid "FLAG CLEARED"
+msgstr "FANION ȘTERS"
+
+#. @-expanded: block bitmap for group %g is not in group. (block %b)\n
+#: e2fsck/problem.c:118
+msgid "@b @B for @g %g is not in @g. (@b %b)\n"
+msgstr "harta de biți a blocului pentru grupul %g nu este în grup. (blocul %b)\n"
+
+#. @-expanded: inode bitmap for group %g is not in group. (block %b)\n
+#: e2fsck/problem.c:122
+msgid "@i @B for @g %g is not in @g. (@b %b)\n"
+msgstr "harta de biți a nodului-i pentru grupul %g nu este în grup. (blocul %b)\n"
+
+#. @-expanded: inode table for group %g is not in group. (block %b)\n
+#. @-expanded: WARNING: SEVERE DATA LOSS POSSIBLE.\n
+#: e2fsck/problem.c:127
+msgid ""
+"@i table for @g %g is not in @g. (@b %b)\n"
+"WARNING: SEVERE DATA LOSS POSSIBLE.\n"
+msgstr ""
+"tabelul nodului-i pentru grupul %g nu este în grup. (blocul %b)\n"
+"AVERTISMENT: SUNT POSIBILE PIERDERI GRAVE DE DATE.\n"
+
+# R-GC, scrie:
+# „@v” expandat = dispozitiv
+#. @-expanded: \n
+#. @-expanded: The superblock could not be read or does not describe a valid ext2/ext3/ext4\n
+#. @-expanded: filesystem. If the device is valid and it really contains an ext2/ext3/ext4\n
+#. @-expanded: filesystem (and not swap or ufs or something else), then the superblock\n
+#. @-expanded: is corrupt, and you might try running e2fsck with an alternate superblock:\n
+#. @-expanded: e2fsck -b 8193 <device>\n
+#. @-expanded: or\n
+#. @-expanded: e2fsck -b 32768 <device>\n
+#. @-expanded: \n
+#: e2fsck/problem.c:133
+msgid ""
+"\n"
+"The @S could not be read or does not describe a valid ext2/ext3/ext4\n"
+"@f. If the @v is valid and it really contains an ext2/ext3/ext4\n"
+"@f (and not swap or ufs or something else), then the @S\n"
+"is corrupt, and you might try running e2fsck with an alternate @S:\n"
+" e2fsck -b 8193 <@v>\n"
+" or\n"
+" e2fsck -b 32768 <@v>\n"
+"\n"
+msgstr ""
+"\n"
+"Super-blocul nu a putut fi citit sau nu descrie un sistem de fișiere\n"
+"ext2/ext3/ext4 valid. Dacă dispozitivul este valid și conține într-adevăr\n"
+"un sistem de fișiere ext2/ext3/ext4 (și nu swap sau ufs sau altceva), atunci\n"
+"super-blocul este corupt și puteți încerca să rulați «e2fsck» cu un super-bloc\n"
+"alternativ:\n"
+" «e2fsck -b 8193 <@v>»\n"
+" sau\n"
+" «e2fsck -b 32768 <@v>»\n"
+"\n"
+
+#. @-expanded: The filesystem size (according to the superblock) is %b blocks\n
+#. @-expanded: The physical size of the device is %c blocks\n
+#. @-expanded: Either the superblock or the partition table is likely to be corrupt!\n
+#: e2fsck/problem.c:144
+msgid ""
+"The @f size (according to the @S) is %b @bs\n"
+"The physical size of the @v is %c @bs\n"
+"Either the @S or the partition table is likely to be corrupt!\n"
+msgstr ""
+"Dimensiunea sistemului de fișiere (conform super-blocului) este de %b blocuri.\n"
+"Dimensiunea fizică a dispozitivului este de %c blocuri.\n"
+"Este posibil ca fie super-blocul, fie tabelul de partiții să fie corupt!\n"
+
+#. @-expanded: superblock block_size = %b, fragsize = %c.\n
+#. @-expanded: This version of e2fsck does not support fragment sizes different\n
+#. @-expanded: from the block size.\n
+#: e2fsck/problem.c:151
+msgid ""
+"@S @b_size = %b, fragsize = %c.\n"
+"This version of e2fsck does not support fragment sizes different\n"
+"from the @b size.\n"
+msgstr ""
+"În super-bloc dimensiunea blocului = %b, dimensiunea fragmentului = %c.\n"
+"Această versiune de «e2fsck» nu acceptă dimensiuni ale fragmentelor diferite\n"
+"de dimensiunea blocului.\n"
+
+#. @-expanded: superblock blocks_per_group = %b, should have been %c\n
+#: e2fsck/problem.c:158
+msgid "@S @bs_per_group = %b, should have been %c\n"
+msgstr "super-blocul blocks_per_group = %b, ar fi trebuit să fie %c\n"
+
+#. @-expanded: superblock first_data_block = %b, should have been %c\n
+#: e2fsck/problem.c:163
+msgid "@S first_data_@b = %b, should have been %c\n"
+msgstr "super-blocul first_data_block = %b, ar fi trebuit să fie %c\n"
+
+#. @-expanded: filesystem did not have a UUID; generating one.\n
+#. @-expanded: \n
+#: e2fsck/problem.c:168
+msgid ""
+"@f did not have a UUID; generating one.\n"
+"\n"
+msgstr ""
+"sistemul de fișiere nu avea un UUID; se generează unul.\n"
+"\n"
+
+#: e2fsck/problem.c:174
+#, no-c-format
+msgid ""
+"Note: if several inode or block bitmap blocks or part\n"
+"of the inode table require relocation, you may wish to try\n"
+"running e2fsck with the '-b %S' option first. The problem\n"
+"may lie only with the primary block group descriptors, and\n"
+"the backup block group descriptors may be OK.\n"
+"\n"
+msgstr ""
+"Notă: dacă mai multe blocuri de hărți de biți sau blocuri\n"
+"de noduri-i sau o parte din tabelul de noduri-i necesită\n"
+"realocare, poate doriți să încercați mai întâi să rulați\n"
+"«e2fsck» cu opțiunea „-b %S”. Este posibil ca problema\n"
+"să se refere doar la descriptorii grupurilor de blocuri\n"
+"primare, iar descriptorii grupurilor de blocuri de rezervă\n"
+"să fie în regulă.\n"
+"\n"
+
+#. @-expanded: Corruption found in superblock. (%s = %N).\n
+#: e2fsck/problem.c:183
+msgid "Corruption found in @S. (%s = %N).\n"
+msgstr "Corupție găsită în super-bloc. (%s = %N).\n"
+
+#. @-expanded: Error determining size of the physical device: %m\n
+#: e2fsck/problem.c:189
+#, no-c-format
+msgid "Error determining size of the physical @v: %m\n"
+msgstr "Eroare la determinarea dimensiunii dispozitivului fizic: %m\n"
+
+#. @-expanded: inode count in superblock is %i, should be %j.\n
+#: e2fsck/problem.c:194
+msgid "@i count in @S is %i, @s %j.\n"
+msgstr "numărul de noduri-i din super-bloc este %i, ar trebui să fie %j.\n"
+
+#: e2fsck/problem.c:198
+msgid "The Hurd does not support the filetype feature.\n"
+msgstr "Hurd nu are implementată caracteristica de determinare a tipului de fișier.\n"
+
+#. @-expanded: superblock has an invalid journal (inode %i).\n
+#: e2fsck/problem.c:204
+#, no-c-format
+msgid "@S has an @n @j (@i %i).\n"
+msgstr "super-blocul are un jurnal nevalid (nodul-i %i).\n"
+
+#. @-expanded: External journal has multiple filesystem users (unsupported).\n
+#: e2fsck/problem.c:209
+msgid "External @j has multiple @f users (unsupported).\n"
+msgstr "Jurnalul extern are mai mulți utilizatori ai sistemului de fișiere (caracteristică neimplementată).\n"
+
+#. @-expanded: Can't find external journal\n
+#: e2fsck/problem.c:214
+msgid "Can't find external @j\n"
+msgstr "Nu se poate găsi jurnalul extern\n"
+
+#. @-expanded: External journal has bad superblock\n
+#: e2fsck/problem.c:219
+msgid "External @j has bad @S\n"
+msgstr "Jurnalul extern are un super-bloc defectuos\n"
+
+#. @-expanded: External journal does not support this filesystem\n
+#: e2fsck/problem.c:224
+msgid "External @j does not support this @f\n"
+msgstr "Jurnalul extern nu acceptă acest sistem de fișiere\n"
+
+#. @-expanded: filesystem journal superblock is unknown type %N (unsupported).\n
+#. @-expanded: It is likely that your copy of e2fsck is old and/or doesn't support this journal
+#. @-expanded: format.\n
+#. @-expanded: It is also possible the journal superblock is corrupt.\n
+#: e2fsck/problem.c:229
+msgid ""
+"@f @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 also possible the @j @S is corrupt.\n"
+msgstr ""
+"super-blocul jurnalului sistemului de fișiere este de tip necunoscut %N (neimplementat).\n"
+"Este posibil ca această copie de «e2fsck» să fie veche și/sau să nu admită acest format de jurnal.\n"
+"De asemenea, este posibil ca super-blocul de jurnal să fie corupt.\n"
+
+#. @-expanded: journal superblock is corrupt.\n
+#: e2fsck/problem.c:238
+msgid "@j @S is corrupt.\n"
+msgstr "super-blocul jurnalului este corupt.\n"
+
+#. @-expanded: superblock has_journal flag is clear, but a journal is present.\n
+#: e2fsck/problem.c:243
+msgid "@S has_@j flag is clear, but a @j is present.\n"
+msgstr "fanionul superblocului has_journal este dezactivat, dar este prezent un jurnal.\n"
+
+#. @-expanded: superblock needs_recovery flag is set, but no journal is present.\n
+#: e2fsck/problem.c:248
+msgid "@S needs_recovery flag is set, but no @j is present.\n"
+msgstr "fanionul super-blocului needs_recovery este activat, dar nu este prezent niciun jurnal.\n"
+
+#. @-expanded: superblock needs_recovery flag is clear, but journal has data.\n
+#: e2fsck/problem.c:253
+msgid "@S needs_recovery flag is clear, but @j has data.\n"
+msgstr "fanionul superblocului needs_recovery este dezactivat, dar jurnalul are date.\n"
+
+#. @-expanded: Clear journal
+#: e2fsck/problem.c:258
+msgid "Clear @j"
+msgstr "Curățare jurnal"
+
+#. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem.
+#: e2fsck/problem.c:263 e2fsck/problem.c:799
+msgid "@f has feature flag(s) set, but is a revision 0 @f. "
+msgstr "sistemul de fișiere are fanioanele de caracteristici activate, dar este un sistem de fișiere cu revizuirea 0. "
+
+#. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n
+#: e2fsck/problem.c:268
+msgid "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n"
+msgstr "%s nod-i orfan %i (uid=%Iu, gid=%Ig, mod=%Im, dimensiune=%Is)\n"
+
+#. @-expanded: illegal %B (%b) found in orphaned inode %i.\n
+#: e2fsck/problem.c:273
+msgid "@I %B (%b) found in @o @i %i.\n"
+msgstr "%B ilegal (%b) găsit în nodul-i orfan %i.\n"
+
+#. @-expanded: Already cleared %B (%b) found in orphaned inode %i.\n
+#: e2fsck/problem.c:278
+msgid "Already cleared %B (%b) found in @o @i %i.\n"
+msgstr "A fost deja șters %B (%b) găsit în nodul-i orfan %i.\n"
+
+#. @-expanded: illegal orphaned inode %i in superblock.\n
+#: e2fsck/problem.c:284
+#, no-c-format
+msgid "@I @o @i %i in @S.\n"
+msgstr "nod-i orfan ilegal %i în super-bloc.\n"
+
+#. @-expanded: illegal inode %i in orphaned inode list.\n
+#: e2fsck/problem.c:290
+#, no-c-format
+msgid "@I @i %i in @o @i list.\n"
+msgstr "nod-i ilegal %i în lista de noduri-i orfane.\n"
+
+#. @-expanded: journal superblock has an unknown read-only feature flag set.\n
+#: e2fsck/problem.c:295
+msgid "@j @S has an unknown read-only feature flag set.\n"
+msgstr "super-blocul de jurnal are definit un fanion cu caracteristică de numai-pentru-citire necunoscut.\n"
+
+#. @-expanded: journal superblock has an unknown incompatible feature flag set.\n
+#: e2fsck/problem.c:300
+msgid "@j @S has an unknown incompatible feature flag set.\n"
+msgstr "super-blocul de jurnal are definit un fanion de caracteristică incompatibilă necunoscută.\n"
+
+#. @-expanded: journal version not supported by this e2fsck.\n
+#: e2fsck/problem.c:305
+msgid "@j version not supported by this e2fsck.\n"
+msgstr "această versiune de jurnal nu este acceptată în versiunea curentă a «e2fsck».\n"
+
+#. @-expanded: Moving journal from /%s to hidden inode.\n
+#. @-expanded: \n
+#: e2fsck/problem.c:311
+#, no-c-format
+msgid ""
+"Moving @j from /%s to hidden @i.\n"
+"\n"
+msgstr ""
+"Se mută jurnalul din /%s în nodul-i ascuns.\n"
+"\n"
+
+#. @-expanded: Error moving journal: %m\n
+#. @-expanded: \n
+#: e2fsck/problem.c:317
+#, no-c-format
+msgid ""
+"Error moving @j: %m\n"
+"\n"
+msgstr "Eroare la mutarea jurnalului: %m\n"
+
+#. @-expanded: Found invalid V2 journal superblock fields (from V1 journal).\n
+#. @-expanded: Clearing fields beyond the V1 journal superblock...\n
+#. @-expanded: \n
+#: e2fsck/problem.c:322
+msgid ""
+"Found @n V2 @j @S fields (from V1 @j).\n"
+"Clearing fields beyond the V1 @j @S...\n"
+"\n"
+msgstr ""
+"S-au găsit câmpuri nevalide în super-blocul de jurnal V2 (din jurnalul V1).\n"
+"Se șterg câmpurile dincolo de super-blocul de jurnal V1...\n"
+"\n"
+
+#. @-expanded: Run journal anyway
+#: e2fsck/problem.c:328
+msgid "Run @j anyway"
+msgstr "Se execută totuși jurnalul"
+
+#. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n
+#: e2fsck/problem.c:333
+msgid "Recovery flag not set in backup @S, so running @j anyway.\n"
+msgstr "Fanionul de recuperare nu este activat în super-blocul de rezervă, așa că se execută oricum jurnalul.\n"
+
+#. @-expanded: Backing up journal inode block information.\n
+#. @-expanded: \n
+#: e2fsck/problem.c:338
+msgid ""
+"Backing up @j @i @b information.\n"
+"\n"
+msgstr ""
+"Se face copia de rezervă a informațiilor din blocul nodului-i al jurnalului.\n"
+"\n"
+
+#. @-expanded: filesystem does not have resize_inode enabled, but s_reserved_gdt_blocks\n
+#. @-expanded: is %N; should be zero.
+#: e2fsck/problem.c:344
+msgid ""
+"@f does not have resize_@i enabled, but s_reserved_gdt_@bs\n"
+"is %N; @s zero. "
+msgstr ""
+"sistemul de fișiere nu are resize_inode activat, dar s_reserved_gdt_blocks\n"
+"este %N; ar trebui să fie zero. "
+
+#. @-expanded: Resize_inode not enabled, but the resize inode is non-zero.
+#: e2fsck/problem.c:350
+msgid "Resize_@i not enabled, but the resize @i is non-zero. "
+msgstr "Resize_inode nu este activat, dar redimensionarea nodului-i este diferită de zero. "
+
+#. @-expanded: Resize inode not valid.
+#: e2fsck/problem.c:355
+msgid "Resize @i not valid. "
+msgstr "Redimensionarea nodului-i nu este validă. "
+
+#. @-expanded: superblock last mount time (%t,\n
+#. @-expanded: \tnow = %T) is in the future.\n
+#: e2fsck/problem.c:360
+msgid ""
+"@S last mount time (%t,\n"
+"\tnow = %T) is in the future.\n"
+msgstr ""
+"data ultimei montări a super-blocului (%t,\n"
+"\tacum = %T) este în viitor.\n"
+
+#. @-expanded: superblock last write time (%t,\n
+#. @-expanded: \tnow = %T) is in the future.\n
+#: e2fsck/problem.c:365
+msgid ""
+"@S last write time (%t,\n"
+"\tnow = %T) is in the future.\n"
+msgstr ""
+"data ultimei scrieri a super-blocului (%t,\n"
+"\tacum = %T) este în viitor.\n"
+
+#. @-expanded: superblock hint for external superblock should be %X.
+#: e2fsck/problem.c:371
+#, no-c-format
+msgid "@S hint for external superblock @s %X. "
+msgstr "indicația super-blocului pentru super-blocul extern ar trebui să fie %X. "
+
+#. @-expanded: Adding dirhash hint to filesystem.\n
+#. @-expanded: \n
+#: e2fsck/problem.c:376
+msgid ""
+"Adding dirhash hint to @f.\n"
+"\n"
+msgstr "Se adaugă indicația „dirhash” la sistemul de fișiere.\n"
+
+#. @-expanded: group descriptor %g checksum is %04x, should be %04y.
+#: e2fsck/problem.c:381
+msgid "@g descriptor %g checksum is %04x, should be %04y. "
+msgstr "suma de control a descriptorului de grup %g este %04x, ar trebui să fie %04y. "
+
+#. @-expanded: group descriptor %g marked uninitialized without feature set.\n
+#: e2fsck/problem.c:387
+#, no-c-format
+msgid "@g descriptor %g marked uninitialized without feature set.\n"
+msgstr "descriptorul de grup %g a fost marcat ca neinițializat fără a avea activată caracteristica.\n"
+
+#. @-expanded: group descriptor %g has invalid unused inodes count %b.
+#: e2fsck/problem.c:392
+msgid "@g descriptor %g has invalid unused inodes count %b. "
+msgstr "descriptorul de grup %g are un număr nevalid de noduri-i neutilizate %b. "
+
+#. @-expanded: Last group block bitmap uninitialized.
+#: e2fsck/problem.c:397
+msgid "Last @g @b @B uninitialized. "
+msgstr "Harta de biți a ultimului bloc al grupului nu este inițializată. "
+
+#: e2fsck/problem.c:403
+#, no-c-format
+msgid "Journal transaction %i was corrupt, replay was aborted.\n"
+msgstr "Tranzacția de jurnal %i a fost coruptă, reluarea a fost întreruptă.\n"
+
+#: e2fsck/problem.c:408
+msgid "The test_fs flag is set (and ext4 is available). "
+msgstr "Fanionul test_fs este activat (și ext4 este disponibil). "
+
+#. @-expanded: superblock last mount time is in the future.\n
+#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
+#. @-expanded: set)\n
+#: e2fsck/problem.c:413
+msgid ""
+"@S last mount time is in the future.\n"
+"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
+msgstr ""
+"ora-data ultimei montări a super-blocului este în viitor.\n"
+"\t(cu mai puțin de o zi, probabil din cauza faptului că ceasul hardware a fost fixat incorect)\n"
+
+#. @-expanded: superblock last write time is in the future.\n
+#. @-expanded: \t(by less than a day, probably due to the hardware clock being incorrectly
+#. @-expanded: set)\n
+#: e2fsck/problem.c:419
+msgid ""
+"@S last write time is in the future.\n"
+"\t(by less than a day, probably due to the hardware clock being incorrectly set)\n"
+msgstr ""
+"ultima oră-dată de scriere a super-blocului este în viitor.\n"
+"\t(cu mai puțin de o zi, probabil din cauza faptului că ceasul hardware a fost fixat incorect)\n"
+
+#. @-expanded: One or more block group descriptor checksums are invalid.
+#: e2fsck/problem.c:425
+msgid "One or more @b @g descriptor checksums are invalid. "
+msgstr "Una sau mai multe sume de control ale descriptorilor de grupuri de blocuri nu sunt valide. "
+
+#. @-expanded: Setting free inodes count to %j (was %i)\n
+#: e2fsck/problem.c:430
+msgid "Setting free @is count to %j (was %i)\n"
+msgstr "Se stabilește numărul de noduri-i libere la %j (era %i)\n"
+
+#. @-expanded: Setting free blocks count to %c (was %b)\n
+#: e2fsck/problem.c:435
+msgid "Setting free @bs count to %c (was %b)\n"
+msgstr "Se stabilește numărul de blocuri libere la %c (era %b)\n"
+
+#. @-expanded: Hiding %U quota inode %i (%Q).\n
+#: e2fsck/problem.c:440
+msgid "Hiding %U @q @i %i (%Q).\n"
+msgstr "Se ascunde %U cotă din nodul-i %i (%Q).\n"
+
+#. @-expanded: superblock has invalid MMP block.
+#: e2fsck/problem.c:445
+msgid "@S has invalid MMP block. "
+msgstr "super-blocul are un bloc MMP nevalid. "
+
+#. @-expanded: superblock has invalid MMP magic.
+#: e2fsck/problem.c:450
+msgid "@S has invalid MMP magic. "
+msgstr "super-blocul are un număr magic MMP nevalid. "
+
+#: e2fsck/problem.c:456
+#, no-c-format
+msgid "ext2fs_open2: %m\n"
+msgstr "ext2fs_open2: %m\n"
+
+#: e2fsck/problem.c:462
+#, no-c-format
+msgid "ext2fs_check_desc: %m\n"
+msgstr "ext2fs_check_desc: %m\n"
+
+#. @-expanded: superblock metadata_csum supersedes uninit_bg; both feature bits cannot be set
+#. @-expanded: simultaneously.
+#: e2fsck/problem.c:468
+msgid "@S metadata_csum supersedes uninit_bg; both feature bits cannot be set simultaneously."
+msgstr "metadata_csum înlocuiește uninit_bg al super-blocului; ambii biți de caracteristică nu pot fi activați simultan."
+
+#. @-expanded: superblock MMP block checksum does not match.
+#: e2fsck/problem.c:474
+msgid "@S MMP @b checksum does not match. "
+msgstr "suma de control a blocului MMP al super-blocului nu se potrivește. "
+
+#. @-expanded: superblock 64bit filesystem needs extents to access the whole disk.
+#: e2fsck/problem.c:479
+msgid "@S 64bit @f needs extents to access the whole disk. "
+msgstr "super-blocul sistemului de fișiere de 64 de biți are nevoie de „extents” pentru a accesa întregul disc. "
+
+#: e2fsck/problem.c:484
+msgid "First_meta_bg is too big. (%N, max value %g). "
+msgstr "First_meta_bg este prea mare. (%N, valoare maximă %g). "
+
+#. @-expanded: External journal superblock checksum does not match superblock.
+#: e2fsck/problem.c:489
+msgid "External @j @S checksum does not match @S. "
+msgstr "Suma de control a super-blocului din jurnalul extern nu se potrivește cu cea a super-blocului. "
+
+#. @-expanded: superblock metadata_csum_seed is not necessary without metadata_csum.
+#: e2fsck/problem.c:494
+msgid "@S metadata_csum_seed is not necessary without metadata_csum."
+msgstr "metadata_csum_seed al super-blocului nu este necesar fără metadata_csum."
+
+#: e2fsck/problem.c:500
+#, no-c-format
+msgid "Error initializing quota context in support library: %m\n"
+msgstr "Eroare la inițializarea contextului cotelor în biblioteca de suport: %m\n"
+
+#. @-expanded: Bad required extra isize in superblock (%N).
+#: e2fsck/problem.c:505
+msgid "Bad required extra isize in @S (%N). "
+msgstr "Dimensiune-i suplimentară necesară incorectă în super-bloc (%N). "
+
+#. @-expanded: Bad desired extra isize in superblock (%N).
+#: e2fsck/problem.c:510
+msgid "Bad desired extra isize in @S (%N). "
+msgstr "Dimensiune-i suplimentară dorită incorectă în super-bloc (%N). "
+
+#. @-expanded: Invalid %U quota inode %i.
+#: e2fsck/problem.c:515
+msgid "Invalid %U @q @i %i. "
+msgstr "Cota %U a nodului-i %i nu este validă. "
+
+#. @-expanded: superblock would have too many inodes (%N).\n
+#: e2fsck/problem.c:520
+msgid "@S would have too many inodes (%N).\n"
+msgstr "super-blocul ar avea prea multe noduri-i (%N).\n"
+
+#. @-expanded: Resize_inode and meta_bg features are enabled. Those features are\n
+#. @-expanded: not compatible. Resize inode should be disabled.
+#: e2fsck/problem.c:525
+msgid ""
+"Resize_@i and meta_bg features are enabled. Those features are\n"
+"not compatible. Resize @i should be disabled. "
+msgstr ""
+"Caracteristicile „resize_inode” și „meta_bg” sunt activate. Aceste caracteristici\n"
+"nu sunt compatibile. „resize_inode” ar trebui să fie dezactivată. "
+
+#. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n
+#: e2fsck/problem.c:533
+msgid "Pass 1: Checking @is, @bs, and sizes\n"
+msgstr "Pasul 1: Se verifică nodurile-i, blocurile și dimensiunile\n"
+
+#. @-expanded: root inode is not a directory.
+#: e2fsck/problem.c:537
+msgid "@r is not a @d. "
+msgstr "nodul-i rădăcină nu este un director. "
+
+#. @-expanded: root inode has dtime set (probably due to old mke2fs).
+#: e2fsck/problem.c:542
+msgid "@r has dtime set (probably due to old mke2fs). "
+msgstr "nodul-i rădăcină are dtime definit (probabil din cauza vechiului «mke2fs»). "
+
+#. @-expanded: Reserved inode %i (%Q) has invalid mode.
+#: e2fsck/problem.c:547
+msgid "Reserved @i %i (%Q) has @n mode. "
+msgstr "Nodul-i rezervat %i (%Q) are un mod nevalid. "
+
+#. @-expanded: deleted inode %i has zero dtime.
+#: e2fsck/problem.c:553
+#, no-c-format
+msgid "@D @i %i has zero dtime. "
+msgstr "nodul-i șters %i are dtime zero. "
+
+#. @-expanded: inode %i is in use, but has dtime set.
+#: e2fsck/problem.c:559
+#, no-c-format
+msgid "@i %i is in use, but has dtime set. "
+msgstr "nodul-i %i este în uz, dar are dtime definit. "
+
+#. @-expanded: inode %i is a zero-length directory.
+#: e2fsck/problem.c:565
+#, no-c-format
+msgid "@i %i is a @z @d. "
+msgstr "nodul-i %i este un director cu lungimea zero. "
+
+#. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n
+#: e2fsck/problem.c:570
+msgid "@g %g's @b @B at %b @C.\n"
+msgstr "harta de biți a blocurilor din grupul %g la adresa %b intră în conflict cu un alt bloc din sistemul de fișiere.\n"
+
+#. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n
+#: e2fsck/problem.c:575
+msgid "@g %g's @i @B at %b @C.\n"
+msgstr "harta de biți a nodului-i al grupului %g la adresa %b intră în conflict cu un alt bloc al sistemului de fișiere.\n"
+
+#. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n
+#: e2fsck/problem.c:580
+msgid "@g %g's @i table at %b @C.\n"
+msgstr "tabelul de noduri-i al grupului %g la adresa %b intră în conflict cu un alt bloc al sistemului de fișiere.\n"
+
+#. @-expanded: group %g's block bitmap (%b) is bad.
+#: e2fsck/problem.c:585
+msgid "@g %g's @b @B (%b) is bad. "
+msgstr "harta de biți a blocului grupului %g (%b) este incorectă. "
+
+#. @-expanded: group %g's inode bitmap (%b) is bad.
+#: e2fsck/problem.c:590
+msgid "@g %g's @i @B (%b) is bad. "
+msgstr "harta de biți a nodului-i al grupului %g (%b) este incorectă. "
+
+#. @-expanded: inode %i, i_size is %Is, should be %N.
+#: e2fsck/problem.c:595
+msgid "@i %i, i_size is %Is, @s %N. "
+msgstr "nodul-i %i, i_size este %Is, ar trebui să fie %N. "
+
+#. @-expanded: inode %i, i_blocks is %Ib, should be %N.
+#: e2fsck/problem.c:600
+msgid "@i %i, i_@bs is %Ib, @s %N. "
+msgstr "nodul-i %i, i_blocks este %Ib, ar trebui să fie %N. "
+
+#. @-expanded: illegal %B (%b) in inode %i.
+#: e2fsck/problem.c:605
+msgid "@I %B (%b) in @i %i. "
+msgstr "ilegal %B (%b) în nodul-i %i. "
+
+#. @-expanded: %B (%b) overlaps filesystem metadata in inode %i.
+#: e2fsck/problem.c:610
+msgid "%B (%b) overlaps @f metadata in @i %i. "
+msgstr "%B (%b) se suprapune metadatelor sistemului de fișiere în nodul-i %i. "
+
+#. @-expanded: inode %i has illegal block(s).
+#: e2fsck/problem.c:616
+#, no-c-format
+msgid "@i %i has illegal @b(s). "
+msgstr "nodul-i %i are unul sau mai multe blocuri ilegale. "
+
+#. @-expanded: Too many illegal blocks in inode %i.\n
+#: e2fsck/problem.c:622
+#, no-c-format
+msgid "Too many illegal @bs in @i %i.\n"
+msgstr "Prea multe blocuri ilegale în nodul-i %i.\n"
+
+#. @-expanded: illegal %B (%b) in bad block inode.
+#: e2fsck/problem.c:627
+msgid "@I %B (%b) in bad @b @i. "
+msgstr "ilegal %B (%b) în nodul-i de blocuri defectuoase. "
+
+#. @-expanded: Bad block inode has illegal block(s).
+#: e2fsck/problem.c:632
+msgid "Bad @b @i has illegal @b(s). "
+msgstr "Nodul-i de blocuri defectuoase are unul sau mai multe blocuri ilegale. "
+
+#. @-expanded: Duplicate or bad block in use!\n
+#: e2fsck/problem.c:637
+msgid "Duplicate or bad @b in use!\n"
+msgstr "Bloc duplicat sau defectuos în uz!\n"
+
+#. @-expanded: Bad block %b used as bad block inode indirect block.
+#: e2fsck/problem.c:642
+msgid "Bad @b %b used as bad @b @i indirect @b. "
+msgstr "Blocul defectuos %b utilizat ca bloc indirect de nod-i de bloc defectuos. "
+
+#. @-expanded: \n
+#. @-expanded: The bad block inode has probably been corrupted. You probably\n
+#. @-expanded: should stop now and run e2fsck -c to scan for bad blocks\n
+#. @-expanded: in the filesystem.\n
+#: e2fsck/problem.c:647
+msgid ""
+"\n"
+"The bad @b @i has probably been corrupted. You probably\n"
+"should stop now and run e2fsck -c to scan for bad blocks\n"
+"in the @f.\n"
+msgstr ""
+"\n"
+"Probabil că nodul-i al blocului defectuos a fost corupt. Probabil că\n"
+"ar trebui să vă opriți acum și să rulați «e2fsck -c» pentru a verifica\n"
+"dacă există blocuri defecte în sistemul de fișiere.\n"
+
+#. @-expanded: \n
+#. @-expanded: If the block is really bad, the filesystem can not be fixed.\n
+#: e2fsck/problem.c:654
+msgid ""
+"\n"
+"If the @b is really bad, the @f can not be fixed.\n"
+msgstr ""
+"\n"
+"În cazul în care blocul este foarte deteriorat, sistemul de fișiere nu poate fi reparat.\n"
+
+#. @-expanded: You can remove this block from the bad block list and hope\n
+#. @-expanded: that the block is really OK. But there are no guarantees.\n
+#. @-expanded: \n
+#: e2fsck/problem.c:659
+msgid ""
+"You can remove this @b from the bad @b list and hope\n"
+"that the @b is really OK. But there are no guarantees.\n"
+"\n"
+msgstr ""
+"Puteți elimina acest bloc din lista de blocuri defecte și să sperați\n"
+"că blocul este într-adevăr în regulă. Dar nu există garanții.\n"
+"\n"
+
+#. @-expanded: The primary superblock (%b) is on the bad block list.\n
+#: e2fsck/problem.c:665
+msgid "The primary @S (%b) is on the bad @b list.\n"
+msgstr "Super-blocul primar (%b) se află în lista de blocuri defectuoase.\n"
+
+#. @-expanded: Block %b in the primary group descriptors is on the bad block list\n
+#: e2fsck/problem.c:670
+msgid "Block %b in the primary @g descriptors is on the bad @b list\n"
+msgstr "Blocul %b din descriptorii grupului primar se află în lista de blocuri defectuoase\n"
+
+#. @-expanded: Warning: Group %g's superblock (%b) is bad.\n
+#: e2fsck/problem.c:676
+msgid "Warning: Group %g's @S (%b) is bad.\n"
+msgstr "Avertisment: Super-blocul (%b) al grupului %g este defectuos.\n"
+
+#. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n
+#: e2fsck/problem.c:682
+msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n"
+msgstr "Avertisment: Copia grupului %g a descriptorilor de grup are un bloc defectuos (%b).\n"
+
+#. @-expanded: Programming error? block #%b claimed for no reason in process_bad_block.\n
+#: e2fsck/problem.c:688
+msgid "Programming error? @b #%b claimed for no reason in process_bad_@b.\n"
+msgstr "Eroare de programare? blocul #%b a fost revendicat fără motiv în process_bad_block.\n"
+
+#. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n
+#: e2fsck/problem.c:694
+msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n"
+msgstr "eroare la alocarea a %N bloc(uri) contiguu(e) în grupul de blocuri %g pentru %s: %m\n"
+
+#. @-expanded: error allocating block buffer for relocating %s\n
+#: e2fsck/problem.c:700
+#, no-c-format
+msgid "@A @b buffer for relocating %s\n"
+msgstr "eroare la alocarea memoriei tampon de bloc pentru realocarea %s\n"
+
+#. @-expanded: Relocating group %g's %s from %b to %c...\n
+#: e2fsck/problem.c:705
+msgid "Relocating @g %g's %s from %b to %c...\n"
+msgstr "Se realocă grupul %g %s de la %b la %c...\n"
+
+#. @-expanded: Relocating group %g's %s to %c...\n
+#: e2fsck/problem.c:711
+#, no-c-format
+msgid "Relocating @g %g's %s to %c...\n"
+msgstr "Se realocă grupul %g %s la %c...\n"
+
+#. @-expanded: Warning: could not read block %b of %s: %m\n
+#: e2fsck/problem.c:716
+msgid "Warning: could not read @b %b of %s: %m\n"
+msgstr "Avertisment: nu s-a putut citi blocul %b din %s: %m\n"
+
+#. @-expanded: Warning: could not write block %b for %s: %m\n
+#: e2fsck/problem.c:721
+msgid "Warning: could not write @b %b for %s: %m\n"
+msgstr "Avertisment: nu s-a putut scrie blocul %b pentru %s: %m\n"
+
+#. @-expanded: error allocating inode bitmap (%N): %m\n
+#: e2fsck/problem.c:726 e2fsck/problem.c:1936
+msgid "@A @i @B (%N): %m\n"
+msgstr "eroare la alocarea hărții de biți a nodului-i (%N): %m\n"
+
+#. @-expanded: error allocating block bitmap (%N): %m\n
+#: e2fsck/problem.c:731
+msgid "@A @b @B (%N): %m\n"
+msgstr "eroare la alocarea hărții de biți a blocului (%N): %m\n"
+
+# R-GC, scrie:
+# este posibil ca mesajul „real”
+# în engleză, să fie:
+# „error allocating inode link count information: %m”;
+# ținînd cont de comentariul lăsat de autori în antetul fișierului:
+# „%Il <inode> -> i_links_count”. și deci
+# traducerea să fie:
+# „eroare la alocarea informațiilor privind numărul de legături din nodurile-i: %m”
+# *****
+# Rămîne de văzut... la rodare!
+#. @-expanded: error allocating icount link information: %m\n
+#: e2fsck/problem.c:737
+#, no-c-format
+msgid "@A icount link information: %m\n"
+msgstr "eroare la alocarea informațiilor despre legătura icount: %m\n"
+
+#. @-expanded: error allocating directory block array: %m\n
+#: e2fsck/problem.c:743
+#, no-c-format
+msgid "@A @d @b array: %m\n"
+msgstr "eroare la alocarea matricei de blocuri de directoare: %m\n"
+
+#. @-expanded: Error while scanning inodes (%i): %m\n
+#: e2fsck/problem.c:749
+#, no-c-format
+msgid "Error while scanning @is (%i): %m\n"
+msgstr "Eroare în timpul scanării nodurilor-i (%i): %m\n"
+
+#. @-expanded: Error while iterating over blocks in inode %i: %m\n
+#: e2fsck/problem.c:755
+#, no-c-format
+msgid "Error while iterating over @bs in @i %i: %m\n"
+msgstr "Eroare în timpul iterației peste blocurile din nodul-i %i: %m\n"
+
+#. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n
+#: e2fsck/problem.c:760
+msgid "Error storing @i count information (@i=%i, count=%N): %m\n"
+msgstr "Eroare la stocarea informațiilor privind numărul de noduri-i (noduri-i=%i, contorizare=%N): %m\n"
+
+#. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n
+#: e2fsck/problem.c:765
+msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n"
+msgstr "Eroare la stocarea informațiilor despre blocul de directoare (nod-i=%i, bloc=%b, num=%N): %m\n"
+
+#. @-expanded: Error reading inode %i: %m\n
+#: e2fsck/problem.c:772
+#, no-c-format
+msgid "Error reading @i %i: %m\n"
+msgstr "Eroare la citirea nodului-i %i: %m\n"
+
+#. @-expanded: inode %i has imagic flag set.
+#: e2fsck/problem.c:781
+#, no-c-format
+msgid "@i %i has imagic flag set. "
+msgstr "nodul-i %i are activat fanionul imagic. "
+
+#. @-expanded: Special (device/socket/fifo/symlink) file (inode %i) has immutable\n
+#. @-expanded: or append-only flag set.
+#: e2fsck/problem.c:787
+#, no-c-format
+msgid ""
+"Special (@v/socket/fifo/symlink) file (@i %i) has immutable\n"
+"or append-only flag set. "
+msgstr ""
+"Fișierul special (dispozitiv/soclu/fifo/legătură-simbolică) (nodul-i %i)\n"
+"are activat fanionul „immutable” (imuabil) sau „append-only” (doar-adăugare). "
+
+#. @-expanded: Special (device/socket/fifo) inode %i has non-zero size.
+#: e2fsck/problem.c:794
+#, no-c-format
+msgid "Special (@v/socket/fifo) @i %i has non-zero size. "
+msgstr "Nodul-i special (dispozitiv/soclu/fifo) %i are o dimensiune diferită de zero. "
+
+#. @-expanded: journal inode is not in use, but contains data.
+#: e2fsck/problem.c:804
+msgid "@j @i is not in use, but contains data. "
+msgstr "nodul-i al jurnalului nu este în uz, dar conține date. "
+
+#. @-expanded: journal is not regular file.
+#: e2fsck/problem.c:809
+msgid "@j is not regular file. "
+msgstr "@jul nu este un fișier obișnuit. "
+
+#. @-expanded: inode %i was part of the orphaned inode list.
+#: e2fsck/problem.c:815
+#, no-c-format
+msgid "@i %i was part of the @o @i list. "
+msgstr "nodul-i %i făcea parte din lista de noduri-i orfane. "
+
+#. @-expanded: inodes that were part of a corrupted orphan linked list found.
+#: e2fsck/problem.c:821
+msgid "@is that were part of a corrupted orphan linked list found. "
+msgstr "nodurile-i care făceau parte dintr-o listă legată orfană coruptă găsită. "
+
+#. @-expanded: error allocating refcount structure (%N): %m\n
+#: e2fsck/problem.c:826
+msgid "@A refcount structure (%N): %m\n"
+msgstr "eroare de alocare a structurii de numărare a referințelor (%N): %m\n"
+
+#. @-expanded: Error reading extended attribute block %b for inode %i.
+#: e2fsck/problem.c:831
+msgid "Error reading @a @b %b for @i %i. "
+msgstr "Eroare la citirea blocului de atribute extinse %b pentru nodul-i %i. "
+
+#. @-expanded: inode %i has a bad extended attribute block %b.
+#: e2fsck/problem.c:836
+msgid "@i %i has a bad @a @b %b. "
+msgstr "nodul-i %i are un bloc de atribute extinse defectuos %b. "
+
+#. @-expanded: Error reading extended attribute block %b (%m).
+#: e2fsck/problem.c:841
+msgid "Error reading @a @b %b (%m). "
+msgstr "Eroare la citirea blocului de atribute extinse %b (%m). "
+
+#. @-expanded: extended attribute block %b has reference count %r, should be %N.
+#: e2fsck/problem.c:846
+msgid "@a @b %b has reference count %r, @s %N. "
+msgstr "blocul de atribute extinse %b are un număr de %r referințe, ar trebui să fie %N. "
+
+#. @-expanded: Error writing extended attribute block %b (%m).
+#: e2fsck/problem.c:851
+msgid "Error writing @a @b %b (%m). "
+msgstr "Eroare la scrierea blocului de atribute extinse %b (%m). "
+
+#. @-expanded: extended attribute block %b has h_blocks > 1.
+#: e2fsck/problem.c:856
+msgid "@a @b %b has h_@bs > 1. "
+msgstr "blocul de atribute extinse %b are h_blocks > 1. "
+
+#. @-expanded: error allocating extended attribute region allocation structure.
+#: e2fsck/problem.c:861
+msgid "@A @a region allocation structure. "
+msgstr "eroare la alocarea structurii de alocare a regiunii de atribuire a atributelor extinse. "
+
+#. @-expanded: extended attribute block %b is corrupt (allocation collision).
+#: e2fsck/problem.c:866
+msgid "@a @b %b is corrupt (allocation collision). "
+msgstr "blocul de atribute extinse %b este corupt (coliziune de alocare). "
+
+#. @-expanded: extended attribute block %b is corrupt (invalid name).
+#: e2fsck/problem.c:871
+msgid "@a @b %b is corrupt (@n name). "
+msgstr "blocul de atribute extinse %b este corupt (nume nevalid). "
+
+#. @-expanded: extended attribute block %b is corrupt (invalid value).
+#: e2fsck/problem.c:876
+msgid "@a @b %b is corrupt (@n value). "
+msgstr "blocul de atribute extinse %b este corupt (valoare nevalidă). "
+
+#. @-expanded: inode %i is too big.
+#: e2fsck/problem.c:882
+#, no-c-format
+msgid "@i %i is too big. "
+msgstr "nodul-i %i este prea mare. "
+
+#. @-expanded: %B (%b) causes directory to be too big.
+#: e2fsck/problem.c:886
+msgid "%B (%b) causes @d to be too big. "
+msgstr "%B (%b) face ca directorul să fie prea mare. "
+
+#: e2fsck/problem.c:891
+msgid "%B (%b) causes file to be too big. "
+msgstr "%B (%b) face ca fișierul să fie prea mare. "
+
+#: e2fsck/problem.c:896
+msgid "%B (%b) causes symlink to be too big. "
+msgstr "%B (%b) face ca legătura simbolică să fie prea mare. "
+
+#. @-expanded: inode %i has INDEX_FL flag set on filesystem without htree support.\n
+#: e2fsck/problem.c:902
+#, no-c-format
+msgid "@i %i has INDEX_FL flag set on @f without htree support.\n"
+msgstr "nodul-i %i are activat fanionul INDEX_FL pe un sistem de fișiere fără suport htree.\n"
+
+#. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n
+#: e2fsck/problem.c:908
+#, no-c-format
+msgid "@i %i has INDEX_FL flag set but is not a @d.\n"
+msgstr "nodul-i %i are activat fanionul INDEX_FL, dar nu este un director.\n"
+
+#. @-expanded: HTREE directory inode %i has an invalid root node.\n
+#: e2fsck/problem.c:914
+#, no-c-format
+msgid "@h %i has an @n root node.\n"
+msgstr "nodul-i al directorului HTREE %i are un nod rădăcină nevalid.\n"
+
+#. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n
+#: e2fsck/problem.c:919
+msgid "@h %i has an unsupported hash version (%N)\n"
+msgstr "nodul-i al directorului HTREE %i are o versiune de sumă de control (hash) neacceptată (%N)\n"
+
+#. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n
+#: e2fsck/problem.c:925
+#, no-c-format
+msgid "@h %i uses an incompatible htree root node flag.\n"
+msgstr "nodul-i al directorului HTREE %i folosește un fanion incompatibil pentru nodul rădăcină htree.\n"
+
+#. @-expanded: HTREE directory inode %i has a tree depth (%N) which is too big\n
+#: e2fsck/problem.c:930
+msgid "@h %i has a tree depth (%N) which is too big\n"
+msgstr "nodul-i al directorului HTREE %i are o adâncime a arborelui (%N) care este prea mare\n"
+
+#. @-expanded: Bad block inode has an indirect block (%b) that conflicts with\n
+#. @-expanded: filesystem metadata.
+#: e2fsck/problem.c:936
+msgid ""
+"Bad @b @i has an indirect @b (%b) that conflicts with\n"
+"@f metadata. "
+msgstr ""
+"Nodul-i al blocului defectuos are un bloc indirect (%b) care\n"
+"intră în conflict cu metadatele sistemului de fișiere. "
+
+#. @-expanded: Resize inode (re)creation failed: %m.
+#: e2fsck/problem.c:943
+#, no-c-format
+msgid "Resize @i (re)creation failed: %m."
+msgstr "Redimensionarea (re)crearea nodului-i a eșuat: %m."
+
+#. @-expanded: inode %i has a extra size (%IS) which is invalid\n
+#: e2fsck/problem.c:948
+msgid "@i %i has a extra size (%IS) which is @n\n"
+msgstr "nodul-i %i are o dimensiune suplimentară (%IS) care nu este validă\n"
+
+#. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n
+#: e2fsck/problem.c:953
+msgid "@a in @i %i has a namelen (%N) which is @n\n"
+msgstr "atributul extins din nodul-i %i are o lungime a numelui (%N) care nu este valabilă\n"
+
+#. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n
+#: e2fsck/problem.c:958
+msgid "@a in @i %i has a value offset (%N) which is @n\n"
+msgstr "atributul extins din nodul-i %i are o valoare de compensare (%N) care nu este valabilă.\n"
+
+#. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n
+#: e2fsck/problem.c:963
+msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n"
+msgstr "atributul extins din nodul-i %i are o valoare de bloc (%N) care nu este valabilă (trebuie să fie 0).\n"
+
+#. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n
+#: e2fsck/problem.c:968
+msgid "@a in @i %i has a value size (%N) which is @n\n"
+msgstr "@a în @i %i are o valoare de dimensiune (%N) care este @n\n"
+
+#. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid\n
+#: e2fsck/problem.c:973
+msgid "@a in @i %i has a hash (%N) which is @n\n"
+msgstr "atributul extins din nodul-i %i are o sumă de control (hash) (%N) care nu este validă\n"
+
+#. @-expanded: inode %i is a %It but it looks like it is really a directory.\n
+#: e2fsck/problem.c:978
+msgid "@i %i is a %It but it looks like it is really a directory.\n"
+msgstr "nodul-i %i este un %It, dar se pare că este de fapt un director.\n"
+
+#. @-expanded: Error while reading over extent tree in inode %i: %m\n
+#: e2fsck/problem.c:984
+#, no-c-format
+msgid "Error while reading over @x tree in @i %i: %m\n"
+msgstr "Eroare la citirea arborelui de „extent” în nodul-i %i: %m\n"
+
+#. @-expanded: Failed to iterate extents in inode %i\n
+#. @-expanded: \t(op %s, blk %b, lblk %c): %m\n
+#: e2fsck/problem.c:989
+msgid ""
+"Failed to iterate extents in @i %i\n"
+"\t(op %s, blk %b, lblk %c): %m\n"
+msgstr ""
+"Iterarea „extents” (extinderilor) în nodul-i %i a eșuat\n"
+"\t(op %s, blk %b, lblk %c): %m\n"
+
+#. @-expanded: inode %i has an invalid extent\n
+#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
+#: e2fsck/problem.c:995
+msgid ""
+"@i %i has an @n extent\n"
+"\t(logical @b %c, @n physical @b %b, len %N)\n"
+msgstr ""
+"nodul-i %i are o extindere „extent” nevalidă\\n\n"
+"\t(bloc logic %c, bloc fizic nevalid %b, lungime %N)\n"
+
+#. @-expanded: inode %i has an invalid extent\n
+#. @-expanded: \t(logical block %c, physical block %b, invalid len %N)\n
+#: e2fsck/problem.c:1000
+msgid ""
+"@i %i has an @n extent\n"
+"\t(logical @b %c, physical @b %b, @n len %N)\n"
+msgstr ""
+"nodul-i %i are o extindere „extent” nevalidă\\n\n"
+"\t(bloc logic %c, bloc fizic %b, lungime nevalidă %N)\n"
+
+#. @-expanded: inode %i has EXTENTS_FL flag set on filesystem without extents support.\n
+#: e2fsck/problem.c:1006
+#, no-c-format
+msgid "@i %i has EXTENTS_FL flag set on @f without extents support.\n"
+msgstr "nodul-i %i are activat fanionul EXTENTS_FL pe un sistem de fișiere fără suport pentru „extents”.\n"
+
+#. @-expanded: inode %i is in extent format, but superblock is missing EXTENTS feature\n
+#: e2fsck/problem.c:1012
+#, no-c-format
+msgid "@i %i is in extent format, but @S is missing EXTENTS feature\n"
+msgstr "nodul-i %i este în format „extent”, dar super-blocului îi lipsește caracteristica EXTENTS\n"
+
+#. @-expanded: inode %i missing EXTENT_FL, but is in extents format\n
+#: e2fsck/problem.c:1018
+#, no-c-format
+msgid "@i %i missing EXTENT_FL, but is in extents format\n"
+msgstr "nodului-i %i îi lipsește EXTENT_FL, dar este în format „extents”\n"
+
+#: e2fsck/problem.c:1024
+#, no-c-format
+msgid "Fast symlink %i has EXTENT_FL set. "
+msgstr "Legătura simbolică rapidă %i are activat fanionul EXTENT_FL. "
+
+#. @-expanded: inode %i has out of order extents\n
+#. @-expanded: \t(invalid logical block %c, physical block %b, len %N)\n
+#: e2fsck/problem.c:1029
+msgid ""
+"@i %i has out of order extents\n"
+"\t(@n logical @b %c, physical @b %b, len %N)\n"
+msgstr ""
+"nodul-i %i are „extents” în afara ordinii\\n\n"
+"\t(bloc logic nevalid %c, bloc fizic %b, lungime %N)\n"
+
+#. @-expanded: inode %i has an invalid extent node (blk %b, lblk %c)\n
+#: e2fsck/problem.c:1033
+msgid "@i %i has an invalid extent node (blk %b, lblk %c)\n"
+msgstr "nodul-i %i are un nod „extent” nevalid (blk %b, lblk %c)\n"
+
+#. @-expanded: Error converting subcluster block bitmap: %m\n
+#: e2fsck/problem.c:1039
+#, no-c-format
+msgid "Error converting subcluster @b @B: %m\n"
+msgstr "Eroare la conversia hărții de biți a blocurilor de subcluster: %m\n"
+
+#. @-expanded: quota inode is not a regular file.
+#: e2fsck/problem.c:1044
+msgid "@q @i is not a regular file. "
+msgstr "nodul-i de cotă nu este un fișier obișnuit. "
+
+#. @-expanded: quota inode is not in use, but contains data.
+#: e2fsck/problem.c:1049
+msgid "@q @i is not in use, but contains data. "
+msgstr "nodul-i de cotă nu este în uz, dar conține date. "
+
+#. @-expanded: quota inode is visible to the user.
+#: e2fsck/problem.c:1054
+msgid "@q @i is visible to the user. "
+msgstr "nodul-i de cotă este vizibil pentru utilizator. "
+
+#. @-expanded: The bad block inode looks invalid.
+#: e2fsck/problem.c:1059
+msgid "The bad @b @i looks @n. "
+msgstr "Nodul-i al blocului defectuos pare a fi nevalid. "
+
+#. @-expanded: inode %i has zero length extent\n
+#. @-expanded: \t(invalid logical block %c, physical block %b)\n
+#: e2fsck/problem.c:1064
+msgid ""
+"@i %i has zero length extent\n"
+"\t(@n logical @b %c, physical @b %b)\n"
+msgstr ""
+"nodul-i %i are lungimea zero\\n\n"
+"\t(bloc logic nevalid %c, bloc fizic %b)\n"
+
+#. @-expanded: inode %i seems to contain garbage.
+#: e2fsck/problem.c:1070
+#, no-c-format
+msgid "@i %i seems to contain garbage. "
+msgstr "nodul-i %i pare să conțină gunoi. "
+
+#. @-expanded: inode %i passes checks, but checksum does not match inode.
+#: e2fsck/problem.c:1076
+#, no-c-format
+msgid "@i %i passes checks, but checksum does not match @i. "
+msgstr "nodul-i %i trece verificările, dar suma de control nu se potrivește cu nodul-i. "
+
+#. @-expanded: inode %i extended attribute is corrupt (allocation collision).
+#: e2fsck/problem.c:1082
+#, no-c-format
+msgid "@i %i @a is corrupt (allocation collision). "
+msgstr "atributul extins al nodului-i %i este corupt (coliziune de alocare). "
+
+#. @-expanded: inode %i extent block passes checks, but checksum does not match extent\n
+#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
+#: e2fsck/problem.c:1090
+msgid ""
+"@i %i extent block passes checks, but checksum does not match extent\n"
+"\t(logical @b %c, physical @b %b, len %N)\n"
+msgstr ""
+"blocul „extent” al nodului-i %i trece verificările, dar suma de control nu se potrivește cu „extent”\n"
+"\t(bloc logic %c, bloc fizic %b, lungime %N)\n"
+
+#. @-expanded: inode %i extended attribute block %b passes checks, but checksum does not match block.
+#: e2fsck/problem.c:1099
+msgid "@i %i @a @b %b passes checks, but checksum does not match @b. "
+msgstr "blocul de atribute extinse al nodului-i %i, %b trece verificările, dar suma de control nu corespunde blocului. "
+
+#. @-expanded: Interior extent node level %N of inode %i:\n
+#. @-expanded: Logical start %b does not match logical start %c at next level.
+#: e2fsck/problem.c:1104
+msgid ""
+"Interior @x node level %N of @i %i:\n"
+"Logical start %b does not match logical start %c at next level. "
+msgstr ""
+"Nivelul nodului extent interior %N al nodului-i %i:\\n\n"
+"Începutul logic %b nu se potrivește cu începutul logic %c de la nivelul următor. "
+
+#. @-expanded: inode %i, end of extent exceeds allowed value\n
+#. @-expanded: \t(logical block %c, physical block %b, len %N)\n
+#: e2fsck/problem.c:1110
+msgid ""
+"@i %i, end of extent exceeds allowed value\n"
+"\t(logical @b %c, physical @b %b, len %N)\n"
+msgstr ""
+"nodul-i %i, sfârșitul „extent” depășește valoarea permisă\n"
+"\t(bloc logic %c, bloc fizic %b, lungime %N)\n"
+
+#. @-expanded: inode %i has inline data, but superblock is missing INLINE_DATA feature\n
+#: e2fsck/problem.c:1116
+#, no-c-format
+msgid "@i %i has inline data, but @S is missing INLINE_DATA feature\n"
+msgstr "nodul-i %i are date în linie, dar super-blocului îi lipsește caracteristica INLINE_DATA\n"
+
+#. @-expanded: inode %i has INLINE_DATA_FL flag on filesystem without inline data support.\n
+#: e2fsck/problem.c:1122
+#, no-c-format
+msgid "@i %i has INLINE_DATA_FL flag on @f without inline data support.\n"
+msgstr "nodul-i %i are fanionul INLINE_DATA_FL activat pe un sistem de fișiere fără suport pentru date în linie.\n"
+
+#. @-expanded: inode %i block %b conflicts with critical metadata, skipping block checks.\n
+#: e2fsck/problem.c:1130
+#, no-c-format
+msgid "@i %i block %b conflicts with critical metadata, skipping block checks.\n"
+msgstr "blocul %b din nodul-i %i intră în conflict cu metadatele critice; verificările de bloc sunt omise.\n"
+
+#. @-expanded: directory inode %i block %b should be at block %c.
+#: e2fsck/problem.c:1135
+msgid "@d @i %i @b %b should be at @b %c. "
+msgstr "în nodul-i al directorului %i, blocul %b ar trebui să fie la blocul %c. "
+
+#. @-expanded: directory inode %i has extent marked uninitialized at block %c.
+#: e2fsck/problem.c:1141
+#, no-c-format
+msgid "@d @i %i has @x marked uninitialized at @b %c. "
+msgstr "nodul-i al directorului %i are extinderea „extent” marcată ca neinițializată la blocul %c. "
+
+#. @-expanded: inode %i logical block %b (physical block %c) violates cluster allocation rules.\n
+#. @-expanded: Will fix in pass 1B.\n
+#: e2fsck/problem.c:1146
+msgid ""
+"@i %i logical @b %b (physical @b %c) violates cluster allocation rules.\n"
+"Will fix in pass 1B.\n"
+msgstr ""
+"în nodul-i %i, blocul logic %b (blocul fizic %c) încalcă regulile de alocare a clusterului.\n"
+"Se va remedia în «Pasul 1B».\n"
+
+#. @-expanded: inode %i has INLINE_DATA_FL flag but extended attribute not found.
+#: e2fsck/problem.c:1152
+#, no-c-format
+msgid "@i %i has INLINE_DATA_FL flag but @a not found. "
+msgstr "nodul-i %i are fanionul INLINE_DATA_FL, dar atributul extins nu a fost găsit. "
+
+#. @-expanded: Special (device/socket/fifo) file (inode %i) has extents\n
+#. @-expanded: or inline-data flag set.
+#: e2fsck/problem.c:1159
+#, no-c-format
+msgid ""
+"Special (@v/socket/fifo) file (@i %i) has extents\n"
+"or inline-data flag set. "
+msgstr ""
+"Fișierul special (dispozitiv/soclu/fifo) (nodul-i %i) are fanionul\n"
+"„extents” sau inline-data activat. "
+
+#. @-expanded: inode %i has extent header but inline data flag is set.\n
+#: e2fsck/problem.c:1166
+#, no-c-format
+msgid "@i %i has @x header but inline data flag is set.\n"
+msgstr "nodul-i %i are un antet extent, dar fanionul inline-data (de date în linie) este activat.\n"
+
+#. @-expanded: inode %i seems to have inline data but extent flag is set.\n
+#: e2fsck/problem.c:1172
+#, no-c-format
+msgid "@i %i seems to have inline data but @x flag is set.\n"
+msgstr "nodul-i %i pare să aibă date în linie, dar fanionul „extent” este activat.\n"
+
+#. @-expanded: inode %i seems to have block map but inline data and extent flags set.\n
+#: e2fsck/problem.c:1178
+#, no-c-format
+msgid "@i %i seems to have @b map but inline data and @x flags set.\n"
+msgstr "nodul-i %i pare să aibă o hartă de blocuri, dar fanioanele „inline-data” (de date în linie) și „extent” sunt activate.\n"
+
+#. @-expanded: inode %i has inline data and extent flags set but i_block contains junk.\n
+#: e2fsck/problem.c:1184
+#, no-c-format
+msgid "@i %i has inline data and @x flags set but i_block contains junk.\n"
+msgstr "nodul-i %i are fanioanele „inline-data” (de date în linie) și „extent” activate, dar i_block conține gunoi.\n"
+
+#. @-expanded: Bad block list says the bad block list inode is bad.
+#: e2fsck/problem.c:1189
+msgid "Bad block list says the bad block list @i is bad. "
+msgstr "Lista de blocuri defectuoase indică faptul că nodul-i al acestei liste este deteriorat. "
+
+#. @-expanded: error allocating extent region allocation structure.
+#: e2fsck/problem.c:1194
+msgid "@A @x region allocation structure. "
+msgstr "eroare de alocare a structurii de alocare a regiunii „extent”. "
+
+#. @-expanded: inode %i has a duplicate extent mapping\n
+#. @-expanded: \t(logical block %c, invalid physical block %b, len %N)\n
+#: e2fsck/problem.c:1199
+msgid ""
+"@i %i has a duplicate @x mapping\n"
+"\t(logical @b %c, @n physical @b %b, len %N)\n"
+msgstr ""
+"nodul-i %i are o hartă de alocare de „extents” duplicată\n"
+"\t(bloc logic %c, bloc fizic nevalid %b, lungime %N)\n"
+
+#. @-expanded: error allocating %N bytes of memory for encrypted inode list\n
+#: e2fsck/problem.c:1204
+msgid "@A %N bytes of memory for encrypted @i list\n"
+msgstr "eroare de alocare a %N octeți de memorie pentru lista de noduri-i criptate\n"
+
+#. @-expanded: inode %i extent tree could be more shallow (%b; could be <= %c)\n
+#: e2fsck/problem.c:1209
+msgid "@i %i @x tree could be more shallow (%b; could be <= %c)\n"
+msgstr "arborele „extents” al nodului-i %i ar putea fi mai puțin adânc (%b; ar putea fi <= %c)\n"
+
+#. @-expanded: inode %i on bigalloc filesystem cannot be block mapped.
+#: e2fsck/problem.c:1215
+#, no-c-format
+msgid "@i %i on bigalloc @f cannot be @b mapped. "
+msgstr "nodul-i %i al sistemului de fișiere „bigalloc” nu poate fi cartografiat pe blocuri. "
+
+#. @-expanded: inode %i has corrupt extent header.
+#: e2fsck/problem.c:1221
+#, no-c-format
+msgid "@i %i has corrupt @x header. "
+msgstr "nodul-i %i are antetul „extent” corupt. "
+
+#. @-expanded: Timestamp(s) on inode %i beyond 2310-04-04 are likely pre-1970.\n
+#: e2fsck/problem.c:1227
+#, no-c-format
+msgid "Timestamp(s) on @i %i beyond 2310-04-04 are likely pre-1970.\n"
+msgstr "Marcajul(ele) de timp de pe nodul-i %i după data de 04.04.2310 sunt probabil anterioare anului 1970.\n"
+
+#. @-expanded: inode %i has illegal extended attribute value inode %N.\n
+#: e2fsck/problem.c:1232
+msgid "@i %i has @I @a value @i %N.\n"
+msgstr "nodul-i %i are o valoare de atribut extins ilegală a nodul-i %N.\n"
+
+#. @-expanded: inode %i has invalid extended attribute. EA inode %N missing EA_INODE flag.\n
+#: e2fsck/problem.c:1238
+msgid "@i %i has @n @a. EA @i %N missing EA_INODE flag.\n"
+msgstr "nodul-i %i are un atribut extins nevalid. Nodului-i EA %N îi lipsește fanionul EA_INODE.\n"
+
+#. @-expanded: EA inode %N for parent inode %i missing EA_INODE flag.\n
+#. @-expanded:
+#: e2fsck/problem.c:1243
+msgid ""
+"EA @i %N for parent @i %i missing EA_INODE flag.\n"
+" "
+msgstr ""
+"Nodului-i EA %N pentru nodul părinte %i îi lipsește fanionul EA_INODE.\n"
+" "
+
+#. @-expanded: inode %i has extent marked uninitialized at block %c (len %N).
+#: e2fsck/problem.c:1249
+#, no-c-format
+msgid "@i %i has @x marked uninitialized at @b %c (len %N). "
+msgstr "nodul-i %i are o extindere „extent” marcată ca neinițializată în blocul %c (lungime %N). "
+
+#. @-expanded: inode %i has the casefold flag set but is not a directory.
+#: e2fsck/problem.c:1254
+#, c-format
+msgid "@i %i has the casefold flag set but is not a directory. "
+msgstr "nodul-i %i are activat fanionul „casefold”, dar nu este un director. "
+
+#. @-expanded: directory %p has the casefold flag, but the\n
+#. @-expanded: casefold feature is not enabled.
+#: e2fsck/problem.c:1259
+#, c-format
+msgid ""
+"@d %p has the casefold flag, but the\n"
+"casefold feature is not enabled. "
+msgstr ""
+"directorul %p are fanionul „casefold”, dar\n"
+"caracteristica „casefold” nu este activată. "
+
+#. @-expanded: inode %i has encrypt flag but no encryption extended attribute.\n
+#: e2fsck/problem.c:1264
+#, c-format
+msgid "@i %i has encrypt flag but no encryption @a.\n"
+msgstr "nodul-i %i are fanionul „encrypt” (de criptare), dar nu are atributul extins de criptare.\n"
+
+#. @-expanded: Encrypted inode %i has corrupt encryption extended attribute.\n
+#: e2fsck/problem.c:1269
+#, c-format
+msgid "Encrypted @i %i has corrupt encryption @a.\n"
+msgstr "Nodul-i criptat %i are atributul extins de criptare corupt.\n"
+
+#. @-expanded: HTREE directory inode %i uses hash version (%N), but should use SipHash (6) \n
+#: e2fsck/problem.c:1274
+msgid "@h %i uses hash version (%N), but should use SipHash (6) \n"
+msgstr "Nodul-i al directorului HTREE %i folosește versiunea hash (%N), dar ar trebui să folosească SipHash (6)\n"
+
+#. @-expanded: HTREE directory inode %i uses SipHash, but should not.
+#: e2fsck/problem.c:1279
+#, c-format
+msgid "@h %i uses SipHash, but should not. "
+msgstr "Nodul-i al directorului HTREE %i utilizează SipHash, dar nu ar trebui să o facă. "
+
+#. @-expanded: \n
+#. @-expanded: Running additional passes to resolve blocks claimed by more than one inode...\n
+#. @-expanded: Pass 1B: Rescanning for multiply-claimed blocks\n
+#: e2fsck/problem.c:1287
+msgid ""
+"\n"
+"Running additional passes to resolve @bs claimed by more than one @i...\n"
+"Pass 1B: Rescanning for @m @bs\n"
+msgstr ""
+"\n"
+"Se execută pași suplimentari pentru a rezolva blocurile revendicate de mai mult de un nod-i...\n"
+"Pasul 1B: Rescanare pentru blocuri cu revendicări multiple\n"
+
+#. @-expanded: multiply-claimed block(s) in inode %i:
+#: e2fsck/problem.c:1294
+#, no-c-format
+msgid "@m @b(s) in @i %i:"
+msgstr "blocuri revendicate de mai multe ori în nodul-i %i:"
+
+#: e2fsck/problem.c:1310
+#, no-c-format
+msgid "Error while scanning inodes (%i): %m\n"
+msgstr "Eroare la scanarea nodurilor-i (%i): %m\n"
+
+#. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n
+#: e2fsck/problem.c:1316
+#, no-c-format
+msgid "@A @i @B (@i_dup_map): %m\n"
+msgstr "eroare la alocarea hărții de biți a nodului-i (inode_dup_map): %m\n"
+
+#. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n
+#: e2fsck/problem.c:1322
+#, no-c-format
+msgid "Error while iterating over @bs in @i %i (%s): %m\n"
+msgstr "Eroare în timpul iterației peste blocurile din nodul-i %i (%s): %m\n"
+
+#. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n
+#: e2fsck/problem.c:1327 e2fsck/problem.c:1707
+msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n"
+msgstr "Eroare la ajustarea numărului de referințe pentru blocul de atribute extinse %b (nodul-i %i): %m\n"
+
+#. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n
+#: e2fsck/problem.c:1337
+msgid "Pass 1C: Scanning directories for @is with @m @bs\n"
+msgstr "Pasul 1C: Se scanează directoarele pentru noduri-i cu blocuri revendicate de mai multe ori\n"
+
+#. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n
+#: e2fsck/problem.c:1343
+msgid "Pass 1D: Reconciling @m @bs\n"
+msgstr "Pasul 1D: Se reconciliază blocurile cu revendicări multiple\n"
+
+#. @-expanded: File %Q (inode #%i, mod time %IM) \n
+#. @-expanded: has %r multiply-claimed block(s), shared with %N file(s):\n
+#: e2fsck/problem.c:1348
+msgid ""
+"File %Q (@i #%i, mod time %IM) \n"
+" has %r @m @b(s), shared with %N file(s):\n"
+msgstr ""
+"Fișierul %Q (nodul-i nr. %i, data de modificare %IM) \n"
+" are %r bloc(uri) revendicat(e) de mai multe ori, partajat(e) cu %N fișier(e):\n"
+
+#. @-expanded: \t%Q (inode #%i, mod time %IM)\n
+#: e2fsck/problem.c:1354
+msgid "\t%Q (@i #%i, mod time %IM)\n"
+msgstr "\t%Q (nodul-i nr. %i, data de modificare %IM)\n"
+
+#. @-expanded: \t<filesystem metadata>\n
+#: e2fsck/problem.c:1359
+msgid "\t<@f metadata>\n"
+msgstr "\t<metadate ale sistemului de fișiere>\n"
+
+#. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n
+#. @-expanded: \n
+#: e2fsck/problem.c:1364
+msgid ""
+"(There are %N @is containing @m @bs.)\n"
+"\n"
+msgstr ""
+"(Există %N noduri-i care conțin blocuri cu revendicare multiplă.)\n"
+"\n"
+
+#. @-expanded: multiply-claimed blocks already reassigned or cloned.\n
+#. @-expanded: \n
+#: e2fsck/problem.c:1369
+msgid ""
+"@m @bs already reassigned or cloned.\n"
+"\n"
+msgstr ""
+"blocuri cu revendicări multiple deja realocați sau clonați.\n"
+"\n"
+
+#: e2fsck/problem.c:1383
+#, no-c-format
+msgid "Couldn't clone file: %m\n"
+msgstr "Nu s-a putut clona fișierul: %m\n"
+
+#. @-expanded: Pass 1E: Optimizing extent trees\n
+#: e2fsck/problem.c:1389
+msgid "Pass 1E: Optimizing @x trees\n"
+msgstr "Pasul 1E: Optimizarea arborilor de „extents”\n"
+
+#. @-expanded: Failed to optimize extent tree %p (%i): %m\n
+#: e2fsck/problem.c:1395
+#, no-c-format
+msgid "Failed to optimize @x tree %p (%i): %m\n"
+msgstr "Nu s-a reușit optimizarea arborelui „extent” %p (%i): %m\n"
+
+#. @-expanded: Optimizing extent trees:
+#: e2fsck/problem.c:1400
+msgid "Optimizing @x trees: "
+msgstr "Se optimizează arborii „extents”: "
+
+#: e2fsck/problem.c:1415
+msgid "Internal error: max extent tree depth too large (%b; expected=%c).\n"
+msgstr "Eroare internă: adâncimea maximă a arborelui „extent” este prea mare (%b; se aștepta=%c).\n"
+
+#. @-expanded: inode %i extent tree (at level %b) could be shorter.
+#: e2fsck/problem.c:1420
+msgid "@i %i @x tree (at level %b) could be shorter. "
+msgstr "în nodul-i %i, arborele „extent” (la nivelul %b) ar putea fi mai scurt. "
+
+#. @-expanded: inode %i extent tree (at level %b) could be narrower.
+#: e2fsck/problem.c:1425
+msgid "@i %i @x tree (at level %b) could be narrower. "
+msgstr "arborele de „extents” al nodului-i %i (la nivelul %b) ar putea fi mai îngust. "
+
+#. @-expanded: Pass 2: Checking directory structure\n
+#: e2fsck/problem.c:1432
+msgid "Pass 2: Checking @d structure\n"
+msgstr "Pasul 2: Se verifică structura directoarelor\n"
+
+#. @-expanded: invalid inode number for '.' in directory inode %i.\n
+#: e2fsck/problem.c:1438
+#, no-c-format
+msgid "@n @i number for '.' in @d @i %i.\n"
+msgstr "număr de nod-i incorect pentru „.” în nodul-i de director %i.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n
+#: e2fsck/problem.c:1443
+msgid "@E has @n @i #: %Di.\n"
+msgstr "intrarea „%Dn” în %p (%i) are un nod-i nevalid nr.: %Di.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di.
+#: e2fsck/problem.c:1448
+msgid "@E has @D/unused @i %Di. "
+msgstr "intrarea „%Dn” din %p (%i) conține nodul-i șters/neutilizat %Di. "
+
+#. @-expanded: entry '%Dn' in %p (%i) is a link to '.'
+#: e2fsck/problem.c:1453
+msgid "@E @L to '.' "
+msgstr "intrarea „%Dn” din %p (%i) este o legătură către „.”. "
+
+#. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n
+#: e2fsck/problem.c:1458
+msgid "@E points to @i (%Di) located in a bad @b.\n"
+msgstr "intrarea „%Dn” din %p (%i) indică spre nodul-i (%Di) situat într-un bloc greșit.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n
+#: e2fsck/problem.c:1463
+msgid "@E @L to @d %P (%Di).\n"
+msgstr "intrarea „%Dn” din %p (%i) este o legătură către directorul %P (%Di).\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n
+#: e2fsck/problem.c:1468
+msgid "@E @L to the @r.\n"
+msgstr "intrarea „%Dn” din %p (%i) este o legătură către nodul-i rădăcină.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n
+#: e2fsck/problem.c:1473
+msgid "@E has illegal characters in its name.\n"
+msgstr "intrarea „%Dn” din %p (%i) are caractere ilegale în nume.\n"
+
+#. @-expanded: Missing '.' in directory inode %i.\n
+#: e2fsck/problem.c:1479
+#, no-c-format
+msgid "Missing '.' in @d @i %i.\n"
+msgstr "Lipsește „.” în nodul-i al directorului %i.\n"
+
+#. @-expanded: Missing '..' in directory inode %i.\n
+#: e2fsck/problem.c:1485
+#, no-c-format
+msgid "Missing '..' in @d @i %i.\n"
+msgstr "Lipsește „..” în nodul-i al directorului %i.\n"
+
+#. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n
+#: e2fsck/problem.c:1490
+msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n"
+msgstr "Prima intrare „%Dn” (nodul-i=%Di) din nodul-i al directorului %i (%p) ar trebui să fie „.”\n"
+
+#. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n
+#: e2fsck/problem.c:1495
+msgid "Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n"
+msgstr "A doua intrare „%Dn” (nodul-i=%Di) din nodul-i al directorului %i (%p) ar trebui să fie „..”\n"
+
+#. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n
+#: e2fsck/problem.c:1500
+msgid "i_faddr @F %IF, @s zero.\n"
+msgstr "i_faddr pentru nodul-i %i (%Q) este %IF, ar trebui să fie zero.\n"
+
+#. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n
+#: e2fsck/problem.c:1505
+msgid "i_file_acl @F %If, @s zero.\n"
+msgstr "i_file_acl pentru nodul-i %i (%Q) este %If, ar trebui să fie zero.\n"
+
+#. @-expanded: i_size_high for inode %i (%Q) is %Id, should be zero.\n
+#: e2fsck/problem.c:1510
+msgid "i_size_high @F %Id, @s zero.\n"
+msgstr "i_size_high pentru nodul-i %i (%Q) este %Id, ar trebui să fie zero.\n"
+
+#. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n
+#: e2fsck/problem.c:1515
+msgid "i_frag @F %N, @s zero.\n"
+msgstr "i_frag pentru nodul-i %i (%Q) este %N, ar trebui să fie zero.\n"
+
+#. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n
+#: e2fsck/problem.c:1520
+msgid "i_fsize @F %N, @s zero.\n"
+msgstr "i_fsize pentru nodul-i %i (%Q) este %N, ar trebui să fie zero.\n"
+
+#. @-expanded: inode %i (%Q) has invalid mode (%Im).\n
+#: e2fsck/problem.c:1525
+msgid "@i %i (%Q) has @n mode (%Im).\n"
+msgstr "nodul-i %i (%Q) are modul nevalid (%Im).\n"
+
+#. @-expanded: directory inode %i, %B, offset %N: directory corrupted\n
+#: e2fsck/problem.c:1530
+msgid "@d @i %i, %B, offset %N: @d corrupted\n"
+msgstr "nodul-i al directorului %i, %B, poziția %N: director corupt\n"
+
+#. @-expanded: directory inode %i, %B, offset %N: filename too long\n
+#: e2fsck/problem.c:1535
+msgid "@d @i %i, %B, offset %N: filename too long\n"
+msgstr "nodul-i al directorului %i, %B, poziția %N: numele fișierului este prea lung\n"
+
+#. @-expanded: directory inode %i has an unallocated %B.
+#: e2fsck/problem.c:1540
+msgid "@d @i %i has an unallocated %B. "
+msgstr "nodul-i al directorului %i are un %B nealocat. "
+
+#. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n
+#: e2fsck/problem.c:1546
+#, no-c-format
+msgid "'.' @d @e in @d @i %i is not NULL terminated\n"
+msgstr "Intrarea de director „.” în nodul-i de director %i nu se termină cu NULL\n"
+
+#. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n
+#: e2fsck/problem.c:1552
+#, no-c-format
+msgid "'..' @d @e in @d @i %i is not NULL terminated\n"
+msgstr "Intrarea de director „..” în nodul-i de director %i nu se termină cu NULL\n"
+
+#. @-expanded: inode %i (%Q) is an illegal character device.\n
+#: e2fsck/problem.c:1557
+msgid "@i %i (%Q) is an @I character @v.\n"
+msgstr "nodul-i %i (%Q) este un dispozitiv de caractere ilegal.\n"
+
+#. @-expanded: inode %i (%Q) is an illegal block device.\n
+#: e2fsck/problem.c:1562
+msgid "@i %i (%Q) is an @I @b @v.\n"
+msgstr "nodul-i %i (%Q) este un dispozitiv de bloc ilegal.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n
+#: e2fsck/problem.c:1567
+msgid "@E is duplicate '.' @e.\n"
+msgstr "intrarea „%Dn” din %p (%i) este o intrare „.” duplicată.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) is duplicate '..' entry.\n
+#: e2fsck/problem.c:1572
+msgid "@E is duplicate '..' @e.\n"
+msgstr "intrarea „%Dn” din %p (%i) este o intrare „..” duplicată.\n"
+
+#: e2fsck/problem.c:1578 e2fsck/problem.c:1963
+#, no-c-format
+msgid "Internal error: couldn't find dir_info for %i.\n"
+msgstr "Eroare internă: nu s-a putut găsi dir_info pentru %i.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) has rec_len of %Dr, should be %N.\n
+#: e2fsck/problem.c:1583
+msgid "@E has rec_len of %Dr, @s %N.\n"
+msgstr "intrarea „%Dn” din %p (%i) are rec_len de %Dr, ar trebui să fie %N.\n"
+
+#. @-expanded: error allocating icount structure: %m\n
+#: e2fsck/problem.c:1589
+#, no-c-format
+msgid "@A icount structure: %m\n"
+msgstr "eroare la alocarea structurii icount: %m\n"
+
+#. @-expanded: Error iterating over directory blocks: %m\n
+#: e2fsck/problem.c:1595
+#, no-c-format
+msgid "Error iterating over @d @bs: %m\n"
+msgstr "Eroare la iterarea peste blocurile de directoare: %m\n"
+
+#. @-expanded: Error reading directory block %b (inode %i): %m\n
+#: e2fsck/problem.c:1600
+msgid "Error reading @d @b %b (@i %i): %m\n"
+msgstr "Eroare la citirea blocului de directoare %b (nodul-i %i): %m\n"
+
+#. @-expanded: Error writing directory block %b (inode %i): %m\n
+#: e2fsck/problem.c:1605
+msgid "Error writing @d @b %b (@i %i): %m\n"
+msgstr "Eroare la scrierea blocului de directoare %b (nod-i %i): %m\n"
+
+#. @-expanded: error allocating new directory block for inode %i (%s): %m\n
+#: e2fsck/problem.c:1611
+#, no-c-format
+msgid "@A new @d @b for @i %i (%s): %m\n"
+msgstr "eroare la alocarea unui nou bloc de directoare pentru nodul-i %i (%s): %m\n"
+
+#. @-expanded: Error deallocating inode %i: %m\n
+#: e2fsck/problem.c:1617
+#, no-c-format
+msgid "Error deallocating @i %i: %m\n"
+msgstr "Eroare la eliberarea nodului-i %i: %m\n"
+
+#. @-expanded: directory entry for '.' in %p (%i) is big.\n
+#: e2fsck/problem.c:1623
+#, no-c-format
+msgid "@d @e for '.' in %p (%i) is big.\n"
+msgstr "intrarea de director pentru „.” în %p (%i) este mare.\n"
+
+#. @-expanded: inode %i (%Q) is an illegal FIFO.\n
+#: e2fsck/problem.c:1628
+msgid "@i %i (%Q) is an @I FIFO.\n"
+msgstr "nodul-i %i (%Q) este o conductă cu nume (FIFO) ilegală.\n"
+
+#. @-expanded: inode %i (%Q) is an illegal socket.\n
+#: e2fsck/problem.c:1633
+msgid "@i %i (%Q) is an @I socket.\n"
+msgstr "nodul-i %i (%Q) este un soclu ilegal.\n"
+
+#. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n
+#: e2fsck/problem.c:1638
+msgid "Setting filetype for @E to %N.\n"
+msgstr "Se stabilește tipul de fișier pentru intrarea „%Dn” din %p (%i) la %N.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n
+#: e2fsck/problem.c:1643
+msgid "@E has an incorrect filetype (was %Dt, @s %N).\n"
+msgstr "intrarea „%Dn” din %p (%i) are un tip de fișier incorect (era %Dt, ar trebui să fie %N).\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n
+#: e2fsck/problem.c:1648
+msgid "@E has filetype set.\n"
+msgstr "intrarea „%Dn” din %p (%i) are definit tipul de fișier.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) has a zero-length name.\n
+#: e2fsck/problem.c:1653
+msgid "@E has a @z name.\n"
+msgstr "intrarea „%Dn” din %p (%i) are un nume de lungime zero.\n"
+
+#. @-expanded: Symlink %Q (inode #%i) is invalid.\n
+#: e2fsck/problem.c:1658
+msgid "Symlink %Q (@i #%i) is @n.\n"
+msgstr "Legătura simbolică %Q (nodul-i #%i) nu este validă.\n"
+
+#. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n
+#: e2fsck/problem.c:1663
+msgid "@a @b @F @n (%If).\n"
+msgstr "blocul de atribut extins pentru nodul-i %i (%Q) nu este valid (%If).\n"
+
+#. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n
+#: e2fsck/problem.c:1668
+msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n"
+msgstr "sistemul de fișiere conține fișiere mari, dar nu are fanionul LARGE_FILE în super-bloc.\n"
+
+#. @-expanded: problem in HTREE directory inode %d: %B not referenced\n
+#: e2fsck/problem.c:1673
+msgid "@p @h %d: %B not referenced\n"
+msgstr "problemă în nodul-i al directorului HTREE %d: %B nu are referință\n"
+
+#. @-expanded: problem in HTREE directory inode %d: %B referenced twice\n
+#: e2fsck/problem.c:1678
+msgid "@p @h %d: %B referenced twice\n"
+msgstr "problemă în nodul-i al directorului HTREE %d: %B menționat de două ori\n"
+
+#. @-expanded: problem in HTREE directory inode %d: %B has bad min hash\n
+#: e2fsck/problem.c:1683
+msgid "@p @h %d: %B has bad min hash\n"
+msgstr "problemă în nodul-i al directorului HTREE %d: %B are o sumă de control(hash) minimă incorectă\n"
+
+#. @-expanded: problem in HTREE directory inode %d: %B has bad max hash\n
+#: e2fsck/problem.c:1688
+msgid "@p @h %d: %B has bad max hash\n"
+msgstr "problemă în nodul-i al directorului HTREE %d: %B are o sumă de control(hash) maximă incorectă\n"
+
+#. @-expanded: invalid HTREE directory inode %d (%q).
+#: e2fsck/problem.c:1693
+msgid "@n @h %d (%q). "
+msgstr "nodul-i al directorului HTREE nu este valid %d (%q). "
+
+#. @-expanded: filesystem has large directories, but lacks LARGE_DIR flag in superblock.\n
+#: e2fsck/problem.c:1697
+msgid "@f has large directories, but lacks LARGE_DIR flag in @S.\n"
+msgstr "sistemul de fișiere are directoare mari, dar nu are fanionul LARGE_DIR în super-bloc.\n"
+
+#. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n
+#: e2fsck/problem.c:1702
+msgid "@p @h %d (%q): bad @b number %b.\n"
+msgstr "problemă în nodul-i al directorului HTREE %d (%q): număr de bloc greșit %b.\n"
+
+#. @-expanded: problem in HTREE directory inode %d: root node is invalid\n
+#: e2fsck/problem.c:1713
+#, no-c-format
+msgid "@p @h %d: root node is @n\n"
+msgstr "problemă în nodul-i al directorului HTREE %d: nodul rădăcină nu este valid\n"
+
+#. @-expanded: problem in HTREE directory inode %d: %B has invalid limit (%N)\n
+#: e2fsck/problem.c:1718
+msgid "@p @h %d: %B has @n limit (%N)\n"
+msgstr "problemă în nodul-i al directorului HTREE %d: %B are limita nevalidă (%N)\n"
+
+#. @-expanded: problem in HTREE directory inode %d: %B has invalid count (%N)\n
+#: e2fsck/problem.c:1723
+msgid "@p @h %d: %B has @n count (%N)\n"
+msgstr "problemă în nodul-i al directorului HTREE %d: %B are un număr nevalid (%N)\n"
+
+#. @-expanded: problem in HTREE directory inode %d: %B has an unordered hash table\n
+#: e2fsck/problem.c:1728
+msgid "@p @h %d: %B has an unordered hash table\n"
+msgstr "problemă în nodul-i al directorului HTREE %d: %B are o sumă de control(hash) maximă incorectă\n"
+
+#. @-expanded: problem in HTREE directory inode %d: %B has invalid depth (%N)\n
+#: e2fsck/problem.c:1733
+msgid "@p @h %d: %B has @n depth (%N)\n"
+msgstr "problemă în nodul-i al directorului HTREE %d: %B are o adâncime nevalidă (%N)\n"
+
+#. @-expanded: Duplicate entry '%Dn' in %p (%i) found.
+#: e2fsck/problem.c:1738
+msgid "Duplicate @E found. "
+msgstr "S-a găsit o intrare duplicată „%Dn” în %p (%i). "
+
+#. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n
+#. @-expanded: Rename to %s
+#: e2fsck/problem.c:1743
+#, no-c-format
+msgid ""
+"@E has a non-unique filename.\n"
+"Rename to %s"
+msgstr ""
+"intrarea „%Dn” din %p (%i) are un nume de fișier care nu este unic.\n"
+"Se redenumește în %s"
+
+#. @-expanded: Duplicate entry '%Dn' found.\n
+#. @-expanded: \tMarking %p (%i) to be rebuilt.\n
+#. @-expanded: \n
+#: e2fsck/problem.c:1748
+msgid ""
+"Duplicate @e '%Dn' found.\n"
+"\tMarking %p (%i) to be rebuilt.\n"
+"\n"
+msgstr ""
+"S-a găsit o intrare duplicată „%Dn”. \n"
+"\tSe marchează %p (%i) pentru a fi reconstruit.\n"
+"\n"
+
+#. @-expanded: i_blocks_hi for inode %i (%Q) is %N, should be zero.\n
+#: e2fsck/problem.c:1753
+msgid "i_blocks_hi @F %N, @s zero.\n"
+msgstr "i_blocks_hi pentru nodul-i %i (%Q) este %N, ar trebui să fie zero.\n"
+
+#. @-expanded: Unexpected block in HTREE directory inode %d (%q).\n
+#: e2fsck/problem.c:1758
+msgid "Unexpected @b in @h %d (%q).\n"
+msgstr "Bloc neașteptat în nodul-i al directorului HTREE %d (%q).\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) references inode %Di in group %g where _INODE_UNINIT is set.\n
+#: e2fsck/problem.c:1763
+msgid "@E references @i %Di in @g %g where _INODE_UNINIT is set.\n"
+msgstr "intrarea „%Dn” din %p (%i) se referă la nodul-i %Di din grupul %g în care este activat _INODE_UNINIT.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) references inode %Di found in group %g's unused inodes area.\n
+#: e2fsck/problem.c:1768
+msgid "@E references @i %Di found in @g %g's unused inodes area.\n"
+msgstr "intrarea „%Dn” din %p (%i) face trimitere la nodul-i %Di găsit în zona de noduri neutilizate a grupului %g.\n"
+
+#. @-expanded: i_file_acl_hi for inode %i (%Q) is %N, should be zero.\n
+#: e2fsck/problem.c:1773
+msgid "i_file_acl_hi @F %N, @s zero.\n"
+msgstr "i_file_acl_hi pentru nodul-i %i (%Q) este %N, ar trebui să fie zero.\n"
+
+#. @-expanded: problem in HTREE directory inode %d: root node fails checksum.\n
+#: e2fsck/problem.c:1779
+#, no-c-format
+msgid "@p @h %d: root node fails checksum.\n"
+msgstr "problemă în nodul-i de director HTREE %d: nodul rădăcină nu reușește să facă verificarea sumei de control.\n"
+
+#. @-expanded: problem in HTREE directory inode %d: internal node fails checksum.\n
+#: e2fsck/problem.c:1785
+#, no-c-format
+msgid "@p @h %d: internal node fails checksum.\n"
+msgstr "problemă în nodul-i de director HTREE %d: nodul intern nu reușește să facă verificarea sumei de control.\n"
+
+#. @-expanded: directory inode %i, %B, offset %N: directory has no checksum.\n
+#: e2fsck/problem.c:1790
+msgid "@d @i %i, %B, offset %N: @d has no checksum.\n"
+msgstr "nodul-i al directorului %i, %B, poziția %N: directorul nu are o sumă de control.\n"
+
+#. @-expanded: directory inode %i, %B: directory passes checks but fails checksum.\n
+#: e2fsck/problem.c:1795
+msgid "@d @i %i, %B: @d passes checks but fails checksum.\n"
+msgstr "nodul-i al directorului %i, %B: directorul trece verificările, dar eșuează la verificarea sumei de control.\n"
+
+#. @-expanded: Inline directory inode %i size (%N) must be a multiple of 4.\n
+#: e2fsck/problem.c:1800
+msgid "Inline @d @i %i size (%N) must be a multiple of 4.\n"
+msgstr "Dimensiunea nodului-i al directorului în linie %i (%N) trebuie să fie un multiplu de 4.\n"
+
+#. @-expanded: Fixing size of inline directory inode %i failed.\n
+#: e2fsck/problem.c:1806
+#, no-c-format
+msgid "Fixing size of inline @d @i %i failed.\n"
+msgstr "Fixarea dimensiunii nodului-i al directorului „inline” %i a eșuat.\n"
+
+#. @-expanded: Encrypted entry '%Dn' in %p (%i) is too short.\n
+#: e2fsck/problem.c:1811
+msgid "Encrypted @E is too short.\n"
+msgstr "Intrarea criptată „%Dn” din %p (%i) este prea scurtă.\n"
+
+#. @-expanded: Encrypted entry '%Dn' in %p (%i) references unencrypted inode %Di.\n
+#: e2fsck/problem.c:1816
+msgid "Encrypted @E references unencrypted @i %Di.\n"
+msgstr "Intrarea criptată „%Dn” din %p (%i) face trimitere la nodul-i necriptat %Di.\n"
+
+#. @-expanded: Encrypted entry '%Dn' in %p (%i) references inode %Di, which has a different encryption policy.\n
+#: e2fsck/problem.c:1821
+msgid "Encrypted @E references @i %Di, which has a different encryption policy.\n"
+msgstr "Intrarea criptată „%Dn” din %p (%i) face referire la nodul-i %Di, care are o politică de criptare diferită.\n"
+
+#. @-expanded: entry '%Dn' in %p (%i) has illegal UTF-8 characters in its name.\n
+#: e2fsck/problem.c:1826
+msgid "@E has illegal UTF-8 characters in its name.\n"
+msgstr "intrarea „%Dn” din %p (%i) are caractere UTF-8 ilegale în nume.\n"
+
+#. @-expanded: Duplicate filename entry '%Dn' in %p (%i) found.
+#: e2fsck/problem.c:1831
+msgid "Duplicate filename @E found. "
+msgstr "S-a găsit o intrare duplicată a numelui de fișier „%Dn” în %p (%i). "
+
+#. @-expanded: Pass 3: Checking directory connectivity\n
+#: e2fsck/problem.c:1839
+msgid "Pass 3: Checking @d connectivity\n"
+msgstr "Pasul 3: Se verifică conectivitatea directoarelor\n"
+
+#. @-expanded: root inode not allocated.
+#: e2fsck/problem.c:1844
+msgid "@r not allocated. "
+msgstr "nodul-i rădăcină nu este alocat. "
+
+#. @-expanded: No room in lost+found directory.
+#: e2fsck/problem.c:1849
+msgid "No room in @l @d. "
+msgstr "Nu există loc în directorul de obiecte pierdute și găsite „lost+found”. "
+
+#. @-expanded: Unconnected directory inode %i (was in %q)\n
+#: e2fsck/problem.c:1855
+#, no-c-format
+msgid "Unconnected @d @i %i (was in %q)\n"
+msgstr "Nodul-i al directorului neconectat %i (era în %q)\n"
+
+#. @-expanded: /lost+found not found.
+#: e2fsck/problem.c:1860
+msgid "/@l not found. "
+msgstr "/lost+found nu a fost găsit. "
+
+#. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n
+#: e2fsck/problem.c:1865
+msgid "'..' in %Q (%i) is %P (%j), @s %q (%d).\n"
+msgstr "„..” din %Q (%i) este %P (%j), ar trebui să fie %q (%d).\n"
+
+#. @-expanded: Bad or non-existent /lost+found. Cannot reconnect.\n
+#: e2fsck/problem.c:1871
+#, no-c-format
+msgid "Bad or non-existent /@l. Cannot reconnect.\n"
+msgstr "/lost+found (pierdut+găsit) defectuos sau inexistent. Nu se poate reconecta.\n"
+
+#. @-expanded: Could not expand /lost+found: %m\n
+#: e2fsck/problem.c:1877
+#, no-c-format
+msgid "Could not expand /@l: %m\n"
+msgstr "Nu s-a putut expanda /lost+found: %m\n"
+
+#: e2fsck/problem.c:1883
+#, no-c-format
+msgid "Could not reconnect %i: %m\n"
+msgstr "Nu s-a putut reconecta %i: %m\n"
+
+#. @-expanded: Error while trying to find /lost+found: %m\n
+#: e2fsck/problem.c:1889
+#, no-c-format
+msgid "Error while trying to find /@l: %m\n"
+msgstr "Eroare în timpul încercării de a găsi /lost+found: %m\n"
+
+#. @-expanded: ext2fs_new_block: %m while trying to create /lost+found directory\n
+#: e2fsck/problem.c:1895
+#, no-c-format
+msgid "ext2fs_new_@b: %m while trying to create /@l @d\n"
+msgstr "ext2fs_new_block: %m în timp ce se încerca crearea directorului /lost+found\n"
+
+#. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n
+#: e2fsck/problem.c:1901
+#, no-c-format
+msgid "ext2fs_new_@i: %m while trying to create /@l @d\n"
+msgstr "ext2fs_new_inode: %m în timp ce se încerca crearea directorului /lost+found\n"
+
+#. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n
+#: e2fsck/problem.c:1907
+#, no-c-format
+msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n"
+msgstr "ext2fs_new_dir_block: %m în timp ce se creea un nou bloc de directoare\n"
+
+#. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n
+#: e2fsck/problem.c:1913
+#, no-c-format
+msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n"
+msgstr "ext2fs_write_dir_block: %m în timpul scrierii blocului de director pentru /lost+found\n"
+
+#. @-expanded: Error while adjusting inode count on inode %i\n
+#: e2fsck/problem.c:1919
+#, no-c-format
+msgid "Error while adjusting @i count on @i %i\n"
+msgstr "Eroare la ajustarea numărului de noduri-i în nodul-i %i\n"
+
+#. @-expanded: Couldn't fix parent of inode %i: %m\n
+#. @-expanded: \n
+#: e2fsck/problem.c:1925
+#, no-c-format
+msgid ""
+"Couldn't fix parent of @i %i: %m\n"
+"\n"
+msgstr ""
+"Nu s-a putut remedia părintele nodului-i %i: %m\n"
+"\n"
+
+#. @-expanded: Couldn't fix parent of inode %i: Couldn't find parent directory entry\n
+#. @-expanded: \n
+#: e2fsck/problem.c:1931
+#, no-c-format
+msgid ""
+"Couldn't fix parent of @i %i: Couldn't find parent @d @e\n"
+"\n"
+msgstr ""
+"Nu s-a putut remedia părintele nodului-i %i: Nu s-a putut găsi intrarea directorului părinte\n"
+"\n"
+
+#. @-expanded: Error creating root directory (%s): %m\n
+#: e2fsck/problem.c:1942
+#, no-c-format
+msgid "Error creating root @d (%s): %m\n"
+msgstr "Eroare la crearea directorului rădăcină (%s): %m\n"
+
+#. @-expanded: Error creating /lost+found directory (%s): %m\n
+#: e2fsck/problem.c:1948
+#, no-c-format
+msgid "Error creating /@l @d (%s): %m\n"
+msgstr "Eroare la crearea directorului /lost+found (%s): %m\n"
+
+#. @-expanded: root inode is not a directory; aborting.\n
+#: e2fsck/problem.c:1953
+msgid "@r is not a @d; aborting.\n"
+msgstr "nodul-i rădăcină nu este un director; se întrerupe.\n"
+
+#. @-expanded: Cannot proceed without a root inode.\n
+#: e2fsck/problem.c:1958
+msgid "Cannot proceed without a @r.\n"
+msgstr "Nu se poate continua fără un nod-i rădăcină.\n"
+
+#. @-expanded: /lost+found is not a directory (ino=%i)\n
+#: e2fsck/problem.c:1969
+#, no-c-format
+msgid "/@l is not a @d (ino=%i)\n"
+msgstr "/lost+found nu este un director (ino=%i)\n"
+
+#. @-expanded: /lost+found has inline data\n
+#: e2fsck/problem.c:1974
+msgid "/@l has inline data\n"
+msgstr "/@l are date disponibile în linie\n"
+
+#. @-expanded: Cannot allocate space for /lost+found.\n
+#. @-expanded: Place lost files in root directory instead
+#: e2fsck/problem.c:1979
+msgid ""
+"Cannot allocate space for /@l.\n"
+"Place lost files in root directory instead"
+msgstr ""
+"Nu se poate aloca spațiu pentru /@l.\n"
+"Fișierele pierdute vor fi plasate în directorul rădăcină, în schimb"
+
+#. @-expanded: Insufficient space to recover lost files!\n
+#. @-expanded: Move data off the filesystem and re-run e2fsck.\n
+#. @-expanded: \n
+#: e2fsck/problem.c:1984
+msgid ""
+"Insufficient space to recover lost files!\n"
+"Move data off the @f and re-run e2fsck.\n"
+"\n"
+msgstr ""
+"Spațiu insuficient pentru a recupera fișierele pierdute!\n"
+"Mutați datele în afara sistemului de fișiere și rulați din nou «e2fsck».\n"
+"\n"
+
+#. @-expanded: /lost+found is encrypted\n
+#: e2fsck/problem.c:1989
+msgid "/@l is encrypted\n"
+msgstr "/@l este criptat\n"
+
+#. @-expanded: Recursively looped directory inode %i (%p)\n
+#: e2fsck/problem.c:1995
+#, no-c-format
+msgid "Recursively looped @d @i %i (%p)\n"
+msgstr "Nodul-i de director în buclă recurentă %i (%p)\n"
+
+#: e2fsck/problem.c:2002
+msgid "Pass 3A: Optimizing directories\n"
+msgstr "Pasul 3A: Se optimizează directoarele\n"
+
+#: e2fsck/problem.c:2008
+#, no-c-format
+msgid "Failed to create dirs_to_hash iterator: %m\n"
+msgstr "Nu s-a reușit să se creeze iteratorul dirs_to_hash: %m\n"
+
+#: e2fsck/problem.c:2013
+msgid "Failed to optimize directory %q (%d): %m\n"
+msgstr "Nu s-a reușit să se optimizeze directorul %q (%d): %m\n"
+
+#: e2fsck/problem.c:2018
+msgid "Optimizing directories: "
+msgstr "Se optimizează directoarele: "
+
+#: e2fsck/problem.c:2035
+msgid "Pass 4: Checking reference counts\n"
+msgstr "Pasul 4: Se verifică numărul de referințe\n"
+
+#. @-expanded: unattached zero-length inode %i.
+#: e2fsck/problem.c:2041
+#, no-c-format
+msgid "@u @z @i %i. "
+msgstr "nodul-i de lungime zero neatașat %i. "
+
+#. @-expanded: unattached inode %i\n
+#: e2fsck/problem.c:2047
+#, no-c-format
+msgid "@u @i %i\n"
+msgstr "nodul-i neatașat %i\n"
+
+#. @-expanded: inode %i ref count is %Il, should be %N.
+#: e2fsck/problem.c:2052
+msgid "@i %i ref count is %Il, @s %N. "
+msgstr "numărul de referință al nodului-i %i este %Il, ar trebui să fie %N. "
+
+#. @-expanded: WARNING: PROGRAMMING BUG IN E2FSCK!\n
+#. @-expanded: \tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n
+#. @-expanded: inode_link_info[%i] is %N, inode.i_links_count is %Il. They should be the same!\n
+#: e2fsck/problem.c:2056
+msgid ""
+"WARNING: PROGRAMMING BUG IN E2FSCK!\n"
+"\tOR SOME BONEHEAD (YOU) IS CHECKING A MOUNTED (LIVE) FILESYSTEM.\n"
+"@i_link_info[%i] is %N, @i.i_links_count is %Il. They @s the same!\n"
+msgstr ""
+"ATENȚIE: EROARE DE PROGRAMARE ÎN E2FSCK!\n"
+"\tSAU UN IDIOT ( DVS.) VERIFICĂ UN SISTEM DE FIȘIERE MONTAT (ACTIV).\n"
+"@i_link_info[%i] este %N, @i.i_links_count este %Il. Ar trebui să fie la fel!\n"
+
+#. @-expanded: extended attribute inode %i ref count is %N, should be %n.
+#: e2fsck/problem.c:2063
+msgid "@a @i %i ref count is %N, @s %n. "
+msgstr "numărul de referință al nodului-i de atribute extinse %i este %N, ar trebui să fie %n. "
+
+#. @-expanded: directory exceeds max links, but no DIR_NLINK feature in superblock.\n
+#: e2fsck/problem.c:2068
+msgid "@d exceeds max links, but no DIR_NLINK feature in @S.\n"
+msgstr "@dul depășește numărul maxim de legături, dar nu există caracteristica DIR_NLINK în @S.\n"
+
+#. @-expanded: directory inode %i ref count set to overflow but could be exact value %N.
+#: e2fsck/problem.c:2073
+msgid "@d @i %i ref count set to overflow but could be exact value %N. "
+msgstr "numărul de referință al nodului-i de director %i este stabilit pentru depășire, dar ar putea fi valoarea exactă %N. "
+
+#. @-expanded: Pass 5: Checking group summary information\n
+#: e2fsck/problem.c:2080
+msgid "Pass 5: Checking @g summary information\n"
+msgstr "Pasul 5: Se verifică informațiile rezumatului grupului\n"
+
+#. @-expanded: Padding at end of inode bitmap is not set.
+#: e2fsck/problem.c:2085
+msgid "Padding at end of @i @B is not set. "
+msgstr "Spațiul de umplere la sfârșitul hărții de biți a nodului-i nu este definit. "
+
+#. @-expanded: Padding at end of block bitmap is not set.
+#: e2fsck/problem.c:2090
+msgid "Padding at end of @b @B is not set. "
+msgstr "Spațiul de umplere la sfârșitul hărții de biți a blocului nu este definit. "
+
+#. @-expanded: block bitmap differences:
+#: e2fsck/problem.c:2095
+msgid "@b @B differences: "
+msgstr "diferențele dintre hărțile de biți ale blocurilor: "
+
+#. @-expanded: inode bitmap differences:
+#: e2fsck/problem.c:2117
+msgid "@i @B differences: "
+msgstr "diferențele dintre hărțile de biți ale nodurilor-i: "
+
+#. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n
+#: e2fsck/problem.c:2139
+msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n"
+msgstr "Numărul de noduri-i libere este greșit pentru grupul #%g (%i, numărate=%j).\n"
+
+#. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n
+#: e2fsck/problem.c:2144
+msgid "Directories count wrong for @g #%g (%i, counted=%j).\n"
+msgstr "Numărătoarea directoarelor este greșită pentru grupul #%g (%i, numărate=%j).\n"
+
+#. @-expanded: Free inodes count wrong (%i, counted=%j).\n
+#: e2fsck/problem.c:2149
+msgid "Free @is count wrong (%i, counted=%j).\n"
+msgstr "Numărul de noduri-i libere este greșit (%i, numărate=%j).\n"
+
+#. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n
+#: e2fsck/problem.c:2154
+msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n"
+msgstr "Numărătoarea blocurilor libere este greșită pentru grupul #%g (%b, numărate=%c).\n"
+
+#. @-expanded: Free blocks count wrong (%b, counted=%c).\n
+#: e2fsck/problem.c:2159
+msgid "Free @bs count wrong (%b, counted=%c).\n"
+msgstr "Numărătoarea blocurilor libere este greșită (%b, numărate=%c).\n"
+
+#. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap
+#. @-expanded: endpoints (%i, %j)\n
+#: e2fsck/problem.c:2164
+msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n"
+msgstr ""
+"ERROR DE PROGRAMARE: punctele finale ale hărții de biți din sistemul de fișiere (#%N) (%b, %c)\n"
+"nu se potrivesc cu punctele finale calculate ale hărții de biți (%i, %j)\n"
+
+#: e2fsck/problem.c:2170
+msgid "Internal error: fudging end of bitmap (%N)\n"
+msgstr "Eroare internă: se manipulează sfârșitul hărții de biți (%N)\n"
+
+#. @-expanded: Error copying in replacement inode bitmap: %m\n
+#: e2fsck/problem.c:2176
+#, no-c-format
+msgid "Error copying in replacement @i @B: %m\n"
+msgstr "Eroare la copierea în harta de biți a blocului de înlocuire: %m\n"
+
+#. @-expanded: Error copying in replacement block bitmap: %m\n
+#: e2fsck/problem.c:2182
+#, no-c-format
+msgid "Error copying in replacement @b @B: %m\n"
+msgstr "Eroare la copierea în harta de biți a nodului-i de înlocuire: %m\n"
+
+#. @-expanded: group %g block(s) in use but group is marked BLOCK_UNINIT\n
+#: e2fsck/problem.c:2212
+#, no-c-format
+msgid "@g %g @b(s) in use but @g is marked BLOCK_UNINIT\n"
+msgstr "grupul %g are bloc(uri) în uz, dar grupul este marcat ca BLOCK_UNINIT\n"
+
+#. @-expanded: group %g inode(s) in use but group is marked INODE_UNINIT\n
+#: e2fsck/problem.c:2218
+#, no-c-format
+msgid "@g %g @i(s) in use but @g is marked INODE_UNINIT\n"
+msgstr "grupul %g are noduri-i în uz, dar grupul este marcat INODE_UNINIT\n"
+
+#. @-expanded: group %g inode bitmap does not match checksum.\n
+#: e2fsck/problem.c:2224
+#, no-c-format
+msgid "@g %g @i @B does not match checksum.\n"
+msgstr "Harta de biți a nodului-i al grupului %g nu se potrivește cu suma de control.\n"
+
+#. @-expanded: group %g block bitmap does not match checksum.\n
+#: e2fsck/problem.c:2230
+#, no-c-format
+msgid "@g %g @b @B does not match checksum.\n"
+msgstr "Harta de biți a blocului al grupului %g nu se potrivește cu suma de control.\n"
+
+#. @-expanded: Recreate journal
+#: e2fsck/problem.c:2237
+msgid "Recreate @j"
+msgstr "Recrearea jurnalului"
+
+#: e2fsck/problem.c:2242
+msgid "Update quota info for quota type %N"
+msgstr "Actualizarea informațiilor privind cotele pentru tipul de cotă %N"
+
+#. @-expanded: Error setting block group checksum info: %m\n
+#: e2fsck/problem.c:2248
+#, no-c-format
+msgid "Error setting @b @g checksum info: %m\n"
+msgstr "Eroare la stabilirea informațiilor privind suma de control a grupului de blocuri: %m\n"
+
+#: e2fsck/problem.c:2254
+#, no-c-format
+msgid "Error writing file system info: %m\n"
+msgstr "Eroare la scrierea informațiilor despre sistemul de fișiere: %m\n"
+
+#: e2fsck/problem.c:2260
+#, no-c-format
+msgid "Error flushing writes to storage device: %m\n"
+msgstr "Eroare de eliminare a scrierilor de pe dispozitivul de stocare: %m\n"
+
+#: e2fsck/problem.c:2265
+msgid "Error writing quota info for quota type %N: %m\n"
+msgstr "Eroare la scrierea informațiilor privind cota pentru tipul de cotă %N: %m\n"
+
+#: e2fsck/problem.c:2430
+#, c-format
+msgid "Unhandled error code (0x%x)!\n"
+msgstr "Cod de eroare necunoscut (0x%x)!\n"
+
+#: e2fsck/problem.c:2558 e2fsck/problem.c:2562
+msgid "IGNORED"
+msgstr "IGNORAT"
+
+#: e2fsck/quota.c:30 e2fsck/quota.c:37 e2fsck/quota.c:50 e2fsck/quota.c:59
+msgid "in move_quota_inode"
+msgstr "în move_quota_inode"
+
+#: e2fsck/scantest.c:79
+#, c-format
+msgid "Memory used: %lu, elapsed time: %6.3f/%6.3f/%6.3f\n"
+msgstr "Memorie utilizată: %lu, timp scurs: %6.3f/%6.3f/%6.3f\n"
+
+#: e2fsck/scantest.c:98
+#, c-format
+msgid "size of inode=%d\n"
+msgstr "dimensiunea nodului-i=%d\n"
+
+#: e2fsck/scantest.c:114 misc/e2image.c:1331
+msgid "while opening inode scan"
+msgstr "în timp ce se deschide scanarea nodurilor-i"
+
+#: e2fsck/scantest.c:119
+msgid "while starting inode scan"
+msgstr "în timp ce începe scanarea nodurilor-i"
+
+#: e2fsck/scantest.c:130
+msgid "while doing inode scan"
+msgstr "în timp ce se efectuează scanarea nodurilor-i"
+
+#: e2fsck/super.c:224
+#, c-format
+msgid "while calling ext2fs_block_iterate for inode %u"
+msgstr "în timp ce se apelează ext2fs_block_iterate pentru nodul-i %u"
+
+#: e2fsck/super.c:249
+#, c-format
+msgid "while calling ext2fs_adjust_ea_refcount2 for inode %u"
+msgstr "în timp ce se apelează ext2fs_adjust_ea_refcount2 pentru nodul-i %u"
+
+#: e2fsck/super.c:375
+msgid "Truncating"
+msgstr "Se trunchiază"
+
+#: e2fsck/super.c:376
+msgid "Clearing"
+msgstr "Se șterge"
+
+#: e2fsck/unix.c:79
+#, c-format
+msgid ""
+"Usage: %s [-panyrcdfktvDFV] [-b superblock] [-B blocksize]\n"
+"\t\t[-l|-L bad_blocks_file] [-C fd] [-j external_journal]\n"
+"\t\t[-E extended-options] [-z undo_file] device\n"
+msgstr ""
+"Utilizare: %s [-panyrcdfktvDFV] [-b super-bloc] [-B dimensiune-bloc]\n"
+"\t\t[-l|-L fișier_blocuri_defectuoase] [-C fd] [-j jurnal_extern]\n"
+"\t\t[-E opțiuni-extinse] [-z fișier_anulare_acțiuni] dispozitiv\n"
+
+#: e2fsck/unix.c:84
+msgid ""
+"\n"
+"Emergency help:\n"
+" -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"
+" -f Force checking even if filesystem is marked clean\n"
+msgstr ""
+"\n"
+"Ajutor în caz de urgență:\n"
+" -p Repară automat (fără întrebări)\n"
+" -n Nu face nicio modificare în sistemul de fișiere\n"
+" -y Presupune că răspunsul la toate întrebările este „da”\n"
+" -c Verifică dacă există blocuri defectuoase și le adaugă\n"
+" la lista de blocuri defectuoase\n"
+" -f Forțează verificarea chiar dacă sistemul de fișiere\n"
+" este marcat ca fiind curat\n"
+
+#: e2fsck/unix.c:90
+msgid ""
+" -v Be verbose\n"
+" -b superblock Use alternative superblock\n"
+" -B blocksize Force blocksize when looking for superblock\n"
+" -j external_journal Set location of the external journal\n"
+" -l bad_blocks_file Add to badblocks list\n"
+" -L bad_blocks_file Set badblocks list\n"
+" -z undo_file Create an undo file\n"
+msgstr ""
+" -v Oferă informații detaliate la ieșire\n"
+" -b super-bloc Utilizează super-blocul alternativ\n"
+" -B dimensiune-bloc Forțează dimensiunea blocurilor atunci când se caută\n"
+" un super-bloc\n"
+" -j jurnal_extern Definește locația jurnalului extern\n"
+" -l fișier_blocuri-defectuoase\n"
+" Adaugă la lista de blocuri defectuoase\n"
+" -L fișier_blocuri-defectuoase\n"
+" Definește locația listei de blocuri defectuoase\n"
+" -z undo_file Creează un fișier de anulare a acțiunilor (undo_file)\n"
+
+#: e2fsck/unix.c:138
+#, c-format
+msgid "%s: %u/%u files (%0d.%d%% non-contiguous), %llu/%llu blocks\n"
+msgstr "%s: %u/%u fișiere (%0d.%d%% nu sunt contigue), %llu/%llu blocuri\n"
+
+# R-GC, scrie:
+# primul mesaj cu versiune de plural.
+#: e2fsck/unix.c:165
+#, c-format
+msgid ""
+"\n"
+"%12u inode used (%2.2f%%, out of %u)\n"
+msgid_plural ""
+"\n"
+"%12u inodes used (%2.2f%%, out of %u)\n"
+msgstr[0] ""
+"\n"
+"%12u nod-i utilizat (%2.2f%%, din %u)\n"
+msgstr[1] ""
+"\n"
+"%12u noduri-i utilizate (%2.2f%%, din %u)\n"
+msgstr[2] ""
+"\n"
+"%12u noduri-i utilizate (%2.2f%%, din %u)\n"
+msgstr[3] ""
+"\n"
+"%12u de noduri-i utilizate (%2.2f%%, din %u)\n"
+
+#: e2fsck/unix.c:169
+#, c-format
+msgid "%12u non-contiguous file (%0d.%d%%)\n"
+msgid_plural "%12u non-contiguous files (%0d.%d%%)\n"
+msgstr[0] "%12u fișier nu este contiguu (%0d.%d%%)\n"
+msgstr[1] "%12u fișiere nu sunt contigue (%0d.%d%%)\n"
+msgstr[2] "%12u fișiere nu sunt contigue (%0d.%d%%)\n"
+msgstr[3] "%12u de fișiere nu sunt contigue (%0d.%d%%)\n"
+
+#: e2fsck/unix.c:174
+#, c-format
+msgid "%12u non-contiguous directory (%0d.%d%%)\n"
+msgid_plural "%12u non-contiguous directories (%0d.%d%%)\n"
+msgstr[0] "%12u director nu este contiguu (%0d.%d%%)\n"
+msgstr[1] "%12u directoare nu sunt contigue (%0d.%d%%)\n"
+msgstr[2] "%12u directoare nu sunt contigue (%0d.%d%%)\n"
+msgstr[3] "%12u de directoare nu sunt contigue (%0d.%d%%)\n"
+
+# R-GC, scrie:
+# traducerea inițială a acestui mesaj, era:
+# „nr. de noduri-i cu blocuri ind/dind/tind: %u/%u/%u”
+# ***
+# l-am modificat pentru că la rularea lui
+# «e2fsck» nu se pre înțelegea ce vrea
+# să însemne »ind/dind/tind«.
+#: e2fsck/unix.c:179
+#, c-format
+msgid " # of inodes with ind/dind/tind blocks: %u/%u/%u\n"
+msgstr " nr. de noduri-i cu blocuri indirecte: %u simplu, %u dublu, %u triplu\n"
+
+#: e2fsck/unix.c:187
+msgid " Extent depth histogram: "
+msgstr " Histograma de adâncime a „extents”: "
+
+#: e2fsck/unix.c:196
+#, c-format
+msgid "%12llu block used (%2.2f%%, out of %llu)\n"
+msgid_plural "%12llu blocks used (%2.2f%%, out of %llu)\n"
+msgstr[0] "%12llu bloc utilizat (%2.2f%%, din %llu)\n"
+msgstr[1] "%12llu blocuri utilizate (%2.2f%%, din %llu)\n"
+msgstr[2] "%12llu blocuri utilizate (%2.2f%%, din %llu)\n"
+msgstr[3] "%12llu de blocuri utilizate (%2.2f%%, din %llu)\n"
+
+#: e2fsck/unix.c:201
+#, c-format
+msgid "%12u bad block\n"
+msgid_plural "%12u bad blocks\n"
+msgstr[0] "%12u bloc defectuos\n"
+msgstr[1] "%12u blocuri defectuoase\n"
+msgstr[2] "%12u blocuri defectuoase\n"
+msgstr[3] "%12u de blocuri defectuoase\n"
+
+#: e2fsck/unix.c:203
+#, c-format
+msgid "%12u large file\n"
+msgid_plural "%12u large files\n"
+msgstr[0] "%12u fișier mare\n"
+msgstr[1] "%12u fișiere mari\n"
+msgstr[2] "%12u fișiere mari\n"
+msgstr[3] "%12u de fișiere mari\n"
+
+#: e2fsck/unix.c:205
+#, c-format
+msgid ""
+"\n"
+"%12u regular file\n"
+msgid_plural ""
+"\n"
+"%12u regular files\n"
+msgstr[0] ""
+"\n"
+"%12u fișier obișnuit\n"
+msgstr[1] ""
+"\n"
+"%12u fișiere obișnuite\n"
+msgstr[2] ""
+"\n"
+"%12u fișiere obișnuite\n"
+msgstr[3] ""
+"\n"
+"%12u de fișiere obișnuite\n"
+
+#: e2fsck/unix.c:207
+#, c-format
+msgid "%12u directory\n"
+msgid_plural "%12u directories\n"
+msgstr[0] "%12u director\n"
+msgstr[1] "%12u directoare\n"
+msgstr[2] "%12u directoare\n"
+msgstr[3] "%12u de directoare\n"
+
+#: e2fsck/unix.c:209
+#, c-format
+msgid "%12u character device file\n"
+msgid_plural "%12u character device files\n"
+msgstr[0] "%12u fișier de dispozitiv de caractere\n"
+msgstr[1] "%12u fișiere de dispozitiv de caractere\n"
+msgstr[2] "%12u fișiere de dispozitiv de caractere\n"
+msgstr[3] "%12u de fișiere de dispozitiv de caractere\n"
+
+#: e2fsck/unix.c:212
+#, c-format
+msgid "%12u block device file\n"
+msgid_plural "%12u block device files\n"
+msgstr[0] "%12u fișier de dispozitiv de bloc\n"
+msgstr[1] "%12u fișiere de dispozitiv de bloc\n"
+msgstr[2] "%12u fișiere de dispozitiv de bloc\n"
+msgstr[3] "%12u de fișiere de dispozitiv de bloc\n"
+
+#: e2fsck/unix.c:214
+#, c-format
+msgid "%12u fifo\n"
+msgid_plural "%12u fifos\n"
+msgstr[0] "%12u conductă cu nume (fifo)\n"
+msgstr[1] "%12u conducte cu nume (fifos)\n"
+msgstr[2] "%12u conducte cu nume (fifos)\n"
+msgstr[3] "%12u de conducte cu nume (fifos)\n"
+
+#: e2fsck/unix.c:216
+#, c-format
+msgid "%12u link\n"
+msgid_plural "%12u links\n"
+msgstr[0] "%12u legătură\n"
+msgstr[1] "%12u legături\n"
+msgstr[2] "%12u legături\n"
+msgstr[3] "%12u de legături\n"
+
+#: e2fsck/unix.c:218
+#, c-format
+msgid "%12u symbolic link"
+msgid_plural "%12u symbolic links"
+msgstr[0] "%12u legătură simbolică"
+msgstr[1] "%12u legături simbolice"
+msgstr[2] "%12u legături simbolice"
+msgstr[3] "%12u de legături simbolice"
+
+#: e2fsck/unix.c:220
+#, c-format
+msgid " (%u fast symbolic link)\n"
+msgid_plural " (%u fast symbolic links)\n"
+msgstr[0] " (%u legătură simbolică rapidă)\n"
+msgstr[1] " (%u legături simbolice rapide)\n"
+msgstr[2] " (%u legături simbolice rapide)\n"
+msgstr[3] " (%u de legături simbolice rapide)\n"
+
+#: e2fsck/unix.c:224
+#, c-format
+msgid "%12u socket\n"
+msgid_plural "%12u sockets\n"
+msgstr[0] "%12u soclu\n"
+msgstr[1] "%12u socluri\n"
+msgstr[2] "%12u socluri\n"
+msgstr[3] "%12u de socluri\n"
+
+#: e2fsck/unix.c:228
+#, c-format
+msgid "%12u file\n"
+msgid_plural "%12u files\n"
+msgstr[0] "%12u fișier\n"
+msgstr[1] "%12u fișiere\n"
+msgstr[2] "%12u fișiere\n"
+msgstr[3] "%12u de fișiere\n"
+
+#: e2fsck/unix.c:241 misc/badblocks.c:1001 misc/tune2fs.c:3082 misc/util.c:130
+#: resize/main.c:359
+#, c-format
+msgid "while determining whether %s is mounted."
+msgstr "în timp ce se determina dacă %s este montat."
+
+#: e2fsck/unix.c:262
+#, c-format
+msgid "Warning! %s is mounted.\n"
+msgstr "Atenție! %s este montat.\n"
+
+#: e2fsck/unix.c:265
+#, c-format
+msgid "Warning! %s is in use.\n"
+msgstr "Atenție! %s este în uz.\n"
+
+#: e2fsck/unix.c:271
+#, c-format
+msgid "%s is mounted.\n"
+msgstr "%s este montat.\n"
+
+#: e2fsck/unix.c:273
+#, c-format
+msgid "%s is in use.\n"
+msgstr "%s este în uz.\n"
+
+#: e2fsck/unix.c:275
+msgid ""
+"Cannot continue, aborting.\n"
+"\n"
+msgstr ""
+"Nu se poate continua, se abandonează.\n"
+"\n"
+
+#: e2fsck/unix.c:277
+msgid ""
+"\n"
+"\n"
+"WARNING!!! The filesystem is mounted. If you continue you ***WILL***\n"
+"cause ***SEVERE*** filesystem damage.\n"
+"\n"
+msgstr ""
+"\n"
+"\n"
+"AVERTISMENT!!! Sistemul de fișiere este montat. Dacă continuați,\n"
+" ***VEȚI*** cauza daune ***SEVERE*** sistemului de fișiere.\n"
+"\n"
+
+#: e2fsck/unix.c:282
+msgid "Do you really want to continue"
+msgstr "Doriți cu adevărat să continuați"
+
+#: e2fsck/unix.c:284
+msgid "check aborted.\n"
+msgstr "verificarea a fost anulată.\n"
+
+#: e2fsck/unix.c:378
+msgid " contains a file system with errors"
+msgstr " conține un sistem de fișiere cu erori"
+
+#: e2fsck/unix.c:380
+msgid " was not cleanly unmounted"
+msgstr " nu a fost demontat în mod corect"
+
+#: e2fsck/unix.c:382
+msgid " primary superblock features different from backup"
+msgstr " caracteristicile super-blocului primar sunt diferite de cele ale blocului de rezervă"
+
+#: e2fsck/unix.c:386
+#, c-format
+msgid " has been mounted %u times without being checked"
+msgstr " a fost montat de %u ori fără a fi verificat"
+
+#: e2fsck/unix.c:393
+msgid " has filesystem last checked time in the future"
+msgstr " are ultima dată de verificare a sistemului de fișiere în viitor"
+
+#: e2fsck/unix.c:399
+#, c-format
+msgid " has gone %u days without being checked"
+msgstr " au trecut %u zile fără să fie verificat"
+
+#: e2fsck/unix.c:407
+msgid "ignoring check interval, broken_system_clock set\n"
+msgstr "se ignoră intervalul de verificare, broken_system_clock activat\n"
+
+#: e2fsck/unix.c:413
+msgid ", check forced.\n"
+msgstr ", verificare forțată.\n"
+
+#: e2fsck/unix.c:446
+#, c-format
+msgid "%s: clean, %u/%u files, %llu/%llu blocks"
+msgstr "%s: curat, %u/%u fișiere, %llu/%llu blocuri"
+
+#: e2fsck/unix.c:466
+msgid " (check deferred; on battery)"
+msgstr " (verificare amânată; pe baterie)"
+
+#: e2fsck/unix.c:469
+msgid " (check after next mount)"
+msgstr " (se verifică după următoarea montare)"
+
+#: e2fsck/unix.c:471
+#, c-format
+msgid " (check in %ld mounts)"
+msgstr " (se verifică după %ld montări)"
+
+#: e2fsck/unix.c:621
+#, c-format
+msgid "ERROR: Couldn't open /dev/null (%s)\n"
+msgstr "EROARE: Nu s-a putut deschide /dev/null (%s)\n"
+
+#: e2fsck/unix.c:692
+msgid "Invalid EA version.\n"
+msgstr "Versiune nevalidă a atributelor extinse.\n"
+
+#: e2fsck/unix.c:705
+msgid "Invalid readahead buffer size.\n"
+msgstr "Dimensiunea memoriei tampon pentru citirea anticipată nu este validă.\n"
+
+#: e2fsck/unix.c:768
+#, c-format
+msgid "Unknown extended option: %s\n"
+msgstr "Opțiune extinsă necunoscută: %s\n"
+
+#: e2fsck/unix.c:776
+msgid ""
+"\n"
+"Extended options are separated by commas, and may take an argument which\n"
+"is set off by an equals ('=') sign. Valid extended options are:\n"
+"\n"
+msgstr ""
+"\n"
+"Opțiunile extinse sunt separate prin virgule și pot primi un argument care\n"
+"este definit de un semn egal („=”). Opțiunile extinse valide sunt:\n"
+"\n"
+
+#: e2fsck/unix.c:780
+msgid "\tea_ver=<ea_version (1 or 2)>\n"
+msgstr "\tea_ver=<ea_version (1 sau 2)>\n"
+
+#: e2fsck/unix.c:789
+msgid "\treadahead_kb=<buffer size>\n"
+msgstr "\treadahead_kb=<dimensiunea-memoriei-tampon>\n"
+
+#: e2fsck/unix.c:802
+#, c-format
+msgid ""
+"Syntax error in e2fsck config file (%s, line #%d)\n"
+"\t%s\n"
+msgstr ""
+"Eroare de sintaxă în fișierul de configurare al «e2fsck» (%s, linia nr. %d)\n"
+"\t%s\n"
+
+#: e2fsck/unix.c:875
+#, c-format
+msgid "Error validating file descriptor %d: %s\n"
+msgstr "Eroare la validarea descriptorului de fișier %d: %s\n"
+
+# R-GC, scrie:
+# s-ar putea ca traducerea corectă
+# a acestui mesaj, să fie:
+# „Informații de completare a descriptorului de fișier nevalide”
+#: e2fsck/unix.c:879
+msgid "Invalid completion information file descriptor"
+msgstr "Descriptor de fișier de informații de completare (progres) nevalid"
+
+#: e2fsck/unix.c:894
+msgid "Only one of the options -p/-a, -n or -y may be specified."
+msgstr "Doar una dintre opțiunile „-p”/„-a”, „-n” sau „-y” poate fi specificată."
+
+#: e2fsck/unix.c:915
+#, c-format
+msgid "The -t option is not supported on this version of e2fsck.\n"
+msgstr "Opțiunea „-t” nu este disponibilă în această versiune de «e2fsck».\n"
+
+#: e2fsck/unix.c:947 e2fsck/unix.c:1025 misc/e2initrd_helper.c:331
+#: misc/tune2fs.c:1780 misc/tune2fs.c:2080 misc/tune2fs.c:2098
+#, c-format
+msgid "Unable to resolve '%s'"
+msgstr "Nu se poate rezolva „%s”"
+
+#: e2fsck/unix.c:1004
+msgid "The -n and -D options are incompatible."
+msgstr "Opțiunile „-n” și „-D” sunt incompatibile."
+
+#: e2fsck/unix.c:1009
+msgid "The -n and -c options are incompatible."
+msgstr "Opțiunile „-n” și „-c” sunt incompatibile."
+
+#: e2fsck/unix.c:1014
+msgid "The -n and -l/-L options are incompatible."
+msgstr "Opțiunile „-n” și „-l/-L” sunt incompatibile."
+
+#: e2fsck/unix.c:1038
+msgid "The -D and -E fixes_only options are incompatible."
+msgstr "Opțiunile „-D” și „-E fixes_only” sunt incompatibile."
+
+#: e2fsck/unix.c:1044
+msgid "The -E bmap2extent and fixes_only options are incompatible."
+msgstr "Opțiunile „-E bmap2extent și fixes_only” sunt incompatibile."
+
+#: e2fsck/unix.c:1095
+#, c-format
+msgid "while opening %s for flushing"
+msgstr "în timp ce se deschidea %s pentru golire"
+
+#: e2fsck/unix.c:1101 resize/main.c:391
+#, c-format
+msgid "while trying to flush %s"
+msgstr "în timp ce se încerca să se golească %s"
+
+#: e2fsck/unix.c:1108
+msgid "The -c and the -l/-L options may not be both used at the same time.\n"
+msgstr "Opțiunile „-c” și „-l/-L” nu pot fi utilizate în același timp.\n"
+
+#: e2fsck/unix.c:1155
+#, c-format
+msgid ""
+"E2FSCK_JBD_DEBUG \"%s\" not an integer\n"
+"\n"
+msgstr ""
+"E2FSCK_JBD_DEBUG „%s” nu este un număr întreg\n"
+"\n"
+
+#: e2fsck/unix.c:1164
+#, c-format
+msgid ""
+"\n"
+"Invalid non-numeric argument to -%c (\"%s\")\n"
+"\n"
+msgstr ""
+"\n"
+"Argument nenumeric nevalid pentru -%c („%s”)\n"
+"\n"
+
+#: e2fsck/unix.c:1262
+#, c-format
+msgid "MMP interval is %u seconds and total wait time is %u seconds. Please wait...\n"
+msgstr "Intervalul MMP este de %u secunde, iar timpul total de așteptare este de %u secunde. Vă rugăm să așteptați...\n"
+
+#: e2fsck/unix.c:1279 e2fsck/unix.c:1284
+msgid "while checking MMP block"
+msgstr "în timp ce se verifica blocul MMP"
+
+#: e2fsck/unix.c:1286
+#, c-format
+msgid ""
+"If you are sure the filesystem is not in use on any node, run:\n"
+"'tune2fs -f -E clear_mmp %s'\n"
+msgstr ""
+"Dacă sunteți sigur că sistemul de fișiere nu este utilizat pe niciun nod (mașină din rețea),\n"
+"rulați comanda: «tune2fs -f -E clear_mmp %s»\n"
+
+#: e2fsck/unix.c:1302
+msgid "while reading MMP block"
+msgstr "în timpul citirii blocului MMP"
+
+#: e2fsck/unix.c:1322 e2fsck/unix.c:1374 misc/e2undo.c:240 misc/e2undo.c:285
+#: misc/mke2fs.c:2758 misc/mke2fs.c:2809 misc/tune2fs.c:2805
+#: misc/tune2fs.c:2850 resize/main.c:188 resize/main.c:233
+#, c-format
+msgid ""
+"Overwriting existing filesystem; this can be undone using the command:\n"
+" e2undo %s %s\n"
+"\n"
+msgstr ""
+"Se suprascrie sistemul de fișiere existent; acest lucru poate fi anulat cu ajutorul comenzii:\n"
+" «e2undo %s %s»\n"
+"\n"
+
+#: e2fsck/unix.c:1363 misc/e2undo.c:274 misc/mke2fs.c:2798 misc/tune2fs.c:2839
+#: resize/main.c:222
+#, c-format
+msgid "while trying to delete %s"
+msgstr "în timp ce se încerca să se șteargă %s"
+
+#: e2fsck/unix.c:1389 misc/mke2fs.c:2824 resize/main.c:243
+msgid "while trying to setup undo file\n"
+msgstr "în timp ce se încerca configurarea fișierului de anulare „undo”\n"
+
+#: e2fsck/unix.c:1433
+msgid "Error: ext2fs library version out of date!\n"
+msgstr "Eroare: versiunea bibliotecii „ext2fs” este învechită!\n"
+
+#: e2fsck/unix.c:1440
+msgid "while trying to initialize program"
+msgstr "în timp ce încerca să inițializeze programul"
+
+#: e2fsck/unix.c:1477
+#, c-format
+msgid "\tUsing %s, %s\n"
+msgstr "\tFolosind %s, %s\n"
+
+#: e2fsck/unix.c:1489
+msgid "need terminal for interactive repairs"
+msgstr "este nevoie de un terminal pentru reparații interactive"
+
+# R-GC, scrie:
+# mesajul în engleză, nu este prea clar,
+# e vorba de crearea copiilor de rezervă,
+# sau de citirea/utilizarea acestora?
+# *****
+# Și echipele din TP sunt divizate în
+# traducea acestui mesaj...
+# ===
+# Probabil citirea codului sursă ar face
+# lumină...
+# -*-*-*-
+# Am făcut-o, dacă am înțeles bine codul sursă,
+# mesajul acesta este tradus corect:
+# «se încearcă citirea/utilizarea blocurilor...»
+#: e2fsck/unix.c:1550
+#, c-format
+msgid "%s: %s trying backup blocks...\n"
+msgstr "%s: %s se încearcă citirea blocurilor de rezervă...\n"
+
+#: e2fsck/unix.c:1552
+msgid "Superblock invalid,"
+msgstr "Superblock invalid,"
+
+#: e2fsck/unix.c:1553
+msgid "Group descriptors look bad..."
+msgstr "Descriptorii de grup nu par să fie în bună stare..."
+
+#: e2fsck/unix.c:1563
+#, c-format
+msgid "%s: %s while using the backup blocks"
+msgstr "%s: %s în timpul utilizării blocurilor de rezervă"
+
+#: e2fsck/unix.c:1567
+#, c-format
+msgid "%s: going back to original superblock\n"
+msgstr "%s: se revine la super-blocul original\n"
+
+#: e2fsck/unix.c:1596
+msgid ""
+"The filesystem revision is apparently too high for this version of e2fsck.\n"
+"(Or the filesystem superblock is corrupt)\n"
+"\n"
+msgstr ""
+"Versiunea sistemului de fișiere este aparent prea mare pentru această versiune de «e2fsck».\n"
+"(Sau super-blocul sistemului de fișiere este corupt)\n"
+"\n"
+
+#: e2fsck/unix.c:1603
+msgid "Could this be a zero-length partition?\n"
+msgstr "Ar putea aceasta să fie o partiție de lungime zero?\n"
+
+#: e2fsck/unix.c:1605
+#, c-format
+msgid "You must have %s access to the filesystem or be root\n"
+msgstr "Trebuie să aveți acces %s la sistemul de fișiere sau să fiți root\n"
+
+#: e2fsck/unix.c:1611
+msgid "Possibly non-existent or swap device?\n"
+msgstr "Este posibil să nu existe sau să fie un dispozitiv de interschimb (swap)?\n"
+
+#: e2fsck/unix.c:1613
+msgid "Filesystem mounted or opened exclusively by another program?\n"
+msgstr "Sistemul de fișiere este montat sau deschis exclusiv de un alt program?\n"
+
+#: e2fsck/unix.c:1617
+msgid "Possibly non-existent device?\n"
+msgstr "Este posibil să fie un dispozitiv inexistent?\n"
+
+#: e2fsck/unix.c:1620
+msgid ""
+"Disk write-protected; use the -n option to do a read-only\n"
+"check of the device.\n"
+msgstr ""
+"Discul este protejat la scriere. Utilizați opțiunea „-n” pentru a efectua\n"
+"o verificare în regim de „doar-citire” a dispozitivului.\n"
+
+#: e2fsck/unix.c:1635
+#, c-format
+msgid "%s: Trying to load superblock despite errors...\n"
+msgstr "%s: Se încearcă încărcarea super-blocului în ciuda erorilor...\n"
+
+#: e2fsck/unix.c:1710
+msgid "Get a newer version of e2fsck!"
+msgstr "Obțineți o versiune mai nouă de «e2fsck»!"
+
+#: e2fsck/unix.c:1770
+#, c-format
+msgid "while checking journal for %s"
+msgstr "în timp ce se verifica jurnalul pentru %s"
+
+#: e2fsck/unix.c:1773
+msgid "Cannot proceed with file system check"
+msgstr "Nu se poate continua cu verificarea sistemului de fișiere"
+
+#: e2fsck/unix.c:1784
+msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n"
+msgstr "Atenție: se omite recuperarea jurnalului deoarece se face o verificare a sistemului de fișiere în regim de „doar-citire”.\n"
+
+#: e2fsck/unix.c:1796
+#, c-format
+msgid "unable to set superblock flags on %s\n"
+msgstr "nu se pot activa fanioanele de super-bloc pe %s\n"
+
+#: e2fsck/unix.c:1802
+#, c-format
+msgid "Journal checksum error found in %s\n"
+msgstr "S-a găsit o eroare la verificarea sumei de control a jurnalului în %s\n"
+
+#: e2fsck/unix.c:1806
+#, c-format
+msgid "Journal corrupted in %s\n"
+msgstr "Jurnal corupt în %s\n"
+
+#: e2fsck/unix.c:1810
+#, c-format
+msgid "while recovering journal of %s"
+msgstr "în timp ce se recupera jurnalul din %s"
+
+#: e2fsck/unix.c:1832
+#, c-format
+msgid "%s has unsupported feature(s):"
+msgstr "%s are caracteristici neacceptate:"
+
+#: e2fsck/unix.c:1847
+#, c-format
+msgid "%s has unsupported encoding: %0x\n"
+msgstr "%s are codificarea neacceptată: %0x\n"
+
+#: e2fsck/unix.c:1897
+#, c-format
+msgid "%s: %s while reading bad blocks inode\n"
+msgstr "%s: %s în timp ce se citea nodul-i al blocurilor defectuoase\n"
+
+#: e2fsck/unix.c:1900
+msgid "This doesn't bode well, but we'll try to go on...\n"
+msgstr "Acest lucru nu este de bun augur, dar se va încerca să se meargă mai departe...\n"
+
+#: e2fsck/unix.c:1943
+#, c-format
+msgid "Creating journal (%d blocks): "
+msgstr "Se creează jurnalul (%d blocuri): "
+
+#: e2fsck/unix.c:1952
+msgid " Done.\n"
+msgstr " Gata, s-a făcut..\n"
+
+#: e2fsck/unix.c:1954
+msgid ""
+"\n"
+"*** journal has been regenerated ***\n"
+msgstr ""
+"\n"
+"*** jurnalul a fost regenerat ***\n"
+
+#: e2fsck/unix.c:1960
+msgid "aborted"
+msgstr "abandonare"
+
+#: e2fsck/unix.c:1962
+#, c-format
+msgid "%s: e2fsck canceled.\n"
+msgstr "%s: rularea «e2fsck» a fost anulată.\n"
+
+#: e2fsck/unix.c:1989
+msgid "Restarting e2fsck from the beginning...\n"
+msgstr "Se repornește (reia) «e2fsck» de la început...\n"
+
+#: e2fsck/unix.c:1993
+msgid "while resetting context"
+msgstr "în timpul reinițializării contextului"
+
+#: e2fsck/unix.c:2052
+#, c-format
+msgid ""
+"\n"
+"%s: ***** FILE SYSTEM ERRORS CORRECTED *****\n"
+msgstr ""
+"\n"
+"%s: ***** ERORILE SISTEMULUI DE FIȘIERE AU FOST CORECTATE *****\n"
+
+#: e2fsck/unix.c:2054
+#, c-format
+msgid "%s: File system was modified.\n"
+msgstr "%s: Sistemul de fișiere a fost modificat.\n"
+
+#: e2fsck/unix.c:2058 e2fsck/util.c:67
+#, c-format
+msgid ""
+"\n"
+"%s: ***** FILE SYSTEM WAS MODIFIED *****\n"
+msgstr ""
+"\n"
+"%s: ***** SISTEMUL DE FIȘIERE A FOST MODIFICAT *****\n"
+
+#: e2fsck/unix.c:2063
+#, c-format
+msgid "%s: ***** REBOOT SYSTEM *****\n"
+msgstr "%s: ***** SE REPORNEȘTE SISTEMUL *****\n"
+
+#: e2fsck/unix.c:2073 e2fsck/util.c:73
+#, c-format
+msgid ""
+"\n"
+"%s: ********** WARNING: Filesystem still has errors **********\n"
+"\n"
+msgstr ""
+"\n"
+"%s: ********** AVERTISMENT: Sistemul de fișiere are încă erori **********\n"
+"\n"
+
+#: e2fsck/util.c:191 misc/util.c:94
+msgid "yY"
+msgstr "dD"
+
+#: e2fsck/util.c:192 misc/util.c:113
+msgid "nN"
+msgstr "nN"
+
+#: e2fsck/util.c:193
+msgid "aA"
+msgstr "tT"
+
+#: e2fsck/util.c:197
+msgid " ('a' enables 'yes' to all) "
+msgstr " („t” activează «da» la toate) "
+
+#: e2fsck/util.c:214
+msgid "<y>"
+msgstr "<d>"
+
+#: e2fsck/util.c:216
+msgid "<n>"
+msgstr "<n>"
+
+#: e2fsck/util.c:218
+msgid " (y/n)"
+msgstr " (d/n)"
+
+#: e2fsck/util.c:241
+msgid "cancelled!\n"
+msgstr "anulat!\n"
+
+#: e2fsck/util.c:274
+msgid "yes to all\n"
+msgstr "«da» la toate\n"
+
+#: e2fsck/util.c:276
+msgid "yes\n"
+msgstr "da\n"
+
+#: e2fsck/util.c:278
+msgid "no\n"
+msgstr "nu\n"
+
+#: e2fsck/util.c:288
+#, c-format
+msgid ""
+"%s? no\n"
+"\n"
+msgstr ""
+"%s? nu\n"
+"\n"
+
+#: e2fsck/util.c:292
+#, c-format
+msgid ""
+"%s? yes\n"
+"\n"
+msgstr ""
+"%s? da\n"
+"\n"
+
+#: e2fsck/util.c:296
+msgid "yes"
+msgstr "da"
+
+#: e2fsck/util.c:296
+msgid "no"
+msgstr "nu"
+
+#: e2fsck/util.c:312
+#, c-format
+msgid "e2fsck_read_bitmaps: illegal bitmap block(s) for %s"
+msgstr "e2fsck_read_bitmaps(): blocuri de hărți de biți ilegale pentru %s"
+
+#: e2fsck/util.c:317
+msgid "reading inode and block bitmaps"
+msgstr "se citesc hărțile de biți ale nodurilor-i și ale blocurilor"
+
+#: e2fsck/util.c:329
+#, c-format
+msgid "while retrying to read bitmaps for %s"
+msgstr "în timp ce se reîncerca să se citească hărțile de biți pentru %s"
+
+#: e2fsck/util.c:341
+msgid "writing block and inode bitmaps"
+msgstr "se scriu hărțile de biți ale blocurilor și nodurilor-i"
+
+#: e2fsck/util.c:346
+#, c-format
+msgid "while rewriting block and inode bitmaps for %s"
+msgstr "în timp ce se rescriau hărțile de biți ale blocurilor și nodurilor-i pentru %s"
+
+#: e2fsck/util.c:358
+#, c-format
+msgid ""
+"\n"
+"\n"
+"%s: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.\n"
+"\t(i.e., without -a or -p options)\n"
+msgstr ""
+"\n"
+"\n"
+"%s: INCONSISTENȚĂ NEAȘTEPTATĂ; RULAȚI «fsck» MANUAL.\n"
+"\t(adică, fără opțiunile „-a” sau „-p”)\n"
+
+#: e2fsck/util.c:437 e2fsck/util.c:447
+#, c-format
+msgid "Memory used: %lluk/%lluk (%lluk/%lluk), "
+msgstr "Memorie utilizată: %lluk/%lluk (%lluk/%lluk), "
+
+#: e2fsck/util.c:453
+#, c-format
+msgid "Memory used: %lluk, "
+msgstr "Memorie utilizată: %lluk, "
+
+#: e2fsck/util.c:459
+#, c-format
+msgid "time: %5.2f/%5.2f/%5.2f\n"
+msgstr "timp: %5.2f/%5.2f/%5.2f\n"
+
+#: e2fsck/util.c:464
+#, c-format
+msgid "elapsed time: %6.3f\n"
+msgstr "timp scurs: %6.3f\n"
+
+#: e2fsck/util.c:499 e2fsck/util.c:513
+#, c-format
+msgid "while reading inode %lu in %s"
+msgstr "în timp ce se citea nodul-i %lu din %s"
+
+#: e2fsck/util.c:527 e2fsck/util.c:540
+#, c-format
+msgid "while writing inode %lu in %s"
+msgstr "în timp ce se scria nodul-i %lu în %s"
+
+#: e2fsck/util.c:799
+msgid "UNEXPECTED INCONSISTENCY: the filesystem is being modified while fsck is running.\n"
+msgstr "INCONSISTENȚĂ NEAȘTEPTATĂ: sistemul de fișiere este în curs de modificare în timp ce «fsck» rulează.\n"
+
+#: misc/badblocks.c:75
+msgid "done \n"
+msgstr "gata, s-a făcut \n"
+
+#: misc/badblocks.c:100
+#, c-format
+msgid ""
+"Usage: %s [-b block_size] [-i input_file] [-o output_file] [-svwnfBX]\n"
+" [-c blocks_at_once] [-d delay_factor_between_reads] [-e max_bad_blocks]\n"
+" [-p num_passes] [-t test_pattern [-t test_pattern [...]]]\n"
+" device [last_block [first_block]]\n"
+msgstr ""
+"Utilizare: %s [-b dim_bloc] [-i fișier_intrare] [-o fișier_ieșire] [-svwnfBX]\n"
+" [-c blocuri_deodată] [-d factor-de-întârziere_între_citiri]\n"
+" [-e max_blocuri_defectuoase] [-p număr-de-pași]\n"
+" [-t model_test [-t model_test [...]]]\n"
+" dispozitiv [ultimul_bloc primul_bloc]]\n"
+
+#: misc/badblocks.c:111
+#, c-format
+msgid ""
+"%s: The -n and -w options are mutually exclusive.\n"
+"\n"
+msgstr ""
+"%s: Opțiunile -n și -w se exclud reciproc.\n"
+"\n"
+
+#: misc/badblocks.c:229
+#, c-format
+msgid "%6.2f%% done, %s elapsed. (%d/%d/%d errors)"
+msgstr "%6.2f%% făcut, %s s-a scurs. (%d/%d/%d erori)"
+
+#: misc/badblocks.c:337
+msgid "Testing with random pattern: "
+msgstr "Se testează cu un model aleatoriu: "
+
+#: misc/badblocks.c:355
+msgid "Testing with pattern 0x"
+msgstr "Se testează cu modelul 0x"
+
+#: misc/badblocks.c:387 misc/badblocks.c:460
+msgid "during seek"
+msgstr "în timpul cercetării"
+
+#: misc/badblocks.c:398
+#, c-format
+msgid "Weird value (%ld) in do_read\n"
+msgstr "Valoare ciudată (%ld) în do_read\n"
+
+#: misc/badblocks.c:485
+msgid "during ext2fs_sync_device"
+msgstr "în timpul rulării ext2fs_sync_device"
+
+#: misc/badblocks.c:505 misc/badblocks.c:767
+msgid "while beginning bad block list iteration"
+msgstr "în timp ce se începea iterația listei de blocuri defectuoase"
+
+#: misc/badblocks.c:520 misc/badblocks.c:620 misc/badblocks.c:778
+msgid "while allocating buffers"
+msgstr "în timp ce se alocau memoriile tampon"
+
+#: misc/badblocks.c:524
+#, c-format
+msgid "Checking blocks %lu to %lu\n"
+msgstr "Se verifică blocurile de la %lu la %lu\n"
+
+#: misc/badblocks.c:529
+msgid "Checking for bad blocks in read-only mode\n"
+msgstr "Se verifică dacă există blocuri defectuoase în modul doar-citire\n"
+
+#: misc/badblocks.c:538
+msgid "Checking for bad blocks (read-only test): "
+msgstr "Se verifică dacă există blocuri defecte (test doar-citire): "
+
+#: misc/badblocks.c:545 misc/badblocks.c:652 misc/badblocks.c:694
+#: misc/badblocks.c:841
+msgid "Too many bad blocks, aborting test\n"
+msgstr "Prea multe blocuri defectuoase, se abandonează testarea\n"
+
+#: misc/badblocks.c:627
+msgid "Checking for bad blocks in read-write mode\n"
+msgstr "Se verifică dacă există blocuri defecte în modul de „citire-scriere”\n"
+
+#: misc/badblocks.c:629 misc/badblocks.c:791
+#, c-format
+msgid "From block %lu to %lu\n"
+msgstr "De la blocul %lu la %lu\n"
+
+#: misc/badblocks.c:684
+msgid "Reading and comparing: "
+msgstr "Citind și comparând: "
+
+#: misc/badblocks.c:790
+msgid "Checking for bad blocks in non-destructive read-write mode\n"
+msgstr "Se verifică dacă există blocuri defectuoase în modul nedistructiv de „citire-scriere”\n"
+
+#: misc/badblocks.c:796
+msgid "Checking for bad blocks (non-destructive read-write test)\n"
+msgstr "Se verifică dacă există blocuri defectuoase (test nedistructiv de „citire-scriere”)\n"
+
+#: misc/badblocks.c:803
+msgid ""
+"\n"
+"Interrupt caught, cleaning up\n"
+msgstr ""
+"\n"
+"S-a capturat un semnal de întrerupere, se curăță tot...\n"
+
+#: misc/badblocks.c:886
+#, c-format
+msgid "during test data write, block %lu"
+msgstr "în timpul scrierii datelor de test, bloc %lu"
+
+#: misc/badblocks.c:1006 misc/util.c:135
+#, c-format
+msgid "%s is mounted; "
+msgstr "%s este montat; "
+
+#: misc/badblocks.c:1008
+msgid "badblocks forced anyway. Hope /etc/mtab is incorrect.\n"
+msgstr "blocuri defectuoase, se forțează oricum. Se speră că fișierul „/etc/mtab” este incorect.\n"
+
+#: misc/badblocks.c:1013
+msgid "it's not safe to run badblocks!\n"
+msgstr "nu este sigur de a rula blocurile defectuoase!\n"
+
+#: misc/badblocks.c:1018 misc/util.c:146
+#, c-format
+msgid "%s is apparently in use by the system; "
+msgstr "%s este aparent utilizat de către sistem; "
+
+#: misc/badblocks.c:1021
+msgid "badblocks forced anyway.\n"
+msgstr "blocurile defectuoase sunt forțate oricum.\n"
+
+#: misc/badblocks.c:1041
+#, c-format
+msgid "invalid %s - %s"
+msgstr "nevalid %s - %s"
+
+#: misc/badblocks.c:1137
+#, c-format
+msgid "Too big max bad blocks count %u - maximum is %u"
+msgstr "Prea mare numărul maxim de blocuri defectuoase %u - numărul maxim este %u"
+
+#: misc/badblocks.c:1164
+#, c-format
+msgid "can't allocate memory for test_pattern - %s"
+msgstr "nu se poate aloca memorie pentru modelul-de-test - %s"
+
+#: misc/badblocks.c:1194
+msgid "Maximum of one test_pattern may be specified in read-only mode"
+msgstr "Se poate specifica cel mult un model-de-test în modul doar-citire"
+
+#: misc/badblocks.c:1200
+msgid "Random test_pattern is not allowed in read-only mode"
+msgstr "Modelul-de-testare aleator nu este permis în modul doar-citire"
+
+#: misc/badblocks.c:1207
+#, c-format
+msgid "Invalid block size: %d\n"
+msgstr "Dimensiunea blocului nu este validă: %d\n"
+
+#: misc/badblocks.c:1213
+#, c-format
+msgid "Invalid blocks_at_once: %d\n"
+msgstr "Număr de blocuri_deodată nevalid: %d\n"
+
+#: misc/badblocks.c:1227
+msgid ""
+"Couldn't determine device size; you must specify\n"
+"the size manually\n"
+msgstr ""
+"Nu s-a putut determina dimensiunea dispozitivului;\n"
+"trebuie să specificați dimensiunea manual\n"
+
+#: misc/badblocks.c:1233
+msgid "while trying to determine device size"
+msgstr "în timp ce se încerca să se determine dimensiunea dispozitivului"
+
+#: misc/badblocks.c:1238
+msgid "last block"
+msgstr "ultimul bloc"
+
+#: misc/badblocks.c:1244
+msgid "first block"
+msgstr "primul bloc"
+
+#: misc/badblocks.c:1247
+#, c-format
+msgid "invalid starting block (%llu): must be less than %llu"
+msgstr "bloc de pornire nevalid (%llu): trebuie să fie mai mic decât %llu"
+
+#: misc/badblocks.c:1255
+#, c-format
+msgid "invalid end block (%llu): must be 32-bit value"
+msgstr "bloc de final nevalid (%llu): trebuie să fie o valoare pe 32 de biți"
+
+#: misc/badblocks.c:1311
+msgid "while creating in-memory bad blocks list"
+msgstr "în timp ce se creea lista de blocuri defectuoase în memorie"
+
+#: misc/badblocks.c:1320
+msgid "input file - bad format"
+msgstr "fișier de intrare - format greșit"
+
+#: misc/badblocks.c:1328 misc/badblocks.c:1337
+msgid "while adding to in-memory bad block list"
+msgstr "în timp ce se adăuga la lista de blocuri defectuoase din memorie"
+
+#: misc/badblocks.c:1362
+#, c-format
+msgid "Pass completed, %u bad blocks found. (%d/%d/%d errors)\n"
+msgstr "Pas finalizat, %u blocuri greșite găsite. (%d/%d/%d erori)\n"
+
+#: misc/chattr.c:89
+#, c-format
+msgid "Usage: %s [-RVf] [-+=aAcCdDeijPsStTuFx] [-p project] [-v version] files...\n"
+msgstr "Utilizare: %s [-RVf] [-+=aAcCdDeijPsStTuFx] [-p proiect] [-v versiune] fișiere...\n"
+
+#: misc/chattr.c:162
+#, c-format
+msgid "bad project - %s\n"
+msgstr "proiect greșit - %s\n"
+
+#: misc/chattr.c:176
+#, c-format
+msgid "bad version - %s\n"
+msgstr "versiune incorectă - %s\n"
+
+#: misc/chattr.c:221 misc/lsattr.c:127
+#, c-format
+msgid "while trying to stat %s"
+msgstr "în timp ce se încerca să se obțină starea %s"
+
+#: misc/chattr.c:228
+#, c-format
+msgid "while reading flags on %s"
+msgstr "în timp ce se citeau fanioanele pe %s"
+
+#: misc/chattr.c:233 misc/chattr.c:245
+#, c-format
+msgid "Flags of %s set as "
+msgstr "Fanioanele de %s stabilite ca "
+
+#: misc/chattr.c:254
+#, c-format
+msgid "while setting flags on %s"
+msgstr "în timp ce se stabileau fanioanele pe %s"
+
+#: misc/chattr.c:262
+#, c-format
+msgid "Version of %s set as %lu\n"
+msgstr "Versiunea de %s stabilită ca fiind %lu\n"
+
+#: misc/chattr.c:266
+#, c-format
+msgid "while setting version on %s"
+msgstr "în timp ce se stabilea versiunea pe %s"
+
+#: misc/chattr.c:273
+#, c-format
+msgid "Project of %s set as %lu\n"
+msgstr "Proiectul din %s definit ca %lu\n"
+
+#: misc/chattr.c:277
+#, c-format
+msgid "while setting project on %s"
+msgstr "în timp ce se definea proiectul pe %s"
+
+#: misc/chattr.c:299
+msgid "Couldn't allocate path variable in chattr_dir_proc"
+msgstr "Nu s-a putut aloca variabila de rută în chattr_dir_proc"
+
+#: misc/chattr.c:339
+msgid "= is incompatible with - and +\n"
+msgstr "„=” este incompatibil cu „-” și „+”\n"
+
+#: misc/chattr.c:347
+msgid "Must use '-v', =, - or +\n"
+msgstr "Trebuie să utilizați „-v”, „=”, „-” sau „+”.\n"
+
+#: misc/create_inode.c:80 misc/create_inode.c:119
+#, c-format
+msgid "while reading inode %u"
+msgstr "în timp ce se citea nodul-i %u"
+
+#: misc/create_inode.c:90 misc/create_inode.c:296 misc/create_inode.c:361
+#: misc/create_inode.c:399
+msgid "while expanding directory"
+msgstr "în timp ce se expanda directorul"
+
+#: misc/create_inode.c:97
+#, c-format
+msgid "while linking \"%s\""
+msgstr "în timp ce se făcea legătura „%s”"
+
+#: misc/create_inode.c:105 misc/create_inode.c:134 misc/create_inode.c:330
+#, c-format
+msgid "while writing inode %u"
+msgstr "în timp ce se scria nodul-i %u"
+
+#: misc/create_inode.c:154 misc/create_inode.c:185
+#, c-format
+msgid "while listing attributes of \"%s\""
+msgstr "în timp ce se listau atributele lui „%s”"
+
+#: misc/create_inode.c:165
+#, c-format
+msgid "while opening inode %u"
+msgstr "în timp ce se deschidea nodul-i %u"
+
+#: misc/create_inode.c:172
+#, c-format
+msgid "while reading xattrs for inode %u"
+msgstr "în timp ce se citeau atributele extinse „xattrs” pentru nodul-i %u"
+
+#: misc/create_inode.c:178 misc/create_inode.c:205 misc/create_inode.c:1066
+#: misc/e2undo.c:186 misc/e2undo.c:483 misc/e2undo.c:489 misc/e2undo.c:495
+#: misc/mke2fs.c:361
+msgid "while allocating memory"
+msgstr "în timp ce se aloca memoria"
+
+#: misc/create_inode.c:198 misc/create_inode.c:214
+#, c-format
+msgid "while reading attribute \"%s\" of \"%s\""
+msgstr "în timp ce se citea atributul „%s” din „%s”"
+
+#: misc/create_inode.c:223
+#, c-format
+msgid "while writing attribute \"%s\" to inode %u"
+msgstr "în timp ce se scria atributul „%s” în nodul-i %u"
+
+#: misc/create_inode.c:233
+#, c-format
+msgid "while closing inode %u"
+msgstr "în timp ce se închidea nodul-i %u"
+
+#: misc/create_inode.c:283
+#, c-format
+msgid "while allocating inode \"%s\""
+msgstr "în timp ce se aloca nodul-i „%s”"
+
+#: misc/create_inode.c:302
+#, c-format
+msgid "while creating inode \"%s\""
+msgstr "în timp ce se crea nodul-i „%s”"
+
+#: misc/create_inode.c:368
+#, c-format
+msgid "while creating symlink \"%s\""
+msgstr "în timp ce se crea legătura simbolică „%s”"
+
+#: misc/create_inode.c:386 misc/create_inode.c:650 misc/create_inode.c:986
+#, c-format
+msgid "while looking up \"%s\""
+msgstr "în timp ce se căuta „%s”"
+
+#: misc/create_inode.c:406
+#, c-format
+msgid "while creating directory \"%s\""
+msgstr "în timp ce se crea directorul „%s”"
+
+#: misc/create_inode.c:636
+#, c-format
+msgid "while opening \"%s\" to copy"
+msgstr "în timp ce se deschidea „%s” pentru copiere"
+
+#: misc/create_inode.c:828
+#, c-format
+msgid "while changing working directory to \"%s\""
+msgstr "în timp ce se schimba directorul de lucru la „%s”"
+
+#: misc/create_inode.c:838
+#, c-format
+msgid "while scanning directory \"%s\""
+msgstr "în timp ce se scana directorul „%s”"
+
+#: misc/create_inode.c:848
+#, c-format
+msgid "while lstat \"%s\""
+msgstr "în timp ce se executa lstat() asupra „%s”"
+
+#: misc/create_inode.c:898
+#, c-format
+msgid "while creating special file \"%s\""
+msgstr "în timp ce se crea fișierul special „%s”"
+
+#: misc/create_inode.c:907
+msgid "malloc failed"
+msgstr "malloc a eșuat"
+
+#: misc/create_inode.c:915
+#, c-format
+msgid "while trying to read link \"%s\""
+msgstr "în timp ce se încerca să se citească legătura „%s”"
+
+#: misc/create_inode.c:922
+msgid "symlink increased in size between lstat() and readlink()"
+msgstr "legătura simbolică a crescut în dimensiune între execuția lstat() și cea a readlink()"
+
+#: misc/create_inode.c:933
+#, c-format
+msgid "while writing symlink\"%s\""
+msgstr "în timp ce se scria legătura simbolică „%s”"
+
+#: misc/create_inode.c:944
+#, c-format
+msgid "while writing file \"%s\""
+msgstr "în timp ce se scria fișierul „%s”"
+
+#: misc/create_inode.c:957
+#, c-format
+msgid "while making dir \"%s\""
+msgstr "în timp ce se crea directorul „%s”"
+
+#: misc/create_inode.c:975
+msgid "while changing directory"
+msgstr "în timp ce se schimba directorul"
+
+#: misc/create_inode.c:981
+#, c-format
+msgid "ignoring entry \"%s\""
+msgstr "se ignoră intrarea „%s”"
+
+#: misc/create_inode.c:994
+#, c-format
+msgid "while setting inode for \"%s\""
+msgstr "în timp ce se stabilea nodul-i pentru „%s”"
+
+#: misc/create_inode.c:1001
+#, c-format
+msgid "while setting xattrs for \"%s\""
+msgstr "în timp ce se defineau atributele extinse „xattrs” pentru „%s”"
+
+#: misc/create_inode.c:1027
+msgid "while saving inode data"
+msgstr "în timp ce se salvau datele nodului-i"
+
+#: misc/create_inode.c:1077
+msgid "while copying xattrs on root directory"
+msgstr "în timp ce se copiau atributele extinse „xattrs” în directorul rădăcină"
+
+# R-GC, scrie:
+# acest mesaj și următoarele, apar
+# larularea comenzii:
+# «dumpe2fs»
+#: misc/dumpe2fs.c:56
+#, c-format
+msgid "Usage: %s [-bfghimxV] [-o superblock=<num>] [-o blocksize=<num>] device\n"
+msgstr "Utilizare: %s [-bfghimxV] [-o superbloc=<număr>] [-o dimens-bloc=<număr>] dispozitiv\n"
+
+#: misc/dumpe2fs.c:159
+msgid "blocks"
+msgstr "blocuri"
+
+#: misc/dumpe2fs.c:168
+msgid "clusters"
+msgstr "clustere"
+
+# R-GC, scrie:
+# am adăugat articolul la primul cuvînt din
+# mesaj, după ce-am rulat comanda:
+# «dumpe2fs dispozitiv», și-am văzut că
+# apare ca:
+# Grup 0: (Blocuri 0-32767) suma de control 0x545c [ITABLE_ZEROED]
+# ...
+# Grup 1: (Blocuri 32768-65535) suma de control 0xf4be [ITABLE_ZEROED]
+# ...
+# ș.a.ș.m.d.
+#: misc/dumpe2fs.c:219
+#, c-format
+msgid "Group %lu: (Blocks "
+msgstr "Grupul %lu: (Blocuri "
+
+#: misc/dumpe2fs.c:226
+#, c-format
+msgid " csum 0x%04x"
+msgstr " suma de control 0x%04x"
+
+#: misc/dumpe2fs.c:228
+#, c-format
+msgid " (EXPECTED 0x%04x)"
+msgstr " (SE AȘTEPTA 0x%04x)"
+
+# R-GC, scrie:
+# traducere modificată de la:
+# „%s super-bloc la ”, pentru că la rulare,
+# „cuprinde” în mesajele următoare, adică:
+# .
+# - «Super-bloc primar la X»
+# - «Super-bloc de rezervă la X»
+# *****
+# Așa că s-a făcut „rocada”.
+#: misc/dumpe2fs.c:233
+#, c-format
+msgid " %s superblock at "
+msgstr " Super-bloc %s la "
+
+# R-GC, scrie:
+# traducere modificată de la:
+# „Primar”, pentru că la rulare,
+# „intră” în mesajul anterior, adică:
+# .
+# «Super-bloc primar la X»
+#: misc/dumpe2fs.c:234
+msgid "Primary"
+msgstr "primar"
+
+# R-GC, scrie:
+# traducere modificată de la:
+# „Copie de rezervă”, pentru că la rulare,
+# „intră” în mesajul anterior, adică:
+# .
+# «Super-bloc de rezervă la X»
+#: misc/dumpe2fs.c:234
+msgid "Backup"
+msgstr "de rezervă"
+
+# R-GC, scrie:
+# mesaj modificat de la:
+# «, Descriptori de grup la »,
+# pentru că la rulare, este alipit
+# mesajului anterior, adică:
+# „Super-bloc %s la X, descriptori de grup la Y”
+#: misc/dumpe2fs.c:238
+msgid ", Group descriptors at "
+msgstr ", descriptori de grup la "
+
+#: misc/dumpe2fs.c:242
+msgid ""
+"\n"
+" Reserved GDT blocks at "
+msgstr ""
+"\n"
+"Blocuri pentru tabelul de descriptori de grup rezervate (GDT) la "
+
+#: misc/dumpe2fs.c:249
+msgid " Group descriptor at "
+msgstr " Descriptor de grup la "
+
+#: misc/dumpe2fs.c:255
+msgid " Block bitmap at "
+msgstr " Harta de biți a blocurilor la "
+
+#: misc/dumpe2fs.c:260 misc/dumpe2fs.c:271
+#, c-format
+msgid ", csum 0x%08x"
+msgstr ", suma de control 0x%08x"
+
+#: misc/dumpe2fs.c:263
+msgid ","
+msgstr ","
+
+#: misc/dumpe2fs.c:265
+msgid ""
+"\n"
+" "
+msgstr ""
+"\n"
+" "
+
+#: misc/dumpe2fs.c:266
+msgid " Inode bitmap at "
+msgstr " Harta de biți a nodurilor-i la "
+
+#: misc/dumpe2fs.c:273
+msgid ""
+"\n"
+" Inode table at "
+msgstr ""
+"\n"
+" Tabelul de noduri-i la "
+
+# R-GC, scrie:
+# în timpul rulării comenzilor din pachetul
+# „e2fsck” apare astfel; de exemplu rulînd
+# comanda «dumpe2fs /dev/sdxy» (unde
+# x=litera, respectiv y=cifra dispozitivului vizat):
+# 17872 "(blocuri)" libere, 959 noduri-i libere, 1355 directoare (între paranteze și
+# ghilimele duble, apare valoarea celei de-a
+# doua variabile din mesaj; în cazul acesta:
+# blocuri).
+# *****
+# Am scris acest comentariu, pentru ca să
+# se știe de ce-a fost tradus așa; că
+# NU este o greșeală a traducătorului.
+#: misc/dumpe2fs.c:279
+#, c-format
+msgid ""
+"\n"
+" %u free %s, %u free inodes, %u directories%s"
+msgstr ""
+"\n"
+" %u %s libere, %u noduri-i libere, %u directoare%s"
+
+#: misc/dumpe2fs.c:286
+#, c-format
+msgid ", %u unused inodes\n"
+msgstr ", %u noduri-i neutilizate\n"
+
+#: misc/dumpe2fs.c:289
+msgid " Free blocks: "
+msgstr " Blocuri libere: "
+
+#: misc/dumpe2fs.c:304
+msgid " Free inodes: "
+msgstr " Noduri-i libere: "
+
+#: misc/dumpe2fs.c:340
+msgid "while printing bad block list"
+msgstr "în timp ce se imprima o listă de blocuri defectuoase"
+
+#: misc/dumpe2fs.c:347
+#, c-format
+msgid "Bad blocks: %u"
+msgstr "Blocuri defectuoase: %u"
+
+#: misc/dumpe2fs.c:375 misc/tune2fs.c:379
+msgid "while reading journal inode"
+msgstr "în timp ce se citea nodul-i al jurnalului"
+
+#: misc/dumpe2fs.c:381
+msgid "while opening journal inode"
+msgstr "în timp ce se deschidea nodul-i al jurnalului"
+
+#: misc/dumpe2fs.c:387
+msgid "while reading journal super block"
+msgstr "în timp ce se citea super-blocul jurnalului"
+
+#: misc/dumpe2fs.c:394
+msgid "Journal superblock magic number invalid!\n"
+msgstr "Numărul magic al super-blocului jurnalului nu este valid!\n"
+
+#: misc/dumpe2fs.c:414 misc/tune2fs.c:222
+msgid "while reading journal superblock"
+msgstr "în timp ce se citea super-blocul jurnalului"
+
+#: misc/dumpe2fs.c:422
+msgid "Couldn't find journal superblock magic numbers"
+msgstr "Nu s-au putut găsi numerele magice ale super-blocului de jurnal"
+
+#: misc/dumpe2fs.c:477
+msgid "failed to alloc MMP buffer\n"
+msgstr "nu s-a reușit să se aloce memoria tampon MMP\n"
+
+#: misc/dumpe2fs.c:488
+#, c-format
+msgid "reading MMP block %llu from '%s'\n"
+msgstr "se citește blocul MMP %llu din „%s”\n"
+
+#: misc/dumpe2fs.c:520 misc/mke2fs.c:811 misc/tune2fs.c:2120
+msgid "Couldn't allocate memory to parse options!\n"
+msgstr "Nu s-a putut aloca memorie pentru a analiza opțiunile!\n"
+
+#: misc/dumpe2fs.c:546
+#, c-format
+msgid "Invalid superblock parameter: %s\n"
+msgstr "Parametru de super-bloc nevalid: %s\n"
+
+#: misc/dumpe2fs.c:561
+#, c-format
+msgid "Invalid blocksize parameter: %s\n"
+msgstr "Parametru de dimensiune a blocurilor nevalid: %s\n"
+
+#: misc/dumpe2fs.c:572
+#, c-format
+msgid ""
+"\n"
+"Bad extended option(s) specified: %s\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"
+"\tsuperblock=<superblock number>\n"
+"\tblocksize=<blocksize>\n"
+msgstr ""
+"\n"
+"Opțiunile extinse specificate sunt greșite: %s\n"
+"\n"
+"Opțiunile extinse sunt separate prin virgule și pot avea un argument care\n"
+"\teste definit cu ajutorul unui semn de egalitate („=”).\n"
+"\n"
+"Opțiunile extinse valide sunt:\n"
+"\tsuperblock=<numărul super-blocului>.\n"
+"\tblocksize=<dimensiunea blocului>.\n"
+
+#: misc/dumpe2fs.c:663 misc/mke2fs.c:1911
+#, c-format
+msgid "\tUsing %s\n"
+msgstr "\tSe utilizează %s\n"
+
+#: misc/dumpe2fs.c:710 misc/e2image.c:1642 misc/tune2fs.c:3008
+#: resize/main.c:424
+msgid "Couldn't find valid filesystem superblock.\n"
+msgstr "Nu s-a putut găsi un super-bloc valid pentru sistemul de fișiere.\n"
+
+#: misc/dumpe2fs.c:732
+#, c-format
+msgid "%s: MMP feature not enabled.\n"
+msgstr "%s: caracteristica MMP nu este activată.\n"
+
+#: misc/dumpe2fs.c:763
+#, c-format
+msgid "while trying to read '%s' bitmaps\n"
+msgstr "în timp ce se încerca să se citească hărțile de biți „%s”.\n"
+
+#: misc/dumpe2fs.c:772
+msgid ""
+"*** Run e2fsck now!\n"
+"\n"
+msgstr ""
+"*** Lansați «e2fsck» acum!\n"
+"\n"
+
+#: misc/e2image.c:108
+#, c-format
+msgid "Usage: %s [ -r|-Q ] [ -f ] [ -b superblock ] [ -B blocksize ] device image-file\n"
+msgstr "Utilizare: %s [ -r|-Q ] [ -f ] [ -b super-bloc ] [ -B dimens-bloc ] dispozitiv fișier-imagine\n"
+
+#: misc/e2image.c:111
+#, c-format
+msgid " %s -I device image-file\n"
+msgstr " %s -I dispozitiv fișier-imagine\n"
+
+#: misc/e2image.c:112
+#, c-format
+msgid " %s -ra [ -cfnp ] [ -o src_offset ] [ -O dest_offset ] src_fs [ dest_fs ]\n"
+msgstr " %s -ra [ -cfnp ] [ -o poz-sursă ] [ -O poz-dest ] sistemf-sursă [ sistemf-dest]\n"
+
+#: misc/e2image.c:177 misc/e2image.c:593 misc/e2image.c:599 misc/e2image.c:1201
+msgid "while allocating buffer"
+msgstr "în timp ce se aloca memoria tampon"
+
+#: misc/e2image.c:182
+#, c-format
+msgid "Writing block %llu\n"
+msgstr "Se scrie blocul %llu\n"
+
+#: misc/e2image.c:196
+#, c-format
+msgid "error writing block %llu"
+msgstr "eroare la scrierea blocului %llu"
+
+#: misc/e2image.c:200
+msgid "error in generic_write()"
+msgstr "eroare în generic_write()"
+
+#: misc/e2image.c:217
+msgid "Error: header size is bigger than wrt_size\n"
+msgstr "Eroare: dimensiunea antetului este mai mare decât wrt_size\n"
+
+#: misc/e2image.c:222
+msgid "Couldn't allocate header buffer\n"
+msgstr "Nu s-a putut aloca memorie tampon antetului\n"
+
+#: misc/e2image.c:250
+msgid "while writing superblock"
+msgstr "în timp ce se scria super-blocul"
+
+#: misc/e2image.c:259
+msgid "while writing inode table"
+msgstr "în timp ce se scria tabelul de noduri-i"
+
+#: misc/e2image.c:267
+msgid "while writing block bitmap"
+msgstr "în timp ce se scria harta de biți a blocurilor"
+
+#: misc/e2image.c:275
+msgid "while writing inode bitmap"
+msgstr "în timp ce se scria harta de biți de noduri-i"
+
+#: misc/e2image.c:517
+#, c-format
+msgid "Corrupt directory block %llu: bad rec_len (%d)\n"
+msgstr "Blocul directorului %llueste corupt: rec_len (%d) incorectă\n"
+
+#: misc/e2image.c:529
+#, c-format
+msgid "Corrupt directory block %llu: bad name_len (%d)\n"
+msgstr "Blocul directorului %llueste corupt: name_len (%d) incorectă\n"
+
+#: misc/e2image.c:570
+#, c-format
+msgid "%llu / %llu blocks (%d%%)"
+msgstr "%llu / %llu blocuri (%d%%)"
+
+#: misc/e2image.c:603 misc/e2image.c:643
+msgid "Copying "
+msgstr "Se copiază "
+
+#: misc/e2image.c:640
+msgid "Stopping now will destroy the filesystem, interrupt again if you are sure\n"
+msgstr "Oprirea acum a acestei acțiuni, va distruge sistemul de fișiere; întrerupeți din nou dacă sunteți sigur că trebuie oprită\n"
+
+#: misc/e2image.c:666
+#, c-format
+msgid " %s remaining at %.2f MB/s"
+msgstr " mai rămân(e) %s la %.2f Mo/s"
+
+#: misc/e2image.c:678 misc/e2image.c:1211
+#, c-format
+msgid "error reading block %llu"
+msgstr "eroare la citirea blocului %llu"
+
+#: misc/e2image.c:733
+#, c-format
+msgid "Copied %llu / %llu blocks (%d%%) in %s "
+msgstr "Copiate %llu / %llu blocuri (%d%%) în %s "
+
+#: misc/e2image.c:738
+#, c-format
+msgid "at %.2f MB/s"
+msgstr "la %.2f Mo/s"
+
+#: misc/e2image.c:774
+msgid "while allocating l1 table"
+msgstr "în timp ce se aloca tabelul l1"
+
+#: misc/e2image.c:819
+msgid "while allocating l2 cache"
+msgstr "în timp ce se aloca zona de prestocare (cache) l2"
+
+#: misc/e2image.c:842
+msgid "Warning: There are still tables in the cache while putting the cache, data will be lost so the image may not be valid.\n"
+msgstr "Avertisment: Există încă tabele în zona de stocare (cache) în timp ce stocați zona de stocare (cache), datele vor fi pierdute, astfel încât este posibil ca imaginea să nu fie valabilă.\n"
+
+#: misc/e2image.c:1168
+msgid "while allocating ext2_qcow2_image"
+msgstr "în timp ce se aloca ext2_qcow2_image"
+
+#: misc/e2image.c:1175
+msgid "while initializing ext2_qcow2_image"
+msgstr "în timp ce se inițializa ext2_qcow2_image"
+
+#: misc/e2image.c:1235 misc/e2image.c:1253
+msgid "Programming error: multiple sequential refcount blocks created!\n"
+msgstr "Eroare de programare: au fost create mai multe blocuri „refcount” (cu numere de referință) secvențiale!\n"
+
+#: misc/e2image.c:1294
+msgid "while allocating block bitmap"
+msgstr "în timp ce se aloca harta de biți de blocuri"
+
+#: misc/e2image.c:1303
+msgid "while allocating scramble block bitmap"
+msgstr "în timp ce se aloca harta de biți de blocuri amestecate"
+
+#: misc/e2image.c:1326
+msgid "Scanning inodes...\n"
+msgstr "Se scanează nodurile-i...\n"
+
+#: misc/e2image.c:1338
+msgid "Can't allocate block buffer"
+msgstr "Nu se poate aloca memorie tampon blocului"
+
+#: misc/e2image.c:1350
+msgid "while getting next inode"
+msgstr "în timp ce se obținea nodul-i următor"
+
+#: misc/e2image.c:1379 misc/e2image.c:1393
+#, c-format
+msgid "while iterating over inode %u"
+msgstr "în timp ce se itera peste nodul-i %u"
+
+#: misc/e2image.c:1425
+msgid "Raw and qcow2 images cannot be installed"
+msgstr "Imaginile raw și qcow2 nu pot fi instalate"
+
+#: misc/e2image.c:1447
+msgid "error reading bitmaps"
+msgstr "eroare la citirea hărților de biți"
+
+#: misc/e2image.c:1459
+msgid "while opening device file"
+msgstr "în timp ce se deschidea fișierul dispozitivului"
+
+#: misc/e2image.c:1470
+msgid "while restoring the image table"
+msgstr "în timp ce se restaura tabelul imaginii"
+
+#: misc/e2image.c:1578
+msgid "-a option can only be used with raw or QCOW2 images."
+msgstr "opțiunea „-a” poate fi utilizată doar cu imagini brute (raw) sau QCOW2."
+
+#: misc/e2image.c:1583
+msgid "-b option can only be used with raw or QCOW2 images."
+msgstr "opțiunea „-b” poate fi utilizată doar cu imagini brute (raw) sau QCOW2."
+
+#: misc/e2image.c:1589
+msgid "Offsets are only allowed with raw images."
+msgstr "Pozițiile sunt permise numai cu imagini brute (raw)."
+
+#: misc/e2image.c:1594
+msgid "Move mode is only allowed with raw images."
+msgstr "Modul de deplasare este permis numai cu imagini brute (raw)."
+
+#: misc/e2image.c:1599
+msgid "Move mode requires all data mode."
+msgstr "Modul de deplasare necesită modul „toate-datele”."
+
+#: misc/e2image.c:1609
+msgid "checking if mounted"
+msgstr "se verifică dacă este montat"
+
+#: misc/e2image.c:1616
+msgid ""
+"\n"
+"Running e2image on a R/W mounted filesystem can result in an\n"
+"inconsistent image which will not be useful for debugging purposes.\n"
+"Use -f option if you really want to do that.\n"
+msgstr ""
+"\n"
+"Rularea «e2image» pe un sistem de fișiere montat în modul citire/scriere\n"
+"poate avea ca rezultat o imagine inconsecventă care nu va fi utilă în\n"
+"scopuri de depanare.\n"
+"Utilizați opțiunea „-f” dacă doriți cu adevărat să faceți acest lucru.\n"
+
+#: misc/e2image.c:1670
+msgid "QCOW2 image can not be written to the stdout!\n"
+msgstr "Imaginea QCOW2 nu poate fi scrisă la ieșirea standard!\n"
+
+#: misc/e2image.c:1676
+msgid "Can not stat output\n"
+msgstr "Nu se poate obține starea ieșirii\n"
+
+#: misc/e2image.c:1686
+#, c-format
+msgid "Image (%s) is compressed\n"
+msgstr "Imaginea (%s) este comprimată\n"
+
+#: misc/e2image.c:1689
+#, c-format
+msgid "Image (%s) is encrypted\n"
+msgstr "Imaginea (%s) este criptată\n"
+
+#: misc/e2image.c:1692
+#, c-format
+msgid "Image (%s) is corrupted\n"
+msgstr "Imaginea (%s) este coruptă\n"
+
+#: misc/e2image.c:1696
+#, c-format
+msgid "while trying to convert qcow2 image (%s) into raw image (%s)"
+msgstr "în timp ce se încerca conversia imaginii qcow2 (%s) în imaginea raw (%s)"
+
+#: misc/e2image.c:1706
+msgid "The -c option only supported in raw mode\n"
+msgstr "Opțiunea „-c” este acceptată numai în modul brut (raw)\n"
+
+#: misc/e2image.c:1711
+msgid "The -c option not supported when writing to stdout\n"
+msgstr "Opțiunea „-c” nu este acceptată când se scrie la ieșirea standard\n"
+
+#: misc/e2image.c:1718
+msgid "while allocating check_buf"
+msgstr "în timp ce se aloca check_buf"
+
+#: misc/e2image.c:1724
+msgid "The -p option only supported in raw mode\n"
+msgstr "Opțiunea „-p” este acceptată numai în modul brut (raw)\n"
+
+#: misc/e2image.c:1734
+#, c-format
+msgid "%d blocks already contained the data to be copied\n"
+msgstr "%d blocuri conțineau deja datele care urmează să fie copiate\n"
+
+#: misc/e2initrd_helper.c:69
+#, c-format
+msgid "Usage: %s -r device\n"
+msgstr "Utilizare: %s -r dispozitiv\n"
+
+#: misc/e2label.c:58
+#, c-format
+msgid "e2label: cannot open %s\n"
+msgstr "e2label: nu se poate deschide %s\n"
+
+#: misc/e2label.c:63
+#, c-format
+msgid "e2label: cannot seek to superblock\n"
+msgstr "e2label: nu se poate examina în super-bloc\n"
+
+#: misc/e2label.c:68
+#, c-format
+msgid "e2label: error reading superblock\n"
+msgstr "e2label: eroare la citirea super-blocului\n"
+
+#: misc/e2label.c:72
+#, c-format
+msgid "e2label: not an ext2 filesystem\n"
+msgstr "e2label: nu este un sistem de fișiere ext2\n"
+
+#: misc/e2label.c:97 misc/tune2fs.c:3215
+#, c-format
+msgid "Warning: label too long, truncating.\n"
+msgstr "Avertisment: etichetă prea lungă, se trunchiază\n"
+
+#: misc/e2label.c:100
+#, c-format
+msgid "e2label: cannot seek to superblock again\n"
+msgstr "e2label: nu se poate examina din nou pentru super-bloc\n"
+
+#: misc/e2label.c:105
+#, c-format
+msgid "e2label: error writing superblock\n"
+msgstr "e2label: eroare la scrierea super-blocului\n"
+
+#: misc/e2label.c:117 misc/tune2fs.c:1772
+#, c-format
+msgid "Usage: e2label device [newlabel]\n"
+msgstr "Utilizare: e2label dispozitiv [etichetă-nouă]\n"
+
+#: misc/e2undo.c:124
+#, c-format
+msgid "Usage: %s [-f] [-h] [-n] [-o offset] [-v] [-z undo_file] <transaction file> <filesystem>\n"
+msgstr "Utilizare: %s [-f] [-h] [-n] [-o poziție] [-v] [-z fișierul-de-anulare] <fișier-tranzacții> <sistem-fișiere>\n"
+
+#: misc/e2undo.c:153
+msgid "The file system superblock doesn't match the undo file.\n"
+msgstr "Super-blocul sistemului de fișiere nu se potrivește cu fișierul de anulare.\n"
+
+#: misc/e2undo.c:156
+msgid "UUID does not match.\n"
+msgstr "UUID-ul nu se potrivește.\n"
+
+#: misc/e2undo.c:158
+msgid "Last mount time does not match.\n"
+msgstr "Ora ultimei montări nu se potrivește.\n"
+
+#: misc/e2undo.c:160
+msgid "Last write time does not match.\n"
+msgstr "Ultima oră de scriere nu se potrivește.\n"
+
+#: misc/e2undo.c:162
+msgid "Lifetime write counter does not match.\n"
+msgstr "Contorul de scriere pe durata de viață nu se potrivește.\n"
+
+#: misc/e2undo.c:176
+msgid "while reading filesystem superblock."
+msgstr "în timp ce se citea super-blocul sistemului de fișiere."
+
+#: misc/e2undo.c:192
+msgid "while fetching superblock"
+msgstr "în timp ce se prelua super-blocul"
+
+#: misc/e2undo.c:205
+#, c-format
+msgid "Undo file superblock checksum doesn't match.\n"
+msgstr "Suma de control a super-blocului fișierului de anulare nu se potrivește.\n"
+
+#: misc/e2undo.c:344
+#, c-format
+msgid "illegal offset - %s"
+msgstr "poziție ilegală - %s"
+
+#: misc/e2undo.c:368
+#, c-format
+msgid "Will not write to an undo file while replaying it.\n"
+msgstr "Nu se va scrie într-un fișier de anulare în timpul reluării execuției acestuia.\n"
+
+#: misc/e2undo.c:377
+#, c-format
+msgid "while opening undo file `%s'\n"
+msgstr "în timp ce se deschidea fișierul de anulare „%s”\n"
+
+#: misc/e2undo.c:384
+msgid "while reading undo file"
+msgstr "în timp ce se citea fișierul de anulare"
+
+#: misc/e2undo.c:389
+#, c-format
+msgid "%s: Not an undo file.\n"
+msgstr "%s: Nu este un fișier de anulare.\n"
+
+#: misc/e2undo.c:400
+#, c-format
+msgid "%s: Header checksum doesn't match.\n"
+msgstr "%s: Suma de control a antetului nu se potrivește.\n"
+
+#: misc/e2undo.c:407
+#, c-format
+msgid "%s: Corrupt undo file header.\n"
+msgstr "%s: Antet de fișier de anulare corupt.\n"
+
+#: misc/e2undo.c:411
+#, c-format
+msgid "%s: Undo block size too large.\n"
+msgstr "%s: Dimensiunea blocului de anulare este prea mare.\n"
+
+#: misc/e2undo.c:416
+#, c-format
+msgid "%s: Undo block size too small.\n"
+msgstr "%s: Dimensiunea blocului de anulare este prea mică.\n"
+
+#: misc/e2undo.c:429
+#, c-format
+msgid "%s: Unknown undo file feature set.\n"
+msgstr "%s: Set necunoscut de caracteristici ale fișierului de anulare.\n"
+
+#: misc/e2undo.c:437
+#, c-format
+msgid "Error while determining whether %s is mounted."
+msgstr "Eroare în timp ce se determina dacă %s este montat."
+
+#: misc/e2undo.c:443
+msgid "e2undo should only be run on unmounted filesystems"
+msgstr "«e2undo» ar trebui să fie rulat numai pe sisteme de fișiere nemontate"
+
+#: misc/e2undo.c:459
+#, c-format
+msgid "while opening `%s'"
+msgstr "în timp ce se deschidea „%s”"
+
+#: misc/e2undo.c:470
+msgid "specified offset is too large"
+msgstr "decalajul specificat este prea mare"
+
+#: misc/e2undo.c:511
+msgid "while reading keys"
+msgstr "în timp ce se citeau cheile"
+
+#: misc/e2undo.c:523
+#, c-format
+msgid "%s: wrong key magic at %llu\n"
+msgstr "%s: cheie magică greșită la %llu\n"
+
+#: misc/e2undo.c:533
+#, c-format
+msgid "%s: key block checksum error at %llu.\n"
+msgstr "%s: eroare la verificarea sumei de control a blocului de chei la %llu.\n"
+
+#: misc/e2undo.c:556
+#, c-format
+msgid "%s: block %llu is too long."
+msgstr "%s: blocul %llu este prea lung."
+
+#: misc/e2undo.c:569 misc/e2undo.c:606
+#, c-format
+msgid "while fetching block %llu."
+msgstr "în timp ce se prelua blocul %llu."
+
+#: misc/e2undo.c:581
+#, c-format
+msgid "checksum error in filesystem block %llu (undo blk %llu)\n"
+msgstr "eroare de sumă de control în blocul de sistem de fișiere %llu (anulare bloc %llu)\n"
+
+#: misc/e2undo.c:622
+#, c-format
+msgid "while writing block %llu."
+msgstr "în timp ce se scria blocul %llu."
+
+#: misc/e2undo.c:629
+#, c-format
+msgid "Undo file corruption; run e2fsck NOW!\n"
+msgstr "Corupție a fișierului de anulare; rulați «e2fsck» ACUM!\n"
+
+#: misc/e2undo.c:631
+#, c-format
+msgid "IO error during replay; run e2fsck NOW!\n"
+msgstr "Eroare de In/Ieș în timpul reluării execuției din fișierul de anulare; rulați «e2fsck» ACUM!\n"
+
+#: misc/e2undo.c:634
+#, c-format
+msgid "Incomplete undo record; run e2fsck.\n"
+msgstr "Înregistrare de anulare incompletă; rulați «e2fsck».\n"
+
+#: misc/findsuper.c:110
+#, c-format
+msgid "Usage: findsuper device [skipbytes [startkb]]\n"
+msgstr "Utilizare: findsuper dispozitiv [octeți-omiși [start_la-kocteți]]\n"
+
+#: misc/findsuper.c:155
+#, c-format
+msgid "skipbytes should be a number, not %s\n"
+msgstr "octeți-omiși trebuie să fie un număr, nu %s\n"
+
+#: misc/findsuper.c:162
+#, c-format
+msgid "skipbytes must be a multiple of the sector size\n"
+msgstr "octeți-omiși trebuie să fie un multiplu al dimensiunii sectorului\n"
+
+#: misc/findsuper.c:169
+#, c-format
+msgid "startkb should be a number, not %s\n"
+msgstr "start_la-kocteți trebuie să fie un număr, nu %s\n"
+
+#: misc/findsuper.c:175
+#, c-format
+msgid "startkb should be positive, not %llu\n"
+msgstr "start_la-kocteți trebuie să fie un număr pozitiv, nu %llu\n"
+
+#: misc/findsuper.c:186
+#, c-format
+msgid "starting at %llu, with %u byte increments\n"
+msgstr "se începe de la %llu, cu incrementări de %u octeți\n"
+
+#: misc/findsuper.c:188
+#, c-format
+msgid ""
+"[*] probably superblock written in the ext3 journal superblock,\n"
+"\tso start/end/grp wrong\n"
+msgstr ""
+"[*] probabil super-blocul este scris în super-blocul de jurnal ext3,\n"
+"\tașa că început/final/grup este greșit\n"
+
+#: misc/findsuper.c:190
+#, c-format
+msgid "byte_offset byte_start byte_end fs_blocks blksz grp mkfs/mount_time sb_uuid label\n"
+msgstr "decalaj_oct început_oct final_oct blocuriSF dimbloc grp mkfs/oră_montare sb_uuid eticheta\n"
+
+#: misc/findsuper.c:265
+#, c-format
+msgid ""
+"\n"
+"%11Lu: finished with errno %d\n"
+msgstr ""
+"\n"
+"%11Lu: a terminat cu errno %d\n"
+
+#: misc/fsck.c:344
+#, c-format
+msgid "WARNING: couldn't open %s: %s\n"
+msgstr "AVERTISMENT: nu s-a putut deschide %s: %s\n"
+
+#: misc/fsck.c:354
+#, c-format
+msgid "WARNING: bad format on line %d of %s\n"
+msgstr "AVERTISMENT: format greșit la linia %d din %s\n"
+
+#: misc/fsck.c:371
+msgid ""
+"WARNING: Your /etc/fstab does not contain the fsck passno\n"
+"\tfield. I will kludge around things for you, but you\n"
+"\tshould fix your /etc/fstab file as soon as you can.\n"
+"\n"
+msgstr ""
+"AVERTISMENT: fișierul „/etc/fstab” nu conține câmpul cu numărul de „pass”\n"
+"\t(ordinea de verificare a discului/partiției) «fsck». Programul «fsck»\n"
+"\tva rezolva lucrurile pentru dvs., dar ar trebui să vă reparați fișierul\n"
+"\t„/etc/fstab” cât mai curând posibil.\n"
+"\n"
+
+#: misc/fsck.c:486
+#, c-format
+msgid "fsck: %s: not found\n"
+msgstr "fsck: %s nu a fost găsit\n"
+
+#: misc/fsck.c:602
+#, c-format
+msgid "%s: wait: No more child process?!?\n"
+msgstr "%s: wait(): Nu mai există niciun proces-copil?!?\n"
+
+#: misc/fsck.c:624
+#, c-format
+msgid "Warning... %s for device %s exited with signal %d.\n"
+msgstr "Avertisment... %s pentru dispozitivul %s a ieșit cu semnalul %d.\n"
+
+#: misc/fsck.c:630
+#, c-format
+msgid "%s %s: status is %x, should never happen.\n"
+msgstr "%s %s: starea este %x, nu ar trebui să se întâmple niciodată.\n"
+
+#: misc/fsck.c:669
+#, c-format
+msgid "Finished with %s (exit status %d)\n"
+msgstr "Terminat cu %s (starea de ieșire %d)\n"
+
+#: misc/fsck.c:729
+#, c-format
+msgid "%s: Error %d while executing fsck.%s for %s\n"
+msgstr "%s: Eroare %d în timp ce se executa «fsck.%s» pentru %s\n"
+
+#: misc/fsck.c:750
+msgid ""
+"Either all or none of the filesystem types passed to -t must be prefixed\n"
+"with 'no' or '!'.\n"
+msgstr ""
+"Toate sau niciunul dintre tipurile de sisteme de fișiere transmise ca\n"
+"argumente pentru opțiunea „-t” trebuie să aibă prefixul „no” sau „!”.\n"
+
+#: misc/fsck.c:769
+msgid "Couldn't allocate memory for filesystem types\n"
+msgstr "Nu s-a putut aloca memorie pentru tipurile de sisteme de fișiere\n"
+
+#: misc/fsck.c:892
+#, c-format
+msgid "%s: skipping bad line in /etc/fstab: bind mount with nonzero fsck pass number\n"
+msgstr "%s: se omite linia greșită din „/etc/fstab”: montare asociată cu un număr „pass” (ordinea de verificare a discului/partiției) «fsck» diferit de zero\n"
+
+#: misc/fsck.c:919
+#, c-format
+msgid "fsck: cannot check %s: fsck.%s not found\n"
+msgstr "nu se poate verifica %s: «fsck.%s» nu a fost găsit\n"
+
+#: misc/fsck.c:975
+msgid "Checking all file systems.\n"
+msgstr "Se verifică toate sistemele de fișiere.\n"
+
+#: misc/fsck.c:1066
+#, c-format
+msgid "--waiting-- (pass %d)\n"
+msgstr "--se așteaptă-- (pasul %d)\n"
+
+#: misc/fsck.c:1086
+msgid "Usage: fsck [-AMNPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n"
+msgstr "Utilizare: fsck [-AMNPRTV] [ -C [ descript.fiș ] ] [-t tip-sist.fiș] [opțiuni-sist.fiș] [sist.fiș ...]\n"
+
+#: misc/fsck.c:1128
+#, c-format
+msgid "%s: too many devices\n"
+msgstr "%s: prea multe dispozitive\n"
+
+#: misc/fsck.c:1161 misc/fsck.c:1247
+#, c-format
+msgid "%s: too many arguments\n"
+msgstr "%s: prea multe argumente\n"
+
+#: misc/fuse2fs.c:3746
+msgid "Mounting read-only.\n"
+msgstr "Se montează doar-pentru-citire.\n"
+
+#: misc/fuse2fs.c:3770
+#, c-format
+msgid "%s: Allowing users to allocate all blocks. This is dangerous!\n"
+msgstr "%s: Se permite utilizatorilor să aloce toate blocurile. Acest lucru este periculos!\n"
+
+#: misc/fuse2fs.c:3782 misc/fuse2fs.c:3800
+#, c-format
+msgid "%s: %s.\n"
+msgstr "%s: %s.\n"
+
+#: misc/fuse2fs.c:3783 misc/fuse2fs.c:3802 misc/tune2fs.c:3108
+#, c-format
+msgid "Please run e2fsck -fy %s.\n"
+msgstr "Vă rugăm să rulați «e2fsck -fy %s».\n"
+
+#: misc/fuse2fs.c:3793
+#, c-format
+msgid "%s: mounting read-only without recovering journal\n"
+msgstr "%s: se montează doar-pentru-citire fără jurnal de recuperare\n"
+
+#: misc/fuse2fs.c:3809
+msgid "Journal needs recovery; running `e2fsck -E journal_only' is required.\n"
+msgstr "Jurnalul trebuie să fie recuperat; este necesară rularea comenzii «e2fsck -E journal_only».\n"
+
+#: misc/fuse2fs.c:3817
+#, c-format
+msgid "%s: Writing to the journal is not supported.\n"
+msgstr "%s: Scrierea în jurnal nu este admisă.\n"
+
+#: misc/fuse2fs.c:3832
+msgid "Warning: Mounting unchecked fs, running e2fsck is recommended.\n"
+msgstr "Avertisment: Se montează sistemul de fișiere fără verificare, se recomandă rularea «e2fsck».\n"
+
+#: misc/fuse2fs.c:3836
+msgid "Warning: Maximal mount count reached, running e2fsck is recommended.\n"
+msgstr "Avertisment: A fost atins numărul maxim de montări, se recomandă rularea «e2fsck».\n"
+
+#: misc/fuse2fs.c:3841
+msgid "Warning: Check time reached; running e2fsck is recommended.\n"
+msgstr "Avertisment: Data limită de verificare a fost atinsă; se recomandă rularea «e2fsck».\n"
+
+#: misc/fuse2fs.c:3845
+msgid "Orphans detected; running e2fsck is recommended.\n"
+msgstr "Au fost detectate blocuri orfane; se recomandă rularea «e2fsck».\n"
+
+#: misc/fuse2fs.c:3849
+msgid "Errors detected; running e2fsck is required.\n"
+msgstr "Au fost detectate erori; este necesară rularea «e2fsck».\n"
+
+#: misc/lsattr.c:75
+#, c-format
+msgid "Usage: %s [-RVadlpv] [files...]\n"
+msgstr "Utilizare: %s [-RVadlpv] [fișiere...]\n"
+
+#: misc/lsattr.c:86
+#, c-format
+msgid "While reading flags on %s"
+msgstr "În timp ce se citeau fanioanele pe %s"
+
+#: misc/lsattr.c:93
+#, c-format
+msgid "While reading project on %s"
+msgstr "În timp ce se citea proiectul de pe %s"
+
+#: misc/lsattr.c:102
+#, c-format
+msgid "While reading version on %s"
+msgstr "În timp ce se citea versiunea de pe %s"
+
+#: misc/lsattr.c:148
+msgid "Couldn't allocate path variable in lsattr_dir_proc\n"
+msgstr "Nu s-a putut aloca variabila de rută în lsattr_dir_proc\n"
+
+#: misc/mke2fs.c:131
+#, c-format
+msgid ""
+"Usage: %s [-c|-l filename] [-b block-size] [-C cluster-size]\n"
+"\t[-i bytes-per-inode] [-I inode-size] [-J journal-options]\n"
+"\t[-G flex-group-size] [-N number-of-inodes] [-d root-directory]\n"
+"\t[-m reserved-blocks-percentage] [-o creator-os]\n"
+"\t[-g blocks-per-group] [-L volume-label] [-M last-mounted-directory]\n"
+"\t[-O feature[,...]] [-r fs-revision] [-E extended-option[,...]]\n"
+"\t[-t fs-type] [-T usage-type ] [-U UUID] [-e errors_behavior][-z undo_file]\n"
+"\t[-jnqvDFSV] device [blocks-count]\n"
+msgstr ""
+"Utilizare: %s [-c|-l nume-fișier] [-b dimens-bloc] [-C dimens-cluster]\n"
+" [-i octeți_per_nod-i] [-I dimens_nod-i] [-J opțiuni-jurnal]\n"
+" [-G dimens-grup-flex] [-N număr_de_noduri-i] [-d director-rădăcină]\n"
+" [-m procentaj-blocuri-rezervate] [-o creator-SO]\n"
+" [-g blocuri-per-grup] [-L etichetă-volum] [-M ultimul-director-montat]\n"
+" [-O caracteristică[,...]] [-r versiune-SF] [-E opțiune-extinsă[,...]]\n"
+" [-t tip-SF] [-T tip-utilizare ] [-U UUID] [-e comportament_erori]\n"
+" [-z fișier_anulări] [-jnqvDFSV] dispozitiv [număr-blocuri]\n"
+
+#: misc/mke2fs.c:263
+#, c-format
+msgid "Running command: %s\n"
+msgstr "Se execută comanda: %s\n"
+
+#: misc/mke2fs.c:267
+#, c-format
+msgid "while trying to run '%s'"
+msgstr "în timp ce se încerca să se execute „%s”"
+
+#: misc/mke2fs.c:274
+msgid "while processing list of bad blocks from program"
+msgstr "în timp ce se procesa lista de blocuri defectuoase din program"
+
+#: misc/mke2fs.c:301
+#, c-format
+msgid "Block %d in primary superblock/group descriptor area bad.\n"
+msgstr "Blocul %d din zona descriptorului primar al super-blocului/grupului este defectuos.\n"
+
+#: misc/mke2fs.c:303
+#, c-format
+msgid "Blocks %u through %u must be good in order to build a filesystem.\n"
+msgstr "Blocurile de la %u la %u trebuie să fie bune pentru a construi un sistem de fișiere.\n"
+
+#: misc/mke2fs.c:306
+msgid "Aborting....\n"
+msgstr "Se abandonează...\n"
+
+#: misc/mke2fs.c:326
+#, c-format
+msgid ""
+"Warning: the backup superblock/group descriptors at block %u contain\n"
+"\tbad blocks.\n"
+"\n"
+msgstr ""
+"Avertisment: descriptorii super-blocului/grupului de rezervă din blocul %u\n"
+" conțin blocuri defectuoase.\n"
+
+#: misc/mke2fs.c:345 misc/mke2fs.c:3318
+msgid "while marking bad blocks as used"
+msgstr "în timp ce se marcau blocurile defectuoase ca fiind utilizate"
+
+#: misc/mke2fs.c:370
+msgid "while writing reserved inodes"
+msgstr "în timp ce se scriau nodurile-i rezervate"
+
+#: misc/mke2fs.c:422
+msgid "Writing inode tables: "
+msgstr "Se scriu tabelele de noduri-i: "
+
+#: misc/mke2fs.c:444
+#, c-format
+msgid ""
+"\n"
+"Could not write %d blocks in inode table starting at %llu: %s\n"
+msgstr ""
+"\n"
+"Nu s-au putut scrie %d blocuri în tabelul de noduri-i care începe la %llu: %s\n"
+
+#: misc/mke2fs.c:459 misc/mke2fs.c:2870 misc/mke2fs.c:3278
+msgid "done \n"
+msgstr "gata, s-a făcut \n"
+
+#: misc/mke2fs.c:474
+msgid "while creating root dir"
+msgstr "în timp ce se crea directorul rădăcină"
+
+#: misc/mke2fs.c:481
+msgid "while reading root inode"
+msgstr "în timp ce se citea nodul-i rădăcină"
+
+#: misc/mke2fs.c:493
+msgid "while setting root inode ownership"
+msgstr "în timp ce se stabilea proprietarul nodul-i rădăcină"
+
+#: misc/mke2fs.c:511
+msgid "while creating /lost+found"
+msgstr "în timp ce se crea directorul /lost+found"
+
+#: misc/mke2fs.c:518
+msgid "while looking up /lost+found"
+msgstr "în timp ce se căuta directorul /lost+found"
+
+#: misc/mke2fs.c:531
+msgid "while expanding /lost+found"
+msgstr "în timp ce se expanda directorul /lost+found"
+
+#: misc/mke2fs.c:546
+msgid "while setting bad block inode"
+msgstr "în timp ce se stabilea nodul-i al blocurilor defectuoase"
+
+#: misc/mke2fs.c:573
+#, c-format
+msgid "Out of memory erasing sectors %d-%d\n"
+msgstr "Memorie insuficientă în timpul ștergerii sectoarelor %d-%d.\n"
+
+#: misc/mke2fs.c:583
+#, c-format
+msgid "Warning: could not read block 0: %s\n"
+msgstr "Avertisment: nu s-a putut citi blocul 0: %s\n"
+
+#: misc/mke2fs.c:601
+#, c-format
+msgid "Warning: could not erase sector %d: %s\n"
+msgstr "Avertisment: nu s-a putut șterge sectorul %d: %s\n"
+
+#: misc/mke2fs.c:617
+msgid "while splitting the journal size"
+msgstr "în timp ce se împărțea dimensiunea jurnalului"
+
+#: misc/mke2fs.c:624
+msgid "while initializing journal superblock"
+msgstr "în timp ce se inițializa super-blocul jurnalului"
+
+#: misc/mke2fs.c:632
+msgid "Zeroing journal device: "
+msgstr "Se umple cu zerouri dispozitivul jurnalului: "
+
+#: misc/mke2fs.c:644
+#, c-format
+msgid "while zeroing journal device (block %llu, count %d)"
+msgstr "în timp ce se umplea cu zerouri dispozitivul jurnalului (bloc %llu, număr %d)"
+
+#: misc/mke2fs.c:662
+msgid "while writing journal superblock"
+msgstr "în timp ce se scria super-blocul jurnalului"
+
+#: misc/mke2fs.c:676
+#, c-format
+msgid "Creating filesystem with %llu %dk blocks and %u inodes\n"
+msgstr "Se creează sistemul de fișiere cu %llu %dk blocuri și %u noduri-i\n"
+
+#: misc/mke2fs.c:684
+#, c-format
+msgid ""
+"warning: %llu blocks unused.\n"
+"\n"
+msgstr ""
+"avertisment: %llu blocuri neutilizate.\n"
+"\n"
+
+#: misc/mke2fs.c:688
+#, c-format
+msgid "Filesystem label=%.*s\n"
+msgstr "Eticheta sistemului de fișiere=%.*s\n"
+
+#: misc/mke2fs.c:692
+#, c-format
+msgid "OS type: %s\n"
+msgstr "Tipul SO: %s\n"
+
+#: misc/mke2fs.c:694
+#, c-format
+msgid "Block size=%u (log=%u)\n"
+msgstr "Dimensiune bloc=%u (jurnal=%u)\n"
+
+#: misc/mke2fs.c:697
+#, c-format
+msgid "Cluster size=%u (log=%u)\n"
+msgstr "Dimensiune cluster=%u (jurnal=%u)\n"
+
+#: misc/mke2fs.c:701
+#, c-format
+msgid "Fragment size=%u (log=%u)\n"
+msgstr "Dimensiune fragment=%u (jurnal=%u)\n"
+
+#: misc/mke2fs.c:703
+#, c-format
+msgid "Stride=%u blocks, Stripe width=%u blocks\n"
+msgstr "Lungime dungă (stride)=%u blocuri, Lățime dungă (stripe width)=%u blocuri\n"
+
+#: misc/mke2fs.c:705
+#, c-format
+msgid "%u inodes, %llu blocks\n"
+msgstr "%u noduri-i, %llu blocuri\n"
+
+#: misc/mke2fs.c:707
+#, c-format
+msgid "%llu blocks (%2.2f%%) reserved for the super user\n"
+msgstr "%llu blocuri (%2.2f%%) rezervate pentru super-utilizator\n"
+
+#: misc/mke2fs.c:710
+#, c-format
+msgid "First data block=%u\n"
+msgstr "Primul bloc de date=%u\n"
+
+#: misc/mke2fs.c:712
+#, c-format
+msgid "Root directory owner=%u:%u\n"
+msgstr "Proprietarul directorului rădăcină=%u:%u\n"
+
+#: misc/mke2fs.c:714
+#, c-format
+msgid "Maximum filesystem blocks=%lu\n"
+msgstr "Numărul maxim de blocuri al sistemului de fișiere=%lu\n"
+
+#: misc/mke2fs.c:718
+#, c-format
+msgid "%u block groups\n"
+msgstr "%u (de) grupuri de blocuri\n"
+
+#: misc/mke2fs.c:720
+#, c-format
+msgid "%u block group\n"
+msgstr "%u grup de blocuri\n"
+
+#: misc/mke2fs.c:722
+#, c-format
+msgid "%u blocks per group, %u clusters per group\n"
+msgstr "%u blocuri per grup, %u clusteri per grup\n"
+
+#: misc/mke2fs.c:725
+#, c-format
+msgid "%u blocks per group, %u fragments per group\n"
+msgstr "%u blocuri per grup, %u fragmente per grup\n"
+
+#: misc/mke2fs.c:727
+#, c-format
+msgid "%u inodes per group\n"
+msgstr "%u noduri-i per grup\n"
+
+#: misc/mke2fs.c:736
+#, c-format
+msgid "Filesystem UUID: %s\n"
+msgstr "UUID-ul sistemului de fișiere: %s\n"
+
+#: misc/mke2fs.c:737
+msgid "Superblock backups stored on blocks: "
+msgstr "Copii de rezervă ale super-blocului stocate în blocuri: "
+
+#: misc/mke2fs.c:833
+#, c-format
+msgid "%s requires '-O 64bit'\n"
+msgstr "%s necesită opțiunea „-O 64bit”\n"
+
+#: misc/mke2fs.c:839
+#, c-format
+msgid "'%s' must be before 'resize=%u'\n"
+msgstr "„%s” trebuie să fie înainte de „resize=%u”\n"
+
+#: misc/mke2fs.c:852
+#, c-format
+msgid "Invalid desc_size: '%s'\n"
+msgstr "«desc_size» nevalid: „%s”\n"
+
+#: misc/mke2fs.c:866
+#, c-format
+msgid "Invalid hash seed: %s\n"
+msgstr "Sămânță „hash” nevalidă: %s\n"
+
+#: misc/mke2fs.c:878
+#, c-format
+msgid "Invalid offset: %s\n"
+msgstr "Decalaj nevalid: %s\n"
+
+#: misc/mke2fs.c:892 misc/tune2fs.c:2148
+#, c-format
+msgid "Invalid mmp_update_interval: %s\n"
+msgstr "«mmp_update_interval» nevalid: %s\n"
+
+#: misc/mke2fs.c:909
+#, c-format
+msgid "Invalid # of backup superblocks: %s\n"
+msgstr "Număr nevalid de super-blocuri de rezervă: %s\n"
+
+#: misc/mke2fs.c:931
+#, c-format
+msgid "Invalid stride parameter: %s\n"
+msgstr "Parametru de lungime de dungă „stride” nevalid: %s\n"
+
+#: misc/mke2fs.c:946
+#, c-format
+msgid "Invalid stripe-width parameter: %s\n"
+msgstr "Parametru de lățime de dungă „stripe-width” nevalid: %s\n"
+
+#: misc/mke2fs.c:969
+#, c-format
+msgid "Invalid resize parameter: %s\n"
+msgstr "Parametru de redimensionare nevalid: %s\n"
+
+#: misc/mke2fs.c:976
+msgid "The resize maximum must be greater than the filesystem size.\n"
+msgstr "Valoarea maximă de redimensionare trebuie să fie mai mare decât dimensiunea sistemului de fișiere.\n"
+
+#: misc/mke2fs.c:1000
+msgid "On-line resizing not supported with revision 0 filesystems\n"
+msgstr "Redimensionarea în linie nu este admisă cu sistemele de fișiere cu versiunea 0\n"
+
+#: misc/mke2fs.c:1026 misc/mke2fs.c:1035
+#, c-format
+msgid "Invalid root_owner: '%s'\n"
+msgstr "Proprietar-rădăcină nevalid: „%s”\n"
+
+#: misc/mke2fs.c:1080
+#, c-format
+msgid "Invalid encoding: %s"
+msgstr "Codificare nevalidă: %s"
+
+#: misc/mke2fs.c:1098
+#, c-format
+msgid ""
+"\n"
+"Bad option(s) specified: %s\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"
+"\tmmp_update_interval=<interval>\n"
+"\tnum_backup_sb=<0|1|2>\n"
+"\tstride=<RAID per-disk data chunk in blocks>\n"
+"\tstripe-width=<RAID stride * data disks in blocks>\n"
+"\toffset=<offset to create the file system>\n"
+"\tresize=<resize maximum size in blocks>\n"
+"\tpacked_meta_blocks=<0 to disable, 1 to enable>\n"
+"\tlazy_itable_init=<0 to disable, 1 to enable>\n"
+"\tlazy_journal_init=<0 to disable, 1 to enable>\n"
+"\troot_owner=<uid of root dir>:<gid of root dir>\n"
+"\ttest_fs\n"
+"\tdiscard\n"
+"\tnodiscard\n"
+"\tencoding=<encoding>\n"
+"\tencoding_flags=<flags>\n"
+"\tquotatype=<quota type(s) to be enabled>\n"
+"\n"
+msgstr ""
+"\n"
+"Opțiunile specificate sunt greșite: %s\n"
+"\n"
+"Opțiunile extinse sunt separate prin virgule și pot primi un argument care\n"
+"\teste definit de un semn de egalitate („=”).\n"
+"\n"
+"Opțiunile extinse valide sunt:\n"
+"\tmmp_update_interval=<interval>\n"
+"\tnum_backup_sb=<0|1|2>\n"
+"\tstride=<Bucată de date pe disc RAID în blocuri>\n"
+"\tstripe-width=<RAID stride * discurile de date în blocuri>\n"
+"\toffset=<poziția de la care se începe crearea sistemului de fișiere>\n"
+"\tresize=<redimensionarea dimensiunii maxime în blocuri>\n"
+"\tpacked_meta_blocks=<0 pentru dezactivare, 1 pentru activare>\n"
+"\tlazy_itable_init=<0 pentru dezactivare, 1 pentru activare>\n"
+"\tlazy_journal_init=<0 pentru dezactivare, 1 pentru activare>\n"
+"\troot_owner=<uid-ul directorului rădăcină>:<gid-ul directorului rădăcină>\n"
+"\ttest_fs\n"
+"\tdiscard\n"
+"\tnodiscard\n"
+"\tencoding=<codificarea>\n"
+"\tencoding_flags=<fanioane-codificare>\n"
+"\tquotatype=<tipurile de cote care urmează să fie activate>\n"
+"\n"
+
+#: misc/mke2fs.c:1125
+#, c-format
+msgid ""
+"\n"
+"Warning: RAID stripe-width %u not an even multiple of stride %u.\n"
+"\n"
+msgstr ""
+"\n"
+"Avertisment: Parametrul „stripe-width” %u de RAID nu este un multiplu par al parametrului „stride” %u.\n"
+"\n"
+
+#: misc/mke2fs.c:1136 misc/tune2fs.c:2284
+#, c-format
+msgid "error: Invalid encoding flag: %s\n"
+msgstr "eroare: Fanion de codificare nevalid: %s\n"
+
+#: misc/mke2fs.c:1142 misc/tune2fs.c:2293
+#, c-format
+msgid "error: An encoding must be explicitly specified when passing encoding-flags\n"
+msgstr "eroare: O codificare trebuie să fie specificată în mod explicit atunci când se pasează opțiunea extinsă „encoding-flags”\n"
+
+#: misc/mke2fs.c:1192
+#, c-format
+msgid ""
+"Syntax error in mke2fs config file (%s, line #%d)\n"
+"\t%s\n"
+msgstr ""
+"Eroare de sintaxă în fișierul de configurare al «mke2fs» (%s, linia nr.%d)\n"
+"\t%s\n"
+
+#: misc/mke2fs.c:1205 misc/tune2fs.c:1108
+#, c-format
+msgid "Invalid filesystem option set: %s\n"
+msgstr "Set de opțiuni al sistemului de fișiere nevalid: %s\n"
+
+#: misc/mke2fs.c:1217 misc/tune2fs.c:425
+#, c-format
+msgid "Invalid mount option set: %s\n"
+msgstr "Set de opțiuni de montare nevalid: %s\n"
+
+#: misc/mke2fs.c:1353
+#, c-format
+msgid ""
+"\n"
+"Your mke2fs.conf file does not define the %s filesystem type.\n"
+msgstr ""
+"\n"
+"Fișierul dvs. „mke2fs.conf” nu definește tipul de sistem de fișiere %s.\n"
+
+#: misc/mke2fs.c:1357
+msgid ""
+"You probably need to install an updated mke2fs.conf file.\n"
+"\n"
+msgstr ""
+"Probabil că trebuie să instalați un fișier „mke2fs.conf” actualizat.\n"
+"\n"
+
+#: misc/mke2fs.c:1361
+msgid "Aborting...\n"
+msgstr "Se abandonează...\n"
+
+#: misc/mke2fs.c:1402
+#, c-format
+msgid ""
+"\n"
+"Warning: the fs_type %s is not defined in mke2fs.conf\n"
+"\n"
+msgstr ""
+"\n"
+"Avertizare: fs_type %s nu este definit în „mke2fs.conf”\n"
+"\n"
+
+#: misc/mke2fs.c:1591
+msgid "Couldn't allocate memory for new PATH.\n"
+msgstr "Nu s-a putut aloca memorie pentru noua RUTĂ.\n"
+
+#: misc/mke2fs.c:1628
+#, c-format
+msgid "Couldn't init profile successfully (error: %ld).\n"
+msgstr "Nu s-a putut iniția profilul cu succes (eroare: %ld).\n"
+
+#: misc/mke2fs.c:1661
+#, c-format
+msgid "invalid block size - %s"
+msgstr "dimensiune a blocului nevalidă - %s"
+
+#: misc/mke2fs.c:1665
+#, c-format
+msgid "Warning: blocksize %d not usable on most systems.\n"
+msgstr "Avertisment: dimensiunea blocului %d nu este utilizabilă pe majoritatea sistemelor.\n"
+
+#: misc/mke2fs.c:1681
+#, c-format
+msgid "invalid cluster size - %s"
+msgstr "dimensiune a clusteruluii nevalidă - %s"
+
+#: misc/mke2fs.c:1694
+msgid "'-R' is deprecated, use '-E' instead"
+msgstr "opțiunea „-R” este depășită, utilizați în schimb opțiunea „-E”"
+
+#: misc/mke2fs.c:1708 misc/tune2fs.c:1874
+#, c-format
+msgid "bad error behavior - %s"
+msgstr "comportament de eroare greșit - %s"
+
+#: misc/mke2fs.c:1720
+msgid "Illegal number for blocks per group"
+msgstr "Număr ilegal de blocuri pe grup"
+
+#: misc/mke2fs.c:1725
+msgid "blocks per group must be multiple of 8"
+msgstr "blocurile pe grup trebuie să fie un multiplu de 8"
+
+#: misc/mke2fs.c:1733
+msgid "Illegal number for flex_bg size"
+msgstr "Număr ilegal pentru dimensiunea „flex_bg”"
+
+#: misc/mke2fs.c:1739
+msgid "flex_bg size must be a power of 2"
+msgstr "dimensiunea „flex_bg” trebuie să fie o putere de 2"
+
+#: misc/mke2fs.c:1744
+#, c-format
+msgid "flex_bg size (%lu) must be less than or equal to 2^31"
+msgstr "dimensiunea „flex_bg” (%lu) trebuie să fie mai mică sau egală cu 2^31"
+
+#: misc/mke2fs.c:1754
+#, c-format
+msgid "invalid inode ratio %s (min %d/max %d)"
+msgstr "raport de noduri-i nevalid %s (min %d/max %d)"
+
+#: misc/mke2fs.c:1764
+#, c-format
+msgid "invalid inode size - %s"
+msgstr "dimensiune a nodului-i nevalidă - %s"
+
+#: misc/mke2fs.c:1779
+msgid "Warning: -K option is deprecated and should not be used anymore. Use '-E nodiscard' extended option instead!\n"
+msgstr "Avertisment: opțiunea „-K” este depășită și nu ar trebui să mai fie utilizată. Utilizați în schimb opțiunea extinsă „-E nodiscard”!\n"
+
+#: misc/mke2fs.c:1790
+msgid "in malloc for bad_blocks_filename"
+msgstr "în malloc pentru bad_blocks_filename"
+
+#: misc/mke2fs.c:1799
+#, c-format
+msgid ""
+"Warning: label too long; will be truncated to '%s'\n"
+"\n"
+msgstr "Avertisment: etichetă prea lungă; va fi trunchiată la „%s”\n"
+
+#: misc/mke2fs.c:1808
+#, c-format
+msgid "invalid reserved blocks percent - %s"
+msgstr "procent de blocuri rezervate nevalid - %s"
+
+#: misc/mke2fs.c:1823
+#, c-format
+msgid "bad num inodes - %s"
+msgstr "număr de noduri-i incorect - %s"
+
+#: misc/mke2fs.c:1836
+msgid "while allocating fs_feature string"
+msgstr "în timp ce se aloca șirul fs_feature"
+
+#: misc/mke2fs.c:1853
+#, c-format
+msgid "bad revision level - %s"
+msgstr "nivel de revizuire a versiunii greșit - %s"
+
+#: misc/mke2fs.c:1858
+#, c-format
+msgid "while trying to create revision %d"
+msgstr "în timp ce se încerca crearea revizuirii %d"
+
+#: misc/mke2fs.c:1872
+msgid "The -t option may only be used once"
+msgstr "Opțiunea „-t” poate fi utilizată doar o singură dată"
+
+#: misc/mke2fs.c:1880
+msgid "The -T option may only be used once"
+msgstr "Opțiunea „-T” poate fi utilizată doar o singură dată"
+
+#: misc/mke2fs.c:1936 misc/mke2fs.c:3401
+#, c-format
+msgid "while trying to open journal device %s\n"
+msgstr "în timp ce se încerca deschiderea dispozitivului de jurnal %s\n"
+
+#: misc/mke2fs.c:1942
+#, c-format
+msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n"
+msgstr "Dimensiunea blocului dispozitivului de jurnal (%d) este mai mică decât dimensiunea minimă a blocului %d\n"
+
+#: misc/mke2fs.c:1948
+#, c-format
+msgid "Using journal device's blocksize: %d\n"
+msgstr "Se utilizează dimensiunea de bloc a dispozitivului de jurnal: %d\n"
+
+#: misc/mke2fs.c:1959
+#, c-format
+msgid "invalid blocks '%s' on device '%s'"
+msgstr "blocuri nevalide „%s” pe dispozitivul „%s”"
+
+#: misc/mke2fs.c:1979
+msgid "filesystem"
+msgstr "sistem de fișiere"
+
+#: misc/mke2fs.c:1994 lib/support/plausible.c:192
+#, c-format
+msgid "The file %s does not exist and no size was specified.\n"
+msgstr "Fișierul „%s” nu există și nu a fost specificată nicio dimensiune.\n"
+
+#: misc/mke2fs.c:2006 lib/support/plausible.c:200
+#, c-format
+msgid "Creating regular file %s\n"
+msgstr "Se creează fișierul obișnuit %s\n"
+
+#: misc/mke2fs.c:2011 resize/main.c:512
+msgid "while trying to determine filesystem size"
+msgstr "în timp ce se încerca să se determine dimensiunea sistemului de fișiere"
+
+#: misc/mke2fs.c:2017
+msgid ""
+"Couldn't determine device size; you must specify\n"
+"the size of the filesystem\n"
+msgstr ""
+"Nu s-a putut determina dimensiunea dispozitivului; trebuie să specificați\n"
+"dimensiunea sistemului de fișiere\n"
+
+#: misc/mke2fs.c:2024
+msgid ""
+"Device size reported to be zero. Invalid partition specified, or\n"
+"\tpartition table wasn't reread after running fdisk, due to\n"
+"\ta modified partition being busy and in use. You may need to reboot\n"
+"\tto re-read your partition table.\n"
+msgstr ""
+"Dimensiunea dispozitivului este raportată ca fiind zero. Partiție nevalidă\n"
+"specificată sau tabelul de partiții nu a fost recitit după rularea fdisk,\n"
+"din cauza unei partiții modificate care este ocupată și în curs de utilizare.\n"
+"Este posibil să fie nevoie să reporniți pentru a citi din nou tabela de partiții.\n"
+
+#: misc/mke2fs.c:2041
+msgid "Filesystem larger than apparent device size."
+msgstr "Sistemul de fișiere este mai mare decât dimensiunea aparentă a dispozitivului."
+
+#: misc/mke2fs.c:2064
+msgid "Failed to parse fs types list\n"
+msgstr "Nu s-a reușit să se analizeze lista de tipuri de sisteme de fișiere\n"
+
+#: misc/mke2fs.c:2114
+msgid "The HURD does not support the filetype feature.\n"
+msgstr "HURD nu are implementată caracteristica de determinare a tipului de fișier „filetype”.\n"
+
+#: misc/mke2fs.c:2119
+msgid "The HURD does not support the huge_file feature.\n"
+msgstr "HURD nu are implementată caracteristica „huge_file”.\n"
+
+#: misc/mke2fs.c:2124
+msgid "The HURD does not support the metadata_csum feature.\n"
+msgstr "HURD nu are implementată caracteristica „metadata_csum”.\n"
+
+#: misc/mke2fs.c:2129
+msgid "The HURD does not support the ea_inode feature.\n"
+msgstr "HURD nu are implementată caracteristica „ea_inode”.\n"
+
+#: misc/mke2fs.c:2139
+msgid "while trying to determine hardware sector size"
+msgstr "în timp ce se încerca să se determine dimensiunea sectorului hardware"
+
+#: misc/mke2fs.c:2145
+msgid "while trying to determine physical sector size"
+msgstr "în timp ce se încerca să se determine dimensiunea sectorului fizic"
+
+#: misc/mke2fs.c:2177
+msgid "while setting blocksize; too small for device\n"
+msgstr "în timp ce se stabilea dimensiunea blocului; prea mică pentru dispozitiv\n"
+
+#: misc/mke2fs.c:2182
+#, c-format
+msgid "Warning: specified blocksize %d is less than device physical sectorsize %d\n"
+msgstr "Avertizare: dimensiunea blocurilor specificate %d este mai mică decât dimensiunea sectorului fizic al dispozitivului %d\n"
+
+#: misc/mke2fs.c:2206
+#, c-format
+msgid ""
+"%s: Size of device (0x%llx blocks) %s too big to be expressed\n"
+"\tin 32 bits using a blocksize of %d.\n"
+msgstr ""
+"%s: Dimensiunea dispozitivului (0x%llx blocuri) %s este prea mare pentru a fi exprimată\n"
+"\tpe 32 de biți folosind o dimensiune a blocurilor de %d.\n"
+
+#: misc/mke2fs.c:2220
+#, c-format
+msgid ""
+"%s: Size of device (0x%llx blocks) %s too big to create\n"
+"\ta filesystem using a blocksize of %d.\n"
+msgstr ""
+"%s: Dimensiunea dispozitivului (0x%llx blocuri) %s este prea mare pentru a fi creat\n"
+"\tun sistem de fișiere folosind o dimensiune a blocurilor de %d.\n"
+
+#: misc/mke2fs.c:2242
+msgid "fs_types for mke2fs.conf resolution: "
+msgstr "rezoluția fs_types pentru configurația din „mke2fs.conf”: "
+
+#: misc/mke2fs.c:2249
+msgid "Filesystem features not supported with revision 0 filesystems\n"
+msgstr "Caracteristicile sistemului de fișiere care nu sunt acceptate cu sistemele de fișiere de revizuire 0\n"
+
+#: misc/mke2fs.c:2257
+msgid "Sparse superblocks not supported with revision 0 filesystems\n"
+msgstr "Super-blocurile disperse nu sunt acceptate cu sistemele de fișiere cu revizuire 0\n"
+
+#: misc/mke2fs.c:2267
+msgid "Journals not supported with revision 0 filesystems\n"
+msgstr "Jurnalele nu sunt acceptate cu sistemele de fișiere cu revizuirea 0\n"
+
+#: misc/mke2fs.c:2280
+#, c-format
+msgid "invalid reserved blocks percent - %lf"
+msgstr "procentaj de blocuri rezervate nevalid - %lf"
+
+#: misc/mke2fs.c:2297
+msgid "Extents MUST be enabled for a 64-bit filesystem. Pass -O extents to rectify.\n"
+msgstr "„Extents” TREBUIE să fie activat pentru un sistem de fișiere pe 64 de biți. Pasați opțiunea „-O extents” pentru rectificare.\n"
+
+#: misc/mke2fs.c:2317
+msgid "The cluster size may not be smaller than the block size.\n"
+msgstr "Dimensiunea clusterului nu poate fi mai mică decât dimensiunea blocului.\n"
+
+#: misc/mke2fs.c:2323
+msgid "specifying a cluster size requires the bigalloc feature"
+msgstr "specificarea unei dimensiuni a clusterului necesită caracteristica „bigalloc”"
+
+#: misc/mke2fs.c:2343
+#, c-format
+msgid "warning: Unable to get device geometry for %s\n"
+msgstr "avertizare: Nu se poate obține geometria dispozitivului pentru %s\n"
+
+#: misc/mke2fs.c:2355
+#, c-format
+msgid "%s alignment is offset by %lu bytes.\n"
+msgstr "Alinierea %s este decalată cu %lu octeți.\n"
+
+#: misc/mke2fs.c:2357
+#, c-format
+msgid "This may result in very poor performance, (re)-partitioning suggested.\n"
+msgstr "Acest lucru poate avea ca rezultat performanțe foarte slabe, se sugerează (re)-partiționarea.\n"
+
+#: misc/mke2fs.c:2363
+#, c-format
+msgid "%s is capable of DAX but current block size %u is different from system page size %u so filesystem will not support DAX.\n"
+msgstr "%s este capabil de DAX, dar dimensiunea actuală a blocului %u este diferită de dimensiunea paginii de sistem %u, astfel încât sistemul de fișiere nu va suporta DAX.\n"
+
+#: misc/mke2fs.c:2387
+#, c-format
+msgid "%d-byte blocks too big for system (max %d)"
+msgstr "blocurile de %d-octeți sunt prea mari pentru sistem (max %d)"
+
+#: misc/mke2fs.c:2391
+#, c-format
+msgid "Warning: %d-byte blocks too big for system (max %d), forced to continue\n"
+msgstr "Avertisment: blocurile de %d-octeți sunt prea mari pentru sistem (max %d), dar «mke2fs» este forțat să continue\n"
+
+#: misc/mke2fs.c:2399
+#, c-format
+msgid "Suggestion: Use Linux kernel >= 3.18 for improved stability of the metadata and journal checksum features.\n"
+msgstr "Sugestie: Folosiți un nucleu Linux >= 3.18 pentru o mai bună stabilitate a funcțiilor de verificare a metadatelor și a sumei de control a jurnalului.\n"
+
+#: misc/mke2fs.c:2445
+#, c-format
+msgid "Unknown filename encoding from profile: %s"
+msgstr "Codificare necunoscută a numelui de fișier din profil: %s"
+
+#: misc/mke2fs.c:2456
+#, c-format
+msgid "Unknown encoding flags from profile: %s"
+msgstr "Fanioane de codificare necunoscute din profil: %s"
+
+#: misc/mke2fs.c:2481
+#, c-format
+msgid ""
+"\n"
+"Warning: offset specified without an explicit file system size.\n"
+"Creating a file system with %llu blocks but this might\n"
+"not be what you want.\n"
+"\n"
+msgstr ""
+"\n"
+"Avertisment: poziție specificată fără o dimensiune explicită a sistemului de fișiere.\n"
+"Se creează un sistem de fișiere cu blocuri %llu, dar acest lucru ar putea\n"
+"să nu fie ceea ce vă doriți.\n"
+"\n"
+
+#: misc/mke2fs.c:2496
+#, c-format
+msgid "%d byte inodes are too small for project quota"
+msgstr "nodurile-i de %d octeți sunt prea mici pentru cota proiectului"
+
+#: misc/mke2fs.c:2518
+msgid "Can't support bigalloc feature without extents feature"
+msgstr "Nu se poate aplica caracteristica „bigalloc” fără caracteristica „extents”"
+
+#: misc/mke2fs.c:2525
+msgid ""
+"The resize_inode and meta_bg features are not compatible.\n"
+"They can not be both enabled simultaneously.\n"
+msgstr ""
+"Caracteristicile „resize_inode” și „meta_bg” nu sunt compatibile.\n"
+"Ele nu pot fi activate simultan.\n"
+
+#: misc/mke2fs.c:2534
+msgid ""
+"\n"
+"Warning: bigalloc file systems with a cluster size greater than\n"
+"16 times the block size is considered experimental\n"
+msgstr ""
+"\n"
+"Atenție: sistemele de fișiere „bigalloc” cu o dimensiune a clusterului mai mare\n"
+"de 16 ori dimensiunea blocului este considerată experimentală.\n"
+
+#: misc/mke2fs.c:2546
+msgid "reserved online resize blocks not supported on non-sparse filesystem"
+msgstr "blocurile de redimensionare online rezervate nu sunt acceptate pe un sistem de fișiere care nu este dispers"
+
+#: misc/mke2fs.c:2555
+msgid "blocks per group count out of range"
+msgstr "numărul de blocuri pe grup este în afara limitei"
+
+#: misc/mke2fs.c:2577
+msgid "Flex_bg feature not enabled, so flex_bg size may not be specified"
+msgstr "Caracteristica „flex_bg” nu este activată, astfel încât dimensiunea „flex_bg” nu poate fi specificată"
+
+#: misc/mke2fs.c:2589
+#, c-format
+msgid "invalid inode size %d (min %d/max %d)"
+msgstr "dimensiune a nodului-i nevalidă %d (min %d/max %d)"
+
+#: misc/mke2fs.c:2604
+#, c-format
+msgid "%d byte inodes are too small for inline data; specify larger size"
+msgstr "nodurile-i de %d octeți sunt prea mici pentru datele în linie; specificați o dimensiune mai mare"
+
+#: misc/mke2fs.c:2619
+#, c-format
+msgid "128-byte inodes cannot handle dates beyond 2038 and are deprecated\n"
+msgstr "nodurile-i de 128 de octeți nu pot gestiona date după anul 2038 și sunt depreciate\n"
+
+#: misc/mke2fs.c:2630
+#, c-format
+msgid "too many inodes (%llu), raise inode ratio?"
+msgstr "prea multe noduri-i (%llu), creșteți raportul de noduri-i?"
+
+#: misc/mke2fs.c:2638
+#, c-format
+msgid "too many inodes (%llu), specify < 2^32 inodes"
+msgstr "prea multe noduri-i (%llu), specificați < 2^32 noduri-i"
+
+#: misc/mke2fs.c:2652
+#, c-format
+msgid ""
+"inode_size (%u) * inodes_count (%u) too big for a\n"
+"\tfilesystem with %llu blocks, specify higher inode_ratio (-i)\n"
+"\tor lower inode count (-N).\n"
+msgstr ""
+"Spațiul de noduri-i [dimensiunea_nodului-i (%u) * numărul_de_noduri-i (%u)]\n"
+" este prea mare pentru un sistem de fișiere cu %llu blocuri,\n"
+" specificați un raport de noduri-i mai mare (cu opțiunea „-i”) sau\n"
+" un număr mai mic de noduri-i (cu opțiunea „-N”).\n"
+
+#: misc/mke2fs.c:2849
+msgid "Discarding device blocks: "
+msgstr "Se renunță la blocurile de dispozitive: "
+
+#: misc/mke2fs.c:2865
+msgid "failed - "
+msgstr "a eșuat - "
+
+#: misc/mke2fs.c:2924
+msgid "while initializing quota context"
+msgstr "în timp ce se inițializa contextul de cotă"
+
+#: misc/mke2fs.c:2931
+msgid "while writing quota inodes"
+msgstr "în timp ce se scriau nodurile-i de cotă"
+
+#: misc/mke2fs.c:2956
+#, c-format
+msgid "bad error behavior in profile - %s"
+msgstr "comportament greșit de eroare în profil - %s"
+
+#: misc/mke2fs.c:3035
+msgid "in malloc for android_sparse_params"
+msgstr "în malloc pentru android_sparse_params"
+
+#: misc/mke2fs.c:3049
+msgid "while setting up superblock"
+msgstr "în timp ce se crea super-blocul"
+
+#: misc/mke2fs.c:3065
+msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Pass -O extents to rectify.\n"
+msgstr "„Extents” nu sunt activate. Arborele de „extents” de fișiere poate fi verificat, în timp ce hărțile de blocuri nu pot fi verificate. Ne activarea „extents” reduce aria de acoperire a verificării sumelor de control ale metadatelor. Pasați opțiunea „-O extents” pentru a corecta situația.\n"
+
+#: misc/mke2fs.c:3072
+msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Pass -O 64bit to rectify.\n"
+msgstr "Suportul pentru sisteme de fișiere pe 64 de biți nu este activat. Câmpurile mai mari oferite de această caracteristică permit o verificare completă a sumelor de control. Pasați opțiunea „-O 64bit” pentru a rectifica.\n"
+
+#: misc/mke2fs.c:3080
+msgid "The metadata_csum_seed feature requires the metadata_csum feature.\n"
+msgstr "Caracteristica metadata_csum_seed necesită caracteristica metadata_csum.\n"
+
+#: misc/mke2fs.c:3104
+msgid "Discard succeeded and will return 0s - skipping inode table wipe\n"
+msgstr "Renunțarea a reușit și va returna 0s - se omite ștergerea tabelului de noduri-i\n"
+
+#: misc/mke2fs.c:3203
+#, c-format
+msgid "unknown os - %s"
+msgstr "SO necunoscut - %s"
+
+#: misc/mke2fs.c:3266
+msgid "Allocating group tables: "
+msgstr "Se alocă tabelele de grupuri: "
+
+#: misc/mke2fs.c:3274
+msgid "while trying to allocate filesystem tables"
+msgstr "în timp ce se încerca alocarea tabelelor sistemului de fișiere"
+
+#: misc/mke2fs.c:3289
+msgid "while unmarking bad blocks"
+msgstr "în timp ce se demarcau blocurile defectuoase"
+
+#: misc/mke2fs.c:3300
+msgid ""
+"\n"
+"\twhile converting subcluster bitmap"
+msgstr ""
+"\n"
+"\tîn timpul conversiei hărții de biți a subclusterului"
+
+#: misc/mke2fs.c:3309
+msgid "while calculating overhead"
+msgstr "în timp ce se calculau costurile suplimentare"
+
+#: misc/mke2fs.c:3328
+#, c-format
+msgid "%s may be further corrupted by superblock rewrite\n"
+msgstr "%s poate fi corupt și mai mult prin rescrierea super-blocului\n"
+
+#: misc/mke2fs.c:3369
+#, c-format
+msgid "while zeroing block %llu at end of filesystem"
+msgstr "în timp ce se umplea cu zerouri blocul %llu la sfârșitul sistemului de fișiere"
+
+#: misc/mke2fs.c:3382
+msgid "while reserving blocks for online resize"
+msgstr "în timp ce se rezervau blocuri pentru redimensionarea în linie"
+
+#: misc/mke2fs.c:3394 misc/tune2fs.c:1570
+msgid "journal"
+msgstr "jurnal"
+
+#: misc/mke2fs.c:3406
+#, c-format
+msgid "Adding journal to device %s: "
+msgstr "Se adaugă jurnalul la dispozitivul %s: "
+
+#: misc/mke2fs.c:3413
+#, c-format
+msgid ""
+"\n"
+"\twhile trying to add journal to device %s"
+msgstr ""
+"\n"
+"\tîn timp ce se încerca adăugarea unui jurnal la dispozitivul %s"
+
+#: misc/mke2fs.c:3418 misc/mke2fs.c:3448 misc/mke2fs.c:3490
+#: misc/mk_hugefiles.c:602 misc/tune2fs.c:1599 misc/tune2fs.c:1621
+msgid "done\n"
+msgstr "gata, s-a făcut\n"
+
+#: misc/mke2fs.c:3425
+msgid "Skipping journal creation in super-only mode\n"
+msgstr "Se omite crearea jurnalului în modul numai-super\n"
+
+#: misc/mke2fs.c:3435
+#, c-format
+msgid "Creating journal (%u blocks): "
+msgstr "Se creează jurnalul (%u blocuri): "
+
+#: misc/mke2fs.c:3444
+msgid ""
+"\n"
+"\twhile trying to create journal"
+msgstr ""
+"\n"
+"\tîn timp ce se încerca să se creeze jurnalul"
+
+#: misc/mke2fs.c:3456 misc/tune2fs.c:1173
+msgid ""
+"\n"
+"Error while enabling multiple mount protection feature."
+msgstr ""
+"\n"
+"Eroare în timpul activării caracteristicii de protecție a montării multiple."
+
+#: misc/mke2fs.c:3461
+#, c-format
+msgid "Multiple mount protection is enabled with update interval %d seconds.\n"
+msgstr "Este activată protecția împotriva montării multiple cu un interval de actualizare de %d secunde.\n"
+
+#: misc/mke2fs.c:3481
+msgid "Copying files into the device: "
+msgstr "Se copiază fișierele în dispozitiv: "
+
+#: misc/mke2fs.c:3487
+msgid "while populating file system"
+msgstr "în timp ce se popula sistemul de fișiere"
+
+#: misc/mke2fs.c:3494
+msgid "Writing superblocks and filesystem accounting information: "
+msgstr "Se scriu super-blocurile și informațiile de contabilizare ale sistemului de fișiere: "
+
+#: misc/mke2fs.c:3501
+msgid "while writing out and closing file system"
+msgstr "în timp ce se termina de scris și de închis sistemul de fișiere"
+
+#: misc/mke2fs.c:3504
+msgid ""
+"done\n"
+"\n"
+msgstr ""
+"gata, s-a făcut\n"
+"\n"
+
+#: misc/mk_hugefiles.c:339
+#, c-format
+msgid "while zeroing block %llu for hugefile"
+msgstr "în timp ce se umplea cu zerouri blocul %llu pentru fișierul uriaș"
+
+#: misc/mk_hugefiles.c:516
+#, c-format
+msgid "Partition offset of %llu (%uk) blocks not compatible with cluster size %u.\n"
+msgstr "Poziția blocurilor %llu (%uk) în partiție nu este compatibilă cu dimensiunea clusterului %u.\n"
+
+#: misc/mk_hugefiles.c:584
+msgid "Huge files will be zero'ed\n"
+msgstr "Fișierele uriașe vor fi umplute cu zerouri\n"
+
+#: misc/mk_hugefiles.c:585
+#, c-format
+msgid "Creating %lu huge file(s) "
+msgstr "Se creează fișierul(ele) uriaș(e) %lu "
+
+#: misc/mk_hugefiles.c:587
+#, c-format
+msgid "with %llu blocks each"
+msgstr "cu %llu blocuri fiecare"
+
+#: misc/mk_hugefiles.c:597
+#, c-format
+msgid "while creating huge file %lu"
+msgstr "în timp ce se creea fișierul uriaș %lu"
+
+#: misc/mklost+found.c:50
+msgid "Usage: mklost+found\n"
+msgstr "Utilizare: mklost+found\n"
+
+#: misc/partinfo.c:43
+#, c-format
+msgid ""
+"Usage: %s device...\n"
+"\n"
+"Prints out the partition information for each given device.\n"
+"For example: %s /dev/hda\n"
+"\n"
+msgstr ""
+"Utilizare: %s dispozitiv...\n"
+"\n"
+"Afișează informațiile despre partiții pentru fiecare dispozitiv dat.\n"
+"De exemplu: %s /dev/hda\n"
+"\n"
+
+#: misc/partinfo.c:53
+#, c-format
+msgid "Cannot open %s: %s"
+msgstr "Nu se poate deschide %s: %s"
+
+#: misc/partinfo.c:59
+#, c-format
+msgid "Cannot get geometry of %s: %s"
+msgstr "Nu se poate obține geometria lui %s: %s"
+
+#: misc/partinfo.c:67
+#, c-format
+msgid "Cannot get size of %s: %s"
+msgstr "Nu se poate obține dimensiunea lui %s: %s"
+
+#: misc/partinfo.c:73
+#, c-format
+msgid "%s: h=%3d s=%3d c=%4d start=%8d size=%8lu end=%8d\n"
+msgstr "%s: h=%3d s=%3d c=%4d început=%8d dimensiune=%8lu sfârșit=%8d\n"
+
+#: misc/tune2fs.c:121
+msgid ""
+"\n"
+"This operation requires a freshly checked filesystem.\n"
+msgstr ""
+"\n"
+"Această operație necesită un sistem de fișiere proaspăt verificat.\n"
+
+#: misc/tune2fs.c:123
+msgid "Please run e2fsck -f on the filesystem.\n"
+msgstr "Executați «e2fsck -f» pe sistemul de fișiere.\n"
+
+#: misc/tune2fs.c:125
+msgid "Please run e2fsck -fD on the filesystem.\n"
+msgstr "Vă rugăm să rulați «e2fsck -fD» pe sistemul de fișiere.\n"
+
+#: misc/tune2fs.c:138
+#, c-format
+msgid ""
+"Usage: %s [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]\n"
+"\t[-i interval[d|m|w]] [-j] [-J journal_options] [-l]\n"
+"\t[-m reserved_blocks_percent] [-o [^]mount_options[,...]]\n"
+"\t[-r reserved_blocks_count] [-u user] [-C mount_count]\n"
+"\t[-L volume_label] [-M last_mounted_dir]\n"
+"\t[-O [^]feature[,...]] [-Q quota_options]\n"
+"\t[-E extended-option[,...]] [-T last_check_time] [-U UUID]\n"
+"\t[-I new_inode_size] [-z undo_file] device\n"
+msgstr ""
+"Utilizare: %s [-c număr_max_montări] [-e comportament_erori] [-f] [-g grup]\n"
+" [-i interval[d|m|w]] [-j] [-J opțiuni_journal] [-l]\n"
+" [-m procent_blocuri_rezervate] [-o [^]opțiuni_montare[,...]]\n"
+" [-r număr_blocuri_rezervate] [-u utilizator] [-C număr_montări]\n"
+" [-L etichetă_volum] [-M ultimul_director_montat]\n"
+" [-O [^]caracteristică[,...]] [-Q opțiuni_cotă]\n"
+" [-E opțiune-extinsă[,...]] [-T data_ultimei_verificări] [-U UUID]\n"
+" [-I dimensiune_nod-i_nouă] [-z fișier_anulare] dispozitiv\n"
+
+#: misc/tune2fs.c:229
+msgid "Journal superblock not found!\n"
+msgstr "Super-blocul jurnalului nu a fost găsit!\n"
+
+#: misc/tune2fs.c:287
+msgid "while trying to open external journal"
+msgstr "în timp ce se încerca să se deschidă un jurnal extern"
+
+#: misc/tune2fs.c:293 misc/tune2fs.c:2896
+#, c-format
+msgid "%s is not a journal device.\n"
+msgstr "%s nu este un dispozitiv de jurnal.\n"
+
+#: misc/tune2fs.c:302 misc/tune2fs.c:2905
+#, c-format
+msgid ""
+"Journal superblock is corrupted, nr_users\n"
+"is too high (%d).\n"
+msgstr ""
+"Super-blocul jurnalului este corupt, nr_utilizatori\n"
+"este prea mare (%d)\n"
+
+#: misc/tune2fs.c:309 misc/tune2fs.c:2912
+msgid "Filesystem's UUID not found on journal device.\n"
+msgstr "UUID-ul sistemului de fișiere nu a fost găsit în dispozitivul de jurnal.\n"
+
+#: misc/tune2fs.c:333
+msgid ""
+"Cannot locate journal device. It was NOT removed\n"
+"Use -f option to remove missing journal device.\n"
+msgstr ""
+"Nu se poate localiza dispozitivul de jurnal. Acesta NU a fost eliminat.\n"
+"Utilizați opțiunea „-f” pentru a elimina dispozitivul de jurnal lipsă.\n"
+
+#: misc/tune2fs.c:342
+msgid "Journal removed\n"
+msgstr "Jurnalul a fost eliminat\n"
+
+#: misc/tune2fs.c:386
+msgid "while reading bitmaps"
+msgstr "în timp ce se citeau hărțile de biți"
+
+#: misc/tune2fs.c:394
+msgid "while clearing journal inode"
+msgstr "în timp ce se curăța nodul-i al jurnalului"
+
+#: misc/tune2fs.c:407
+msgid "while writing journal inode"
+msgstr "în timp ce se scria nodul-i al jurnalului"
+
+#: misc/tune2fs.c:443 misc/tune2fs.c:468 misc/tune2fs.c:481
+msgid "(and reboot afterwards!)\n"
+msgstr "(și reporniți după aceea!)\n"
+
+#: misc/tune2fs.c:496
+#, c-format
+msgid "After running e2fsck, please run `resize2fs %s %s"
+msgstr "După ce ați rulat «e2fsck», vă rugăm să rulați «resize2fs %s %s»"
+
+#: misc/tune2fs.c:499
+#, c-format
+msgid "Please run `resize2fs %s %s"
+msgstr "Vă rugăm să rulați «resize2fs %s %s»"
+
+#: misc/tune2fs.c:503
+#, c-format
+msgid " -z \"%s\""
+msgstr " -z „%s”"
+
+#: misc/tune2fs.c:505
+#, c-format
+msgid "' to enable 64-bit mode.\n"
+msgstr "” pentru a activa modul pe 64 de biți.\n"
+
+#: misc/tune2fs.c:507
+#, c-format
+msgid "' to disable 64-bit mode.\n"
+msgstr "” pentru a dezactiva modul pe 64 de biți.\n"
+
+#: misc/tune2fs.c:1075
+msgid ""
+"WARNING: Could not confirm kernel support for metadata_csum_seed.\n"
+" This requires Linux >= v4.4.\n"
+msgstr ""
+"AVERTISMENT: Nu s-a putut confirma suportul nucleului pentru metadata_csum_seed.\n"
+" Această caracteristică necesită Linux >= v4.4.\n"
+
+#: misc/tune2fs.c:1111
+#, c-format
+msgid "Clearing filesystem feature '%s' not supported.\n"
+msgstr "Caracteristica de curățare a sistemului de fișiere „%s” nu este acceptată.\n"
+
+#: misc/tune2fs.c:1117
+#, c-format
+msgid "Setting filesystem feature '%s' not supported.\n"
+msgstr "Caracteristica de configurare a sistemului de fișiere „%s” nu este acceptată.\n"
+
+#: misc/tune2fs.c:1126
+msgid ""
+"The has_journal feature may only be cleared when the filesystem is\n"
+"unmounted or mounted read-only.\n"
+msgstr ""
+"Caracteristica has_journal poate fi eliminată numai atunci când sistemul de fișiere este\n"
+"demontat sau montat numai-pentru-citire.\n"
+
+#: misc/tune2fs.c:1134
+msgid ""
+"The needs_recovery flag is set. Please run e2fsck before clearing\n"
+"the has_journal flag.\n"
+msgstr ""
+"Este activat fanionul needs_recovery. Vă rugăm să rulați «e2fsck» înainte de a elimina\n"
+"fanionul has_journal.\n"
+
+#: misc/tune2fs.c:1152
+msgid ""
+"Setting filesystem feature 'sparse_super' not supported\n"
+"for filesystems with the meta_bg feature enabled.\n"
+msgstr ""
+"Activarea caracteristicii sistemului de fișiere „sparse_super” nu este admisă\n"
+"pentru sistemele de fișiere cu caracteristica „meta_bg” activată.\n"
+
+#: misc/tune2fs.c:1165
+msgid ""
+"The multiple mount protection feature can't\n"
+"be set if the filesystem is mounted or\n"
+"read-only.\n"
+msgstr ""
+"Caracteristica de protecție împotriva montării multiple nu poate\n"
+"fi activată în cazul în care sistemul de fișiere este montat sau\n"
+"este numai-pentru-citire.\n"
+
+#: misc/tune2fs.c:1183
+#, c-format
+msgid "Multiple mount protection has been enabled with update interval %ds.\n"
+msgstr "A fost activată protecția împotriva montării multiple cu intervalul de actualizare %ds.\n"
+
+#: misc/tune2fs.c:1192
+msgid ""
+"The multiple mount protection feature cannot\n"
+"be disabled if the filesystem is readonly.\n"
+msgstr ""
+"Caracteristica de protecție împotriva montării multiple nu poate\n"
+"fi dezactivată dacă sistemul de fișiere este numai-pentru-citire.\n"
+
+#: misc/tune2fs.c:1200
+msgid "Error while reading bitmaps\n"
+msgstr "Eroare în timp ce se citeau hărțile de biți\n"
+
+#: misc/tune2fs.c:1209
+#, c-format
+msgid "Magic number in MMP block does not match. expected: %x, actual: %x\n"
+msgstr "Numărul magic din blocul MMP nu se potrivește; așteptat: %x, actual: %x\n"
+
+#: misc/tune2fs.c:1214
+msgid "while reading MMP block."
+msgstr "în timp ce se citea blocul MMP."
+
+#: misc/tune2fs.c:1247
+msgid "Disabling directory index on filesystem with checksums could take some time."
+msgstr "Dezactivarea indexului de directoare pe sistemul de fișiere cu sume de control ar putea dura ceva timp."
+
+#: misc/tune2fs.c:1251
+msgid "Cannot disable dir_index on a mounted filesystem!\n"
+msgstr "Nu se poate dezactiva dir_index pe un sistem de fișiere montat!\n"
+
+#: misc/tune2fs.c:1264
+msgid ""
+"Clearing the flex_bg flag would cause the the filesystem to be\n"
+"inconsistent.\n"
+msgstr ""
+"Ștergerea fanionului „flex_bg” ar face ca sistemul de fișiere să fie\n"
+"inconsistent.\n"
+
+#: misc/tune2fs.c:1275
+msgid ""
+"The huge_file feature may only be cleared when the filesystem is\n"
+"unmounted or mounted read-only.\n"
+msgstr ""
+"Caracteristica huge_file poate fi eliminată numai atunci când sistemul de fișiere este\n"
+"demontat sau montat numai-pentru-citire.\n"
+
+#: misc/tune2fs.c:1286
+msgid "Enabling checksums could take some time."
+msgstr "Activarea sumelor de control ar putea dura ceva timp."
+
+#: misc/tune2fs.c:1289
+msgid "Cannot enable metadata_csum on a mounted filesystem!\n"
+msgstr "Nu se poate activa „metadata_csum” pe un sistem de fișiere montat!\n"
+
+#: misc/tune2fs.c:1295
+msgid "Extents are not enabled. The file extent tree can be checksummed, whereas block maps cannot. Not enabling extents reduces the coverage of metadata checksumming. Re-run with -O extent to rectify.\n"
+msgstr "„Extents” nu sunt activate. Arborele de „extents” de fișiere poate fi verificat, în timp ce hărțile de blocuri nu pot fi verificate. Ne activarea „extents” reduce aria de acoperire a verificării sumelor de control ale metadatelor. Rulați din nou «tune2fs» cu opțiunea „-O extents” pentru a corecta situația.\n"
+
+#: misc/tune2fs.c:1302
+msgid "64-bit filesystem support is not enabled. The larger fields afforded by this feature enable full-strength checksumming. Run resize2fs -b to rectify.\n"
+msgstr "Suportul pentru sisteme de fișiere pe 64 de biți nu este activat. Câmpurile mai mari oferite de această caracteristică permit o verificare completă a sumelor de control. Rulați «resize2fs -b» pentru a rectifica.\n"
+
+#: misc/tune2fs.c:1328
+msgid "Disabling checksums could take some time."
+msgstr "Dezactivarea sumelor de control ar putea dura ceva timp."
+
+#: misc/tune2fs.c:1331
+msgid "Cannot disable metadata_csum on a mounted filesystem!\n"
+msgstr "Nu se poate dezactiva „metadata_csum” pe un sistem de fișiere montat!\n"
+
+#: misc/tune2fs.c:1372
+msgid "Cannot enable uninit_bg on a mounted filesystem!\n"
+msgstr "Nu se poate activa „uninit_bg” pe un sistem de fișiere montat!\n"
+
+#: misc/tune2fs.c:1387
+msgid "Cannot disable uninit_bg on a mounted filesystem!\n"
+msgstr "Nu se poate dezactiva „uninit_bg” pe un sistem de fișiere montat!\n"
+
+#: misc/tune2fs.c:1406
+#, c-format
+msgid "Cannot enable 64-bit mode while mounted!\n"
+msgstr "Nu se poate activa modul pe 64 de biți în timp ce este montat!\n"
+
+#: misc/tune2fs.c:1416
+#, c-format
+msgid "Cannot disable 64-bit mode while mounted!\n"
+msgstr "Nu se poate dezactiva modul pe 64 de biți în timp ce este montat!\n"
+
+#: misc/tune2fs.c:1446
+#, c-format
+msgid "Cannot enable project feature; inode size too small.\n"
+msgstr "Nu se poate activa caracteristica „project”; dimensiunea nodului-i este prea mică.\n"
+
+#: misc/tune2fs.c:1467
+msgid ""
+"\n"
+"Warning: '^quota' option overrides '-Q'arguments.\n"
+msgstr ""
+"\n"
+"Avertisment: opțiunea „^quota” suprascrie argumentele „-Q”.\n"
+
+#: misc/tune2fs.c:1484 misc/tune2fs.c:2246
+msgid "The casefold feature may only be enabled when the filesystem is unmounted.\n"
+msgstr "Caracteristica „casefold” poate fi activată numai atunci când sistemul de fișiere este demontat.\n"
+
+#: misc/tune2fs.c:1496
+msgid ""
+"Setting feature 'metadata_csum_seed' is only supported\n"
+"on filesystems with the metadata_csum feature enabled.\n"
+msgstr ""
+"Activarea caracteristicii „metadata_csum_seed” este posibilă numai pentru\n"
+"pe sistemele de fișiere cu caracteristica „metadata_csum” activată.\n"
+
+#: misc/tune2fs.c:1514
+msgid ""
+"UUID has changed since enabling metadata_csum. Filesystem must be unmounted \n"
+"to safely rewrite all metadata to match the new UUID.\n"
+msgstr ""
+"UUID-ul s-a schimbat de la activarea „metadata_csum”. Sistemul de fișiere trebuie să fie demontat \n"
+"pentru a rescrie în siguranță toate metadatele pentru a se potrivi cu noul UUID.\n"
+
+#: misc/tune2fs.c:1520
+msgid "Recalculating checksums could take some time."
+msgstr "Recalcularea sumelor de control ar putea dura ceva timp."
+
+#: misc/tune2fs.c:1563
+msgid "The filesystem already has a journal.\n"
+msgstr "Sistemul de fișiere are deja un jurnal.\n"
+
+#: misc/tune2fs.c:1583
+#, c-format
+msgid ""
+"\n"
+"\twhile trying to open journal on %s\n"
+msgstr ""
+"\n"
+"\tîn timp ce se încerca deschiderea jurnalului pe %s\n"
+
+#: misc/tune2fs.c:1587
+#, c-format
+msgid "Creating journal on device %s: "
+msgstr "Se creează jurnalul pe dispozitivul %s: "
+
+#: misc/tune2fs.c:1595
+#, c-format
+msgid "while adding filesystem to journal on %s"
+msgstr "în timp ce se adăuga sistemul de fișiere la jurnal pe %s"
+
+#: misc/tune2fs.c:1601
+msgid "Creating journal inode: "
+msgstr "Crearea nodului-i de jurnal: "
+
+#: misc/tune2fs.c:1615
+msgid ""
+"\n"
+"\twhile trying to create journal file"
+msgstr ""
+"\n"
+"\tîn timp ce se încerca să se creeze fișierul jurnal"
+
+#: misc/tune2fs.c:1657
+#, c-format
+msgid "Cannot enable project quota; inode size too small.\n"
+msgstr "Nu se poate activa cota proiectului; dimensiunea nodului-i este prea mică.\n"
+
+#: misc/tune2fs.c:1670
+msgid "while initializing quota context in support library"
+msgstr "în timpul inițializării contextului de cote în biblioteca de asistență"
+
+#: misc/tune2fs.c:1686
+#, c-format
+msgid "while updating quota limits (%d)"
+msgstr "în timp ce se actualiza limitele cotelor (%d)"
+
+#: misc/tune2fs.c:1696
+#, c-format
+msgid "while writing quota file (%d)"
+msgstr "în timp ce se scria fișierul de cote (%d)"
+
+#: misc/tune2fs.c:1714
+#, c-format
+msgid "while removing quota file (%d)"
+msgstr "în timp ce se elimina fișierul de cote (%d)"
+
+#: misc/tune2fs.c:1757
+msgid ""
+"\n"
+"Bad quota options specified.\n"
+"\n"
+"Following valid quota options are available (pass by separating with comma):\n"
+"\t[^]usr[quota]\n"
+"\t[^]grp[quota]\n"
+"\t[^]prj[quota]\n"
+"\n"
+"\n"
+msgstr ""
+"\n"
+"Opțiunile de cotă specificate sunt greșite.\n"
+"\n"
+"Sunt disponibile următoarele opțiuni de cotă valabile (se introduc separate prin virgule):\n"
+"\t[^]usr[quota]\n"
+"\t[^]grp[quota]\n"
+"\t[^]prj[quota]\n"
+"\n"
+"\n"
+
+#: misc/tune2fs.c:1815
+#, c-format
+msgid "Couldn't parse date/time specifier: %s"
+msgstr "Nu s-a putut analiza specificatorul de dată/oră: %s"
+
+#: misc/tune2fs.c:1847 misc/tune2fs.c:1858
+#, c-format
+msgid "bad mounts count - %s"
+msgstr "număr de montări incorect - %s"
+
+#: misc/tune2fs.c:1901
+#, c-format
+msgid "bad gid/group name - %s"
+msgstr "gid sau nume de grup incorect: %s"
+
+#: misc/tune2fs.c:1934
+#, c-format
+msgid "bad interval - %s"
+msgstr "interval eronat - %s"
+
+#: misc/tune2fs.c:1963
+#, c-format
+msgid "bad reserved block ratio - %s"
+msgstr "raport de blocuri rezervate incorect - %s"
+
+#: misc/tune2fs.c:1978
+msgid "-o may only be specified once"
+msgstr "opțiunea „-o” poate fi specificată doar o dată"
+
+#: misc/tune2fs.c:1987
+msgid "-O may only be specified once"
+msgstr "opțiunea „-O” poate fi specificată doar o dată"
+
+#: misc/tune2fs.c:2004
+#, c-format
+msgid "bad reserved blocks count - %s"
+msgstr "număr de blocuri rezervate incorect - %s"
+
+#: misc/tune2fs.c:2033
+#, c-format
+msgid "bad uid/user name - %s"
+msgstr "uid sau nume de utilizator incorect: %s"
+
+#: misc/tune2fs.c:2050
+#, c-format
+msgid "bad inode size - %s"
+msgstr "dimensiunea nodului-i incorectă - %s"
+
+#: misc/tune2fs.c:2057
+#, c-format
+msgid "Inode size must be a power of two- %s"
+msgstr "Dimensiunea nodului-i trebuie să fie o putere de doi %s"
+
+#: misc/tune2fs.c:2157
+#, c-format
+msgid "mmp_update_interval too big: %lu\n"
+msgstr "mmp_update_interval prea mare: %lu\n"
+
+#: misc/tune2fs.c:2162
+#, c-format
+msgid "Setting multiple mount protection update interval to %lu second\n"
+msgid_plural "Setting multiple mount protection update interval to %lu seconds\n"
+msgstr[0] "Se fixează intervalul de actualizare a protecției multiple de montare la %lu secundă\n"
+msgstr[1] "Se fixează intervalul de actualizare a protecției multiple de montare la %lu secunde\n"
+msgstr[2] "Se fixează intervalul de actualizare a protecției multiple de montare la %lu secunde\n"
+msgstr[3] "Se fixează intervalul de actualizare a protecției multiple de montare la %lu de secunde\n"
+
+#: misc/tune2fs.c:2171
+#, c-format
+msgid "Setting filesystem error flag to force fsck.\n"
+msgstr "Se activează fanionul de eroare a sistemului de fișiere pentru a forța verificarea «fsck».\n"
+
+#: misc/tune2fs.c:2189
+#, c-format
+msgid "Invalid RAID stride: %s\n"
+msgstr "Argument nevalid pentru „stride”: %s\n"
+
+#: misc/tune2fs.c:2204
+#, c-format
+msgid "Invalid RAID stripe-width: %s\n"
+msgstr "Argument nevalid pentru „stripe-width”: %s\n"
+
+#: misc/tune2fs.c:2219
+#, c-format
+msgid "Invalid hash algorithm: %s\n"
+msgstr "Algoritmul sumei de control (hash) nu este valid: %s\n"
+
+#: misc/tune2fs.c:2225
+#, c-format
+msgid "Setting default hash algorithm to %s (%d)\n"
+msgstr "Se stabilește algoritmul implicit al sumei de control (hash) la %s (%d)\n"
+
+#: misc/tune2fs.c:2252
+#, c-format
+msgid "Cannot alter existing encoding\n"
+msgstr "Nu se poate modifica codificarea existentă\n"
+
+#: misc/tune2fs.c:2258
+#, c-format
+msgid "Invalid encoding: %s\n"
+msgstr "Codificare nevalidă: %s\n"
+
+#: misc/tune2fs.c:2264
+#, c-format
+msgid "Setting encoding to '%s'\n"
+msgstr "Se stabilește codificarea la „%s”\n"
+
+#: misc/tune2fs.c:2288
+#, c-format
+msgid "Setting encoding_flags to '%s'\n"
+msgstr "Se stabilește fanionul „encoding_flags” la „%s”\n"
+
+#: misc/tune2fs.c:2298
+msgid ""
+"\n"
+"Bad 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"
+"\tclear_mmp\n"
+"\thash_alg=<hash algorithm>\n"
+"\tmount_opts=<extended default mount options>\n"
+"\tmmp_update_interval=<mmp update interval in seconds>\n"
+"\tstride=<RAID per-disk chunk size in blocks>\n"
+"\tstripe_width=<RAID stride*data disks in blocks>\n"
+"\tforce_fsck\n"
+"\ttest_fs\n"
+"\t^test_fs\n"
+"\tencoding=<encoding>\n"
+"\tencoding_flags=<flags>\n"
+msgstr ""
+"\n"
+"Opțiuni greșite specificate.\n"
+"\n"
+"Opțiunile extinse sunt separate prin virgule și pot primi un argument care\n"
+"\teste definit cu ajutorul unui semn de egalitate („=”).\n"
+"\n"
+"Opțiunile extinse valide sunt:\n"
+"\tclear_mmp\n"
+"\thash_alg=<algoritm de sumă de control>.\n"
+"\tmount_opts=<opțiuni de montare implicite extinse>.\n"
+"\tmmp_update_interval=<intervalul de actualizare mmp în secunde>.\n"
+"\tstride=<dimensiunea bucăților per-discRAID în blocuri>.\n"
+"\tstripe_width=<RAID stride*discurile de date în blocuri>\n"
+"\tforce_fsck\n"
+"\ttest_fs\n"
+"\t^test_fs\n"
+"\tencoding=<codificarea>\n"
+"\tencoding_flags=<fanioane>.\n"
+
+#: misc/tune2fs.c:2714
+msgid "Failed to read inode bitmap\n"
+msgstr "Nu s-a reușit să se citească harta de biți a nodului-i\n"
+
+#: misc/tune2fs.c:2719
+msgid "Failed to read block bitmap\n"
+msgstr "Nu s-a reușit să se citească harta de biți a blocului\n"
+
+#: misc/tune2fs.c:2736 resize/resize2fs.c:1372
+msgid "blocks to be moved"
+msgstr "blocuri care trebuie mutate"
+
+#: misc/tune2fs.c:2739
+msgid "Failed to allocate block bitmap when increasing inode size\n"
+msgstr "Nu s-a reușit să se aloce harta de biți a blocurilor atunci când s-a mărit dimensiunea nodului-i\n"
+
+#: misc/tune2fs.c:2745
+msgid "Not enough space to increase inode size \n"
+msgstr "Nu este suficient spațiu pentru a crește dimensiunea nodului-i \n"
+
+#: misc/tune2fs.c:2750
+msgid "Failed to relocate blocks during inode resize \n"
+msgstr "A eșuat realocarea blocurilor în timpul redimensionării nodului -i\n"
+
+#: misc/tune2fs.c:2782
+msgid ""
+"Error in resizing the inode size.\n"
+"Run e2undo to undo the file system changes. \n"
+msgstr ""
+"Eroare la redimensionarea dimensiunii nodului-i.\n"
+"Rulați «e2undo» pentru a anula modificările sistemului de fișiere.\n"
+
+#: misc/tune2fs.c:2995
+msgid ""
+"If you are sure the filesystem is not in use on any node, run:\n"
+"'tune2fs -f -E clear_mmp {device}'\n"
+msgstr ""
+"Dacă sunteți sigur că sistemul de fișiere nu este utilizat pe niciun nod, rulați:\n"
+"«tune2fs -f -E clear_mmp {dispozitiv}»\n"
+
+#: misc/tune2fs.c:3002
+#, c-format
+msgid ""
+"MMP block magic is bad. Try to fix it by running:\n"
+"'e2fsck -f %s'\n"
+msgstr ""
+"Numărul magic al blocului MMP este incorect. Încercați să-l remediați prin rularea comenzii:\n"
+"«e2fsck -f %s»\n"
+
+#: misc/tune2fs.c:3014
+msgid "Cannot modify a journal device.\n"
+msgstr "Nu se poate modifica un dispozitiv de jurnal.\n"
+
+#: misc/tune2fs.c:3027
+#, c-format
+msgid "The inode size is already %lu\n"
+msgstr "Dimensiunea nodului-i este deja %lu\n"
+
+#: misc/tune2fs.c:3034
+msgid "Shrinking inode size is not supported\n"
+msgstr "Micșorarea dimensiunii nodului-i nu este permisă\n"
+
+#: misc/tune2fs.c:3039
+#, c-format
+msgid "Invalid inode size %lu (max %d)\n"
+msgstr "Dimensiunea nodului-i nu este validă %lu (max %d)\n"
+
+#: misc/tune2fs.c:3045
+msgid "Resizing inodes could take some time."
+msgstr "Redimensionarea nodurilor-i ar putea dura ceva timp."
+
+#: misc/tune2fs.c:3094
+#, c-format
+msgid ""
+"Warning: The journal is dirty. You may wish to replay the journal like:\n"
+"\n"
+"\te2fsck -E journal_only %s\n"
+"\n"
+"then rerun this command. Otherwise, any changes made may be overwritten\n"
+"by journal recovery.\n"
+msgstr ""
+"Avertisment: Jurnalul este inconsecvent (conține date nedorite). Ar trebui să deschideți\n"
+"din nou jurnalul folosind:\n"
+"\n"
+"\t«e2fsck -E journal_only %s»\n"
+"\n"
+"apoi executați din nou această comandă. În caz contrar, orice modificări efectuate pot fi\n"
+"suprascrise de recuperarea jurnalului.\n"
+
+#: misc/tune2fs.c:3103
+#, c-format
+msgid "Recovering journal.\n"
+msgstr "Se recuperează jurnalul.\n"
+
+#: misc/tune2fs.c:3125
+#, c-format
+msgid "Setting maximal mount count to %d\n"
+msgstr "Se fixează numărul maxim de montări la %d\n"
+
+#: misc/tune2fs.c:3131
+#, c-format
+msgid "Setting current mount count to %d\n"
+msgstr "Se fixează numărul curent de montări la %d\n"
+
+#: misc/tune2fs.c:3136
+#, c-format
+msgid "Setting error behavior to %d\n"
+msgstr "Se stabilește comportamentul de eroare la %d\n"
+
+#: misc/tune2fs.c:3141
+#, c-format
+msgid "Setting reserved blocks gid to %lu\n"
+msgstr "Se stabilește gid-ul blocurilor rezervate la %lu\n"
+
+#: misc/tune2fs.c:3146
+#, c-format
+msgid "interval between checks is too big (%lu)"
+msgstr "intervalul dintre verificări este prea mare (%lu)"
+
+#: misc/tune2fs.c:3153
+#, c-format
+msgid "Setting interval between checks to %lu seconds\n"
+msgstr "Se fixează intervalul dintre verificări la %lu secunde\n"
+
+#: misc/tune2fs.c:3160
+#, c-format
+msgid "Setting reserved blocks percentage to %g%% (%llu blocks)\n"
+msgstr "Se fixează procentul de blocuri rezervate la %g%% (%llu blocuri)\n"
+
+#: misc/tune2fs.c:3167
+#, c-format
+msgid "reserved blocks count is too big (%llu)"
+msgstr "numărul de blocuri rezervate este prea mare (%llu)"
+
+#: misc/tune2fs.c:3174
+#, c-format
+msgid "Setting reserved blocks count to %llu\n"
+msgstr "Se fixează numărul de blocuri rezervate la %llu\n"
+
+#: misc/tune2fs.c:3179
+msgid ""
+"\n"
+"The filesystem already has sparse superblocks.\n"
+msgstr ""
+"\n"
+"Sistemul de fișiere are deja super-blocuri disperse.\n"
+
+#: misc/tune2fs.c:3182
+msgid ""
+"\n"
+"Setting the sparse superblock flag not supported\n"
+"for filesystems with the meta_bg feature enabled.\n"
+msgstr ""
+"\n"
+"Activarea fanionului de super-bloc dispers nu este acceptată\n"
+"pentru sistemele de fișiere cu caracteristica „meta_bg” activată.\n"
+
+#: misc/tune2fs.c:3192
+#, c-format
+msgid ""
+"\n"
+"Sparse superblock flag set. %s"
+msgstr ""
+"\n"
+"Fanionul de super-bloc dispers este activat. %s"
+
+#: misc/tune2fs.c:3197
+msgid ""
+"\n"
+"Clearing the sparse superblock flag not supported.\n"
+msgstr ""
+"\n"
+"Nu se acceptă eliminarea steagului de super-bloc dispers.\n"
+
+#: misc/tune2fs.c:3205
+#, c-format
+msgid "Setting time filesystem last checked to %s\n"
+msgstr "Se fixează ora ultimei verificări a sistemului de fișiere la %s\n"
+
+#: misc/tune2fs.c:3211
+#, c-format
+msgid "Setting reserved blocks uid to %lu\n"
+msgstr "Se stabilește uid-ul blocurilor rezervate la %lu\n"
+
+#: misc/tune2fs.c:3243
+msgid "Error in using clear_mmp. It must be used with -f\n"
+msgstr "Eroare în utilizarea clear_mmp. Acesta trebuie utilizat cu opțiunea „-f”\n"
+
+#: misc/tune2fs.c:3262
+msgid "The quota feature may only be changed when the filesystem is unmounted.\n"
+msgstr "Caracteristica de cotă poate fi modificată numai atunci când sistemul de fișiere este demontat.\n"
+
+#: misc/tune2fs.c:3279
+msgid "Cannot change the UUID of this filesystem because it has the stable_inodes feature flag.\n"
+msgstr "Nu se poate modifica UUID-ul acestui sistem de fișiere deoarece acesta are fanionul de caracteristică stable_inodes.\n"
+
+#: misc/tune2fs.c:3289
+msgid "Setting the UUID on this filesystem could take some time."
+msgstr "Definirea UUID-ului pe acest sistem de fișiere ar putea dura ceva timp."
+
+#: misc/tune2fs.c:3306
+msgid "The UUID may only be changed when the filesystem is unmounted.\n"
+msgstr "UUID-ul poate fi modificat numai atunci când sistemul de fișiere este demontat.\n"
+
+#: misc/tune2fs.c:3309
+msgid "If you only use kernels newer than v4.4, run 'tune2fs -O metadata_csum_seed' and re-run this command.\n"
+msgstr "Dacă utilizați numai nuclee mai noi decât v4.4, rulați «tune2fs -O metadata_csum_seed» și reluați această comandă.\n"
+
+#: misc/tune2fs.c:3340
+msgid "Invalid UUID format\n"
+msgstr "Format UUID nevalid\n"
+
+#: misc/tune2fs.c:3356
+msgid "Need to update journal superblock.\n"
+msgstr "Este necesar să se actualizeze superblocul de jurnal.\n"
+
+#: misc/tune2fs.c:3378
+msgid "The inode size may only be changed when the filesystem is unmounted.\n"
+msgstr "Dimensiunea nodului-i poate fi modificată numai atunci când sistemul de fișiere este demontat.\n"
+
+#: misc/tune2fs.c:3385
+msgid ""
+"Changing the inode size not supported for filesystems with the flex_bg\n"
+"feature enabled.\n"
+msgstr ""
+"Modificarea dimensiunii nodului-i nu este acceptată pentru sistemele de fișiere \n"
+"cu caracteristica „flex_bg” activată.\n"
+
+#: misc/tune2fs.c:3403
+#, c-format
+msgid "Setting inode size %lu\n"
+msgstr "Se fixează dimensiunea nodului-i la %lu\n"
+
+#: misc/tune2fs.c:3407
+msgid "Failed to change inode size\n"
+msgstr "Nu s-a reușit să se schimbe dimensiunea nodului-i\n"
+
+#: misc/tune2fs.c:3421
+#, c-format
+msgid "Setting stride size to %d\n"
+msgstr "Se fixează dimensiunea de „stride” la %d\n"
+
+#: misc/tune2fs.c:3426
+#, c-format
+msgid "Setting stripe width to %d\n"
+msgstr "Se fixează „stripe-width” la %d\n"
+
+#: misc/tune2fs.c:3433
+#, c-format
+msgid "Setting extended default mount options to '%s'\n"
+msgstr "Se stabilesc opțiunile de montare implicite extinse la „%s”\n"
+
+#: misc/util.c:102
+msgid "<proceeding>\n"
+msgstr "<se continuă>\n"
+
+#: misc/util.c:106
+#, c-format
+msgid "Proceed anyway (or wait %d seconds to proceed) ? (y,N) "
+msgstr "Continuați oricum (sau așteptați %d secunde pentru a continua) ? (d,N) "
+
+#: misc/util.c:110
+msgid "Proceed anyway? (y,N) "
+msgstr "Continuați oricum? (d,N) "
+
+#: misc/util.c:137
+msgid "mke2fs forced anyway. Hope /etc/mtab is incorrect.\n"
+msgstr "«mke2fs» este forțat să lucreze. Se speră că fișierul „/etc/mtab” este incorect.\n"
+
+#: misc/util.c:142
+#, c-format
+msgid "will not make a %s here!\n"
+msgstr "nu se va crea un %s aici!\n"
+
+#: misc/util.c:149
+msgid "mke2fs forced anyway.\n"
+msgstr "«mke2fs» este forțat să lucreze.\n"
+
+#: misc/util.c:165
+msgid "Couldn't allocate memory to parse journal options!\n"
+msgstr "Nu s-a putut aloca memorie pentru a analiza opțiunile jurnalului!\n"
+
+#: misc/util.c:190
+#, c-format
+msgid ""
+"\n"
+"Could not find journal device matching %s\n"
+msgstr ""
+"\n"
+"Nu s-a putut găsi dispozitivul de jurnal care să corespundă cu %s\n"
+
+#: misc/util.c:225
+msgid ""
+"\n"
+"Bad journal options specified.\n"
+"\n"
+"Journal options are separated by commas, and may take an argument which\n"
+"\tis set off by an equals ('=') sign.\n"
+"\n"
+"Valid journal options are:\n"
+"\tsize=<journal size in megabytes>\n"
+"\tdevice=<journal device>\n"
+"\tlocation=<journal location>\n"
+"\n"
+"The journal size must be between 1024 and 10240000 filesystem blocks.\n"
+"\n"
+msgstr ""
+"\n"
+"Opțiunile de jurnal specificate sunt greșite.\n"
+"\n"
+"Opțiunile de jurnal sunt separate prin virgule și pot avea un argument care\n"
+"\teste definit cu ajutorul unui semn de egalitate („=”).\n"
+"\n"
+"Opțiunile de jurnal valabile sunt:\n"
+"\tsize=<dimensiunea jurnalului în megaocteți>.\n"
+"\tdevice=<dispozitiv jurnal>.\n"
+"\tlocation=<locație jurnal>.\n"
+"\n"
+"Dimensiunea jurnalului trebuie să fie cuprinsă între 1024 și 10240000 de blocuri din sistemul de fișiere.\n"
+
+#: misc/util.c:268
+msgid ""
+"\n"
+"Filesystem too small for a journal\n"
+msgstr ""
+"\n"
+"Sistem de fișiere prea mic pentru un jurnal\n"
+
+#: misc/util.c:285
+#, c-format
+msgid ""
+"\n"
+"The total requested journal size is %d blocks; it must be\n"
+"between 1024 and 10240000 blocks. Aborting.\n"
+msgstr ""
+"\n"
+"Dimensiunea totală a jurnalului solicitat este de %d blocuri; aceasta trebuie să fie\n"
+"între 1024 și 10240000 de blocuri. Se abandonează.\n"
+
+#: misc/util.c:293
+msgid ""
+"\n"
+"Total journal size too big for filesystem.\n"
+msgstr ""
+"\n"
+"Dimensiunea totală a jurnalului este prea mare pentru sistemul de fișiere.\n"
+
+#: misc/util.c:306
+#, c-format
+msgid ""
+"This filesystem will be automatically checked every %d mounts or\n"
+"%g days, whichever comes first. Use tune2fs -c or -i to override.\n"
+msgstr ""
+"Acest sistem de fișiere va fi verificat automat la fiecare %d montări sau\n"
+"%g zile, în funcție de care dintre acestea survine prima. Folosiți\n"
+"«tune2fs -c sau -i» pentru a modifica aceste valori.\n"
+
+#: misc/uuidd.c:49
+#, c-format
+msgid "Usage: %s [-d] [-p pidfile] [-s socketpath] [-T timeout]\n"
+msgstr "Utilizare: %s [-d] [-p fișier-pid] [-s rută-soclu] [-T întârziere]\n"
+
+#: misc/uuidd.c:51
+#, c-format
+msgid " %s [-r|t] [-n num] [-s socketpath]\n"
+msgstr " %s [-r|t] [-n num] [-s rută-soclu]\n"
+
+#: misc/uuidd.c:53
+#, c-format
+msgid " %s -k\n"
+msgstr " %s -k\n"
+
+#: misc/uuidd.c:155
+msgid "bad arguments"
+msgstr "argumente incorecte"
+
+#: misc/uuidd.c:173
+msgid "connect"
+msgstr "conectare"
+
+#: misc/uuidd.c:192
+msgid "write"
+msgstr "scrie"
+
+#: misc/uuidd.c:200
+msgid "read count"
+msgstr "numărul de citiri"
+
+#: misc/uuidd.c:206
+msgid "bad response length"
+msgstr "lungime a răspunsului incorectă"
+
+#: misc/uuidd.c:271
+#, c-format
+msgid "uuidd daemon already running at pid %s\n"
+msgstr "demonul uuidd rulează deja la pid %s\n"
+
+#: misc/uuidd.c:279
+#, c-format
+msgid "Couldn't create unix stream socket: %s"
+msgstr "Nu s-a putut crea soclul de flux unix: %s"
+
+#: misc/uuidd.c:308
+#, c-format
+msgid "Couldn't bind unix socket %s: %s\n"
+msgstr "Nu s-a putut asocia soclul de flux unix %s: %s\n"
+
+#: misc/uuidd.c:316
+#, c-format
+msgid "Couldn't listen on unix socket %s: %s\n"
+msgstr "Nu s-a putut asculta în soclul unix %s: %s\n"
+
+#: misc/uuidd.c:354
+#, c-format
+msgid "Error reading from client, len = %d\n"
+msgstr "Eroare la citirea de la client, len = %d\n"
+
+#: misc/uuidd.c:362
+#, c-format
+msgid "operation %d, incoming num = %d\n"
+msgstr "operația %d, numărul de intrare = %d\n"
+
+#: misc/uuidd.c:381
+#, c-format
+msgid "Generated time UUID: %s\n"
+msgstr "UUID generat de timp: %s\n"
+
+#: misc/uuidd.c:391
+#, c-format
+msgid "Generated random UUID: %s\n"
+msgstr "UUID generat aleatoriu: %s\n"
+
+#: misc/uuidd.c:400
+#, c-format
+msgid "Generated time UUID %s and subsequent UUID\n"
+msgid_plural "Generated time UUID %s and %d subsequent UUIDs\n"
+msgstr[0] "S-a generat UUID-ul de timp %s și UUID-ul consecutiv\n"
+msgstr[1] "S-a generat UUID-ul de timp %s și %d UUID-uri consecutive\n"
+msgstr[2] "S-a generat UUID-ul de timp %s și %d UUID-uri consecutive\n"
+msgstr[3] "S-a generat UUID-ul de timp %s și %d de UUID-uri consecutive\n"
+
+#: misc/uuidd.c:421
+#, c-format
+msgid "Generated %d UUID's:\n"
+msgstr "S-au generat %d UUID-uri:\n"
+
+#: misc/uuidd.c:433
+#, c-format
+msgid "Invalid operation %d\n"
+msgstr "Operație nevalidă %d\n"
+
+#: misc/uuidd.c:477 misc/uuidd.c:499
+#, c-format
+msgid "Bad number: %s\n"
+msgstr "Număr greșit: %s\n"
+
+#: misc/uuidd.c:534 misc/uuidd.c:563
+#, c-format
+msgid "Error calling uuidd daemon (%s): %s\n"
+msgstr "Eroare la apelarea demonului uuidd (%s): %s\n"
+
+#: misc/uuidd.c:544
+#, c-format
+msgid "%s and subsequent UUID\n"
+msgid_plural "%s and subsequent %d UUIDs\n"
+msgstr[0] "%s și UUID-ul următor\n"
+msgstr[1] "%s și următoarele %d UUID-uri\n"
+msgstr[2] "%s și următoarele %d UUID-uri\n"
+msgstr[3] "%s și următoarele %d de UUID-uri\n"
+
+#: misc/uuidd.c:548
+msgid "List of UUID's:\n"
+msgstr "Lista de UUID-uri:\n"
+
+#: misc/uuidd.c:569
+#, c-format
+msgid "Unexpected reply length from server %d\n"
+msgstr "Lungime neașteptată a răspunsului de la server %d\n"
+
+#: misc/uuidd.c:586
+#, c-format
+msgid "Couldn't kill uuidd running at pid %d: %s\n"
+msgstr "Nu s-a putut omorî procesul uuidd care rulează la pid %d: %s\n"
+
+#: misc/uuidd.c:592
+#, c-format
+msgid "Killed uuidd running at pid %d\n"
+msgstr "S-a omorât procesul uuidd care rula la pid %d.\n"
+
+#: misc/uuidgen.c:32
+#, c-format
+msgid "Usage: %s [-r] [-t]\n"
+msgstr "Utilizare: %s [-r] [-t]\n"
+
+#: resize/extent.c:200
+msgid "# Extent dump:\n"
+msgstr "# Descărcare (de conținut) a „extent”:\n"
+
+#: resize/extent.c:201
+#, c-format
+msgid "#\tNum=%llu, Size=%llu, Cursor=%llu, Sorted=%llu\n"
+msgstr "#\tNum=%llu, Dimensiune=%llu, Cursor=%llu, Sortate=%llu\n"
+
+#: resize/main.c:49
+#, c-format
+msgid ""
+"Usage: %s [-d debug_flags] [-f] [-F] [-M] [-P] [-p] device [-b|-s|new_size] [-S RAID-stride] [-z undo_file]\n"
+"\n"
+msgstr ""
+"Utilizare: %s [-d fanioane-depanare] [-f] [-F] [-M] [-P] [-p] dispozitiv [-b|-s|noua-dimensiune] [-S RAID-stride] [-z fișier-anulare]\n"
+"\n"
+
+#: resize/main.c:73
+msgid "Extending the inode table"
+msgstr "Se extinde tabelul de noduri-i"
+
+#: resize/main.c:76
+msgid "Relocating blocks"
+msgstr "Se realocă blocurile"
+
+#: resize/main.c:79
+msgid "Scanning inode table"
+msgstr "Se scanează tabelul de noduri-i"
+
+#: resize/main.c:82
+msgid "Updating inode references"
+msgstr "Se actualizează referințele nodurilor-i"
+
+#: resize/main.c:85
+msgid "Moving inode table"
+msgstr "Se mută tabelul de noduri-i"
+
+#: resize/main.c:88
+msgid "Unknown pass?!?"
+msgstr "Pas necunoscut?!?"
+
+#: resize/main.c:91
+#, c-format
+msgid "Begin pass %d (max = %lu)\n"
+msgstr "Începe pasul %d (max = %lu)\n"
+
+#: resize/main.c:163
+msgid ""
+"\n"
+"Resizing bigalloc file systems has not been fully tested. Proceed at\n"
+"your own risk! Use the force option if you want to go ahead anyway.\n"
+"\n"
+msgstr ""
+"\n"
+"Redimensionarea sistemelor de fișiere „bigalloc” nu a fost testată pe deplin. Continuați pe\n"
+"propriul risc! Utilizați opțiunea „force” („-f”) dacă doriți să continuați oricum.\n"
+"\n"
+
+#: resize/main.c:374
+#, c-format
+msgid "while opening %s"
+msgstr "în timp ce se deschidea %s"
+
+#: resize/main.c:382
+#, c-format
+msgid "while getting stat information for %s"
+msgstr "în timp ce se primeau informațiile de stare pentru %s"
+
+#: resize/main.c:463
+#, c-format
+msgid ""
+"Please run 'e2fsck -f %s' first.\n"
+"\n"
+msgstr ""
+"Rulați mai întâi «e2fsck -f %s».\n"
+"\n"
+
+#: resize/main.c:482
+#, c-format
+msgid "Estimated minimum size of the filesystem: %llu\n"
+msgstr "Dimensiunea minimă estimată a sistemului de fișiere: %llu\n"
+
+#: resize/main.c:522
+#, c-format
+msgid "Invalid new size: %s\n"
+msgstr "Dimensiune nouă nevalidă: %s\n"
+
+#: resize/main.c:541
+msgid "New size too large to be expressed in 32 bits\n"
+msgstr "Noua dimensiune este prea mare pentru a fi exprimată în 32 de biți\n"
+
+#: resize/main.c:560
+msgid "New size results in too many block group descriptors.\n"
+msgstr "Noua dimensiune are ca rezultat un număr prea mare de descriptori de grupuri de blocuri.\n"
+
+#: resize/main.c:567
+#, c-format
+msgid "New size smaller than minimum (%llu)\n"
+msgstr "Noua dimensiune este mai mică decât cea minimă (%llu)\n"
+
+#: resize/main.c:574
+msgid "Invalid stride length"
+msgstr "Lungime „stride” nevalidă"
+
+#: resize/main.c:598
+#, c-format
+msgid ""
+"The containing partition (or device) is only %llu (%dk) blocks.\n"
+"You requested a new size of %llu blocks.\n"
+"\n"
+msgstr ""
+"Partiția (sau dispozitivul) conține doar %llu (%dk) de blocuri.\n"
+"Ați solicitat o nouă dimensiune de %llu de blocuri.\n"
+"\n"
+
+#: resize/main.c:605
+#, c-format
+msgid "Cannot set and unset 64bit feature.\n"
+msgstr "Nu se poate activa și dezactiva caracteristica 64bit.\n"
+
+#: resize/main.c:609
+#, c-format
+msgid "Cannot change the 64bit feature on a filesystem that is larger than 2^32 blocks.\n"
+msgstr "Nu se poate modifica caracteristica de 64 de biți pe un sistem de fișiere care are o dimensiune mai mare de 2^32 de blocuri.\n"
+
+#: resize/main.c:615
+#, c-format
+msgid "Cannot change the 64bit feature while the filesystem is mounted.\n"
+msgstr "Nu se poate modifica caracteristica de 64 de biți în timp ce sistemul de fișiere este montat.\n"
+
+#: resize/main.c:621
+#, c-format
+msgid "Please enable the extents feature with tune2fs before enabling the 64bit feature.\n"
+msgstr "Vă rugăm să activați caracteristica „extents” cu «tune2fs» înainte de a activa caracteristica de „64 de biți”.\n"
+
+#: resize/main.c:629
+#, c-format
+msgid ""
+"The filesystem is already %llu (%dk) blocks long. Nothing to do!\n"
+"\n"
+msgstr ""
+"Sistemul de fișiere are deja o lungime de %llu (%dk) blocuri. Nu este nimic de făcut!\n"
+"\n"
+
+#: resize/main.c:639
+#, c-format
+msgid "The filesystem is already 64-bit.\n"
+msgstr "Sistemul de fișiere este deja pe 64 de biți.\n"
+
+#: resize/main.c:644
+#, c-format
+msgid "The filesystem is already 32-bit.\n"
+msgstr "Sistemul de fișiere este deja pe 32 de biți.\n"
+
+#: resize/main.c:649
+#, c-format
+msgid "Cannot shrink this filesystem because it has the stable_inodes feature flag.\n"
+msgstr "Nu se poate micșora acest sistem de fișiere deoarece acesta are fanionul de caracteristică „stable_inodes” activat.\n"
+
+#: resize/main.c:658
+#, c-format
+msgid "Converting the filesystem to 64-bit.\n"
+msgstr "Se convertește sistemul de fișiere la „pe 64 de biți”.\n"
+
+#: resize/main.c:660
+#, c-format
+msgid "Converting the filesystem to 32-bit.\n"
+msgstr "Se convertește sistemul de fișiere la „pe 32 de biți”.\n"
+
+#: resize/main.c:662
+#, c-format
+msgid "Resizing the filesystem on %s to %llu (%dk) blocks.\n"
+msgstr "Se redimensionează sistemul de fișiere de pe %s la %llu (%dk) blocuri.\n"
+
+#: resize/main.c:672
+#, c-format
+msgid "while trying to resize %s"
+msgstr "în timp ce se încerca redimensionarea %s"
+
+#: resize/main.c:675
+#, c-format
+msgid ""
+"Please run 'e2fsck -fy %s' to fix the filesystem\n"
+"after the aborted resize operation.\n"
+msgstr ""
+"Vă rugăm să rulați «e2fsck -fy %s» pentru a repara sistemul de fișiere\n"
+"după operația de redimensionare nereușită.\n"
+
+#: resize/main.c:680
+#, c-format
+msgid ""
+"The filesystem on %s is now %llu (%dk) blocks long.\n"
+"\n"
+msgstr ""
+"Sistemul de fișiere de pe %s are acum o lungime de %llu (%dk) blocuri.\n"
+"\n"
+
+#: resize/main.c:695
+#, c-format
+msgid "while trying to truncate %s"
+msgstr "în timp ce se încerca să se trunchieze %s"
+
+#: resize/online.c:81
+msgid "kernel does not support online resize with sparse_super2"
+msgstr "nucleul nu acceptă redimensionarea în linie cu sparse_super2"
+
+#: resize/online.c:86
+#, c-format
+msgid "Filesystem at %s is mounted on %s; on-line resizing required\n"
+msgstr "Sistemul de fișiere de la %s este montat pe %s; este necesară redimensionarea în linie\n"
+
+#: resize/online.c:90
+msgid "On-line shrinking not supported"
+msgstr "Nu se acceptă micșorarea în linie"
+
+#: resize/online.c:114
+msgid "Filesystem does not support online resizing"
+msgstr "Sistemul de fișiere nu acceptă redimensionarea în linie"
+
+#: resize/online.c:122
+msgid "Not enough reserved gdt blocks for resizing"
+msgstr "Nu sunt suficiente blocuri gdt rezervate pentru redimensionare"
+
+#: resize/online.c:129
+msgid "Kernel does not support resizing a file system this large"
+msgstr "Nucleul nu acceptă redimensionarea unui sistem de fișiere atât de mare"
+
+#: resize/online.c:137
+#, c-format
+msgid "while trying to open mountpoint %s"
+msgstr "în timp ce se încerca să se deschidă punctul de montare %s"
+
+#: resize/online.c:142
+#, c-format
+msgid "Old resize interface requested.\n"
+msgstr "S-a solicitat vechea interfață de redimensionare.\n"
+
+#: resize/online.c:161 resize/online.c:178
+msgid "Permission denied to resize filesystem"
+msgstr "Permisiune refuzată pentru redimensionarea sistemului de fișiere"
+
+#: resize/online.c:164 resize/online.c:184
+msgid "While checking for on-line resizing support"
+msgstr "În timp ce se verifica dacă există suport pentru redimensionarea în linie"
+
+#: resize/online.c:181
+msgid "Kernel does not support online resizing"
+msgstr "Nucleul nu acceptă redimensionarea în linie"
+
+#: resize/online.c:220
+#, c-format
+msgid "Performing an on-line resize of %s to %llu (%dk) blocks.\n"
+msgstr "Se efectuează o redimensionare în linie a blocurilor %s la %llu (%dk).\n"
+
+#: resize/online.c:231
+msgid "While trying to extend the last group"
+msgstr "În timp ce se încerca extinderea ultimului grup"
+
+#: resize/online.c:278
+#, c-format
+msgid "While trying to add group #%d"
+msgstr "În timp ce se încerca adăugarea grupului nr.%d"
+
+#: resize/online.c:289
+#, c-format
+msgid "Filesystem at %s is mounted on %s, and on-line resizing is not supported on this system.\n"
+msgstr "Sistemul de fișiere din %s este montat pe %s, iar redimensionarea în linie nu este acceptată pe acest sistem.\n"
+
+#: resize/resize2fs.c:769
+#, c-format
+msgid "inodes (%llu) must be less than %u\n"
+msgstr "numărul de noduri-i (%llu) trebuie să fie mai mic de %u\n"
+
+#: resize/resize2fs.c:1127
+msgid "reserved blocks"
+msgstr "blocuri rezervate"
+
+#: resize/resize2fs.c:1377
+msgid "meta-data blocks"
+msgstr "blocuri de metadate"
+
+#: resize/resize2fs.c:1481 resize/resize2fs.c:2525
+msgid "new meta blocks"
+msgstr "noi blocuri de metadate"
+
+#: resize/resize2fs.c:2749
+msgid "Should never happen! No sb in last super_sparse bg?\n"
+msgstr "Nu ar fi trebuit să se întâmple niciodată! Nu este nici un super-bloc în ultimul grup de blocuri „super_sparse”?\n"
+
+#: resize/resize2fs.c:2754
+msgid "Should never happen! Unexpected old_desc in super_sparse bg?\n"
+msgstr "Nu ar fi trebuit să se întâmple niciodată! „old_desc” neașteptat în grupul de blocuri „super_sparse”?\n"
+
+#: resize/resize2fs.c:2827
+msgid "Should never happen: resize inode corrupt!\n"
+msgstr "Nu ar fi trebuit să se întâmple niciodată: nodul-i de redimensionare corupt!\n"
+
+#: lib/ext2fs/ext2_err.c:11
+msgid "EXT2FS Library version 1.46.5"
+msgstr "Biblioteca EXT2FS versiunea 1.46.5"
+
+#: lib/ext2fs/ext2_err.c:12
+msgid "Wrong magic number for ext2_filsys structure"
+msgstr "Număr magic greșit pentru structura ext2_filsys"
+
+#: lib/ext2fs/ext2_err.c:13
+msgid "Wrong magic number for badblocks_list structure"
+msgstr "Număr magic greșit pentru structura badblocks_list"
+
+#: lib/ext2fs/ext2_err.c:14
+msgid "Wrong magic number for badblocks_iterate structure"
+msgstr "Număr magic greșit pentru structura badblocks_iterate"
+
+#: lib/ext2fs/ext2_err.c:15
+msgid "Wrong magic number for inode_scan structure"
+msgstr "Număr magic greșit pentru structura inode_scan"
+
+#: lib/ext2fs/ext2_err.c:16
+msgid "Wrong magic number for io_channel structure"
+msgstr "Număr magic greșit pentru structura io_channel"
+
+#: lib/ext2fs/ext2_err.c:17
+msgid "Wrong magic number for unix io_channel structure"
+msgstr "Număr magic greșit pentru structura unix io_channel"
+
+#: lib/ext2fs/ext2_err.c:18
+msgid "Wrong magic number for io_manager structure"
+msgstr "Număr magic greșit pentru structura io_manager"
+
+#: lib/ext2fs/ext2_err.c:19
+msgid "Wrong magic number for block_bitmap structure"
+msgstr "Număr magic greșit pentru structura block_bitmap"
+
+#: lib/ext2fs/ext2_err.c:20
+msgid "Wrong magic number for inode_bitmap structure"
+msgstr "Număr magic greșit pentru structura inode_bitmap"
+
+#: lib/ext2fs/ext2_err.c:21
+msgid "Wrong magic number for generic_bitmap structure"
+msgstr "Număr magic greșit pentru structura generic_bitmap"
+
+#: lib/ext2fs/ext2_err.c:22
+msgid "Wrong magic number for test io_channel structure"
+msgstr "Număr magic greșit pentru structura io_channel de testare"
+
+#: lib/ext2fs/ext2_err.c:23
+msgid "Wrong magic number for directory block list structure"
+msgstr "Număr magic greșit pentru structura listei de blocuri de directoare"
+
+#: lib/ext2fs/ext2_err.c:24
+msgid "Wrong magic number for icount structure"
+msgstr "Număr magic greșit pentru structura icount"
+
+#: lib/ext2fs/ext2_err.c:25
+msgid "Wrong magic number for Powerquest io_channel structure"
+msgstr "Număr magic greșit pentru structura Powerquest io_channel"
+
+#: lib/ext2fs/ext2_err.c:26
+msgid "Wrong magic number for ext2 file structure"
+msgstr "Număr magic greșit pentru structura de fișiere ext2"
+
+#: lib/ext2fs/ext2_err.c:27
+msgid "Wrong magic number for Ext2 Image Header"
+msgstr "Număr magic greșit pentru antetul de imagine Ext2"
+
+#: lib/ext2fs/ext2_err.c:28
+msgid "Wrong magic number for inode io_channel structure"
+msgstr "Număr magic greșit pentru structura io_channel a nodului-i"
+
+#: lib/ext2fs/ext2_err.c:29
+msgid "Wrong magic number for ext4 extent handle"
+msgstr "Număr magic greșit pentru gestionarul de „extent” ext4"
+
+#: lib/ext2fs/ext2_err.c:30
+msgid "Bad magic number in super-block"
+msgstr "Număr magic greșit în super-bloc"
+
+#: lib/ext2fs/ext2_err.c:31
+msgid "Filesystem revision too high"
+msgstr "Versiunea sistemului de fișiere este prea mare"
+
+#: lib/ext2fs/ext2_err.c:32
+msgid "Attempt to write to filesystem opened read-only"
+msgstr "Încercare de scriere pe un sistem de fișiere deschis doar-pentru-citire"
+
+#: lib/ext2fs/ext2_err.c:33
+msgid "Can't read group descriptors"
+msgstr "Nu se pot citi descriptorii de grup"
+
+#: lib/ext2fs/ext2_err.c:34
+msgid "Can't write group descriptors"
+msgstr "Nu se pot scrie descriptorii de grup"
+
+#: lib/ext2fs/ext2_err.c:35
+msgid "Corrupt group descriptor: bad block for block bitmap"
+msgstr "Descriptor de grup corupt: bloc defectuos pentru harta de biți de blocuri"
+
+#: lib/ext2fs/ext2_err.c:36
+msgid "Corrupt group descriptor: bad block for inode bitmap"
+msgstr "Descriptor de grup corupt: bloc defectuos pentru harta de biți de noduri-i"
+
+#: lib/ext2fs/ext2_err.c:37
+msgid "Corrupt group descriptor: bad block for inode table"
+msgstr "Descriptor de grup corupt: bloc defectuos pentru tabelul de noduri-i"
+
+#: lib/ext2fs/ext2_err.c:38
+msgid "Can't write an inode bitmap"
+msgstr "Nu se poate scrie o hartă de biți de noduri-i"
+
+#: lib/ext2fs/ext2_err.c:39
+msgid "Can't read an inode bitmap"
+msgstr "Nu se poate citi o hartă de biți de noduri-i"
+
+#: lib/ext2fs/ext2_err.c:40
+msgid "Can't write a block bitmap"
+msgstr "Nu se poate scrie o hartă de biți de blocuri"
+
+#: lib/ext2fs/ext2_err.c:41
+msgid "Can't read a block bitmap"
+msgstr "Nu se poate citi o hartă de biți de blocuri"
+
+#: lib/ext2fs/ext2_err.c:42
+msgid "Can't write an inode table"
+msgstr "Nu se poate scrie un tabel de noduri-i"
+
+#: lib/ext2fs/ext2_err.c:43
+msgid "Can't read an inode table"
+msgstr "Nu se poate citi un tabel de noduri-i"
+
+#: lib/ext2fs/ext2_err.c:44
+msgid "Can't read next inode"
+msgstr "Nu se poate citi următorul nod-i"
+
+#: lib/ext2fs/ext2_err.c:45
+msgid "Filesystem has unexpected block size"
+msgstr "Sistemul de fișiere are o dimensiune neașteptată a blocului"
+
+#: lib/ext2fs/ext2_err.c:46
+msgid "EXT2 directory corrupted"
+msgstr "Director EXT2 corupt"
+
+#: lib/ext2fs/ext2_err.c:47
+msgid "Attempt to read block from filesystem resulted in short read"
+msgstr "Încercarea de a citi un bloc din sistemul de fișiere a avut ca rezultat o citire scurtă"
+
+#: lib/ext2fs/ext2_err.c:48
+msgid "Attempt to write block to filesystem resulted in short write"
+msgstr "Încercarea de a scrie un bloc în sistemul de fișiere a avut ca rezultat o scriere scurtă"
+
+#: lib/ext2fs/ext2_err.c:49
+msgid "No free space in the directory"
+msgstr "Nu există spațiu liber în director"
+
+#: lib/ext2fs/ext2_err.c:50
+msgid "Inode bitmap not loaded"
+msgstr "Harta de biți de noduri-i nu a fost încărcată"
+
+#: lib/ext2fs/ext2_err.c:51
+msgid "Block bitmap not loaded"
+msgstr "Harta de biți de blocuri nu a fost încărcată"
+
+#: lib/ext2fs/ext2_err.c:52
+msgid "Illegal inode number"
+msgstr "Număr de nod-i ilegal"
+
+#: lib/ext2fs/ext2_err.c:53
+msgid "Illegal block number"
+msgstr "Număr de bloc ilegal"
+
+#: lib/ext2fs/ext2_err.c:54
+msgid "Internal error in ext2fs_expand_dir"
+msgstr "Eroare internă în ext2fs_expand_dir"
+
+#: lib/ext2fs/ext2_err.c:55
+msgid "Not enough space to build proposed filesystem"
+msgstr "Nu este suficient spațiu pentru a construi sistemul de fișiere propus"
+
+#: lib/ext2fs/ext2_err.c:56
+msgid "Illegal block number passed to ext2fs_mark_block_bitmap"
+msgstr "Număr de bloc ilegal transmis către ext2fs_mark_block_bitmap"
+
+#: lib/ext2fs/ext2_err.c:57
+msgid "Illegal block number passed to ext2fs_unmark_block_bitmap"
+msgstr "Număr de bloc ilegal transmis către ext2fs_unmark_block_bitmap"
+
+#: lib/ext2fs/ext2_err.c:58
+msgid "Illegal block number passed to ext2fs_test_block_bitmap"
+msgstr "Număr de bloc ilegal transmis către ext2fs_test_block_bitmap"
+
+#: lib/ext2fs/ext2_err.c:59
+msgid "Illegal inode number passed to ext2fs_mark_inode_bitmap"
+msgstr "Număr de bloc ilegal transmis către ext2fs_mark_inode_bitmap"
+
+#: lib/ext2fs/ext2_err.c:60
+msgid "Illegal inode number passed to ext2fs_unmark_inode_bitmap"
+msgstr "Număr de bloc ilegal transmis către ext2fs_unmark_inode_bitmap"
+
+#: lib/ext2fs/ext2_err.c:61
+msgid "Illegal inode number passed to ext2fs_test_inode_bitmap"
+msgstr "Număr de bloc ilegal transmis către ext2fs_test_inode_bitmap"
+
+#: lib/ext2fs/ext2_err.c:62
+msgid "Attempt to fudge end of block bitmap past the real end"
+msgstr "Încercare de a falsifica finalul hărții de biți a blocurilor dincolo de finalul real"
+
+#: lib/ext2fs/ext2_err.c:63
+msgid "Attempt to fudge end of inode bitmap past the real end"
+msgstr "Încercare de a falsifica finalul hărții de biți a nodurilor-i dincolo de finalul real"
+
+#: lib/ext2fs/ext2_err.c:64
+msgid "Illegal indirect block found"
+msgstr "S-a găsit un bloc indirect ilegal"
+
+#: lib/ext2fs/ext2_err.c:65
+msgid "Illegal doubly indirect block found"
+msgstr "S-a găsit un bloc indirect dublu ilegal"
+
+#: lib/ext2fs/ext2_err.c:66
+msgid "Illegal triply indirect block found"
+msgstr "S-a găsit un bloc indirect triplu ilegal"
+
+#: lib/ext2fs/ext2_err.c:67
+msgid "Block bitmaps are not the same"
+msgstr "Hărțile de biți ale blocurilor nu sunt identice"
+
+#: lib/ext2fs/ext2_err.c:68
+msgid "Inode bitmaps are not the same"
+msgstr "Hărțile de biți ale nodurilor-i nu sunt identice"
+
+#: lib/ext2fs/ext2_err.c:69
+msgid "Illegal or malformed device name"
+msgstr "Nume de dispozitiv ilegal sau cu un format greșit"
+
+#: lib/ext2fs/ext2_err.c:70
+msgid "A block group is missing an inode table"
+msgstr "Un grup de blocuri nu are un tabel de noduri-i"
+
+#: lib/ext2fs/ext2_err.c:71
+msgid "The ext2 superblock is corrupt"
+msgstr "Super-blocul ext2 este corupt"
+
+#: lib/ext2fs/ext2_err.c:72
+msgid "Illegal generic bit number passed to ext2fs_mark_generic_bitmap"
+msgstr "Număr de biți generic ilegal transmis către ext2fs_mark_generic_bitmap"
+
+#: lib/ext2fs/ext2_err.c:73
+msgid "Illegal generic bit number passed to ext2fs_unmark_generic_bitmap"
+msgstr "Număr de biți generic ilegal transmis către ext2fs_unmark_generic_bitmap"
+
+#: lib/ext2fs/ext2_err.c:74
+msgid "Illegal generic bit number passed to ext2fs_test_generic_bitmap"
+msgstr "Număr de biți generic ilegal transmis către ext2fs_test_generic_bitmap"
+
+#: lib/ext2fs/ext2_err.c:75
+msgid "Too many symbolic links encountered."
+msgstr "S-au întâlnit prea multe legături simbolice."
+
+#: lib/ext2fs/ext2_err.c:76
+msgid "The callback function will not handle this case"
+msgstr "Funcția de reapelare nu va gestiona acest caz"
+
+#: lib/ext2fs/ext2_err.c:77
+msgid "The inode is from a bad block in the inode table"
+msgstr "Nodul-i provine de la un bloc defectuos din tabelul de noduri-i"
+
+#: lib/ext2fs/ext2_err.c:78
+msgid "Filesystem has unsupported feature(s)"
+msgstr "Sistemul de fișiere are caracteristici neacceptate"
+
+#: lib/ext2fs/ext2_err.c:79
+msgid "Filesystem has unsupported read-only feature(s)"
+msgstr "Sistemul de fișiere are caracteristici de numai-citire neacceptate"
+
+#: lib/ext2fs/ext2_err.c:80
+msgid "IO Channel failed to seek on read or write"
+msgstr "Canalul de intrare/ieșire nu a reușit să caute la citire sau la scriere"
+
+#: lib/ext2fs/ext2_err.c:81
+msgid "Memory allocation failed"
+msgstr "Alocarea memoriei a eșuat"
+
+#: lib/ext2fs/ext2_err.c:82
+msgid "Invalid argument passed to ext2 library"
+msgstr "Argument nevalabil transmis către biblioteca ext2"
+
+#: lib/ext2fs/ext2_err.c:83
+msgid "Could not allocate block in ext2 filesystem"
+msgstr "Nu s-a putut aloca blocul în sistemul de fișiere ext2"
+
+#: lib/ext2fs/ext2_err.c:84
+msgid "Could not allocate inode in ext2 filesystem"
+msgstr "Nu s-a putut aloca nodul-i în sistemul de fișiere ext2"
+
+#: lib/ext2fs/ext2_err.c:85
+msgid "Ext2 inode is not a directory"
+msgstr "Nodul-i Ext2 nu este un director"
+
+#: lib/ext2fs/ext2_err.c:86
+msgid "Too many references in table"
+msgstr "Prea multe referințe în tabel"
+
+#: lib/ext2fs/ext2_err.c:87
+msgid "File not found by ext2_lookup"
+msgstr "Fișierul nu a fost găsit de ext2_lookup()"
+
+#: lib/ext2fs/ext2_err.c:88
+msgid "File open read-only"
+msgstr "Fișier deschis numai-pentru-citire"
+
+#: lib/ext2fs/ext2_err.c:89
+msgid "Ext2 directory block not found"
+msgstr "Blocul directorului Ext2 nu a fost găsit"
+
+#: lib/ext2fs/ext2_err.c:90
+msgid "Ext2 directory already exists"
+msgstr "Directorul Ext2 există deja"
+
+#: lib/ext2fs/ext2_err.c:91
+msgid "Unimplemented ext2 library function"
+msgstr "Funcție neimplementată a bibliotecii ext2"
+
+#: lib/ext2fs/ext2_err.c:92
+msgid "User cancel requested"
+msgstr "Anulare solicitată de utilizator"
+
+#: lib/ext2fs/ext2_err.c:93
+msgid "Ext2 file too big"
+msgstr "Fișier Ext2 prea mare"
+
+#: lib/ext2fs/ext2_err.c:94
+msgid "Supplied journal device not a block device"
+msgstr "Dispozitivul de jurnal furnizat nu este un dispozitiv de bloc"
+
+#: lib/ext2fs/ext2_err.c:95
+msgid "Journal superblock not found"
+msgstr "Super-blocul de jurnal nu a fost găsit"
+
+#: lib/ext2fs/ext2_err.c:96
+msgid "Journal must be at least 1024 blocks"
+msgstr "Jurnalul trebuie să fie de cel puțin 1024 de blocuri"
+
+#: lib/ext2fs/ext2_err.c:97
+msgid "Unsupported journal version"
+msgstr "Versiune de jurnal neacceptată"
+
+#: lib/ext2fs/ext2_err.c:98
+msgid "Error loading external journal"
+msgstr "Eroare la încărcarea jurnalului extern"
+
+#: lib/ext2fs/ext2_err.c:99
+msgid "Journal not found"
+msgstr "Jurnalul nu a fost găsit"
+
+#: lib/ext2fs/ext2_err.c:100
+msgid "Directory hash unsupported"
+msgstr "Suma de control a directorului nu este acceptată"
+
+#: lib/ext2fs/ext2_err.c:101
+msgid "Illegal extended attribute block number"
+msgstr "Număr de bloc de atribut extins ilegal"
+
+#: lib/ext2fs/ext2_err.c:102
+msgid "Cannot create filesystem with requested number of inodes"
+msgstr "Nu se poate crea un sistem de fișiere cu numărul cerut de noduri-i"
+
+#: lib/ext2fs/ext2_err.c:103
+msgid "E2image snapshot not in use"
+msgstr "Instantanea E2image nu este în uz"
+
+#: lib/ext2fs/ext2_err.c:104
+msgid "Too many reserved group descriptor blocks"
+msgstr "Prea multe blocuri descriptoare de grup rezervate"
+
+#: lib/ext2fs/ext2_err.c:105
+msgid "Resize inode is corrupt"
+msgstr "Nodul-i de redimensionare este corupt"
+
+#: lib/ext2fs/ext2_err.c:106
+msgid "Tried to set block bmap with missing indirect block"
+msgstr "S-a încercat să se definească harta de biți a blocurilor cu blocul indirect lipsă"
+
+#: lib/ext2fs/ext2_err.c:107
+msgid "TDB: Success"
+msgstr "TDB: Succes"
+
+#: lib/ext2fs/ext2_err.c:108
+msgid "TDB: Corrupt database"
+msgstr "TDB: Bază de date coruptă"
+
+#: lib/ext2fs/ext2_err.c:109
+msgid "TDB: IO Error"
+msgstr "TDB: Eroare de In/Ieș"
+
+#: lib/ext2fs/ext2_err.c:110
+msgid "TDB: Locking error"
+msgstr "TDB: Eroare de blocare"
+
+#: lib/ext2fs/ext2_err.c:111
+msgid "TDB: Out of memory"
+msgstr "TDB: Memorie epuizată"
+
+#: lib/ext2fs/ext2_err.c:112
+msgid "TDB: Record exists"
+msgstr "TDB: Înregistrarea există"
+
+#: lib/ext2fs/ext2_err.c:113
+msgid "TDB: Lock exists on other keys"
+msgstr "TDB: Blocarea există pe alte chei"
+
+#: lib/ext2fs/ext2_err.c:114
+msgid "TDB: Invalid parameter"
+msgstr "TDB: Parametru nevalid"
+
+#: lib/ext2fs/ext2_err.c:115
+msgid "TDB: Record does not exist"
+msgstr "TDB: Înregistrarea nu există"
+
+#: lib/ext2fs/ext2_err.c:116
+msgid "TDB: Write not permitted"
+msgstr "TDB: Scrierea nu este permisă"
+
+#: lib/ext2fs/ext2_err.c:117
+msgid "Ext2fs directory block list is empty"
+msgstr "Lista de blocuri de directoare Ext2fs este goală"
+
+#: lib/ext2fs/ext2_err.c:118
+msgid "Attempt to modify a block mapping via a read-only block iterator"
+msgstr "Încercarea de a modifica o cartografiere de blocuri prin intermediul unui iterator de blocuri numai-pentru-citire"
+
+#: lib/ext2fs/ext2_err.c:119
+msgid "Wrong magic number for ext4 extent saved path"
+msgstr "Număr magic greșit pentru ruta salvată a extent-ului ext4"
+
+#: lib/ext2fs/ext2_err.c:120
+msgid "Wrong magic number for 64-bit generic bitmap"
+msgstr "Număr magic greșit pentru harta de biți generică pe 64 de biți"
+
+#: lib/ext2fs/ext2_err.c:121
+msgid "Wrong magic number for 64-bit block bitmap"
+msgstr "Număr magic greșit pentru harta de biți a blocurilor pe 64 de biți"
+
+#: lib/ext2fs/ext2_err.c:122
+msgid "Wrong magic number for 64-bit inode bitmap"
+msgstr "Număr magic greșit pentru harta de biți a nodurilor-i pe 64 de biți"
+
+#: lib/ext2fs/ext2_err.c:123
+msgid "Wrong magic number --- RESERVED_13"
+msgstr "Număr magic greșit --- RESERVED_13"
+
+#: lib/ext2fs/ext2_err.c:124
+msgid "Wrong magic number --- RESERVED_14"
+msgstr "Număr magic greșit --- RESERVED_14"
+
+#: lib/ext2fs/ext2_err.c:125
+msgid "Wrong magic number --- RESERVED_15"
+msgstr "Număr magic greșit --- RESERVED_15"
+
+#: lib/ext2fs/ext2_err.c:126
+msgid "Wrong magic number --- RESERVED_16"
+msgstr "Număr magic greșit --- RESERVED_16"
+
+#: lib/ext2fs/ext2_err.c:127
+msgid "Wrong magic number --- RESERVED_17"
+msgstr "Număr magic greșit --- RESERVED_17"
+
+#: lib/ext2fs/ext2_err.c:128
+msgid "Wrong magic number --- RESERVED_18"
+msgstr "Număr magic greșit --- RESERVED_18"
+
+#: lib/ext2fs/ext2_err.c:129
+msgid "Wrong magic number --- RESERVED_19"
+msgstr "Număr magic greșit --- RESERVED_19"
+
+#: lib/ext2fs/ext2_err.c:130
+msgid "Corrupt extent header"
+msgstr "Antet „extent” corupt"
+
+#: lib/ext2fs/ext2_err.c:131
+msgid "Corrupt extent index"
+msgstr "Index „extent” corupt"
+
+#: lib/ext2fs/ext2_err.c:132
+msgid "Corrupt extent"
+msgstr "„Extent” corupt"
+
+#: lib/ext2fs/ext2_err.c:133
+msgid "No free space in extent map"
+msgstr "Nu există spațiu liber în harta de „extents”"
+
+#: lib/ext2fs/ext2_err.c:134
+msgid "Inode does not use extents"
+msgstr "Nodul-i nu utilizează „extents”"
+
+#: lib/ext2fs/ext2_err.c:135
+msgid "No 'next' extent"
+msgstr "Nicio extindere „extent” următoare (next)"
+
+#: lib/ext2fs/ext2_err.c:136
+msgid "No 'previous' extent"
+msgstr "Nicio extindere „extent” anterioară (previous)"
+
+#: lib/ext2fs/ext2_err.c:137
+msgid "No 'up' extent"
+msgstr "Nicio extindere „extent” superioară (up)"
+
+#: lib/ext2fs/ext2_err.c:138
+msgid "No 'down' extent"
+msgstr "Nicio extindere „extent” inferioară (down)"
+
+#: lib/ext2fs/ext2_err.c:139
+msgid "No current node"
+msgstr "Niciun nod curent"
+
+#: lib/ext2fs/ext2_err.c:140
+msgid "Ext2fs operation not supported"
+msgstr "Operația Ext2fs nu este compatibilă"
+
+#: lib/ext2fs/ext2_err.c:141
+msgid "No room to insert extent in node"
+msgstr "Nu există spațiu pentru inserarea extent-ului în nod"
+
+#: lib/ext2fs/ext2_err.c:142
+msgid "Splitting would result in empty node"
+msgstr "Divizarea ar avea ca rezultat un nod gol"
+
+#: lib/ext2fs/ext2_err.c:143
+msgid "Extent not found"
+msgstr "Extinderea „extent” nu a fost găsită"
+
+#: lib/ext2fs/ext2_err.c:144
+msgid "Operation not supported for inodes containing extents"
+msgstr "Operația nu este permisă pentru nodurile-i care conțin „extents”"
+
+#: lib/ext2fs/ext2_err.c:145
+msgid "Extent length is invalid"
+msgstr "Lungimea „extent”-ului nu este validă"
+
+#: lib/ext2fs/ext2_err.c:146
+msgid "I/O Channel does not support 64-bit block numbers"
+msgstr "Canalul de In/Ieș nu acceptă numere de bloc pe 64 de biți"
+
+#: lib/ext2fs/ext2_err.c:147
+msgid "Can't check if filesystem is mounted due to missing mtab file"
+msgstr "Nu se poate verifica dacă sistemul de fișiere este montat, din cauza lipsei fișierului „mtab”"
+
+#: lib/ext2fs/ext2_err.c:148
+msgid "Filesystem too large to use legacy bitmaps"
+msgstr "Sistem de fișiere prea mare pentru a utiliza hărți de biți învechite"
+
+#: lib/ext2fs/ext2_err.c:149
+msgid "MMP: invalid magic number"
+msgstr "MMP: număr magic nevalid"
+
+#: lib/ext2fs/ext2_err.c:150
+msgid "MMP: device currently active"
+msgstr "MMP: dispozitivul este activ în prezent"
+
+#: lib/ext2fs/ext2_err.c:151
+msgid "MMP: e2fsck being run"
+msgstr "MMP: e2fsck este în curs de execuție"
+
+#: lib/ext2fs/ext2_err.c:152
+msgid "MMP: block number beyond filesystem range"
+msgstr "MMP: numărul de bloc dincolo de intervalul sistemului de fișiere"
+
+#: lib/ext2fs/ext2_err.c:153
+msgid "MMP: undergoing an unknown operation"
+msgstr "MMP: supus unei operații necunoscute"
+
+#: lib/ext2fs/ext2_err.c:154
+msgid "MMP: filesystem still in use"
+msgstr "MMP: sistemul de fișiere este încă în uz"
+
+#: lib/ext2fs/ext2_err.c:155
+msgid "MMP: open with O_DIRECT failed"
+msgstr "MMP: deschiderea cu O_DIRECT a eșuat"
+
+#: lib/ext2fs/ext2_err.c:156
+msgid "Block group descriptor size incorrect"
+msgstr "Dimensiunea descriptorului grupului de blocuri este incorectă"
+
+#: lib/ext2fs/ext2_err.c:157
+msgid "Inode checksum does not match inode"
+msgstr "Suma de control a nodului-i nu se potrivește nodului-i"
+
+#: lib/ext2fs/ext2_err.c:158
+msgid "Inode bitmap checksum does not match bitmap"
+msgstr "Suma de control a hărții de biți a nodului-i nu se potrivește cu harta de biți"
+
+#: lib/ext2fs/ext2_err.c:159
+msgid "Extent block checksum does not match extent block"
+msgstr "Suma de control a blocului de „extents” nu se potrivește cu blocul de „extents”"
+
+#: lib/ext2fs/ext2_err.c:160
+msgid "Directory block does not have space for checksum"
+msgstr "Blocul de directoare nu are spațiu pentru suma de control"
+
+#: lib/ext2fs/ext2_err.c:161
+msgid "Directory block checksum does not match directory block"
+msgstr "Suma de control a blocului de directoare nu se potrivește cu blocul de directoare"
+
+#: lib/ext2fs/ext2_err.c:162
+msgid "Extended attribute block checksum does not match block"
+msgstr "Suma de control a blocului de atribute extinse nu se potrivește cu blocul"
+
+#: lib/ext2fs/ext2_err.c:163
+msgid "Superblock checksum does not match superblock"
+msgstr "Suma de control a super-blocului nu se potrivește cu super-blocul"
+
+#: lib/ext2fs/ext2_err.c:164
+msgid "Unknown checksum algorithm"
+msgstr "Algoritm de sumă de control necunoscut"
+
+#: lib/ext2fs/ext2_err.c:165
+msgid "MMP block checksum does not match"
+msgstr "Suma de control a blocurilor MMP nu se potrivește"
+
+#: lib/ext2fs/ext2_err.c:166
+msgid "Ext2 file already exists"
+msgstr "Fișierul Ext2 există deja"
+
+#: lib/ext2fs/ext2_err.c:167
+msgid "Block bitmap checksum does not match bitmap"
+msgstr "Suma de control a hărții de biți a blocului nu se potrivește cu harta de biți"
+
+#: lib/ext2fs/ext2_err.c:168
+msgid "Cannot iterate data blocks of an inode containing inline data"
+msgstr "Nu se pot itera blocurile de date ale unui nod-i care conține date în linie"
+
+#: lib/ext2fs/ext2_err.c:169
+msgid "Extended attribute has an invalid name length"
+msgstr "Atributul extins are o lungime de nume nevalidă"
+
+#: lib/ext2fs/ext2_err.c:170
+msgid "Extended attribute has an invalid value length"
+msgstr "Atributul extins are o lungime de valoare nevalidă"
+
+#: lib/ext2fs/ext2_err.c:171
+msgid "Extended attribute has an incorrect hash"
+msgstr "Atributul extins are o sumă de control (hash) incorectă"
+
+#: lib/ext2fs/ext2_err.c:172
+msgid "Extended attribute block has a bad header"
+msgstr "Blocul de atribute extinse are un antet greșit"
+
+#: lib/ext2fs/ext2_err.c:173
+msgid "Extended attribute key not found"
+msgstr "Cheia atributului extins nu a fost găsită"
+
+#: lib/ext2fs/ext2_err.c:174
+msgid "Insufficient space to store extended attribute data"
+msgstr "Spațiu insuficient pentru stocarea datelor privind atributele extinse"
+
+#: lib/ext2fs/ext2_err.c:175
+msgid "Filesystem is missing ext_attr or inline_data feature"
+msgstr "Sistemului de fișiere îi lipsește caracteristica „ext_attr” sau „inline_data”"
+
+#: lib/ext2fs/ext2_err.c:176
+msgid "Inode doesn't have inline data"
+msgstr "Nodul-i nu are date în linie"
+
+#: lib/ext2fs/ext2_err.c:177
+msgid "No block for an inode with inline data"
+msgstr "Nici un bloc pentru un nod-i cu date în linie"
+
+#: lib/ext2fs/ext2_err.c:178
+msgid "No free space in inline data"
+msgstr "Nu există spațiu liber în datele în linie"
+
+#: lib/ext2fs/ext2_err.c:179
+msgid "Wrong magic number for extended attribute structure"
+msgstr "Număr magic greșit pentru structura extinsă a atributelor"
+
+#: lib/ext2fs/ext2_err.c:180
+msgid "Inode seems to contain garbage"
+msgstr "Nodul-i pare să conțină gunoi"
+
+#: lib/ext2fs/ext2_err.c:181
+msgid "Extended attribute has an invalid value offset"
+msgstr "Atributul extins are o poziție de valoare nevalidă"
+
+#: lib/ext2fs/ext2_err.c:182
+msgid "Journal flags inconsistent"
+msgstr "Fanioane de jurnal inconsistente"
+
+#: lib/ext2fs/ext2_err.c:183
+msgid "Undo file corrupt"
+msgstr "Fișier-de-anulare corupt"
+
+#: lib/ext2fs/ext2_err.c:184
+msgid "Wrong undo file for this filesystem"
+msgstr "Fișier-de-anulare greșit pentru acest sistem de fișiere"
+
+#: lib/ext2fs/ext2_err.c:185
+msgid "File system is corrupted"
+msgstr "Sistemul de fișiere este corupt"
+
+#: lib/ext2fs/ext2_err.c:186
+msgid "Bad CRC detected in file system"
+msgstr "S-a detectat un CRC incorect în sistemul de fișiere"
+
+#: lib/ext2fs/ext2_err.c:187
+msgid "The journal superblock is corrupt"
+msgstr "Super-blocul jurnalului este corupt"
+
+#: lib/ext2fs/ext2_err.c:188
+msgid "Inode is corrupted"
+msgstr "Nodul-i este corupt"
+
+#: lib/ext2fs/ext2_err.c:189
+msgid "Inode containing extended attribute value is corrupted"
+msgstr "Nodul-i care conține valoarea atributului extins este corupt"
+
+#: lib/ext2fs/ext2_err.c:190
+msgid "Group descriptors not loaded"
+msgstr "Descriptori de grup neîncărcați"
+
+#: lib/ext2fs/ext2_err.c:191
+msgid "The internal ext2_filsys data structure appears to be corrupted"
+msgstr "Structura internă de date ext2_filsys pare să fie coruptă"
+
+#: lib/ext2fs/ext2_err.c:192
+msgid "Found cyclic loop in extent tree"
+msgstr "Buclă ciclică găsită în arborele de „extents”"
+
+#: lib/ext2fs/ext2_err.c:193
+msgid "Operation not supported on an external journal"
+msgstr "Operație neacceptată pe un jurnal extern"
+
+#: lib/support/prof_err.c:11
+msgid "Profile version 0.0"
+msgstr "Profil versiunea 0.0"
+
+#: lib/support/prof_err.c:12
+msgid "Bad magic value in profile_node"
+msgstr "Valoare magică greșită în profile_node"
+
+#: lib/support/prof_err.c:13
+msgid "Profile section not found"
+msgstr "Secțiunea de profil nu a fost găsită"
+
+#: lib/support/prof_err.c:14
+msgid "Profile relation not found"
+msgstr "Relația de profil nu a fost găsită"
+
+#: lib/support/prof_err.c:15
+msgid "Attempt to add a relation to node which is not a section"
+msgstr "Încercare de a adăuga o relație la un nod care nu este o secțiune"
+
+#: lib/support/prof_err.c:16
+msgid "A profile section header has a non-zero value"
+msgstr "Un antet de secțiune de profil are o valoare diferită de zero"
+
+#: lib/support/prof_err.c:17
+msgid "Bad linked list in profile structures"
+msgstr "Listă legată incorectă în structurile de profil"
+
+#: lib/support/prof_err.c:18
+msgid "Bad group level in profile structures"
+msgstr "Nivel de grup incorect în structurile de profil"
+
+#: lib/support/prof_err.c:19
+msgid "Bad parent pointer in profile structures"
+msgstr "Indicator părinte incorect în structurile de profil"
+
+#: lib/support/prof_err.c:20
+msgid "Bad magic value in profile iterator"
+msgstr "Valoare magică incorectă în iteratorul de profil"
+
+#: lib/support/prof_err.c:21
+msgid "Can't set value on section node"
+msgstr "Nu se poate fixa valoarea pe nodul de secțiune"
+
+#: lib/support/prof_err.c:22
+msgid "Invalid argument passed to profile library"
+msgstr "Argument nevalid transmis către biblioteca de profil"
+
+#: lib/support/prof_err.c:23
+msgid "Attempt to modify read-only profile"
+msgstr "Încercare de a modifica profilul de numai-citire"
+
+#: lib/support/prof_err.c:24
+msgid "Profile section header not at top level"
+msgstr "Antetul secțiunii de profil nu se află la nivelul superior"
+
+#: lib/support/prof_err.c:25
+msgid "Syntax error in profile section header"
+msgstr "Eroare de sintaxă în antetul secțiunii de profil"
+
+#: lib/support/prof_err.c:26
+msgid "Syntax error in profile relation"
+msgstr "Eroare de sintaxă în relația de profil"
+
+#: lib/support/prof_err.c:27
+msgid "Extra closing brace in profile"
+msgstr "O acoladă de închidere suplimentară în profil"
+
+#: lib/support/prof_err.c:28
+msgid "Missing open brace in profile"
+msgstr "Lipsește acolada de deschidere în profil"
+
+#: lib/support/prof_err.c:29
+msgid "Bad magic value in profile_t"
+msgstr "Valoare magică incorectă în profile_t"
+
+#: lib/support/prof_err.c:30
+msgid "Bad magic value in profile_section_t"
+msgstr "Valoare magică incorectă în profile_section_t"
+
+#: lib/support/prof_err.c:31
+msgid "Iteration through all top level section not supported"
+msgstr "Iterarea prin toate secțiunile de nivel superior nu este acceptată"
+
+#: lib/support/prof_err.c:32
+msgid "Invalid profile_section object"
+msgstr "Obiect profile_section nevalid"
+
+#: lib/support/prof_err.c:33
+msgid "No more sections"
+msgstr "Nu mai sunt secțiuni"
+
+#: lib/support/prof_err.c:34
+msgid "Bad nameset passed to query routine"
+msgstr "Set de nume greșit transmis la rutina de interogare"
+
+#: lib/support/prof_err.c:35
+msgid "No profile file open"
+msgstr "Nu este deschis niciun fișier de profil"
+
+#: lib/support/prof_err.c:36
+msgid "Bad magic value in profile_file_t"
+msgstr "Valoare magică incorectă în profile_file_t"
+
+#: lib/support/prof_err.c:37
+msgid "Couldn't open profile file"
+msgstr "Nu s-a putut deschide fișierul de profil"
+
+#: lib/support/prof_err.c:38
+msgid "Section already exists"
+msgstr "Secțiunea există deja"
+
+#: lib/support/prof_err.c:39
+msgid "Invalid boolean value"
+msgstr "Valoare booleană nevalidă"
+
+#: lib/support/prof_err.c:40
+msgid "Invalid integer value"
+msgstr "Valoare de număr întreg nevalidă"
+
+#: lib/support/prof_err.c:41
+msgid "Bad magic value in profile_file_data_t"
+msgstr "Valoare magică incorectă în profile_file_data_t"
+
+#: lib/support/plausible.c:119
+#, c-format
+msgid "\tlast mounted on %.*s on %s"
+msgstr "\tmontat ultima dată pe %.*s la %s"
+
+#: lib/support/plausible.c:122
+#, c-format
+msgid "\tlast mounted on %s"
+msgstr "\tmontat ultima dată pe %s"
+
+#: lib/support/plausible.c:125
+#, c-format
+msgid "\tcreated on %s"
+msgstr "\tcreat la data de %s"
+
+#: lib/support/plausible.c:128
+#, c-format
+msgid "\tlast modified on %s"
+msgstr "\tmodificat ultima dată pe %s"
+
+#: lib/support/plausible.c:162
+#, c-format
+msgid "Found a %s partition table in %s\n"
+msgstr "A fost găsit un tabel de partiții %s în %s\n"
+
+#: lib/support/plausible.c:203
+#, c-format
+msgid "Could not open %s: %s\n"
+msgstr "Nu s-a putut deschide „%s”: %s\n"
+
+#: lib/support/plausible.c:206
+msgid ""
+"\n"
+"The device apparently does not exist; did you specify it correctly?\n"
+msgstr ""
+"\n"
+"Se pare că dispozitivul nu există; l-ați specificat corect?\n"
+
+#: lib/support/plausible.c:228
+#, c-format
+msgid "%s is not a block special device.\n"
+msgstr "%s nu este un dispozitiv special de bloc.\n"
+
+#: lib/support/plausible.c:250
+#, c-format
+msgid "%s contains a %s file system labelled '%s'\n"
+msgstr "%s conține un sistem de fișiere %s etichetat „%s”\n"
+
+#: lib/support/plausible.c:253
+#, c-format
+msgid "%s contains a %s file system\n"
+msgstr "%s conține un sistem de fișiere %s\n"
+
+#: lib/support/plausible.c:277
+#, c-format
+msgid "%s contains `%s' data\n"
+msgstr "%s conține date „%s”\n"
diff --git a/resize/main.c b/resize/main.c
index 94f5ec6d6..f914c0507 100644
--- a/resize/main.c
+++ b/resize/main.c
@@ -409,6 +409,8 @@ int main (int argc, char ** argv)
if (!(mount_flags & EXT2_MF_MOUNTED) && !print_min_size)
io_flags = EXT2_FLAG_RW | EXT2_FLAG_EXCLUSIVE;
+ if (mount_flags & EXT2_MF_MOUNTED)
+ io_flags |= EXT2_FLAG_DIRECT_IO;
io_flags |= EXT2_FLAG_64BITS | EXT2_FLAG_THREADS;
if (undo_file) {
diff --git a/resize/resize2fs.c b/resize/resize2fs.c
index 5eeb7d446..46540501d 100644
--- a/resize/resize2fs.c
+++ b/resize/resize2fs.c
@@ -1863,7 +1863,6 @@ static errcode_t block_mover(ext2_resize_t rfs)
old_blk += c;
moved += c;
if (rfs->progress) {
- io_channel_flush(fs->io);
retval = (rfs->progress)(rfs,
E2_RSZ_BLOCK_RELOC_PASS,
moved, to_move);
@@ -1871,9 +1870,10 @@ static errcode_t block_mover(ext2_resize_t rfs)
goto errout;
}
} while (size > 0);
- io_channel_flush(fs->io);
}
+ io_channel_flush(fs->io);
+
errout:
if (badblock_list) {
if (!retval && bb_modified)
diff --git a/scrub/Makefile.in b/scrub/Makefile.in
index 387f6504a..c97a1dd57 100644
--- a/scrub/Makefile.in
+++ b/scrub/Makefile.in
@@ -18,6 +18,7 @@ CONFFILES= e2scrub.conf
ifeq ($(HAVE_UDEV),yes)
UDEV_RULES = e2scrub.rules
+UDISKS_RULES = ext4.rules
INSTALLDIRS_TGT += installdirs-udev
INSTALL_TGT += install-udev
UNINSTALL_TGT += uninstall-udev
@@ -39,7 +40,7 @@ INSTALL_TGT += install-systemd install-libprogs
UNINSTALL_TGT += uninstall-systemd uninstall-libprogs
endif
-all:: $(PROGS) $(MANPAGES) $(CONFFILES) $(UDEV_RULES) $(SERVICE_FILES) $(CRONTABS) $(LIBPROGS)
+all:: $(PROGS) $(MANPAGES) $(CONFFILES) $(UDEV_RULES) $(UDISKS_RULES) $(SERVICE_FILES) $(CRONTABS) $(LIBPROGS)
e2scrub: $(DEP_SUBSTITUTE) e2scrub.in
$(E) " SUBST $@"
@@ -94,8 +95,8 @@ installdirs-crond:
$(Q) $(MKDIR_P) $(DESTDIR)$(CROND_DIR)
installdirs-libprogs:
- $(E) " MKDIR_P $(pkglibdir)"
- $(Q) $(MKDIR_P) $(DESTDIR)$(pkglibdir)
+ $(E) " MKDIR_P $(pkglibexecdir)"
+ $(Q) $(MKDIR_P) $(DESTDIR)$(pkglibexecdir)
installdirs-systemd:
$(E) " MKDIR_P $(SYSTEMD_SYSTEM_UNIT_DIR)"
@@ -111,6 +112,10 @@ install-udev: installdirs-udev
$(ES) " INSTALL $(UDEV_RULES_DIR)/$$i"; \
$(INSTALL_DATA) $$i $(DESTDIR)$(UDEV_RULES_DIR)/96-$$i; \
done
+ $(Q) for i in $(UDISKS_RULES); do \
+ $(ES) " INSTALL $(UDEV_RULES_DIR)/$$i"; \
+ $(INSTALL_DATA) $$i $(DESTDIR)$(UDEV_RULES_DIR)/64-$$i; \
+ done
install-crond: installdirs-crond
$(Q) if test -n "$(CRONTABS)" ; then \
@@ -120,8 +125,8 @@ install-crond: installdirs-crond
install-libprogs: $(LIBPROGS) installdirs-libprogs
$(Q) for i in $(LIBPROGS); do \
- $(ES) " INSTALL $(pkglibdir)/$$i"; \
- $(INSTALL_PROGRAM) $$i $(DESTDIR)$(pkglibdir)/$$i; \
+ $(ES) " INSTALL $(pkglibexecdir)/$$i"; \
+ $(INSTALL_PROGRAM) $$i $(DESTDIR)$(pkglibexecdir)/$$i; \
done
install-systemd: $(SERVICE_FILES) installdirs-systemd
@@ -153,6 +158,9 @@ uninstall-udev:
for i in $(UDEV_RULES); do \
$(RM) -f $(DESTDIR)$(UDEV_RULES_DIR)/96-$$i; \
done
+ for i in $(UDISKS_RULES); do \
+ $(RM) -f $(DESTDIR)$(UDEV_RULES_DIR)/64-$$i; \
+ done
uninstall-crond:
if test -n "$(CRONTABS)" ; then \
@@ -161,7 +169,7 @@ uninstall-crond:
uninstall-libprogs:
for i in $(LIBPROGS); do \
- $(RM) -f $(DESTDIR)$(pkglibdir)/$$i; \
+ $(RM) -f $(DESTDIR)$(pkglibexecdir)/$$i; \
done
uninstall-systemd:
@@ -181,7 +189,7 @@ uninstall: $(UNINSTALL_TGT)
done
clean::
- $(RM) -f $(PROGS) $(MANPAGES) $(CONFFILES) $(UDEV_RULES) $(SERVICE_FILES) $(CRONTABS) $(LIBPROGS)
+ $(RM) -f $(PROGS) $(MANPAGES) $(CONFFILES) $(UDEV_RULES) $(UDISKS_RULES) $(SERVICE_FILES) $(CRONTABS) $(LIBPROGS)
mostlyclean: clean
distclean: clean
diff --git a/scrub/e2scrub.in b/scrub/e2scrub.in
index 7ed57f2d3..043bc12b3 100644
--- a/scrub/e2scrub.in
+++ b/scrub/e2scrub.in
@@ -159,6 +159,13 @@ if [ ! -e "${dev}" ]; then
exitcode 16
fi
+# Do not scrub unjournalled filesystems; they are inconsistent when mounted
+if [ "${reap}" -eq 0 ] && ! dumpe2fs -h "${dev}" | grep -q 'has_journal'; then
+ echo "${arg}: Filesystem has no journal, cannot check."
+ print_help
+ exitcode 16
+fi
+
# Make sure this is an LVM device we can snapshot
lvm_vars="$(lvs --nameprefixes -o name,vgname,lv_role --noheadings "${dev}" 2> /dev/null)"
eval "${lvm_vars}"
diff --git a/scrub/e2scrub@.service.in b/scrub/e2scrub@.service.in
index 496f89483..6425263c2 100644
--- a/scrub/e2scrub@.service.in
+++ b/scrub/e2scrub@.service.in
@@ -1,5 +1,5 @@
[Unit]
-Description=Online ext4 Metadata Check for %I
+Description=Online ext4 Metadata Check for %f
OnFailure=e2scrub_fail@%i.service
Documentation=man:e2scrub(8)
@@ -16,5 +16,5 @@ User=root
IOSchedulingClass=idle
CPUSchedulingPolicy=idle
Environment=SERVICE_MODE=1
-ExecStart=@root_sbindir@/e2scrub -t %I
+ExecStart=@root_sbindir@/e2scrub -t %f
SyslogIdentifier=%N
diff --git a/scrub/e2scrub_all.cron.in b/scrub/e2scrub_all.cron.in
index 395fb2ab4..8e2640d47 100644
--- a/scrub/e2scrub_all.cron.in
+++ b/scrub/e2scrub_all.cron.in
@@ -1,2 +1,2 @@
-30 3 * * 0 root test -e /run/systemd/system || SERVICE_MODE=1 @pkglibdir@/e2scrub_all_cron
+30 3 * * 0 root test -e /run/systemd/system || SERVICE_MODE=1 @pkglibexecdir@/e2scrub_all_cron
10 3 * * * root test -e /run/systemd/system || SERVICE_MODE=1 @root_sbindir@/e2scrub_all -A -r
diff --git a/scrub/e2scrub_all.in b/scrub/e2scrub_all.in
index 4288b9698..fe4dda95a 100644
--- a/scrub/e2scrub_all.in
+++ b/scrub/e2scrub_all.in
@@ -125,6 +125,10 @@ ls_scan_targets() {
while read vars ; do
eval "${vars}"
+ # Skip unjournalled filesystems; they are inconsistent when
+ # mounted
+ dumpe2fs -h "${NAME}" | grep -q 'has_journal' || continue
+
if [ "${scrub_all}" -eq 1 ] || [ -n "${MOUNTPOINT}" ]; then
echo ${MOUNTPOINT:-${NAME}}
fi
@@ -146,22 +150,10 @@ ls_targets() {
fi
}
-# systemd doesn't know to do path escaping on the instance variable we pass
-# to the e2scrub service, which breaks things if there is a dash in the path
-# name. Therefore, do the path escaping ourselves if needed.
-#
-# systemd path escaping also drops the initial slash so we add that back in so
-# that log messages from the service units preserve the full path and users can
-# look up log messages using full paths. However, for "/" the escaping rules
-# do /not/ drop the initial slash, so we have to special-case that here.
+# Turn our mount path into a service name that systemd will recognize
escape_path_for_systemd() {
local path="$1"
-
- if [ "${path}" != "/" ]; then
- echo "-$(systemd-escape --path "${path}")"
- else
- echo "-"
- fi
+ systemd-escape --template 'e2scrub@.service' --path "${path}"
}
# Scrub any mounted fs on lvm by creating a snapshot and fscking that.
@@ -170,8 +162,8 @@ for tgt in "${targets[@]}"; do
# If we're not reaping and systemd is present, try invoking the
# systemd service.
if [ "${reap}" -ne 1 ] && type systemctl > /dev/null 2>&1; then
- tgt_esc="$(escape_path_for_systemd "${tgt}")"
- ${DBG} systemctl start "e2scrub@${tgt_esc}" 2> /dev/null
+ svcname="$(escape_path_for_systemd "${tgt}")"
+ ${DBG} systemctl start "${svcname}" 2> /dev/null
res=$?
if [ "${res}" -eq 0 ] || [ "${res}" -eq 1 ]; then
continue;
diff --git a/scrub/e2scrub_fail.in b/scrub/e2scrub_fail.in
index 2c0754a99..6899c47c6 100644
--- a/scrub/e2scrub_fail.in
+++ b/scrub/e2scrub_fail.in
@@ -2,8 +2,8 @@
# Email logs of failed e2scrub unit runs when the systemd service fails.
-device="$1"
-test -z "${device}" && exit 0
+mntpoint="$1"
+test -z "${mntpoint}" && exit 0
if ! type sendmail > /dev/null 2>&1; then
echo "$0: sendmail program not found."
@@ -16,7 +16,7 @@ fi
hostname="$(hostname -f 2>/dev/null)"
test -z "${hostname}" && hostname="${HOSTNAME}"
-service_name="e2scrub@$(systemd-escape ${device})"
+service_name="$(systemd-escape --template "e2scrub@.service" --path "${mntpoint}")"
if test -z "${recipient}" ; then
recipient="root"
@@ -29,9 +29,9 @@ fi
(cat << ENDL
To: ${recipient}
From: ${sender}
-Subject: e2scrub failure on ${device}
+Subject: e2scrub failure on ${mntpoint}
-So sorry, the automatic e2scrub of ${device} on ${hostname} failed.
+So sorry, the automatic e2scrub of ${mntpoint} on ${hostname} failed.
A log of what happened follows:
ENDL
diff --git a/scrub/e2scrub_fail@.service.in b/scrub/e2scrub_fail@.service.in
index 4bad311bb..462daee27 100644
--- a/scrub/e2scrub_fail@.service.in
+++ b/scrub/e2scrub_fail@.service.in
@@ -1,10 +1,10 @@
[Unit]
-Description=Online ext4 Metadata Check Failure Reporting for %I
+Description=Online ext4 Metadata Check Failure Reporting for %f
Documentation=man:e2scrub(8)
[Service]
Type=oneshot
-ExecStart=@pkglibdir@/e2scrub_fail "%I"
+ExecStart=@pkglibexecdir@/e2scrub_fail "%f"
User=mail
Group=mail
SupplementaryGroups=systemd-journal
diff --git a/scrub/ext4.rules.in b/scrub/ext4.rules.in
new file mode 100644
index 000000000..6fe5a7a83
--- /dev/null
+++ b/scrub/ext4.rules.in
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# Copyright (C) 2023 Oracle. All rights reserved.
+# Author: Darrick J. Wong <djwong@kernel.org>
+#
+# Don't let udisks automount ext4 filesystems without even asking a user.
+# This doesn't eliminate filesystems as an attack surface; it only prevents
+# evil maid attacks when all sessions are locked.
+#
+# According to http://storaged.org/doc/udisks2-api/latest/udisks.8.html,
+# supplying UDISKS_AUTO=0 here changes the HintAuto property of the block
+# device abstraction to mean "do not automatically start" (e.g. mount).
+SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="ext2|ext3|ext4|ext4dev|jbd", ENV{UDISKS_AUTO}="0"
diff --git a/tests/f_boundscheck/expect.1 b/tests/f_boundscheck/expect.1
index c2170b8f9..5c9ead485 100644
--- a/tests/f_boundscheck/expect.1
+++ b/tests/f_boundscheck/expect.1
@@ -1,6 +1,5 @@
ext2fs_check_desc: Corrupt group descriptor: bad block for inode table
../e2fsck/e2fsck: Group descriptors look bad... trying backup blocks...
-../e2fsck/e2fsck: Bad magic number in super-block while using the backup blocks../e2fsck/e2fsck: going back to original superblock
Note: if several inode or block bitmap blocks or part
of the inode table require relocation, you may wish to try
running e2fsck with the '-b 8193' option first. The problem
diff --git a/tests/f_boundscheck/expect.2 b/tests/f_boundscheck/expect.2
index c2170b8f9..5c9ead485 100644
--- a/tests/f_boundscheck/expect.2
+++ b/tests/f_boundscheck/expect.2
@@ -1,6 +1,5 @@
ext2fs_check_desc: Corrupt group descriptor: bad block for inode table
../e2fsck/e2fsck: Group descriptors look bad... trying backup blocks...
-../e2fsck/e2fsck: Bad magic number in super-block while using the backup blocks../e2fsck/e2fsck: going back to original superblock
Note: if several inode or block bitmap blocks or part
of the inode table require relocation, you may wish to try
running e2fsck with the '-b 8193' option first. The problem
diff --git a/tests/f_desc_size_bad/script b/tests/f_desc_size_bad/script
index ae2962770..40852c9f2 100644
--- a/tests/f_desc_size_bad/script
+++ b/tests/f_desc_size_bad/script
@@ -9,8 +9,8 @@ touch $TMPFILE
$MKE2FS -F -o Linux -O 64bit,extents -N 32 -b 1024 -g 512 -E desc_size=128 $TMPFILE 2048 > $test_name.log 2>&1
$DEBUGFS -R "ssv desc_size 129" -w $TMPFILE >> $test_name.log 2>&1
-E2FSCK_TIME=200704102100
-export E2FSCK_TIME
+#E2FSCK_TIME=1176238800
+#export E2FSCK_TIME
. $cmd_dir/run_e2fsck
diff --git a/tests/f_desc_size_zero/expect.1 b/tests/f_desc_size_zero/expect.1
new file mode 100644
index 000000000..acb752a75
--- /dev/null
+++ b/tests/f_desc_size_zero/expect.1
@@ -0,0 +1,13 @@
+../e2fsck/e2fsck: Block group descriptor size incorrect while trying to open test.img
+../e2fsck/e2fsck: Trying to load superblock despite errors...
+../e2fsck/e2fsck: Block group descriptor size incorrect while trying to open test.img
+
+The superblock could not be read or does not describe a valid ext2/ext3/ext4
+filesystem. If the device is valid and it really contains an ext2/ext3/ext4
+filesystem (and not swap or ufs or something else), then the superblock
+is corrupt, and you might try running e2fsck with an alternate superblock:
+ e2fsck -b 8193 <device>
+ or
+ e2fsck -b 32768 <device>
+
+Exit status is 8
diff --git a/tests/f_desc_size_zero/image.gz b/tests/f_desc_size_zero/image.gz
new file mode 100644
index 000000000..4e43c0c61
--- /dev/null
+++ b/tests/f_desc_size_zero/image.gz
Binary files differ
diff --git a/tests/f_desc_size_zero/name b/tests/f_desc_size_zero/name
new file mode 100644
index 000000000..e77bb11c2
--- /dev/null
+++ b/tests/f_desc_size_zero/name
@@ -0,0 +1 @@
+zero s_desc_size
diff --git a/tests/f_desc_size_zero/script b/tests/f_desc_size_zero/script
new file mode 100644
index 000000000..8ab2b9c61
--- /dev/null
+++ b/tests/f_desc_size_zero/script
@@ -0,0 +1,2 @@
+ONE_PASS_ONLY="true"
+. $cmd_dir/run_e2fsck
diff --git a/tests/f_dup4/script b/tests/f_dup4/script
index aec862d1f..94db73ac6 100644
--- a/tests/f_dup4/script
+++ b/tests/f_dup4/script
@@ -45,7 +45,7 @@ set_inode_field /dir3/foe block[0] 34
q
EOF
-E2FSCK_TIME=200704102100
+E2FSCK_TIME=1176238800
export E2FSCK_TIME
. $cmd_dir/run_e2fsck
diff --git a/tests/f_inlinedir_bad_symlink/expect.1 b/tests/f_inlinedir_bad_symlink/expect.1
new file mode 100644
index 000000000..e1d0e879e
--- /dev/null
+++ b/tests/f_inlinedir_bad_symlink/expect.1
@@ -0,0 +1,12 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Symlink /a/7 (inode #19) is invalid.
+Clear? yes
+
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 19/112 files (0.0% non-contiguous), 16/200 blocks
+Exit status is 1
diff --git a/tests/f_inlinedir_bad_symlink/expect.2 b/tests/f_inlinedir_bad_symlink/expect.2
new file mode 100644
index 000000000..b881d6573
--- /dev/null
+++ b/tests/f_inlinedir_bad_symlink/expect.2
@@ -0,0 +1,7 @@
+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: 19/112 files (0.0% non-contiguous), 16/200 blocks
+Exit status is 0
diff --git a/tests/f_inlinedir_bad_symlink/image.gz b/tests/f_inlinedir_bad_symlink/image.gz
new file mode 100644
index 000000000..c5bd71a3b
--- /dev/null
+++ b/tests/f_inlinedir_bad_symlink/image.gz
Binary files differ
diff --git a/tests/f_inlinedir_bad_symlink/name b/tests/f_inlinedir_bad_symlink/name
new file mode 100644
index 000000000..f7f7f0d6c
--- /dev/null
+++ b/tests/f_inlinedir_bad_symlink/name
@@ -0,0 +1 @@
+bad symlink in an inline directory
diff --git a/tests/f_itable_collision/expect.1 b/tests/f_itable_collision/expect.1
index 01c85d4d2..fbab3238f 100644
--- a/tests/f_itable_collision/expect.1
+++ b/tests/f_itable_collision/expect.1
@@ -27,14 +27,14 @@ Clear inode? yes
Restarting e2fsck from the beginning...
Pass 1: Checking inodes, blocks, and sizes
Inode 12 block 37 conflicts with critical metadata, skipping block checks.
-Illegal block number passed to ext2fs_test_block_bitmap #4294967294 for in-use block map
-Illegal block number passed to ext2fs_mark_block_bitmap #4294967294 for in-use block map
+Illegal block number passed to ext2fs_test_block_bitmap #2147483646 for in-use block map
+Illegal block number passed to ext2fs_mark_block_bitmap #2147483646 for in-use block map
Illegal block number passed to ext2fs_test_block_bitmap #268435455 for in-use block map
Illegal block number passed to ext2fs_mark_block_bitmap #268435455 for in-use block map
Running additional passes to resolve blocks claimed by more than one inode...
Pass 1B: Rescanning for multiply-claimed blocks
-Illegal block number passed to ext2fs_test_block_bitmap #4294967294 for multiply claimed block map
+Illegal block number passed to ext2fs_test_block_bitmap #2147483646 for multiply claimed block map
Illegal block number passed to ext2fs_test_block_bitmap #268435455 for multiply claimed block map
Multiply-claimed block(s) in inode 12: 37
Pass 1C: Scanning directories for inodes with multiply-claimed blocks
@@ -46,7 +46,7 @@ File /a (inode #12, mod time Fri Jun 27 18:34:44 2014)
<filesystem metadata>
Clone multiply-claimed blocks? yes
-Illegal block number passed to ext2fs_test_block_bitmap #4294967294 for multiply claimed block map
+Illegal block number passed to ext2fs_test_block_bitmap #2147483646 for multiply claimed block map
Illegal block number passed to ext2fs_test_block_bitmap #268435455 for multiply claimed block map
Pass 2: Checking directory structure
Setting filetype for entry 'bad1' in / (2) to 1.
@@ -54,7 +54,7 @@ Setting filetype for entry 'bad2' in / (2) to 1.
Restarting e2fsck from the beginning...
Pass 1: Checking inodes, blocks, and sizes
Inode 12 has an invalid extent
- (logical block 0, invalid physical block 4294967294, len 1)
+ (logical block 0, invalid physical block 2147483646, len 1)
Clear? yes
Inode 12 has an invalid extent
diff --git a/tests/f_itable_collision/script b/tests/f_itable_collision/script
index 66abd9022..9d76c2389 100755
--- a/tests/f_itable_collision/script
+++ b/tests/f_itable_collision/script
@@ -6,7 +6,7 @@
FSCK_OPT=-fy
IMAGE=$test_dir/image.gz
-E2FSCK_TIME=4294967294
+E2FSCK_TIME=2147483646
export E2FSCK_TIME
gzip -d < $IMAGE > $TMPFILE
diff --git a/tests/f_preen_htree_csum/expect.1 b/tests/f_preen_htree_csum/expect.1
new file mode 100644
index 000000000..bbd81944b
--- /dev/null
+++ b/tests/f_preen_htree_csum/expect.1
@@ -0,0 +1,4 @@
+test_filesys: Problem in HTREE directory inode 12: internal node fails checksum.
+HTREE INDEX CLEARED.
+test_filesys: 8204/10000 files (0.0% non-contiguous), 1551/4096 blocks
+Exit status is 1
diff --git a/tests/f_preen_htree_csum/expect.2 b/tests/f_preen_htree_csum/expect.2
new file mode 100644
index 000000000..0730c4a3a
--- /dev/null
+++ b/tests/f_preen_htree_csum/expect.2
@@ -0,0 +1,7 @@
+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: 8204/10000 files (0.0% non-contiguous), 1551/4096 blocks
+Exit status is 0
diff --git a/tests/f_preen_htree_csum/image.gz b/tests/f_preen_htree_csum/image.gz
new file mode 100644
index 000000000..94ce8e142
--- /dev/null
+++ b/tests/f_preen_htree_csum/image.gz
Binary files differ
diff --git a/tests/f_preen_htree_csum/name b/tests/f_preen_htree_csum/name
new file mode 100644
index 000000000..c915eec29
--- /dev/null
+++ b/tests/f_preen_htree_csum/name
@@ -0,0 +1 @@
+fix a bad htree checksum in preen mode
diff --git a/tests/f_preen_htree_csum/script b/tests/f_preen_htree_csum/script
new file mode 100644
index 000000000..23ab8b6aa
--- /dev/null
+++ b/tests/f_preen_htree_csum/script
@@ -0,0 +1,2 @@
+FSCK_OPT=-pf
+. $cmd_dir/run_e2fsck
diff --git a/tests/f_quota_deallocate_inode/expect.1 b/tests/f_quota_deallocate_inode/expect.1
new file mode 100644
index 000000000..2b2f128db
--- /dev/null
+++ b/tests/f_quota_deallocate_inode/expect.1
@@ -0,0 +1,18 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Symlink /testlink (inode #14) is invalid.
+Clear? yes
+
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+[QUOTA WARNING] Usage inconsistent for ID 0:actual (15360, 4) != expected (16384, 5)
+Update quota info for quota type 0? yes
+
+[QUOTA WARNING] Usage inconsistent for ID 0:actual (15360, 4) != expected (16384, 5)
+Update quota info for quota type 1? yes
+
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 13/256 files (15.4% non-contiguous), 1157/8192 blocks
+Exit status is 1
diff --git a/tests/f_quota_deallocate_inode/expect.2 b/tests/f_quota_deallocate_inode/expect.2
new file mode 100644
index 000000000..802317949
--- /dev/null
+++ b/tests/f_quota_deallocate_inode/expect.2
@@ -0,0 +1,7 @@
+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: 13/256 files (15.4% non-contiguous), 1157/8192 blocks
+Exit status is 0
diff --git a/tests/f_quota_deallocate_inode/image.gz b/tests/f_quota_deallocate_inode/image.gz
new file mode 100644
index 000000000..798a72c3a
--- /dev/null
+++ b/tests/f_quota_deallocate_inode/image.gz
Binary files differ
diff --git a/tests/f_quota_deallocate_inode/name b/tests/f_quota_deallocate_inode/name
new file mode 100644
index 000000000..396887c16
--- /dev/null
+++ b/tests/f_quota_deallocate_inode/name
@@ -0,0 +1 @@
+update quota when deallocating bad inode
diff --git a/tests/f_quota_shrinkdir/expect.1 b/tests/f_quota_shrinkdir/expect.1
new file mode 100644
index 000000000..e4fc48ea6
--- /dev/null
+++ b/tests/f_quota_shrinkdir/expect.1
@@ -0,0 +1,18 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+/lost+found not found. Create? yes
+
+Pass 3A: Optimizing directories
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+[QUOTA WARNING] Usage inconsistent for ID 0:actual (3072, 3) != expected (13312, 2)
+Update quota info for quota type 0? yes
+
+[QUOTA WARNING] Usage inconsistent for ID 0:actual (3072, 3) != expected (13312, 2)
+Update quota info for quota type 1? yes
+
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 12/256 files (16.7% non-contiguous), 1145/8192 blocks
+Exit status is 1
diff --git a/tests/f_quota_shrinkdir/expect.2 b/tests/f_quota_shrinkdir/expect.2
new file mode 100644
index 000000000..fcb2cb814
--- /dev/null
+++ b/tests/f_quota_shrinkdir/expect.2
@@ -0,0 +1,7 @@
+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: 12/256 files (16.7% non-contiguous), 1145/8192 blocks
+Exit status is 0
diff --git a/tests/f_quota_shrinkdir/image.gz b/tests/f_quota_shrinkdir/image.gz
new file mode 100644
index 000000000..1fee3ca9c
--- /dev/null
+++ b/tests/f_quota_shrinkdir/image.gz
Binary files differ
diff --git a/tests/f_quota_shrinkdir/name b/tests/f_quota_shrinkdir/name
new file mode 100644
index 000000000..8772ae5c8
--- /dev/null
+++ b/tests/f_quota_shrinkdir/name
@@ -0,0 +1 @@
+update quota on directory optimization
diff --git a/tests/f_uninit_last_uninit/script b/tests/f_uninit_last_uninit/script
index 53105a417..d0930b8a9 100644
--- a/tests/f_uninit_last_uninit/script
+++ b/tests/f_uninit_last_uninit/script
@@ -17,7 +17,7 @@ set_bg 1 checksum calc
q
EOF
-E2FSCK_TIME=200704102100
+E2FSCK_TIME=1176238800
export E2FSCK_TIME
. $cmd_dir/run_e2fsck
diff --git a/tests/j_ext_long_trans/expect b/tests/j_ext_long_trans/expect
index ea3c87fcb..b95aa9bc2 100644
--- a/tests/j_ext_long_trans/expect
+++ b/tests/j_ext_long_trans/expect
@@ -77,7 +77,7 @@ Root inode not allocated. Allocate? yes
Pass 4: Checking reference counts
Pass 5: Checking group summary information
-Block bitmap differences: +(1--259) +275 +(291--418) +2341
+Block bitmap differences: +(1--260) +262 +264 +266 +268 +(275--276) +278 +280 +282 +284 +(291--546) +(675--802) +(931--1058) +(1187--1314) +(1443--1570) +2341 +(8193--8450) +(24577--24834) +(40961--41218) +(57345--57602) +(73729--73986)
Fix? yes
Free blocks count wrong for group #0 (5838, counted=5851).
diff --git a/tests/j_long_trans/expect b/tests/j_long_trans/expect
index 82b3caf17..ee7af96ab 100644
--- a/tests/j_long_trans/expect
+++ b/tests/j_long_trans/expect
@@ -72,7 +72,7 @@ Root inode not allocated. Allocate? yes
Pass 4: Checking reference counts
Pass 5: Checking group summary information
-Block bitmap differences: +(1--259) +273 +275 +289 +(291--418) +(2083--2210) +2341
+Block bitmap differences: +(1--260) +262 +264 +266 +268 +273 +(275--276) +278 +280 +282 +284 +289 +(291--546) +(675--802) +(931--1058) +(1187--1314) +(1443--1570) +(2083--2210) +2341 +(8193--8450) +(24577--24834) +(40961--41218) +(57345--57602) +(73729--73986)
Fix? yes
Free blocks count wrong for group #0 (5838, counted=5851).
diff --git a/tests/j_long_trans_mcsum_32bit/expect b/tests/j_long_trans_mcsum_32bit/expect
index ffae07a69..0b6cf499c 100644
--- a/tests/j_long_trans_mcsum_32bit/expect
+++ b/tests/j_long_trans_mcsum_32bit/expect
@@ -108,7 +108,7 @@ Root inode not allocated. Allocate? yes
Pass 4: Checking reference counts
Pass 5: Checking group summary information
-Block bitmap differences: +(1--260) +276 +(292--419) +2342 -(139265--155648)
+Block bitmap differences: +(1--261) +263 +265 +267 +269 +(276--277) +279 +281 +283 +285 +(292--547) +(676--803) +(932--1059) +(1188--1315) +(1444--1571) +2342 +(8193--8451) +(24577--24835) +(40961--41219) +(57345--57603) +(73729--73987) -(139265--155648)
Fix? yes
Free blocks count wrong for group #0 (5837, counted=5850).
diff --git a/tests/j_long_trans_mcsum_64bit/expect b/tests/j_long_trans_mcsum_64bit/expect
index e891def16..b520c91bc 100644
--- a/tests/j_long_trans_mcsum_64bit/expect
+++ b/tests/j_long_trans_mcsum_64bit/expect
@@ -107,7 +107,7 @@ Root inode not allocated. Allocate? yes
Pass 4: Checking reference counts
Pass 5: Checking group summary information
-Block bitmap differences: +(1--262) +278 +(294--421) +2344 -(139265--155648)
+Block bitmap differences: +(1--263) +265 +267 +269 +271 +(278--279) +281 +283 +285 +287 +(294--549) +(678--805) +(934--1061) +(1190--1317) +(1446--1573) +2344 +(8193--8453) +(24577--24837) +(40961--41221) +(57345--57605) +(73729--73989) -(139265--155648)
Fix? yes
Free blocks count wrong for group #0 (5835, counted=5848).
diff --git a/tests/j_short_trans_mcsum_64bit/expect b/tests/j_short_trans_mcsum_64bit/expect
index d73e28297..5a4f5b94b 100644
--- a/tests/j_short_trans_mcsum_64bit/expect
+++ b/tests/j_short_trans_mcsum_64bit/expect
@@ -28,7 +28,7 @@ Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
-Block bitmap differences: +(0--65) +(67--69) +(71--584) +(1097--2126) +(65536--69631) +(98304--98368)
+Block bitmap differences: +(0--2126) +(32768--32832) +(65536--69631) +(98304--98368)
Fix? yes
Inode bitmap differences: +(1--11)
diff --git a/tests/j_short_trans_recover_mcsum_64bit/expect b/tests/j_short_trans_recover_mcsum_64bit/expect
index 8c637f122..7139fd80a 100644
--- a/tests/j_short_trans_recover_mcsum_64bit/expect
+++ b/tests/j_short_trans_recover_mcsum_64bit/expect
@@ -30,7 +30,7 @@ Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
-Block bitmap differences: +(0--65) +(67--69) +(71--584) +(1097--2126) +(65536--69631) +(98304--98368)
+Block bitmap differences: +(0--2126) +(32768--32832) +(65536--69631) +(98304--98368)
Fix? yes
Inode bitmap differences: +(1--11)
diff --git a/tests/m_bigjournal/expect.1 b/tests/m_bigjournal/expect.1
index eb0e3bc38..4e6674665 100644
--- a/tests/m_bigjournal/expect.1
+++ b/tests/m_bigjournal/expect.1
@@ -58,7 +58,7 @@ Group 0: (Blocks 0-32767)
31837 free blocks, 5 free inodes, 2 directories, 5 unused inodes
Free blocks: 931-32767
Free inodes: 12-16
-Group 1: (Blocks 32768-65535) [INODE_UNINIT, BLOCK_UNINIT]
+Group 1: (Blocks 32768-65535) [INODE_UNINIT]
Backup superblock at 32768, Group descriptors at 32769-32769
Reserved GDT blocks at 32770-33440
Block bitmap at 674 (bg #0 + 674), Inode bitmap at 758 (bg #0 + 758)
@@ -72,7 +72,7 @@ Group 2: (Blocks 65536-98303) [INODE_UNINIT, BLOCK_UNINIT]
32768 free blocks, 16 free inodes, 0 directories, 16 unused inodes
Free blocks: 65536-98303
Free inodes: 33-48
-Group 3: (Blocks 98304-131071) [INODE_UNINIT, BLOCK_UNINIT]
+Group 3: (Blocks 98304-131071) [INODE_UNINIT]
Backup superblock at 98304, Group descriptors at 98305-98305
Reserved GDT blocks at 98306-98976
Block bitmap at 676 (bg #0 + 676), Inode bitmap at 760 (bg #0 + 760)
@@ -86,7 +86,7 @@ Group 4: (Blocks 131072-163839) [INODE_UNINIT, BLOCK_UNINIT]
32768 free blocks, 16 free inodes, 0 directories, 16 unused inodes
Free blocks: 131072-163839
Free inodes: 65-80
-Group 5: (Blocks 163840-196607) [INODE_UNINIT, BLOCK_UNINIT]
+Group 5: (Blocks 163840-196607) [INODE_UNINIT]
Backup superblock at 163840, Group descriptors at 163841-163841
Reserved GDT blocks at 163842-164512
Block bitmap at 678 (bg #0 + 678), Inode bitmap at 762 (bg #0 + 762)
@@ -100,7 +100,7 @@ Group 6: (Blocks 196608-229375) [INODE_UNINIT, BLOCK_UNINIT]
32768 free blocks, 16 free inodes, 0 directories, 16 unused inodes
Free blocks: 196608-229375
Free inodes: 97-112
-Group 7: (Blocks 229376-262143) [INODE_UNINIT, BLOCK_UNINIT]
+Group 7: (Blocks 229376-262143) [INODE_UNINIT]
Backup superblock at 229376, Group descriptors at 229377-229377
Reserved GDT blocks at 229378-230048
Block bitmap at 680 (bg #0 + 680), Inode bitmap at 764 (bg #0 + 764)
@@ -114,7 +114,7 @@ Group 8: (Blocks 262144-294911) [INODE_UNINIT, BLOCK_UNINIT]
32768 free blocks, 16 free inodes, 0 directories, 16 unused inodes
Free blocks: 262144-294911
Free inodes: 129-144
-Group 9: (Blocks 294912-327679) [INODE_UNINIT, BLOCK_UNINIT]
+Group 9: (Blocks 294912-327679) [INODE_UNINIT]
Backup superblock at 294912, Group descriptors at 294913-294913
Reserved GDT blocks at 294914-295584
Block bitmap at 682 (bg #0 + 682), Inode bitmap at 766 (bg #0 + 766)
@@ -212,7 +212,7 @@ Group 24: (Blocks 786432-819199) [INODE_UNINIT, BLOCK_UNINIT]
32768 free blocks, 16 free inodes, 0 directories, 16 unused inodes
Free blocks: 786432-819199
Free inodes: 385-400
-Group 25: (Blocks 819200-851967) [INODE_UNINIT, BLOCK_UNINIT]
+Group 25: (Blocks 819200-851967) [INODE_UNINIT]
Backup superblock at 819200, Group descriptors at 819201-819201
Reserved GDT blocks at 819202-819872
Block bitmap at 698 (bg #0 + 698), Inode bitmap at 782 (bg #0 + 782)
@@ -226,7 +226,7 @@ Group 26: (Blocks 851968-884735) [INODE_UNINIT, BLOCK_UNINIT]
32768 free blocks, 16 free inodes, 0 directories, 16 unused inodes
Free blocks: 851968-884735
Free inodes: 417-432
-Group 27: (Blocks 884736-917503) [INODE_UNINIT, BLOCK_UNINIT]
+Group 27: (Blocks 884736-917503) [INODE_UNINIT]
Backup superblock at 884736, Group descriptors at 884737-884737
Reserved GDT blocks at 884738-885408
Block bitmap at 700 (bg #0 + 700), Inode bitmap at 784 (bg #0 + 784)
@@ -554,7 +554,7 @@ Group 80: (Blocks 2621440-2654207) [INODE_UNINIT, BLOCK_UNINIT]
32768 free blocks, 16 free inodes, 0 directories, 16 unused inodes
Free blocks: 2621440-2654207
Free inodes: 1281-1296
-Group 81: (Blocks 2654208-2686975) [INODE_UNINIT, BLOCK_UNINIT]
+Group 81: (Blocks 2654208-2686975) [INODE_UNINIT]
Backup superblock at 2654208, Group descriptors at 2654209-2654209
Reserved GDT blocks at 2654210-2654880
Block bitmap at 754 (bg #0 + 754), Inode bitmap at 838 (bg #0 + 838)
diff --git a/tests/m_resize_inode_meta_bg/expect.1 b/tests/m_resize_inode_meta_bg/expect.1
index 7feaed9d8..83c7bc57c 100644
--- a/tests/m_resize_inode_meta_bg/expect.1
+++ b/tests/m_resize_inode_meta_bg/expect.1
@@ -67,7 +67,7 @@ Group 0: (Blocks 0-255) [ITABLE_ZEROED]
159 free blocks, 53 free inodes, 2 directories, 53 unused inodes
Free blocks: 97-255
Free inodes: 12-64
-Group 1: (Blocks 256-511) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
+Group 1: (Blocks 256-511) [INODE_UNINIT, ITABLE_ZEROED]
Backup superblock at 256, Group descriptor at 257
Block bitmap at 3 (bg #0 + 3)
Inode bitmap at 18 (bg #0 + 18)
@@ -82,7 +82,7 @@ Group 2: (Blocks 512-767) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
256 free blocks, 64 free inodes, 0 directories, 64 unused inodes
Free blocks: 512-767
Free inodes: 129-192
-Group 3: (Blocks 768-1023) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
+Group 3: (Blocks 768-1023) [INODE_UNINIT, ITABLE_ZEROED]
Backup superblock at 768
Block bitmap at 5 (bg #0 + 5)
Inode bitmap at 20 (bg #0 + 20)
@@ -97,7 +97,7 @@ Group 4: (Blocks 1024-1279) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
256 free blocks, 64 free inodes, 0 directories, 64 unused inodes
Free blocks: 1024-1279
Free inodes: 257-320
-Group 5: (Blocks 1280-1535) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
+Group 5: (Blocks 1280-1535) [INODE_UNINIT, ITABLE_ZEROED]
Backup superblock at 1280
Block bitmap at 7 (bg #0 + 7)
Inode bitmap at 22 (bg #0 + 22)
diff --git a/tests/m_rootgnutar/expect b/tests/m_rootgnutar/expect
new file mode 100644
index 000000000..5a241b6a8
--- /dev/null
+++ b/tests/m_rootgnutar/expect
@@ -0,0 +1,141 @@
+Creating regular file test.img
+Exit status is 0
+Filesystem volume name: <none>
+Last mounted on: <not available>
+Filesystem magic number: 0xEF53
+Filesystem revision #: 1 (dynamic)
+Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file dir_nlink extra_isize metadata_csum
+Default mount options: (none)
+Filesystem state: clean
+Errors behavior: Continue
+Filesystem OS type: Linux
+Inode count: 1024
+Block count: 16384
+Reserved block count: 819
+Overhead clusters: 1543
+Free blocks: 14791
+Free inodes: 1005
+First block: 1
+Block size: 1024
+Fragment size: 1024
+Group descriptor size: 64
+Reserved GDT blocks: 127
+Blocks per group: 8192
+Fragments per group: 8192
+Inodes per group: 512
+Inode blocks per group: 128
+Flex block group size: 16
+Mount count: 0
+Check interval: 15552000 (6 months)
+Reserved blocks uid: 0
+Reserved blocks gid: 0
+First inode: 11
+Inode size: 256
+Required extra isize: 32
+Desired extra isize: 32
+Journal inode: 8
+Default directory hash: half_md4
+Journal backup: inode blocks
+Checksum type: crc32c
+Journal features: (none)
+Total journal size: 1024k
+Total journal blocks: 1024
+Max transaction length: 1024
+Fast commit length: 0
+Journal sequence: 0x00000001
+Journal start: 0
+
+
+Group 0: (Blocks 1-8192)
+ Primary superblock at 1, Group descriptors at 2-2
+ Reserved GDT blocks at 3-129
+ Block bitmap at 130 (+129)
+ Inode bitmap at 132 (+131)
+ Inode table at 134-261 (+133)
+ 7753 free blocks, 493 free inodes, 5 directories, 493 unused inodes
+ Free blocks: 440-8192
+ Free inodes: 20-512
+Group 1: (Blocks 8193-16383) [INODE_UNINIT]
+ Backup superblock at 8193, Group descriptors at 8194-8194
+ Reserved GDT blocks at 8195-8321
+ Block bitmap at 131 (bg #0 + 130)
+ Inode bitmap at 133 (bg #0 + 132)
+ Inode table at 262-389 (bg #0 + 261)
+ 7038 free blocks, 512 free inodes, 0 directories, 512 unused inodes
+ Free blocks: 9346-16383
+ Free inodes: 513-1024
+Exit status is 0
+debugfs: stat /test/emptyfile
+Inode: III Type: regular
+Size: 0
+Links: 1 Blockcount: 0
+Fragment: Address: 0 Number: 0 Size: 0
+debugfs: stat /test/bigfile
+Inode: III Type: regular
+Size: 32768
+Links: 1 Blockcount: 64
+Fragment: Address: 0 Number: 0 Size: 0
+debugfs: stat /test/zerofile
+Inode: III Type: regular
+Size: 1025
+Links: 1 Blockcount: 0
+Fragment: Address: 0 Number: 0 Size: 0
+debugfs: stat /test/silly_bs_link
+Inode: III Type: symlink
+Size: 14
+Links: 1 Blockcount: 0
+Fragment: Address: 0 Number: 0 Size: 0
+debugfs: stat /test/emptydir
+Inode: III Type: directory
+Size: 1024
+Links: 2 Blockcount: 2
+Fragment: Address: 0 Number: 0 Size: 0
+debugfs: stat /test/dir
+Inode: III Type: directory
+Size: 1024
+Links: 2 Blockcount: 2
+Fragment: Address: 0 Number: 0 Size: 0
+debugfs: stat /test/dir/file
+Inode: III Type: regular
+Size: 8
+Links: 1 Blockcount: 2
+Fragment: Address: 0 Number: 0 Size: 0
+Exit status is 0
+debugfs: ex /test/emptyfile
+Level Entries Logical Physical Length Flags
+debugfs: ex /test/bigfile
+Level Entries Logical Physical Length Flags
+X 0/0 1/1 0-31 AAA-BBB 32
+debugfs: ex /test/zerofile
+Level Entries Logical Physical Length Flags
+debugfs: ex /test/silly_bs_link
+/test/silly_bs_link: does not uses extent block maps
+debugfs: ex /test/emptydir
+Level Entries Logical Physical Length Flags
+X 0/0 1/1 0-0 AAA-BBB 1
+debugfs: ex /test/dir
+Level Entries Logical Physical Length Flags
+X 0/0 1/1 0-0 AAA-BBB 1
+debugfs: ex /test/dir/file
+Level Entries Logical Physical Length Flags
+X 0/0 1/1 0-0 AAA-BBB 1
+Exit status is 0
+Exit status is 0
+Exit status is 0
+test/
+test/bigfile
+test/dir/
+test/dir/file
+test/emptydir/
+test/emptyfile
+test/silly_bs_link
+test/zerofile
+Exit status is 0
+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.img: 19/1024 files (0.0% non-contiguous), 1593/16384 blocks
+Exit status is 0
+Exit status is 0
diff --git a/tests/m_rootgnutar/mkgnutar.pl b/tests/m_rootgnutar/mkgnutar.pl
new file mode 100644
index 000000000..516124cdb
--- /dev/null
+++ b/tests/m_rootgnutar/mkgnutar.pl
@@ -0,0 +1,138 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use Getopt::Long;
+use Fcntl ':mode';
+
+my ($directory, $mtime, $nopadding, $norec, $verbose);
+GetOptions(
+ "directory=s" => \$directory,
+ "mtime=i" => \$mtime,
+ "nopadding" => \$nopadding,
+ "no-recursion" => \$norec,
+ "verbose" => \$verbose,
+);
+
+chdir($directory) || die "cannot chdir";
+
+my $num_entries = 0;
+
+sub recurse_dir {
+ my $path = shift;
+ my @results = ("$path/");
+ opendir my $dh, $path or die "cannot open $path";
+ while (my $entry = readdir $dh) {
+ next if $entry eq ".";
+ next if $entry eq "..";
+ if (-d "$path/$entry") {
+ push @results, (&recurse_dir("$path/$entry"));
+ } else {
+ push @results, "$path/$entry";
+ }
+ }
+ closedir $dh;
+ return @results;
+}
+
+my @entries;
+if (!-e $ARGV[0]) {
+ die "does not exist: $ARGV[0]";
+} elsif (-d $ARGV[0] && !$norec) {
+ @entries = sort (recurse_dir($ARGV[0]));
+} else {
+ @entries = ($ARGV[0]);
+}
+
+foreach my $fname (@entries) {
+ if ($verbose) {
+ print STDERR "$fname\n";
+ }
+ my (
+ $dev, $ino, $mode, $nlink, $uid, $gid, $rdev,
+ $size, $atime, $mtime_, $ctime, $blksize, $blocks
+ ) = lstat($fname);
+ if (!defined $mode) {
+ die "failed to stat $fname";
+ }
+ my $content = "";
+ my $type;
+ my $linkname = "";
+ my $username = $ENV{LOGNAME} || $ENV{USER} || getpwuid($<);
+ if (S_ISLNK($mode)) {
+ $type = 2;
+ $linkname = readlink $fname;
+ } elsif (S_ISREG($mode)) {
+ $type = 0;
+ open(my $fh, '<', $fname);
+ $content = do { local $/; <$fh> };
+ close($fh);
+ } elsif (S_ISDIR($mode)) {
+ $type = 5;
+ }
+ my $entry = pack(
+ 'a100 a8 a8 a8 a12 a12 A8 a1 a100 a6 a2 a32 a32 a8 a8 a155 x12',
+ $fname,
+ sprintf('%07o', $mode & 07777),
+ sprintf('%07o', $<), # uid
+ sprintf('%07o', $(), # gid
+ sprintf('%011o', length $content), # size
+ sprintf('%011o', $mtime),
+ # mtime
+ '', # checksum
+ $type,
+ $linkname, # linkname
+ "ustar ", # magic
+ " ", # version
+ "$username", # username
+ "$username", # groupname
+ '', # dev major
+ '', # dev minor
+ '', # prefix
+ );
+
+ # compute and insert checksum
+ substr($entry, 148, 7)
+ = sprintf("%06o\0", unpack("%16C*", $entry));
+ print $entry;
+ $num_entries += 1;
+
+ if (length $content) {
+ my $num_blocks = int((length $content) / 512);
+ if ((length $content) % 512 != 0) {
+ $num_blocks += 1;
+ }
+ print $content;
+ print(("\x00") x ($num_blocks * 512 - (length $content)));
+ $num_entries += $num_blocks;
+ }
+}
+
+if (!$nopadding) {
+ # https://www.gnu.org/software/tar/manual/html_node/Standard.html
+ #
+ # Physically, an archive consists of a series of file entries terminated
+ # by an end-of-archive entry, which consists of two 512 blocks of zero
+ # bytes. At the end of the archive file there are two 512-byte blocks
+ # filled with binary zeros as an end-of-file marker.
+ print(pack 'a512', '');
+ print(pack 'a512', '');
+ $num_entries += 2;
+
+ # https://www.gnu.org/software/tar/manual/html_section/tar_76.html
+ #
+ # Some devices requires that all write operations be a multiple of a
+ # certain size, and so, tar pads the archive out to the next record
+ # boundary.
+ #
+ # The default blocking factor is 20. With a block size of 512 bytes, we
+ # get a record size of 10240.
+ my $num_records = int($num_entries * 512 / 10240);
+ if (($num_entries * 512) % 10240 != 0) {
+ $num_records += 1;
+ }
+ for (my $i = $num_entries ; $i < $num_records * 10240 / 512 ; $i++) {
+ print(pack 'a512', '');
+ }
+}
diff --git a/tests/m_rootgnutar/output.sed b/tests/m_rootgnutar/output.sed
new file mode 100644
index 000000000..2e7696780
--- /dev/null
+++ b/tests/m_rootgnutar/output.sed
@@ -0,0 +1,5 @@
+s/^[[:space:]]*\([0-9]*\)\/[[:space:]]*\([0-9]*\)[[:space:]]*\([0-9]*\)\/[[:space:]]*\([0-9]*\)[[:space:]]*\([0-9]*\)[[:space:]]*-[[:space:]]*\([0-9]*\)[[:space:]]*[0-9]*[[:space:]]*-[[:space:]]*[0-9]*[[:space:]]*\([0-9]*\)/X \1\/\2 \3\/\4 \5-\6 AAA-BBB \7/g
+s/^[[:space:]]*\([0-9]*\)\/[[:space:]]*\([0-9]*\)[[:space:]]*\([0-9]*\)\/[[:space:]]*\([0-9]*\)[[:space:]]*\([0-9]*\)[[:space:]]*-[[:space:]]*\([0-9]*\)[[:space:]]*[0-9]*[[:space:]]*\([0-9]*\)/Y \1\/\2 \3\/\4 \5-\6 AAA \7/g
+s/Mode:.*$//g
+s/User:.*Size:/Size:/g
+s/^Inode: [0-9]*/Inode: III/g
diff --git a/tests/m_rootgnutar/script b/tests/m_rootgnutar/script
new file mode 100644
index 000000000..79fd2225b
--- /dev/null
+++ b/tests/m_rootgnutar/script
@@ -0,0 +1,169 @@
+# vim: filetype=sh
+
+use_mkgnutar=
+
+test_description="create fs image from GNU tarball"
+if ! test -x "$DEBUGFS_EXE"; then
+ echo "$test_name: $test_description: skipped (no debugfs)"
+ return 0
+fi
+if [ "$(grep -c 'define HAVE_ARCHIVE_H' ../lib/config.h)" -eq 0 ]; then
+ echo "$test_name: $test_description: skipped (no libarchive)"
+ exit 0
+fi
+
+if test -z "$use_mkgnutar" ; then
+ if type ztar > /dev/null 2>&1 && \
+ tar --version 2>&1 | head -1 | grep -q "GNU tar" ; then
+ TAR=tar
+ elif type gtar > /dev/null 2>&1 && \
+ gtar --version 2>&1 | head -1 | grep -q "GNU tar" ; then
+ TAR=gtar
+ else
+ # if GNU tar is not available, fall back to using mkgnutar.pl
+ use_mkgnutar=yes
+# echo "$test_name: $test_description: skipped (no GNU tar)"
+# exit 0
+ fi
+fi
+
+MKFS_TAR="$TMPFILE.tar"
+MKFS_DIR="$TMPFILE.dir"
+OUT="$test_name.log"
+EXP="$test_dir/expect"
+DEBUGFS_EXE_MTIME=$(perl -e 'print((stat ($ARGV[0]))[9])' "$DEBUGFS_EXE")
+
+# we put everything in a subdir because we cannot rdump the root as that would
+# require permissions to changing ownership of /lost+found
+rm -rf "$MKFS_DIR"
+mkdir -p "$MKFS_DIR/test"
+touch "$MKFS_DIR/test/emptyfile"
+dd if=/dev/zero bs=1024 count=32 2> /dev/null | tr '\0' 'a' > "$MKFS_DIR/test/bigfile"
+dd if=/dev/zero of="$MKFS_DIR/test/zerofile" bs=1 count=1 seek=1024 2> /dev/null
+ln -s /silly_bs_link "$MKFS_DIR/test/silly_bs_link"
+mkdir "$MKFS_DIR/test/emptydir"
+mkdir "$MKFS_DIR/test/dir"
+echo "will be overwritten" > "$MKFS_DIR/test/dir/file"
+
+if test -z "$use_mkgnutar"; then
+ # debugfs rdump does not preserve the timestamps when it extracts the
+ # files so we ignore them by using tar --clamp-mtime
+ # first write a partial tar
+ $TAR --sort=name -C "$MKFS_DIR" --mtime="$DEBUGFS_EXE" --clamp-mtime \
+ --format=gnu -cf "$MKFS_TAR.dupl" test
+ # now overwrite the contents of a file
+ echo "Test me" > "$MKFS_DIR/test/dir/file"
+ # and update the tar so that it contains two entries for the same file
+ # we need this to test the code path that first unlinks and then overwrites an
+ # existing file
+ $TAR -C "$MKFS_DIR" --mtime="$DEBUGFS_EXE" --clamp-mtime \
+ --format=gnu -rf "$MKFS_TAR.dupl" test/dir/file
+ # also add a duplicate directory entry because those must not be unlinked
+ echo test | $TAR -C "$MKFS_DIR" --mtime="$DEBUGFS_EXE" --clamp-mtime \
+ --format=gnu -rf "$MKFS_TAR.dupl" --no-recursion \
+ --verbatim-files-from --files-from=-
+ # also create a tarball of the directory with only one entry per file
+ $TAR --sort=name -C "$MKFS_DIR" --mtime="$DEBUGFS_EXE" --clamp-mtime \
+ --format=gnu -cf "$MKFS_TAR.uniq" test
+else
+ # same as above but without using GNU tar
+ perl $test_dir/mkgnutar.pl --nopadding --directory="$MKFS_DIR" --mtime "$DEBUGFS_EXE_MTIME" test > "$MKFS_TAR.dupl"
+ echo "Test me" > "$MKFS_DIR/test/dir/file"
+ perl $test_dir/mkgnutar.pl --nopadding --directory="$MKFS_DIR" --mtime "$DEBUGFS_EXE_MTIME" test/dir/file >> "$MKFS_TAR.dupl"
+ perl $test_dir/mkgnutar.pl --nopadding --directory="$MKFS_DIR" --mtime "$DEBUGFS_EXE_MTIME" --no-recursion test/ >> "$MKFS_TAR.dupl"
+ # add end-of-archive entry
+ truncate -s +1024 "$MKFS_TAR.dupl"
+ # pad to a multiple of the record size
+ truncate -s %10240 "$MKFS_TAR.dupl"
+ perl $test_dir/mkgnutar.pl --directory="$MKFS_DIR" --mtime "$DEBUGFS_EXE_MTIME" test > "$MKFS_TAR.uniq"
+fi
+
+rm -r "$MKFS_DIR"
+
+cat > "$TMPFILE.cmd1" << ENDL
+stat /test/emptyfile
+stat /test/bigfile
+stat /test/zerofile
+stat /test/silly_bs_link
+stat /test/emptydir
+stat /test/dir
+stat /test/dir/file
+ENDL
+
+cat > "$TMPFILE.cmd2" << ENDL
+ex /test/emptyfile
+ex /test/bigfile
+ex /test/zerofile
+ex /test/silly_bs_link
+ex /test/emptydir
+ex /test/dir
+ex /test/dir/file
+ENDL
+
+# Create two file systems, one for each tar that was created above. The
+# tarballs differ but should result in the same filesystem contents
+#
+for ext in uniq dupl; do
+ mkdir "$MKFS_DIR"
+ {
+ $MKE2FS -q -F -o Linux -T ext4 -O metadata_csum,64bit -E lazy_itable_init=1 -b 1024 -d "$MKFS_TAR.$ext" "$TMPFILE.$ext" 16384 2>&1;
+ echo Exit status is $?;
+ $DUMPE2FS "$TMPFILE.$ext" 2>&1;
+ echo Exit status is $?;
+ $DEBUGFS -f "$TMPFILE.cmd1" "$TMPFILE.$ext" 2>&1 | grep -E "(stat|Size:|Type:|Links:|Blockcount:)"
+ echo Exit status is $?;
+ $DEBUGFS -f "$TMPFILE.cmd2" "$TMPFILE.$ext" 2>&1;
+ echo Exit status is $?;
+ $DEBUGFS -R "dump /test/dir/file $TMPFILE.testme" "$TMPFILE.$ext" 2>&1;
+ echo Exit status is $?;
+ # extract the files and directories from the image and tar them
+ # again to make sure that a tarball from the image contents is
+ # bit-by-bit identical to the tarball the image was created
+ # from -- essentially this checks whether a roundtrip from tar
+ # to ext4 to tar remains identical
+ $DEBUGFS -R "rdump /test $MKFS_DIR" "$TMPFILE.$ext" 2>&1;
+ echo Exit status is $?;
+ # debugfs rdump does not preserve the timestamps when it extracts the
+ if test -z "$use_mkgnutar"; then
+ # files so we ignore them by using tar --clamp-mtime
+ $TAR --sort=name -C "$MKFS_DIR" \
+ --mtime="$DEBUGFS_EXE" --clamp-mtime --format=gnu \
+ -cvf "$TMPFILE.new.tar" test 2>&1;
+ else
+ perl $test_dir/mkgnutar.pl --verbose --directory="$MKFS_DIR" --mtime "$DEBUGFS_EXE_MTIME" test 2>&1 > "$TMPFILE.new.tar";
+ fi;
+ echo Exit status is $?;
+ $FSCK -f -n "$TMPFILE.$ext" 2>&1;
+ echo Exit status is $?;
+ # independent from which tarball the ext4 image was created,
+ # the tarball created from the files in it should be bit-by-bit
+ # identical to the tarball without duplicate entries
+ cmp "$MKFS_TAR.uniq" "$TMPFILE.new.tar" 2>&1;
+ echo Exit status is $?;
+ } | sed -f "$cmd_dir/filter.sed" -f "$test_dir/output.sed" -e "s;$TMPFILE.$ext;test.img;" | {
+ # In the first pass, store the output and append to the log
+ # file. In the second pass, compare the output to the output
+ # to the one from the first.
+ case $ext in
+ uniq) tee "$TMPFILE.log" >> "$OUT";;
+ dupl) cmp - "$TMPFILE.log" >> "$OUT" 2>&1 || echo "cmp failed" >> "$OUT";;
+ esac
+ }
+ rm -r "$MKFS_DIR" "$TMPFILE.new.tar"
+done
+
+# Do the verification
+cmp -s "$OUT" "$EXP"
+status=$?
+
+if [ "$status" = 0 ] ; then
+ echo "$test_name: $test_description: ok"
+ touch "$test_name.ok"
+else
+ echo "$test_name: $test_description: failed"
+ diff $DIFF_OPTS "$EXP" "$OUT" > "$test_name.failed"
+fi
+
+rm -rf "$MKFS_TAR.dupl" "$MKFS_TAR.uniq" "$TMPFILE.cmd1" "$TMPFILE.cmd2" \
+ "$TMPFILE.log" "$TMPFILE.dupl" "$TMPFILE.uniq" "$TMPFILE.testme"
+unset MKFS_TAR MKFS_DIR OUT EXP
diff --git a/tests/m_rootpaxtar/expect b/tests/m_rootpaxtar/expect
new file mode 100644
index 000000000..54a2d4b6c
--- /dev/null
+++ b/tests/m_rootpaxtar/expect
@@ -0,0 +1,87 @@
+Filesystem volume name: <none>
+Last mounted on: <not available>
+Filesystem magic number: 0xEF53
+Filesystem revision #: 1 (dynamic)
+Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file dir_nlink extra_isize metadata_csum
+Default mount options: (none)
+Filesystem state: clean
+Errors behavior: Continue
+Filesystem OS type: Linux
+Inode count: 1024
+Block count: 16384
+Reserved block count: 819
+Overhead clusters: 1543
+Free blocks: 14827
+Free inodes: 1012
+First block: 1
+Block size: 1024
+Fragment size: 1024
+Group descriptor size: 64
+Reserved GDT blocks: 127
+Blocks per group: 8192
+Fragments per group: 8192
+Inodes per group: 512
+Inode blocks per group: 128
+Flex block group size: 16
+Mount count: 0
+Check interval: 15552000 (6 months)
+Reserved blocks uid: 0
+Reserved blocks gid: 0
+First inode: 11
+Inode size: 256
+Required extra isize: 32
+Desired extra isize: 32
+Journal inode: 8
+Default directory hash: half_md4
+Journal backup: inode blocks
+Checksum type: crc32c
+Journal features: (none)
+Total journal size: 1024k
+Total journal blocks: 1024
+Max transaction length: 1024
+Fast commit length: 0
+Journal sequence: 0x00000001
+Journal start: 0
+
+
+Group 0: (Blocks 1-8192)
+ Primary superblock at 1, Group descriptors at 2-2
+ Reserved GDT blocks at 3-129
+ Block bitmap at 130 (+129)
+ Inode bitmap at 132 (+131)
+ Inode table at 134-261 (+133)
+ 7789 free blocks, 500 free inodes, 2 directories, 500 unused inodes
+ Free blocks: 404-8192
+ Free inodes: 13-512
+Group 1: (Blocks 8193-16383) [INODE_UNINIT]
+ Backup superblock at 8193, Group descriptors at 8194-8194
+ Reserved GDT blocks at 8195-8321
+ Block bitmap at 131 (bg #0 + 130)
+ Inode bitmap at 133 (bg #0 + 132)
+ Inode table at 262-389 (bg #0 + 261)
+ 7038 free blocks, 512 free inodes, 0 directories, 512 unused inodes
+ Free blocks: 9346-16383
+ Free inodes: 513-1024
+debugfs: stat /file
+Inode: III Type: regular
+Generation: 0 Version: 0x00000000:00000000
+Size: 0
+File ACL: 0
+Links: 1 Blockcount: 0
+Fragment: Address: 0 Number: 0 Size: 0
+ ctime: 0x00000000:00000000 -- Thu Jan 1 00:00:00 1970
+ atime: 0x00000000:00000000 -- Thu Jan 1 00:00:00 1970
+ mtime: 0x00000000:00000000 -- Thu Jan 1 00:00:00 1970
+Size of extra inode fields: 32
+Extended attributes:
+ security.capability (20) = 01 00 00 02 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+EXTENTS:
+debugfs: ea_list /file
+Extended attributes:
+ security.capability (20) = 01 00 00 02 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+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.img: 12/1024 files (0.0% non-contiguous), 1557/16384 blocks
diff --git a/tests/m_rootpaxtar/mkpaxtar.pl b/tests/m_rootpaxtar/mkpaxtar.pl
new file mode 100644
index 000000000..f33534487
--- /dev/null
+++ b/tests/m_rootpaxtar/mkpaxtar.pl
@@ -0,0 +1,69 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+my @entries = (
+ # filename mode type content
+ ['./PaxHeaders/file', oct(644), 'x', "57 SCHILY.xattr.security.capability=\x01\0\0\x02\0\x20\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x0a"],
+ ['file', oct(644), 0, ''],
+);
+
+my $num_entries = 0;
+
+foreach my $file (@entries) {
+ my ($fname, $mode, $type, $content) = @{$file};
+ my $entry = pack(
+ 'a100 a8 a8 a8 a12 a12 A8 a1 a100 a6 a2 a32 a32 a8 a8 a155 x12',
+ $fname,
+ sprintf('%07o', $mode),
+ sprintf('%07o', 0), # uid
+ sprintf('%07o', 0), # gid
+ sprintf('%011o', length $content), # size
+ sprintf('%011o', 0), # mtime
+ '', # checksum
+ $type,
+ '', # linkname
+ "ustar", # magic
+ "00", # version
+ '', # username
+ '', # groupname
+ '', # dev major
+ '', # dev minor
+ '', # prefix
+ );
+
+ # compute and insert checksum
+ substr($entry, 148, 7)
+ = sprintf("%06o\0", unpack("%16C*", $entry));
+ print $entry;
+ $num_entries += 1;
+
+ if (length $content) {
+ print(pack 'a512', $content);
+ $num_entries += 1;
+ }
+}
+
+# https://www.gnu.org/software/tar/manual/html_node/Standard.html
+#
+# Physically, an archive consists of a series of file entries terminated by an
+# end-of-archive entry, which consists of two 512 blocks of zero bytes. At the
+# end of the archive file there are two 512-byte blocks filled with binary
+# zeros as an end-of-file marker.
+
+print(pack 'a512', '');
+print(pack 'a512', '');
+$num_entries += 2;
+
+# https://www.gnu.org/software/tar/manual/html_section/tar_76.html
+#
+# Some devices requires that all write operations be a multiple of a certain
+# size, and so, tar pads the archive out to the next record boundary.
+#
+# The default blocking factor is 20. With a block size of 512 bytes, we get a
+# record size of 10240.
+
+for (my $i = $num_entries ; $i < 20 ; $i++) {
+ print(pack 'a512', '');
+}
diff --git a/tests/m_rootpaxtar/output.sed b/tests/m_rootpaxtar/output.sed
new file mode 100644
index 000000000..2e7696780
--- /dev/null
+++ b/tests/m_rootpaxtar/output.sed
@@ -0,0 +1,5 @@
+s/^[[:space:]]*\([0-9]*\)\/[[:space:]]*\([0-9]*\)[[:space:]]*\([0-9]*\)\/[[:space:]]*\([0-9]*\)[[:space:]]*\([0-9]*\)[[:space:]]*-[[:space:]]*\([0-9]*\)[[:space:]]*[0-9]*[[:space:]]*-[[:space:]]*[0-9]*[[:space:]]*\([0-9]*\)/X \1\/\2 \3\/\4 \5-\6 AAA-BBB \7/g
+s/^[[:space:]]*\([0-9]*\)\/[[:space:]]*\([0-9]*\)[[:space:]]*\([0-9]*\)\/[[:space:]]*\([0-9]*\)[[:space:]]*\([0-9]*\)[[:space:]]*-[[:space:]]*\([0-9]*\)[[:space:]]*[0-9]*[[:space:]]*\([0-9]*\)/Y \1\/\2 \3\/\4 \5-\6 AAA \7/g
+s/Mode:.*$//g
+s/User:.*Size:/Size:/g
+s/^Inode: [0-9]*/Inode: III/g
diff --git a/tests/m_rootpaxtar/script b/tests/m_rootpaxtar/script
new file mode 100644
index 000000000..41dc7c386
--- /dev/null
+++ b/tests/m_rootpaxtar/script
@@ -0,0 +1,44 @@
+# vim: filetype=sh
+
+test_description="create fs image from pax tarball with xattrs"
+if ! test -x $DEBUGFS_EXE; then
+ echo "$test_name: $test_description: skipped (no debugfs)"
+ return 0
+fi
+if [ "$(grep -c 'define HAVE_ARCHIVE_H' ../lib/config.h)" -eq 0 ]; then
+ echo "$test_name: skipped (no libarchive)"
+ exit 0
+fi
+
+OUT=$test_name.log
+EXP=$test_dir/expect
+
+perl $test_dir/mkpaxtar.pl \
+ | $MKE2FS -q -F -o Linux -T ext4 -O metadata_csum,64bit -E lazy_itable_init=1 -b 1024 -d - $TMPFILE 16384 > $OUT 2>&1
+
+$DUMPE2FS $TMPFILE >> $OUT 2>&1
+cat > $TMPFILE.cmd << ENDL
+stat /file
+ea_list /file
+ENDL
+$DEBUGFS -f $TMPFILE.cmd $TMPFILE 2>&1 | egrep -v '^(crtime|Inode checksum):' >> $OUT
+
+$FSCK -f -n $TMPFILE >> $OUT 2>&1
+
+sed -f $cmd_dir/filter.sed -f $test_dir/output.sed -e "s;$TMPFILE;test.img;" < $OUT > $OUT.tmp
+mv $OUT.tmp $OUT
+
+# Do the verification
+cmp -s $OUT $EXP
+status=$?
+
+if [ "$status" = 0 ] ; then
+ echo "$test_name: $test_description: ok"
+ touch $test_name.ok
+else
+ echo "$test_name: $test_description: failed"
+ diff $DIFF_OPTS $EXP $OUT > $test_name.failed
+fi
+
+rm -rf $TMPFILE.cmd
+unset OUT EXP
diff --git a/tests/m_roottar/expect b/tests/m_roottar/expect
new file mode 100644
index 000000000..78e86c55a
--- /dev/null
+++ b/tests/m_roottar/expect
@@ -0,0 +1,208 @@
+Filesystem volume name: <none>
+Last mounted on: <not available>
+Filesystem magic number: 0xEF53
+Filesystem revision #: 1 (dynamic)
+Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file dir_nlink extra_isize metadata_csum
+Default mount options: (none)
+Filesystem state: clean
+Errors behavior: Continue
+Filesystem OS type: Linux
+Inode count: 1024
+Block count: 16384
+Reserved block count: 819
+Overhead clusters: 1543
+Free blocks: 14824
+Free inodes: 998
+First block: 1
+Block size: 1024
+Fragment size: 1024
+Group descriptor size: 64
+Reserved GDT blocks: 127
+Blocks per group: 8192
+Fragments per group: 8192
+Inodes per group: 512
+Inode blocks per group: 128
+Flex block group size: 16
+Mount count: 0
+Check interval: 15552000 (6 months)
+Reserved blocks uid: 0
+Reserved blocks gid: 0
+First inode: 11
+Inode size: 256
+Required extra isize: 32
+Desired extra isize: 32
+Journal inode: 8
+Default directory hash: half_md4
+Journal backup: inode blocks
+Checksum type: crc32c
+Journal features: (none)
+Total journal size: 1024k
+Total journal blocks: 1024
+Max transaction length: 1024
+Fast commit length: 0
+Journal sequence: 0x00000001
+Journal start: 0
+
+
+Group 0: (Blocks 1-8192)
+ Primary superblock at 1, Group descriptors at 2-2
+ Reserved GDT blocks at 3-129
+ Block bitmap at 130 (+129)
+ Inode bitmap at 132 (+131)
+ Inode table at 134-261 (+133)
+ 7786 free blocks, 486 free inodes, 5 directories, 486 unused inodes
+ Free blocks: 407-8192
+ Free inodes: 27-512
+Group 1: (Blocks 8193-16383) [INODE_UNINIT]
+ Backup superblock at 8193, Group descriptors at 8194-8194
+ Reserved GDT blocks at 8195-8321
+ Block bitmap at 131 (bg #0 + 130)
+ Inode bitmap at 133 (bg #0 + 132)
+ Inode table at 262-389 (bg #0 + 261)
+ 7038 free blocks, 512 free inodes, 0 directories, 512 unused inodes
+ Free blocks: 9346-16383
+ Free inodes: 513-1024
+debugfs: stat /dev/
+Inode: III Type: directory
+Generation: 0 Version: 0x00000000:00000000
+Size: 1024
+File ACL: 0
+Links: 4 Blockcount: 2
+Fragment: Address: 0 Number: 0 Size: 0
+Size of extra inode fields: 32
+EXTENTS:
+(0):404
+debugfs: stat /dev/console
+Inode: III Type: character special
+Generation: 0 Version: 0x00000000:00000000
+Size: 0
+File ACL: 0
+Links: 1 Blockcount: 0
+Fragment: Address: 0 Number: 0 Size: 0
+Size of extra inode fields: 32
+Device major/minor number: 05:01 (hex 05:01)
+debugfs: stat /dev/fd
+Inode: III Type: symlink
+Generation: 0 Version: 0x00000000:00000000
+Size: 13
+File ACL: 0
+Links: 1 Blockcount: 0
+Fragment: Address: 0 Number: 0 Size: 0
+Size of extra inode fields: 32
+Fast link dest: "/proc/self/fd"
+debugfs: stat /dev/full
+Inode: III Type: character special
+Generation: 0 Version: 0x00000000:00000000
+Size: 0
+File ACL: 0
+Links: 1 Blockcount: 0
+Fragment: Address: 0 Number: 0 Size: 0
+Size of extra inode fields: 32
+Device major/minor number: 01:07 (hex 01:07)
+debugfs: stat /dev/null
+Inode: III Type: character special
+Generation: 0 Version: 0x00000000:00000000
+Size: 0
+File ACL: 0
+Links: 1 Blockcount: 0
+Fragment: Address: 0 Number: 0 Size: 0
+Size of extra inode fields: 32
+Device major/minor number: 01:03 (hex 01:03)
+debugfs: stat /dev/ptmx
+Inode: III Type: character special
+Generation: 0 Version: 0x00000000:00000000
+Size: 0
+File ACL: 0
+Links: 1 Blockcount: 0
+Fragment: Address: 0 Number: 0 Size: 0
+Size of extra inode fields: 32
+Device major/minor number: 05:02 (hex 05:02)
+debugfs: stat /dev/pts/
+Inode: III Type: directory
+Generation: 0 Version: 0x00000000:00000000
+Size: 1024
+File ACL: 0
+Links: 2 Blockcount: 2
+Fragment: Address: 0 Number: 0 Size: 0
+Size of extra inode fields: 32
+EXTENTS:
+(0):405
+debugfs: stat /dev/random
+Inode: III Type: character special
+Generation: 0 Version: 0x00000000:00000000
+Size: 0
+File ACL: 0
+Links: 1 Blockcount: 0
+Fragment: Address: 0 Number: 0 Size: 0
+Size of extra inode fields: 32
+Device major/minor number: 01:08 (hex 01:08)
+debugfs: stat /dev/shm/
+Inode: III Type: directory
+Generation: 0 Version: 0x00000000:00000000
+Size: 1024
+File ACL: 0
+Links: 2 Blockcount: 2
+Fragment: Address: 0 Number: 0 Size: 0
+Size of extra inode fields: 32
+EXTENTS:
+(0):406
+debugfs: stat /dev/stderr
+Inode: III Type: symlink
+Generation: 0 Version: 0x00000000:00000000
+Size: 15
+File ACL: 0
+Links: 1 Blockcount: 0
+Fragment: Address: 0 Number: 0 Size: 0
+Size of extra inode fields: 32
+Fast link dest: "/proc/self/fd/2"
+debugfs: stat /dev/stdin
+Inode: III Type: symlink
+Generation: 0 Version: 0x00000000:00000000
+Size: 15
+File ACL: 0
+Links: 1 Blockcount: 0
+Fragment: Address: 0 Number: 0 Size: 0
+Size of extra inode fields: 32
+Fast link dest: "/proc/self/fd/0"
+debugfs: stat /dev/stdout
+Inode: III Type: symlink
+Generation: 0 Version: 0x00000000:00000000
+Size: 15
+File ACL: 0
+Links: 1 Blockcount: 0
+Fragment: Address: 0 Number: 0 Size: 0
+Size of extra inode fields: 32
+Fast link dest: "/proc/self/fd/1"
+debugfs: stat /dev/tty
+Inode: III Type: character special
+Generation: 0 Version: 0x00000000:00000000
+Size: 0
+File ACL: 0
+Links: 1 Blockcount: 0
+Fragment: Address: 0 Number: 0 Size: 0
+Size of extra inode fields: 32
+Device major/minor number: 05:00 (hex 05:00)
+debugfs: stat /dev/urandom
+Inode: III Type: character special
+Generation: 0 Version: 0x00000000:00000000
+Size: 0
+File ACL: 0
+Links: 1 Blockcount: 0
+Fragment: Address: 0 Number: 0 Size: 0
+Size of extra inode fields: 32
+Device major/minor number: 01:09 (hex 01:09)
+debugfs: stat /dev/zero
+Inode: III Type: character special
+Generation: 0 Version: 0x00000000:00000000
+Size: 0
+File ACL: 0
+Links: 1 Blockcount: 0
+Fragment: Address: 0 Number: 0 Size: 0
+Size of extra inode fields: 32
+Device major/minor number: 01:05 (hex 01:05)
+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.img: 26/1024 files (0.0% non-contiguous), 1560/16384 blocks
diff --git a/tests/m_roottar/mktar.pl b/tests/m_roottar/mktar.pl
new file mode 100644
index 000000000..0e8843c2e
--- /dev/null
+++ b/tests/m_roottar/mktar.pl
@@ -0,0 +1,62 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+# type codes:
+# 0 -> normal file
+# 1 -> hardlink
+# 2 -> symlink
+# 3 -> character special
+# 4 -> block special
+# 5 -> directory
+my @devfiles = (
+ # filename mode type link target major minor
+ ["", oct(755), 5, '', undef, undef],
+ ["console", oct(666), 3, '', 5, 1],
+ ["fd", oct(777), 2, '/proc/self/fd', undef, undef],
+ ["full", oct(666), 3, '', 1, 7],
+ ["null", oct(666), 3, '', 1, 3],
+ ["ptmx", oct(666), 3, '', 5, 2],
+ ["pts/", oct(755), 5, '', undef, undef],
+ ["random", oct(666), 3, '', 1, 8],
+ ["shm/", oct(755), 5, '', undef, undef],
+ ["stderr", oct(777), 2, '/proc/self/fd/2', undef, undef],
+ ["stdin", oct(777), 2, '/proc/self/fd/0', undef, undef],
+ ["stdout", oct(777), 2, '/proc/self/fd/1', undef, undef],
+ ["tty", oct(666), 3, '', 5, 0],
+ ["urandom", oct(666), 3, '', 1, 9],
+ ["zero", oct(666), 3, '', 1, 5],
+);
+
+my $mtime = time;
+if (exists $ENV{SOURCE_DATE_EPOCH}) {
+ $mtime = $ENV{SOURCE_DATE_EPOCH} + 0;
+}
+
+foreach my $file (@devfiles) {
+ my ($fname, $mode, $type, $linkname, $devmajor, $devminor) = @{$file};
+ my $entry = pack(
+ 'a100 a8 a8 a8 a12 a12 A8 a1 a100 a8 a32 a32 a8 a8 a155 x12',
+ "./dev/$fname",
+ sprintf('%07o', $mode),
+ sprintf('%07o', 0), # uid
+ sprintf('%07o', 0), # gid
+ sprintf('%011o', 0), # size
+ sprintf('%011o', $mtime),
+ '', # checksum
+ $type,
+ $linkname,
+ "ustar ",
+ '', # username
+ '', # groupname
+ defined($devmajor) ? sprintf('%07o', $devmajor) : '',
+ defined($devminor) ? sprintf('%07o', $devminor) : '',
+ '', # prefix
+ );
+
+ # compute and insert checksum
+ substr($entry, 148, 7)
+ = sprintf("%06o\0", unpack("%16C*", $entry));
+ print $entry;
+}
diff --git a/tests/m_roottar/output.sed b/tests/m_roottar/output.sed
new file mode 100644
index 000000000..2e7696780
--- /dev/null
+++ b/tests/m_roottar/output.sed
@@ -0,0 +1,5 @@
+s/^[[:space:]]*\([0-9]*\)\/[[:space:]]*\([0-9]*\)[[:space:]]*\([0-9]*\)\/[[:space:]]*\([0-9]*\)[[:space:]]*\([0-9]*\)[[:space:]]*-[[:space:]]*\([0-9]*\)[[:space:]]*[0-9]*[[:space:]]*-[[:space:]]*[0-9]*[[:space:]]*\([0-9]*\)/X \1\/\2 \3\/\4 \5-\6 AAA-BBB \7/g
+s/^[[:space:]]*\([0-9]*\)\/[[:space:]]*\([0-9]*\)[[:space:]]*\([0-9]*\)\/[[:space:]]*\([0-9]*\)[[:space:]]*\([0-9]*\)[[:space:]]*-[[:space:]]*\([0-9]*\)[[:space:]]*[0-9]*[[:space:]]*\([0-9]*\)/Y \1\/\2 \3\/\4 \5-\6 AAA \7/g
+s/Mode:.*$//g
+s/User:.*Size:/Size:/g
+s/^Inode: [0-9]*/Inode: III/g
diff --git a/tests/m_roottar/script b/tests/m_roottar/script
new file mode 100644
index 000000000..701e8c834
--- /dev/null
+++ b/tests/m_roottar/script
@@ -0,0 +1,57 @@
+# vim: filetype=sh
+
+test_description="create fs image from tarball"
+if ! test -x "$DEBUGFS_EXE"; then
+ echo "$test_name: $test_description: skipped (no debugfs)"
+ return 0
+fi
+if [ "$(grep -c 'define HAVE_ARCHIVE_H' ../lib/config.h)" -eq 0 ]; then
+ echo "$test_name: skipped (no libarchive)"
+ exit 0
+fi
+
+OUT="$test_name.log"
+EXP="$test_dir/expect"
+
+perl "$test_dir/mktar.pl" \
+ | $MKE2FS -q -F -o Linux -T ext4 -O metadata_csum,64bit -E lazy_itable_init=1 -b 1024 -d - "$TMPFILE" 16384 > "$OUT" 2>&1
+
+$DUMPE2FS "$TMPFILE" >> "$OUT" 2>&1
+cat > "$TMPFILE.cmd" << 'ENDL'
+stat /dev/
+stat /dev/console
+stat /dev/fd
+stat /dev/full
+stat /dev/null
+stat /dev/ptmx
+stat /dev/pts/
+stat /dev/random
+stat /dev/shm/
+stat /dev/stderr
+stat /dev/stdin
+stat /dev/stdout
+stat /dev/tty
+stat /dev/urandom
+stat /dev/zero
+ENDL
+$DEBUGFS -f "$TMPFILE.cmd" "$TMPFILE" 2>&1 | grep -E -v "(time|checksum):" >> "$OUT"
+
+$FSCK -f -n "$TMPFILE" >> "$OUT" 2>&1
+
+sed -f "$cmd_dir/filter.sed" -f "$test_dir/output.sed" -e "s;$TMPFILE;test.img;" < "$OUT" > "$OUT.tmp"
+mv "$OUT.tmp" "$OUT"
+
+# Do the verification
+cmp -s "$OUT" "$EXP"
+status=$?
+
+if [ "$status" = 0 ] ; then
+ echo "$test_name: $test_description: ok"
+ touch "$test_name.ok"
+else
+ echo "$test_name: $test_description: failed"
+ diff $DIFF_OPTS "$EXP" "$OUT" > "$test_name.failed"
+fi
+
+rm -rf "$TMPFILE.cmd"
+unset OUT EXP
diff --git a/tests/m_uninit/expect.1 b/tests/m_uninit/expect.1
index 3c2875527..2058de7a9 100644
--- a/tests/m_uninit/expect.1
+++ b/tests/m_uninit/expect.1
@@ -56,7 +56,7 @@ Group 0: (Blocks 1-8192) [ITABLE_ZEROED]
7406 free blocks, 2037 free inodes, 2 directories, 2037 unused inodes
Free blocks: 787-8192
Free inodes: 12-2048
-Group 1: (Blocks 8193-16384) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
+Group 1: (Blocks 8193-16384) [INODE_UNINIT, ITABLE_ZEROED]
Backup superblock at 8193, Group descriptors at 8194-8194
Reserved GDT blocks at 8195-8450
Block bitmap at 8451 (+258), Inode bitmap at 8452 (+259)
@@ -70,7 +70,7 @@ Group 2: (Blocks 16385-24576) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
7678 free blocks, 2048 free inodes, 0 directories, 2048 unused inodes
Free blocks: 16899-24576
Free inodes: 4097-6144
-Group 3: (Blocks 24577-32768) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
+Group 3: (Blocks 24577-32768) [INODE_UNINIT, ITABLE_ZEROED]
Backup superblock at 24577, Group descriptors at 24578-24578
Reserved GDT blocks at 24579-24834
Block bitmap at 24835 (+258), Inode bitmap at 24836 (+259)
@@ -84,7 +84,7 @@ Group 4: (Blocks 32769-40960) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
7678 free blocks, 2048 free inodes, 0 directories, 2048 unused inodes
Free blocks: 33283-40960
Free inodes: 8193-10240
-Group 5: (Blocks 40961-49152) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
+Group 5: (Blocks 40961-49152) [INODE_UNINIT, ITABLE_ZEROED]
Backup superblock at 40961, Group descriptors at 40962-40962
Reserved GDT blocks at 40963-41218
Block bitmap at 41219 (+258), Inode bitmap at 41220 (+259)
@@ -98,7 +98,7 @@ Group 6: (Blocks 49153-57344) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
7678 free blocks, 2048 free inodes, 0 directories, 2048 unused inodes
Free blocks: 49667-57344
Free inodes: 12289-14336
-Group 7: (Blocks 57345-65536) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
+Group 7: (Blocks 57345-65536) [INODE_UNINIT, ITABLE_ZEROED]
Backup superblock at 57345, Group descriptors at 57346-57346
Reserved GDT blocks at 57347-57602
Block bitmap at 57603 (+258), Inode bitmap at 57604 (+259)
@@ -112,7 +112,7 @@ Group 8: (Blocks 65537-73728) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
7678 free blocks, 2048 free inodes, 0 directories, 2048 unused inodes
Free blocks: 66051-73728
Free inodes: 16385-18432
-Group 9: (Blocks 73729-81920) [INODE_UNINIT, BLOCK_UNINIT, ITABLE_ZEROED]
+Group 9: (Blocks 73729-81920) [INODE_UNINIT, ITABLE_ZEROED]
Backup superblock at 73729, Group descriptors at 73730-73730
Reserved GDT blocks at 73731-73986
Block bitmap at 73987 (+258), Inode bitmap at 73988 (+259)
diff --git a/tests/progs/Makefile.in b/tests/progs/Makefile.in
index e1325c619..47d7adfa9 100644
--- a/tests/progs/Makefile.in
+++ b/tests/progs/Makefile.in
@@ -20,7 +20,8 @@ TEST_REL_OBJS= test_rel.o test_rel_cmds.o
TEST_ICOUNT_OBJS= test_icount.o test_icount_cmds.o
-SRCS= $(srcdir)/test_rel.c
+SRCS= $(srcdir)/test_icount.c \
+ $(srcdir)/test_rel.c
LIBS= $(LIBEXT2FS) $(LIBSS) $(LIBCOM_ERR) $(SYSLIBS)
DEPLIBS= $(LIBEXT2FS) $(DEPLIBSS) $(DEPLIBCOM_ERR)
diff --git a/tests/progs/test_icount.c b/tests/progs/test_icount.c
index 6ebb100d2..c1005c6f9 100644
--- a/tests/progs/test_icount.c
+++ b/tests/progs/test_icount.c
@@ -61,7 +61,7 @@ static int parse_inode(const char *request, const char *desc,
return 0;
}
-void do_create_icount(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_create_icount(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
errcode_t retval;
@@ -92,7 +92,7 @@ void do_create_icount(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
}
}
-void do_free_icount(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_free_icount(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
if (argc != 1) {
@@ -106,7 +106,7 @@ void do_free_icount(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
test_icount = 0;
}
-void do_fetch(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_fetch(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
errcode_t retval;
@@ -129,7 +129,7 @@ void do_fetch(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
printf("Count is %u\n", count);
}
-void do_increment(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_increment(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
errcode_t retval;
@@ -153,7 +153,7 @@ void do_increment(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
printf("Count is now %u\n", count);
}
-void do_decrement(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_decrement(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
errcode_t retval;
@@ -177,7 +177,7 @@ void do_decrement(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
printf("Count is now %u\n", count);
}
-void do_store(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_store(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
errcode_t retval;
@@ -206,7 +206,7 @@ void do_store(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
}
}
-void do_dump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_dump(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
errcode_t retval;
@@ -231,7 +231,7 @@ void do_dump(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
}
}
-void do_validate(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_validate(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
errcode_t retval;
@@ -250,7 +250,7 @@ void do_validate(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
printf("Icount structure successfully validated\n");
}
-void do_get_size(int argc, char **argv, int sci_idx EXT2FS_ATTR((unused)),
+void do_get_size(int argc, ss_argv_t argv, int sci_idx EXT2FS_ATTR((unused)),
void *infop EXT2FS_ATTR((unused)))
{
ext2_ino_t size;
diff --git a/tests/progs/test_icount.h b/tests/progs/test_icount.h
index 29d56abfd..b086547b5 100644
--- a/tests/progs/test_icount.h
+++ b/tests/progs/test_icount.h
@@ -1,10 +1,21 @@
-void do_create_icount(int argc, char **argv, int sci_idx, void *infop);
-void do_free_icount(int argc, char **argv, int sci_idx, void *infop);
-void do_fetch(int argc, char **argv, int sci_idx, void *infop);
-void do_increment(int argc, char **argv, int sci_idx, void *infop);
-void do_decrement(int argc, char **argv, int sci_idx, void *infop);
-void do_store(int argc, char **argv, int sci_idx, void *infop);
-void do_get_size(int argc, char **argv, int sci_idx, void *infop);
-void do_dump(int argc, char **argv, int sci_idx, void *infop);
-void do_validate(int argc, char **argv, int sci_idx, void *infop);
+/*
+ * test_icount.h
+ *
+ * Copyright (C) 1997 Theodore Ts'o.
+ *
+ * %Begin-Header%
+ * This file may be redistributed under the terms of the GNU Public
+ * License.
+ * %End-Header%
+ */
+
+void do_create_icount(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_free_icount(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_fetch(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_increment(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_decrement(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_store(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_get_size(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_dump(int argc, ss_argv_t argv, int sci_idx, void *infop);
+void do_validate(int argc, ss_argv_t argv, int sci_idx, void *infop);
diff --git a/tests/progs/test_rel.c b/tests/progs/test_rel.c
index 8f7280c78..6666b73ed 100644
--- a/tests/progs/test_rel.c
+++ b/tests/progs/test_rel.c
@@ -141,7 +141,7 @@ static void display_irel_entry(ext2_ino_t old,
/*
* These are the actual command table procedures
*/
-void do_brel_ma_create(int argc, char **argv)
+void do_brel_ma_create(int argc, ss_argv_t argv)
{
const char *usage = "Usage: %s name max_blocks\n";
errcode_t retval;
@@ -161,7 +161,7 @@ void do_brel_ma_create(int argc, char **argv)
return;
}
-void do_brel_free(int argc, char **argv)
+void do_brel_free(int argc, ss_argv_t argv)
{
if (check_brel(argv[0]))
return;
@@ -170,7 +170,7 @@ void do_brel_free(int argc, char **argv)
return;
}
-void do_brel_put(int argc, char **argv)
+void do_brel_put(int argc, ss_argv_t argv)
{
const char *usage = "usage: %s old_block new_block [owner] [offset]";
errcode_t retval;
@@ -211,7 +211,7 @@ void do_brel_put(int argc, char **argv)
return;
}
-void do_brel_get(int argc, char **argv)
+void do_brel_get(int argc, ss_argv_t argv)
{
const char *usage = "%s block";
errcode_t retval;
@@ -235,7 +235,7 @@ void do_brel_get(int argc, char **argv)
return;
}
-void do_brel_start_iter(int argc, char **argv)
+void do_brel_start_iter(int argc, ss_argv_t argv)
{
errcode_t retval;
@@ -250,7 +250,7 @@ void do_brel_start_iter(int argc, char **argv)
return;
}
-void do_brel_next(int argc, char **argv)
+void do_brel_next(int argc, ss_argv_t argv)
{
errcode_t retval;
struct ext2_block_relocate_entry ent;
@@ -272,7 +272,7 @@ void do_brel_next(int argc, char **argv)
return;
}
-void do_brel_dump(int argc, char **argv)
+void do_brel_dump(int argc, ss_argv_t argv)
{
errcode_t retval;
struct ext2_block_relocate_entry ent;
@@ -301,7 +301,7 @@ void do_brel_dump(int argc, char **argv)
return;
}
-void do_brel_move(int argc, char **argv)
+void do_brel_move(int argc, ss_argv_t argv)
{
const char *usage = "%s old_block new_block";
errcode_t retval;
@@ -326,7 +326,7 @@ void do_brel_move(int argc, char **argv)
return;
}
-void do_brel_delete(int argc, char **argv)
+void do_brel_delete(int argc, ss_argv_t argv)
{
const char *usage = "%s block";
errcode_t retval;
@@ -348,7 +348,7 @@ void do_brel_delete(int argc, char **argv)
}
}
-void do_irel_ma_create(int argc, char **argv)
+void do_irel_ma_create(int argc, ss_argv_t argv)
{
const char *usage = "Usage: %s name max_inode\n";
errcode_t retval;
@@ -368,7 +368,7 @@ void do_irel_ma_create(int argc, char **argv)
return;
}
-void do_irel_free(int argc, char **argv)
+void do_irel_free(int argc, ss_argv_t argv)
{
if (check_irel(argv[0]))
return;
@@ -378,7 +378,7 @@ void do_irel_free(int argc, char **argv)
return;
}
-void do_irel_put(int argc, char **argv)
+void do_irel_put(int argc, ss_argv_t argv)
{
const char *usage = "%s old new max_refs";
errcode_t retval;
@@ -414,7 +414,7 @@ void do_irel_put(int argc, char **argv)
return;
}
-void do_irel_get(int argc, char **argv)
+void do_irel_get(int argc, ss_argv_t argv)
{
const char *usage = "%s inode";
errcode_t retval;
@@ -440,7 +440,7 @@ void do_irel_get(int argc, char **argv)
return;
}
-void do_irel_get_by_orig(int argc, char **argv)
+void do_irel_get_by_orig(int argc, ss_argv_t argv)
{
const char *usage = "%s orig_inode";
errcode_t retval;
@@ -466,7 +466,7 @@ void do_irel_get_by_orig(int argc, char **argv)
return;
}
-void do_irel_start_iter(int argc, char **argv)
+void do_irel_start_iter(int argc, ss_argv_t argv)
{
errcode_t retval;
@@ -481,7 +481,7 @@ void do_irel_start_iter(int argc, char **argv)
return;
}
-void do_irel_next(int argc, char **argv)
+void do_irel_next(int argc, ss_argv_t argv)
{
errcode_t retval;
ext2_ino_t old;
@@ -503,7 +503,7 @@ void do_irel_next(int argc, char **argv)
return;
}
-void do_irel_dump(int argc, char **argv)
+void do_irel_dump(int argc, ss_argv_t argv)
{
errcode_t retval;
ext2_ino_t ino;
@@ -532,7 +532,7 @@ void do_irel_dump(int argc, char **argv)
return;
}
-void do_irel_add_ref(int argc, char **argv)
+void do_irel_add_ref(int argc, ss_argv_t argv)
{
const char *usage = "%s inode block offset";
errcode_t retval;
@@ -569,7 +569,7 @@ void do_irel_add_ref(int argc, char **argv)
return;
}
-void do_irel_start_iter_ref(int argc, char **argv)
+void do_irel_start_iter_ref(int argc, ss_argv_t argv)
{
const char *usage = "%s inode";
errcode_t retval;
@@ -593,7 +593,7 @@ void do_irel_start_iter_ref(int argc, char **argv)
return;
}
-void do_irel_next_ref(int argc, char **argv)
+void do_irel_next_ref(int argc, ss_argv_t argv)
{
struct ext2_inode_reference ref;
errcode_t retval;
@@ -610,7 +610,7 @@ void do_irel_next_ref(int argc, char **argv)
return;
}
-void do_irel_move(int argc, char **argv)
+void do_irel_move(int argc, ss_argv_t argv)
{
const char *usage = "%s old new";
errcode_t retval;
@@ -636,7 +636,7 @@ void do_irel_move(int argc, char **argv)
return;
}
-void do_irel_delete(int argc, char **argv)
+void do_irel_delete(int argc, ss_argv_t argv)
{
const char *usage = "%s inode";
errcode_t retval;
diff --git a/tests/progs/test_rel.h b/tests/progs/test_rel.h
index 47c4d0980..62267ba93 100644
--- a/tests/progs/test_rel.h
+++ b/tests/progs/test_rel.h
@@ -11,25 +11,25 @@
-void do_brel_ma_create(int argc, char **argv);
-void do_brel_free(int argc, char **argv);
-void do_brel_put(int argc, char **argv);
-void do_brel_get(int argc, char **argv);
-void do_brel_start_iter(int argc, char **argv);
-void do_brel_next(int argc, char **argv);
-void do_brel_dump(int argc, char **argv);
-void do_brel_move(int argc, char **argv);
-void do_brel_delete(int argc, char **argv);
-void do_irel_ma_create(int argc, char **argv);
-void do_irel_free(int argc, char **argv);
-void do_irel_put(int argc, char **argv);
-void do_irel_get(int argc, char **argv);
-void do_irel_get_by_orig(int argc, char **argv);
-void do_irel_start_iter(int argc, char **argv);
-void do_irel_next(int argc, char **argv);
-void do_irel_dump(int argc, char **argv);
-void do_irel_add_ref(int argc, char **argv);
-void do_irel_start_iter_ref(int argc, char **argv);
-void do_irel_next_ref(int argc, char **argv);
-void do_irel_move(int argc, char **argv);
-void do_irel_delete(int argc, char **argv);
+void do_brel_ma_create(int argc, ss_argv_t argv);
+void do_brel_free(int argc, ss_argv_t argv);
+void do_brel_put(int argc, ss_argv_t argv);
+void do_brel_get(int argc, ss_argv_t argv);
+void do_brel_start_iter(int argc, ss_argv_t argv);
+void do_brel_next(int argc, ss_argv_t argv);
+void do_brel_dump(int argc, ss_argv_t argv);
+void do_brel_move(int argc, ss_argv_t argv);
+void do_brel_delete(int argc, ss_argv_t argv);
+void do_irel_ma_create(int argc, ss_argv_t argv);
+void do_irel_free(int argc, ss_argv_t argv);
+void do_irel_put(int argc, ss_argv_t argv);
+void do_irel_get(int argc, ss_argv_t argv);
+void do_irel_get_by_orig(int argc, ss_argv_t argv);
+void do_irel_start_iter(int argc, ss_argv_t argv);
+void do_irel_next(int argc, ss_argv_t argv);
+void do_irel_dump(int argc, ss_argv_t argv);
+void do_irel_add_ref(int argc, ss_argv_t argv);
+void do_irel_start_iter_ref(int argc, ss_argv_t argv);
+void do_irel_next_ref(int argc, ss_argv_t argv);
+void do_irel_move(int argc, ss_argv_t argv);
+void do_irel_delete(int argc, ss_argv_t argv);
diff --git a/tests/r_move_itable_realloc/expect b/tests/r_move_itable_realloc/expect
index 67f2fe4a8..8ce56dbc0 100644
--- a/tests/r_move_itable_realloc/expect
+++ b/tests/r_move_itable_realloc/expect
@@ -1,6 +1,6 @@
mke2fs -q -F -o Linux -b 1024 -i 1024 -O ^resize_inode -t ext4 test.img 1024000
resize2fs -p test.img 100000000
-Resizing the filesystem on test.img to 100000000 (1k) blocks.
+Resizing the filesystem on test.img to 99999745 (1k) blocks.
Begin pass 2 (max = 2061)
Relocating blocks ----------------------------------------XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 125)
diff --git a/tests/r_move_itable_realloc/script b/tests/r_move_itable_realloc/script
index 20c26dbd9..49f8d58a2 100644
--- a/tests/r_move_itable_realloc/script
+++ b/tests/r_move_itable_realloc/script
@@ -1,5 +1,5 @@
os=$(uname -s)
-if [ "$os" = "Darwin" -o "$os" = "GNU" -o "FreeBSD" ]; then
+if [ "$os" = "Darwin" -o "$os" = "GNU" -o "$os" = "FreeBSD" ]; then
# creates a 96GB filesystem
echo "$test_name: $test_description: skipped: skipped for $os"
return 0
diff --git a/tests/u_direct_io/expect b/tests/u_direct_io/expect
index 830cbd752..b1511ef10 100644
--- a/tests/u_direct_io/expect
+++ b/tests/u_direct_io/expect
@@ -1,4 +1,4 @@
-mke2fs -F -o Linux -t ext4 -O ^metadata_csum,^uninit_bg -D $LOOP
+mke2fs -F -b 4096 -o Linux -t ext4 -O ^metadata_csum,^uninit_bg -D $LOOP
Creating filesystem with 32768 4k blocks and 32768 inodes
Allocating group tables: done
diff --git a/tests/u_direct_io/script b/tests/u_direct_io/script
index b4f07752c..2f80e6402 100644
--- a/tests/u_direct_io/script
+++ b/tests/u_direct_io/script
@@ -8,14 +8,14 @@ elif test ! -x $DEBUGFS_EXE; then
echo "$test_name: $DESCRIPTION: skipped (no debugfs)"
else
dd if=/dev/zero of=$TMPFILE bs=1M count=128 > /dev/null 2>&1
- LOOP=$(losetup --show --sector-size 4096 -f $TMPFILE)
+ LOOP=$(losetup --show -f $TMPFILE 2>&1)
if [ ! -b "$LOOP" ]; then
echo "$test_name: $DESCRIPTION: skipped (no loop devices)"
rm -f $TMPFILE
exit 0
fi
- echo mke2fs -F -o Linux -t ext4 -O ^metadata_csum,^uninit_bg -D \$LOOP > $OUT
- $MKE2FS -F -o Linux -t ext4 -O ^metadata_csum,^uninit_bg -D $LOOP 2>&1 | \
+ echo mke2fs -F -b 4096 -o Linux -t ext4 -O ^metadata_csum,^uninit_bg -D \$LOOP > $OUT
+ $MKE2FS -F -b 4096 -o Linux -t ext4 -O ^metadata_csum,^uninit_bg -D $LOOP 2>&1 | \
sed -f $cmd_dir/filter.sed >> $OUT
echo debugfs -D -R stats \$LOOP >> $OUT
diff --git a/util/gen-tarball.in b/util/gen-tarball.in
index 997bd935f..650d3b593 100644
--- a/util/gen-tarball.in
+++ b/util/gen-tarball.in
@@ -5,7 +5,8 @@
srcdir=@srcdir@
top_srcdir=@top_srcdir@
top_dir=`cd $top_srcdir; pwd`
-base_ver=`echo @E2FSPROGS_VERSION@ | sed -e 's/-WIP//' -e 's/pre-//' -e 's/-PLUS//'`
+base_ver=`echo @E2FSPROGS_PKGVER@`
+base_rel=`echo @E2FSPROGS_PKGREL@`
base_e2fsprogs=`basename $top_dir`
exclude=/tmp/exclude$$
GZIP=gzip
@@ -16,12 +17,12 @@ GZIP=gzip
# using a non-standard directory name for WIP releases. dpkg-source
# complains, but life goes on.
#
-deb_pkgver=`echo @E2FSPROGS_PKGVER@ | sed -e 's/~/-/g'`
+deb_pkgver="$base_ver${base_rel:+-$base_rel}"
case $1 in
debian|ubuntu)
SRCROOT="e2fsprogs-$deb_pkgver"
- tarout="e2fsprogs_@E2FSPROGS_PKGVER@.orig.tar.gz"
+ tarout="e2fsprogs_$deb_pkgver.orig.tar.gz"
;;
all|*)
SRCROOT="e2fsprogs-$base_ver"
diff --git a/util/get-ver b/util/get-ver
index ade7d22cf..7d03e56a9 100755
--- a/util/get-ver
+++ b/util/get-ver
@@ -1,4 +1,4 @@
#!/bin/sh
-ver=$(git describe --always --dirty); echo "e2fsprogs $ver ($(git log -1 --pretty=%cD))"
+ver=$(git describe --always --dirty --match 'v*'); echo "e2fsprogs $ver ($(git log -1 --pretty=%cD))"
diff --git a/util/subst.conf.in b/util/subst.conf.in
index 0da45541e..5af5e356d 100644
--- a/util/subst.conf.in
+++ b/util/subst.conf.in
@@ -23,4 +23,4 @@ root_sbindir @root_sbindir@
root_bindir @root_bindir@
libdir @libdir@
$exec_prefix @exec_prefix@
-pkglibdir @libdir@/e2fsprogs
+pkglibexecdir @libexecdir@/e2fsprogs
diff --git a/version.h b/version.h
index db245cee4..30198e39c 100644
--- a/version.h
+++ b/version.h
@@ -9,5 +9,5 @@
* License v2.
*/
-#define E2FSPROGS_VERSION "1.47.0"
-#define E2FSPROGS_DATE "5-Feb-2023"
+#define E2FSPROGS_VERSION "1.47.1-rc1"
+#define E2FSPROGS_DATE "21-Apr-2024"