diff between e2fsprogs-1.39 and mercurial snapshot from sep 19, 2006 Index: e2fsprogs-1.39/.hg/hgrc =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ e2fsprogs-1.39/.hg/hgrc 2006-09-18 17:42:57.000000000 +0200 @@ -0,0 +1,2 @@ +[paths] +default = http://thunk.org/hg/e2fsprogs Index: e2fsprogs-1.39/.hgignore =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ e2fsprogs-1.39/.hgignore 2006-09-18 17:42:57.000000000 +0200 @@ -0,0 +1,7 @@ +^autom4te.cache +^build +^FILES +^core +~$ +^.pc +^patches Index: e2fsprogs-1.39/ChangeLog =================================================================== --- e2fsprogs-1.39.orig/ChangeLog 2006-05-14 23:15:12.000000000 +0200 +++ e2fsprogs-1.39/ChangeLog 2006-09-18 17:42:57.000000000 +0200 @@ -1,3 +1,16 @@ +2006-09-12 Theodore Tso + + * e2fsprogs.spec.in (Group): Use License tag instead of Copyright, + and specify GPLv2 + +2006-09-11 Theodore Tso + + * e2fsprogs.spec.in: Remove duplicate entry in the .spec file + +2006-08-06 Theodore Tso + + * configure.in: Add test to see if diff supports the -u option + 2006-04-09 Theodore Ts'o * config/config.guess, config/config.sub: Update to newer versions Index: e2fsprogs-1.39/MCONFIG.in =================================================================== --- e2fsprogs-1.39.orig/MCONFIG.in 2006-03-23 02:19:19.000000000 +0100 +++ e2fsprogs-1.39/MCONFIG.in 2006-09-18 17:42:57.000000000 +0200 @@ -33,7 +33,7 @@ datadir = @datadir@ CC = @CC@ BUILD_CC = @BUILD_CC@ -DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ +DEFS = -DLOCALEDIR=\"$(localedir)\" -DROOT_SYSCONFDIR=\"$(root_sysconfdir)\" @DEFS@ CFLAGS = @CFLAGS@ CPPFLAGS = -I$(top_builddir)/lib -I$(top_srcdir)/lib @CPPFLAGS@ INTL_FLAGS = @INTL_FLAGS@ Index: e2fsprogs-1.39/Makefile.in =================================================================== --- e2fsprogs-1.39.orig/Makefile.in 2006-04-09 04:16:26.000000000 +0200 +++ e2fsprogs-1.39/Makefile.in 2006-09-18 17:42:57.000000000 +0200 @@ -29,6 +29,9 @@ subs: progs: subs all-progs-recursive libs: subs all-libs-recursive +rpm: + sh contrib/build-rpm + docs: -@test -d doc && cd doc && $(MAKE) libext2fs.info Index: e2fsprogs-1.39/README.subset =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ e2fsprogs-1.39/README.subset 2006-09-18 17:42:57.000000000 +0200 @@ -0,0 +1,15 @@ +This distribution contains a subset of the e2fsprogs package; it +contains the base libraries (ss, et, uuid, blkid) which may be used by +other non-ext2-releated applications. + +This may be useful for non-Linux operating systems that need these +libraries for GNOME, but who do not need the ext2/ext3 filesystem +utilities. + +The full e2fsprogs distributions can be found at the e2fsprogs web +page, which is: + + http://e2fsprogs.sourceforge.net + +In case of bugs in these libraries, please contact Ted Ts'o at +tytso@thunk.org or tytso@alum.mit.edu. Index: e2fsprogs-1.39/TODO =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ e2fsprogs-1.39/TODO 2006-09-18 17:42:57.000000000 +0200 @@ -0,0 +1,277 @@ +Need to process the bad block inode *before* doing the inode scan. + +Also check to see if the first block of the inode table is not on the +bad block scan, and fix that. We need to check for an inaccurate +blocks, and fix them before we start doing anything else with the +filesystem! + +--------------------------------------------------- +User request: + +BTW: Could you please add some sort of deleted and possibly corrupted file + and inode list to e2fsck report. There should be filenames deleted + from directory inodes, files with duplicate blocks e.t.c. + It's pretty annoying to filter this information from e2fsck output + by hand :- + +------------------------------------------ + +Add a "answer Yes always to this class of question" response. + +---------------------------------- + +ext2fs_flush() should return a different error message for primary +versus backup superblock flushing, so that mke2fs can print an +appropriate error message. + +--------------------------------- +Date: Mon, 08 Mar 1999 21:46:14 +0100 +From: Sergio Polini + + +I'm reading the sorce code of e2fsck 1.14. +In pass2.c, lines 352-357, I read: + +if ((dirent->name_len & 0xFF) > EXT2_NAME_LEN) { + if (fix_problem(ctx, PR_2_FILENAME_LONG, &cd->pctx)) { + dirent->name_len = EXT2_NAME_LEN; + dir_modified++; + } +} + +I think that I'll never see any messages about too long filenames, +because "whatever & 0xFF" can never be "> 0xFF". +Am I wrong? +-------------------------------------- + +Add chmod command to debugfs. + +------------------------------------------ + +Date: Tue, 18 Jan 2000 17:54:53 -0800 (PST) +From: Alan Blanchard +To: tytso@MIT.EDU +Subject: DEBUGFS - thanks and a feature idea +Content-Type: TEXT/PLAIN; charset=US-ASCII + +Theodore: + +First, let me thank you for writing debugfs. Recently, my Linux box +(RH 6.0, 400 MHz PIII, on a DSL line) was hacked into. The intruder did +an "rm -Rf" on a 34 GB drive with about 5GB of data on it. I was able to +restore essentially the entire thing with debugfs and a bit of C code and Perl. +Actually, I could have done the entire thing with debugfs and Perl, but I +thought it would be too slow. + +During this exercise, I noticed that one small feature was lacking that would +have made my job a bit easier. The length of a deleted directory is +reported as 0, hence debugfs won't dump the contents of the directory to a +file using the "dump" command. The only thing that saved me was that the +list of disk blocks is not zeroed out. I was able to dump the contents of the +directories by using debugfs to get the relevant block numbers, then +using dd to get the actual data. + +If debugfs had a feature where it ignored the size of a directory reported by +the inode and instead just dumped all the blocks, it would have facilited +things a bit. This seems like a very easy feature to add. + +Again, thanks for writing debugfs (and all the other Linux stuff you've written!). + +Cheers, +Alan Blanchard +alan@abraxas.to + + +------------------------------------------------------------------- + +Date: Fri, 21 Jan 2000 14:07:12 -0800 +From: "H. Peter Anvin" +Subject: mkfs -cc and fsck -c + +b) An option to mkfs to zero the partition. Yes, it can be done with +dd, but it would be a nicer way of doing it. + +------------------------------------------------------------------ + +Add support for in ext2fs_block_iterate() for a returning the +compressed flag blocks to block_iterate. Change default to not return +EXT2_COMPRESSED_BLKADDR. Change e2fsck to pass this flag in. + +(The old compression patches did this by default all the time, which +is bad, since it meant e2fsck never saw the EXT2_COMPRESSED_BLKADDR +flagword. + +------------------------------------------------------------ + +E2fsck should offer to clear all the blocks in an indirect block, not +the entire inode, so there's better recovery for when an indirect +block gets trashed. + + +------------------------------------------------------------- + +From: Yann Dirson - LOGATIQUE +Date: Thu, 2 Mar 2000 13:52:13 +0100 (MET) + +During my experiments on the broken system, I noticed the following in +the badblocks program (which I'm aware is not designed for IDE drives) +- I'd probably have already fixed them if my home system was up :( + +* the syntax summary documents 2nd arg as blocks_count, which should +probably read something like end_count. + +* testing past end of device is not detected, and lists those blocks +as bad, whereas they simply do not exist. + + +I think I'll probably add a "max count" option to findsuper(8), so +that I do not have to wait for the whole disk to be scanned when the +system had to be launched with "init=/bin/sh", in which case Ctrl-[CZ] +and friends appear to be absolutely ignored. + + +Somewhat unrelated, I just noticed the +http://web.mit.edu/tytso/www/linux/ext2.html could be updated: + +- could mention SGI xfs (http://oss.sgi.com/projects/xfs/ - they just + release 0.03 snapshot) + +---------------------------------------------------------------- + +Return-Path: +Date: Thu, 10 Feb 2000 13:20:14 -0500 +From: "Theodore Y. Ts'o" +To: R.E.Wolff@BitWizard.nl +In-Reply-To: Rogier Wolff's message of Thu, 10 Feb 2000 08:46:30 +0100 (MET), + <200002100746.IAA24573@cave.bitwizard.nl> +Subject: Re: e2fsck request for enhancement. +Phone: (781) 391-3464 + + Date: Thu, 10 Feb 2000 08:46:30 +0100 (MET) + From: R.E.Wolff@BitWizard.nl (Rogier Wolff) + + Lately, while trying to recover a broken disk, my system froze (twice, + until I tried something else) while copying the disk. + + So I had a file of about 50Mb that was growing frantically at the + moment of the crash. + + e2fsck, then finds an indirect block that is completely bogus. It + starts by asking me if it's ok to clear a few of the referenced + blocks. I say yes. Then it comes to the conclusion: + + too many invalid blocks. Clear inode? + + and then I get the option to delete the whole file. Not to truncate + the file to a "working" size. + + + I'd MUCH rather have e2fsck say something like: + + inode 1234 references an invalid block 134345454. Hmm. + inode 1234 references 567 out of 50176 invalid blocks, + all near the end. Truncate file to 49152 blocks? + + Here you can see that of the 1024 blocks near the end of the file, + only 567 were detected as invalid. However now 48Mb of the file will + be recovered, instead of thrown away. + +That's a good point. Actually, the right thing is for e2fsck to offer +to clear all of the bad blocks in a particular indirect block. I don't +know how hard it would be to do that, but I'll put it on my e2fsprogs +TODO list. + + - Ted + +--------------------------------------------------------------- +From e2fsprogs Debian TODO file as of 1.10-13. + +* Maybe make -dbg packages. Look at how others do it. + +--------------------------------------------------------------- + +Add --lba option to debian icheck command, and have ways of making it +easier to translate LBA to filesystem block numbers. + +------------------------------------------------------- + + + +List of projects for e2fsprogs: + + +1) Make debugfs's "ncheck " command list all of the pathnames +to an inode, not just only the first link to the inode which is found. +(A good "intro to libext2fs programming interfaces project) + + Difficulty: Low Priority: Low + +2) Use a code coverage tool such as Rational's PureCoverage to see +what kind of code coverage we have for e2fsck, and try to add test +cases to increase the code coverage for e2fsck. + + Difficulty: Medium Priorty: Low + +3) Use a code coverage tool such as Rational's PureCoverage to see +what kind of code coverage we have for resize2fs, and try to add test +cases to increase the code coverage for resize2fs. + + Difficulty: Medium Priorty: Medium + +4) Create a new I/O manager (i.e., test_io.c, unix_io.c, et.al.) which +layers on top of an existing I/O manager which provides copy-on-write +functionality. This COW I/O manager takes will take two open I/O +managers, call them "base" and "changed". The "base" I/O manager is +opened read/only, so any changes are written instead to the "changed" +I/O manager, in a compact, non-sparse format containing the intended +modification to the "base" filesystem. + +This will allow resize2fs to figure out what changes need to made to +extend a filesystem, or expand the size of inodes in the inode table, +and the changes can be pushed the filesystem in one fell swoop. (If +the system crashes; the program which runs the "changed" file can be +re-run, much like a journal replay. My assumption is that the COW +file will contain the filesystem UUID in a the COW superblock, and the +COW file will be stored in some place such as /var/state/e2fsprogs, +with an init.d file to automate the replay so we can recover cleanly +from a crash during the resize2fs process.) + + Difficulty: Medium Priority: Medium + +5) Create a new I/O manager (i.e., test_io.c, unix_io.c, et.al.) which +layers on top of an existing I/O manager which provides an "undo" +functionality. This undo I/O manager takes will take two open I/O +managers, call them "base" and "undo". The "base" I/O manager is be +opened read/write, and when any writes are sent to the I/O manager, +the I/O manager will check the "undo" I/O manager, using a file format +identical to the one found in (5) above. + +This is useful for allowing e2fsck to create an "undo" file, which +would make things like "e2fsck -y" much safer. + + Difficulty: Low (once 5 is done) Priority: Low + +6) Modify resize2fs so that it can relocate and reorganize the +filesystem in the following ways: (1) increase the inode size, so that +an existing filesystem can use the EA-in-inode kernel patch, (2) +reserve blocks in the resize inode to allow for on-line resizing. Use +the COW I/O manager described in (5) in order to provide robustness in +case of a crash during the resize/reorganization operation. + + Difficulty: High Priority: Medium + +7) Review the EA-in-inode patches to e2fsck for correctness/code +cleanliness. (I will probably have to do this myself -- Ted) + + Difficulty: High Priorty: Medium + +8) Add support for extent maps to e2fsprogs. I need to review the +extent maps first/in parallel. + + Difficulty: High Priority: Medium + +---------------------------------- + +Need to deal with the case where the resize inode overlaps with the +bad blocks inode. + Index: e2fsprogs-1.39/configure =================================================================== --- e2fsprogs-1.39.orig/configure 2006-04-09 03:37:51.000000000 +0200 +++ e2fsprogs-1.39/configure 2006-09-18 17:42:57.000000000 +0200 @@ -309,7 +309,7 @@ ac_includes_default="\ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS E2FSPROGS_YEAR E2FSPROGS_MONTH E2FSPROGS_DAY E2FSPROGS_VERSION build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT LD CPP EGREP LINUX_INCLUDE MAINTAINER_CMT HTREE_CMT ELF_CMT BSDLIB_CMT PROFILE_CMT CHECKER_CMT LIB_EXT STATIC_LIB_EXT PROFILED_LIB_EXT SWAPFS_CMT DEBUGFS_CMT IMAGER_CMT RESIZER_CMT E2FSCK_TYPE FSCK_PROG FSCK_MAN E2INITRD_PROG E2INITRD_MAN DEVMAPPER_REQ DEVMAPPER_PC_LIBS DEVMAPPER_LIBS STATIC_DEVMAPPER_LIBS GETTEXT_PACKAGE PACKAGE VERSION SET_MAKE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE RANLIB ac_ct_RANLIB ALLOCA GLIBC21 HAVE_POSIX_PRINTF HAVE_ASPRINTF HAVE_SNPRINTF HAVE_WPRINTF LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB BINARY_TYPE LN LN_S MV CP RM CHMOD AWK SED PERL LDCONFIG AR ac_ct_AR STRIP ac_ct_STRIP BUILD_CC SIZEOF_SHORT SIZEOF_INT SIZEOF_LONG SIZEOF_LONG_LONG SOCKET_LIB DLOPEN_LIB LINUX_CMT CYGWIN_CMT UNIX_CMT root_prefix root_bindir root_sbindir root_libdir root_sysconfdir LDFLAG_STATIC SS_DIR ET_DIR DO_TEST_SUITE INTL_FLAGS BUILD_CFLAGS BUILD_LDFLAGS LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS E2FSPROGS_YEAR E2FSPROGS_MONTH E2FSPROGS_DAY E2FSPROGS_VERSION build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT LD CPP EGREP LINUX_INCLUDE MAINTAINER_CMT HTREE_CMT ELF_CMT BSDLIB_CMT PROFILE_CMT CHECKER_CMT LIB_EXT STATIC_LIB_EXT PROFILED_LIB_EXT SWAPFS_CMT DEBUGFS_CMT IMAGER_CMT RESIZER_CMT E2FSCK_TYPE FSCK_PROG FSCK_MAN E2INITRD_PROG E2INITRD_MAN DEVMAPPER_REQ DEVMAPPER_PC_LIBS DEVMAPPER_LIBS STATIC_DEVMAPPER_LIBS GETTEXT_PACKAGE PACKAGE VERSION SET_MAKE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE RANLIB ac_ct_RANLIB ALLOCA GLIBC21 HAVE_POSIX_PRINTF HAVE_ASPRINTF HAVE_SNPRINTF HAVE_WPRINTF LIBICONV LTLIBICONV INTLBISON BUILD_INCLUDED_LIBINTL USE_INCLUDED_LIBINTL CATOBJEXT DATADIRNAME INSTOBJEXT GENCAT INTLOBJS INTL_LIBTOOL_SUFFIX_PREFIX INTLLIBS LIBINTL LTLIBINTL POSUB BINARY_TYPE LN LN_S MV CP RM CHMOD AWK SED PERL LDCONFIG AR ac_ct_AR STRIP ac_ct_STRIP BUILD_CC SIZEOF_SHORT SIZEOF_INT SIZEOF_LONG SIZEOF_LONG_LONG SOCKET_LIB DLOPEN_LIB UNI_DIFF_OPTS LINUX_CMT CYGWIN_CMT UNIX_CMT root_prefix root_bindir root_sbindir root_libdir root_sysconfdir LDFLAG_STATIC SS_DIR ET_DIR DO_TEST_SUITE INTL_FLAGS BUILD_CFLAGS BUILD_LDFLAGS LIBOBJS LTLIBOBJS' ac_subst_files='MCONFIG MAKEFILE_ELF MAKEFILE_BSDLIB MAKEFILE_PROFILE MAKEFILE_CHECKER MAKEFILE_LIBRARY ASM_TYPES_HEADER' # Initialize some variables set by options. @@ -14128,6 +14128,16 @@ if test $ac_cv_have_optreset = yes; then _ACEOF fi +echo "$as_me:$LINENO: checking for unified diff option" >&5 +echo $ECHO_N "checking for unified diff option... $ECHO_C" >&6 +if diff -u $0 $0 >& /dev/null ; then + UNI_DIFF_OPTS=-u +else + UNI_DIFF_OPTS=-c +fi +echo "$as_me:$LINENO: result: $UNI_DIFF_OPTS" >&5 +echo "${ECHO_T}$UNI_DIFF_OPTS" >&6 + case "$host_os" in linux*) cat >>confdefs.h <<\_ACEOF @@ -15067,6 +15077,7 @@ s,@SIZEOF_LONG@,$SIZEOF_LONG,;t t s,@SIZEOF_LONG_LONG@,$SIZEOF_LONG_LONG,;t t s,@SOCKET_LIB@,$SOCKET_LIB,;t t s,@DLOPEN_LIB@,$DLOPEN_LIB,;t t +s,@UNI_DIFF_OPTS@,$UNI_DIFF_OPTS,;t t s,@LINUX_CMT@,$LINUX_CMT,;t t s,@CYGWIN_CMT@,$CYGWIN_CMT,;t t s,@UNIX_CMT@,$UNIX_CMT,;t t Index: e2fsprogs-1.39/configure.in =================================================================== --- e2fsprogs-1.39.orig/configure.in 2006-04-09 03:36:21.000000000 +0200 +++ e2fsprogs-1.39/configure.in 2006-09-18 17:42:57.000000000 +0200 @@ -687,6 +687,17 @@ if test $ac_cv_have_optreset = yes; then AC_DEFINE(HAVE_OPTRESET) fi dnl +dnl Check for unified diff +dnl +AC_MSG_CHECKING(for unified diff option) +if diff -u $0 $0 >& /dev/null ; then + UNI_DIFF_OPTS=-u +else + UNI_DIFF_OPTS=-c +fi +AC_MSG_RESULT($UNI_DIFF_OPTS) +AC_SUBST(UNI_DIFF_OPTS) +dnl dnl We use the EXT2 ioctls only under Linux dnl case "$host_os" in Index: e2fsprogs-1.39/contrib/build-rpm =================================================================== --- e2fsprogs-1.39.orig/contrib/build-rpm 2005-09-06 11:40:13.000000000 +0200 +++ e2fsprogs-1.39/contrib/build-rpm 2006-09-18 17:42:57.000000000 +0200 @@ -21,7 +21,8 @@ cp -sR `pwd`/$currdir $tmpdir/$builddir # Remove any build files from the temporary tarball directory [ -f $tmpdir/$builddir/Makefile ] && make -C $tmpdir/$builddir distclean -(cd $tmpdir && tar czfh ${builddir}.tar.gz $builddir) +EXCLUDE="--exclude .hg*" +(cd $tmpdir && tar czfh ${builddir}.tar.gz $EXCLUDE $builddir) [ "`rpmbuild --version 2> /dev/null`" ] && RPM=rpmbuild || RPM=rpm $RPM --define "_sourcedir `pwd`/$tmpdir" -ba $currdir/e2fsprogs.spec || exit $? Index: e2fsprogs-1.39/debugfs/ChangeLog =================================================================== --- e2fsprogs-1.39.orig/debugfs/ChangeLog 2006-05-29 17:00:16.000000000 +0200 +++ e2fsprogs-1.39/debugfs/ChangeLog 2006-09-18 17:42:57.000000000 +0200 @@ -1,3 +1,13 @@ +2006-08-30 Eric Sandeen + + * htree.c (htree_dump_int_node): Fix printf formats. + +2006-08-29 Theodore Tso + + * lsdel.c (do_lsdel): Fix core-dumping bug. Don't depend on + current_fs being non-NULL until after the call to + common_args_process(). (Addresses Debian Bug: #378335) + 2006-05-29 Theodore Tso * util.c (reset_getopt): In order to support ancient Linux header Index: e2fsprogs-1.39/debugfs/debugfs.c =================================================================== --- e2fsprogs-1.39.orig/debugfs/debugfs.c 2006-05-08 17:26:14.000000000 +0200 +++ e2fsprogs-1.39/debugfs/debugfs.c 2006-09-19 17:05:57.000000000 +0200 @@ -443,9 +443,9 @@ static void dump_xattr_string(FILE *out, for (i = 0; i < len; i++) if (printable) - fprintf(out, "%c", str[i]); + fprintf(out, "%c", (unsigned char)str[i]); else - fprintf(out, "%02x ", str[i]); + fprintf(out, "%02x ", (unsigned char)str[i]); } static void internal_dump_inode_extra(FILE *out, const char *prefix, Index: e2fsprogs-1.39/debugfs/htree.c =================================================================== --- e2fsprogs-1.39.orig/debugfs/htree.c 2006-04-28 01:28:22.000000000 +0200 +++ e2fsprogs-1.39/debugfs/htree.c 2006-09-19 17:02:36.000000000 +0200 @@ -114,7 +114,7 @@ static void htree_dump_int_node(ext2_fil for (i=0; i < limit.count; i++) { hash = i ? ext2fs_le32_to_cpu(ent[i].hash) : 0; - fprintf(pager, "Entry #%d: Hash 0x%08x%s, block %d\n", i, + fprintf(pager, "Entry #%d: Hash 0x%08x%s, block %u\n", i, hash, (hash & 1) ? " (**)" : "", ext2fs_le32_to_cpu(ent[i].block)); } Index: e2fsprogs-1.39/debugfs/lsdel.c =================================================================== --- e2fsprogs-1.39.orig/debugfs/lsdel.c 2005-09-25 03:56:38.000000000 +0200 +++ e2fsprogs-1.39/debugfs/lsdel.c 2006-09-19 17:02:36.000000000 +0200 @@ -81,12 +81,13 @@ void do_lsdel(int argc, char **argv) int i; long secs = 0; char *tmp; - time_t now = current_fs->now ? current_fs->now : time(0); + time_t now; FILE *out; if (common_args_process(argc, argv, 1, 2, "ls_deleted_inodes", "[secs]", 0)) return; + if (argc > 1) { secs = strtol(argv[1],&tmp,0); if (*tmp) { @@ -95,6 +96,7 @@ void do_lsdel(int argc, char **argv) } } + now = current_fs->now ? current_fs->now : time(0); max_delarray = 100; num_delarray = 0; delarray = malloc(max_delarray * sizeof(struct deleted_info)); Index: e2fsprogs-1.39/e2fsck/ChangeLog =================================================================== --- e2fsprogs-1.39.orig/e2fsck/ChangeLog 2006-05-29 17:02:15.000000000 +0200 +++ e2fsprogs-1.39/e2fsck/ChangeLog 2006-09-18 17:42:57.000000000 +0200 @@ -1,3 +1,47 @@ +2006-08-30 Eric Sandeen + + * pass1.c (handle_bad_fs_blocks): use blk_t, not int for first_block. + +2006-08-30 Eric Sandeen + + * unix.c (show_stats): use ext2_ino_t for inode containers. + +2006-08-30 Eric Sandeen + + * pass1.c (new_table_block, handle_fs_bad_blocks): + * super.c (check_super_block): + Use new inlines to calculate group first & last blocks. + +2006-08-30 Eric Sandeen + + * e2fsck.h (e2fsck): Use unsigned types for filesystem counters. + * emptydir.c (add_empty_dirblock): + * iscan.c (main): + * unix.c (show_stats, check_if_skip): Fix printf formats. + +2006-08-30 Eric Sandeen + + * pass1.c (handle_fs_bad_blocks): Remove unused variables. + +2006-08-30 Eric Sandeen + + * pass1b.c (check_if_fs_block): Change block group loop to use + a common pattern of first_block/last_block, etc. + + * super.c (check_super_block): Avoid overflows when iterating over + group descriptors on very large filesystems + +2006-08-30 Theodore Tso + + * pass5.c (check_inode_bitmaps, check_inode_end, check_block_end): + * pass4.c (e2fsck_pass4): Fix potential overflow problems when the + number of blocks is close to 2**31. + +2006-08-29 Theodore Tso + + * super.c (release_inode_blocks): Fix silly spelling error. + (Addresses SourceForge Bug: #1531372) + 2006-05-29 Theodore Tso * pass1b.c: Add missing semicolon when HAVE_INTPTR_T is not defined Index: e2fsprogs-1.39/e2fsck/Makefile.pq =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ e2fsprogs-1.39/e2fsck/Makefile.pq 2006-09-18 17:42:57.000000000 +0200 @@ -0,0 +1,9 @@ +TOPSRC=.. +LIBNAME=E2FSCK.LIB +OBJFILE=E2FSCK.LST + +OBJS= e2fsck.obj super.obj pass1.obj pass2.obj pass3.obj \ + pass4.obj pass5.obj dirinfo.obj + +!include $(TOPSRC)\powerquest\MCONFIG + Index: e2fsprogs-1.39/e2fsck/e2fsck.h =================================================================== --- e2fsprogs-1.39.orig/e2fsck/e2fsck.h 2006-03-19 03:33:55.000000000 +0100 +++ e2fsprogs-1.39/e2fsck/e2fsck.h 2006-09-19 17:05:58.000000000 +0200 @@ -6,6 +6,9 @@ * */ +#ifndef _E2FSCK_H +#define _E2FSCK_H + #include #include #ifdef HAVE_UNISTD_H @@ -306,24 +309,24 @@ struct e2fsck_struct { char start_meta[2], stop_meta[2]; /* File counts */ - int fs_directory_count; - int fs_regular_count; - int fs_blockdev_count; - int fs_chardev_count; - int fs_links_count; - int fs_symlinks_count; - int fs_fast_symlinks_count; - int fs_fifo_count; - int fs_total_count; - int fs_badblocks_count; - int fs_sockets_count; - int fs_ind_count; - int fs_dind_count; - int fs_tind_count; - int fs_fragmented; - int large_files; - int fs_ext_attr_inodes; - int fs_ext_attr_blocks; + __u32 fs_directory_count; + __u32 fs_regular_count; + __u32 fs_blockdev_count; + __u32 fs_chardev_count; + __u32 fs_links_count; + __u32 fs_symlinks_count; + __u32 fs_fast_symlinks_count; + __u32 fs_fifo_count; + __u32 fs_total_count; + __u32 fs_badblocks_count; + __u32 fs_sockets_count; + __u32 fs_ind_count; + __u32 fs_dind_count; + __u32 fs_tind_count; + __u32 fs_fragmented; + __u32 large_files; + __u32 fs_ext_attr_inodes; + __u32 fs_ext_attr_blocks; time_t now; @@ -464,6 +467,9 @@ extern void e2fsck_read_inode(e2fsck_t c struct ext2_inode * inode, const char * proc); extern void e2fsck_write_inode(e2fsck_t ctx, unsigned long ino, struct ext2_inode * inode, const char * proc); +extern void e2fsck_write_inode_full(e2fsck_t ctx, unsigned long ino, + struct ext2_inode * inode, int bufsize, + const char *proc); #ifdef MTRACE extern void mtrace_print(char *mesg); #endif @@ -475,3 +481,4 @@ extern int ext2_file_type(unsigned int m extern void e2fsck_clear_progbar(e2fsck_t ctx); extern int e2fsck_simple_progress(e2fsck_t ctx, const char *label, float percent, unsigned int dpynum); +#endif /* _E2FSCK_H */ Index: e2fsprogs-1.39/e2fsck/emptydir.c =================================================================== --- e2fsprogs-1.39.orig/e2fsck/emptydir.c 2006-03-19 03:34:00.000000000 +0100 +++ e2fsprogs-1.39/e2fsck/emptydir.c 2006-09-18 17:42:57.000000000 +0200 @@ -94,7 +94,7 @@ void add_empty_dirblock(empty_dir_info e if (db->ino == 11) return; /* Inode number 11 is usually lost+found */ - printf(_("Empty directory block %u (#%d) in inode %d\n"), + printf(_("Empty directory block %u (#%d) in inode %u\n"), db->blk, db->blockcnt, db->ino); ext2fs_mark_block_bitmap(edi->empty_dir_blocks, db->blk); Index: e2fsprogs-1.39/e2fsck/iscan.c =================================================================== --- e2fsprogs-1.39.orig/e2fsck/iscan.c 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/e2fsck/iscan.c 2006-09-18 17:42:57.000000000 +0200 @@ -98,7 +98,7 @@ int main (int argc, char *argv[]) int exit_value = FSCK_OK; ext2_filsys fs; ext2_ino_t ino; - int num_inodes = 0; + __u32 num_inodes = 0; struct ext2_inode inode; ext2_inode_scan scan; @@ -135,7 +135,7 @@ int main (int argc, char *argv[]) } print_resource_track(NULL, &global_rtrack); - printf(_("%d inodes scanned.\n"), num_inodes); + printf(_("%u inodes scanned.\n"), num_inodes); exit(0); } Index: e2fsprogs-1.39/e2fsck/pass1.c =================================================================== --- e2fsprogs-1.39.orig/e2fsck/pass1.c 2006-03-19 03:33:56.000000000 +0100 +++ e2fsprogs-1.39/e2fsck/pass1.c 2006-09-19 17:05:58.000000000 +0200 @@ -1890,6 +1890,7 @@ static void new_table_block(e2fsck_t ctx { ext2_filsys fs = ctx->fs; blk_t old_block = *new_block; + blk_t last_block; int i; char *buf; struct problem_context pctx; @@ -1900,8 +1901,8 @@ static void new_table_block(e2fsck_t ctx pctx.blk = old_block; pctx.str = name; - pctx.errcode = ext2fs_get_free_blocks(fs, first_block, - first_block + fs->super->s_blocks_per_group, + last_block = ext2fs_group_last_block(fs, group); + pctx.errcode = ext2fs_get_free_blocks(fs, first_block, last_block, num, ctx->block_found_map, new_block); if (pctx.errcode) { pctx.num = num; @@ -1952,9 +1953,11 @@ static void handle_fs_bad_blocks(e2fsck_ { ext2_filsys fs = ctx->fs; dgrp_t i; - int first_block = fs->super->s_first_data_block; + blk_t first_block; for (i = 0; i < fs->group_desc_count; i++) { + first_block = ext2fs_group_first_block(fs, i); + if (ctx->invalid_block_bitmap_flag[i]) { new_table_block(ctx, first_block, i, _("block bitmap"), 1, &fs->group_desc[i].bg_block_bitmap); @@ -1969,7 +1972,6 @@ static void handle_fs_bad_blocks(e2fsck_ &fs->group_desc[i].bg_inode_table); ctx->flags |= E2F_FLAG_RESTART; } - first_block += fs->super->s_blocks_per_group; } ctx->invalid_bitmaps = 0; } @@ -1981,14 +1983,13 @@ static void handle_fs_bad_blocks(e2fsck_ static void mark_table_blocks(e2fsck_t ctx) { ext2_filsys fs = ctx->fs; - blk_t block, b; + blk_t b; dgrp_t i; int j; struct problem_context pctx; clear_problem_context(&pctx); - block = fs->super->s_first_data_block; for (i = 0; i < fs->group_desc_count; i++) { pctx.group = i; @@ -2049,7 +2050,6 @@ static void mark_table_blocks(e2fsck_t c fs->group_desc[i].bg_inode_bitmap); } } - block += fs->super->s_blocks_per_group; } } Index: e2fsprogs-1.39/e2fsck/pass1b.c =================================================================== --- e2fsprogs-1.39.orig/e2fsck/pass1b.c 2006-05-29 02:52:24.000000000 +0200 +++ e2fsprogs-1.39/e2fsck/pass1b.c 2006-09-19 17:05:57.000000000 +0200 @@ -779,16 +779,16 @@ errout: static int check_if_fs_block(e2fsck_t ctx, blk_t test_block) { ext2_filsys fs = ctx->fs; - blk_t block; + blk_t first_block; dgrp_t i; - block = fs->super->s_first_data_block; + first_block = fs->super->s_first_data_block; for (i = 0; i < fs->group_desc_count; i++) { - /* Check superblocks/block group descriptros */ + /* Check superblocks/block group descriptors */ if (ext2fs_bg_has_super(fs, i)) { - if (test_block >= block && - (test_block <= block + fs->desc_blocks)) + if (test_block >= first_block && + (test_block <= first_block + fs->desc_blocks)) return 1; } @@ -804,7 +804,7 @@ static int check_if_fs_block(e2fsck_t ct (test_block == fs->group_desc[i].bg_inode_bitmap)) return 1; - block += fs->super->s_blocks_per_group; + first_block += fs->super->s_blocks_per_group; } return 0; } Index: e2fsprogs-1.39/e2fsck/pass4.c =================================================================== --- e2fsprogs-1.39.orig/e2fsck/pass4.c 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/e2fsck/pass4.c 2006-09-19 17:05:57.000000000 +0200 @@ -110,8 +110,9 @@ void e2fsck_pass4(e2fsck_t ctx) if (ctx->progress) if ((ctx->progress)(ctx, 4, 0, maxgroup)) return; - - for (i=1; i <= fs->super->s_inodes_count; i++) { + + /* Protect loop from wrap-around if s_inodes_count maxed */ + for (i=1; i <= fs->super->s_inodes_count && i > 0; i++) { if (ctx->flags & E2F_FLAG_SIGNAL_MASK) return; if ((i % fs->super->s_inodes_per_group) == 0) { Index: e2fsprogs-1.39/e2fsck/pass5.c =================================================================== --- e2fsprogs-1.39.orig/e2fsck/pass5.c 2006-05-08 18:54:55.000000000 +0200 +++ e2fsprogs-1.39/e2fsck/pass5.c 2006-09-19 17:05:57.000000000 +0200 @@ -370,7 +370,8 @@ redo_counts: EXT2_BG_INODE_UNINIT)) skip_group++; - for (i = 1; i <= fs->super->s_inodes_count; i++) { + /* Protect loop from wrap-around if inodes_count is maxed */ + for (i = 1; i <= fs->super->s_inodes_count && i > 0; i++) { actual = ext2fs_fast_test_inode_bitmap(ctx->inode_used_map, i); if (skip_group) bitmap = 0; @@ -528,8 +529,9 @@ static void check_inode_end(e2fsck_t ctx } if (save_inodes_count == end) return; - - for (i = save_inodes_count + 1; i <= end; i++) { + + /* protect loop from wrap-around if end is maxed */ + for (i = save_inodes_count + 1; i <= end && i > save_inodes_count; i++) { if (!ext2fs_test_inode_bitmap(fs->inode_map, i)) { if (fix_problem(ctx, PR_5_INODE_BMAP_PADDING, &pctx)) { for (i = save_inodes_count + 1; i <= end; i++) @@ -572,8 +574,9 @@ static void check_block_end(e2fsck_t ctx } if (save_blocks_count == end) return; - - for (i = save_blocks_count + 1; i <= end; i++) { + + /* Protect loop from wrap-around if end is maxed */ + for (i = save_blocks_count + 1; i <= end && i > save_blocks_count; i++) { if (!ext2fs_test_block_bitmap(fs->block_map, i)) { if (fix_problem(ctx, PR_5_BLOCK_BMAP_PADDING, &pctx)) { for (i = save_blocks_count + 1; i <= end; i++) Index: e2fsprogs-1.39/e2fsck/recovery.c =================================================================== --- e2fsprogs-1.39.orig/e2fsck/recovery.c 2006-05-14 22:48:09.000000000 +0200 +++ e2fsprogs-1.39/e2fsck/recovery.c 2006-09-19 17:05:57.000000000 +0200 @@ -236,7 +236,7 @@ int journal_recover(journal_t *journal) if (!sb->s_start) { jbd_debug(1, "No recovery required, last transaction %d\n", - ntohl(sb->s_sequence)); + (int)ntohl(sb->s_sequence)); journal->j_transaction_sequence = ntohl(sb->s_sequence) + 1; return 0; } Index: e2fsprogs-1.39/e2fsck/super.c =================================================================== --- e2fsprogs-1.39.orig/e2fsck/super.c 2006-03-19 03:33:56.000000000 +0100 +++ e2fsprogs-1.39/e2fsck/super.c 2006-09-19 17:05:57.000000000 +0200 @@ -220,7 +220,7 @@ static int release_inode_blocks(e2fsck_t } if (retval) { com_err("release_inode_blocks", retval, - _("while calling ext2fs_adjust_ea_refocunt for inode %d"), + _("while calling ext2fs_adjust_ea_refcount for inode %d"), ino); return 1; } @@ -566,15 +566,15 @@ void check_super_block(e2fsck_t ctx) * Verify the group descriptors.... */ first_block = sb->s_first_data_block; - last_block = first_block + blocks_per_group; for (i = 0, gd=fs->group_desc; i < fs->group_desc_count; i++, gd++) { pctx.group = i; - - if (i == fs->group_desc_count - 1) - last_block = sb->s_blocks_count; + + first_block = ext2fs_group_first_block(fs, i); + last_block = ext2fs_group_last_block(fs, i); + if ((gd->bg_block_bitmap < first_block) || - (gd->bg_block_bitmap >= last_block)) { + (gd->bg_block_bitmap > last_block)) { pctx.blk = gd->bg_block_bitmap; if (fix_problem(ctx, PR_0_BB_NOT_GROUP, &pctx)) gd->bg_block_bitmap = 0; @@ -584,7 +584,7 @@ void check_super_block(e2fsck_t ctx) ctx->invalid_bitmaps++; } if ((gd->bg_inode_bitmap < first_block) || - (gd->bg_inode_bitmap >= last_block)) { + (gd->bg_inode_bitmap > last_block)) { pctx.blk = gd->bg_inode_bitmap; if (fix_problem(ctx, PR_0_IB_NOT_GROUP, &pctx)) gd->bg_inode_bitmap = 0; @@ -595,7 +595,7 @@ void check_super_block(e2fsck_t ctx) } if ((gd->bg_inode_table < first_block) || ((gd->bg_inode_table + - fs->inode_blocks_per_group - 1) >= last_block)) { + fs->inode_blocks_per_group - 1) > last_block)) { pctx.blk = gd->bg_inode_table; if (fix_problem(ctx, PR_0_ITABLE_NOT_GROUP, &pctx)) gd->bg_inode_table = 0; @@ -606,8 +606,6 @@ void check_super_block(e2fsck_t ctx) } free_blocks += gd->bg_free_blocks_count; free_inodes += gd->bg_free_inodes_count; - first_block += sb->s_blocks_per_group; - last_block += sb->s_blocks_per_group; if ((gd->bg_free_blocks_count > sb->s_blocks_per_group) || (gd->bg_free_inodes_count > sb->s_inodes_per_group) || Index: e2fsprogs-1.39/e2fsck/unix.c =================================================================== --- e2fsprogs-1.39.orig/e2fsck/unix.c 2006-03-20 02:31:06.000000000 +0100 +++ e2fsprogs-1.39/e2fsck/unix.c 2006-09-19 17:02:36.000000000 +0200 @@ -98,7 +98,7 @@ static void usage(e2fsck_t ctx) static void show_stats(e2fsck_t ctx) { ext2_filsys fs = ctx->fs; - int inodes, inodes_used; + ext2_ino_t inodes, inodes_used; blk_t blocks, blocks_used; int dir_links; int num_files, num_links; @@ -118,49 +118,48 @@ static void show_stats(e2fsck_t ctx) frag_percent = (frag_percent + 5) / 10; if (!verbose) { - printf(_("%s: %d/%d files (%0d.%d%% non-contiguous), %u/%u blocks\n"), + printf(_("%s: %u/%u files (%0d.%d%% non-contiguous), %u/%u blocks\n"), ctx->device_name, inodes_used, inodes, frag_percent / 10, frag_percent % 10, blocks_used, blocks); return; } - printf (P_("\n%8d inode used (%d%%)\n", "\n%8d inodes used (%d%%)\n", - inodes_used), inodes_used, 100 * inodes_used / inodes); - printf (P_("%8d non-contiguous inode (%0d.%d%%)\n", - "%8d non-contiguous inodes (%0d.%d%%)\n", + printf (P_("\n%8u inode used (%2.2f%%)\n", "\n%8u inodes used (%2.2f%%)\n", + inodes_used), inodes_used, 100.0 * inodes_used / inodes); + printf (P_("%8u non-contiguous inode (%0d.%d%%)\n", + "%8u non-contiguous inodes (%0d.%d%%)\n", ctx->fs_fragmented), ctx->fs_fragmented, frag_percent / 10, frag_percent % 10); - printf (_(" # of inodes with ind/dind/tind blocks: %d/%d/%d\n"), + printf (_(" # of inodes with ind/dind/tind blocks: %u/%u/%u\n"), ctx->fs_ind_count, ctx->fs_dind_count, ctx->fs_tind_count); - printf (P_("%8u block used (%d%%)\n", "%8u blocks used (%d%%)\n", - blocks_used), - blocks_used, (int) ((long long) 100 * blocks_used / blocks)); - printf (P_("%8d bad block\n", "%8d bad blocks\n", + printf (P_("%8u block used (%2.2f%%)\n", "%8u blocks used (%2.2f%%)\n", + blocks_used), blocks_used, 100.0 * blocks_used / blocks); + printf (P_("%8u bad block\n", "%8u bad blocks\n", ctx->fs_badblocks_count), ctx->fs_badblocks_count); - printf (P_("%8d large file\n", "%8d large files\n", + printf (P_("%8u large file\n", "%8u large files\n", ctx->large_files), ctx->large_files); - printf (P_("\n%8d regular file\n", "\n%8d regular files\n", + printf (P_("\n%8u regular file\n", "\n%8u regular files\n", ctx->fs_regular_count), ctx->fs_regular_count); - printf (P_("%8d directory\n", "%8d directories\n", + printf (P_("%8u directory\n", "%8u directories\n", ctx->fs_directory_count), ctx->fs_directory_count); - printf (P_("%8d character device file\n", - "%8d character device files\n", ctx->fs_chardev_count), + printf (P_("%8u character device file\n", + "%8u character device files\n", ctx->fs_chardev_count), ctx->fs_chardev_count); - printf (P_("%8d block device file\n", "%8d block device files\n", + printf (P_("%8u block device file\n", "%8u block device files\n", ctx->fs_blockdev_count), ctx->fs_blockdev_count); - printf (P_("%8d fifo\n", "%8d fifos\n", ctx->fs_fifo_count), + printf (P_("%8u fifo\n", "%8u fifos\n", ctx->fs_fifo_count), ctx->fs_fifo_count); - printf (P_("%8d link\n", "%8d links\n", + printf (P_("%8u link\n", "%8u links\n", ctx->fs_links_count - dir_links), ctx->fs_links_count - dir_links); - printf (P_("%8d symbolic link", "%8d symbolic links", + printf (P_("%8u symbolic link", "%8u symbolic links", ctx->fs_symlinks_count), ctx->fs_symlinks_count); - printf (P_(" (%d fast symbolic link)\n", " (%d fast symbolic links)\n", + printf (P_(" (%u fast symbolic link)\n", " (%u fast symbolic links)\n", ctx->fs_fast_symlinks_count), ctx->fs_fast_symlinks_count); - printf (P_("%8d socket\n", "%8d sockets\n", ctx->fs_sockets_count), + printf (P_("%8u socket\n", "%8u sockets\n", ctx->fs_sockets_count), ctx->fs_sockets_count); printf ("--------\n"); - printf (P_("%8d file\n", "%8d files\n", + printf (P_("%8u file\n", "%8u files\n", ctx->fs_total_count - dir_links), ctx->fs_total_count - dir_links); } @@ -300,7 +299,7 @@ static void check_if_skip(e2fsck_t ctx) fputs(_(", check forced.\n"), stdout); return; } - printf(_("%s: clean, %d/%d files, %u/%u blocks"), ctx->device_name, + printf(_("%s: clean, %u/%u files, %u/%u blocks"), ctx->device_name, fs->super->s_inodes_count - fs->super->s_free_inodes_count, fs->super->s_inodes_count, fs->super->s_blocks_count - fs->super->s_free_blocks_count, @@ -568,7 +567,7 @@ static void syntax_err_report(const char exit(FSCK_ERROR); } -static const char *config_fn[] = { "/etc/e2fsck.conf", 0 }; +static const char *config_fn[] = { ROOT_SYSCONFDIR "/e2fsck.conf", 0 }; static errcode_t PRS(int argc, char *argv[], e2fsck_t *ret_ctx) { Index: e2fsprogs-1.39/e2fsprogs.spec =================================================================== --- e2fsprogs-1.39.orig/e2fsprogs.spec 2006-04-10 05:25:53.000000000 +0200 +++ e2fsprogs-1.39/e2fsprogs.spec 2006-09-19 16:51:11.000000000 +0200 @@ -4,9 +4,9 @@ Summary: Utilities for managing the second extended (ext2) filesystem. Name: e2fsprogs -Version: 1.39-WIP +Version: 1.39 Release: 0 -Copyright: GPL +License: GPLv2 Group: System Environment/Base Source: ftp://download.sourceforge.net/pub/sourceforge/e2fsprogs/e2fsprogs-%{version}.tar.gz Url: http://e2fsprogs.sourceforge.net/ @@ -181,7 +181,6 @@ exit 0 %{_includedir}/ext2fs %{_includedir}/ss %{_includedir}/uuid -%{_includedir}/e2p/e2p.h %{_mandir}/man1/compile_et.1* %{_mandir}/man1/mk_cmds.1* %{_mandir}/man3/com_err.3* Index: e2fsprogs-1.39/e2fsprogs.spec.in =================================================================== --- e2fsprogs-1.39.orig/e2fsprogs.spec.in 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/e2fsprogs.spec.in 2006-09-18 17:42:57.000000000 +0200 @@ -6,7 +6,7 @@ Summary: Utilities for managing the seco Name: e2fsprogs Version: @E2FSPROGS_VERSION@ Release: 0 -Copyright: GPL +License: GPLv2 Group: System Environment/Base Source: ftp://download.sourceforge.net/pub/sourceforge/e2fsprogs/e2fsprogs-%{version}.tar.gz Url: http://e2fsprogs.sourceforge.net/ @@ -181,7 +181,6 @@ exit 0 %{_includedir}/ext2fs %{_includedir}/ss %{_includedir}/uuid -%{_includedir}/e2p/e2p.h %{_mandir}/man1/compile_et.1* %{_mandir}/man1/mk_cmds.1* %{_mandir}/man3/com_err.3* Index: e2fsprogs-1.39/ext2ed/ChangeLog =================================================================== --- e2fsprogs-1.39.orig/ext2ed/ChangeLog 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/ext2ed/ChangeLog 2006-09-18 17:42:57.000000000 +0200 @@ -1,3 +1,8 @@ +2006-08-30 Theodore Tso + + * init.c (div_ceil, set_file_system_info): Fix potential overflow + for really big filesystems. + 2006-06-30 Theodore Ts'o * Release of E2fsprogs 1.38 Index: e2fsprogs-1.39/ext2ed/init.c =================================================================== --- e2fsprogs-1.39.orig/ext2ed/init.c 2005-12-10 01:00:32.000000000 +0100 +++ e2fsprogs-1.39/ext2ed/init.c 2006-09-19 17:02:36.000000000 +0200 @@ -370,6 +370,13 @@ void add_user_command (struct struct_com ptr->callback [num]=callback; } +static unsigned int div_ceil(unsigned int a, unsigned int b) +{ + if (!a) + return 0; + return ((a - 1) / b) + 1; +} + int set_file_system_info (void) { @@ -415,8 +422,8 @@ int set_file_system_info (void) file_system_info.first_group_desc_offset=2*EXT2_MIN_BLOCK_SIZE; else file_system_info.first_group_desc_offset=file_system_info.block_size; - file_system_info.groups_count=( sb->s_blocks_count-sb->s_first_data_block+sb->s_blocks_per_group-1) / - sb->s_blocks_per_group; + file_system_info.groups_count = div_ceil(sb->s_blocks_count, + sb->s_blocks_per_group); file_system_info.inodes_per_block=file_system_info.block_size/sizeof (struct ext2_inode); file_system_info.blocks_per_group=sb->s_inodes_per_group/file_system_info.inodes_per_block; Index: e2fsprogs-1.39/lib/ChangeLog =================================================================== --- e2fsprogs-1.39.orig/lib/ChangeLog 2006-03-18 03:12:30.000000000 +0100 +++ e2fsprogs-1.39/lib/ChangeLog 2006-09-18 17:42:57.000000000 +0200 @@ -1,3 +1,8 @@ +2006-06-28 Andreas Dilger + + * e2fsck.h, ext2_ext_attr.h: Protect header files from multiple + inclusion. + 2006-03-17 Theodore Ts'o * Makefile.library (real-subdirs): Add real-subdirs:: target so Index: e2fsprogs-1.39/lib/blkid/ChangeLog =================================================================== --- e2fsprogs-1.39.orig/lib/blkid/ChangeLog 2006-05-14 23:25:12.000000000 +0200 +++ e2fsprogs-1.39/lib/blkid/ChangeLog 2006-09-18 17:42:57.000000000 +0200 @@ -1,3 +1,23 @@ +2006-09-17 Karel Zak + + * probe.c (probe_fat): Fix problem with empty FAT label. + +2006-09-17 Karel Zak + + * probe.c (probe_gfs, _gfs2), probe.h: Add support for GFS/GFS2 + +2006-09-12 Theodore Tso + + * devname.c (dm_probe_all): probe_one expects device names passed + to it w/o the leading "/dev". + +2006-08-19 Andreas Dilger + + * blkid.8.in: Make the description of the -l option more accurate. + + * Makefile.in (clean): Avoid removing the tst_*.c files, but + instead list each of the tst_* binaries explicitly. + 2006-05-14 Theodore Tso * probe.c (probe_udf): Fix signed vs. unsigned lint warning; Index: e2fsprogs-1.39/lib/blkid/Makefile.in =================================================================== --- e2fsprogs-1.39.orig/lib/blkid/Makefile.in 2006-04-09 03:52:52.000000000 +0200 +++ e2fsprogs-1.39/lib/blkid/Makefile.in 2006-09-18 17:42:57.000000000 +0200 @@ -175,7 +175,9 @@ uninstall:: done clean:: - $(RM) -f \#* *.s *.o *.orig *.a *~ *.bak tst_* tests/*.out tests/*.ok \ + $(RM) -f \#* *.s *.o *.orig *.a *~ *.bak tst_cache tst_dev tst_devname \ + tst_devno tst_getsize tst_probe tst_read tst_resolve tst_save \ + tst_tag tst_types tests/*.out tests/*.ok \ tests/*.img results test_probe core profiled/* \ checker/* blkid_types.h ../libblkid.a ../libblkid_p.a \ $(SMANPAGES) blkid Index: e2fsprogs-1.39/lib/blkid/dev.c =================================================================== --- e2fsprogs-1.39.orig/lib/blkid/dev.c 2006-03-13 00:10:44.000000000 +0100 +++ e2fsprogs-1.39/lib/blkid/dev.c 2006-09-18 17:42:57.000000000 +0200 @@ -68,8 +68,8 @@ void blkid_debug_dump_dev(blkid_dev dev) } printf(" dev: name = %s\n", dev->bid_name); - printf(" dev: DEVNO=\"0x%0llx\"\n", dev->bid_devno); - printf(" dev: TIME=\"%ld\"\n", dev->bid_time); + printf(" dev: DEVNO=\"0x%0llx\"\n", (long long)dev->bid_devno); + printf(" dev: TIME=\"%ld\"\n", (long)dev->bid_time); printf(" dev: PRI=\"%d\"\n", dev->bid_pri); printf(" dev: flags = 0x%08X\n", dev->bid_flags); @@ -196,7 +196,7 @@ extern int optind; void usage(char *prog) { fprintf(stderr, "Usage: %s [-f blkid_file] [-m debug_mask]\n", prog); - fprintf(stderr, "\tList all devices and exit\n", prog); + fprintf(stderr, "\tList all devices and exit\n"); exit(1); } @@ -219,7 +219,7 @@ int main(int argc, char **argv) case 'm': blkid_debug_mask = strtoul (optarg, &tmp, 0); if (*tmp) { - fprintf(stderr, "Invalid debug mask: %d\n", + fprintf(stderr, "Invalid debug mask: %s\n", optarg); exit(1); } Index: e2fsprogs-1.39/lib/blkid/devname.c =================================================================== --- e2fsprogs-1.39.orig/lib/blkid/devname.c 2006-03-19 20:53:35.000000000 +0100 +++ e2fsprogs-1.39/lib/blkid/devname.c 2006-09-18 17:42:57.000000000 +0200 @@ -291,7 +291,7 @@ static void dm_probe_all(blkid_cache cac names = (void *)names + next; - rc = asprintf(&device, "/dev/mapper/%s", names->name); + rc = asprintf(&device, "mapper/%s", names->name); if (rc < 0) goto try_next; Index: e2fsprogs-1.39/lib/blkid/devno.c =================================================================== --- e2fsprogs-1.39.orig/lib/blkid/devno.c 2006-01-28 05:42:34.000000000 +0100 +++ e2fsprogs-1.39/lib/blkid/devno.c 2006-09-18 17:42:57.000000000 +0200 @@ -125,7 +125,7 @@ static void scan_dir(char *dirname, dev_ else if (S_ISBLK(st.st_mode) && st.st_rdev == devno) { *devname = blkid_strdup(path); DBG(DEBUG_DEVNO, - printf("found 0x%llx at %s (%p)\n", devno, + printf("found 0x%llx at %s (%p)\n", (long long)devno, path, *devname)); break; } @@ -183,7 +183,7 @@ char *blkid_devno_to_devname(dev_t devno (unsigned long) devno)); } else { DBG(DEBUG_DEVNO, - printf("found devno 0x%04llx as %s\n", devno, devname)); + printf("found devno 0x%04llx as %s\n", (long long)devno, devname)); } @@ -224,7 +224,7 @@ int main(int argc, char** argv) } devno = makedev(major, minor); } - printf("Looking for device 0x%04Lx\n", devno); + printf("Looking for device 0x%04llx\n", (long long)devno); devname = blkid_devno_to_devname(devno); if (devname) free(devname); Index: e2fsprogs-1.39/lib/blkid/getsize.c =================================================================== --- e2fsprogs-1.39.orig/lib/blkid/getsize.c 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/lib/blkid/getsize.c 2006-09-18 17:42:57.000000000 +0200 @@ -70,7 +70,7 @@ static int valid_offset(int fd, blkid_lo } /* - * Returns the number of blocks in a partition + * Returns the number of bytes in a partition */ blkid_loff_t blkid_get_dev_size(int fd) { @@ -122,25 +122,33 @@ blkid_loff_t blkid_get_dev_size(int fd) return (blkid_loff_t)size << 9; #endif +/* tested on FreeBSD 6.1-RELEASE i386 */ +#ifdef DIOCGMEDIASIZE + if (ioctl(fd, DIOCGMEDIASIZE, &size64) >= 0) + return (off_t)size64; +#endif /* DIOCGMEDIASIZE */ + #ifdef FDGETPRM if (ioctl(fd, FDGETPRM, &this_floppy) >= 0) return (blkid_loff_t)this_floppy.size << 9; #endif #ifdef HAVE_SYS_DISKLABEL_H -#if 0 /* - * This should work in theory but I haven't tested it. Anyone - * on a BSD system want to test this for me? In the meantime, - * binary search mechanism should work just fine. + * This code works for FreeBSD 4.11 i386, except for the full device + * (such as /dev/ad0). It doesn't work properly for newer FreeBSD + * though. FreeBSD >= 5.0 should be covered by the DIOCGMEDIASIZE + * above however. + * + * Note that FreeBSD >= 4.0 has disk devices as unbuffered (raw, + * character) devices, so we need to check for S_ISCHR, too. */ - if ((fstat(fd, &st) >= 0) && S_ISBLK(st.st_mode)) + if ((fstat(fd, &st) >= 0) && (S_ISBLK(st.st_mode) || S_ISCHR(st.st_mode))) part = st.st_rdev & 7; if (part >= 0 && (ioctl(fd, DIOCGDINFO, (char *)&lab) >= 0)) { pp = &lab.d_partitions[part]; if (pp->p_size) return pp->p_size << 9; } -#endif #endif /* HAVE_SYS_DISKLABEL_H */ { #ifdef HAVE_FSTAT64 Index: e2fsprogs-1.39/lib/blkid/probe.c =================================================================== --- e2fsprogs-1.39.orig/lib/blkid/probe.c 2006-05-14 23:24:09.000000000 +0200 +++ e2fsprogs-1.39/lib/blkid/probe.c 2006-09-18 17:42:57.000000000 +0200 @@ -153,7 +153,6 @@ static int probe_ext3(struct blkid_probe unsigned char *buf) { struct ext2_super_block *es; - char uuid[37]; es = (struct ext2_super_block *)buf; /* Distinguish between jbd and ext2/3 fs */ @@ -225,7 +224,7 @@ static char *no_name = "NO NAME "; static unsigned char *search_fat_label(struct vfat_dir_entry *dir, int count) { - unsigned int i; + int i; for (i = 0; i < count; i++) { if (dir[i].name[0] == 0x00) @@ -254,7 +253,7 @@ static int probe_fat(struct blkid_probe struct msdos_super_block *ms = (struct msdos_super_block *) buf; struct vfat_dir_entry *dir; char serno[10]; - const unsigned char *label = 0, *vol_label = 0; + const unsigned char *label = 0, *vol_label = 0, *tmp; unsigned char *vol_serno; int label_len = 0, maxloop = 100; __u16 sector_size, dir_entries, reserved; @@ -262,14 +261,17 @@ static int probe_fat(struct blkid_probe __u32 buf_size, start_data_sect, next, root_start, root_dir_entries; /* sector size check */ - sector_size = blkid_le16(*((__u16 *) &ms->ms_sector_size)); + tmp = (unsigned char *)&ms->ms_sector_size; + sector_size = tmp[0] + (tmp[1] << 8); if (sector_size != 0x200 && sector_size != 0x400 && sector_size != 0x800 && sector_size != 0x1000) return 1; - dir_entries = blkid_le16(*((__u16 *) &ms->ms_dir_entries)); + tmp = (unsigned char *)&ms->ms_dir_entries; + dir_entries = tmp[0] + (tmp[1] << 8); reserved = blkid_le16(ms->ms_reserved); - sect_count = blkid_le16(*((__u16 *) &ms->ms_sectors)); + tmp = (unsigned char *)&ms->ms_sectors; + sect_count = tmp[0] + (tmp[1] << 8); if (sect_count == 0) sect_count = blkid_le32(ms->ms_total_sect); @@ -348,8 +350,8 @@ static int probe_fat(struct blkid_probe } if (vol_label && memcmp(vol_label, no_name, 11)) { - label = vol_label; - label_len = figure_label_len(vol_label, 11); + if ((label_len = figure_label_len(vol_label, 11))) + label = vol_label; } /* We can't just print them as %04X, because they are unaligned */ @@ -646,6 +648,50 @@ static int probe_oracleasm(struct blkid_ return 0; } +static int probe_gfs(struct blkid_probe *probe, + struct blkid_magic *id __BLKID_ATTR((unused)), + unsigned char *buf) +{ + struct gfs2_sb *sbd; + const char *label = 0; + + sbd = (struct gfs2_sb *)buf; + + if (blkid_be32(sbd->sb_fs_format) == GFS_FORMAT_FS && + blkid_be32(sbd->sb_multihost_format) == GFS_FORMAT_MULTI) + { + blkid_set_tag(probe->dev, "UUID", 0, 0); + + if (strlen(sbd->sb_locktable)) + label = sbd->sb_locktable; + blkid_set_tag(probe->dev, "LABEL", label, sizeof(sbd->sb_locktable)); + return 0; + } + return 1; +} + +static int probe_gfs2(struct blkid_probe *probe, + struct blkid_magic *id __BLKID_ATTR((unused)), + unsigned char *buf) +{ + struct gfs2_sb *sbd; + const char *label = 0; + + sbd = (struct gfs2_sb *)buf; + + if (blkid_be32(sbd->sb_fs_format) == GFS2_FORMAT_FS && + blkid_be32(sbd->sb_multihost_format) == GFS2_FORMAT_MULTI) + { + blkid_set_tag(probe->dev, "UUID", 0, 0); + + if (strlen(sbd->sb_locktable)) + label = sbd->sb_locktable; + blkid_set_tag(probe->dev, "LABEL", label, sizeof(sbd->sb_locktable)); + return 0; + } + return 1; +} + /* * BLKID_BLK_OFFS is at least as large as the highest bim_kboff defined * in the type_array table below + bim_kbalign. @@ -673,6 +719,8 @@ static struct blkid_magic type_array[] = { "reiserfs", 64, 0x34, 8, "ReIsErFs", probe_reiserfs }, { "reiserfs", 8, 20, 8, "ReIsErFs", probe_reiserfs }, { "reiser4", 64, 0, 7, "ReIsEr4", probe_reiserfs4 }, + { "gfs2", 64, 0, 4, "\x01\x16\x19\x70", probe_gfs2 }, + { "gfs", 64, 0, 4, "\x01\x16\x19\x70", probe_gfs }, { "vfat", 0, 0x52, 5, "MSWIN", probe_fat }, { "vfat", 0, 0x52, 8, "FAT32 ", probe_fat }, { "vfat", 0, 0x36, 5, "MSDOS", probe_fat }, @@ -765,8 +813,8 @@ blkid_dev blkid_verify(blkid_cache cache return dev; DBG(DEBUG_PROBE, - printf("need to revalidate %s (time since last check %lu)\n", - dev->bid_name, diff)); + printf("need to revalidate %s (time since last check %llu)\n", + dev->bid_name, (unsigned long long)diff)); if (((probe.fd = open(dev->bid_name, O_RDONLY)) < 0) || (fstat(probe.fd, &st) < 0)) { @@ -853,7 +901,7 @@ found_type: blkid_set_tag(dev, "TYPE", type, 0); DBG(DEBUG_PROBE, printf("%s: devno 0x%04llx, type %s\n", - dev->bid_name, st.st_rdev, type)); + dev->bid_name, (long long)st.st_rdev, type)); } if (probe.sbbuf) Index: e2fsprogs-1.39/lib/blkid/probe.h =================================================================== --- e2fsprogs-1.39.orig/lib/blkid/probe.h 2006-03-10 21:43:35.000000000 +0100 +++ e2fsprogs-1.39/lib/blkid/probe.h 2006-09-18 17:42:57.000000000 +0200 @@ -345,6 +345,54 @@ struct iso_volume_descriptor { unsigned char escape_sequences[8]; }; +/* Common gfs/gfs2 constants: */ +#define GFS_MAGIC 0x01161970 +#define GFS_DEFAULT_BSIZE 4096 +#define GFS_SUPERBLOCK_OFFSET (0x10 * GFS_DEFAULT_BSIZE) +#define GFS_METATYPE_SB 1 +#define GFS_FORMAT_SB 100 +#define GFS_LOCKNAME_LEN 64 + +/* gfs1 constants: */ +#define GFS_FORMAT_FS 1309 +#define GFS_FORMAT_MULTI 1401 +/* gfs2 constants: */ +#define GFS2_FORMAT_FS 1801 +#define GFS2_FORMAT_MULTI 1900 + +struct gfs2_meta_header { + __u32 mh_magic; + __u32 mh_type; + __u64 __pad0; /* Was generation number in gfs1 */ + __u32 mh_format; + __u32 __pad1; /* Was incarnation number in gfs1 */ +}; + +struct gfs2_inum { + __u64 no_formal_ino; + __u64 no_addr; +}; + +struct gfs2_sb { + struct gfs2_meta_header sb_header; + + __u32 sb_fs_format; + __u32 sb_multihost_format; + __u32 __pad0; /* Was superblock flags in gfs1 */ + + __u32 sb_bsize; + __u32 sb_bsize_shift; + __u32 __pad1; /* Was journal segment size in gfs1 */ + + struct gfs2_inum sb_master_dir; /* Was jindex dinode in gfs1 */ + struct gfs2_inum __pad2; /* Was rindex dinode in gfs1 */ + struct gfs2_inum sb_root_dir; + + char sb_lockproto[GFS_LOCKNAME_LEN]; + char sb_locktable[GFS_LOCKNAME_LEN]; + /* In gfs1, quota and license dinodes followed */ +}; + /* * Byte swap functions */ @@ -414,7 +462,7 @@ _INLINE_ __u64 blkid_swab64(__u64 val) -#if __BYTE_ORDER == __BIG_ENDIAN +#ifdef WORDS_BIGENDIAN #define blkid_le16(x) blkid_swab16(x) #define blkid_le32(x) blkid_swab32(x) #define blkid_le64(x) blkid_swab64(x) Index: e2fsprogs-1.39/lib/blkid/read.c =================================================================== --- e2fsprogs-1.39.orig/lib/blkid/read.c 2006-03-13 00:10:58.000000000 +0100 +++ e2fsprogs-1.39/lib/blkid/read.c 2006-09-18 17:42:57.000000000 +0200 @@ -452,8 +452,8 @@ static void debug_dump_dev(blkid_dev dev } printf(" dev: name = %s\n", dev->bid_name); - printf(" dev: DEVNO=\"0x%0llx\"\n", dev->bid_devno); - printf(" dev: TIME=\"%ld\"\n", dev->bid_time); + printf(" dev: DEVNO=\"0x%0llx\"\n", (long long)dev->bid_devno); + printf(" dev: TIME=\"%lld\"\n", (long long)dev->bid_time); printf(" dev: PRI=\"%d\"\n", dev->bid_pri); printf(" dev: flags = 0x%08X\n", dev->bid_flags); Index: e2fsprogs-1.39/lib/blkid/save.c =================================================================== --- e2fsprogs-1.39.orig/lib/blkid/save.c 2006-03-13 00:14:25.000000000 +0100 +++ e2fsprogs-1.39/lib/blkid/save.c 2006-09-18 17:42:57.000000000 +0200 @@ -38,7 +38,7 @@ static int save_dev(blkid_dev dev, FILE fprintf(file, "bid_devno, dev->bid_time); + (unsigned long) dev->bid_devno, (long) dev->bid_time); if (dev->bid_pri) fprintf(file, " PRI=\"%d\"", dev->bid_pri); list_for_each(p, &dev->bid_tags) { Index: e2fsprogs-1.39/lib/blkid/tag.c =================================================================== --- e2fsprogs-1.39.orig/lib/blkid/tag.c 2006-03-10 22:52:19.000000000 +0100 +++ e2fsprogs-1.39/lib/blkid/tag.c 2006-09-18 17:42:57.000000000 +0200 @@ -386,7 +386,7 @@ void usage(char *prog) fprintf(stderr, "Usage: %s [-f blkid_file] [-m debug_mask] device " "[type value]\n", prog); - fprintf(stderr, "\tList all tags for a device and exit\n", prog); + fprintf(stderr, "\tList all tags for a device and exit\n"); exit(1); } @@ -412,7 +412,7 @@ int main(int argc, char **argv) case 'm': blkid_debug_mask = strtoul (optarg, &tmp, 0); if (*tmp) { - fprintf(stderr, "Invalid debug mask: %d\n", + fprintf(stderr, "Invalid debug mask: %s\n", optarg); exit(1); } Index: e2fsprogs-1.39/lib/blkid/test_probe.in =================================================================== --- e2fsprogs-1.39.orig/lib/blkid/test_probe.in 2005-09-10 20:08:42.000000000 +0200 +++ e2fsprogs-1.39/lib/blkid/test_probe.in 2006-09-18 17:42:57.000000000 +0200 @@ -12,7 +12,7 @@ mkdir -p tests for i in $TESTS do - echo -n "$i: " + printf "%s: " $i if test ! -f $SRCDIR/tests/$i.img.bz2 -a \ ! -f $SRCDIR/tests/$i.results ; then Index: e2fsprogs-1.39/lib/blkid/tst_types.c =================================================================== --- e2fsprogs-1.39.orig/lib/blkid/tst_types.c 2006-04-09 03:53:58.000000000 +0200 +++ e2fsprogs-1.39/lib/blkid/tst_types.c 2006-09-18 17:42:57.000000000 +0200 @@ -11,7 +11,10 @@ #include "blkid/blkid_types.h" -main(int argc, char **argv) +#include +#include + +int main(int argc, char **argv) { if (sizeof(__u8) != 1) { printf("Sizeof(__u8) is %d should be 1\n", Index: e2fsprogs-1.39/lib/e2p/ChangeLog =================================================================== --- e2fsprogs-1.39.orig/lib/e2p/ChangeLog 2006-05-08 19:25:00.000000000 +0200 +++ e2fsprogs-1.39/lib/e2p/ChangeLog 2006-09-18 17:42:57.000000000 +0200 @@ -1,3 +1,13 @@ +2006-08-30 Theodore Tso + + * percent.c (e2p_percent): Add a new function which accurate and + without risk of overflow calculates a percentage of a base + number. + +2006-08-05 Theodore Tso + + * pf.c: Add support for EXT4_EXTENTS_FL flag. + 2006-05-08 Theodore Tso * feature.c: Add support for EXT2_FEATURE_COMPAT_LAZY_BG feature. Index: e2fsprogs-1.39/lib/e2p/Makefile.in =================================================================== --- e2fsprogs-1.39.orig/lib/e2p/Makefile.in 2005-12-30 04:19:32.000000000 +0100 +++ e2fsprogs-1.39/lib/e2p/Makefile.in 2006-09-18 17:42:57.000000000 +0200 @@ -19,7 +19,7 @@ all:: e2p.pc OBJS= feature.o fgetflags.o fsetflags.o fgetversion.o fsetversion.o \ getflags.o getversion.o hashstr.o iod.o ls.o mntopts.o \ parse_num.o pe.o pf.o ps.o setflags.o setversion.o uuid.o \ - ostype.o + ostype.o percent.o SRCS= $(srcdir)/feature.c $(srcdir)/fgetflags.c \ $(srcdir)/fsetflags.c $(srcdir)/fgetversion.c \ @@ -28,7 +28,7 @@ SRCS= $(srcdir)/feature.c $(srcdir)/fge $(srcdir)/ls.c $(srcdir)/mntopts.c $(srcdir)/parse_num.c \ $(srcdir)/pe.c $(srcdir)/pf.c $(srcdir)/ps.c \ $(srcdir)/setflags.c $(srcdir)/setversion.c $(srcdir)/uuid.c \ - $(srcdir)/ostype.c + $(srcdir)/ostype.c $(srcdir)/percent.o HFILES= e2p.h LIBRARY= libe2p Index: e2fsprogs-1.39/lib/e2p/e2p.h =================================================================== --- e2fsprogs-1.39.orig/lib/e2p/e2p.h 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/lib/e2p/e2p.h 2006-09-19 17:02:37.000000000 +0200 @@ -50,3 +50,5 @@ unsigned long parse_num_blocks(const cha char *e2p_os2string(int os_type); int e2p_string2os(char *str); + +unsigned int e2p_percent(int percent, unsigned int base); Index: e2fsprogs-1.39/lib/e2p/percent.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ e2fsprogs-1.39/lib/e2p/percent.c 2006-09-19 17:02:36.000000000 +0200 @@ -0,0 +1,62 @@ +/* + * percent.c - Take percentage of a number + * + * Copyright (C) 2006 Theodore Ts'o + * + * This file can be redistributed under the terms of the GNU Library General + * Public License + */ + +#include "e2p.h" + +#include + +/* + * We work really hard to calculate this accurately, while avoiding + * an overflow. "Is there a hyphen in anal-retentive?" :-) + */ +unsigned int e2p_percent(int percent, unsigned int base) +{ + unsigned int mask = ~((1 << (sizeof(unsigned int) - 1) * 8) - 1); + + if (100 % percent == 0) + return base / (100 / percent); + if (mask & base) + return (base / 100) * percent; + return base * percent / 100; +} + +#ifdef DEBUG +#include +#include + +main(int argc, char **argv) +{ + unsigned int base; + int percent; + char *p; + int log_block_size = 0; + + if (argc != 3) { + fprintf(stderr, "Usage: %s percent base\n", argv[0]); + exit(1); + } + + percent = strtoul(argv[1], &p, 0); + if (p[0] && p[1]) { + fprintf(stderr, "Bad percent: %s\n", argv[1]); + exit(1); + } + + base = strtoul(argv[2], &p, 0); + if (p[0] && p[1]) { + fprintf(stderr, "Bad base: %s\n", argv[2]); + exit(1); + } + + printf("%d percent of %u is %u.\n", percent, base, + e2p_percent(percent, base)); + + exit(0); +} +#endif Index: e2fsprogs-1.39/lib/e2p/pf.c =================================================================== --- e2fsprogs-1.39.orig/lib/e2p/pf.c 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/lib/e2p/pf.c 2006-09-18 17:42:57.000000000 +0200 @@ -44,6 +44,7 @@ static struct flags_name flags_array[] = { EXT2_INDEX_FL, "I", "Indexed_direcctory" }, { EXT2_NOTAIL_FL, "t", "No_Tailmerging" }, { EXT2_TOPDIR_FL, "T", "Top_of_Directory_Hierarchies" }, + { EXT4_EXTENTS_FL, "e", "Extents" }, { 0, NULL, NULL } }; Index: e2fsprogs-1.39/lib/et/ChangeLog =================================================================== --- e2fsprogs-1.39.orig/lib/et/ChangeLog 2005-12-11 04:18:49.000000000 +0100 +++ e2fsprogs-1.39/lib/et/ChangeLog 2006-09-18 17:42:57.000000000 +0200 @@ -1,3 +1,8 @@ +2006-08-05 Theodore Ts'o + + * compile_et.sh.in: Create the generated .c and .h files read-only + to remind developers they shouldn't edit them. + 2005-12-10 Theodore Ts'o * Makefile.in: Add a dependency to make sure that the Index: e2fsprogs-1.39/lib/et/compile_et.sh.in =================================================================== --- e2fsprogs-1.39.orig/lib/et/compile_et.sh.in 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/lib/et/compile_et.sh.in 2006-09-18 17:42:57.000000000 +0200 @@ -34,13 +34,15 @@ fi $AWK -f "${DIR}/et_h.awk" "outfile=${BASE}.h.$$" "outfn=${BASE}.h" "$ROOT.et" if test -f ${BASE}.h && cmp -s ${BASE}.h.$$ ${BASE}.h ; then - rm ${BASE}.h.$$ + rm -f ${BASE}.h.$$ else - mv ${BASE}.h.$$ ${BASE}.h + mv -f ${BASE}.h.$$ ${BASE}.h + chmod -w ${BASE}.h fi $AWK -f "${DIR}/et_c.awk" "outfile=${BASE}.c.$$" "outfn=${BASE}.c" "$ROOT.et" if test -f ${BASE}.c && cmp -s ${BASE}.c.$$ ${BASE}.c ; then - rm ${BASE}.c.$$ + rm -f ${BASE}.c.$$ else - mv ${BASE}.c.$$ ${BASE}.c + mv -f ${BASE}.c.$$ ${BASE}.c + chmod -w ${BASE}.c fi Index: e2fsprogs-1.39/lib/ext2fs/ChangeLog =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/ChangeLog 2006-05-22 01:24:50.000000000 +0200 +++ e2fsprogs-1.39/lib/ext2fs/ChangeLog 2006-09-18 17:42:57.000000000 +0200 @@ -1,3 +1,68 @@ +2006-08-30 Eric Sandeen + + * initialize.c (ext2fs_initialize): Make sure inode count does + not overflow 32 bits. + +2006-08-30 Eric Sandeen + + * alloc_tables.c (ext2fs_allocate_group_table): + * check_desc.c (ext2fs_check_desc): + Use new inlines to calculate group first & last blocks. + * ext2fs.h: + Create new inlines to calculate first/last group blocks. + +2006-08-30 Eric Sandeen + + * bmove.c (process_block): + * getsize.c (main): + * icount.c (ext2fs_create_icount2, insert_icount_el): + * tst_badblocks.c (print_list, validate_test_seq, do_test_seq): + * tst_badblocks.c (invalid_proc): + * tst_getsize.c (main): + * tst_iscan.c (check_map): + * unix_io.c (raw_read_blk, unix_read_blk): + * write_bb_file.c (ext2fs_write_bb_FILE): Fix printf formats. + +2006-08-30 Eric Sandeen + + * closefs.c (write_backup_super): + * initialize.c (ext2fs_initialize): Remove unused variables. + +2006-08-30 Eric Sandeen + + * check_desc.c (ext2fs_check_desc): avoid overflows when iterating + over group descriptors on very large filesystems. + +2006-08-30 Theodore Tso + + * bitmaps.c (ext2fs_set_bitmap_padding): Fix potential overflow + problems when the number of blocks is close to 2**31. + + * ext2fs.h (ext2fs_div_ceil): Add new function which safely + calculates an integer division where the result is always + rounded up while avoiding overflow errors. + + * initialize.c (calc_reserved_gdt_blocks, ext2fs_initialize): + * openfs.c (ext2fs_open2): Use ext2fs_div_ceil() instead of a + using an open-coded expression which was subject to + overflows. + +2006-08-06 Andreas Dilger + + * bitops.h (ext2fs_cpu_to_le32, ext2fs_le64_to_cpu, + ext2fs_swab64): Add 64-bit byte swapping functions + +2006-08-05 Theodore Tso + + * ext2_fs.h (EXT4_EXTENTS_FL): Rename EXT3_EXTENTS_FL to + EXT4_EXTENTS_FL, and add EXT4_EXTENTS_FL to user visible + flags list. + +2006-07-15 Theodore Tso + + * ext2fs.h: Remove unneeded #ifdef since EXT2_DYNAMIC_REV is + always defined in the e2fsprogs-provided ext2_fs.h + 2006-05-21 Theodore Tso * openfs.c (ext2fs_open2): Fix type warning problem with sizeof() Index: e2fsprogs-1.39/lib/ext2fs/Makefile.pq =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ e2fsprogs-1.39/lib/ext2fs/Makefile.pq 2006-09-18 17:42:57.000000000 +0200 @@ -0,0 +1,49 @@ +TOPSRC=..\.. +LIBNAME=EXT2.LIB +OBJFILE=EXT2.LST + +OBJS= alloc.obj \ + alloc_tables.obj \ + badblocks.obj \ + bb_compat.obj \ + bb_inode.obj \ + bitmaps.obj \ + bitops.obj \ + block.obj \ + bmap.obj \ + bmove.obj \ + check_desc.obj \ + closefs.obj \ + cmp_bitmaps.obj \ + dblist.obj \ + dblist_dir.obj \ + dirblock.obj \ + dir_iterate.obj \ + dupfs.obj \ + expanddir.obj \ + fileio.obj \ + freefs.obj \ + get_pathname.obj \ + icount.obj \ + initialize.obj \ + inline.obj \ + inode.obj \ + ismounted.obj \ + link.obj \ + lookup.obj \ + mkdir.obj \ + namei.obj \ + native.obj \ + newdir.obj \ + openfs.obj \ + read_bb.obj \ + read_bb_file.obj \ + rs_bitmap.obj \ + rw_bitmaps.obj \ + swapfs.obj \ + unlink.obj \ + valid_blk.obj \ + version.obj + +!include $(TOPSRC)\powerquest\MCONFIG + Index: e2fsprogs-1.39/lib/ext2fs/alloc_tables.c =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/alloc_tables.c 2006-05-13 03:47:17.000000000 +0200 +++ e2fsprogs-1.39/lib/ext2fs/alloc_tables.c 2006-09-19 17:02:36.000000000 +0200 @@ -34,12 +34,8 @@ errcode_t ext2fs_allocate_group_table(ex blk_t group_blk, start_blk, last_blk, new_blk, blk; int j; - group_blk = fs->super->s_first_data_block + - (group * fs->super->s_blocks_per_group); - - last_blk = group_blk + fs->super->s_blocks_per_group; - if (last_blk >= fs->super->s_blocks_count) - last_blk = fs->super->s_blocks_count - 1; + group_blk = ext2fs_group_first_block(fs, group); + last_blk = ext2fs_group_last_block(fs, group); if (!bmap) bmap = fs->block_map; @@ -54,8 +50,8 @@ errcode_t ext2fs_allocate_group_table(ex return retval; start_blk += fs->inode_blocks_per_group; start_blk += ((fs->stride * group) % - (last_blk - start_blk)); - if (start_blk > last_blk) + (last_blk - start_blk + 1)); + if (start_blk >= last_blk) start_blk = group_blk; } else start_blk = group_blk; Index: e2fsprogs-1.39/lib/ext2fs/bitmaps.c =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/bitmaps.c 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/lib/ext2fs/bitmaps.c 2006-09-19 17:05:57.000000000 +0200 @@ -102,7 +102,10 @@ void ext2fs_set_bitmap_padding(ext2fs_ge { __u32 i, j; - for (i=map->end+1, j = i - map->start; i <= map->real_end; i++, j++) + /* Protect loop from wrap-around if map->real_end is maxed */ + for (i=map->end+1, j = i - map->start; + i <= map->real_end && i > map->end; + i++, j++) ext2fs_set_bit(j, map->bitmap); return; Index: e2fsprogs-1.39/lib/ext2fs/bitops.h =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/bitops.h 2006-03-29 19:51:53.000000000 +0200 +++ e2fsprogs-1.39/lib/ext2fs/bitops.h 2006-09-19 17:02:36.000000000 +0200 @@ -23,6 +23,8 @@ extern __u16 ext2fs_swab16(__u16 val); extern __u32 ext2fs_swab32(__u32 val); #ifdef WORDS_BIGENDIAN +#define ext2fs_cpu_to_le64(x) ext2fs_swab64((x)) +#define ext2fs_le64_to_cpu(x) ext2fs_swab64((x)) #define ext2fs_cpu_to_le32(x) ext2fs_swab32((x)) #define ext2fs_le32_to_cpu(x) ext2fs_swab32((x)) #define ext2fs_cpu_to_le16(x) ext2fs_swab16((x)) @@ -32,6 +34,8 @@ extern __u32 ext2fs_swab32(__u32 val); #define ext2fs_cpu_to_be16(x) ((__u16)(x)) #define ext2fs_be16_to_cpu(x) ((__u16)(x)) #else +#define ext2fs_cpu_to_le64(x) ((__u64)(x)) +#define ext2fs_le64_to_cpu(x) ((__u64)(x)) #define ext2fs_cpu_to_le32(x) ((__u32)(x)) #define ext2fs_le32_to_cpu(x) ((__u32)(x)) #define ext2fs_cpu_to_le16(x) ((__u16)(x)) @@ -286,6 +290,12 @@ _INLINE_ __u16 ext2fs_swab16(__u16 val) } #endif +_INLINE_ __u64 ext2fs_swab64(__u64 val) +{ + return (ext2fs_swab32(val >> 32) | + (((__u64)ext2fs_swab32(val & 0xFFFFFFFFUL)) << 32)); +} + #undef EXT2FS_ADDR #endif /* i386 */ Index: e2fsprogs-1.39/lib/ext2fs/bmove.c =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/bmove.c 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/lib/ext2fs/bmove.c 2006-09-19 17:02:36.000000000 +0200 @@ -73,7 +73,7 @@ static int process_block(ext2_filsys fs, ext2fs_mark_block_bitmap(pb->alloc_map, block); ret = BLOCK_CHANGED; if (pb->flags & EXT2_BMOVE_DEBUG) - printf("ino=%ld, blockcnt=%lld, %d->%d\n", pb->ino, + printf("ino=%ld, blockcnt=%lld, %u->%u\n", pb->ino, blockcnt, orig, block); } if (pb->add_dir) { Index: e2fsprogs-1.39/lib/ext2fs/check_desc.c =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/check_desc.c 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/lib/ext2fs/check_desc.c 2006-09-19 17:02:36.000000000 +0200 @@ -32,37 +32,37 @@ errcode_t ext2fs_check_desc(ext2_filsys fs) { dgrp_t i; - blk_t block = fs->super->s_first_data_block; - blk_t next; + blk_t first_block = fs->super->s_first_data_block; + blk_t last_block; EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS); for (i = 0; i < fs->group_desc_count; i++) { - next = block + fs->super->s_blocks_per_group; + first_block = ext2fs_group_first_block(fs, i); + last_block = ext2fs_group_last_block(fs, i); + /* * Check to make sure block bitmap for group is * located within the group. */ - if (fs->group_desc[i].bg_block_bitmap < block || - fs->group_desc[i].bg_block_bitmap >= next) + if (fs->group_desc[i].bg_block_bitmap < first_block || + fs->group_desc[i].bg_block_bitmap > last_block) return EXT2_ET_GDESC_BAD_BLOCK_MAP; /* * Check to make sure inode bitmap for group is * located within the group */ - if (fs->group_desc[i].bg_inode_bitmap < block || - fs->group_desc[i].bg_inode_bitmap >= next) + if (fs->group_desc[i].bg_inode_bitmap < first_block || + fs->group_desc[i].bg_inode_bitmap > last_block) return EXT2_ET_GDESC_BAD_INODE_MAP; /* * Check to make sure inode table for group is located * within the group */ - if (fs->group_desc[i].bg_inode_table < block || + if (fs->group_desc[i].bg_inode_table < first_block || ((fs->group_desc[i].bg_inode_table + - fs->inode_blocks_per_group) >= next)) + fs->inode_blocks_per_group) > last_block)) return EXT2_ET_GDESC_BAD_INODE_TABLE; - - block = next; } return 0; } Index: e2fsprogs-1.39/lib/ext2fs/closefs.c =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/closefs.c 2005-11-09 23:48:39.000000000 +0100 +++ e2fsprogs-1.39/lib/ext2fs/closefs.c 2006-09-19 17:02:36.000000000 +0200 @@ -206,7 +206,6 @@ static errcode_t write_backup_super(ext2 errcode_t ext2fs_flush(ext2_filsys fs) { dgrp_t i,j; - blk_t group_block; errcode_t retval; unsigned long fs_state; struct ext2_super_block *super_shadow = 0; @@ -275,7 +274,6 @@ errcode_t ext2fs_flush(ext2_filsys fs) * Write out the master group descriptors, and the backup * superblocks and group descriptors. */ - group_block = fs->super->s_first_data_block; group_ptr = (char *) group_shadow; if (fs->super->s_feature_incompat & EXT2_FEATURE_INCOMPAT_META_BG) old_desc_blocks = fs->super->s_first_meta_bg; Index: e2fsprogs-1.39/lib/ext2fs/ext2_ext_attr.h =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/ext2_ext_attr.h 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/lib/ext2fs/ext2_ext_attr.h 2006-09-19 17:05:57.000000000 +0200 @@ -6,6 +6,8 @@ (C) 2000 Andreas Gruenbacher, */ +#ifndef _EXT2_EXT_ATTR_H +#define _EXT2_EXT_ATTR_H /* Magic value in attribute blocks */ #define EXT2_EXT_ATTR_MAGIC_v1 0xEA010000 #define EXT2_EXT_ATTR_MAGIC 0xEA020000 @@ -66,4 +68,4 @@ extern void ext2_ext_attr_done(void); # define ext2_set_ext_attr NULL # endif #endif /* __KERNEL__ */ - +#endif /* _EXT2_EXT_ATTR_H */ Index: e2fsprogs-1.39/lib/ext2fs/ext2_fs.h =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/ext2_fs.h 2006-05-04 18:06:34.000000000 +0200 +++ e2fsprogs-1.39/lib/ext2fs/ext2_fs.h 2006-09-19 17:05:58.000000000 +0200 @@ -236,10 +236,10 @@ struct ext2_dx_countlimit { #define EXT2_NOTAIL_FL 0x00008000 /* file tail should not be merged */ #define EXT2_DIRSYNC_FL 0x00010000 /* Synchronous directory modifications */ #define EXT2_TOPDIR_FL 0x00020000 /* Top of directory hierarchies*/ -#define EXT3_EXTENTS_FL 0x00080000 /* Inode uses extents */ +#define EXT4_EXTENTS_FL 0x00080000 /* Inode uses extents */ #define EXT2_RESERVED_FL 0x80000000 /* reserved for ext2 lib */ -#define EXT2_FL_USER_VISIBLE 0x0003DFFF /* User visible flags */ +#define EXT2_FL_USER_VISIBLE 0x000BDFFF /* User visible flags */ #define EXT2_FL_USER_MODIFIABLE 0x000080FF /* User modifiable flags */ /* Index: e2fsprogs-1.39/lib/ext2fs/ext2fs.h =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/ext2fs.h 2006-05-04 18:18:39.000000000 +0200 +++ e2fsprogs-1.39/lib/ext2fs/ext2fs.h 2006-09-19 17:05:58.000000000 +0200 @@ -117,15 +117,11 @@ typedef struct ext2fs_struct_generic_bit typedef struct ext2fs_struct_generic_bitmap *ext2fs_inode_bitmap; typedef struct ext2fs_struct_generic_bitmap *ext2fs_block_bitmap; -#ifdef EXT2_DYNAMIC_REV #define EXT2_FIRST_INODE(s) EXT2_FIRST_INO(s) -#else -#define EXT2_FIRST_INODE(s) EXT2_FIRST_INO -#define EXT2_INODE_SIZE(s) sizeof(struct ext2_inode) -#endif + /* - * badblocks list definitions + * Badblocks list definitions */ typedef struct ext2_struct_u32_list *ext2_badblocks_list; @@ -967,8 +963,11 @@ extern int ext2fs_test_ib_dirty(ext2_fil extern int ext2fs_test_bb_dirty(ext2_filsys fs); extern int ext2fs_group_of_blk(ext2_filsys fs, blk_t blk); extern int ext2fs_group_of_ino(ext2_filsys fs, ext2_ino_t ino); +extern blk_t ext2fs_group_first_block(ext2_filsys fs, dgrp_t group); +extern blk_t ext2fs_group_last_block(ext2_filsys fs, dgrp_t group); extern blk_t ext2fs_inode_data_blocks(ext2_filsys fs, struct ext2_inode *inode); +extern unsigned int ext2fs_div_ceil(unsigned int a, unsigned int b); /* * The actual inlined functions definitions themselves... @@ -1130,12 +1129,42 @@ _INLINE_ int ext2fs_group_of_ino(ext2_fi return (ino - 1) / fs->super->s_inodes_per_group; } +/* + * Return the first block (inclusive) in a group + */ +_INLINE_ blk_t ext2fs_group_first_block(ext2_filsys fs, dgrp_t group) +{ + return fs->super->s_first_data_block + + (group * fs->super->s_blocks_per_group); +} + +/* + * Return the last block (inclusive) in a group + */ +_INLINE_ blk_t ext2fs_group_last_block(ext2_filsys fs, dgrp_t group) +{ + return (group == fs->group_desc_count - 1 ? + fs->super->s_blocks_count - 1 : + ext2fs_group_first_block(fs, group) + + (fs->super->s_blocks_per_group - 1)); +} + _INLINE_ blk_t ext2fs_inode_data_blocks(ext2_filsys fs, struct ext2_inode *inode) { return inode->i_blocks - (inode->i_file_acl ? fs->blocksize >> 9 : 0); } + +/* + * This is an efficient, overflow safe way of calculating ceil((1.0 * a) / b) + */ +_INLINE_ unsigned int ext2fs_div_ceil(unsigned int a, unsigned int b) +{ + if (!a) + return 0; + return ((a - 1) / b) + 1; +} #undef _INLINE_ #endif Index: e2fsprogs-1.39/lib/ext2fs/getsize.c =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/getsize.c 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/lib/ext2fs/getsize.c 2006-09-18 17:42:57.000000000 +0200 @@ -44,6 +44,7 @@ #if HAVE_SYS_STAT_H #include #endif +#include #if defined(__linux__) && defined(_IO) && !defined(BLKGETSIZE) #define BLKGETSIZE _IO(0x12,96) /* return device size */ @@ -302,7 +303,7 @@ int main(int argc, char **argv) "while calling ext2fs_get_device_size"); exit(1); } - printf("Device %s has %d 1k blocks.\n", argv[1], blocks); + printf("Device %s has %u 1k blocks.\n", argv[1], blocks); exit(0); } #endif Index: e2fsprogs-1.39/lib/ext2fs/icount.c =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/icount.c 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/lib/ext2fs/icount.c 2006-09-18 17:42:57.000000000 +0200 @@ -116,7 +116,7 @@ errcode_t ext2fs_create_icount2(ext2_fil bytes = (size_t) (icount->size * sizeof(struct ext2_icount_el)); #if 0 - printf("Icount allocated %d entries, %d bytes.\n", + printf("Icount allocated %u entries, %d bytes.\n", icount->size, bytes); #endif retval = ext2fs_get_mem(bytes, &icount->list); @@ -176,7 +176,7 @@ static struct ext2_icount_el *insert_ico if (new_size < (icount->size + 100)) new_size = icount->size + 100; #if 0 - printf("Reallocating icount %d entries...\n", new_size); + printf("Reallocating icount %u entries...\n", new_size); #endif retval = ext2fs_resize_mem((size_t) icount->size * sizeof(struct ext2_icount_el), Index: e2fsprogs-1.39/lib/ext2fs/initialize.c =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/initialize.c 2006-03-19 00:59:47.000000000 +0100 +++ e2fsprogs-1.39/lib/ext2fs/initialize.c 2006-09-19 17:02:36.000000000 +0200 @@ -77,8 +77,8 @@ static unsigned int calc_reserved_gdt_bl */ if (sb->s_blocks_count < max_blocks / 1024) max_blocks = sb->s_blocks_count * 1024; - rsv_groups = (max_blocks - sb->s_first_data_block + bpg - 1) / bpg; - rsv_gdb = (rsv_groups + gdpb - 1) / gdpb - fs->desc_blocks; + rsv_groups = ext2fs_div_ceil(max_blocks - sb->s_first_data_block, bpg); + rsv_gdb = ext2fs_div_ceil(rsv_groups, gdpb) - fs->desc_blocks; if (rsv_gdb > EXT2_ADDR_PER_BLOCK(sb)) rsv_gdb = EXT2_ADDR_PER_BLOCK(sb); #ifdef RES_GDT_DEBUG @@ -99,7 +99,6 @@ errcode_t ext2fs_initialize(const char * int frags_per_block; unsigned int rem; unsigned int overhead = 0; - blk_t group_block; unsigned int ipg; dgrp_t i; blk_t numblocks; @@ -205,17 +204,15 @@ errcode_t ext2fs_initialize(const char * } retry: - fs->group_desc_count = (super->s_blocks_count - - super->s_first_data_block + - EXT2_BLOCKS_PER_GROUP(super) - 1) - / EXT2_BLOCKS_PER_GROUP(super); + fs->group_desc_count = ext2fs_div_ceil(super->s_blocks_count - + super->s_first_data_block, + EXT2_BLOCKS_PER_GROUP(super)); if (fs->group_desc_count == 0) { retval = EXT2_ET_TOOSMALL; goto cleanup; } - fs->desc_blocks = (fs->group_desc_count + - EXT2_DESC_PER_BLOCK(super) - 1) - / EXT2_DESC_PER_BLOCK(super); + fs->desc_blocks = ext2fs_div_ceil(fs->group_desc_count, + EXT2_DESC_PER_BLOCK(super)); i = fs->blocksize >= 4096 ? 1 : 4096 / fs->blocksize; set_field(s_inodes_count, super->s_blocks_count / i); @@ -233,8 +230,7 @@ retry: * should be. But make sure that we don't allocate more than * one bitmap's worth of inodes each group. */ - ipg = (super->s_inodes_count + fs->group_desc_count - 1) / - fs->group_desc_count; + ipg = ext2fs_div_ceil(super->s_inodes_count, fs->group_desc_count); if (ipg > fs->blocksize * 8) { if (super->s_blocks_per_group >= 256) { /* Try again with slightly different parameters */ @@ -250,9 +246,8 @@ retry: if (ipg > (unsigned) EXT2_MAX_INODES_PER_GROUP(super)) ipg = EXT2_MAX_INODES_PER_GROUP(super); +ipg_retry: super->s_inodes_per_group = ipg; - if (super->s_inodes_count > ipg * fs->group_desc_count) - super->s_inodes_count = ipg * fs->group_desc_count; /* * Make sure the number of inodes per group completely fills @@ -280,6 +275,10 @@ retry: /* * adjust inode count to reflect the adjusted inodes_per_group */ + if ((__u64)super->s_inodes_per_group * fs->group_desc_count > ~0U) { + ipg--; + goto ipg_retry; + } super->s_inodes_count = super->s_inodes_per_group * fs->group_desc_count; super->s_free_inodes_count = super->s_inodes_count; @@ -363,7 +362,6 @@ retry: * inode table have not been allocated (and in fact won't be * by this routine), they are accounted for nevertheless. */ - group_block = super->s_first_data_block; super->s_free_blocks_count = 0; for (i = 0; i < fs->group_desc_count; i++) { numblocks = ext2fs_reserve_super_and_bgd(fs, i, fs->block_map); @@ -373,8 +371,6 @@ retry: fs->group_desc[i].bg_free_inodes_count = fs->super->s_inodes_per_group; fs->group_desc[i].bg_used_dirs_count = 0; - - group_block += super->s_blocks_per_group; } ext2fs_mark_super_dirty(fs); Index: e2fsprogs-1.39/lib/ext2fs/ismounted.c =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/ismounted.c 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/lib/ext2fs/ismounted.c 2006-09-18 17:42:57.000000000 +0200 @@ -325,9 +325,9 @@ errcode_t ext2fs_check_mount_point(const *mount_flags |= EXT2_MF_BUSY; } else close(fd); +#endif return 0; -#endif } /* Index: e2fsprogs-1.39/lib/ext2fs/openfs.c =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/openfs.c 2006-05-22 01:23:27.000000000 +0200 +++ e2fsprogs-1.39/lib/ext2fs/openfs.c 2006-09-19 17:02:36.000000000 +0200 @@ -258,12 +258,11 @@ errcode_t ext2fs_open2(const char *name, retval = EXT2_ET_CORRUPT_SUPERBLOCK; goto cleanup; } - fs->group_desc_count = (fs->super->s_blocks_count - - fs->super->s_first_data_block + - blocks_per_group - 1) / blocks_per_group; - fs->desc_blocks = (fs->group_desc_count + - EXT2_DESC_PER_BLOCK(fs->super) - 1) - / EXT2_DESC_PER_BLOCK(fs->super); + fs->group_desc_count = ext2fs_div_ceil(fs->super->s_blocks_count - + fs->super->s_first_data_block, + blocks_per_group); + fs->desc_blocks = ext2fs_div_ceil(fs->group_desc_count, + EXT2_DESC_PER_BLOCK(fs->super)); retval = ext2fs_get_mem(fs->desc_blocks * fs->blocksize, &fs->group_desc); if (retval) Index: e2fsprogs-1.39/lib/ext2fs/tst_badblocks.c =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/tst_badblocks.c 2005-12-19 05:25:18.000000000 +0100 +++ e2fsprogs-1.39/lib/ext2fs/tst_badblocks.c 2006-09-19 17:02:36.000000000 +0200 @@ -103,7 +103,7 @@ static void print_list(badblocks_list bb } ok = i = 1; while (ext2fs_badblocks_list_iterate(iter, &blk)) { - printf("%d ", blk); + printf("%u ", blk); if (i++ != blk) ok = 0; } @@ -130,7 +130,7 @@ static void validate_test_seq(badblocks_ ok = 0; test_fail++; } - printf("\tblock %d is %s --- %s\n", vec[i], + printf("\tblock %u is %s --- %s\n", vec[i], match ? "present" : "absent", ok ? "OK" : "NOT OK"); } @@ -145,7 +145,7 @@ static void do_test_seq(badblocks_list b case ADD_BLK: ext2fs_badblocks_list_add(bb, vec[i]); match = ext2fs_badblocks_list_test(bb, vec[i]); - printf("Adding block %d --- now %s\n", vec[i], + printf("Adding block %u --- now %s\n", vec[i], match ? "present" : "absent"); if (!match) { printf("FAILURE!\n"); @@ -155,7 +155,7 @@ static void do_test_seq(badblocks_list b case DEL_BLK: ext2fs_badblocks_list_del(bb, vec[i]); match = ext2fs_badblocks_list_test(bb, vec[i]); - printf("Removing block %d --- now %s\n", vec[i], + printf("Removing block %u --- now %s\n", vec[i], ext2fs_badblocks_list_test(bb, vec[i]) ? "present" : "absent"); if (match) { @@ -209,7 +209,7 @@ static void invalid_proc(ext2_filsys fs, printf("Expected invalid block\n"); test_expected_fail++; } else { - printf("Invalid block #: %d\n", blk); + printf("Invalid block #: %u\n", blk); test_fail++; } } Index: e2fsprogs-1.39/lib/ext2fs/tst_getsize.c =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/tst_getsize.c 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/lib/ext2fs/tst_getsize.c 2006-09-18 17:42:57.000000000 +0200 @@ -39,6 +39,6 @@ int main(int argc, const char *argv[]) com_err(argv[0], retval, "while getting device size"); exit(1); } - printf("%s is device has %d blocks.\n", argv[1], blocks); + printf("%s is device has %u blocks.\n", argv[1], blocks); return 0; } Index: e2fsprogs-1.39/lib/ext2fs/tst_iscan.c =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/tst_iscan.c 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/lib/ext2fs/tst_iscan.c 2006-09-19 17:05:57.000000000 +0200 @@ -175,7 +175,7 @@ static void check_map(void) for (i=0; test_vec[i]; i++) { if (ext2fs_test_block_bitmap(touched_map, test_vec[i])) { - printf("Bad block was touched --- %d\n", test_vec[i]); + printf("Bad block was touched --- %u\n", test_vec[i]); failed++; first_no_comma = 1; } @@ -199,7 +199,7 @@ static void check_map(void) first = 0; else printf(", "); - printf("%d", i); + printf("%u", i); } } printf("\n"); Index: e2fsprogs-1.39/lib/ext2fs/unix_io.c =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/unix_io.c 2006-03-18 04:46:30.000000000 +0100 +++ e2fsprogs-1.39/lib/ext2fs/unix_io.c 2006-09-19 17:02:37.000000000 +0200 @@ -170,8 +170,8 @@ static errcode_t raw_read_blk(io_channel size = (count < 0) ? -count : count * channel->block_size; location = ((ext2_loff_t) block * channel->block_size) + data->offset; #ifdef DEBUG - printf("count=%d, size=%d, block=%d, blk_size=%d, location=%lx\n", - count, size, block, channel->block_size, location); + printf("count=%d, size=%d, block=%lu, blk_size=%d, location=%llx\n", + count, size, block, channel->block_size, (long long)location); #endif if (ext2fs_llseek(data->dev, location, SEEK_SET) != location) { retval = errno ? errno : EXT2_ET_LLSEEK_FAILED; @@ -553,7 +553,7 @@ static errcode_t unix_read_blk(io_channe /* If it's in the cache, use it! */ if ((cache = find_cached_block(data, block, &reuse[0]))) { #ifdef DEBUG - printf("Using cached block %d\n", block); + printf("Using cached block %lu\n", block); #endif memcpy(cp, cache->buf, channel->block_size); count--; @@ -569,7 +569,7 @@ static errcode_t unix_read_blk(io_channe if (find_cached_block(data, block+i, &reuse[i])) break; #ifdef DEBUG - printf("Reading %d blocks starting at %d\n", i, block); + printf("Reading %d blocks starting at %lu\n", i, block); #endif if ((retval = raw_read_blk(channel, data, block, i, cp))) return retval; Index: e2fsprogs-1.39/lib/ext2fs/write_bb_file.c =================================================================== --- e2fsprogs-1.39.orig/lib/ext2fs/write_bb_file.c 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/lib/ext2fs/write_bb_file.c 2006-09-19 17:02:36.000000000 +0200 @@ -27,7 +27,7 @@ errcode_t ext2fs_write_bb_FILE(ext2_badb return retval; while (ext2fs_badblocks_list_iterate(bb_iter, &blk)) { - fprintf(f, "%d\n", blk); + fprintf(f, "%u\n", blk); } ext2fs_badblocks_list_iterate_end(bb_iter); return 0; Index: e2fsprogs-1.39/lib/ss/ChangeLog =================================================================== --- e2fsprogs-1.39.orig/lib/ss/ChangeLog 2005-12-11 04:18:57.000000000 +0100 +++ e2fsprogs-1.39/lib/ss/ChangeLog 2006-09-18 17:42:57.000000000 +0200 @@ -1,3 +1,8 @@ +2006-08-05 Theodore Tso + + * mk_cmds.sh.in: Create the generated .c files read-only to remind + developers they shouldn't edit them. + 2005-12-10 Theodore Ts'o * Makefile.in: Add a dependency to make sure that the Index: e2fsprogs-1.39/lib/ss/mk_cmds.sh.in =================================================================== --- e2fsprogs-1.39.orig/lib/ss/mk_cmds.sh.in 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/lib/ss/mk_cmds.sh.in 2006-09-18 17:42:57.000000000 +0200 @@ -43,6 +43,7 @@ if grep "^#__ERROR_IN_FILE" "${TMP}" > / exit 1 else rm -f "${BASE}.c" - mv "${TMP}" "${BASE}.c" + mv -f "${TMP}" "${BASE}.c" + chmod -w "${BASE}.c" exit 0 fi Index: e2fsprogs-1.39/misc/ChangeLog =================================================================== --- e2fsprogs-1.39.orig/misc/ChangeLog 2006-05-29 17:03:04.000000000 +0200 +++ e2fsprogs-1.39/misc/ChangeLog 2006-09-18 17:42:57.000000000 +0200 @@ -1,3 +1,86 @@ +2006-08-30 Eric Sandeen + + * mke2fs.c (PRS): Avoid overflow in megs calculation. + +2006-08-30 Eric Sandeen + + * mke2fs.c (PRS): Disallow > 2^32 inodes at mkfs time. + +2006-08-30 Eric Sandeen + + * dumpe2fs.c (list_desc): Use new inlines to calculate group + first & last blocks. + +2006-08-30 Eric Sandeen + + * dumpe2fs.c (list_bad_blocks): + * e2image.c (output_meta_data_blocks, write_raw_image_file): + * mke2fs.c (test_disk, handle_bad_blocks): Fix printf formats. + +2006-08-30 Eric Sandeen + + * e2image.c (mark_table_blocks): Remove unused first_block + incrementing from loop. + +2006-08-30 Eric Sandeen + + * dumpe2fs.c (list_desc, mark_table_blocks): Avoid overflows when + iterating over group descriptors on very large + filesystems. + + * e2image.c (mark_table_blocks): Change block group loop to use a + common pattern of first_block/last_block, etc. + +2006-09-12 Theodore Tso + + * tune2fs.8.in, uuidgen.1: Fix minor grammar problems. Addresses + Debian Bug #373004) + +2006-08-30 Theodore Tso + + * tune2fs.c (main), mke2fs.c (PRS): Use e2p_percent to properly + calculate the number of reserved blocks without worrying + about overflow. + + * Makefile.in (resize2fs): Remove unused (and bogus) resize2fs + rule, which shouldn't be in misc/Makefile.in + + * mke2fs.c (parse_extended_opts): Use ext2fs_div_ceil() instead of + a using an open-coded expression which was subject to + overflows. + + * filefrag.c (div_ceil, frag_report): Fix potential overflow for + really big filesystems. + +2006-08-06 Theodore Tso + + * findsuper.c (main): Improve findsuper program by printing the + uuid and label from the superblocks, as well as the + starting and ending offsets of the filesystem given the + information in the superblock. Omit by default printing + superblocks that are likely found in located in an ext3 + journal unless an explicit -j option is given. + +2006-08-05 Theodore Tso + + * mke2fs.c (PRS), util.c (check_mount): In order to force mke2fs + to create a filesystem even though it appears to be in use + or mounted, the -F (force) flag must be specified twice. + + * filefrag.c: Change EXT3_EXTENTS_FL to EXT4_EXTENTS_FL + +2006-07-15 Theodore Tso + + * mke2fs.c (PRS): Look up the default inode size in the + mke2fs.conf file. + + * mke2fs.8.in, mke2fs.c(usage): Document the -I option. + + * mke2fs.conf.5.in: Document the inode_size relation in [defaults] + and [fs_types]. + + * chattr.1.in: Fix spelling typo + 2006-05-29 Theodore Tso * filefrag.c: Add support for ancient Linux systems that do not Index: e2fsprogs-1.39/misc/Makefile.in =================================================================== --- e2fsprogs-1.39.orig/misc/Makefile.in 2006-03-27 07:58:10.000000000 +0200 +++ e2fsprogs-1.39/misc/Makefile.in 2006-09-18 17:42:57.000000000 +0200 @@ -117,10 +117,6 @@ mke2fs.static: $(MKE2FS_OBJS) $(STATIC_D $(STATIC_LIBS) $(STATIC_LIBE2P) $(STATIC_LIBBLKID) \ $(STATIC_LIBUUID) $(LIBINTL) -resize2fs: resize2fs.o $(DEPLIBS) - @echo " LD $@" - @$(CC) $(ALL_LDFLAGS) -o resize2fs resize2fs.o $(LIBS) $(LIBINTL) - chattr: $(CHATTR_OBJS) $(DEPLIBS_E2P) @echo " LD $@" @$(CC) $(ALL_LDFLAGS) -o chattr $(CHATTR_OBJS) $(LIBS_E2P) $(LIBINTL) @@ -288,10 +284,10 @@ install: all $(SMANPAGES) $(UMANPAGES) i echo " INSTALL_DATA $(man5dir)/$$i"; \ $(INSTALL_DATA) $$i $(DESTDIR)$(man5dir)/$$i; \ done - @if ! test -f $(DESTDIR)/etc/mke2fs.conf; then \ - echo " INSTALL_DATA /etc/mke2fs.conf"; \ + @if ! test -f $(DESTDIR)$(root_sysconfdir)/mke2fs.conf; then \ + echo " INSTALL_DATA $(root_sysconfdir)/mke2fs.conf"; \ $(INSTALL_DATA) $(srcdir)/mke2fs.conf \ - $(DESTDIR)/etc/mke2fs.conf; \ + $(DESTDIR)$(root_sysconfdir)/mke2fs.conf; \ fi install-strip: install Index: e2fsprogs-1.39/misc/blkid.8.in =================================================================== --- e2fsprogs-1.39.orig/misc/blkid.8.in 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/misc/blkid.8.in 2006-09-18 17:42:57.000000000 +0200 @@ -64,30 +64,16 @@ scanned but not necessarily available at Display a usage message and exit. .TP .B \-l -Look up the device that matches the search parameter specified using +Look up one device that matches the search parameter specified using the .B \-t -option, assuming that there is only one matching the search parameter. -For a system with a large number of disks, this will be more -efficient by avoiding the need to revalidate devices unless absolutely -necessary. If this option is not specified, +option. If there are multiple devices that match the specified search +parameter, then the device with the highest priority is returned, and/or +the first device found at a given priority. Device types in order of +decreasing priority are Device Mapper, EVMS, LVM, MD, and finally regular +block devices. If this option is not specified, .B blkid -will use a less efficient approach, which allows -.B blkid -to print all of the devices that match the search parameter. -.IP -This option is best used for tag searches such as -.I LABEL=data_vol -or -.IR UUID=e280469a-d06f-4c0b-b068-44f3b576029e . -If you want -.B blkid -to print all of the ext3 filesystems using a search parameter -such as -.IR TYPE=ext3 , -then this option should -.I not -be used. +will print all of the devices that match the search parameter. .TP .B \-o Display Index: e2fsprogs-1.39/misc/blkid.c =================================================================== --- e2fsprogs-1.39.orig/misc/blkid.c 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/misc/blkid.c 2006-09-18 17:42:57.000000000 +0200 @@ -15,6 +15,7 @@ #ifdef HAVE_GETOPT_H #include #else +extern int getopt(int argc, char * const argv[], const char *optstring); extern char *optarg; extern int optind; #endif Index: e2fsprogs-1.39/misc/chattr.1.in =================================================================== --- e2fsprogs-1.39.orig/misc/chattr.1.in 2005-12-31 07:00:53.000000000 +0100 +++ e2fsprogs-1.39/misc/chattr.1.in 2006-09-18 17:42:57.000000000 +0200 @@ -73,7 +73,7 @@ although it can be displayed by .BR lsattr (1). .PP The 'I' attribute is used by the htree code to indicate that a directory -is behind indexed using hashed trees. It may not be set or reset using +is being indexed using hashed trees. It may not be set or reset using .BR chattr (1), although it can be displayed by .BR lsattr (1). Index: e2fsprogs-1.39/misc/dumpe2fs.c =================================================================== --- e2fsprogs-1.39.orig/misc/dumpe2fs.c 2006-05-08 17:38:05.000000000 +0200 +++ e2fsprogs-1.39/misc/dumpe2fs.c 2006-09-19 17:05:57.000000000 +0200 @@ -130,7 +130,7 @@ static void list_desc (ext2_filsys fs) { unsigned long i; long diff; - blk_t group_blk, next_blk; + blk_t first_block, last_block; blk_t super_blk, old_desc_blk, new_desc_blk; char *block_bitmap=NULL, *inode_bitmap=NULL; int inode_blocks_per_group, old_desc_blocks, reserved_gdt; @@ -147,19 +147,20 @@ static void list_desc (ext2_filsys fs) EXT2_BLOCK_SIZE(fs->super); reserved_gdt = fs->super->s_reserved_gdt_blocks; fputc('\n', stdout); - group_blk = fs->super->s_first_data_block; + first_block = fs->super->s_first_data_block; if (fs->super->s_feature_incompat & EXT2_FEATURE_INCOMPAT_META_BG) old_desc_blocks = fs->super->s_first_meta_bg; else old_desc_blocks = fs->desc_blocks; for (i = 0; i < fs->group_desc_count; i++) { + first_block = ext2fs_group_first_block(fs, i); + last_block = ext2fs_group_last_block(fs, i); + ext2fs_super_and_bgd_loc(fs, i, &super_blk, &old_desc_blk, &new_desc_blk, 0); - next_blk = group_blk + fs->super->s_blocks_per_group; - if (next_blk > fs->super->s_blocks_count) - next_blk = fs->super->s_blocks_count; + printf (_("Group %lu: (Blocks "), i); - print_range(group_blk, next_blk - 1); + print_range(first_block, last_block); fputs(")", stdout); print_bg_opts(fs, i); has_super = ((i==0) || super_blk); @@ -188,19 +189,19 @@ static void list_desc (ext2_filsys fs) fputc('\n', stdout); fputs(_(" Block bitmap at "), stdout); print_number(fs->group_desc[i].bg_block_bitmap); - diff = fs->group_desc[i].bg_block_bitmap - group_blk; + diff = fs->group_desc[i].bg_block_bitmap - first_block; if (diff >= 0) printf(" (+%ld)", diff); fputs(_(", Inode bitmap at "), stdout); print_number(fs->group_desc[i].bg_inode_bitmap); - diff = fs->group_desc[i].bg_inode_bitmap - group_blk; + diff = fs->group_desc[i].bg_inode_bitmap - first_block; if (diff >= 0) printf(" (+%ld)", diff); fputs(_("\n Inode table at "), stdout); print_range(fs->group_desc[i].bg_inode_table, fs->group_desc[i].bg_inode_table + inode_blocks_per_group - 1); - diff = fs->group_desc[i].bg_inode_table - group_blk; + diff = fs->group_desc[i].bg_inode_table - first_block; if (diff > 0) printf(" (+%ld)", diff); printf (_("\n %d free blocks, %d free inodes, " @@ -223,7 +224,6 @@ static void list_desc (ext2_filsys fs) fputc('\n', stdout); inode_bitmap += fs->super->s_inodes_per_group / 8; } - group_blk = next_blk; } } @@ -247,10 +247,10 @@ static void list_bad_blocks(ext2_filsys return; } if (dump) { - header = fmt = "%d\n"; + header = fmt = "%u\n"; } else { - header = _("Bad blocks: %d"); - fmt = ", %d"; + header = _("Bad blocks: %u"); + fmt = ", %u"; } while (ext2fs_badblocks_list_iterate(bb_iter, &blk)) { printf(header ? header : fmt, blk); @@ -310,10 +310,10 @@ static void print_journal_information(ex "Journal first block: %u\n" "Journal sequence: 0x%08x\n" "Journal start: %u\n" - "Journal number of users: %lu\n"), - ntohl(jsb->s_blocksize), ntohl(jsb->s_maxlen), - ntohl(jsb->s_first), ntohl(jsb->s_sequence), - ntohl(jsb->s_start), ntohl(jsb->s_nr_users)); + "Journal number of users: %u\n"), + (unsigned int)ntohl(jsb->s_blocksize), (unsigned int)ntohl(jsb->s_maxlen), + (unsigned int)ntohl(jsb->s_first), (unsigned int)ntohl(jsb->s_sequence), + (unsigned int)ntohl(jsb->s_start), (unsigned int)ntohl(jsb->s_nr_users)); for (i=0; i < ntohl(jsb->s_nr_users); i++) { uuid_unparse(&jsb->s_users[i*16], str); Index: e2fsprogs-1.39/misc/e2image.c =================================================================== --- e2fsprogs-1.39.orig/misc/e2image.c 2006-03-19 03:34:00.000000000 +0100 +++ e2fsprogs-1.39/misc/e2image.c 2006-09-19 17:05:57.000000000 +0200 @@ -244,21 +244,21 @@ static int process_file_block(ext2_filsy static void mark_table_blocks(ext2_filsys fs) { - blk_t block, b; + blk_t first_block, b; unsigned int i,j; - block = fs->super->s_first_data_block; + first_block = fs->super->s_first_data_block; /* * Mark primary superblock */ - ext2fs_mark_block_bitmap(meta_block_map, block); + ext2fs_mark_block_bitmap(meta_block_map, first_block); /* * Mark the primary superblock descriptors */ for (j = 0; j < fs->desc_blocks; j++) { ext2fs_mark_block_bitmap(meta_block_map, - ext2fs_descriptor_block_loc(fs, block, j)); + ext2fs_descriptor_block_loc(fs, first_block, j)); } for (i = 0; i < fs->group_desc_count; i++) { @@ -287,7 +287,6 @@ static void mark_table_blocks(ext2_filsy ext2fs_mark_block_bitmap(meta_block_map, fs->group_desc[i].bg_inode_bitmap); } - block += fs->super->s_blocks_per_group; } } @@ -418,7 +417,7 @@ static void output_meta_data_blocks(ext2 retval = io_channel_read_blk(fs->io, blk, 1, buf); if (retval) { com_err(program_name, retval, - "error reading block %d", blk); + "error reading block %u", blk); } if (scramble_block_map && ext2fs_test_block_bitmap(scramble_block_map, blk)) @@ -517,7 +516,7 @@ static void write_raw_image_file(ext2_fi block_buf, process_dir_block, &pb); if (retval) { com_err(program_name, retval, - "while iterating over inode %d", + "while iterating over inode %u", ino); exit(1); } @@ -530,7 +529,7 @@ static void write_raw_image_file(ext2_fi process_file_block, &pb); if (retval) { com_err(program_name, retval, - "while iterating over %d", ino); + "while iterating over inode %u", ino); exit(1); } } Index: e2fsprogs-1.39/misc/filefrag.c =================================================================== --- e2fsprogs-1.39.orig/misc/filefrag.c 2006-05-29 02:51:47.000000000 +0200 +++ e2fsprogs-1.39/misc/filefrag.c 2006-09-19 17:02:36.000000000 +0200 @@ -44,9 +44,16 @@ int verbose = 0; #define FIBMAP _IO(0x00,1) /* bmap access */ #define FIGETBSZ _IO(0x00,2) /* get the block size used for bmap */ -#define EXT3_EXTENTS_FL 0x00080000 /* Inode uses extents */ +#define EXT4_EXTENTS_FL 0x00080000 /* Inode uses extents */ #define EXT3_IOC_GETFLAGS _IOR('f', 1, long) +static unsigned int div_ceil(unsigned int a, unsigned int b) +{ + if (!a) + return 0; + return ((a - 1) / b) + 1; +} + static unsigned long get_bmap(int fd, unsigned long block) { int ret; @@ -103,9 +110,9 @@ static void frag_report(const char *file (fsinfo.f_type == 0xef53)) is_ext2++; if (verbose) { - printf("Filesystem type is: %x\n", fsinfo.f_type); + printf("Filesystem type is: %lx\n", fsinfo.f_type); } - cylgroups = (fsinfo.f_blocks + fsinfo.f_bsize*8-1) / fsinfo.f_bsize*8; + cylgroups = div_ceil(fsinfo.f_blocks, fsinfo.f_bsize*8); if (verbose) { printf("Filesystem cylinder groups is approximately %ld\n", cylgroups); @@ -126,7 +133,7 @@ static void frag_report(const char *file } if (ioctl(fd, EXT3_IOC_GETFLAGS, &flags) < 0) flags = 0; - if (flags & EXT3_EXTENTS_FL) { + if (flags & EXT4_EXTENTS_FL) { printf("File is stored in extents format\n"); is_ext2 = 0; } Index: e2fsprogs-1.39/misc/findsuper.c =================================================================== --- e2fsprogs-1.39.orig/misc/findsuper.c 2006-03-19 03:34:00.000000000 +0100 +++ e2fsprogs-1.39/misc/findsuper.c 2006-09-18 17:42:57.000000000 +0200 @@ -102,6 +102,14 @@ #define WHY(fmt, arg...) { continue; } #endif +static void usage(void) +{ + fprintf(stderr, + _("Usage: findsuper device [skipbytes [startkb]]\n")); + exit(1); +} + + int main(int argc, char *argv[]) { int skiprate=512; /* one sector */ @@ -110,7 +118,8 @@ int main(int argc, char *argv[]) char *s; time_t tm, last = time(0); loff_t interval = 1024 * 1024; - + int c, print_jnl_copies = 0; + const char * device_name; struct ext2_super_block ext2; /* interesting fields: EXT2_SUPER_MAGIC * s_blocks_count s_log_block_size s_mtime s_magic s_lastcheck */ @@ -121,43 +130,66 @@ int main(int argc, char *argv[]) bindtextdomain(NLS_CAT_NAME, LOCALEDIR); textdomain(NLS_CAT_NAME); #endif - if (argc<2) { - fprintf(stderr, - _("Usage: findsuper device [skipbytes [startkb]]\n")); - exit(1); + + while ((c = getopt (argc, argv, "j")) != EOF) { + switch (c) { + case 'j': + print_jnl_copies++; + break; + default: + usage(); + } } - if (argc>2) - skiprate = strtol(argv[2], &s, 0); - if (s == argv[2]) { - fprintf(stderr,_("skipbytes should be a number, not %s\n"), s); - exit(1); + + if (optind == argc) + usage(); + + device_name = argv[optind++]; + + if (optind < argc) { + skiprate = strtol(argv[optind], &s, 0); + if (s == argv[optind]) { + fprintf(stderr,_("skipbytes should be a number, not %s\n"), s); + exit(1); + } + optind++; } if (skiprate & 0x1ff) { fprintf(stderr, _("skipbytes must be a multiple of the sector size\n")); exit(2); } - if (argc>3) - sk = skl = strtoll(argv[3], &s, 0) << 10; - if (s == argv[3]) { - fprintf(stderr,_("startkb should be a number, not %s\n"), s); - exit(1); + if (optind < argc) { + sk = skl = strtoll(argv[optind], &s, 0) << 10; + if (s == argv[optind]) { + fprintf(stderr, + _("startkb should be a number, not %s\n"), s); + exit(1); + } + optind++; } if (sk < 0) { - fprintf(stderr,_("startkb should be positive, not %Ld\n"), sk); + fprintf(stderr, _("startkb should be positive, not %Lu\n"), sk); exit(1); } - fd = open(argv[1], O_RDONLY); + + fd = open(device_name, O_RDONLY); if (fd < 0) { - perror(argv[1]); + perror(device_name); exit(1); } - + /* Now, go looking for the superblock! */ - printf(_("starting at %Ld, with %d byte increments\n"), sk, skiprate); - printf(_(" thisoff block fs_blk_sz blksz grp last_mount\n")); + printf(_("starting at %Lu, with %u byte increments\n"), sk, skiprate); + if (print_jnl_copies) + printf(_("[*] probably superblock written in the ext3 " + "journal superblock,\n\tso start/end/grp wrong\n")); + printf(_("byte_offset byte_start byte_end fs_blocks blksz grp last_mount_time sb_uuid label\n")); for (; lseek64(fd, sk, SEEK_SET) != -1 && read(fd, &ext2, 512) == 512; sk += skiprate) { + static unsigned char last_uuid[16] = "blah"; + unsigned long long bsize, grpsize; + int jnl_copy, sb_offset; if (sk && !(sk & (interval - 1))) { time_t now, diff; @@ -168,7 +200,7 @@ int main(int argc, char *argv[]) if (diff > 0) { s = ctime(&now); s[24] = 0; - printf("\r%14Ld: %8LdkB/s @ %s", sk, + printf("\r%11Lu: %8LukB/s @ %s", sk, (((sk - skl)) / diff) >> 10, s); fflush(stdout); } @@ -181,8 +213,8 @@ int main(int argc, char *argv[]) } if (ext2.s_magic != EXT2_SUPER_MAGIC) continue; - if (ext2.s_log_block_size > 4) - WHY("log block size > 4 (%u)\n", ext2.s_log_block_size); + if (ext2.s_log_block_size > 6) + WHY("log block size > 6 (%u)\n", ext2.s_log_block_size); if (ext2.s_r_blocks_count > ext2.s_blocks_count) WHY("r_blocks_count > blocks_count (%u > %u)\n", ext2.s_r_blocks_count, ext2.s_blocks_count); @@ -194,14 +226,34 @@ int main(int argc, char *argv[]) ext2.s_free_inodes_count, ext2.s_inodes_count); tm = ext2.s_mtime; - s=ctime(&tm); - s[24]=0; - printf("\r%14Ld %9Ld %9d %5d %4d %s\n", - sk, sk >> 10, ext2.s_blocks_count, - 1 << (ext2.s_log_block_size + 10), - ext2.s_block_group_nr, s); + s = ctime(&tm); + s[24] = 0; + bsize = 1 << (ext2.s_log_block_size + 10); + grpsize = bsize * ext2.s_blocks_per_group; + if (memcmp(ext2.s_uuid, last_uuid, sizeof(last_uuid)) == 0 && + ext2.s_rev_level > 0 && ext2.s_block_group_nr == 0) { + jnl_copy = 1; + } else { + jnl_copy = 0; + memcpy(last_uuid, ext2.s_uuid, sizeof(last_uuid)); + } + if (ext2.s_block_group_nr == 0 || bsize == 1024) + sb_offset = 1024; + else + sb_offset = 0; + if (jnl_copy && !print_jnl_copies) + continue; + printf("\r%11Lu %11Lu%s %11Lu%s %9u %5Lu %4u%s %s %02x%02x%02x%02x %s\n", + sk, sk - ext2.s_block_group_nr * grpsize - sb_offset, + jnl_copy ? "*":" ", + sk + ext2.s_blocks_count * bsize - + ext2.s_block_group_nr * grpsize - sb_offset, + jnl_copy ? "*" : " ", ext2.s_blocks_count, bsize, + ext2.s_block_group_nr, jnl_copy ? "*" : " ", s, + ext2.s_uuid[0], ext2.s_uuid[1], + ext2.s_uuid[2], ext2.s_uuid[3], ext2.s_volume_name); } - printf(_("\n%14Ld: finished with errno %d\n"), sk, errno); + printf(_("\n%11Lu: finished with errno %d\n"), sk, errno); close(fd); return errno; Index: e2fsprogs-1.39/misc/mke2fs.8.in =================================================================== --- e2fsprogs-1.39.orig/misc/mke2fs.8.in 2006-05-29 03:39:03.000000000 +0200 +++ e2fsprogs-1.39/misc/mke2fs.8.in 2006-09-18 17:42:57.000000000 +0200 @@ -30,6 +30,10 @@ mke2fs \- create an ext2/ext3 filesystem .I bytes-per-inode ] [ +.B \-I +.I inode-size +] +[ .B \-j ] [ @@ -191,8 +195,13 @@ Specify the size of fragments in bytes. .B \-F Force .B mke2fs -to run, even if the specified device is not a -block special device, or appears to be mounted. +to create a filesystem, even if the specified device is not a partition +on a block special device, or if other parameters do not make sense. +In order to force +.B mke2fs +to create a filesystem even if the filesystem appears to be in use +or is mounted (a truly dangerous thing to do), this option must be +specified twice. .TP .BI \-g " blocks-per-group" Specify the number of blocks in a block group. There is generally no @@ -218,6 +227,23 @@ be smaller than the blocksize of the fil inodes will be made. Be warned that is not possible to expand the number of inodes on a filesystem after it is created, so be careful deciding the correct value for this parameter. +.TP +.BI \-I " inode-size" +Specify the size of each inode in bytes. +.B mke2fs +creates 128-byte inodes by default. In kernels after 2.6.10 and some +earlier vendor kernels it is possible to utilize larger inodes to store +extended attributes for improved performance. The +.I inode-size +value must be a power of two larger or equal to 128. The larger the +.I inode-size +the more space the inode table will consume, and this reduces the usable +space in the filesystem and can also negatively impact performance. Using +the default value is always safe, though it may be desirable to use 256-byte +inodes if full backward compatibility is not a concern. Extended attributes +stored in large inodes are not visible with older kernels, and such +filesystems will not be mountable with 2.4 kernels at all. It is not +possible to change this value after the filesystem is created. .TP .B \-j Create the filesystem with an ext3 journal. If the Index: e2fsprogs-1.39/misc/mke2fs.c =================================================================== --- e2fsprogs-1.39.orig/misc/mke2fs.c 2006-05-13 15:16:57.000000000 +0200 +++ e2fsprogs-1.39/misc/mke2fs.c 2006-09-19 17:05:57.000000000 +0200 @@ -94,11 +94,12 @@ int linux_version_code = 0; static void usage(void) { fprintf(stderr, _("Usage: %s [-c|-t|-l filename] [-b block-size] " - "[-f fragment-size]\n\t[-i bytes-per-inode] [-j] [-J journal-options]" - " [-N number-of-inodes]\n\t[-m reserved-blocks-percentage] " - "[-o creator-os] [-g blocks-per-group]\n\t[-L volume-label] " - "[-M last-mounted-directory] [-O feature[,...]]\n\t" - "[-r fs-revision] [-R options] [-qvSV] device [blocks-count]\n"), + "[-f fragment-size]\n\t[-i bytes-per-inode] [-I inode-size] " + "[-j] [-J journal-options]\n" + "\t[-N number-of-inodes] [-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] [-R options] [-qvSV]\n\tdevice [blocks-count]\n"), program_name); exit(1); } @@ -188,7 +189,7 @@ static void test_disk(ext2_filsys fs, ba errcode_t retval; char buf[1024]; - sprintf(buf, "badblocks -b %d -X %s%s%s %d", fs->blocksize, + sprintf(buf, "badblocks -b %d -X %s%s%s %u", fs->blocksize, quiet ? "" : "-s ", (cflag > 1) ? "-w " : "", fs->device_name, fs->super->s_blocks_count); if (verbose) @@ -232,7 +233,7 @@ static void handle_bad_blocks(ext2_filsy if (ext2fs_badblocks_list_test(bb_list, i)) { fprintf(stderr, _("Block %d in primary " "superblock/group descriptor area bad.\n"), i); - fprintf(stderr, _("Blocks %u through %d must be good " + fprintf(stderr, _("Blocks %u through %u must be good " "in order to build a filesystem.\n"), fs->super->s_first_data_block, must_be_good); fputs(_("Aborting....\n"), stderr); @@ -819,12 +820,12 @@ static void parse_extended_opts(struct e if (!bpg) bpg = blocksize * 8; gdpb = blocksize / sizeof(struct ext2_group_desc); - group_desc_count = (param->s_blocks_count + - bpg - 1) / bpg; + group_desc_count = + ext2fs_div_ceil(param->s_blocks_count, bpg); desc_blocks = (group_desc_count + gdpb - 1) / gdpb; - rsv_groups = (resize + bpg - 1) / bpg; - rsv_gdb = (rsv_groups + gdpb - 1) / gdpb - + rsv_groups = ext2fs_div_ceil(resize, bpg); + rsv_gdb = ext2fs_div_ceil(rsv_groups, gdpb) - desc_blocks; if (rsv_gdb > (int) EXT2_ADDR_PER_BLOCK(param)) rsv_gdb = EXT2_ADDR_PER_BLOCK(param); @@ -870,7 +871,7 @@ static void syntax_err_report(const char exit(1); } -static const char *config_fn[] = { "/etc/mke2fs.conf", 0 }; +static const char *config_fn[] = { ROOT_SYSCONFDIR "/mke2fs.conf", 0 }; static void edit_feature(const char *str, __u32 *compat_array) { @@ -895,7 +896,7 @@ static void PRS(int argc, char *argv[]) double reserved_ratio = 5.0; int sector_size = 0; int show_version_only = 0; - ext2_ino_t num_inodes = 0; + __u64 num_inodes = 0; /* u64 to catch too-large input */ errcode_t retval; char * oldpath = getenv("PATH"); char * extended_opts = 0; @@ -1076,7 +1077,6 @@ static void PRS(int argc, char *argv[]) case 's': /* deprecated */ s_opt = atoi(optarg); break; -#ifdef EXT2_DYNAMIC_REV case 'I': inode_size = strtoul(optarg, &tmp, 0); if (*tmp) { @@ -1085,12 +1085,11 @@ static void PRS(int argc, char *argv[]) exit(1); } break; -#endif case 'v': verbose = 1; break; case 'F': - force = 1; + force++; break; case 'L': volume_label = optarg; @@ -1261,7 +1260,7 @@ static void PRS(int argc, char *argv[]) } if (!fs_type) { - int megs = fs_param.s_blocks_count * + int megs = (__u64)fs_param.s_blocks_count * (EXT2_BLOCK_SIZE(&fs_param) / 1024) / 1024; if (megs <= 3) @@ -1413,7 +1412,15 @@ static void PRS(int argc, char *argv[]) "blocksizes greater than 4096\n\tusing ext3. " "Use -b 4096 if this is an issue for you.\n\n")); - if (inode_size) { + if (inode_size == 0) { + profile_get_integer(profile, "defaults", "inode_size", NULL, + 0, &inode_size); + profile_get_integer(profile, "fs_types", fs_type, + "inode_size", inode_size, + &inode_size); + } + + if (inode_size && fs_param.s_rev_level >= EXT2_DYNAMIC_REV) { if (inode_size < EXT2_GOOD_OLD_INODE_SIZE || inode_size > EXT2_BLOCK_SIZE(&fs_param) || inode_size & (inode_size - 1)) { @@ -1425,11 +1432,26 @@ static void PRS(int argc, char *argv[]) } if (inode_size != EXT2_GOOD_OLD_INODE_SIZE) fprintf(stderr, _("Warning: %d-byte inodes not usable " - "on most systems\n"), + "on older systems\n"), inode_size); fs_param.s_inode_size = inode_size; } + /* Make sure number of inodes specified will fit in 32 bits */ + if (num_inodes == 0) { + __u64 n; + n = (__u64) fs_param.s_blocks_count * blocksize / inode_ratio; + if (n > ~0U) { + com_err(program_name, 0, + _("too many inodes (%llu), raise inode ratio?"), n); + exit(1); + } + } else if (num_inodes > ~0U) { + com_err(program_name, 0, + _("too many inodes (%llu), specify < 2^32 inodes"), + (__u64)num_inodes); + exit(1); + } /* * Calculate number of inodes based on the inode ratio */ @@ -1440,8 +1462,8 @@ static void PRS(int argc, char *argv[]) /* * Calculate number of blocks to reserve */ - fs_param.s_r_blocks_count = (fs_param.s_blocks_count * reserved_ratio) - / 100; + fs_param.s_r_blocks_count = e2p_percent(reserved_ratio, + fs_param.s_blocks_count); } int main (int argc, char *argv[]) Index: e2fsprogs-1.39/misc/mke2fs.conf.5.in =================================================================== --- e2fsprogs-1.39.orig/misc/mke2fs.conf.5.in 2006-05-22 23:50:10.000000000 +0200 +++ e2fsprogs-1.39/misc/mke2fs.conf.5.in 2006-09-18 17:42:57.000000000 +0200 @@ -131,6 +131,12 @@ This relation specifies the default inod specify one on the command line, and the filesystem-type specific section of the configuration file does not specify a default inode ratio. +.TP +.I inode_size +This relation specifies the default inode size if the user does not +specify one on the command line, and the filesystem-type +specific section of the configuration file does not specify a default +inode size. .SH THE [fs_types] STANZA Each tag in the .I [fs_types] @@ -181,6 +187,10 @@ specify a blocksize on the command line. .I inode_ratio This relation specifies the default inode ratio if the user does not specify one on the command line. +.TP +.I inode_size +This relation specifies the default inode size if the user does not +specify one on the command line. .SH FILES .TP .I /etc/mke2fs.conf Index: e2fsprogs-1.39/misc/tune2fs.8.in =================================================================== --- e2fsprogs-1.39.orig/misc/tune2fs.8.in 2006-05-15 00:07:44.000000000 +0200 +++ e2fsprogs-1.39/misc/tune2fs.8.in 2006-09-18 17:42:57.000000000 +0200 @@ -182,8 +182,8 @@ It is strongly recommended that either (time-dependent) checking be enabled to force periodic full .BR e2fsck (8) checking of the filesystem. Failure to do so may lead to filesystem -corruption due to bad disks, cables, memory, or kernel bugs to go -unnoticed until they cause data loss or corruption. +corruption (due to bad disks, cables, memory, or kernel bugs) going +unnoticed, ultimately resulting in data loss or corruption. .TP .B \-j Add an ext3 journal to the filesystem. If the @@ -329,7 +329,7 @@ of the directory in which they were crea is the default, where newly created files take on the fsgid of the current process, unless the directory has the setgid bit set, in which case it takes the gid from the parent directory, and also gets the setgid bit set if it is -directory itself. +a directory itself. .TP .B user_xattr Enable user-specified extended attributes. @@ -436,7 +436,7 @@ be used to set the last checked time on of .I time-last-checked is the international date format, with an optional time specifier, i.e. -YYYYMMDD[[HHMM]SS]. The keyword +YYYYMMDD[HH[MM[SS]]]. The keyword .B now is also accepted, in which case the last checked time will be set to the current time. Index: e2fsprogs-1.39/misc/tune2fs.c =================================================================== --- e2fsprogs-1.39.orig/misc/tune2fs.c 2006-05-14 23:21:25.000000000 +0200 +++ e2fsprogs-1.39/misc/tune2fs.c 2006-09-19 17:05:57.000000000 +0200 @@ -823,7 +823,8 @@ int main (int argc, char ** argv) printf (_("Setting interval between checks to %lu seconds\n"), interval); } if (m_flag) { - sb->s_r_blocks_count = sb->s_blocks_count * reserved_ratio /100; + sb->s_r_blocks_count = e2p_percent(reserved_ratio, + sb->s_blocks_count); ext2fs_mark_super_dirty(fs); printf (_("Setting reserved blocks percentage to %g%% (%u blocks)\n"), reserved_ratio, sb->s_r_blocks_count); Index: e2fsprogs-1.39/misc/util.c =================================================================== --- e2fsprogs-1.39.orig/misc/util.c 2006-03-23 13:38:10.000000000 +0100 +++ e2fsprogs-1.39/misc/util.c 2006-09-19 17:02:36.000000000 +0200 @@ -154,7 +154,7 @@ void check_mount(const char *device, int } if (mount_flags & EXT2_MF_MOUNTED) { fprintf(stderr, _("%s is mounted; "), device); - if (force) { + if (force > 2) { fputs(_("mke2fs forced anyway. Hope /etc/mtab is " "incorrect.\n"), stderr); return; @@ -166,7 +166,7 @@ void check_mount(const char *device, int if (mount_flags & EXT2_MF_BUSY) { fprintf(stderr, _("%s is apparently in use by the system; "), device); - if (force) { + if (force > 2) { fputs(_("mke2fs forced anyway.\n"), stderr); return; } Index: e2fsprogs-1.39/misc/uuidgen.1.in =================================================================== --- e2fsprogs-1.39.orig/misc/uuidgen.1.in 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/misc/uuidgen.1.in 2006-09-18 17:42:57.000000000 +0200 @@ -34,6 +34,10 @@ will generate a random-based UUID if a h generator is present. Otherwise, it will chose a time-based UUID. It is possible to force the generation of one of these two UUID types by using the +.PP +A UUID of the form 1b4e28ba-2fa1-11d2-883f-b9a761bde3fb (in +.BR printf (3) +format "%08x-%04x-%04x-%04x-%012x") is output to the standard output. .B \-r or .B \-t @@ -49,10 +53,6 @@ quality random number generator, such as .B \-t Generate a time-based UUID. This method creates a UUID based on the system clock plus the system's ethernet hardware address, if present. -.SH RETURN VALUE -The UUID of the form 1b4e28ba-2fa1-11d2-883f-b9a761bde3fb (in -.BR printf (3) -format "%08x-%04x-%04x-%04x-%012x") is output to the standard output. .SH "CONFORMING TO" OSF DCE 1.1 .SH AUTHOR Index: e2fsprogs-1.39/misc/uuidgen.c =================================================================== --- e2fsprogs-1.39.orig/misc/uuidgen.c 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/misc/uuidgen.c 2006-09-18 17:42:57.000000000 +0200 @@ -16,6 +16,7 @@ #ifdef HAVE_GETOPT_H #include #else +extern int getopt(int argc, char * const argv[], const char *optstring); extern char *optarg; extern int optind; #endif Index: e2fsprogs-1.39/po/ChangeLog =================================================================== --- e2fsprogs-1.39.orig/po/ChangeLog 2006-04-10 00:32:44.000000000 +0200 +++ e2fsprogs-1.39/po/ChangeLog 2006-09-18 17:42:57.000000000 +0200 @@ -1,3 +1,11 @@ +2006-09-13 Theodore Tso + + * Update French and Dutch translations + +2006-08-19 Theodore Tso + + * LI?NGUAS, vi.po, vi.gmo: Add Vietnamese translation + 2006-04-09 Theodore Ts'o * Update French, Dutch, Polish, Swedish, and Turkish translations. Index: e2fsprogs-1.39/po/LINGUAS =================================================================== --- e2fsprogs-1.39.orig/po/LINGUAS 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/po/LINGUAS 2006-09-18 17:42:57.000000000 +0200 @@ -1 +1,2 @@ -cs de es fr it nl pl rw sv tr +cs de es fr it nl pl rw sv tr vi + Index: e2fsprogs-1.39/po/fr.po =================================================================== --- e2fsprogs-1.39.orig/po/fr.po 2006-04-10 00:30:58.000000000 +0200 +++ e2fsprogs-1.39/po/fr.po 2006-09-18 17:42:57.000000000 +0200 @@ -62,7 +62,7 @@ #. msgid "" msgstr "" -"Project-Id-Version: GNU e2fsprogs 1.38-b3\n" +"Project-Id-Version: GNU e2fsprogs 1.39-b2\n" "Report-Msgid-Bugs-To: tytso@alum.mit.edu\n" "POT-Creation-Date: 2006-03-29 15:30-0500\n" "PO-Revision-Date: 2006-04-07 01:45+0200\n" @@ -102,8 +102,7 @@ msgstr "lors de la tentative d'ouverture #: e2fsck/badblocks.c:93 misc/mke2fs.c:177 msgid "while reading in list of bad blocks from file" -msgstr "" -"lors de la lecture de la liste des blocs dfectueux partir du fichier" +msgstr "lors de la lecture de la liste des blocs dfectueux partir du fichier" #: e2fsck/badblocks.c:103 msgid "while updating bad block inode" @@ -180,8 +179,7 @@ msgstr "Usage: %s disque\n" #: e2fsck/flushb.c:63 #, c-format msgid "BLKFLSBUF ioctl not supported! Can't flush buffers.\n" -msgstr "" -"L'ioctl BLKFLSBUF n'est pas support! Impossible de vider les tampons.\n" +msgstr "L'ioctl BLKFLSBUF n'est pas support! Impossible de vider les tampons.\n" #: e2fsck/iscan.c:46 #, c-format @@ -506,7 +504,7 @@ msgstr "(pas d'invite)" #: e2fsck/problem.c:51 msgid "Fix" -msgstr "Rparer" +msgstr "Corriger" #: e2fsck/problem.c:52 msgid "Clear" @@ -586,7 +584,7 @@ msgstr "(AUCUN)" #: e2fsck/problem.c:79 msgid "FIXED" -msgstr "RPAR" +msgstr "CORRIG" #: e2fsck/problem.c:80 msgid "CLEARED" @@ -825,8 +823,7 @@ msgstr "Le @j externe ne supporte pas ce #: e2fsck/problem.c:212 msgid "" "Ext3 @j @S is unknown type %N (unsupported).\n" -"It is likely that your copy of e2fsck is old and/or doesn't support this @j " -"format.\n" +"It is likely that your copy of e2fsck is old and/or doesn't support this @j format.\n" "It is also possible the @j @S is corrupt.\n" msgstr "" "Le @S du @j Ext3 est de type inconnu%N (non support).\n" @@ -843,20 +840,17 @@ msgstr "Le @S du @j Ext3 est corrompu.\n #: e2fsck/problem.c:225 #, c-format msgid "@S doesn't have has_@j flag, but has ext3 @j %s.\n" -msgstr "" -"Le @S ne semble pas avoir le drapeau has_journal, mais a un %s de @j ext3.\n" +msgstr "Le @S ne semble pas avoir le drapeau has_journal, mais a un %s de @j ext3.\n" #. @-expanded: superblock has ext3 needs_recovery flag set, but no journal.\n #: e2fsck/problem.c:230 msgid "@S has ext3 needs_recovery flag set, but no @j.\n" -msgstr "" -"Le @S a le drapeau ext3 needs_recovery activ, mais n'a pas de de @j.\n" +msgstr "Le @S a le drapeau ext3 needs_recovery activ, mais n'a pas de de @j.\n" #. @-expanded: ext3 recovery flag is clear, but journal has data.\n #: e2fsck/problem.c:235 msgid "ext3 recovery flag is clear, but @j has data.\n" -msgstr "" -"le drapeau ext3 recovery n'est pas activ, mais le @j contient des donnes.\n" +msgstr "le drapeau ext3 recovery n'est pas activ, mais le @j contient des donnes.\n" #. @-expanded: Clear journal #: e2fsck/problem.c:240 @@ -871,9 +865,7 @@ msgstr "Excuter quand mme le @j" #. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n #: e2fsck/problem.c:250 msgid "Recovery flag not set in backup @S, so running @j anyway.\n" -msgstr "" -"Le drapeau recovery n'est pas activ dans le @S de secours, le @j sera donc " -"quand mme excut.\n" +msgstr "Le drapeau recovery n'est pas activ dans le @S de secours, le @j sera donc quand mme excut.\n" #. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n #: e2fsck/problem.c:255 @@ -905,22 +897,17 @@ msgstr "@i %i @I dans la liste des @is @ #. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem. #: e2fsck/problem.c:280 e2fsck/problem.c:608 msgid "@f has feature flag(s) set, but is a revision 0 @f. " -msgstr "" -"le @f a des drapeaux de fonctionnalits activs mais est un @f de version 0. " +msgstr "le @f a des drapeaux de fonctionnalits activs mais est un @f de version 0. " #. @-expanded: Ext3 journal superblock has an unknown read-only feature flag set.\n #: e2fsck/problem.c:285 msgid "Ext3 @j @S has an unknown read-only feature flag set.\n" -msgstr "" -"Le @S du @j Ext3 a un drapeau de fonctionnalits inconnu slectionn en " -"lecture seule.\n" +msgstr "Le @S du @j Ext3 a un drapeau de fonctionnalits inconnu slectionn en lecture seule.\n" #. @-expanded: Ext3 journal superblock has an unknown incompatible feature flag set.\n #: e2fsck/problem.c:290 msgid "Ext3 @j @S has an unknown incompatible feature flag set.\n" -msgstr "" -"Le @S du @j Ext3 contient un drapeau non reconnu de fonctionnalits " -"incompatibles.\n" +msgstr "Le @S du @j Ext3 contient un drapeau non reconnu de fonctionnalits incompatibles.\n" #. @-expanded: journal version not supported by this e2fsck.\n #: e2fsck/problem.c:295 @@ -985,9 +972,7 @@ msgstr "" #. @-expanded: Resize_inode not enabled, but the resize inode is non-zero. #: e2fsck/problem.c:327 msgid "Resize_@i not enabled, but the resize @i is non-zero. " -msgstr "" -"Resize_inode n'est pas activ, mais l'@i de changement de taille n'est pas " -"nul. " +msgstr "Resize_inode n'est pas activ, mais l'@i de changement de taille n'est pas nul. " #. @-expanded: Resize inode not valid. #: e2fsck/problem.c:332 @@ -1023,7 +1008,7 @@ msgstr "l'@r n'est pas un @d. " #. @-expanded: root inode has dtime set (probably due to old mke2fs). #: e2fsck/problem.c:362 msgid "@r has dtime set (probably due to old mke2fs). " -msgstr "@r a un dtime initialis (probablement en raison d'un vieux mke2fs). " +msgstr "l'@r a un dtime (probablement en raison d'un vieux mke2fs). " #. @-expanded: Reserved inode %i (%Q) has invalid mode. #: e2fsck/problem.c:367 @@ -1040,7 +1025,7 @@ msgstr "l'@i @D %i a un dtime zro. " #: e2fsck/problem.c:377 #, c-format msgid "@i %i is in use, but has dtime set. " -msgstr "l'@i %i est utilis, mais a un dtime initialis. " +msgstr "l'@i %i est utilis, mais a un dtime. " #. @-expanded: inode %i is a zero-length directory. #: e2fsck/problem.c:382 @@ -1123,8 +1108,7 @@ msgstr "@b dupliqu ou dfectueux actuel #. @-expanded: Bad block %b used as bad block inode indirect block. #: e2fsck/problem.c:457 msgid "Bad @b %b used as bad @b @i indirect @b. " -msgstr "" -"%b dfectueux utilis en tant que @b indirect d'@i des @bs dfectueux. " +msgstr "%b dfectueux utilis en tant que @b indirect d'@i des @bs dfectueux. " #. @-expanded: \n #. @-expanded: The bad block inode has probably been corrupted. You probably\n @@ -1173,9 +1157,7 @@ msgstr "Le @S primaire (%b) est sur la l #. @-expanded: Block %b in the primary group descriptors is on the bad block list\n #: e2fsck/problem.c:485 msgid "Block %b in the primary @g descriptors is on the bad @b list\n" -msgstr "" -"Le bloc %b dans les descripteurs de @gs primaires est dans la liste des @bs " -"dfectueux\n" +msgstr "Le bloc %b dans les descripteurs de @gs primaires est dans la liste des @bs dfectueux\n" #. @-expanded: Warning: Group %g's superblock (%b) is bad.\n #: e2fsck/problem.c:491 @@ -1185,16 +1167,12 @@ msgstr "Avertissement: le @S (%b) du @g #. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n #: e2fsck/problem.c:496 msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n" -msgstr "" -"Avertissement: la copie des descripteurs de @gs du @g %g a un @b (%b) " -"dfectueux.\n" +msgstr "Avertissement: la copie des descripteurs de @gs du @g %g a un @b (%b) dfectueux.\n" #. @-expanded: Programming error? block #%b claimed for no reason in process_bad_block.\n #: e2fsck/problem.c:502 msgid "Programming error? @b #%b claimed for no reason in process_bad_@b.\n" -msgstr "" -"Erreur de programmation? @b n%b reclam sans aucune raison dans " -"process_bad_block.\n" +msgstr "Erreur de programmation? @b n%b reclam sans aucune raison dans process_bad_block.\n" #. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n #: e2fsck/problem.c:508 @@ -1265,16 +1243,12 @@ msgstr "Erreur lors de la boucle d'itra #. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n #: e2fsck/problem.c:568 msgid "Error storing @i count information (@i=%i, count=%N): %m\n" -msgstr "" -"Erreur lors du stockage du compteur d'information d'@i (@i=%i, " -"compteur=%N): %m\n" +msgstr "Erreur lors du stockage du compteur d'information d'@i (@i=%i, compteur=%N): %m\n" #. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n #: e2fsck/problem.c:573 msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n" -msgstr "" -"Erreur lors du stockage de l'information du @b de @ds (@i=%i, @b=%b, " -"num=%N): %m\n" +msgstr "Erreur lors du stockage de l'information du @b de @ds (@i=%i, @b=%b, num=%N): %m\n" #. @-expanded: Error reading inode %i: %m\n #: e2fsck/problem.c:579 @@ -1303,9 +1277,7 @@ msgstr "" #: e2fsck/problem.c:598 #, c-format msgid "@i %i has @cion flag set on @f without @cion support. " -msgstr "" -"l'@i %i a le drapeau de @cion qui est initialis sur un @f sans support de " -"@cion. " +msgstr "l'@i %i a le drapeau de @cion qui est initialis sur un @f sans support de @cion. " #. @-expanded: Special (device/socket/fifo) inode %i has non-zero size. #: e2fsck/problem.c:603 @@ -1332,9 +1304,7 @@ msgstr "l'@i %i fait partie de la liste #. @-expanded: inodes that were part of a corrupted orphan linked list found. #: e2fsck/problem.c:629 msgid "@is that were part of a corrupted orphan linked list found. " -msgstr "" -"des @is qui faisaient partie d'un liste chane d'orphelins corrompue ont " -"t reprs. " +msgstr "des @is qui faisaient partie d'une liste chane d'orphelins corrompue ont t reprs. " #. @-expanded: error allocating refcount structure (%N): %m\n #: e2fsck/problem.c:634 @@ -1416,8 +1386,7 @@ msgstr "le @b n%B (%b) rend le lien sym #: e2fsck/problem.c:708 #, c-format msgid "@i %i has INDEX_FL flag set on @f without htree support.\n" -msgstr "" -"l'@i %i a le drapeau INDEX_FL activ sur le @f sans support des htrees.\n" +msgstr "l'@i %i a le drapeau INDEX_FL activ sur le @f sans support des htrees.\n" #. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n #: e2fsck/problem.c:713 @@ -1453,9 +1422,7 @@ msgstr "l'@h %i a une hauteur d'arbre (% msgid "" "Bad @b @i has an indirect @b (%b) that conflicts with\n" "@f metadata. " -msgstr "" -"l'@i des @bs dfectueux a un @b indirect (%b) qui entre en conflit avec les " -"mtadonnes du @f. " +msgstr "l'@i des @bs dfectueux a un @b indirect (%b) qui entre en conflit avec les mtadonnes du @f. " #. @-expanded: Resize inode (re)creation failed: %m. #: e2fsck/problem.c:744 @@ -1503,8 +1470,7 @@ msgid "" "Pass 1B: Rescanning for @m @bs\n" msgstr "" "\n" -"Excution de passes additionnelles pour rsoudre les problmes de @bs " -"rclams par plus d'un @i...\n" +"Excution de passes additionnelles pour rsoudre les problmes de @bs rclams par plus d'un @i...\n" "Passe1B: r-examen pour les @bs @m\n" #. @-expanded: multiply-claimed block(s) in inode %i: @@ -1797,7 +1763,7 @@ msgstr "l'@i %i (%Q) est une socket @I.\ #. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n #: e2fsck/problem.c:1069 msgid "Setting filetype for @E to %N.\n" -msgstr "Dfinition du type de fichiers pour l'@E %N.\n" +msgstr "Dfinition du type de fichier pour l'@E %N.\n" #. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n #: e2fsck/problem.c:1074 @@ -1827,9 +1793,7 @@ msgstr "le @b d'@a @F @n (%If).\n" #. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n #: e2fsck/problem.c:1099 msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n" -msgstr "" -"le @f contient de grands fichiers, mais n'a pas le drapeau LARGE_FILE activ " -"dans le @S.\n" +msgstr "le @f contient de grands fichiers, mais n'a pas le drapeau LARGE_FILE activ dans le @S.\n" #. @-expanded: problem in HTREE directory inode %d: node (%B) not referenced\n #: e2fsck/problem.c:1104 @@ -1985,17 +1949,13 @@ msgstr "ext2fs_new_@i: %m lors de la te #: e2fsck/problem.c:1240 #, c-format msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n" -msgstr "" -"ext2fs_new_dir_@b: %m lors de la tentative de cration d'un nouveau @b de " -"@d\n" +msgstr "ext2fs_new_dir_@b: %m lors de la tentative de cration d'un nouveau @b de @d\n" #. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n #: e2fsck/problem.c:1245 #, c-format msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n" -msgstr "" -"ext2fs_write_dir_@b: %m lors de la tentative d'criture du @b de @d pour /" -"@l\n" +msgstr "ext2fs_write_dir_@b: %m lors de la tentative d'criture du @b de @d pour /@l\n" #. @-expanded: Error while adjusting inode count on inode %i\n #: e2fsck/problem.c:1250 @@ -2133,14 +2093,12 @@ msgstr "diffrences de @B d'@is: " #. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n #: e2fsck/problem.c:1418 msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n" -msgstr "" -"Le dcompte des @is libres est erron pour le @g n%g (%i, dcompt=%j).\n" +msgstr "Le dcompte des @is libres est erron pour le @g n%g (%i, dcompt=%j).\n" #. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n #: e2fsck/problem.c:1423 msgid "Directories count wrong for @g #%g (%i, counted=%j).\n" -msgstr "" -"Le dcompte des rpertoires est erron pour le @g n%g (%i, dcompt=%j).\n" +msgstr "Le dcompte des rpertoires est erron pour le @g n%g (%i, dcompt=%j).\n" #. @-expanded: Free inodes count wrong (%i, counted=%j).\n #: e2fsck/problem.c:1428 @@ -2150,8 +2108,7 @@ msgstr "Le dcompte des @is libres est e #. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n #: e2fsck/problem.c:1433 msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n" -msgstr "" -"Le dcompte des @bs libres est erron pour le @g n%g (%b, dcompt=%c).\n" +msgstr "Le dcompte des @bs libres est erron pour le @g n%g (%b, dcompt=%c).\n" #. @-expanded: Free blocks count wrong (%b, counted=%c).\n #: e2fsck/problem.c:1438 @@ -2161,13 +2118,8 @@ msgstr "Le dcompte des @bs libres est e #. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap #. @-expanded: endpoints (%i, %j)\n #: e2fsck/problem.c:1443 -msgid "" -"PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B " -"endpoints (%i, %j)\n" -msgstr "" -"ERREUR DE PROGRAMMATION: les points de terminaisons (%b, %c) de @Bs " -"du @f (n%N) ne concordent pas avec les points de terminaison de @Bs " -"calculs (%i, %j)\n" +msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n" +msgstr "ERREUR DE PROGRAMMATION: les points de terminaisons (%b, %c) de @Bs du @f (n%N) ne concordent pas avec les points de terminaison de @Bs calculs (%i, %j)\n" #: e2fsck/problem.c:1449 msgid "Internal error: fudging end of bitmap (%N)\n" @@ -2255,8 +2207,7 @@ msgstr "lors de l'criture de la table d #: e2fsck/swapfs.c:223 #, c-format msgid "Pass 0: Doing byte-swap of filesystem\n" -msgstr "" -"Passe 0: traitement de l'change octet par octet du systme de fichiers\n" +msgstr "Passe 0: traitement de l'change octet par octet du systme de fichiers\n" #: e2fsck/swapfs.c:230 #, c-format @@ -2293,8 +2244,7 @@ msgid "" " -p Automatic repair (no questions)\n" " -n Make no changes to the filesystem\n" " -y Assume \"yes\" to all questions\n" -" -c Check for bad blocks and add them to the badblock " -"list\n" +" -c Check for bad blocks and add them to the badblock list\n" " -f Force checking even if filesystem is marked clean\n" msgstr "" "\n" @@ -2335,7 +2285,7 @@ msgstr "%s: %d/%d fichiers (%0d.%d%% no #: e2fsck/unix.c:133 #, c-format msgid " # of inodes with ind/dind/tind blocks: %d/%d/%d\n" -msgstr " n d'i-noeuds avec des blocs ind/dind/tind: %d/%d/%d\n" +msgstr " nombre d'i-noeuds avec des blocs ind/dind/tind: %d/%d/%d\n" #: e2fsck/unix.c:177 misc/badblocks.c:779 misc/tune2fs.c:792 misc/util.c:151 #: resize/main.c:184 @@ -2483,9 +2433,7 @@ msgstr "Impossible de rsoudre %s" #: e2fsck/unix.c:782 #, c-format msgid "Incompatible options not allowed when byte-swapping.\n" -msgstr "" -"Les options incompatibles ne sont pas autorises lors de l'changes " -"d'octets.\n" +msgstr "Les options incompatibles ne sont pas autorises lors de l'changes d'octets.\n" #: e2fsck/unix.c:789 #, c-format @@ -2577,9 +2525,7 @@ msgstr "lors de la vrification du journ #: e2fsck/unix.c:1021 #, c-format -msgid "" -"Warning: skipping journal recovery because doing a read-only filesystem " -"check.\n" +msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n" msgstr "" "Avertissement: saute la rcupration du journal puisque l'on\n" "procde l'examen d'un systme de fichiers en lecture seule.\n" @@ -2805,8 +2751,7 @@ msgstr "complt #, c-format msgid "" "Usage: %s [-b block_size] [-i input_file] [-o output_file] [-svwnf]\n" -" [-c blocks_at_once] [-p num_passes] [-t test_pattern [-t test_pattern " -"[...]]]\n" +" [-c blocks_at_once] [-p num_passes] [-t test_pattern [-t test_pattern [...]]]\n" " device [last_block [start_block]]\n" msgstr "" "Usage: %s [-b taille_de_bloc] [-i fichier_d_entre]\n" @@ -2877,8 +2822,7 @@ msgstr "" #: misc/badblocks.c:597 msgid "Checking for bad blocks (non-destructive read-write test)\n" -msgstr "" -"Vrification des blocs dfectueux (test non destructif de lecture-criture)\n" +msgstr "Vrification des blocs dfectueux (test non destructif de lecture-criture)\n" #: misc/badblocks.c:604 msgid "" @@ -3035,8 +2979,7 @@ msgstr "Vous devez utiliser -v, = - #: misc/dumpe2fs.c:53 #, c-format msgid "Usage: %s [-bfhixV] [-ob superblock] [-oB blocksize] device\n" -msgstr "" -"Usage: %s [-bfhixV] [-ob super_bloc] [-oB taille_de_bloc] priphrique\n" +msgstr "Usage: %s [-bfhixV] [-ob super_bloc] [-oB taille_de_bloc] priphrique\n" #: misc/dumpe2fs.c:131 #, c-format @@ -3193,8 +3136,7 @@ msgstr "Ne peut allouer un tampon d'en-t #: misc/e2image.c:81 #, c-format msgid "short write (only %d bytes) for writing image header" -msgstr "" -"criture courte (seulement %d octets) pour l'criture de l'en-tte image" +msgstr "criture courte (seulement %d octets) pour l'criture de l'en-tte image" #: misc/e2image.c:100 msgid "while writing superblock" @@ -3288,9 +3230,7 @@ msgstr "%s: wait: plus de processus fi #: misc/fsck.c:607 #, c-format msgid "Warning... %s for device %s exited with signal %d.\n" -msgstr "" -"Avertissement... %s pour le priphrique %s s'est termin avec le signal %" -"d.\n" +msgstr "Avertissement... %s pour le priphrique %s s'est termin avec le signal %d.\n" #: misc/fsck.c:613 #, c-format @@ -3317,8 +3257,7 @@ msgstr "" #: misc/fsck.c:749 msgid "Couldn't allocate memory for filesystem types\n" -msgstr "" -"Impossible d'allouer de la mmoire pour les types de systmes de fichiers\n" +msgstr "Impossible d'allouer de la mmoire pour les types de systmes de fichiers\n" #: misc/fsck.c:889 #, c-format @@ -3335,11 +3274,8 @@ msgid "--waiting-- (pass %d)\n" msgstr "--en attente-- (passe %d)\n" #: misc/fsck.c:1051 -msgid "" -"Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n" -msgstr "" -"Usage: fsck [-ANPRTV] [ -C [fd] ] [-t type_sys_fichiers] " -"[options_sys_fichiers] [sys_fichiers...]\n" +msgid "Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n" +msgstr "Usage: fsck [-ANPRTV] [ -C [fd] ] [-t type_sys_fichiers] [options_sys_fichiers] [sys_fichiers...]\n" #: misc/fsck.c:1093 #, c-format @@ -3396,22 +3332,17 @@ msgstr "durant la tentative d'excution #: misc/mke2fs.c:206 msgid "while processing list of bad blocks from program" -msgstr "" -"lors du traitement de la liste des blocs dfectueux partir du programme" +msgstr "lors du traitement de la liste des blocs dfectueux partir du programme" #: misc/mke2fs.c:233 #, c-format msgid "Block %d in primary superblock/group descriptor area bad.\n" -msgstr "" -"Bloc %d dans la zone du descripteur de superbloc/groupe primaire est " -"dfectueux.\n" +msgstr "Bloc %d dans la zone du descripteur de superbloc/groupe primaire est dfectueux.\n" #: misc/mke2fs.c:235 #, c-format msgid "Blocks %u through %d must be good in order to build a filesystem.\n" -msgstr "" -"Blocs de %u %d doivent tre en bon tat pour gnrer le systme de " -"fichiers.\n" +msgstr "Blocs de %u %d doivent tre en bon tat pour gnrer le systme de fichiers.\n" #: misc/mke2fs.c:238 msgid "Aborting....\n" @@ -3726,8 +3657,7 @@ msgstr "blocs de %d octets trop gros pou #: misc/mke2fs.c:1147 #, c-format -msgid "" -"Warning: %d-byte blocks too big for system (max %d), forced to continue\n" +msgid "Warning: %d-byte blocks too big for system (max %d), forced to continue\n" msgstr "" "Avertissement: blocs de %d octets trop gros pour le systme (max %d),\n" "poursuite force\n" @@ -3738,8 +3668,7 @@ msgstr "systme de fichiers" #: misc/mke2fs.c:1188 resize/main.c:279 msgid "while trying to determine filesystem size" -msgstr "" -"lors de la tentative de dtermination de la taille du systme de fichiers" +msgstr "lors de la tentative de dtermination de la taille du systme de fichiers" #: misc/mke2fs.c:1194 msgid "" @@ -3775,8 +3704,7 @@ msgstr "" #: misc/mke2fs.c:1297 msgid "while trying to determine hardware sector size" -msgstr "" -"lors de la tentative de dtermination de la taille matrielle de secteur" +msgstr "lors de la tentative de dtermination de la taille matrielle de secteur" #: misc/mke2fs.c:1349 msgid "reserved online resize blocks not supported on non-sparse filesystem" @@ -4410,8 +4338,7 @@ msgstr "blocs de mtadonnes" #: resize/resize2fs.c:1528 #, c-format msgid "Should never happen: resize inode corrupt!\n" -msgstr "" -"Ne devrait jamais se produire: i-noeud de redimensionnement corrompu!\n" +msgstr "Ne devrait jamais se produire: i-noeud de redimensionnement corrompu!\n" #~ msgid "" #~ "%s is mounted; can't resize a mounted filesystem!\n" @@ -4442,10 +4369,8 @@ msgstr "" #~ "\tea_ver=\n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.2\n" +"X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: e2fsck/badblocks.c:22 misc/mke2fs.c:154 @@ -99,7 +99,7 @@ msgstr "tijdens openen van %s" #: e2fsck/badblocks.c:82 #, c-format msgid "while trying popen '%s'" -msgstr "tijdens een 'popen()' van %s" +msgstr "tijdens een popen() van %s" #: e2fsck/badblocks.c:93 misc/mke2fs.c:177 msgid "while reading in list of bad blocks from file" @@ -130,7 +130,7 @@ msgstr "Fout negeren" #: e2fsck/ehandler.c:60 msgid "Force rewrite" -msgstr "Herschrijven forceren" +msgstr "Herschrijven afdwingen" #: e2fsck/ehandler.c:100 #, c-format @@ -178,7 +178,7 @@ msgstr "Gebruik: %s schijfnaam\n" #: e2fsck/flushb.c:63 #, c-format msgid "BLKFLSBUF ioctl not supported! Can't flush buffers.\n" -msgstr "BLKFLSBUF-ioctl wordt niet ondersteund! Kan buffers niet leegmaken.\n" +msgstr "ioctl(BLKFLSBUF) wordt niet ondersteund! Kan buffers niet leegmaken.\n" #: e2fsck/iscan.c:46 #, c-format @@ -247,7 +247,7 @@ msgstr "A" #: e2fsck/message.c:110 msgid "bblock" -msgstr "bblok" +msgstr "b" #: e2fsck/message.c:111 msgid "Bbitmap" @@ -259,11 +259,11 @@ msgstr "c" #: e2fsck/message.c:113 msgid "Cconflicts with some other fs @b" -msgstr "c" +msgstr "C" #: e2fsck/message.c:114 msgid "iinode" -msgstr "iinode" +msgstr "i" #: e2fsck/message.c:115 msgid "Iillegal" @@ -404,7 +404,7 @@ msgstr "interne fout: kan geen dup_blk v #: e2fsck/pass1b.c:738 msgid "returned from clone_file_block" -msgstr "teruggekeerd van clone_file_block" +msgstr "### teruggekeerd van clone_file_block()" #: e2fsck/pass1.c:430 msgid "in-use inode map" @@ -428,7 +428,7 @@ msgstr "bezig met inode-scan" #: e2fsck/pass1.c:917 msgid "Pass 1" -msgstr "Doorloop 1" +msgstr "Stap 1" #: e2fsck/pass1.c:976 #, c-format @@ -469,7 +469,7 @@ msgstr "inodetabel" #: e2fsck/pass2.c:287 msgid "Pass 2" -msgstr "Doorloop 2" +msgstr "Stap 2" #: e2fsck/pass3.c:79 msgid "inode done bitmap" @@ -481,7 +481,7 @@ msgstr "Piekgeheugengebruik" #: e2fsck/pass3.c:143 msgid "Pass 3" -msgstr "Doorloop 3" +msgstr "Stap 3" #: e2fsck/pass3.c:334 msgid "inode loop detection bitmap" @@ -489,11 +489,11 @@ msgstr "bitkaart van inode-lusdetectie" #: e2fsck/pass4.c:174 msgid "Pass 4" -msgstr "Doorloop 4" +msgstr "Stap 4" #: e2fsck/pass5.c:70 msgid "Pass 5" -msgstr "Doorloop 5" +msgstr "Stap 5" #: e2fsck/problem.c:50 msgid "(no prompt)" @@ -673,7 +673,7 @@ msgid "" "WARNING: SEVERE DATA LOSS POSSIBLE.\n" msgstr "" "inodetabel voor groep %g zit niet in groep (blok %b)\n" -"WAARSCHUWING: GROOT VERLIES VAN GEGEVENS IS MOGELIJK.\n" +"WAARSCHUWING: ERNSTIG VERLIES VAN GEGEVENS IS MOGELIJK.\n" #. @-expanded: \n #. @-expanded: The superblock could not be read or does not describe a correct ext2\n @@ -697,7 +697,7 @@ msgstr "" "Het superblok is onleesbaar of omschrijft geen geldig ext2-bestandssysteem.\n" "Als het apparaat juist is en werkelijk een ext2-bestandssysteem bevat\n" "(en niet swap of UFS of iets anders), dan is het superblok beschadigd.\n" -"U kunt proberen een ander superblok te gebruiken:\n" +"U kunt dan proberen een ander superblok te gebruiken:\n" " e2fsck -b %S \n" "\n" @@ -735,7 +735,7 @@ msgstr "Superblok: blokken_per_groep = % #. @-expanded: superblock first_data_block = %b, should have been %c\n #: e2fsck/problem.c:149 msgid "@S first_data_@b = %b, should have been %c\n" -msgstr "Superblok: eerste_gegevens_block = %b, zou %c moeten zijn.\n" +msgstr "Superblok: eerste_gegevens_blok = %b, zou %c moeten zijn.\n" #. @-expanded: filesystem did not have a UUID; generating one.\n #. @-expanded: \n @@ -758,16 +758,16 @@ msgid "" "\n" msgstr "" "Opmerking: als meerdere blokken van inode-bitkaarten of blok-bitkaarten\n" -"herplaatst moeten worden, of een deel van de indotabel, zou u misschien\n" +"herplaatst moeten worden, of een deel van de inodetabel, zou u misschien\n" "eerst 'e2fsck' kunnen draaien met de optie '-b %S'. Misschien doet het\n" -"probleem zich alleen voor in het eerste superblok, een reservekopie is\n" +"probleem zich alleen voor in het eerste superblok; een reservekopie is\n" "mogelijk nog in orde.\n" "\n" #. @-expanded: Corruption found in superblock. (%s = %N).\n #: e2fsck/problem.c:168 msgid "Corruption found in @S. (%s = %N).\n" -msgstr "Beschadiging gevonden in het superblok. (%s = %N).\n" +msgstr "Beschadiging gevonden in het superblok: %s = %N.\n" #. @-expanded: Error determining size of the physical device: %m\n #: e2fsck/problem.c:173 @@ -835,7 +835,7 @@ msgstr "Het superblok van het ext3-journ #: e2fsck/problem.c:225 #, c-format msgid "@S doesn't have has_@j flag, but has ext3 @j %s.\n" -msgstr "Superblok heeft geen journalvlag, maar heeft wel een ext3-journal %s.\n" +msgstr "Superblok heeft geen journalvlag gezet, maar heeft wel een ext3-journal %s.\n" #. @-expanded: superblock has ext3 needs_recovery flag set, but no journal.\n #: e2fsck/problem.c:230 @@ -861,13 +861,13 @@ msgstr "Journal toch afspelen" #: e2fsck/problem.c:250 msgid "Recovery flag not set in backup @S, so running @j anyway.\n" msgstr "" -"Een reservekopie van het superblok kent geen reddingsvlag,\n" +"Reservekopieën van het superblok kennen geen reddingsvlag;\n" "het niet-lege journal wordt daarom afgespeeld.\n" #. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n #: e2fsck/problem.c:255 msgid "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n" -msgstr "%s verweesde inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n" +msgstr "%s van verweesde inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n" #. @-expanded: illegal block #%B (%b) found in orphaned inode %i.\n #: e2fsck/problem.c:260 @@ -953,7 +953,7 @@ msgid "" "Backing up @j @i @b information.\n" "\n" msgstr "" -"Bezig met reservekopie maken van informatie in journal-inodeblokken.\n" +"Maken van reservekopie van informatie in journal-inodeblokken...\n" "\n" #. @-expanded: filesystem does not have resize_inode enabled, but s_reserved_gdt_blocks\n @@ -979,12 +979,12 @@ msgstr "Ongeldige 'resize'-inode. " #. @-expanded: superblock last mount time is in the future. #: e2fsck/problem.c:337 msgid "@S last mount time is in the future. " -msgstr "Laatste aankoppelingstijd is volgens het superblok in de toekomst. " +msgstr "Laatste aankoppelingstijd ligt volgens het superblok in de toekomst. " #. @-expanded: superblock last write time is in the future. #: e2fsck/problem.c:342 msgid "@S last write time is in the future. " -msgstr "Laatste schrijftijd is volgens het superblok in de toekomst. " +msgstr "Laatste schrijftijd ligt volgens het superblok in de toekomst. " #. @-expanded: superblock hint for external superblock should be %X. #: e2fsck/problem.c:346 @@ -995,7 +995,7 @@ msgstr "De superblokhint voor een extern #. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n #: e2fsck/problem.c:353 msgid "Pass 1: Checking @is, @bs, and sizes\n" -msgstr "Doorloop 1: Controle van inodes, blokken, en groottes\n" +msgstr "Stap 1: Controle van inodes, blokken, en groottes\n" #. @-expanded: root inode is not a directory. #: e2fsck/problem.c:357 @@ -1058,12 +1058,12 @@ msgstr "De inode-bitkaart %b van groep % #. @-expanded: inode %i, i_size is %Is, should be %N. #: e2fsck/problem.c:412 msgid "@i %i, i_size is %Is, @s %N. " -msgstr "Inode %i, i_size is %Is, zou %N moeten zijn. " +msgstr "Inode %i, 'i_size' is %Is, zou %N moeten zijn. " #. @-expanded: inode %i, i_blocks is %Ib, should be %N. #: e2fsck/problem.c:417 msgid "@i %i, i_@bs is %Ib, @s %N. " -msgstr "Inode %i, i_blocks is %Ib, zou %N moeten zijn. " +msgstr "Inode %i, 'i_blocks' is %Ib, zou %N moeten zijn. " #. @-expanded: illegal block #%B (%b) in inode %i. #: e2fsck/problem.c:422 @@ -1079,7 +1079,7 @@ msgstr "Blok #%B (%b) overlapt metadata #: e2fsck/problem.c:432 #, c-format msgid "@i %i has illegal @b(s). " -msgstr "Inode %i heeft ongeldig blok of blokken. " +msgstr "Inode %i bevat ongeldig(e) blok(ken). " #. @-expanded: Too many illegal blocks in inode %i.\n #: e2fsck/problem.c:437 @@ -1095,7 +1095,7 @@ msgstr "Ongeldig blok #%B (%b) in slecht #. @-expanded: Bad block inode has illegal block(s). #: e2fsck/problem.c:447 msgid "Bad @b @i has illegal @b(s). " -msgstr "Slechte-blokken-inode heeft ongeldig blok of blokken. " +msgstr "Slechte-blokken-inode bevat ongeldig(e) blok(ken). " #. @-expanded: Duplicate or bad block in use!\n #: e2fsck/problem.c:452 @@ -1143,7 +1143,7 @@ msgid "" "\n" msgstr "" "U kunt dit blok uit de lijst van slechte blokken wissen en hopen\n" -"dat het blok toch wel goed is. Maar er wordt niets gegarandeerd.\n" +"dat het blok toch goed is. Maar er zijn geen garanties.\n" "\n" #. @-expanded: The primary superblock (%b) is on the bad block list.\n @@ -1164,12 +1164,12 @@ msgstr "Waarschuwing: groep %g heeft een #. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n #: e2fsck/problem.c:496 msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n" -msgstr "Waarschuwing: groep %g heeft een slecht blok (%b) in de groepsbeschrijvers.\n" +msgstr "Waarschuwing: groep %g bevat een slecht blok (%b) in de groepsbeschrijvers.\n" #. @-expanded: Programming error? block #%b claimed for no reason in process_bad_block.\n #: e2fsck/problem.c:502 msgid "Programming error? @b #%b claimed for no reason in process_bad_@b.\n" -msgstr "Interne fout?: blok %b is zonder reden geclaimd in process_bad_block.\n" +msgstr "Interne fout?: blok %b is zonder reden geclaimd in process_bad_block().\n" #. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n #: e2fsck/problem.c:508 @@ -1218,7 +1218,7 @@ msgstr "Fout tijdens reserveren van blok #: e2fsck/problem.c:548 #, c-format msgid "@A icount link information: %m\n" -msgstr "Fout tijdens reserveren van icount-link-informatie: %m\n" +msgstr "Fout tijdens reserveren van 'icount'-link-informatie: %m\n" #. @-expanded: error allocating directory block array: %m\n #: e2fsck/problem.c:553 @@ -1291,7 +1291,7 @@ msgstr "Journal-inode is niet in gebruik #. @-expanded: journal is not regular file. #: e2fsck/problem.c:618 msgid "@j is not regular file. " -msgstr "journal is geen normaal bestand. " +msgstr "Journal is geen normaal bestand. " #. @-expanded: inode %i was part of the orphaned inode list. #: e2fsck/problem.c:623 @@ -1317,7 +1317,7 @@ msgstr "Fout tijdens lezen van blok %b m #. @-expanded: inode %i has a bad extended attribute block %b. #: e2fsck/problem.c:644 msgid "@i %i has a bad @a @b %b. " -msgstr "Inode %i heeft een slecht blok %b met uitgebreide kenmerken. " +msgstr "Inode %i bevat een slecht blok %b met uitgebreide kenmerken. " #. @-expanded: Error reading extended attribute block %b (%m). #: e2fsck/problem.c:649 @@ -1401,7 +1401,7 @@ msgstr "Inode %i van 'htree'-map heeft e #. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n #: e2fsck/problem.c:723 msgid "@h %i has an unsupported hash version (%N)\n" -msgstr "Inode %i van 'htree'-map heeft een niet-ondersteunde hash-versie (%N).\n" +msgstr "Inode %i van 'htree'-map gebruikt een niet-ondersteunde hash-versie (%N).\n" #. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n #: e2fsck/problem.c:728 @@ -1421,7 +1421,7 @@ msgid "" "Bad @b @i has an indirect @b (%b) that conflicts with\n" "@f metadata. " msgstr "" -"Een slechte-blokken-inode heeft een indirect blok (%b) dat tegenstrijdig\n" +"Slechte-blokken-inode bevat een indirect blok (%b) dat strijdig\n" "is met de metagegevens van het bestandssysteem. " #. @-expanded: Resize inode (re)creation failed: %m. @@ -1470,9 +1470,9 @@ msgid "" "Pass 1B: Rescanning for @m @bs\n" msgstr "" "\n" -"Extra doorlopen voor het verzoenen van blokken die door meer\n" -"dan één inode geclaimd worden...\n" -"Pass 1B: Opnieuw zoeken naar meervoudig-geclaimde blokken\n" +"Er zijn extra stappen nodig voor het verzoenen van blokken die door\n" +"meer dan één inode geclaimd worden...\n" +"Stap 1B: Opnieuw zoeken naar meervoudig-geclaimde blokken\n" #. @-expanded: multiply-claimed block(s) in inode %i: #: e2fsck/problem.c:787 @@ -1505,12 +1505,12 @@ msgstr "Fout tijdens bijstellen van verw #. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n #: e2fsck/problem.c:823 msgid "Pass 1C: Scanning directories for @is with @m @bs\n" -msgstr "Doorloop 1C: Doorzoeken van mappen naar inodes met meervoudig-geclaimde blokken\n" +msgstr "Stap 1C: Doorzoeken van mappen naar inodes met meervoudig-geclaimde blokken\n" #. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n #: e2fsck/problem.c:829 msgid "Pass 1D: Reconciling @m @bs\n" -msgstr "Doorloop 1D: Verzoenen van meervoudig-geclaimde blokken\n" +msgstr "Stap 1D: Verzoenen van meervoudig-geclaimde blokken\n" #. @-expanded: File %Q (inode #%i, mod time %IM) \n #. @-expanded: has %B multiply-claimed block(s), shared with %N file(s):\n @@ -1520,7 +1520,7 @@ msgid "" " has %B @m @b(s), shared with %N file(s):\n" msgstr "" "Bestand %Q (inode %i, wijzigingstijd %IM)\n" -" heeft %B meervoudig-geclaimd(e) blok(ken), gedeeld met %N bestand(en):\n" +" bevat %B meervoudig-geclaimd(e) blok(ken), gedeeld met %N bestand(en):\n" #. @-expanded: \t%Q (inode #%i, mod time %IM)\n #: e2fsck/problem.c:840 @@ -1560,7 +1560,7 @@ msgstr "Kan bestand niet klonen: %m\n" #. @-expanded: Pass 2: Checking directory structure\n #: e2fsck/problem.c:874 msgid "Pass 2: Checking @d structure\n" -msgstr "Doorloop 2: Controle van mappenstructuur\n" +msgstr "Stap 2: Controle van mappenstructuur\n" #. @-expanded: invalid inode number for '.' in directory inode %i.\n #: e2fsck/problem.c:879 @@ -1576,7 +1576,7 @@ msgstr "@E heeft een ongeldig inodenumme #. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di. #: e2fsck/problem.c:889 msgid "@E has @D/unused @i %Di. " -msgstr "@E heeft een verwijderde of ongebruikte inode %Di. " +msgstr "@E bevat een verwijderde of ongebruikte inode %Di. " #. @-expanded: entry '%Dn' in %p (%i) is a link to '.' #: e2fsck/problem.c:894 @@ -1628,27 +1628,27 @@ msgstr "Tweede item '%Dn' (inode=%Di) in #. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n #: e2fsck/problem.c:939 msgid "i_faddr @F %IF, @s zero.\n" -msgstr "i_faddr @F is %IF, moet nul zijn.\n" +msgstr "'i_faddr' @F is %IF, moet nul zijn.\n" #. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n #: e2fsck/problem.c:944 msgid "i_file_acl @F %If, @s zero.\n" -msgstr "i_file_acl @F is %If, moet nul zijn.\n" +msgstr "'i_file_acl' @F is %If, moet nul zijn.\n" #. @-expanded: i_dir_acl for inode %i (%Q) is %Id, should be zero.\n #: e2fsck/problem.c:949 msgid "i_dir_acl @F %Id, @s zero.\n" -msgstr "i_dir_acl @F is %Id, moet nul zijn.\n" +msgstr "'i_dir_acl' @F is %Id, moet nul zijn.\n" #. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n #: e2fsck/problem.c:954 msgid "i_frag @F %N, @s zero.\n" -msgstr "i_frag @F is %N, moet nul zijn.\n" +msgstr "'i_frag' @F is %N, moet nul zijn.\n" #. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n #: e2fsck/problem.c:959 msgid "i_fsize @F %N, @s zero.\n" -msgstr "i_fsize @F is %N, moet nul zijn.\n" +msgstr "'i_fsize' @F is %N, moet nul zijn.\n" #. @-expanded: inode %i (%Q) has invalid mode (%Im).\n #: e2fsck/problem.c:964 @@ -1685,12 +1685,12 @@ msgstr "Item '..' in map-inode %i eindig #. @-expanded: inode %i (%Q) is an illegal character device.\n #: e2fsck/problem.c:994 msgid "@i %i (%Q) is an @I character @v.\n" -msgstr "Inode %i (%Q) is een ongeldig byteapparaat.\n" +msgstr "Inode %i (%Q) is een ongeldig byte-apparaat.\n" #. @-expanded: inode %i (%Q) is an illegal block device.\n #: e2fsck/problem.c:999 msgid "@i %i (%Q) is an @I @b @v.\n" -msgstr "Inode %i (%Q) is een ongeldig blokapparaat.\n" +msgstr "Inode %i (%Q) is een ongeldig blok-apparaat.\n" #. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n #: e2fsck/problem.c:1004 @@ -1878,13 +1878,13 @@ msgid "" "\n" msgstr "" "Dubbel item '%Dn' gevonden.\n" -"\tMap %p (%i) wordt gemarkeerd om opnieuw te worden opgebouwd.\n" +" Map %p (%i) wordt gemarkeerd om opnieuw te worden opgebouwd.\n" "\n" #. @-expanded: Pass 3: Checking directory connectivity\n #: e2fsck/problem.c:1180 msgid "Pass 3: Checking @d connectivity\n" -msgstr "Doorloop 3: Controle van verbindingen tussen mappen\n" +msgstr "Stap 3: Controle van verbindingen tussen mappen\n" #. @-expanded: root inode not allocated. #: e2fsck/problem.c:1185 @@ -1938,25 +1938,25 @@ msgstr "Fout tijdens zoeken van /lost+fo #: e2fsck/problem.c:1230 #, c-format msgid "ext2fs_new_@b: %m while trying to create /@l @d\n" -msgstr "ext2fs_new_@b: %m tijdens maken van /lost+found\n" +msgstr "ext2fs_new_block(): %m tijdens maken van /lost+found\n" #. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n #: e2fsck/problem.c:1235 #, c-format msgid "ext2fs_new_@i: %m while trying to create /@l @d\n" -msgstr "ext2fs_new_@i: %m tijdens maken van /lost+found\n" +msgstr "ext2fs_new_inode(): %m tijdens maken van /lost+found\n" #. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n #: e2fsck/problem.c:1240 #, c-format msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n" -msgstr "ext2fs_new_dir_@b: %m tijdens maken van nieuw mapblok\n" +msgstr "ext2fs_new_dir_block(): %m tijdens maken van nieuw mapblok\n" #. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n #: e2fsck/problem.c:1245 #, c-format msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n" -msgstr "ext2fs_write_dir_@b: %m tijdens maken van mapblok voor /lost+found\n" +msgstr "ext2fs_write_dir_block(): %m tijdens maken van mapblok voor /lost+found\n" #. @-expanded: Error while adjusting inode count on inode %i\n #: e2fsck/problem.c:1250 @@ -2001,7 +2001,7 @@ msgstr "Fout tijdens maken van /lost+fou #. @-expanded: root inode is not a directory; aborting.\n #: e2fsck/problem.c:1280 msgid "@r is not a @d; aborting.\n" -msgstr "De root-inode is geen map; e2fsck breekt nu af.\n" +msgstr "De root-inode is geen map. Gestopt.\n" #. @-expanded: Cannot proceed without a root inode.\n #: e2fsck/problem.c:1285 @@ -2016,12 +2016,12 @@ msgstr "/lost+found (inode %i) is geen m #: e2fsck/problem.c:1302 msgid "Pass 3A: Optimizing directories\n" -msgstr "Doorloop 3A: Optimalisatie van mappen\n" +msgstr "Stap 3A: Optimalisatie van mappen\n" #: e2fsck/problem.c:1307 #, c-format msgid "Failed to create dirs_to_hash iterator: %m" -msgstr "Maken van dirs_to_hash-iterator is mislukt: %m" +msgstr "Maken van 'dirs_to_hash-iterator' is mislukt: %m" #: e2fsck/problem.c:1312 msgid "Failed to optimize directory %q (%d): %m" @@ -2033,7 +2033,7 @@ msgstr "Optimaliseren van mappen: " #: e2fsck/problem.c:1334 msgid "Pass 4: Checking reference counts\n" -msgstr "Doorloop 4: Controle van verwijzingsaantallen\n" +msgstr "Stap 4: Controle van verwijzingsaantallen\n" #. @-expanded: unattached zero-length inode %i. #: e2fsck/problem.c:1339 @@ -2062,7 +2062,7 @@ msgid "" "@i_link_info[%i] is %N, @i.i_links_count is %Il. They @s the same!\n" msgstr "" "WAARSCHUWING: programmafout in e2fsck!\n" -" OF IEMAND (U) IS EEN AANGEKOPPELD BESTANDSSYSTEEM AAN HET CONTROLEREN!\n" +" *of* U BENT EEN AANGEKOPPELD BESTANDSSYSTEEM AAN HET CONTROLEREN!\n" "\n" "inode_link_info[%i] is %N, inode.i_links_count is %Il.\n" "Deze horen hetzelfde te zijn!\n" @@ -2070,7 +2070,7 @@ msgstr "" #. @-expanded: Pass 5: Checking group summary information\n #: e2fsck/problem.c:1363 msgid "Pass 5: Checking @g summary information\n" -msgstr "Doorloop 5: Controle van groepssamenvattingen\n" +msgstr "Stap 5: Controle van groepssamenvattingen\n" #. @-expanded: Padding at end of inode bitmap is not set. #: e2fsck/problem.c:1368 @@ -2121,7 +2121,7 @@ msgstr "Verkeerd aantal blokken (%b, get #. @-expanded: endpoints (%i, %j)\n #: e2fsck/problem.c:1443 msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n" -msgstr "Programmafout in e2fsck: in bestandssysteem %N komen de bitkaart-eindpunten (%b, %c) niet overeen met de berekende eindpunten (%i, %j)\n" +msgstr "PROGRAMMAFOUT in e2fsck: in bestandssysteem %N komen de bitkaart-eindpunten (%b, %c) niet overeen met de berekende eindpunten (%i, %j)\n" #: e2fsck/problem.c:1449 msgid "Internal error: fudging end of bitmap (%N)\n" @@ -2142,7 +2142,7 @@ msgstr "Fout tijdens kopiëren naar verv #: e2fsck/problem.c:1597 #, c-format msgid "Unhandled error code (0x%x)!\n" -msgstr "Onbehandelde foutcode (0x%x)!\n" +msgstr "Onbekende foutcode (0x%x)!\n" #: e2fsck/problem.c:1691 msgid "IGNORED" @@ -2164,29 +2164,29 @@ msgstr "tijdens start van inode-scan" #: e2fsck/scantest.c:132 msgid "while doing inode scan" -msgstr "tijdens uitvoeren van inode-scan" +msgstr "tijdens uitvoering van inode-scan" #: e2fsck/super.c:200 #, c-format msgid "while calling ext2fs_block_iterate for inode %d" -msgstr "tijdens aanroep van ext2fs_block_iterate voor inode %d" +msgstr "tijdens aanroep van ext2fs_block_iterate() voor inode %d" #: e2fsck/super.c:223 #, c-format msgid "while calling ext2fs_adjust_ea_refocunt for inode %d" -msgstr "tijdens aanroep van ext2fs_adjust_ea_refocunt voor inode %d" +msgstr "tijdens aanroep van ext2fs_adjust_ea_refcount() voor inode %d" #: e2fsck/super.c:281 msgid "Truncating" -msgstr "Bezig met afkappen" +msgstr "Afkappen" #: e2fsck/super.c:282 msgid "Clearing" -msgstr "Bezig met wissen" +msgstr "Wissen" #: e2fsck/swapfs.c:98 msgid "while calling ext2fs_block_iterate" -msgstr "tijdens aanroep van ext2fs_block_iterate" +msgstr "tijdens aanroep van ext2fs_block_iterate()" #: e2fsck/swapfs.c:104 msgid "while calling iterator function" @@ -2209,7 +2209,7 @@ msgstr "tijdens schrijven van inodetabel #: e2fsck/swapfs.c:223 #, c-format msgid "Pass 0: Doing byte-swap of filesystem\n" -msgstr "Doorloop 0: Verwisseling van hoge en lage bytes in hele bestandssysteem\n" +msgstr "Stap 0: Verwisseling van hoge en lage bytes in hele bestandssysteem\n" #: e2fsck/swapfs.c:230 #, c-format @@ -2251,10 +2251,10 @@ msgstr "" "\n" "Noodhulp:\n" " -p Automatische reparatie (zonder vragen)\n" -" -n Bestandssyteem niet veranderen\n" +" -n Bestandssyteem niet veranderen; op alle vragen \"nee\" aannemen\n" " -y Als antwoord op alle vragen \"ja\" aannemen\n" " -c Op slechte blokken controleren en deze aan lijst toevoegen\n" -" -f Controle forceren ook als bestandssysteem schoon is\n" +" -f Een controle afdwingen, ook als het bestandssysteem schoon is\n" #: e2fsck/unix.c:86 #, c-format @@ -2304,7 +2304,7 @@ msgid "" "Cannot continue, aborting.\n" "\n" msgstr "" -"Kan niet verder; e2fsck breekt af.\n" +"Kan niet verder. Gestopt.\n" "\n" #: e2fsck/unix.c:202 @@ -2330,7 +2330,7 @@ msgstr "Wilt u echt doorgaan?" #: e2fsck/unix.c:207 #, c-format msgid "check aborted.\n" -msgstr "controle afgebroken.\n" +msgstr "controle is afgebroken.\n" #: e2fsck/unix.c:277 msgid " contains a file system with errors" @@ -2352,7 +2352,7 @@ msgstr " is gedurende %u dagen niet geco #: e2fsck/unix.c:300 msgid ", check forced.\n" -msgstr ", geforceerde controle.\n" +msgstr ", gedwongen controle.\n" #: e2fsck/unix.c:303 #, c-format @@ -2394,7 +2394,7 @@ msgid "" "\t%s\n" msgstr "" "Syntaxfout in e2fsck-configuratiebestand (%s, regel #%d)\n" -"\t%s\n" +" %s\n" #: e2fsck/unix.c:623 #, c-format @@ -2455,15 +2455,15 @@ msgstr "voor interactieve reparaties is #: e2fsck/unix.c:940 #, c-format msgid "%s trying backup blocks...\n" -msgstr "%s zoeken naar reservekopieën...\n" +msgstr "%s reservekopieën worden bekeken...\n" #: e2fsck/unix.c:941 msgid "Couldn't find ext2 superblock," -msgstr "Kan het ext2-superblok niet vinden," +msgstr "Kan het ext2-superblok niet vinden --" #: e2fsck/unix.c:942 msgid "Group descriptors look bad..." -msgstr "Groepsdescriptors zien er slecht uit..." +msgstr "Groepsbeschrijvers zien er slecht uit --" #: e2fsck/unix.c:953 #, c-format @@ -2542,7 +2542,7 @@ msgid "" "\tbut filesystem %s has HTREE directories.\n" msgstr "" "Deze e2fsck is niet gecompileerd met 'htree'-ondersteuning,\n" -"\tmaar bestandssysteem %s heeft 'htree'-mappen.\n" +"maar het bestandssysteem %s bevat 'htree'-mappen.\n" #: e2fsck/unix.c:1118 #, c-format @@ -2588,7 +2588,7 @@ msgstr "" #: e2fsck/unix.c:1174 #, c-format msgid "%s: ***** REBOOT LINUX *****\n" -msgstr "%s: ***** REBOOTEN *****\n" +msgstr "%s: ***** HERSTART UW SYSTEEM *****\n" #: e2fsck/unix.c:1182 #, c-format @@ -2670,7 +2670,7 @@ msgstr "nee" #: e2fsck/util.c:213 #, c-format msgid "e2fsck_read_bitmaps: illegal bitmap block(s) for %s" -msgstr "e2fsck_read_bitmaps: ongeldige bitkaartblokken voor %s" +msgstr "e2fsck_read_bitmaps(): ongeldige bitkaartblokken voor %s" #: e2fsck/util.c:218 msgid "reading inode and block bitmaps" @@ -2710,7 +2710,7 @@ msgstr "" "\n" "\n" "%s: ONVERWACHTE INCONSISTENTIE; voer 'fsck' met de hand uit\n" -"\t(dat wil zeggen: zonder de opties '-a' of '-p').\n" +" (dat wil zeggen: zonder de opties '-a' of '-p').\n" #: e2fsck/util.c:330 #, c-format @@ -2744,7 +2744,7 @@ msgstr "tijdens schrijven van inode %ld #: misc/badblocks.c:60 msgid "done \n" -msgstr "klaar \n" +msgstr "voltooid \n" #: misc/badblocks.c:78 #, c-format @@ -2840,7 +2840,9 @@ msgstr "%s is aangekoppeld; " #: misc/badblocks.c:786 msgid "badblocks forced anyway. Hope /etc/mtab is incorrect.\n" -msgstr "'badblocks' wordt geforceerd uitgevoerd, hopend dat /etc/mtab onjuist is.\n" +msgstr "" +"maar 'badblocks' wordt gedwongen uitgevoerd.\n" +"Hoop dat /etc/mtab onjuist is.\n" #: misc/badblocks.c:791 msgid "it's not safe to run badblocks!\n" @@ -2853,17 +2855,17 @@ msgstr "%s wordt blijkbaar gebruikt door #: misc/badblocks.c:799 msgid "badblocks forced anyway.\n" -msgstr "'badblocks' wordt geforceerd uitgevoerd.\n" +msgstr "maar 'badblocks' wordt gedwongen uitgevoerd.\n" #: misc/badblocks.c:861 #, c-format msgid "bad block size - %s" -msgstr "ongeldige blokgrootte - %s" +msgstr "ongeldige blokgrootte: %s" #: misc/badblocks.c:918 #, c-format msgid "can't allocate memory for test_pattern - %s" -msgstr "kan geen geheugen reserveren voor testpatroon - %s" +msgstr "kan geen geheugen reserveren voor testpatroon -- %s" #: misc/badblocks.c:932 #, c-format @@ -2891,12 +2893,12 @@ msgstr "tijdens bepalen van apparaatgroo #: misc/badblocks.c:980 misc/mke2fs.c:1155 #, c-format msgid "invalid blocks count - %s" -msgstr "ongeldig blokkenaantal - %s" +msgstr "ongeldig blokkenaantal: %s" #: misc/badblocks.c:989 #, c-format msgid "invalid starting block - %s" -msgstr "ongeldig beginblok - %s" +msgstr "ongeldig beginblok: %s" #: misc/badblocks.c:995 #, c-format @@ -2924,7 +2926,7 @@ msgstr "Gebruik: %s [-RV] [-+=AacDdijsS #: misc/chattr.c:148 #, c-format msgid "bad version - %s\n" -msgstr "ongeldige versie - %s\n" +msgstr "ongeldige versie: %s\n" #: misc/chattr.c:192 misc/lsattr.c:113 #, c-format @@ -2958,7 +2960,7 @@ msgstr "tijdens zetten van versie op %s" #: misc/chattr.c:255 msgid "Couldn't allocate path variable in chattr_dir_proc" -msgstr "Kan geen padvariabele reserveren in chattr_dir_proc" +msgstr "Kan geen padvariabele reserveren in chattr_dir_proc()" #: misc/chattr.c:291 msgid "= is incompatible with - and +\n" @@ -3203,9 +3205,9 @@ msgid "" "\tshould fix your /etc/fstab file as soon as you can.\n" "\n" msgstr "" -"WAARSCHUWING: /etc/fstab bevat geen zesde veld (een fsck-doorloopnummer).\n" -" Er wordt nu omheen gewerkt, maar u zou dit veld bij\n" -" de eerstvolgende gelegenheid toe dienen te voegen.\n" +"WAARSCHUWING: /etc/fstab bevat geen zesde veld (een fsck-volgnummer).\n" +" Er wordt nu omheengewerkt, maar u zou dit veld bij\n" +" de eerstvolgende gelegenheid toe dienen te voegen.\n" "\n" #: misc/fsck.c:472 @@ -3262,7 +3264,7 @@ msgstr "Alle bestandssystemen worden gec #: misc/fsck.c:1031 #, c-format msgid "--waiting-- (pass %d)\n" -msgstr "--wachten-- (doorloop %d)\n" +msgstr "--wachten-- (volgnummer %d)\n" #: misc/fsck.c:1051 msgid "Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n" @@ -3314,7 +3316,7 @@ msgstr "" #: misc/mke2fs.c:195 #, c-format msgid "Running command: %s\n" -msgstr "Uitvoering van opdracht: %s\n" +msgstr "Uitgevoerde opdracht is: %s\n" #: misc/mke2fs.c:199 #, c-format @@ -3333,11 +3335,13 @@ msgstr "Blok %d in het primaire superblo #: misc/mke2fs.c:235 #, c-format msgid "Blocks %u through %d must be good in order to build a filesystem.\n" -msgstr "Blokken %u tot en met %d moeten goed zijn om een bestandssysteem te kunnen maken.\n" +msgstr "" +"Blokken %u tot en met %d moeten goed zijn\n" +"om een bestandssysteem te kunnen maken.\n" #: misc/mke2fs.c:238 msgid "Aborting....\n" -msgstr "Bezig met afbreken...\n" +msgstr "Gestopt...\n" #: misc/mke2fs.c:258 #, c-format @@ -3346,17 +3350,17 @@ msgid "" "\tbad blocks.\n" "\n" msgstr "" -"Waarschuwing: de reservekopie van het superblok of van de groepsbeschrijvers\n" -" beginnend bij blok %u bevat slechte blokken.\n" +"Waarschuwing: de reservekopie van het superblok en de groepsbeschrijvers,\n" +"beginnend bij blok %u, bevat slechte blokken.\n" "\n" #: misc/mke2fs.c:276 msgid "while marking bad blocks as used" -msgstr "tijdens het markeren van slechte blokken als gebruikt" +msgstr "tijdens het markeren van slechte blokken (als zijnde in gebruik)" #: misc/mke2fs.c:334 msgid "done \n" -msgstr "klaar \n" +msgstr "voltooid \n" #: misc/mke2fs.c:369 msgid "while allocating zeroizing buffer" @@ -3471,7 +3475,7 @@ msgstr "%u inodes, %u blokken\n" #: misc/mke2fs.c:642 #, c-format msgid "%u blocks (%2.2f%%) reserved for the super user\n" -msgstr "%u blokken (%2.2f%%) gereserveerd voor de superuser\n" +msgstr "%u blokken (%2.2f%%) gereserveerd voor systeembeheer\n" #: misc/mke2fs.c:645 #, c-format @@ -3561,7 +3565,7 @@ msgid "" "\t%s\n" msgstr "" "Syntaxfout in mke2fs-configuratiebestand (%s, regel #%d)\n" -"\t%s\n" +" %s\n" #: misc/mke2fs.c:841 misc/tune2fs.c:303 #, c-format @@ -3571,7 +3575,7 @@ msgstr "Ongeldige optie van bestandssyst #: misc/mke2fs.c:938 #, c-format msgid "invalid block size - %s" -msgstr "ongeldige blokgrootte - %s" +msgstr "ongeldige blokgrootte: %s" #: misc/mke2fs.c:942 #, c-format @@ -3581,7 +3585,7 @@ msgstr "Waarschuwing: blokgrootte %d is #: misc/mke2fs.c:959 #, c-format msgid "invalid fragment size - %s" -msgstr "ongeldige fragmentgrootte - %s" +msgstr "ongeldige fragmentgrootte: %s" #: misc/mke2fs.c:965 #, c-format @@ -3603,29 +3607,29 @@ msgstr "ongeldige inodeverhouding %s (mi #: misc/mke2fs.c:1004 msgid "in malloc for bad_blocks_filename" -msgstr "onvoldoende geheugen" +msgstr "onvoldoende geheugen in bad_blocks_filename()" #: misc/mke2fs.c:1013 #, c-format msgid "invalid reserved blocks percent - %s" -msgstr "ongeldig percentage gereserveerde blokken - %s" +msgstr "ongeldig percentage gereserveerde blokken: %s" # lib/prange.c:299 lib/prange.c:316 #: misc/mke2fs.c:1031 #, c-format msgid "bad revision level - %s" -msgstr "ongeldig versienummer - %s" +msgstr "ongeldig versienummer: %s" #: misc/mke2fs.c:1044 #, c-format msgid "invalid inode size - %s" -msgstr "ongeldige grootte van inode - %s" +msgstr "ongeldige grootte van inode: %s" # lib/prange.c:299 lib/prange.c:316 #: misc/mke2fs.c:1065 #, c-format msgid "bad num inodes - %s" -msgstr "ongeldig aantal inodes - %s" +msgstr "ongeldig aantal inodes: %s" #: misc/mke2fs.c:1123 misc/mke2fs.c:1588 #, c-format @@ -3646,8 +3650,8 @@ msgstr "Blokken van %d bytes zijn te gro #, c-format msgid "Warning: %d-byte blocks too big for system (max %d), forced to continue\n" msgstr "" -"Waarschuwing: blokken van %d bytes zijn te groot voor dit systeem (max %d),\n" -"maar er wordt geforceerd doorgegaan.\n" +"Waarschuwing: blokken van %d bytes zijn te groot voor dit systeem,\n" +"het maximum is %d -- maar 'mke2fs' wordt gedwongen uitgevoerd.\n" #: misc/mke2fs.c:1165 msgid "filesystem" @@ -3704,8 +3708,8 @@ msgid "" "Filesystem too large. No more than 2**31-1 blocks\n" "\t (8TB using a blocksize of 4k) are currently supported." msgstr "" -"Bestandssysteem is te groot. Niet meer dan 2**31-1 blokken\n" -"\t (8TB bij een blokgrootte van 4K) worden momenteel ondersteund." +"Bestandssysteem is te groot. Momenteel zijn niet meer dan\n" +"2**31-1 blokken mogelijk (8TB bij een blokgrootte van 4K)." #: misc/mke2fs.c:1372 #, c-format @@ -3737,7 +3741,7 @@ msgstr "tijdens aanmaken van superblok" #: misc/mke2fs.c:1472 #, c-format msgid "unknown os - %s" -msgstr "onbekend besturingssysteem - %s" +msgstr "onbekend besturingssysteem: %s" #: misc/mke2fs.c:1526 msgid "while trying to allocate filesystem tables" @@ -3786,7 +3790,7 @@ msgid "" "\twhile trying to create journal" msgstr "" "\n" -"\ttijdens aanmaken van journal" +" tijdens aanmaken van journal" #: misc/mke2fs.c:1636 #, c-format @@ -3906,7 +3910,7 @@ msgid "" "\twhile trying to open journal on %s\n" msgstr "" "\n" -"\ttijdens openen van journal op %s\n" +" tijdens openen van journal op %s\n" #: misc/tune2fs.c:404 #, c-format @@ -3928,7 +3932,7 @@ msgid "" "\twhile trying to create journal file" msgstr "" "\n" -"\ttijdens aanmaken van journal-inode" +" tijdens aanmaken van journal-inode" #: misc/tune2fs.c:493 #, c-format @@ -3972,7 +3976,7 @@ msgstr "-O mag slechts één keer gegeve #: misc/tune2fs.c:663 #, c-format msgid "bad reserved blocks count - %s" -msgstr "onjuiste aantal gereserveerde blokken: %s" +msgstr "onjuist aantal gereserveerde blokken: %s" #: misc/tune2fs.c:692 #, c-format @@ -4017,7 +4021,7 @@ msgstr "Het aantal gereserveerde blokken #: misc/tune2fs.c:840 #, c-format msgid "Setting reserved blocks count to %lu\n" -msgstr "Aantal gereserveerde blokken is op %lu gezet\n" +msgstr "Het aantal gereserveerde blokken is op %lu gezet\n" #: misc/tune2fs.c:846 msgid "" @@ -4042,7 +4046,7 @@ msgid "" "The filesystem already has sparse superblocks disabled.\n" msgstr "" "\n" -"Het bestandssysteem is al niet zuinig met superblokken.\n" +"Het bestandssysteem gebruikt al het normale aantal superblokken.\n" #: misc/tune2fs.c:868 #, c-format @@ -4096,7 +4100,7 @@ msgstr "%s is het hele apparaat, niet sl #: misc/util.c:158 msgid "mke2fs forced anyway. Hope /etc/mtab is incorrect.\n" -msgstr "'mke2fs' wordt geforceerd uitgevoerd, hopend dat /etc/mtab onjuist is.\n" +msgstr "'mke2fs' wordt gedwongen uitgevoerd. Hoop dat /etc/mtab onjuist is.\n" #: misc/util.c:163 #, c-format @@ -4105,7 +4109,7 @@ msgstr "zal hier geen %s maken!\n" #: misc/util.c:170 msgid "mke2fs forced anyway.\n" -msgstr "'mke2fs' wordt geforceerd uitgevoerd.\n" +msgstr "'mke2fs' wordt gedwongen uitgevoerd.\n" #: misc/util.c:186 msgid "Couldn't allocate memory to parse journal options!\n" @@ -4155,8 +4159,8 @@ msgid "" "between 1024 and 102400 blocks. Aborting.\n" msgstr "" "\n" -"De gevraagde journal-afmeting is %d blokken; deze dient\n" -"tussen de 1024 and 102400 blokken te liggen.\n" +"De gevraagde journal-afmeting is %d blokken; maar deze dient\n" +"tussen de 1024 and 102400 blokken te liggen. Gestopt.\n" #: misc/util.c:270 msgid "" @@ -4226,12 +4230,12 @@ msgstr "Verplaatsen van inodetabel" #: resize/main.c:76 msgid "Unknown pass?!?" -msgstr "Onbekende doorloop?!?" +msgstr "Onbekende stap?!?" #: resize/main.c:79 #, c-format msgid "Begin pass %d (max = %lu)\n" -msgstr "Begin van doorloop %d (max = %lu)\n" +msgstr "Begin van stap %d (max = %lu)\n" #: resize/main.c:200 #, c-format @@ -4306,4 +4310,4 @@ msgstr "blokken voor metagegevens" #: resize/resize2fs.c:1528 #, c-format msgid "Should never happen: resize inode corrupt!\n" -msgstr "Zou nooit mogen gebeuren: de resize-inode is beschadigd!\n" +msgstr "Zou nooit mogen gebeuren: de 'resize'-inode is beschadigd!\n" Index: e2fsprogs-1.39/po/vi.po =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ e2fsprogs-1.39/po/vi.po 2006-09-18 17:42:57.000000000 +0200 @@ -0,0 +1,4365 @@ +# Vietnamese translation for e2fsprogs. +# Copyright © 2006 Free Software Foundation, Inc. +# Clytie Siddall , 2006. +# +#. 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). +#. +#. %b block number +#. %B integer +#. %c block number +#. %Di -> ino inode number +#. %Dn -> name string +#. %Dr -> rec_len +#. %Dl -> name_len +#. %Dt -> filetype +#. %d inode number +#. %g integer +#. %i inode number +#. %Is -> i_size +#. %IS -> i_extra_isize +#. %Ib -> i_blocks +#. %Il -> i_links_count +#. %Im -> i_mode +#. %IM -> i_mtime +#. %IF -> i_faddr +#. %If -> i_file_acl +#. %Id -> i_dir_acl +#. %Iu -> i_uid +#. %Ig -> i_gid +#. %j inode number +#. %m +#. %N +#. %p ext2fs_get_pathname of directory +#. %P ext2fs_get_pathname of ->ino with as +#. the containing directory. (If dirent is NULL +#. then return the pathname of directory ) +#. %q ext2fs_get_pathname of directory +#. %Q ext2fs_get_pathname of directory with as +#. the containing directory. +#. %s miscellaneous string +#. %S backup superblock +#. %X hexadecimal format +#. +msgid "" +msgstr "" +"Project-Id-Version: e2fsprogs 1.39-b2.vi.po\n" +"Report-Msgid-Bugs-To: tytso@alum.mit.edu\n" +"POT-Creation-Date: 2006-03-29 15:30-0500\n" +"PO-Revision-Date: 2006-06-03 16:48+0930\n" +"Last-Translator: Clytie Siddall \n" +"Language-Team: Vietnamese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0\n" +"X-Generator: LocFactoryEditor 1.6b36\n" + +#: e2fsck/badblocks.c:22 misc/mke2fs.c:154 +#, c-format +msgid "Bad block %u out of range; ignored.\n" +msgstr "Khối hỏng %u ở ngoại phạm vị nên bị bỏ qua.\n" + +#: e2fsck/badblocks.c:45 +msgid "while sanity checking the bad blocks inode" +msgstr "trong khi kiểm tra sự đúng mực nút inode khối hỏng" + +#: e2fsck/badblocks.c:57 +msgid "while reading the bad blocks inode" +msgstr "trong khi đọc nút inode khối hỏng" + +#: e2fsck/badblocks.c:71 e2fsck/iscan.c:112 e2fsck/scantest.c:109 +#: e2fsck/unix.c:950 e2fsck/unix.c:986 misc/badblocks.c:1005 +#: misc/badblocks.c:1013 misc/badblocks.c:1027 misc/badblocks.c:1039 +#: misc/dumpe2fs.c:369 misc/e2image.c:567 misc/e2image.c:660 +#: misc/e2image.c:676 misc/mke2fs.c:170 misc/tune2fs.c:776 resize/main.c:243 +#, c-format +msgid "while trying to open %s" +msgstr "trong khi cố gắng mở %s" + +#: e2fsck/badblocks.c:82 +#, c-format +msgid "while trying popen '%s'" +msgstr "trong khi cố gắng mở popen « %s »" + +#: e2fsck/badblocks.c:93 misc/mke2fs.c:177 +msgid "while reading in list of bad blocks from file" +msgstr "trong khi đọc vào danh sách các khối hỏng từ tập tin" + +#: e2fsck/badblocks.c:103 +msgid "while updating bad block inode" +msgstr "trong khi cập nhật nút inode khối hỏng" + +#: e2fsck/badblocks.c:129 +#, c-format +msgid "Warning: illegal block %u found in bad block inode. Cleared.\n" +msgstr "Cảnh báo : tìm thấy khối cấm %u trong nút inode khối hỏng nên bị xoá.\n" + +#: e2fsck/ehandler.c:53 +#, c-format +msgid "Error reading block %lu (%s) while %s. " +msgstr "Gặp lỗi khi đọc khối %lu (%s) trong khi %s. " + +#: e2fsck/ehandler.c:56 +#, c-format +msgid "Error reading block %lu (%s). " +msgstr "Gặp lỗi khi đọc khối %lu (%s). " + +#: e2fsck/ehandler.c:59 e2fsck/ehandler.c:106 +msgid "Ignore error" +msgstr "Bỏ qua lỗi" + +#: e2fsck/ehandler.c:60 +msgid "Force rewrite" +msgstr "Buộc ghi lại" + +#: e2fsck/ehandler.c:100 +#, c-format +msgid "Error writing block %lu (%s) while %s. " +msgstr "Găp lỗi khi ghi khối %lu (%s) trong khi %s. " + +#: e2fsck/ehandler.c:103 +#, c-format +msgid "Error writing block %lu (%s). " +msgstr "Gặp lỗi khi ghi khối %lu (%s). " + +#: e2fsck/emptydir.c:56 +msgid "empty dirblocks" +msgstr "khối thư mục rỗng" + +#: e2fsck/emptydir.c:61 +msgid "empty dir map" +msgstr "sơ đồ thư mục rỗng" + +#: e2fsck/emptydir.c:97 +#, c-format +msgid "Empty directory block %u (#%d) in inode %d\n" +msgstr "Khối thư mục rỗng %u (#%d) trong nút inode %d\n" + +#: e2fsck/extend.c:21 +#, c-format +msgid "%s: %s filename nblocks blocksize\n" +msgstr "%s: %s tên tập tin số khối cỡ khối\n" + +#: e2fsck/extend.c:43 +#, c-format +msgid "Illegal number of blocks!\n" +msgstr "Không cho phép số khối đó !\n" + +#: e2fsck/extend.c:49 +#, c-format +msgid "Couldn't allocate block buffer (size=%d)\n" +msgstr "Không thể cấp phát bộ đệm khối (cỡ=%d)\n" + +#: e2fsck/flushb.c:34 +#, c-format +msgid "Usage: %s disk\n" +msgstr "Cách sử dụng: %s đĩa\n" + +#: e2fsck/flushb.c:63 +#, c-format +msgid "BLKFLSBUF ioctl not supported! Can't flush buffers.\n" +msgstr "BLKFLSBUF ioctl không được hỗ trợ ! Không thể xoá sạch các bộ đệm.\n" + +#: e2fsck/iscan.c:46 +#, c-format +msgid "Usage: %s [-F] [-I inode_buffer_blocks] device\n" +msgstr "Cách sử dụng: %s [-F] [-I các_khối_đệm_inode] thiết_bị\n" + +#: e2fsck/iscan.c:83 e2fsck/unix.c:767 +#, c-format +msgid "while opening %s for flushing" +msgstr "trong khi mở %s để xoá sạch" + +#: e2fsck/iscan.c:88 e2fsck/unix.c:773 resize/main.c:221 +#, c-format +msgid "while trying to flush %s" +msgstr "trong khi cố gắng xoá sạch %s" + +#: e2fsck/iscan.c:121 e2fsck/scantest.c:116 misc/e2image.c:477 +msgid "while opening inode scan" +msgstr "trong khi mở việc quét nút inode" + +#: e2fsck/iscan.c:129 misc/e2image.c:495 +msgid "while getting next inode" +msgstr "trong khi lấy nút inode kế tiếp" + +#: e2fsck/iscan.c:138 +#, c-format +msgid "%d inodes scanned.\n" +msgstr "%d nút inode đã được quét.\n" + +#: e2fsck/journal.c:463 +msgid "reading journal superblock\n" +msgstr "đang đọc siêu khối nhật ký\n" + +#: e2fsck/journal.c:520 +#, c-format +msgid "%s: no valid journal superblock found\n" +msgstr "%s: kôhng tìm thấy siêu khối nhật ký hợp lệ\n" + +#: e2fsck/journal.c:529 +#, c-format +msgid "%s: journal too short\n" +msgstr "%s: nhật ký quá ngắn\n" + +#: e2fsck/journal.c:802 +#, c-format +msgid "%s: recovering journal\n" +msgstr "%s: đang phục hồi nhật ký\n" + +#: e2fsck/journal.c:804 +#, c-format +msgid "%s: won't do journal recovery while read-only\n" +msgstr "%s: sẽ không phục hồi nhật ký trong khi có trạng thái chỉ đọc\n" + +#: e2fsck/journal.c:825 +#, c-format +msgid "while trying to re-open %s" +msgstr "trong khi cố gắng mở lại %s" + +#: e2fsck/message.c:108 +msgid "aextended attribute" +msgstr "athuộc tính đã mở rộng" + +#: e2fsck/message.c:109 +msgid "Aerror allocating" +msgstr "Acấp phát lỗi" + +#: e2fsck/message.c:110 +msgid "bblock" +msgstr "bkhối" + +#: e2fsck/message.c:111 +msgid "Bbitmap" +msgstr "Bsơ đồ bit" + +#: e2fsck/message.c:112 +msgid "ccompress" +msgstr "cnén" + +#: e2fsck/message.c:113 +msgid "Cconflicts with some other fs @b" +msgstr "Cxung đột với hệ thống tập tin khác @b" + +#: e2fsck/message.c:114 +msgid "iinode" +msgstr "iinode" + +#: e2fsck/message.c:115 +msgid "Iillegal" +msgstr "Icấm" + +#: e2fsck/message.c:116 +msgid "jjournal" +msgstr "jnhật ký" + +#: e2fsck/message.c:117 +msgid "Ddeleted" +msgstr "Dđã xoá bỏ" + +#: e2fsck/message.c:118 +msgid "ddirectory" +msgstr "dthư mục" + +#: e2fsck/message.c:119 +msgid "eentry" +msgstr "emục nhập" + +#: e2fsck/message.c:120 +msgid "E@e '%Dn' in %p (%i)" +msgstr "E@e '%Dn' trong %p (%i)" + +#: e2fsck/message.c:121 +msgid "ffilesystem" +msgstr "fhệ thống tập tin" + +#: e2fsck/message.c:122 +msgid "Ffor @i %i (%Q) is" +msgstr "Fcho @i %i (%Q) là" + +#: e2fsck/message.c:123 +msgid "ggroup" +msgstr "gnhóm" + +#: e2fsck/message.c:124 +msgid "hHTREE @d @i" +msgstr "hHCÂY @d @i" + +#: e2fsck/message.c:125 +msgid "llost+found" +msgstr "lmất+tìm" + +#: e2fsck/message.c:126 +msgid "Lis a link" +msgstr "L là liên kết" + +#: e2fsck/message.c:127 +msgid "mmultiply-claimed" +msgstr "mđã tuyên bố nhiều lần" + +#: e2fsck/message.c:128 +msgid "ninvalid" +msgstr "nkhông hợp lệ" + +#: e2fsck/message.c:129 +msgid "oorphaned" +msgstr "ocôi cút" + +#: e2fsck/message.c:130 +msgid "pproblem in" +msgstr "pvấn đề trong" + +#: e2fsck/message.c:131 +msgid "rroot @i" +msgstr "rgốc @i" + +#: e2fsck/message.c:132 +msgid "sshould be" +msgstr "snên là" + +#: e2fsck/message.c:133 +msgid "Ssuper@b" +msgstr "Ssiêu @b" + +#: e2fsck/message.c:134 +msgid "uunattached" +msgstr "uchưa gắn nối" + +#: e2fsck/message.c:135 +msgid "vdevice" +msgstr "vthiết bị" + +#: e2fsck/message.c:136 +msgid "zzero-length" +msgstr "zdài bằng không" + +#: e2fsck/message.c:147 +msgid "" +msgstr "" + +#: e2fsck/message.c:148 +msgid "" +msgstr "" + +#: e2fsck/message.c:150 +msgid "" +msgstr "" + +#: e2fsck/message.c:151 +msgid "" +msgstr "" + +#: e2fsck/message.c:152 +msgid "" +msgstr "" + +#: e2fsck/message.c:153 +msgid "" +msgstr "" + +#: e2fsck/message.c:154 +msgid "" +msgstr "" + +#: e2fsck/message.c:155 +msgid "" +msgstr "" + +#: e2fsck/message.c:156 +msgid "" +msgstr "" + +#: e2fsck/message.c:157 +msgid "" +msgstr "" + +#: e2fsck/pass1b.c:209 +msgid "multiply claimed inode map" +msgstr "sơ đồ nút inode đã tuyên bố nhiều lần" + +#: e2fsck/pass1b.c:558 e2fsck/pass1b.c:695 +#, c-format +msgid "internal error; can't find dup_blk for %u\n" +msgstr "lỗi nội bộ : không tìm thấy khối trùng dup_blk cho %u\n" + +#: e2fsck/pass1b.c:738 +msgid "returned from clone_file_block" +msgstr "được trả gởi từ khối tập tin nhái theo clone_file_block" + +#: e2fsck/pass1.c:430 +msgid "in-use inode map" +msgstr "sơ đồ nút inode đang được dùng" + +#: e2fsck/pass1.c:439 +msgid "directory inode map" +msgstr "sơ đồ nút inode thư mục" + +#: e2fsck/pass1.c:447 +msgid "regular file inode map" +msgstr "sơ đồ nút inode tập tin chuẩn" + +#: e2fsck/pass1.c:454 +msgid "in-use block map" +msgstr "sơ đồ khối đang được dùng" + +#: e2fsck/pass1.c:505 +msgid "doing inode scan" +msgstr "đang quét nút inode" + +#: e2fsck/pass1.c:917 +msgid "Pass 1" +msgstr "Lần qua 1" + +#: e2fsck/pass1.c:976 +#, c-format +msgid "reading indirect blocks of inode %u" +msgstr "đang đọc khối gián tiếp của nút inode %u" + +#: e2fsck/pass1.c:1018 +msgid "bad inode map" +msgstr "sơ đồ nút inode sai" + +#: e2fsck/pass1.c:1040 +msgid "inode in bad block map" +msgstr "nút inode trong sơ đồ khối hỏng" + +#: e2fsck/pass1.c:1060 +msgid "imagic inode map" +msgstr "sơ đồ nút inode ma thuật imagic" + +#: e2fsck/pass1.c:1087 +msgid "multiply claimed block map" +msgstr "sơ đồ khối đã tuyên bố nhiều lần" + +#: e2fsck/pass1.c:1186 +msgid "ext attr block map" +msgstr "sơ đồ khối ext attr" + +#: e2fsck/pass1.c:1959 +msgid "block bitmap" +msgstr "sơ đồ bit khối" + +#: e2fsck/pass1.c:1963 +msgid "inode bitmap" +msgstr "sơ đồ bit nút inode" + +#: e2fsck/pass1.c:1967 +msgid "inode table" +msgstr "bảng nút inode" + +#: e2fsck/pass2.c:287 +msgid "Pass 2" +msgstr "Lần qua 2" + +#: e2fsck/pass3.c:79 +msgid "inode done bitmap" +msgstr "sơ đồ bit nút inode hoàn tất" + +#: e2fsck/pass3.c:90 +msgid "Peak memory" +msgstr "Bộ nhớ cao điểm" + +#: e2fsck/pass3.c:143 +msgid "Pass 3" +msgstr "Lần qua 3" + +#: e2fsck/pass3.c:334 +msgid "inode loop detection bitmap" +msgstr "sơ đồ bit phát hiện vòng lặp nút inode" + +#: e2fsck/pass4.c:174 +msgid "Pass 4" +msgstr "Lần qua 4" + +#: e2fsck/pass5.c:70 +msgid "Pass 5" +msgstr "Lần qua 5" + +#: e2fsck/problem.c:50 +msgid "(no prompt)" +msgstr "(không có dấu nhắc)" + +#: e2fsck/problem.c:51 +msgid "Fix" +msgstr "Sửa" + +#: e2fsck/problem.c:52 +msgid "Clear" +msgstr "Xoá" + +#: e2fsck/problem.c:53 +msgid "Relocate" +msgstr "Định vị lại" + +#: e2fsck/problem.c:54 +msgid "Allocate" +msgstr "Cấp phát" + +#: e2fsck/problem.c:55 +msgid "Expand" +msgstr "Bung" + +#: e2fsck/problem.c:56 +msgid "Connect to /lost+found" +msgstr "Kết nối đến /mất+tìm" + +#: e2fsck/problem.c:57 +msgid "Create" +msgstr "Tạo" + +#: e2fsck/problem.c:58 +msgid "Salvage" +msgstr "Cứu vớt" + +#: e2fsck/problem.c:59 +msgid "Truncate" +msgstr "Cắt ngắn" + +#: e2fsck/problem.c:60 +msgid "Clear inode" +msgstr "Xoá nút inode" + +#: e2fsck/problem.c:61 +msgid "Abort" +msgstr "Hủy bỏ" + +#: e2fsck/problem.c:62 +msgid "Split" +msgstr "Chia ra" + +#: e2fsck/problem.c:63 +msgid "Continue" +msgstr "Tiếp tục" + +#: e2fsck/problem.c:64 +msgid "Clone multiply-claimed blocks" +msgstr "Nhái theo các khối đã tuyên bố nhiều lần" + +#: e2fsck/problem.c:65 +msgid "Delete file" +msgstr "Xoá bỏ tập tin" + +#: e2fsck/problem.c:66 +msgid "Suppress messages" +msgstr "Thu hồi thông điệp" + +#: e2fsck/problem.c:67 +msgid "Unlink" +msgstr "Bỏ liên kết" + +#: e2fsck/problem.c:68 +msgid "Clear HTree index" +msgstr "Xoá chỉ mục HCây" + +#: e2fsck/problem.c:69 +msgid "Recreate" +msgstr "Tạo lại" + +#: e2fsck/problem.c:78 +msgid "(NONE)" +msgstr "(KHÔNG CÓ)" + +#: e2fsck/problem.c:79 +msgid "FIXED" +msgstr "ĐÃ SỬA" + +#: e2fsck/problem.c:80 +msgid "CLEARED" +msgstr "ĐÃ XOÁ" + +#: e2fsck/problem.c:81 +msgid "RELOCATED" +msgstr "ĐÃ ĐỊNH VỊ LẠI" + +#: e2fsck/problem.c:82 +msgid "ALLOCATED" +msgstr "ĐÃ CẤP PHÁT" + +#: e2fsck/problem.c:83 +msgid "EXPANDED" +msgstr "ĐÃ MỞ RỘNG" + +#: e2fsck/problem.c:84 +msgid "RECONNECTED" +msgstr "ĐÃ KẾT NỐI LẠI" + +#: e2fsck/problem.c:85 +msgid "CREATED" +msgstr "ĐÃ TẠO" + +#: e2fsck/problem.c:86 +msgid "SALVAGED" +msgstr "ĐÃ CỨU VỚT" + +#: e2fsck/problem.c:87 +msgid "TRUNCATED" +msgstr "ĐÃ CẮT NGẮN" + +#: e2fsck/problem.c:88 +msgid "INODE CLEARED" +msgstr "NÚT INODE ĐÃ XOÁ" + +#: e2fsck/problem.c:89 +msgid "ABORTED" +msgstr "BỊ HỦY BỎ" + +#: e2fsck/problem.c:90 +msgid "SPLIT" +msgstr "ĐÃ CHIA RA" + +#: e2fsck/problem.c:91 +msgid "CONTINUING" +msgstr "ĐANG TIẾP TỤC" + +#: e2fsck/problem.c:92 +msgid "MULTIPLY-CLAIMED BLOCKS CLONED" +msgstr "CÁC KHỐI ĐÃ TUYÊN BỐ NHIỀU LẦN ĐÃ ĐƯỢC NHÁI THEO" + +#: e2fsck/problem.c:93 +msgid "FILE DELETED" +msgstr "TẬP TIN ĐÃ ĐƯỢC XÓA BỎ" + +#: e2fsck/problem.c:94 +msgid "SUPPRESSED" +msgstr "ĐÃ THU HỒI" + +#: e2fsck/problem.c:95 +msgid "UNLINKED" +msgstr "ĐÃ BỎ LIÊN KẾT" + +#: e2fsck/problem.c:96 +msgid "HTREE INDEX CLEARED" +msgstr "CHỈ MỤC HCÂY ĐÃ ĐƯỢC XOÁ" + +#: e2fsck/problem.c:97 +msgid "WILL RECREATE" +msgstr "SẼ TẠO LẠI" + +#. @-expanded: block bitmap for group %g is not in group. (block %b)\n +#: e2fsck/problem.c:106 +msgid "@b @B for @g %g is not in @g. (@b %b)\n" +msgstr "sơ đồ khối cho nhóm %g không phải nằm trong nhóm. (khối %b)\n" + +#. @-expanded: inode bitmap for group %g is not in group. (block %b)\n +#: e2fsck/problem.c:110 +msgid "@i @B for @g %g is not in @g. (@b %b)\n" +msgstr "sơ đồ nút inode cho nhóm %g không phải nằm trong nhóm. (khối %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:115 +msgid "" +"@i table for @g %g is not in @g. (@b %b)\n" +"WARNING: SEVERE DATA LOSS POSSIBLE.\n" +msgstr "" +"bảng nút inode cho nhóm %g không phải nằm trong nhóm. (khối %b)\n" +"CẢNH BÁO : CÓ THỂ MẤT DỮ LIỆU NHIỀU.\n" + +#. @-expanded: \n +#. @-expanded: The superblock could not be read or does not describe a correct ext2\n +#. @-expanded: filesystem. If the device is valid and it really contains an ext2\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 %S \n +#. @-expanded: \n +#: e2fsck/problem.c:121 +#, c-format +msgid "" +"\n" +"The @S could not be read or does not describe a correct ext2\n" +"@f. If the @v is valid and it really contains an ext2\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 %S <@v>\n" +"\n" +msgstr "" +"\n" +"Siêu khối không thể được đọc, hoặc không diễn tả một hệ thống\n" +"tập tin kiểu ext2 đúng. Nếu thiết bị là hợp lệ và thật sự chứa\n" +"một hệ thống tập tin kiểu ext2 (không phải kiểu trao đổi hay UFS\n" +"hay kiểu khác), thì siêu khối bị hỏng, và đề nghị bạn thử chạy\n" +"e2fsck với một siêu khối xen kẽ:\n" +" e2fsck -b %S \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:130 +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 "" +"Kích cỡ của hệ thống tập tin (tùy theo siêu khối) là %b khối.\n" +"Kích cỡ vật lý của thiết bị là %c khối.\n" +"Hoặc siêu khối hoặc bảng phân vùng rất có thể bị hỏng !\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:137 +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 "" +"Kích cỡ của siêu khối là %b còn kích cỡ của đoạn là %c.\n" +"Phiên bản e2fsck này không hỗ trợ kích cỡ đoạn khác\n" +"với kích cỡ khối.\n" + +#. @-expanded: superblock blocks_per_group = %b, should have been %c\n +#: e2fsck/problem.c:144 +msgid "@S @bs_per_group = %b, should have been %c\n" +msgstr "Số khối trong mỗi nhóm siêu khối là %b, còn nên là %c.\n" + +#. @-expanded: superblock first_data_block = %b, should have been %c\n +#: e2fsck/problem.c:149 +msgid "@S first_data_@b = %b, should have been %c\n" +msgstr "Khối dữ liệu thứ nhất siêu khối là %b, còn nên là %c.\n" + +#. @-expanded: filesystem did not have a UUID; generating one.\n +#. @-expanded: \n +#: e2fsck/problem.c:154 +msgid "" +"@f did not have a UUID; generating one.\n" +"\n" +msgstr "" +"Hệ thống tập tin không có UUID nên đang tạo ra nó.\n" +"\n" + +#: e2fsck/problem.c:159 +#, 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 "" +"Ghi chú : nếu vài khối nút inode hay khối sơ đồ bit khối\n" +"hay phần của bảng inode cần thiết được định vị lại,\n" +"có lẽ bạn muốn thử chạy e2fsck với tùy chọn « -b %S »\n" +"trước tiên. Vấn đề có thể nằm chỉ với các mô tả nhóm\n" +"khối chính, thì các mô tả nhóm khối dự trữ có thể là đúng.\n" +"\n" + +#. @-expanded: Corruption found in superblock. (%s = %N).\n +#: e2fsck/problem.c:168 +msgid "Corruption found in @S. (%s = %N).\n" +msgstr "Tìm điều bị hỏng trong siêu khối. (%s = %N).\n" + +#. @-expanded: Error determining size of the physical device: %m\n +#: e2fsck/problem.c:173 +#, c-format +msgid "Error determining size of the physical @v: %m\n" +msgstr "Gặp lỗi khi xác định kích cỡ của thiết bị vật lý: %m\n" + +#. @-expanded: inode count in superblock is %i, should be %j.\n +#: e2fsck/problem.c:178 +msgid "@i count in @S is %i, @s %j.\n" +msgstr "Số đếm nút inode trong siêu khối là %i, còn nên là %j.\n" + +#: e2fsck/problem.c:182 +msgid "The Hurd does not support the filetype feature.\n" +msgstr "Hurd không hỗ trợ tính năng kiểu tập tin.\n" + +#. @-expanded: superblock has an invalid ext3 journal (inode %i).\n +#: e2fsck/problem.c:187 +#, c-format +msgid "@S has an @n ext3 @j (@i %i).\n" +msgstr "Siêu khối có nhật ký ext3 không hợp lệ (inode %i).\n" + +#. @-expanded: External journal has multiple filesystem users (unsupported).\n +#: e2fsck/problem.c:192 +msgid "External @j has multiple @f users (unsupported).\n" +msgstr "Nhật ký bên ngoài có nhiều người dùng hệ thống tập tin (không được hỗ trợ).\n" + +#. @-expanded: Can't find external journal\n +#: e2fsck/problem.c:197 +msgid "Can't find external @j\n" +msgstr "Không tìm thấy nhật ký bên ngoài\n" + +#. @-expanded: External journal has bad superblock\n +#: e2fsck/problem.c:202 +msgid "External @j has bad @S\n" +msgstr "Nhật ký bên ngoài có siêu khối sai\n" + +#. @-expanded: External journal does not support this filesystem\n +#: e2fsck/problem.c:207 +msgid "External @j does not support this @f\n" +msgstr "Nhật ký bên ngoài không hỗ trợ hệ thống tập tin này\n" + +#. @-expanded: Ext3 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:212 +msgid "" +"Ext3 @j @S is unknown type %N (unsupported).\n" +"It is likely that your copy of e2fsck is old and/or doesn't support this @j format.\n" +"It is also possible the @j @S is corrupt.\n" +msgstr "" +"Siêu khối nhật ký ext3 có kiểu không rõ %N (không được hỗ trợ).\n" +"Rất có thể là bản sao e2fsck của bạn là cũ và/hay không hỗ trợ\n" +"dạng thức nhật ký này.\n" +"Cũng có thể là siêu khối nhật ký bị hỏng.\n" + +#. @-expanded: Ext3 journal superblock is corrupt.\n +#: e2fsck/problem.c:220 +msgid "Ext3 @j @S is corrupt.\n" +msgstr "Siêu khối nhật ký ext3 bị hỏng.\n" + +#. @-expanded: superblock doesn't have has_journal flag, but has ext3 journal %s.\n +#: e2fsck/problem.c:225 +#, c-format +msgid "@S doesn't have has_@j flag, but has ext3 @j %s.\n" +msgstr "Siêu khối không có cờ « có nhật ký » (has_journal), còn có nhật ký ext3 %s.\n" + +#. @-expanded: superblock has ext3 needs_recovery flag set, but no journal.\n +#: e2fsck/problem.c:230 +msgid "@S has ext3 needs_recovery flag set, but no @j.\n" +msgstr "" +"Siêu khối có cờ cần thiết phục hồi (needs_recovery) được đặt,\n" +"còn không có nhật ký.\n" + +#. @-expanded: ext3 recovery flag is clear, but journal has data.\n +#: e2fsck/problem.c:235 +msgid "ext3 recovery flag is clear, but @j has data.\n" +msgstr "Cờ phục hồi ext3 là rõ, còn nhật ký có dữ liệu.\n" + +#. @-expanded: Clear journal +#: e2fsck/problem.c:240 +msgid "Clear @j" +msgstr "Xoá nhật ký" + +#. @-expanded: Run journal anyway +#: e2fsck/problem.c:245 +msgid "Run @j anyway" +msgstr "Vẫn còn chạy nhật ký" + +#. @-expanded: Recovery flag not set in backup superblock, so running journal anyway.\n +#: e2fsck/problem.c:250 +msgid "Recovery flag not set in backup @S, so running @j anyway.\n" +msgstr "Chưa đặt cờ phục hồi trong siêu khối dự trữ nên vẫn chạy nhật ký.\n" + +#. @-expanded: %s orphaned inode %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n +#: e2fsck/problem.c:255 +msgid "%s @o @i %i (uid=%Iu, gid=%Ig, mode=%Im, size=%Is)\n" +msgstr "%s nút inode côi cút %i (uid=%Iu, gid=%Ig, chế độ=%Im, cỡ=%Is)\n" + +#. @-expanded: illegal block #%B (%b) found in orphaned inode %i.\n +#: e2fsck/problem.c:260 +msgid "@I @b #%B (%b) found in @o @i %i.\n" +msgstr "Tìm thấy khối cấm #%B (%b) trong nút inode côi cút %i.\n" + +#. @-expanded: Already cleared block #%B (%b) found in orphaned inode %i.\n +#: e2fsck/problem.c:265 +msgid "Already cleared @b #%B (%b) found in @o @i %i.\n" +msgstr "Đã xoá khối #%B (%b) được tìm trong nút inode côi cút %i.\n" + +#. @-expanded: illegal orphaned inode %i in superblock.\n +#: e2fsck/problem.c:270 +#, c-format +msgid "@I @o @i %i in @S.\n" +msgstr "Có nút inode côi cút cấm %i trong siêu khối.\n" + +#. @-expanded: illegal inode %i in orphaned inode list.\n +#: e2fsck/problem.c:275 +#, c-format +msgid "@I @i %i in @o @i list.\n" +msgstr "Có nút inode cấm %i trong danh sách inode côi cút.\n" + +#. @-expanded: filesystem has feature flag(s) set, but is a revision 0 filesystem. +#: e2fsck/problem.c:280 e2fsck/problem.c:608 +msgid "@f has feature flag(s) set, but is a revision 0 @f. " +msgstr "Hệ thống tập tin đã đặt (các) cờ tính năng, còn là hệ thống bản sửa đổi 0. " + +#. @-expanded: Ext3 journal superblock has an unknown read-only feature flag set.\n +#: e2fsck/problem.c:285 +msgid "Ext3 @j @S has an unknown read-only feature flag set.\n" +msgstr "Siêu khối nhật ký ext3 đã đặt một cờ tính năng chỉ đọc không rõ.\n" + +#. @-expanded: Ext3 journal superblock has an unknown incompatible feature flag set.\n +#: e2fsck/problem.c:290 +msgid "Ext3 @j @S has an unknown incompatible feature flag set.\n" +msgstr "Siêu khối nhật ký ext3 đã đặt một cờ tính năng không tương thích không rõ.\n" + +#. @-expanded: journal version not supported by this e2fsck.\n +#: e2fsck/problem.c:295 +msgid "@j version not supported by this e2fsck.\n" +msgstr "Phiên bản nhật ký không được hỗ trợ bởi e2fsck này.\n" + +#. @-expanded: Moving journal from /%s to hidden inode.\n +#. @-expanded: \n +#: e2fsck/problem.c:300 +#, c-format +msgid "" +"Moving @j from /%s to hidden @i.\n" +"\n" +msgstr "" +"Đang di chuyển nhật ký từ sang nút inode bị ẩn.\n" +"\n" + +#. @-expanded: Error moving journal: %m\n +#. @-expanded: \n +#: e2fsck/problem.c:305 +#, c-format +msgid "" +"Error moving @j: %m\n" +"\n" +msgstr "" +"Gặp lỗi khi di chuyển nhật ký: %m\n" +"\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:310 +msgid "" +"Found @n V2 @j @S fields (from V1 @j).\n" +"Clearing fields beyond the V1 @j @S...\n" +"\n" +msgstr "" +"Tìm thấy trường siêu khối nhật ký V2 (từ nhật ký V1).\n" +"Đang xoá các trường nằm ở bên kia siêu khối nhật ký V1...\n" +"\n" + +#. @-expanded: Backing up journal inode block information.\n +#. @-expanded: \n +#: e2fsck/problem.c:316 +msgid "" +"Backing up @j @i @b information.\n" +"\n" +msgstr "" +"Đang sao lưu thông tin khối nút inode nhật ký.\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:321 +msgid "" +"@f does not have resize_@i enabled, but s_reserved_gdt_@bs\n" +"is %N; @s zero. " +msgstr "" +"Hệ thống tập tin chưa hiệu lực khả năng thay đổi kích cỡ\n" +"của nút inode (resize_inode), nhưng số khối GDT đã dành\n" +"riêng s (s_reserved_gdt_blocks) là %N, còn nên là số không." + +#. @-expanded: Resize_inode not enabled, but the resize inode is non-zero. +#: e2fsck/problem.c:327 +msgid "Resize_@i not enabled, but the resize @i is non-zero. " +msgstr "" +"Chưa hiệu lực khả năng thay đổi kích cỡ của nút inode (Resize_inode)\n" +"còn nút inode thay đổi kích cỡ khác không. " + +#. @-expanded: Resize inode not valid. +#: e2fsck/problem.c:332 +msgid "Resize @i not valid. " +msgstr "Nút inode thay đổi kích cỡ không hợp lệ. " + +#. @-expanded: superblock last mount time is in the future. +#: e2fsck/problem.c:337 +msgid "@S last mount time is in the future. " +msgstr "Giờ đã gắn kết siêu khối cuối cùng nằm trong tương lai. " + +#. @-expanded: superblock last write time is in the future. +#: e2fsck/problem.c:342 +msgid "@S last write time is in the future. " +msgstr "Giờ đã ghi siêu khối cuối cùng nằm trong tương lai. " + +#. @-expanded: superblock hint for external superblock should be %X. +#: e2fsck/problem.c:346 +#, c-format +msgid "@S hint for external superblock @s %X. " +msgstr "Mẹo siêu khối cho siêu khối bên ngoài nên là %X. " + +#. @-expanded: Pass 1: Checking inodes, blocks, and sizes\n +#: e2fsck/problem.c:353 +msgid "Pass 1: Checking @is, @bs, and sizes\n" +msgstr "Lần qua 1: đang kiểm tra các nút inode, khối và kích cỡ\n" + +#. @-expanded: root inode is not a directory. +#: e2fsck/problem.c:357 +msgid "@r is not a @d. " +msgstr "Nút inode gốc không phải là thư mục. " + +#. @-expanded: root inode has dtime set (probably due to old mke2fs). +#: e2fsck/problem.c:362 +msgid "@r has dtime set (probably due to old mke2fs). " +msgstr "Nút inode gốc đã đặt dtime (rất có thể do mkd2fs cũ). " + +#. @-expanded: Reserved inode %i (%Q) has invalid mode. +#: e2fsck/problem.c:367 +msgid "Reserved @i %i (%Q) has @n mode. " +msgstr "Nút inode đã dành riêng %i (%Q) có chế độ không hợp lệ. " + +#. @-expanded: deleted inode %i has zero dtime. +#: e2fsck/problem.c:372 +#, c-format +msgid "@D @i %i has zero dtime. " +msgstr "Nút inode đã xoá bỏ %i có dtime bằng không. " + +#. @-expanded: inode %i is in use, but has dtime set. +#: e2fsck/problem.c:377 +#, c-format +msgid "@i %i is in use, but has dtime set. " +msgstr "Nút inode %i đang được dùng, còn đã đặt dtime. " + +#. @-expanded: inode %i is a zero-length directory. +#: e2fsck/problem.c:382 +#, c-format +msgid "@i %i is a @z @d. " +msgstr "Nút inode %i là thư mục có độ dài bằng không. " + +#. @-expanded: group %g's block bitmap at %b conflicts with some other fs block.\n +#: e2fsck/problem.c:387 +msgid "@g %g's @b @B at %b @C.\n" +msgstr "Sơ đồ bit khối của nhóm %g tại %b xung đột với khối hệ thống tập tin khác.\n" + +#. @-expanded: group %g's inode bitmap at %b conflicts with some other fs block.\n +#: e2fsck/problem.c:392 +msgid "@g %g's @i @B at %b @C.\n" +msgstr "" +"Sơ đồ bit nút inode của nhóm %g tại %b xung đột\n" +"với khối hệ thống tập tin khác.\n" + +#. @-expanded: group %g's inode table at %b conflicts with some other fs block.\n +#: e2fsck/problem.c:397 +msgid "@g %g's @i table at %b @C.\n" +msgstr "Bảng nút inode của nhóm %g tại %b xung đột với khối hệ thống tập tin khác.\n" + +#. @-expanded: group %g's block bitmap (%b) is bad. +#: e2fsck/problem.c:402 +msgid "@g %g's @b @B (%b) is bad. " +msgstr "Sơ đồ bit khối của nhóm %g (%b) là sai. " + +#. @-expanded: group %g's inode bitmap (%b) is bad. +#: e2fsck/problem.c:407 +msgid "@g %g's @i @B (%b) is bad. " +msgstr "Sơ đồ bit nút inode của nhóm %g (%b) là sai. " + +#. @-expanded: inode %i, i_size is %Is, should be %N. +#: e2fsck/problem.c:412 +msgid "@i %i, i_size is %Is, @s %N. " +msgstr "Nút inode %i, kích cỡ i_size là %Is, còn nên là %N. " + +#. @-expanded: inode %i, i_blocks is %Ib, should be %N. +#: e2fsck/problem.c:417 +msgid "@i %i, i_@bs is %Ib, @s %N. " +msgstr "Nút inode %i, khối i_blocks là %Ib, còn nên là %N. " + +#. @-expanded: illegal block #%B (%b) in inode %i. +#: e2fsck/problem.c:422 +msgid "@I @b #%B (%b) in @i %i. " +msgstr "Khối cấm số %B (%b) nằm trong nút inode %i. " + +#. @-expanded: block #%B (%b) overlaps filesystem metadata in inode %i. +#: e2fsck/problem.c:427 +msgid "@b #%B (%b) overlaps @f metadata in @i %i. " +msgstr "Khối số %B (%b) đè lên siêu dữ liệu hệ thống tập tin trong nút inode %i. " + +#. @-expanded: inode %i has illegal block(s). +#: e2fsck/problem.c:432 +#, c-format +msgid "@i %i has illegal @b(s). " +msgstr "Nút inode %i có khối cấm. " + +#. @-expanded: Too many illegal blocks in inode %i.\n +#: e2fsck/problem.c:437 +#, c-format +msgid "Too many illegal @bs in @i %i.\n" +msgstr "Có quá nhiều khối cấm trong nút inode %i.\n" + +#. @-expanded: illegal block #%B (%b) in bad block inode. +#: e2fsck/problem.c:442 +msgid "@I @b #%B (%b) in bad @b @i. " +msgstr "Có khối cấm số %B (%b) trong nút inode khối hỏng. " + +#. @-expanded: Bad block inode has illegal block(s). +#: e2fsck/problem.c:447 +msgid "Bad @b @i has illegal @b(s). " +msgstr "Nút inode khối hỏng có khối cấm. " + +#. @-expanded: Duplicate or bad block in use!\n +#: e2fsck/problem.c:452 +msgid "Duplicate or bad @b in use!\n" +msgstr "Đang dùng khối trùng hay bị hỏng !\n" + +#. @-expanded: Bad block %b used as bad block inode indirect block. +#: e2fsck/problem.c:457 +msgid "Bad @b %b used as bad @b @i indirect @b. " +msgstr "Khối hỏng %b được dùng là khối gián tiếp nút inode khối hỏng. " + +#. @-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:462 +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" +"Nút inode khối sai rất có thể bị hỏng. Đề nghị bạn dừng\n" +"ngay bây giờ và chạy lệnh « e2fsck -c » để quét tìm khối hỏng\n" +"trong hệ thống tập tin đó.\n" + +#. @-expanded: \n +#. @-expanded: If the block is really bad, the filesystem can not be fixed.\n +#: e2fsck/problem.c:469 +msgid "" +"\n" +"If the @b is really bad, the @f can not be fixed.\n" +msgstr "" +"\n" +"Nếu khối thật sự bị hỏng, không thể sửa chữa hệ thống tập tin đó.\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:474 +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 "" +"Bạn có thể gỡ bỏ khối này khỏi danh sách các khối hỏng\n" +"và mong khối đó thật sự là đúng. Tuy nhiên không bảo đảm gì.\n" +"\n" + +#. @-expanded: The primary superblock (%b) is on the bad block list.\n +#: e2fsck/problem.c:480 +msgid "The primary @S (%b) is on the bad @b list.\n" +msgstr "Siêu khối chính (%b) nằm trong danh sách các khối hỏng.\n" + +#. @-expanded: Block %b in the primary group descriptors is on the bad block list\n +#: e2fsck/problem.c:485 +msgid "Block %b in the primary @g descriptors is on the bad @b list\n" +msgstr "Khối %b trong những mô tả nhóm chính có nằm trong danh sách các khối hỏng !\n" + +#. @-expanded: Warning: Group %g's superblock (%b) is bad.\n +#: e2fsck/problem.c:491 +msgid "Warning: Group %g's @S (%b) is bad.\n" +msgstr "Cảnh báo : siêu khối của nhóm %g (%b) bị hỏng.\n" + +#. @-expanded: Warning: Group %g's copy of the group descriptors has a bad block (%b).\n +#: e2fsck/problem.c:496 +msgid "Warning: Group %g's copy of the @g descriptors has a bad @b (%b).\n" +msgstr "Cảnh báo : bản sao các mô tả nhóm của nhóm %g có một khối hỏng (%b).\n" + +#. @-expanded: Programming error? block #%b claimed for no reason in process_bad_block.\n +#: e2fsck/problem.c:502 +msgid "Programming error? @b #%b claimed for no reason in process_bad_@b.\n" +msgstr "" +"Lỗi lập trình ? Khối %b được tuyên bố, không có lý do,\n" +"trong việc xử lý khối hỏng (process_bad_block).\n" + +#. @-expanded: error allocating %N contiguous block(s) in block group %g for %s: %m\n +#: e2fsck/problem.c:508 +msgid "@A %N contiguous @b(s) in @b @g %g for %s: %m\n" +msgstr "Gặp lỗi khi cấp phát %N khối kề nhau trong nhóm khối %g cho %s: %m\n" + +#. @-expanded: error allocating block buffer for relocating %s\n +#: e2fsck/problem.c:513 +#, c-format +msgid "@A @b buffer for relocating %s\n" +msgstr "Gặp lỗi khi cấp phát bộ đệm khối để định vị lại %s\n" + +#. @-expanded: Relocating group %g's %s from %b to %c...\n +#: e2fsck/problem.c:518 +msgid "Relocating @g %g's %s from %b to %c...\n" +msgstr "Đang định vị lại %s của nhóm %g từ %b sang %c...\n" + +#. @-expanded: Relocating group %g's %s to %c...\n +#: e2fsck/problem.c:523 +#, c-format +msgid "Relocating @g %g's %s to %c...\n" +msgstr "Đang định vị lại %2$s của nhóm %1$g sang %3$c...\n" + +#. @-expanded: Warning: could not read block %b of %s: %m\n +#: e2fsck/problem.c:528 +msgid "Warning: could not read @b %b of %s: %m\n" +msgstr "Cảnh báo : không thể đọc khối %b trên %s: %m\n" + +#. @-expanded: Warning: could not write block %b for %s: %m\n +#: e2fsck/problem.c:533 +msgid "Warning: could not write @b %b for %s: %m\n" +msgstr "Cảnh báo : không thể ghi khối %b cho %s: %m\n" + +#. @-expanded: error allocating inode bitmap (%N): %m\n +#: e2fsck/problem.c:538 e2fsck/problem.c:1265 +msgid "@A @i @B (%N): %m\n" +msgstr "Gặp lỗi khi cấp phát sơ đồ bit nút inode (%N): %m\n" + +#. @-expanded: error allocating block bitmap (%N): %m\n +#: e2fsck/problem.c:543 +msgid "@A @b @B (%N): %m\n" +msgstr "Gặp lỗi khi cấp phát sơ đồ bit khối (%N): %m\n" + +#. @-expanded: error allocating icount link information: %m\n +#: e2fsck/problem.c:548 +#, c-format +msgid "@A icount link information: %m\n" +msgstr "Gặp lỗi khi cấp phát thông tin liên kết đếm icount: %m\n" + +#. @-expanded: error allocating directory block array: %m\n +#: e2fsck/problem.c:553 +#, c-format +msgid "@A @d @b array: %m\n" +msgstr "Gặp lỗi khi cấp phát mảng khối thư mục: %m\n" + +#. @-expanded: Error while scanning inodes (%i): %m\n +#: e2fsck/problem.c:558 +#, c-format +msgid "Error while scanning @is (%i): %m\n" +msgstr "Gặp lỗi khi quét các nút inode (%i): %m\n" + +#. @-expanded: Error while iterating over blocks in inode %i: %m\n +#: e2fsck/problem.c:563 +#, c-format +msgid "Error while iterating over @bs in @i %i: %m\n" +msgstr "Gặp lỗi khi lặp lại trên các khối trong nút inode %i: %m\n" + +#. @-expanded: Error storing inode count information (inode=%i, count=%N): %m\n +#: e2fsck/problem.c:568 +msgid "Error storing @i count information (@i=%i, count=%N): %m\n" +msgstr "Gặp lỗi khi cất giữ thông tin đếm nút inode (inode=%i, tổng=%N): %m\n" + +#. @-expanded: Error storing directory block information (inode=%i, block=%b, num=%N): %m\n +#: e2fsck/problem.c:573 +msgid "Error storing @d @b information (@i=%i, @b=%b, num=%N): %m\n" +msgstr "Gặp lỗi khi cất giữ thông tin khối thư mục (inode=%i, khối=%b, số=%N): %m\n" + +#. @-expanded: Error reading inode %i: %m\n +#: e2fsck/problem.c:579 +#, c-format +msgid "Error reading @i %i: %m\n" +msgstr "Gặp lỗi khi đọc nút inode %i: %m\n" + +#. @-expanded: inode %i has imagic flag set. +#: e2fsck/problem.c:587 +#, c-format +msgid "@i %i has imagic flag set. " +msgstr "Nút inode %i đã đặt cờ ma thuật imagic. " + +#. @-expanded: Special (device/socket/fifo/symlink) file (inode %i) has immutable\n +#. @-expanded: or append-only flag set. +#: e2fsck/problem.c:592 +#, c-format +msgid "" +"Special (@v/socket/fifo/symlink) file (@i %i) has immutable\n" +"or append-only flag set. " +msgstr "" +"Tập tin (thiết bị/ổ cắm/FIFO/liên kết tượng trưng) đặc biệt\n" +"(nút inode %i) đã đặt cờ không thay đổi (immutable) hay\n" +"chỉ phu thêm (append-only)." + +#. @-expanded: inode %i has compression flag set on filesystem without compression support. +#: e2fsck/problem.c:598 +#, c-format +msgid "@i %i has @cion flag set on @f without @cion support. " +msgstr "" +"Nút inode %i đã đặt cờ nén trên hệ thống tập tin,\n" +"mà không hỗ trợ khả năng nén. " + +#. @-expanded: Special (device/socket/fifo) inode %i has non-zero size. +#: e2fsck/problem.c:603 +#, c-format +msgid "Special (@v/socket/fifo) @i %i has non-zero size. " +msgstr "Nút inode (thiết bị/ổ cắm/FIFO) đặc biệt %i có kích cỡ khác không. " + +#. @-expanded: journal inode is not in use, but contains data. +#: e2fsck/problem.c:613 +msgid "@j @i is not in use, but contains data. " +msgstr "Nút inode nhật ký không đang được dùng, còn chứa dữ liệu. " + +#. @-expanded: journal is not regular file. +#: e2fsck/problem.c:618 +msgid "@j is not regular file. " +msgstr "Nhật ký không phải là tập tin chuẩn. " + +#. @-expanded: inode %i was part of the orphaned inode list. +#: e2fsck/problem.c:623 +#, c-format +msgid "@i %i was part of the @o @i list. " +msgstr "Nút inode %i đã là phần danh sách các nút inode côì cút. " + +#. @-expanded: inodes that were part of a corrupted orphan linked list found. +#: e2fsck/problem.c:629 +msgid "@is that were part of a corrupted orphan linked list found. " +msgstr "" +"các nút inode đã là phần của danh sách mồ côi đã liên kết bị hỏng\n" +"đã được tìm. " + +#. @-expanded: error allocating refcount structure (%N): %m\n +#: e2fsck/problem.c:634 +msgid "@A refcount structure (%N): %m\n" +msgstr "Gặp lỗi khi cấp phát cấu trúc số đếm tham chiếu (%N): %m\n" + +#. @-expanded: Error reading extended attribute block %b for inode %i. +#: e2fsck/problem.c:639 +msgid "Error reading @a @b %b for @i %i. " +msgstr "Gặp lỗi khi đọc khối thuộc tính đã mở rộng %b cho nút inode %i. " + +#. @-expanded: inode %i has a bad extended attribute block %b. +#: e2fsck/problem.c:644 +msgid "@i %i has a bad @a @b %b. " +msgstr "Nút inode %i có khối thuộc tính đã mở rộng hỏng %b. " + +#. @-expanded: Error reading extended attribute block %b (%m). +#: e2fsck/problem.c:649 +msgid "Error reading @a @b %b (%m). " +msgstr "Gặp lỗi khi đọc khối thuộc tính đã mở rộng %b (%m). " + +#. @-expanded: extended attribute block %b has reference count %B, should be %N. +#: e2fsck/problem.c:654 +msgid "@a @b %b has reference count %B, @s %N. " +msgstr "Khối thuộc tính đã mở rộng %b có số đếm tham chiếu %B, còn nên là %N. " + +#. @-expanded: Error writing extended attribute block %b (%m). +#: e2fsck/problem.c:659 +msgid "Error writing @a @b %b (%m). " +msgstr "Gặp lỗi khi ghi khối thuộc tính %b (%m). " + +#. @-expanded: extended attribute block %b has h_blocks > 1. +#: e2fsck/problem.c:664 +msgid "@a @b %b has h_@bs > 1. " +msgstr "Khối thuộc tính đã mở rộng %b có khối h_blocks > 1. " + +#. @-expanded: error allocating extended attribute block %b. +#: e2fsck/problem.c:669 +msgid "@A @a @b %b. " +msgstr "Gặp lỗi khi cấp phát khối thuộc tính đã mở rộng %b. " + +#. @-expanded: extended attribute block %b is corrupt (allocation collision). +#: e2fsck/problem.c:674 +msgid "@a @b %b is corrupt (allocation collision). " +msgstr "Khối thuộc tính đã mở rộng %b bị hỏng (sự xung đột cấp phát). " + +#. @-expanded: extended attribute block %b is corrupt (invalid name). +#: e2fsck/problem.c:679 +msgid "@a @b %b is corrupt (@n name). " +msgstr "Khối thuộc tính đã mở rộng %b bị hỏng (tên không hợp lệ). " + +#. @-expanded: extended attribute block %b is corrupt (invalid value). +#: e2fsck/problem.c:684 +msgid "@a @b %b is corrupt (@n value). " +msgstr "Khối thuộc tính đã mở rộng %b bị hỏng ( giá trị không hợp lệ). " + +#. @-expanded: inode %i is too big. +#: e2fsck/problem.c:689 +#, c-format +msgid "@i %i is too big. " +msgstr "Nút inode %i là quá lớn. " + +#. @-expanded: block #%B (%b) causes directory to be too big. +#: e2fsck/problem.c:693 +msgid "@b #%B (%b) causes @d to be too big. " +msgstr "Khối số %B (%b) gây ra thư mục là quá lớn. " + +#. @-expanded: block #%B (%b) causes file to be too big. +#: e2fsck/problem.c:698 +msgid "@b #%B (%b) causes file to be too big. " +msgstr "Khối số %B (%b) gây ra tập tin là quá lớn. " + +#. @-expanded: block #%B (%b) causes symlink to be too big. +#: e2fsck/problem.c:703 +msgid "@b #%B (%b) causes symlink to be too big. " +msgstr "Khối số %B (%b) gây ra liên kết tượng trưng là quá lớn. " + +#. @-expanded: inode %i has INDEX_FL flag set on filesystem without htree support.\n +#: e2fsck/problem.c:708 +#, c-format +msgid "@i %i has INDEX_FL flag set on @f without htree support.\n" +msgstr "" +"Nút inode %i đã đặt cờ chỉ mục INDEX_FL trên hệ thống tập tin\n" +"không hỗ trợ HCÂY.\n" + +#. @-expanded: inode %i has INDEX_FL flag set but is not a directory.\n +#: e2fsck/problem.c:713 +#, c-format +msgid "@i %i has INDEX_FL flag set but is not a @d.\n" +msgstr "Nút inode %i đã đặt cờ chỉ mục INDEX_FL nhưng không phải là thư mục.\n" + +#. @-expanded: HTREE directory inode %i has an invalid root node.\n +#: e2fsck/problem.c:718 +#, c-format +msgid "@h %i has an @n root node.\n" +msgstr "Nút inode thư mục HCÂY %i có nút gốc không hợp lệ.\n" + +#. @-expanded: HTREE directory inode %i has an unsupported hash version (%N)\n +#: e2fsck/problem.c:723 +msgid "@h %i has an unsupported hash version (%N)\n" +msgstr "Nút inode thư mục HCÂY %i có phiên bản băm không được hỗ trợ (%N)\n" + +#. @-expanded: HTREE directory inode %i uses an incompatible htree root node flag.\n +#: e2fsck/problem.c:728 +#, c-format +msgid "@h %i uses an incompatible htree root node flag.\n" +msgstr "Nút inode thư mục HCÂY %i dùng một cờ nút gốc HCÂY không tương thích.\n" + +#. @-expanded: HTREE directory inode %i has a tree depth (%N) which is too big\n +#: e2fsck/problem.c:733 +msgid "@h %i has a tree depth (%N) which is too big\n" +msgstr "Nút inode thư mục HCÂY %i có độ sâu cây (%N) là quá lớn.\n" + +#. @-expanded: Bad block inode has an indirect block (%b) that conflicts with\n +#. @-expanded: filesystem metadata. +#: e2fsck/problem.c:738 +msgid "" +"Bad @b @i has an indirect @b (%b) that conflicts with\n" +"@f metadata. " +msgstr "" +"Nút inode khối hỏng có một khối gián tiếp (%b) xung đột\n" +"với siêu dữ liệu về hệ thống tập tin." + +#. @-expanded: Resize inode (re)creation failed: %m. +#: e2fsck/problem.c:744 +#, c-format +msgid "Resize @i (re)creation failed: %m." +msgstr "Việc tạo (lại) nút inode thay đổi kích cỡ bị lỗi: %m" + +#. @-expanded: inode %i has a extra size (%IS) which is invalid\n +#: e2fsck/problem.c:749 +msgid "@i %i has a extra size (%IS) which is @n\n" +msgstr "Nút inode %i có kích cỡ thêm (%IS) là không hợp lệ.\n" + +#. @-expanded: extended attribute in inode %i has a namelen (%N) which is invalid\n +#: e2fsck/problem.c:754 +msgid "@a in @i %i has a namelen (%N) which is @n\n" +msgstr "" +"Thuộc tính đã mở rộng trong nút inode %i có độ dài tên (namelen) (%N)\n" +"không hợp lệ.\n" + +#. @-expanded: extended attribute in inode %i has a value size (%N) which is invalid\n +#: e2fsck/problem.c:759 +msgid "@a in @i %i has a value size (%N) which is @n\n" +msgstr "" +"Thuộc tính đã mở rộng trong nút inode %i có kích cỡ giá trị (%N)\n" +"không hợp lệ.\n" + +#. @-expanded: extended attribute in inode %i has a value offset (%N) which is invalid\n +#: e2fsck/problem.c:764 +msgid "@a in @i %i has a value offset (%N) which is @n\n" +msgstr "" +"Thuộc tính đã mở rộng trong nút inode %i có hiệu số giá trị (%N)\n" +"không hợp lệ.\n" + +#. @-expanded: extended attribute in inode %i has a value block (%N) which is invalid (must be 0)\n +#: e2fsck/problem.c:769 +msgid "@a in @i %i has a value @b (%N) which is @n (must be 0)\n" +msgstr "" +"Thuộc tính đã mở rộng trong nút inode %i có khối giá trị (%N)\n" +"không hợp lệ (phải là 0).\n" + +#. @-expanded: extended attribute in inode %i has a hash (%N) which is invalid (must be 0)\n +#: e2fsck/problem.c:774 +msgid "@a in @i %i has a hash (%N) which is @n (must be 0)\n" +msgstr "" +"Thuộc tính đã mở rộng trong nút inode %i có băm (%N)\n" +"là không hợp lệ (phải là 0).\n" + +#. @-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:781 +msgid "" +"\n" +"Running additional passes to resolve @bs claimed by more than one @i...\n" +"Pass 1B: Rescanning for @m @bs\n" +msgstr "" +"\n" +"Đạng chạy một số lần qua thêm để tháo gỡ các khối đã được tuyên bố\n" +"bởi nhiều nút inode...\n" +"Lần qua 1B: đang quét lại tìm khối đã được tuyên bố nhiều lần.\n" + +#. @-expanded: multiply-claimed block(s) in inode %i: +#: e2fsck/problem.c:787 +#, c-format +msgid "@m @b(s) in @i %i:" +msgstr "khối đã được tuyên bố nhiều lần trong nút inode %i:" + +#: e2fsck/problem.c:802 +#, c-format +msgid "Error while scanning inodes (%i): %m\n" +msgstr "Gặp lỗi khi quét các nút inode (%i): %m\n" + +#. @-expanded: error allocating inode bitmap (inode_dup_map): %m\n +#: e2fsck/problem.c:807 +#, c-format +msgid "@A @i @B (@i_dup_map): %m\n" +msgstr "Gặp lỗi khi cấp phát sơ đồ bit inode (inode_dup_map): %m\n" + +#. @-expanded: Error while iterating over blocks in inode %i (%s): %m\n +#: e2fsck/problem.c:812 +#, c-format +msgid "Error while iterating over @bs in @i %i (%s): %m\n" +msgstr "Gặp lỗi khi lặp lại trên các khối trong nút inode %i (%s): %m\n" + +#. @-expanded: Error adjusting refcount for extended attribute block %b (inode %i): %m\n +#: e2fsck/problem.c:817 e2fsck/problem.c:1133 +msgid "Error adjusting refcount for @a @b %b (@i %i): %m\n" +msgstr "" +"Gặp lỗi khi điều chỉnh số đếm tham chiếu cho khối thuộc tính đã mở rộng %b\n" +"(inode %i): %m\n" + +#. @-expanded: Pass 1C: Scanning directories for inodes with multiply-claimed blocks\n +#: e2fsck/problem.c:823 +msgid "Pass 1C: Scanning directories for @is with @m @bs\n" +msgstr "" +"Lần qua 1C: đang quét các thư mục tìm nút inode có khối đã được tuyên bố\n" +"nhiều lần\n" + +#. @-expanded: Pass 1D: Reconciling multiply-claimed blocks\n +#: e2fsck/problem.c:829 +msgid "Pass 1D: Reconciling @m @bs\n" +msgstr "Lần qua 1D: đang điều hoà các khối đã được tuyên bố nhiều lần\n" + +#. @-expanded: File %Q (inode #%i, mod time %IM) \n +#. @-expanded: has %B multiply-claimed block(s), shared with %N file(s):\n +#: e2fsck/problem.c:834 +msgid "" +"File %Q (@i #%i, mod time %IM) \n" +" has %B @m @b(s), shared with %N file(s):\n" +msgstr "" +"Tập tin %Q (nút inode số %i, giờ sửa đổi %IM) \n" +"có %B khối đã được tuyên bố nhiều lần, được chia ra %N tập tin:\n" + +#. @-expanded: \t%Q (inode #%i, mod time %IM)\n +#: e2fsck/problem.c:840 +msgid "\t%Q (@i #%i, mod time %IM)\n" +msgstr "\t%Q (nút inode #%i, giờ sửa đổi %IM)\n" + +#. @-expanded: \t\n +#: e2fsck/problem.c:845 +msgid "\t<@f metadata>\n" +msgstr "\t\n" + +#. @-expanded: (There are %N inodes containing multiply-claimed blocks.)\n +#. @-expanded: \n +#: e2fsck/problem.c:850 +msgid "" +"(There are %N @is containing @m @bs.)\n" +"\n" +msgstr "" +"(Có %N nút inode chứa khối đã được tuyên bố nhiều lần.)\n" +"\n" + +#. @-expanded: multiply-claimed blocks already reassigned or cloned.\n +#. @-expanded: \n +#: e2fsck/problem.c:855 +msgid "" +"@m @bs already reassigned or cloned.\n" +"\n" +msgstr "" +"Các khối đã được tuyên bố nhiều lần đã được cấp phát lại\n" +"hay được nhái theo.\n" +"\n" + +#: e2fsck/problem.c:868 +#, c-format +msgid "Couldn't clone file: %m\n" +msgstr "Không thể nhái theo tập tin: %m\n" + +#. @-expanded: Pass 2: Checking directory structure\n +#: e2fsck/problem.c:874 +msgid "Pass 2: Checking @d structure\n" +msgstr "Lần qua 2: đang kiểm tra cấu trúc thư mục\n" + +#. @-expanded: invalid inode number for '.' in directory inode %i.\n +#: e2fsck/problem.c:879 +#, c-format +msgid "@n @i number for '.' in @d @i %i.\n" +msgstr "Số nút inode không hợp lệ cho « . » trong nút inode thư mục %i.\n" + +#. @-expanded: entry '%Dn' in %p (%i) has invalid inode #: %Di.\n +#: e2fsck/problem.c:884 +msgid "@E has @n @i #: %Di.\n" +msgstr "Mục nhập « %Dn » trong %p (%i) có số hiệu nút inode không hợp lệ: %Di.\n" + +#. @-expanded: entry '%Dn' in %p (%i) has deleted/unused inode %Di. +#: e2fsck/problem.c:889 +msgid "@E has @D/unused @i %Di. " +msgstr "Mục nhập « %Dn » trong %p (%i) có nút inode bị xoá bỏ/không được dùng %Di. " + +#. @-expanded: entry '%Dn' in %p (%i) is a link to '.' +#: e2fsck/problem.c:894 +msgid "@E @L to '.' " +msgstr "Mục nhập « %Dn » trong %p (%i) là liên kết đến « . » " + +#. @-expanded: entry '%Dn' in %p (%i) points to inode (%Di) located in a bad block.\n +#: e2fsck/problem.c:899 +msgid "@E points to @i (%Di) located in a bad @b.\n" +msgstr "Mục nhập « %Dn » trong %p (%i) chỉ tới nút inode (%Di) nằm trong khối hỏng.\n" + +#. @-expanded: entry '%Dn' in %p (%i) is a link to directory %P (%Di).\n +#: e2fsck/problem.c:904 +msgid "@E @L to @d %P (%Di).\n" +msgstr "Mục nhập « %Dn » trong %p (%i) là liên kết đến thư mục %P (%Di).\n" + +#. @-expanded: entry '%Dn' in %p (%i) is a link to the root inode.\n +#: e2fsck/problem.c:909 +msgid "@E @L to the @r.\n" +msgstr "Mục nhập « %Dn » trong %p (%i) là liên kết đến nút inode gốc.\n" + +#. @-expanded: entry '%Dn' in %p (%i) has illegal characters in its name.\n +#: e2fsck/problem.c:914 +msgid "@E has illegal characters in its name.\n" +msgstr "Mục nhập « %Dn » trong %p (%i) có tên chứa ký tự cấm.\n" + +#. @-expanded: Missing '.' in directory inode %i.\n +#: e2fsck/problem.c:919 +#, c-format +msgid "Missing '.' in @d @i %i.\n" +msgstr "Còn thiếu « . » trong nút inode thư mục %i.\n" + +#. @-expanded: Missing '..' in directory inode %i.\n +#: e2fsck/problem.c:924 +#, c-format +msgid "Missing '..' in @d @i %i.\n" +msgstr "Còn thiếu « .. » trong nút inode thư mục %i.\n" + +#. @-expanded: First entry '%Dn' (inode=%Di) in directory inode %i (%p) should be '.'\n +#: e2fsck/problem.c:929 +msgid "First @e '%Dn' (@i=%Di) in @d @i %i (%p) @s '.'\n" +msgstr "" +"Mục nhập thứ nhất « %Dn » (nút inode=%Di) trong nút inode thư mục %i (%p)\n" +"nên là « . ».\n" + +#. @-expanded: Second entry '%Dn' (inode=%Di) in directory inode %i should be '..'\n +#: e2fsck/problem.c:934 +msgid "Second @e '%Dn' (@i=%Di) in @d @i %i @s '..'\n" +msgstr "" +"Mục nhập thứ hai « %Dn » (nút inode=%Di) trong nút inode thư mục %i (%p)\n" +"nên là « .. ».\n" + +#. @-expanded: i_faddr for inode %i (%Q) is %IF, should be zero.\n +#: e2fsck/problem.c:939 +msgid "i_faddr @F %IF, @s zero.\n" +msgstr "Địa chỉ i_faddr cho nút injode %i (%Q) là %IF, còn nên là số không.\n" + +#. @-expanded: i_file_acl for inode %i (%Q) is %If, should be zero.\n +#: e2fsck/problem.c:944 +msgid "i_file_acl @F %If, @s zero.\n" +msgstr "i_file_acl cho nút inode %i (%Q) là %IF, còn nên là số không.\n" + +#. @-expanded: i_dir_acl for inode %i (%Q) is %Id, should be zero.\n +#: e2fsck/problem.c:949 +msgid "i_dir_acl @F %Id, @s zero.\n" +msgstr "i_dir_acl cho nút inode %i (%Q) là %Id, còn nên là số không.\n" + +#. @-expanded: i_frag for inode %i (%Q) is %N, should be zero.\n +#: e2fsck/problem.c:954 +msgid "i_frag @F %N, @s zero.\n" +msgstr "Đoạn i_frag cho nút inode %i (%Q) là %Id, còn nên là số không.\n" + +#. @-expanded: i_fsize for inode %i (%Q) is %N, should be zero.\n +#: e2fsck/problem.c:959 +msgid "i_fsize @F %N, @s zero.\n" +msgstr "Kích cỡ i_fsize cho nút inode %i (%Q) là %Id, còn nên là số không.\n" + +#. @-expanded: inode %i (%Q) has invalid mode (%Im).\n +#: e2fsck/problem.c:964 +msgid "@i %i (%Q) has @n mode (%Im).\n" +msgstr "Nút inode %i (%Q) có chế độ không hợp lệ (%Im).\n" + +#. @-expanded: directory inode %i, block %B, offset %N: directory corrupted\n +#: e2fsck/problem.c:969 +msgid "@d @i %i, @b %B, offset %N: @d corrupted\n" +msgstr "Nút inode thư mục %i, khối %B, hiệu %N: thư mục bị hỏng\n" + +#. @-expanded: directory inode %i, block %B, offset %N: filename too long\n +#: e2fsck/problem.c:974 +msgid "@d @i %i, @b %B, offset %N: filename too long\n" +msgstr "Nút inode thư mục %i, khối %B, hiệu %N: tên tập tin quá dài\n" + +#. @-expanded: directory inode %i has an unallocated block #%B. +#: e2fsck/problem.c:979 +msgid "@d @i %i has an unallocated @b #%B. " +msgstr "Nút inode thư mục %i có một khối chưa cấp phát số %B. " + +#. @-expanded: '.' directory entry in directory inode %i is not NULL terminated\n +#: e2fsck/problem.c:984 +#, c-format +msgid "'.' @d @e in @d @i %i is not NULL terminated\n" +msgstr "Mục nhập thư mục « . » trong nút inode thư mục %i không được chấm dứt RỖNG.\n" + +#. @-expanded: '..' directory entry in directory inode %i is not NULL terminated\n +#: e2fsck/problem.c:989 +#, c-format +msgid "'..' @d @e in @d @i %i is not NULL terminated\n" +msgstr "Mục nhập thư mục « .. » trong nút inode thư mục %i không được chấm dứt RỖNG.\n" + +#. @-expanded: inode %i (%Q) is an illegal character device.\n +#: e2fsck/problem.c:994 +msgid "@i %i (%Q) is an @I character @v.\n" +msgstr "Nút inode %i (%Q) là thiết bị ký tự cấm.\n" + +#. @-expanded: inode %i (%Q) is an illegal block device.\n +#: e2fsck/problem.c:999 +msgid "@i %i (%Q) is an @I @b @v.\n" +msgstr "Nút inode %i (%Q) là thiết bị khối cấm.\n" + +#. @-expanded: entry '%Dn' in %p (%i) is duplicate '.' entry.\n +#: e2fsck/problem.c:1004 +msgid "@E is duplicate '.' @e.\n" +msgstr "Mục nhập « %Dn » trong %p (%i) là mục nhập « . » trùng.\n" + +#. @-expanded: entry '%Dn' in %p (%i) is duplicate '..' entry.\n +#: e2fsck/problem.c:1009 +msgid "@E is duplicate '..' @e.\n" +msgstr "Mục nhập « %Dn » trong %p (%i) là mục nhập « .. » trùng.\n" + +#: e2fsck/problem.c:1014 e2fsck/problem.c:1290 +#, c-format +msgid "Internal error: couldn't find dir_info for %i.\n" +msgstr "Lỗi nội bộ : không tìm thấy thông tin thư mục (dir_info) về %i.\n" + +#. @-expanded: entry '%Dn' in %p (%i) has rec_len of %Dr, should be %N.\n +#: e2fsck/problem.c:1019 +msgid "@E has rec_len of %Dr, @s %N.\n" +msgstr "" +"Mục nhập « %Dn » trong %p (%i) có độ dài mục nhập (rec_len) là %Dr,\n" +"còn nên là %N.\n" + +#. @-expanded: error allocating icount structure: %m\n +#: e2fsck/problem.c:1024 +#, c-format +msgid "@A icount structure: %m\n" +msgstr "Gặp lỗi khi cấp phát cấu trúc đếm icount: %m\n" + +#. @-expanded: Error iterating over directory blocks: %m\n +#: e2fsck/problem.c:1029 +#, c-format +msgid "Error iterating over @d @bs: %m\n" +msgstr "Gặp lỗi khi lặp lại trên các khối thư mục: %m\n" + +#. @-expanded: Error reading directory block %b (inode %i): %m\n +#: e2fsck/problem.c:1034 +msgid "Error reading @d @b %b (@i %i): %m\n" +msgstr "Gặp lỗi khi đọc khối thư mục %b (nút inode %i): %m\n" + +#. @-expanded: Error writing directory block %b (inode %i): %m\n +#: e2fsck/problem.c:1039 +msgid "Error writing @d @b %b (@i %i): %m\n" +msgstr "Gặp lỗi khi ghi khối thư mục %b (nút inode %i): %m\n" + +#. @-expanded: error allocating new directory block for inode %i (%s): %m\n +#: e2fsck/problem.c:1044 +#, c-format +msgid "@A new @d @b for @i %i (%s): %m\n" +msgstr "Gặp lỗi khi cấp phát khối thư mục mới cho nút inode %i (%s): %m\n" + +#. @-expanded: Error deallocating inode %i: %m\n +#: e2fsck/problem.c:1049 +#, c-format +msgid "Error deallocating @i %i: %m\n" +msgstr "Gặp lỗi khi hủy cấp phát nút inode %i: %m\n" + +#. @-expanded: directory entry for '.' is big. +#: e2fsck/problem.c:1054 +msgid "@d @e for '.' is big. " +msgstr "mục nhập thư mục cho « . » là quá lớn. " + +#. @-expanded: inode %i (%Q) is an illegal FIFO.\n +#: e2fsck/problem.c:1059 +msgid "@i %i (%Q) is an @I FIFO.\n" +msgstr "Nút inode %i (%Q) là một FIFO cấm.\n" + +#. @-expanded: inode %i (%Q) is an illegal socket.\n +#: e2fsck/problem.c:1064 +msgid "@i %i (%Q) is an @I socket.\n" +msgstr "Nút inode %i (%Q) là một ổ cắm cấm.\n" + +#. @-expanded: Setting filetype for entry '%Dn' in %p (%i) to %N.\n +#: e2fsck/problem.c:1069 +msgid "Setting filetype for @E to %N.\n" +msgstr "Đang đặt kiểu tập tin cho mục nhập « %Dn » trong %p (%i) thành %N.\n" + +#. @-expanded: entry '%Dn' in %p (%i) has an incorrect filetype (was %Dt, should be %N).\n +#: e2fsck/problem.c:1074 +msgid "@E has an incorrect filetype (was %Dt, @s %N).\n" +msgstr "" +"Mục nhập « %Dn » trong %p (%i) có kiểu tên tập tin không đúng (đã %Dt,\n" +"còn nên là %N).\n" + +#. @-expanded: entry '%Dn' in %p (%i) has filetype set.\n +#: e2fsck/problem.c:1079 +msgid "@E has filetype set.\n" +msgstr "Mục nhập « %Dn » trong %p (%i) đã đặt kiểu tên tập tin.\n" + +#. @-expanded: entry '%Dn' in %p (%i) has a zero-length name.\n +#: e2fsck/problem.c:1084 +msgid "@E has a @z name.\n" +msgstr "Mục nhập « %Dn » trong %p (%i) có tên dài bằng số không.\n" + +#. @-expanded: Symlink %Q (inode #%i) is invalid.\n +#: e2fsck/problem.c:1089 +msgid "Symlink %Q (@i #%i) is @n.\n" +msgstr "Liên kết tượng trưng %Q (nút inode #%i) là không hợp lệ.\n" + +#. @-expanded: extended attribute block for inode %i (%Q) is invalid (%If).\n +#: e2fsck/problem.c:1094 +msgid "@a @b @F @n (%If).\n" +msgstr "Khối thuộc tính đã mở rộng cho nút inode %i (%Q) là không hợp lệ (%If).\n" + +#. @-expanded: filesystem contains large files, but lacks LARGE_FILE flag in superblock.\n +#: e2fsck/problem.c:1099 +msgid "@f contains large files, but lacks LARGE_FILE flag in @S.\n" +msgstr "" +"Hệ thống tập tin chứa tập tin lớn, còn thiếu cờ tập tin lớn (LARGE_FILE)\n" +"trong siêu khối.\n" + +#. @-expanded: problem in HTREE directory inode %d: node (%B) not referenced\n +#: e2fsck/problem.c:1104 +msgid "@p @h %d: node (%B) not referenced\n" +msgstr "Gặp lỗi trong nút inode thư mục HCÂY %d: nút (%B) không có tham chiếu.\n" + +#. @-expanded: problem in HTREE directory inode %d: node (%B) referenced twice\n +#: e2fsck/problem.c:1109 +msgid "@p @h %d: node (%B) referenced twice\n" +msgstr "Gặp lỗi trong nút inode thư mục HCÂY %d: nút (%B) có tham chiếu hai lần.\n" + +#. @-expanded: problem in HTREE directory inode %d: node (%B) has bad min hash\n +#: e2fsck/problem.c:1114 +msgid "@p @h %d: node (%B) has bad min hash\n" +msgstr "Gặp lỗi trong nút inode thư mục HCÂY %d: nút (%B) có băm tối thiểu sai.\n" + +#. @-expanded: problem in HTREE directory inode %d: node (%B) has bad max hash\n +#: e2fsck/problem.c:1119 +msgid "@p @h %d: node (%B) has bad max hash\n" +msgstr "Gặp lỗi trong nút inode thư mục HCÂY %d: nút (%B) có băm tối đa sai.\n" + +#. @-expanded: invalid HTREE directory inode %d (%q). +#: e2fsck/problem.c:1124 +msgid "@n @h %d (%q). " +msgstr "Nút inode thư mục HCÂY không hợp lệ %d (%q). " + +#. @-expanded: problem in HTREE directory inode %d (%q): bad block number %b.\n +#: e2fsck/problem.c:1128 +msgid "@p @h %d (%q): bad @b number %b.\n" +msgstr "Gặp lỗi trong nút inode thư mục HCÂY %d (%q): số hiệu khối sai %b.\n" + +#. @-expanded: problem in HTREE directory inode %d: root node is invalid\n +#: e2fsck/problem.c:1138 +#, c-format +msgid "@p @h %d: root node is @n\n" +msgstr "Gặp lỗi trong nút inode thư mục HCÂY %d: nút gốc là không hợp lệ.\n" + +#. @-expanded: problem in HTREE directory inode %d: node (%B) has invalid limit (%N)\n +#: e2fsck/problem.c:1143 +msgid "@p @h %d: node (%B) has @n limit (%N)\n" +msgstr "" +"Gặp lỗi trong nút inode thư mục HCÂY %d: nút (%B)\n" +"có hạn chế không hợp lệ (%N).\n" + +#. @-expanded: problem in HTREE directory inode %d: node (%B) has invalid count (%N)\n +#: e2fsck/problem.c:1148 +msgid "@p @h %d: node (%B) has @n count (%N)\n" +msgstr "" +"Gặp lỗi trong nút inode thư mục HCÂY %d: nút (%B) có số đếm\n" +"không hợp lệ (%N).\n" + +#. @-expanded: problem in HTREE directory inode %d: node (%B) has an unordered hash table\n +#: e2fsck/problem.c:1153 +msgid "@p @h %d: node (%B) has an unordered hash table\n" +msgstr "" +"Gặp lỗi trong nút inode thư mục HCÂY %d: nút (%B) có bảng băm\n" +"không có thứ tự.\n" + +#. @-expanded: problem in HTREE directory inode %d: node (%B) has invalid depth\n +#: e2fsck/problem.c:1158 +msgid "@p @h %d: node (%B) has @n depth\n" +msgstr "" +"Gặp lỗi trong nút inode thư mục HCÂY %d: nút (%B) có độ sâu\n" +"không hợp lệ.\n" + +#. @-expanded: Duplicate entry '%Dn' in %p (%i) found. +#: e2fsck/problem.c:1163 +msgid "Duplicate @E found. " +msgstr "Tìm thấy mục nhập trùng « %Dn » trong %p (%i). " + +#. @-expanded: entry '%Dn' in %p (%i) has a non-unique filename.\n +#. @-expanded: Rename to %s +#: e2fsck/problem.c:1168 +#, no-c-format +msgid "" +"@E has a non-unique filename.\n" +"Rename to %s" +msgstr "" +"Mục nhập trùng « %Dn » trong %p (%i) có tên tập tin không duy nhất.\n" +"Thay đổi tên thành %s" + +#. @-expanded: Duplicate entry '%Dn' found.\n +#. @-expanded: \tMarking %p (%i) to be rebuilt.\n +#. @-expanded: \n +#: e2fsck/problem.c:1173 +msgid "" +"Duplicate @e '%Dn' found.\n" +"\tMarking %p (%i) to be rebuilt.\n" +"\n" +msgstr "" +"Tìm thấy mục nhập trùng « %Dn ».\n" +"Đang nhãn %p (%i) để được xây dựng lại.\n" +"\n" + +#. @-expanded: Pass 3: Checking directory connectivity\n +#: e2fsck/problem.c:1180 +msgid "Pass 3: Checking @d connectivity\n" +msgstr "Lần qua 3: đang kiểm tra khả năng kíêt nối thư mục\n" + +#. @-expanded: root inode not allocated. +#: e2fsck/problem.c:1185 +msgid "@r not allocated. " +msgstr "Chưa cấp phát nút inode gốc. " + +#. @-expanded: No room in lost+found directory. +#: e2fsck/problem.c:1190 +msgid "No room in @l @d. " +msgstr "Không có chỗ còn rảnh trong thư mục mất+tìm. " + +#. @-expanded: Unconnected directory inode %i (%p)\n +#: e2fsck/problem.c:1195 +#, c-format +msgid "Unconnected @d @i %i (%p)\n" +msgstr "Có nút inode thư mục chưa kết nối %i (%p)\n" + +#. @-expanded: /lost+found not found. +#: e2fsck/problem.c:1200 +msgid "/@l not found. " +msgstr "Không tìm thấy /mất+tìm. " + +#. @-expanded: '..' in %Q (%i) is %P (%j), should be %q (%d).\n +#: e2fsck/problem.c:1205 +msgid "'..' in %Q (%i) is %P (%j), @s %q (%d).\n" +msgstr "« .. » trong %Q (%i) là %P (%j), còn nên là %q (%d).\n" + +#. @-expanded: Bad or non-existent /lost+found. Cannot reconnect.\n +#: e2fsck/problem.c:1210 +msgid "Bad or non-existent /@l. Cannot reconnect.\n" +msgstr "Có /mất+tìm sai hay không tồn tại nên không thể kết nối lại.\n" + +#. @-expanded: Could not expand /lost+found: %m\n +#: e2fsck/problem.c:1215 +#, c-format +msgid "Could not expand /@l: %m\n" +msgstr "Không thể mở rộng /mất+tìm: %m\n" + +#: e2fsck/problem.c:1220 +#, c-format +msgid "Could not reconnect %i: %m\n" +msgstr "Không thể kết nối lại %i: %m\n" + +#. @-expanded: Error while trying to find /lost+found: %m\n +#: e2fsck/problem.c:1225 +#, c-format +msgid "Error while trying to find /@l: %m\n" +msgstr "Gặp lỗi khi cố gắng tìm /mất+tìm: %m\n" + +#. @-expanded: ext2fs_new_block: %m while trying to create /lost+found directory\n +#: e2fsck/problem.c:1230 +#, c-format +msgid "ext2fs_new_@b: %m while trying to create /@l @d\n" +msgstr "ext2fs_new_@b: %m trong khi cố gắng tạo thư mục /mất+tìm\n" + +#. @-expanded: ext2fs_new_inode: %m while trying to create /lost+found directory\n +#: e2fsck/problem.c:1235 +#, c-format +msgid "ext2fs_new_@i: %m while trying to create /@l @d\n" +msgstr "ext2fs_new_@i: %m trong khi cố gắng tạo thư mục /mất+tìm\n" + +#. @-expanded: ext2fs_new_dir_block: %m while creating new directory block\n +#: e2fsck/problem.c:1240 +#, c-format +msgid "ext2fs_new_dir_@b: %m while creating new @d @b\n" +msgstr "ext2fs_new_dir_@b: %m trong khi cố gắng tạo khối thư mục mới\n" + +#. @-expanded: ext2fs_write_dir_block: %m while writing the directory block for /lost+found\n +#: e2fsck/problem.c:1245 +#, c-format +msgid "ext2fs_write_dir_@b: %m while writing the @d @b for /@l\n" +msgstr "ext2fs_write_dir_@b: %m trong khi ghi khối thư mục cho /mất+tìm\n" + +#. @-expanded: Error while adjusting inode count on inode %i\n +#: e2fsck/problem.c:1250 +#, c-format +msgid "Error while adjusting @i count on @i %i\n" +msgstr "Gặp lỗi khi điều chỉnh số đếm nút inode trên nút inode %i\n" + +#. @-expanded: Couldn't fix parent of inode %i: %m\n +#. @-expanded: \n +#: e2fsck/problem.c:1255 +#, c-format +msgid "" +"Couldn't fix parent of @i %i: %m\n" +"\n" +msgstr "" +"Không thể sửa chữa mẹ của nút inode %i: %m\n" +"\n" + +#. @-expanded: Couldn't fix parent of inode %i: Couldn't find parent directory entry\n +#. @-expanded: \n +#: e2fsck/problem.c:1260 +#, c-format +msgid "" +"Couldn't fix parent of @i %i: Couldn't find parent @d @e\n" +"\n" +msgstr "" +"Không thể sửa chữa mẹ của nút inode %i: không tìm thấy mục nhập thư mục mẹ\n" +"\n" + +#. @-expanded: Error creating root directory (%s): %m\n +#: e2fsck/problem.c:1270 +#, c-format +msgid "Error creating root @d (%s): %m\n" +msgstr "Gặp lỗi khi tạo thư mục gốc (%s): %m\n" + +#. @-expanded: Error creating /lost+found directory (%s): %m\n +#: e2fsck/problem.c:1275 +#, c-format +msgid "Error creating /@l @d (%s): %m\n" +msgstr "Gặp lỗi khi tạo thư mục /mất+tìm (%s): %m\n" + +#. @-expanded: root inode is not a directory; aborting.\n +#: e2fsck/problem.c:1280 +msgid "@r is not a @d; aborting.\n" +msgstr "Nút inode gốc không phải là một thư mục nên hủy bỏ.\n" + +#. @-expanded: Cannot proceed without a root inode.\n +#: e2fsck/problem.c:1285 +msgid "Cannot proceed without a @r.\n" +msgstr "Không thể tiếp tục khi không có nút inode gốc.\n" + +#. @-expanded: /lost+found is not a directory (ino=%i)\n +#: e2fsck/problem.c:1295 +#, c-format +msgid "/@l is not a @d (ino=%i)\n" +msgstr "/mất+tìm không phải là thư mục (ino=%i)\n" + +#: e2fsck/problem.c:1302 +msgid "Pass 3A: Optimizing directories\n" +msgstr "Lần qua 3A: đang tối ưu hoá các thư mục\n" + +#: e2fsck/problem.c:1307 +#, c-format +msgid "Failed to create dirs_to_hash iterator: %m" +msgstr "Lỗi tạo bộ lặp lại thư mục tới băm (dirs_to_hash): %m" + +#: e2fsck/problem.c:1312 +msgid "Failed to optimize directory %q (%d): %m" +msgstr "Lỗi tối ưu hoá thư mục %q (%d): %m" + +#: e2fsck/problem.c:1317 +msgid "Optimizing directories: " +msgstr "Đang tối ưu hoá các thư mục: " + +#: e2fsck/problem.c:1334 +msgid "Pass 4: Checking reference counts\n" +msgstr "Lần qua 4: đang kiểm tra các số đếm tham chiếu\n" + +#. @-expanded: unattached zero-length inode %i. +#: e2fsck/problem.c:1339 +#, c-format +msgid "@u @z @i %i. " +msgstr "Có nút inode dài bằng không chưa kết nối %i. " + +#. @-expanded: unattached inode %i\n +#: e2fsck/problem.c:1344 +#, c-format +msgid "@u @i %i\n" +msgstr "Có nút inode chưa kết nối %i.\n" + +#. @-expanded: inode %i ref count is %Il, should be %N. +#: e2fsck/problem.c:1349 +msgid "@i %i ref count is %Il, @s %N. " +msgstr "Nút inode %i số đếm tham chiếu là %Il, còn nên là %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:1353 +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 "" +"CẢNH BÁO : GẶP LỖI LẬP TRÌNH TRONG E2FSCK !\n" +"HOẶC NGƯỜI NÀO KIỂM TRA KHÔNG KHÔN NGOAN MỘT HỆ THỐNG TẬP TIN\n" +"ĐÃ GẮN KẾT (HOẠT ĐỘNG).\n" +"Thông tin liên kết nút inode (inode_link_info) [%i] là %N,\n" +"số đếm liên kết nút inode (inode.i_links_count) là %Il.\n" +"Hai số này nên là trùng !\n" + +#. @-expanded: Pass 5: Checking group summary information\n +#: e2fsck/problem.c:1363 +msgid "Pass 5: Checking @g summary information\n" +msgstr "Lần qua 5: đang kiểm tra thông tin tóm tắt nhóm\n" + +#. @-expanded: Padding at end of inode bitmap is not set. +#: e2fsck/problem.c:1368 +msgid "Padding at end of @i @B is not set. " +msgstr "Chưa đặt độ đệm tại kết thúc của sơ đồ bit inode. " + +#. @-expanded: Padding at end of block bitmap is not set. +#: e2fsck/problem.c:1373 +msgid "Padding at end of @b @B is not set. " +msgstr "Chưa đặt độ đệm tại kết thúc của sơ đồ bit khối. " + +#. @-expanded: block bitmap differences: +#: e2fsck/problem.c:1378 +msgid "@b @B differences: " +msgstr "Hiệu sơ đồ bit khối: " + +#. @-expanded: inode bitmap differences: +#: e2fsck/problem.c:1398 +msgid "@i @B differences: " +msgstr "Hiệu sơ đồ bit inode: " + +#. @-expanded: Free inodes count wrong for group #%g (%i, counted=%j).\n +#: e2fsck/problem.c:1418 +msgid "Free @is count wrong for @g #%g (%i, counted=%j).\n" +msgstr "Số đếm nút inode rảnh là không đúng cho nhóm số %g (%i, tổng=%j).\n" + +#. @-expanded: Directories count wrong for group #%g (%i, counted=%j).\n +#: e2fsck/problem.c:1423 +msgid "Directories count wrong for @g #%g (%i, counted=%j).\n" +msgstr "Số đếm thư mục là không đúng cho nhóm số %g (%i, tổng=%j).\n" + +#. @-expanded: Free inodes count wrong (%i, counted=%j).\n +#: e2fsck/problem.c:1428 +msgid "Free @is count wrong (%i, counted=%j).\n" +msgstr "Số đếm nút inode rảnh là không đúng (%i, tổng=%j).\n" + +#. @-expanded: Free blocks count wrong for group #%g (%b, counted=%c).\n +#: e2fsck/problem.c:1433 +msgid "Free @bs count wrong for @g #%g (%b, counted=%c).\n" +msgstr "Số đếm khối rảnh là không đúng cho nhóm số %g (%b, tổng=%c).\n" + +#. @-expanded: Free blocks count wrong (%b, counted=%c).\n +#: e2fsck/problem.c:1438 +msgid "Free @bs count wrong (%b, counted=%c).\n" +msgstr "Số đếm khối rảnh là không đúng (%b, tổng=%c).\n" + +#. @-expanded: PROGRAMMING ERROR: filesystem (#%N) bitmap endpoints (%b, %c) don't match calculated bitmap +#. @-expanded: endpoints (%i, %j)\n +#: e2fsck/problem.c:1443 +msgid "PROGRAMMING ERROR: @f (#%N) @B endpoints (%b, %c) don't match calculated @B endpoints (%i, %j)\n" +msgstr "" +"LỖI LẬP TRÌNH: điểm cuối sơ đồ bit của hệ thống tập tin (số %N) (%b, %c)\n" +"không khớp với những điểm cuối sơ đồ bit đã tính (%i, %j)\n" + +#: e2fsck/problem.c:1449 +msgid "Internal error: fudging end of bitmap (%N)\n" +msgstr "Lỗi nội bộ : đang làm quấy quá kết thúc của sơ đồ bit (%N)\n" + +#. @-expanded: Error copying in replacement inode bitmap: %m\n +#: e2fsck/problem.c:1454 +#, c-format +msgid "Error copying in replacement @i @B: %m\n" +msgstr "Gặp lỗi khi sao chép vào sơ đồ bit nút inode thay thế: %m\n" + +#. @-expanded: Error copying in replacement block bitmap: %m\n +#: e2fsck/problem.c:1459 +#, c-format +msgid "Error copying in replacement @b @B: %m\n" +msgstr "Gặp lỗi khi sao chép vào sơ đồ bit khối thay thế: %m\n" + +#: e2fsck/problem.c:1597 +#, c-format +msgid "Unhandled error code (0x%x)!\n" +msgstr "Mã lỗi chưa thao tác (0x%x)!\n" + +#: e2fsck/problem.c:1691 +msgid "IGNORED" +msgstr "BỊ BỎ QUA" + +#: e2fsck/scantest.c:81 +#, c-format +msgid "Memory used: %d, elapsed time: %6.3f/%6.3f/%6.3f\n" +msgstr "Bộ nhớ đã chiếm: %d, thời gian đã qua: %6.3f/%6.3f/%6.3f\n" + +#: e2fsck/scantest.c:100 +#, c-format +msgid "size of inode=%d\n" +msgstr "kích cỡ nút inode=%d\n" + +#: e2fsck/scantest.c:121 +msgid "while starting inode scan" +msgstr "trong khi khởi chạy quét nút inode" + +#: e2fsck/scantest.c:132 +msgid "while doing inode scan" +msgstr "trong khi chạy quét nút inode" + +#: e2fsck/super.c:200 +#, c-format +msgid "while calling ext2fs_block_iterate for inode %d" +msgstr "trong khi gọi hàm lặp lại khối « ext2fs_block_iterate » cho nút inode %d" + +#: e2fsck/super.c:223 +#, c-format +msgid "while calling ext2fs_adjust_ea_refocunt for inode %d" +msgstr "" +"trong khi gọi hàm điều chỉnh số đếm tham chiếu « ext2fs_adjust_ea_refocunt »\n" +"cho nút inode %d" + +#: e2fsck/super.c:281 +msgid "Truncating" +msgstr "Đang cắt ngắn" + +#: e2fsck/super.c:282 +msgid "Clearing" +msgstr "Đang xoá sạch" + +#: e2fsck/swapfs.c:98 +msgid "while calling ext2fs_block_iterate" +msgstr "trong khi gọi hàm lặp lại khối « ext2fs_block_iterate »" + +#: e2fsck/swapfs.c:104 +msgid "while calling iterator function" +msgstr "trong khi gọi hàm lặp lại" + +#: e2fsck/swapfs.c:126 +msgid "while allocating inode buffer" +msgstr "trong khi cấp phát bộ đệm nút inode" + +#: e2fsck/swapfs.c:138 +#, c-format +msgid "while reading inode table (group %d)" +msgstr "trong khi đọc bảng nút inode (nhóm %d)" + +#: e2fsck/swapfs.c:176 +#, c-format +msgid "while writing inode table (group %d)" +msgstr "trong khi ghi bảng nút inode (nhóm %d)" + +#: e2fsck/swapfs.c:223 +#, c-format +msgid "Pass 0: Doing byte-swap of filesystem\n" +msgstr "Lần qua 0: đang chạy việc trao đổi byte hệ thống tập tin\n" + +#: e2fsck/swapfs.c:230 +#, c-format +msgid "" +"%s: the filesystem must be freshly checked using fsck\n" +"and not mounted before trying to byte-swap it.\n" +msgstr "" +"%s: hệ thống tập tin phải được kiểm tra mới, dùng fsck,\n" +"và không được gắn kết trước khi cố gắng trao đổi byte nó.\n" + +#: e2fsck/swapfs.c:265 +msgid "Byte swap" +msgstr "Trao đổi byte" + +#: e2fsck/unix.c:74 +#, c-format +msgid "" +"Usage: %s [-panyrcdfvstDFSV] [-b superblock] [-B blocksize]\n" +"\t\t[-I inode_buffer_blocks] [-P process_inode_size]\n" +"\t\t[-l|-L bad_blocks_file] [-C fd] [-j external_journal]\n" +"\t\t[-E extended-options] device\n" +msgstr "" +"Cách sử dụng: %s [-panyrcdfvstDFSV] [-b siêu_khối] [-B cỡ_khối]\n" +"\t\t[-I khối_đệm_inode] [-P cỡ_inode_xử_lý]\n" +"\t\t[-l|-L tập_tin_khối_hỏng] [-C fd] [-j nhật_ký_bên_ngoài]\n" +"\t\t[-E tùy_chọn_mở_rộng] thiết_bị\n" + +#: e2fsck/unix.c:80 +#, c-format +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" +"Trợ giúp khẩn cấp:\n" +" -p Sửa chữa tự động (không có câu hỏi)\n" +" -n Không thay đổi hệ thống tập tin\n" +" -y Giả sử trả lời « Có » mọi câu hỏi\n" +" -c Kiểm tra tìm khối hỏng: thêm vào danh sách khối hỏng\n" +" -f Buộc kiểm tra ngay cả khi hệ thống tập tin có nhãn là sạch\n" + +#: e2fsck/unix.c:86 +#, c-format +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" +msgstr "" +" -v \t\tXuất chi tiết\n" +" -b siêu_khối \t\tDùng siêu khối xen kẽ\n" +" -B cỡ_khối \t\tBuộc kích cỡ của khối khi tìm siêu khối\n" +" -j nhật_ký_bên_ngoài \tĐặt địa điểm của nhật ký bên ngoài\n" +" -l tập_tin_khối_hỏng Thêm vào danh sách các khối hỏng\n" +" -L tập_tin_khối_hỏng Đặt danh sách các khối hỏng\n" + +#: e2fsck/unix.c:121 +#, c-format +msgid "%s: %d/%d files (%0d.%d%% non-contiguous), %u/%u blocks\n" +msgstr "%s: %d/%d tập tin (%0d.%d%% không kề nhau), %u/%u khối\n" + +#: e2fsck/unix.c:133 +#, c-format +msgid " # of inodes with ind/dind/tind blocks: %d/%d/%d\n" +msgstr " số inode có khối ind/dind/tind: %d/%d/%d\n" + +#: e2fsck/unix.c:177 misc/badblocks.c:779 misc/tune2fs.c:792 misc/util.c:151 +#: resize/main.c:184 +#, c-format +msgid "while determining whether %s is mounted." +msgstr "trong khi quyết định nếu %s đã gắn kết chưa." + +#: e2fsck/unix.c:195 +#, c-format +msgid "Warning! %s is mounted.\n" +msgstr "Cảnh báo ! %s đã gắn kết.\n" + +#: e2fsck/unix.c:199 +#, c-format +msgid "%s is mounted. " +msgstr "%s đã gắn kết. " + +#: e2fsck/unix.c:201 +msgid "" +"Cannot continue, aborting.\n" +"\n" +msgstr "" +"Không thể tiếp tục nên hủy bỏ.\n" +"\n" + +#: e2fsck/unix.c:202 +#, c-format +msgid "" +"\n" +"\n" +"WARNING!!! Running e2fsck on a mounted filesystem may cause\n" +"SEVERE filesystem damage.\n" +"\n" +msgstr "" +"\n" +"\n" +"CẢNH BÁO !!! Việc chạy e2fsck trên hệ thống tập tin đã gắn kết\n" +"có thể LÀM HỎNG NẶNG hệ thống tập tin đó.\n" +"\n" + +#: e2fsck/unix.c:205 +msgid "Do you really want to continue" +msgstr "Bạn thực sự muốn tiếp tục" + +#: e2fsck/unix.c:207 +#, c-format +msgid "check aborted.\n" +msgstr "kiểm tra bị hủy bỏ.\n" + +#: e2fsck/unix.c:277 +msgid " contains a file system with errors" +msgstr " chứa hệ thống tập tin có lỗi" + +#: e2fsck/unix.c:279 +msgid " was not cleanly unmounted" +msgstr " đã không tháo gắn kết sạch" + +#: e2fsck/unix.c:283 +#, c-format +msgid " has been mounted %u times without being checked" +msgstr " đã được gắn kết %u lần mà không được kiểm tra" + +#: e2fsck/unix.c:291 +#, c-format +msgid " has gone %u days without being checked" +msgstr " đã chạy trong %u ngày mà không được kiểm tra" + +#: e2fsck/unix.c:300 +msgid ", check forced.\n" +msgstr ", kiểm tra bị ép buộc.\n" + +#: e2fsck/unix.c:303 +#, c-format +msgid "%s: clean, %d/%d files, %u/%u blocks" +msgstr "%s: sạch, %d/%d tập tin, %u/%u khối" + +#: e2fsck/unix.c:320 +msgid " (check deferred; on battery)" +msgstr " (kiểm tra bị hoãn; chạy bằng pin)" + +#: e2fsck/unix.c:323 +msgid " (check after next mount)" +msgstr " (kiểm tra sau khi gắn kết lần kế tiếp)" + +#: e2fsck/unix.c:325 +#, c-format +msgid " (check in %ld mounts)" +msgstr " (kiểm tra trong %ld lần gắn kết)" + +#: e2fsck/unix.c:471 +#, c-format +msgid "ERROR: Couldn't open /dev/null (%s)\n" +msgstr "LỖI: không thể mở (%s)\n" + +#: e2fsck/unix.c:542 +#, c-format +msgid "Invalid EA version.\n" +msgstr "Phiên bản EA không hợp lệ.\n" + +#: e2fsck/unix.c:548 +#, c-format +msgid "Unknown extended option: %s\n" +msgstr "Tùy chọn đã mở rộng không rõ : %s\n" + +#: e2fsck/unix.c:566 +#, c-format +msgid "" +"Syntax error in e2fsck config file (%s, line #%d)\n" +"\t%s\n" +msgstr "" +"Gặp lỗi cú pháp trong tập tin cấu hình e2fsck (%s, dòng số %d)\n" +"\t%s\n" + +#: e2fsck/unix.c:623 +#, c-format +msgid "Error validating file descriptor %d: %s\n" +msgstr "Gặp lỗi khi hợp lệ hóa mô tả tập tin %d: %s\n" + +#: e2fsck/unix.c:627 +msgid "Invalid completion information file descriptor" +msgstr "Mô tả tập tin thông tin hoà chỉnh không hợp lệ" + +#: e2fsck/unix.c:642 +msgid "Only one of the options -p/-a, -n or -y may be specified." +msgstr "Có thể xác định chỉ một của những tùy chọn -p/-a, -n hay -y thôi." + +#: e2fsck/unix.c:663 +#, c-format +msgid "The -t option is not supported on this version of e2fsck.\n" +msgstr "Tùy chọn « -t » không được hỗ trợ bởi phiên bản e2fsck này.\n" + +#: e2fsck/unix.c:728 +#, c-format +msgid "Byte-swapping filesystems not compiled in this version of e2fsck\n" +msgstr "" +"Hệ thống tập tin trao đổi byte không được biên dịch\n" +"trong phiên bản e2fsck này\n" + +#: e2fsck/unix.c:751 misc/tune2fs.c:459 misc/tune2fs.c:717 misc/tune2fs.c:734 +#, c-format +msgid "Unable to resolve '%s'" +msgstr "Không thể quyết định « %s »" + +#: e2fsck/unix.c:782 +#, c-format +msgid "Incompatible options not allowed when byte-swapping.\n" +msgstr "Không cho phép tùy chọn không tương thích khi trao đổi byte.\n" + +#: e2fsck/unix.c:789 +#, c-format +msgid "The -c and the -l/-L options may not be both used at the same time.\n" +msgstr "Không cho phép sử dụng tùy chọn cả « --c » lẫn « --l/L » đều đồng thời.\n" + +#: e2fsck/unix.c:867 +#, c-format +msgid "Error: ext2fs library version out of date!\n" +msgstr "Lỗi: phiên bản thư viện ext2fs quá cũ !\n" + +#: e2fsck/unix.c:875 +msgid "while trying to initialize program" +msgstr "trong khi cố gắng sở khởi chương trình" + +#: e2fsck/unix.c:889 +#, c-format +msgid "\tUsing %s, %s\n" +msgstr "\tDùng %s, %s\n" + +#: e2fsck/unix.c:901 +msgid "need terminal for interactive repairs" +msgstr "cần thiết bàn điều khiển để sửa chữa tương tác" + +#: e2fsck/unix.c:940 +#, c-format +msgid "%s trying backup blocks...\n" +msgstr "%s đang cố gắng các khối dự trữ...\n" + +#: e2fsck/unix.c:941 +msgid "Couldn't find ext2 superblock," +msgstr "Không tìm thấy siêu khối ext2," + +#: e2fsck/unix.c:942 +msgid "Group descriptors look bad..." +msgstr "Các mô tả nhóm hình như sai..." + +#: e2fsck/unix.c:953 +#, c-format +msgid "" +"The filesystem revision is apparently too high for this version of e2fsck.\n" +"(Or the filesystem superblock is corrupt)\n" +"\n" +msgstr "" +"Bản sửa đổi hệ thống tập tin có vẻ quá cao cho phiên bản e2fsck này\n" +"(hoặc siêu khối hệ thống tập tin bị hỏng).\n" +"\n" + +#: e2fsck/unix.c:959 +#, c-format +msgid "Could this be a zero-length partition?\n" +msgstr "Phân vùng này có thể có độ dài bằng không ?\n" + +#: e2fsck/unix.c:961 +#, c-format +msgid "You must have %s access to the filesystem or be root\n" +msgstr "Bạn phải có quyền truy cập %s hệ thống tập tin, hay là người chủ (root)\n" + +#: e2fsck/unix.c:966 +#, c-format +msgid "Possibly non-existent or swap device?\n" +msgstr "Có thể là thiết bị không tồn tại, hoặc thiết bị trao đổi ?\n" + +#: e2fsck/unix.c:968 +#, c-format +msgid "Filesystem mounted or opened exclusively by another program?\n" +msgstr "Hệ thống tập tin đã được gắn kết hay mở hoàn toàn bởi chương trình khác ?\n" + +#: e2fsck/unix.c:972 +#, c-format +msgid "" +"Disk write-protected; use the -n option to do a read-only\n" +"check of the device.\n" +msgstr "" +"Đĩa có chống ghi; hãy dùng tùy chọn « -n » để chạy\n" +"việc kiểm tra chỉ đọc thiết bị đó.\n" + +#: e2fsck/unix.c:989 +msgid "Get a newer version of e2fsck!" +msgstr "Lấy phiên bản e2fsck mới hơn !" + +#: e2fsck/unix.c:1010 +#, c-format +msgid "while checking ext3 journal for %s" +msgstr "trong khi kiểm tra nhật ký ext3 tìm %s" + +#: e2fsck/unix.c:1021 +#, c-format +msgid "Warning: skipping journal recovery because doing a read-only filesystem check.\n" +msgstr "" +"Cảnh báo : đang bỏ qua việc phục hồi nhật ký vì đang kiểm tra\n" +"hệ thống tập tin một cách chỉ đọc.\n" + +#: e2fsck/unix.c:1034 +#, c-format +msgid "unable to set superblock flags on %s\n" +msgstr "không thể đặt cờ siêu khối trên %s\n" + +#: e2fsck/unix.c:1040 +#, c-format +msgid "while recovering ext3 journal of %s" +msgstr "trong khi phục hồi nhật ký ext3 của %s" + +#: e2fsck/unix.c:1069 +msgid "Warning: compression support is experimental.\n" +msgstr "Cảnh báo : cách hỗ trợ khả năng nén là thực nghiệm.\n" + +#: e2fsck/unix.c:1074 +#, c-format +msgid "" +"E2fsck not compiled with HTREE support,\n" +"\tbut filesystem %s has HTREE directories.\n" +msgstr "" +"E2fsck không được biên dịch để hỗ trợ HCÂY,\n" +"nhưng hệ thống tập tin %s có thư mục HCÂY.\n" + +#: e2fsck/unix.c:1118 +#, c-format +msgid "%s: Filesystem byte order already normalized.\n" +msgstr "%s: thứ tự bytê trong hệ thống tập tin đã được tiêu chuẩn hoá.\n" + +#: e2fsck/unix.c:1138 +msgid "while reading bad blocks inode" +msgstr "trong khi đọc nút inode khối hỏng" + +#: e2fsck/unix.c:1140 +#, c-format +msgid "This doesn't bode well, but we'll try to go on...\n" +msgstr "Trường hợp này không phải tốt, nhưng sẽ cố gắng tiếp tục...\n" + +#: e2fsck/unix.c:1147 +#, c-format +msgid "Restarting e2fsck from the beginning...\n" +msgstr "Đang khởi chạy lại hoàn toàn e2fsck...\n" + +#: e2fsck/unix.c:1151 +msgid "while resetting context" +msgstr "trong khi đặt lại ngữ cảnh" + +#: e2fsck/unix.c:1158 +#, c-format +msgid "%s: e2fsck canceled.\n" +msgstr "%s: e2fsck bị thôi.\n" + +#: e2fsck/unix.c:1163 +msgid "aborted" +msgstr "bị hủy bỏ" + +#: e2fsck/unix.c:1171 +#, c-format +msgid "" +"\n" +"%s: ***** FILE SYSTEM WAS MODIFIED *****\n" +msgstr "" +"\n" +"%s: ••••• HỆ THỐNG TẬP TIN BỊ SỬA ĐỔI •••••\n" + +#: e2fsck/unix.c:1174 +#, c-format +msgid "%s: ***** REBOOT LINUX *****\n" +msgstr "%s: ••••• HÃY KHỞI ĐỘNG LẠI LINUX •••••\n" + +#: e2fsck/unix.c:1182 +#, c-format +msgid "" +"\n" +"%s: ********** WARNING: Filesystem still has errors **********\n" +"\n" +msgstr "" +"\n" +"%s: •••••••••• CẢNH BÁO : hệ thống tập tin vẫn còn có lỗi ••••••••••\n" +"\n" + +#: e2fsck/util.c:131 misc/util.c:68 +msgid "yY" +msgstr "cC" + +#: e2fsck/util.c:132 +msgid "nN" +msgstr "kK" + +#: e2fsck/util.c:146 +msgid "" +msgstr "" + +#: e2fsck/util.c:148 +msgid "" +msgstr "" + +#: e2fsck/util.c:150 +msgid " (y/n)" +msgstr " (c/k)" + +#: e2fsck/util.c:165 +msgid "cancelled!\n" +msgstr "bị thôi !\n" + +#: e2fsck/util.c:180 +msgid "yes\n" +msgstr "có\n" + +#: e2fsck/util.c:182 +msgid "no\n" +msgstr "không\n" + +#: e2fsck/util.c:192 +#, c-format +msgid "" +"%s? no\n" +"\n" +msgstr "" +"%s? không\n" +"\n" + +#: e2fsck/util.c:196 +#, c-format +msgid "" +"%s? yes\n" +"\n" +msgstr "" +"%s? có\n" +"\n" + +#: e2fsck/util.c:200 +msgid "yes" +msgstr "có" + +#: e2fsck/util.c:200 +msgid "no" +msgstr "không" + +#: e2fsck/util.c:213 +#, c-format +msgid "e2fsck_read_bitmaps: illegal bitmap block(s) for %s" +msgstr "e2fsck_read_bitmaps: khối sơ đồ bit cấm cho %s" + +#: e2fsck/util.c:218 +msgid "reading inode and block bitmaps" +msgstr "đang đọc sơ đồ bit cả nút inode lẫn khối" + +#: e2fsck/util.c:223 +#, c-format +msgid "while retrying to read bitmaps for %s" +msgstr "trong khi cố gắng đọc sơ đồ bit cho %s" + +#: e2fsck/util.c:235 +msgid "writing block bitmaps" +msgstr "đang ghi sơ đồ bit khối" + +#: e2fsck/util.c:240 +#, c-format +msgid "while retrying to write block bitmaps for %s" +msgstr "trong khi thử lại ghi sơ đồ bit khối cho %s" + +#: e2fsck/util.c:247 +msgid "writing inode bitmaps" +msgstr "đang ghi sơ đồ bit nút inode" + +#: e2fsck/util.c:252 +#, c-format +msgid "while retrying to write inode bitmaps for %s" +msgstr "trong khi thử lại ghi sơ đồ bit nút inode cho %s" + +#: e2fsck/util.c:265 +#, 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: SỰ MÂU THUẪN BẤT NGỜ : HÃY TỰ CHẠY fsck.\n" +"\t(tức là không có tùy chọn « -a » hay « -p »).\n" + +#: e2fsck/util.c:330 +#, c-format +msgid "Memory used: %dk/%dk (%dk/%dk), " +msgstr "Bộ nhớ đã chiếm: %dk/%dk (%dk/%dk), " + +#: e2fsck/util.c:334 +#, c-format +msgid "Memory used: %d, " +msgstr "Bộ nhớ đã chiếm: %d, " + +#: e2fsck/util.c:340 +#, c-format +msgid "time: %5.2f/%5.2f/%5.2f\n" +msgstr "thời gian: %5.2f/%5.2f/%5.2f\n" + +#: e2fsck/util.c:345 +#, c-format +msgid "elapsed time: %6.3f\n" +msgstr "thời gian đã qua: %6.3f\n" + +#: e2fsck/util.c:359 +#, c-format +msgid "while reading inode %ld in %s" +msgstr "trong khi đọc nút inode %ld trong %s" + +#: e2fsck/util.c:373 e2fsck/util.c:386 +#, c-format +msgid "while writing inode %ld in %s" +msgstr "trong khi ghi nút inode %ld trong %s" + +#: misc/badblocks.c:60 +msgid "done \n" +msgstr "đã xong \n" + +#: misc/badblocks.c:78 +#, c-format +msgid "" +"Usage: %s [-b block_size] [-i input_file] [-o output_file] [-svwnf]\n" +" [-c blocks_at_once] [-p num_passes] [-t test_pattern [-t test_pattern [...]]]\n" +" device [last_block [start_block]]\n" +msgstr "" +"Cách sử dụng: %s [-b cỡ_khối] [-i tập_tin_nhập] [-o tập_tin_xuất] [-svwnf]\n" +" [-c các_khối_cùng_lúc] [-p số_lần_qua] [-t mẫu_thử [-t mẫu_thử [...]]]\n" +" thiết_bị [khối_cuối [khối_đầu]]\n" + +#: misc/badblocks.c:225 +msgid "Testing with random pattern: " +msgstr "Đang thử ra bằng mẫu ngẫu nhiên: " + +#: misc/badblocks.c:243 +msgid "Testing with pattern 0x" +msgstr "Đang thử ra bằng mẫu 0x" + +#: misc/badblocks.c:268 misc/badblocks.c:297 +msgid "during seek" +msgstr "trong khi tìm nơi" + +#: misc/badblocks.c:275 +#, c-format +msgid "Weird value (%ld) in do_read\n" +msgstr "Giá trị lạ (%ld) trong việc đọc « do_read »\n" + +#: misc/badblocks.c:317 +msgid "during ext2fs_sync_device" +msgstr "trong khi đồng bộ hoá thiết bị « ext2fs_sync_device »" + +#: misc/badblocks.c:333 misc/badblocks.c:571 +msgid "while beginning bad block list iteration" +msgstr "trong khi bắt đầu lặp lại danh sách các khối hỏng" + +#: misc/badblocks.c:347 misc/badblocks.c:437 misc/badblocks.c:581 +msgid "while allocating buffers" +msgstr "trong khi cấp phát bộ đệm" + +#: misc/badblocks.c:351 +#, c-format +msgid "Checking blocks %lu to %lu\n" +msgstr "Đang kiểm tra khối trong phạm vị %lu đến %lu\n" + +#: misc/badblocks.c:355 +msgid "Checking for bad blocks in read-only mode\n" +msgstr "Đang kiểm tra tìm khối hỏng trong chế độ chỉ đọc\n" + +#: misc/badblocks.c:364 +msgid "Checking for bad blocks (read-only test): " +msgstr "Đang kiểm tra tìm khối hỏng (thử ra chỉ đọc): " + +#: misc/badblocks.c:444 +msgid "Checking for bad blocks in read-write mode\n" +msgstr "Đang kiểm tra tìm khối hỏng trong chế độ đọc-ghi\n" + +#: misc/badblocks.c:446 misc/badblocks.c:594 +#, c-format +msgid "From block %lu to %lu\n" +msgstr "Phạm vị khối %lu đến %lu\n" + +#: misc/badblocks.c:497 +msgid "Reading and comparing: " +msgstr "Đang đọc và so sánh: " + +#: misc/badblocks.c:593 +msgid "Checking for bad blocks in non-destructive read-write mode\n" +msgstr "Đang kiểm tra tìm khối hỏng trong chế độ đọc-ghi không hủy\n" + +#: misc/badblocks.c:597 +msgid "Checking for bad blocks (non-destructive read-write test)\n" +msgstr "Đang kiểm tra tìm khối hỏng (thử ra đọc-ghi không hủy)\n" + +#: misc/badblocks.c:604 +msgid "" +"\n" +"Interrupt caught, cleaning up\n" +msgstr "" +"\n" +"Mới bắt tín hiệu ngắt, đang làm sạch\n" + +#: misc/badblocks.c:674 +#, c-format +msgid "during test data write, block %lu" +msgstr "trong khi thử ra ghi dữ liệu, khối %lu" + +#: misc/badblocks.c:784 misc/util.c:156 +#, c-format +msgid "%s is mounted; " +msgstr "%s đã được gắn kết; " + +#: misc/badblocks.c:786 +msgid "badblocks forced anyway. Hope /etc/mtab is incorrect.\n" +msgstr "" +"tùy chọn khối hỏng (badblocks) vẫn bị ép buộc.\n" +"Mong là không đúng.\n" + +#: misc/badblocks.c:791 +msgid "it's not safe to run badblocks!\n" +msgstr "Việc chạy tùy chọn khối hỏng (badblocks) là không an toàn !\n" + +#: misc/badblocks.c:796 misc/util.c:167 +#, c-format +msgid "%s is apparently in use by the system; " +msgstr "Hình như %s đang bị hệ thống dùng; " + +#: misc/badblocks.c:799 +msgid "badblocks forced anyway.\n" +msgstr "tùy chọn khối hỏng (badblocks) vẫn bị ép buộc.\n" + +#: misc/badblocks.c:861 +#, c-format +msgid "bad block size - %s" +msgstr "kích cỡ khối hỏng — %s" + +#: misc/badblocks.c:918 +#, c-format +msgid "can't allocate memory for test_pattern - %s" +msgstr "không thể cấp phát bộ nhớ cho mẫu thử (test_pattern) — %s" + +#: misc/badblocks.c:932 +#, c-format +msgid "invalid test_pattern: %s\n" +msgstr "mẫu thử (test_pattern) không hợp lệ: %s\n" + +#: misc/badblocks.c:948 +msgid "Maximum of one test_pattern may be specified in read-only mode" +msgstr "Trong chế độ chỉ đọc, có thể xác định tối đa một mẫu thử (test_pattern) thôi" + +#: misc/badblocks.c:954 +msgid "Random test_pattern is not allowed in read-only mode" +msgstr "Không cho phẹp mẫu thử (test_pattern) ngẫu nhiên trong chế độ chỉ đọc" + +#: misc/badblocks.c:968 +msgid "" +"Couldn't determine device size; you must specify\n" +"the size manually\n" +msgstr "" +"Không thể quyết định kích cỡ của thiết bị;\n" +"bạn phải tự xác định kích cỡ đó.\n" + +#: misc/badblocks.c:974 +msgid "while trying to determine device size" +msgstr "trong khi cố gắng quyết định kích cỡ của thiết bị" + +#: misc/badblocks.c:980 misc/mke2fs.c:1155 +#, c-format +msgid "invalid blocks count - %s" +msgstr "số đếm khối không hợp lệ — %s" + +#: misc/badblocks.c:989 +#, c-format +msgid "invalid starting block - %s" +msgstr "khối đầu không hợp lệ — %s" + +#: misc/badblocks.c:995 +#, c-format +msgid "invalid blocks range: %lu-%lu" +msgstr "phạm vị khối không hợp lệ: %lu - %lu" + +#: misc/badblocks.c:1050 +msgid "while creating in-memory bad blocks list" +msgstr "trong khi tạo danh sách các khối hỏng trong bộ nhớ" + +#: misc/badblocks.c:1065 +msgid "while adding to in-memory bad block list" +msgstr "trong khi thêm vào danh sách các khối hỏng trong bộ nhớ" + +#: misc/badblocks.c:1089 +#, c-format +msgid "Pass completed, %u bad blocks found.\n" +msgstr "Mới qua xong, tìm thấy %u khối hỏng.\n" + +#: misc/chattr.c:87 +#, c-format +msgid "Usage: %s [-RV] [-+=AacDdijsSu] [-v version] files...\n" +msgstr "Cách sử dụng: %s [-RV] [-+=AacDdijsSu] [-v phiên_bản] tập_tin...\n" + +#: misc/chattr.c:148 +#, c-format +msgid "bad version - %s\n" +msgstr "phiên bản sai — %s\n" + +#: misc/chattr.c:192 misc/lsattr.c:113 +#, c-format +msgid "while trying to stat %s" +msgstr "trong khi cố gắng lấy các thông tin về %s" + +#: misc/chattr.c:209 misc/chattr.c:225 +#, c-format +msgid "Flags of %s set as " +msgstr "Các cờ của %s được đặt thành " + +#: misc/chattr.c:218 +#, c-format +msgid "while reading flags on %s" +msgstr "trong khi đọc các cờ trên %s" + +#: misc/chattr.c:233 +#, c-format +msgid "while setting flags on %s" +msgstr "trong khi đặt các cờ trên %s" + +#: misc/chattr.c:238 +#, c-format +msgid "Version of %s set as %lu\n" +msgstr "Phiên bản %s được đặt thành %lu\n" + +#: misc/chattr.c:241 +#, c-format +msgid "while setting version on %s" +msgstr "trong khi đặt phiên bản trên %s" + +#: misc/chattr.c:255 +msgid "Couldn't allocate path variable in chattr_dir_proc" +msgstr "Không thể cấp phát biến đường dẫn trong chattr_dir_proc" + +#: misc/chattr.c:291 +msgid "= is incompatible with - and +\n" +msgstr "= không tương thích với - và +\n" + +#: misc/chattr.c:299 +msgid "Must use '-v', =, - or +\n" +msgstr "Phải dùng '-v', =, - hay +\n" + +#: misc/dumpe2fs.c:53 +#, c-format +msgid "Usage: %s [-bfhixV] [-ob superblock] [-oB blocksize] device\n" +msgstr "Cách sử dụng: %s [-bfhixV] [-ob siêu_khối] [-oB cỡ_khối] thiết_bị\n" + +#: misc/dumpe2fs.c:131 +#, c-format +msgid "Group %lu: (Blocks " +msgstr "Nhóm %lu: (Khối " + +#: misc/dumpe2fs.c:136 +#, c-format +msgid " %s superblock at " +msgstr " %s siêu khối tại " + +#: misc/dumpe2fs.c:137 +msgid "Primary" +msgstr "Chính" + +#: misc/dumpe2fs.c:137 +msgid "Backup" +msgstr "Dự trữ" + +#: misc/dumpe2fs.c:141 +#, c-format +msgid ", Group descriptors at " +msgstr ", Mô tả nhóm tại " + +#: misc/dumpe2fs.c:145 +#, c-format +msgid "" +"\n" +" Reserved GDT blocks at " +msgstr "" +"\n" +" Các khối GDT đã dành riêng tại " + +#: misc/dumpe2fs.c:152 +#, c-format +msgid " Group descriptor at " +msgstr " Mô tả nhóm tại " + +#: misc/dumpe2fs.c:158 +msgid " Block bitmap at " +msgstr " Sơ đồ bit khối tại " + +#: misc/dumpe2fs.c:163 +msgid ", Inode bitmap at " +msgstr ", Sơ đồ nút inode tại " + +#: misc/dumpe2fs.c:168 +msgid "" +"\n" +" Inode table at " +msgstr "" +"\n" +" Bảng nút inode tại " + +#: misc/dumpe2fs.c:175 +#, c-format +msgid "" +"\n" +" %d free blocks, %d free inodes, %d directories\n" +msgstr "" +"\n" +" %d khối rảnh, %d inode rảnh, %d thư mục\n" + +#: misc/dumpe2fs.c:181 +msgid " Free blocks: " +msgstr " Khối rảnh: " + +#: misc/dumpe2fs.c:189 +msgid " Free inodes: " +msgstr " Inode rảnh: " + +#: misc/dumpe2fs.c:215 +msgid "while printing bad block list" +msgstr "trong khi in ra danh sách các khối hỏng" + +#: misc/dumpe2fs.c:221 +#, c-format +msgid "Bad blocks: %d" +msgstr "Khối hỏng: %d" + +#: misc/dumpe2fs.c:243 misc/tune2fs.c:232 +msgid "while reading journal inode" +msgstr "trong khi đọc nút inode nhật ký" + +#: misc/dumpe2fs.c:246 +msgid "Journal size: " +msgstr "Kích cỡ nhất ký: " + +#: misc/dumpe2fs.c:265 misc/tune2fs.c:154 +msgid "while reading journal superblock" +msgstr "trong khi đọc siêu khối nhật ký" + +#: misc/dumpe2fs.c:273 +msgid "Couldn't find journal superblock magic numbers" +msgstr "Không tìm thấy các số ma thuật siêu khối nhật ký" + +#: misc/dumpe2fs.c:277 +#, c-format +msgid "" +"\n" +"Journal block size: %u\n" +"Journal length: %u\n" +"Journal first block: %u\n" +"Journal sequence: 0x%08x\n" +"Journal start: %u\n" +"Journal number of users: %lu\n" +msgstr "" +"\n" +"Kích cỡ khối nhật ký: \t%u\n" +"Độ dài nhật ký: \t\t%u\n" +"Khối đầu nhật ký: \t\t%u\n" +"Dãy nhật ký: \t\t\t0x%08x\n" +"Đầu nhật ký: \t\t%u\n" +"Số người dùng nhật ký: \t%lu\n" + +#: misc/dumpe2fs.c:290 +#, c-format +msgid "Journal users: %s\n" +msgstr "Số người dùng nhật ký: %s\n" + +#: misc/dumpe2fs.c:345 misc/mke2fs.c:1099 +#, c-format +msgid "\tUsing %s\n" +msgstr "\tDùng %s\n" + +#: misc/dumpe2fs.c:371 misc/e2image.c:662 misc/tune2fs.c:779 resize/main.c:245 +#, c-format +msgid "Couldn't find valid filesystem superblock.\n" +msgstr "Không tìm thấy siêu khối hệ thống tập tin hợp lệ.\n" + +#: misc/dumpe2fs.c:382 +#, c-format +msgid "Note: This is a byte-swapped filesystem\n" +msgstr "Ghi chú : đây là hệ thống tập tin đã trao đổi byte\n" + +#: misc/dumpe2fs.c:401 +#, c-format +msgid "" +"\n" +"%s: %s: error reading bitmaps: %s\n" +msgstr "" +"\n" +"%s: %s: gặp lỗi khi đọc sơ đồ bit: %s\n" + +#: misc/e2image.c:50 +#, c-format +msgid "Usage: %s [-rsI] device image_file\n" +msgstr "Cách sử dụng: %s [-rsI] thiết_bị tập_tin_ảnh\n" + +#: misc/e2image.c:62 +msgid "Couldn't allocate header buffer\n" +msgstr "Không thể cấp phát bộ đệm phần đầu\n" + +#: misc/e2image.c:81 +#, c-format +msgid "short write (only %d bytes) for writing image header" +msgstr "ghi ngắn (chỉ %d byte) để ghi phần đầu ảnh" + +#: misc/e2image.c:100 +msgid "while writing superblock" +msgstr "trong khi ghi siêu khối" + +#: misc/e2image.c:108 +msgid "while writing inode table" +msgstr "trong khi ghi bảng nút inode" + +#: misc/e2image.c:115 +msgid "while writing block bitmap" +msgstr "trong khi ghi sơ đồ bit khối" + +#: misc/e2image.c:122 +msgid "while writing inode bitmap" +msgstr "trong khi ghi sơ đồ bit nút inode" + +#: misc/e2label.c:57 +#, c-format +msgid "e2label: cannot open %s\n" +msgstr "e2label: không thể mở %s\n" + +#: misc/e2label.c:62 +#, c-format +msgid "e2label: cannot seek to superblock\n" +msgstr "e2label: không thể tìm nơi tới siêu khối\n" + +#: misc/e2label.c:67 +#, c-format +msgid "e2label: error reading superblock\n" +msgstr "e2label: gặp lỗi khi đọc siêu khối\n" + +#: misc/e2label.c:71 +#, c-format +msgid "e2label: not an ext2 filesystem\n" +msgstr "e2label: không phải là hệ thống tập tin kiểu ext2\n" + +#: misc/e2label.c:96 misc/tune2fs.c:885 +#, c-format +msgid "Warning: label too long, truncating.\n" +msgstr "Cảnh báo : nhãn quá dài nên đang cắt ngắn.\n" + +#: misc/e2label.c:99 +#, c-format +msgid "e2label: cannot seek to superblock again\n" +msgstr "e2label: không thể tìm nơi lại tới siêu khối\n" + +#: misc/e2label.c:104 +#, c-format +msgid "e2label: error writing superblock\n" +msgstr "e2label: gặp lỗi khi ghi siêu khối\n" + +#: misc/e2label.c:116 misc/tune2fs.c:451 +#, c-format +msgid "Usage: e2label device [newlabel]\n" +msgstr "Cách sử dụng: e2label thiết_bị [nhãn_mới]\n" + +#: misc/fsck.c:346 +#, c-format +msgid "WARNING: couldn't open %s: %s\n" +msgstr "CẢNH BÁO : không thể mở %s: %s\n" + +#: misc/fsck.c:356 +#, c-format +msgid "WARNING: bad format on line %d of %s\n" +msgstr "CẢNH BÁO : gặp dạng thức sai trên dòng %d trên %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 "" +"CẢNH BÁO : của bạn không chứa trường\n" +"\tpassno fsck. Trình này sẽ làm quấy quá các việc, nhưng\n" +"\tbạn nên sửa chữa tập tin càng sớm càng có thể.\n" +"\n" + +#: misc/fsck.c:472 +#, c-format +msgid "fsck: %s: not found\n" +msgstr "fsck: %s: không tìm thấy\n" + +#: misc/fsck.c:585 +#, c-format +msgid "%s: wait: No more child process?!?\n" +msgstr "%s: đợi: không có tiến trình con nữa ?!?\n" + +#: misc/fsck.c:607 +#, c-format +msgid "Warning... %s for device %s exited with signal %d.\n" +msgstr "Cảnh báo... %s cho thiết bị %s đã thoát với tín hiệu %d.\n" + +#: misc/fsck.c:613 +#, c-format +msgid "%s %s: status is %x, should never happen.\n" +msgstr "%s %s: trạng thái là %x, không bao giờ nên xảy ra.\n" + +#: misc/fsck.c:649 +#, c-format +msgid "Finished with %s (exit status %d)\n" +msgstr "Đã xong với %s (trạng thái thoát %d)\n" + +#: misc/fsck.c:709 +#, c-format +msgid "%s: Error %d while executing fsck.%s for %s\n" +msgstr "%s: Gặp lỗi %d trong khi thực hiện fsck.%s cho %s\n" + +#: misc/fsck.c:730 +msgid "" +"Either all or none of the filesystem types passed to -t must be prefixed\n" +"with 'no' or '!'.\n" +msgstr "" +"Hoặc tất cả hoặc không có kiểu hệ thống tập tin được gởi qua\n" +"cho tùy chọn « -t » phải có tiền tố « no » hay « ! ».\n" + +#: misc/fsck.c:749 +msgid "Couldn't allocate memory for filesystem types\n" +msgstr "Không thể cấp phát bộ nhớ cho kiểu hế thống tập tin\n" + +#: misc/fsck.c:889 +#, c-format +msgid "fsck: cannot check %s: fsck.%s not found\n" +msgstr "fsck: không thể kiểm tra %s: fsck.%s không được tìm thấy\n" + +#: misc/fsck.c:945 +msgid "Checking all file systems.\n" +msgstr "Đang kiểm tra mọi hệ thống tập tin.\n" + +#: misc/fsck.c:1031 +#, c-format +msgid "--waiting-- (pass %d)\n" +msgstr "--waiting-- (lần qua %d)\n" + +#: misc/fsck.c:1051 +msgid "Usage: fsck [-ANPRTV] [ -C [ fd ] ] [-t fstype] [fs-options] [filesys ...]\n" +msgstr "" +"Cách sử dụng: fsck [-ANPRTV] [ -C [ fd ] ] [-t kiểu_FS]\n" +"[tùy_chọn_FS] [FS ...]\n" +"(FS : hệ thống tập tin)\n" + +#: misc/fsck.c:1093 +#, c-format +msgid "%s: too many devices\n" +msgstr "%s: quá nhiều thiết bị\n" + +#: misc/fsck.c:1126 misc/fsck.c:1212 +#, c-format +msgid "%s: too many arguments\n" +msgstr "%s: quá nhiều đối số\n" + +#: misc/lsattr.c:73 +#, c-format +msgid "Usage: %s [-RVadlv] [files...]\n" +msgstr "Cách sử dụng: %s [-RVadlv] [tập_tin...]\n" + +#: misc/lsattr.c:83 +#, c-format +msgid "While reading flags on %s" +msgstr "Trong khi đọc các cờ trên %s" + +#: misc/lsattr.c:90 +#, c-format +msgid "While reading version on %s" +msgstr "Trong khi đọc phiên bản trên %s" + +#: misc/mke2fs.c:96 +#, c-format +msgid "" +"Usage: %s [-c|-t|-l filename] [-b block-size] [-f fragment-size]\n" +"\t[-i bytes-per-inode] [-j] [-J journal-options] [-N number-of-inodes]\n" +"\t[-m reserved-blocks-percentage] [-o creator-os] [-g blocks-per-group]\n" +"\t[-L volume-label] [-M last-mounted-directory] [-O feature[,...]]\n" +"\t[-r fs-revision] [-R options] [-qvSV] device [blocks-count]\n" +msgstr "" +"Cách sử dụng: %s [-c|-t|-l tên_tập_tin] [-b cỡ_khối] [-f cỡ_đoạn]\n" +"\t[-i byte_mỗi_inode] [-j] [-J tùy_chọn_nhật_ký] [-N số_inode]\n" +"\t[-m số_phần_trăm_khối_dành_riêng] [-o HĐH_tạo] [-g khối_mỗi_nhóm]\n" +"\t[-L nhãn_khối_tin] [-M thư_mục_lắp_cuối] [-O tính_năng[,...]]\n" +"\t[-r bản_sửa_đổi_FS] [-R tùy_chọn] [-qvSV] thiết_bị [số_đếm_khối]\n" +"(FS : hệ thống tập tin)\n" + +#: misc/mke2fs.c:195 +#, c-format +msgid "Running command: %s\n" +msgstr "Đang chạy lệnh: %s\n" + +#: misc/mke2fs.c:199 +#, c-format +msgid "while trying to run '%s'" +msgstr "trong khi cố gắng chạy « %s »" + +#: misc/mke2fs.c:206 +msgid "while processing list of bad blocks from program" +msgstr "trong khi xử lý danh sách các khối hỏng từ chương trình" + +#: misc/mke2fs.c:233 +#, c-format +msgid "Block %d in primary superblock/group descriptor area bad.\n" +msgstr "Khối %d trong vùng mô tả nhóm/siêu khối chính bị hỏng.\n" + +#: misc/mke2fs.c:235 +#, c-format +msgid "Blocks %u through %d must be good in order to build a filesystem.\n" +msgstr "" +"Các khối trong phạm vị %u đến %d phải là tốt\n" +"để xây dựng được hệ thống tập tin.\n" + +#: misc/mke2fs.c:238 +msgid "Aborting....\n" +msgstr "Hủy bỏ...\n" + +#: misc/mke2fs.c:258 +#, c-format +msgid "" +"Warning: the backup superblock/group descriptors at block %u contain\n" +"\tbad blocks.\n" +"\n" +msgstr "" +"Cảnh báo : các mô tả nhóm/siêu khối dự trữ tại khối %u chứa khối hỏng.\n" +"\n" + +#: misc/mke2fs.c:276 +msgid "while marking bad blocks as used" +msgstr "trong khi nhãn các khối hỏng như là đã được dùng" + +#: misc/mke2fs.c:334 +msgid "done \n" +msgstr "đã xong \n" + +#: misc/mke2fs.c:369 +msgid "while allocating zeroizing buffer" +msgstr "trong khi cấp phát bộ đếm làm số không" + +#: misc/mke2fs.c:410 +msgid "Writing inode tables: " +msgstr "Đang ghi các bảng nút inode: " + +#: misc/mke2fs.c:421 +#, c-format +msgid "" +"\n" +"Could not write %d blocks in inode table starting at %u: %s\n" +msgstr "" +"\n" +"Không thể ghi %d khối trong bảng nút inode, bắt đầu tại %u: %s\n" + +#: misc/mke2fs.c:444 +msgid "while creating root dir" +msgstr "trong khi tạo thư mục gốc" + +#: misc/mke2fs.c:451 +msgid "while reading root inode" +msgstr "trong khi đọc nút inode gốc" + +#: misc/mke2fs.c:460 +msgid "while setting root inode ownership" +msgstr "trong khi đặt quyền sở hữu nút inode gốc" + +#: misc/mke2fs.c:478 +msgid "while creating /lost+found" +msgstr "trong khi tạo /mất+tìm" + +#: misc/mke2fs.c:485 +msgid "while looking up /lost+found" +msgstr "trong khi trao tìm /mất+tìm" + +#: misc/mke2fs.c:495 +msgid "while expanding /lost+found" +msgstr "trong khi bung /mất+tìm" + +#: misc/mke2fs.c:511 +msgid "while setting bad block inode" +msgstr "trong khi đặt nút inode khối hỏng" + +#: misc/mke2fs.c:543 +#, c-format +msgid "Out of memory erasing sectors %d-%d\n" +msgstr "Hết bộ nhớ nên đang xoá bỏ các rãnh ghi trong phạm vị %d đến %d\n" + +#: misc/mke2fs.c:553 +#, c-format +msgid "Warning: could not read block 0: %s\n" +msgstr "Cảnh báo : không thể đọc khối 0: %s\n" + +#: misc/mke2fs.c:569 +#, c-format +msgid "Warning: could not erase sector %d: %s\n" +msgstr "Cảnh báo : không thể xoá bỏ rãnh ghi %d: %s\n" + +#: misc/mke2fs.c:585 +msgid "while initializing journal superblock" +msgstr "trong khi sở khởi siêu khối nhật ký" + +#: misc/mke2fs.c:591 +msgid "Zeroing journal device: " +msgstr "Đang làm số không thiết bị nhật ký: " + +#: misc/mke2fs.c:598 +#, c-format +msgid "while zeroing journal device (block %u, count %d)" +msgstr "trong khi làm số không thiết bị nhật ký (khối %u, số đếm %d)" + +#: misc/mke2fs.c:609 +msgid "while writing journal superblock" +msgstr "trong khi ghi siêu khối nhật ký" + +#: misc/mke2fs.c:625 +#, c-format +msgid "" +"warning: %u blocks unused.\n" +"\n" +msgstr "" +"cảnh báo : %u khối chưa dùng.\n" +"\n" + +#: misc/mke2fs.c:630 +#, c-format +msgid "Filesystem label=%s\n" +msgstr "Nhãn hệ thống tập tin=%s\n" + +#: misc/mke2fs.c:631 +msgid "OS type: " +msgstr "Kiểu HĐH: " + +#: misc/mke2fs.c:636 +#, c-format +msgid "Block size=%u (log=%u)\n" +msgstr "Cỡ khối=%u (bản ghi=%u)\n" + +#: misc/mke2fs.c:638 +#, c-format +msgid "Fragment size=%u (log=%u)\n" +msgstr "Cỡ đoạn=%u (bản ghi=%u)\n" + +#: misc/mke2fs.c:640 +#, c-format +msgid "%u inodes, %u blocks\n" +msgstr "%u inode, %u khối\n" + +#: misc/mke2fs.c:642 +#, c-format +msgid "%u blocks (%2.2f%%) reserved for the super user\n" +msgstr "%u khối (%2.2f%%) được dành riêng cho siêu người dùng\n" + +#: misc/mke2fs.c:645 +#, c-format +msgid "First data block=%u\n" +msgstr "Khối dữ liệu đầu=%u\n" + +#: misc/mke2fs.c:647 +#, c-format +msgid "Maximum filesystem blocks=%lu\n" +msgstr "Khối hệ thống tập tin tối đa=%lu\n" + +#: misc/mke2fs.c:652 +#, c-format +msgid "%u block groups\n" +msgstr "%u nhóm khối\n" + +#: misc/mke2fs.c:654 +#, c-format +msgid "%u block group\n" +msgstr "%u nhóm khối\n" + +#: misc/mke2fs.c:655 +#, c-format +msgid "%u blocks per group, %u fragments per group\n" +msgstr "%u khối trên mỗi nhóm, %u đoạn trên mỗi nhóm\n" + +#: misc/mke2fs.c:657 +#, c-format +msgid "%u inodes per group\n" +msgstr "%u nút inode trên mỗi nhóm\n" + +#: misc/mke2fs.c:664 +#, c-format +msgid "Superblock backups stored on blocks: " +msgstr "Siêu khối dự trữ được cất giữ trên khối: " + +#: misc/mke2fs.c:720 +#, c-format +msgid "Couldn't allocate memory to parse options!\n" +msgstr "Không thể cấp phát bộ nhớ để phân tách tùy chọn !\n" + +#: misc/mke2fs.c:744 +#, c-format +msgid "Invalid stride parameter: %s\n" +msgstr "Tham số stride không hợp lệ: %s\n" + +#: misc/mke2fs.c:765 +#, c-format +msgid "Invalid resize parameter: %s\n" +msgstr "Tham số thay đổi kích cỡ không hợp lệ: %s\n" + +#: misc/mke2fs.c:772 +#, c-format +msgid "The resize maximum must be greater than the filesystem size.\n" +msgstr "Số thay đổi kích cỡ tối đa phải là lớn hơn kích cỡ của hệ thống tập tin.\n" + +#: misc/mke2fs.c:803 +#, c-format +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" +"\tstride=\n" +"\tresize=\n" +"\n" +msgstr "" +"\n" +"Tùy chọn sai đã được xác định.\n" +"\n" +"Các tùy chọn đã mở rộng có định giới bằng dấu phẩy, và có thể chấp nhận\n" +"đối số mà được ngụ ý bằng dấu bằng « = ».\n" +"\n" +"Tùy chọn đã mở rộng hợp lệ:\n" +"\tstride=<độ dài stride theo khối>\n" +"\tresize=\n" +"\n" + +#: misc/mke2fs.c:828 +#, c-format +msgid "" +"Syntax error in mke2fs config file (%s, line #%d)\n" +"\t%s\n" +msgstr "" +"Gặp lỗi cú pháp trong tập tin cấu hình mke2fs (%s, dòng số %d)\n" +"\t%s\n" + +#: misc/mke2fs.c:841 misc/tune2fs.c:303 +#, c-format +msgid "Invalid filesystem option set: %s\n" +msgstr "Có đặt tùy chọn hệ thống tập tin không hợp lệ: %s\n" + +#: misc/mke2fs.c:938 +#, c-format +msgid "invalid block size - %s" +msgstr "Cỡ khối không hợp lệ — %s" + +#: misc/mke2fs.c:942 +#, c-format +msgid "Warning: blocksize %d not usable on most systems.\n" +msgstr "Cảnh báo : kích cỡ khối %d vô ích trên phần lớn hệ thống.\n" + +#: misc/mke2fs.c:959 +#, c-format +msgid "invalid fragment size - %s" +msgstr "Kích cỡ đoạn không hợp lệ — %s" + +#: misc/mke2fs.c:965 +#, c-format +msgid "Warning: fragments not supported. Ignoring -f option\n" +msgstr "Cảnh báo : không hỗ trợ đoạn nên bỏ qua tùy chọn « -f »\n" + +#: misc/mke2fs.c:972 +msgid "Illegal number for blocks per group" +msgstr "Số cấm cho số khối trên mỗi nhóm" + +#: misc/mke2fs.c:977 +msgid "blocks per group must be multiple of 8" +msgstr "số khối trên mỗi nhóm phải là bội số cho 8" + +#: misc/mke2fs.c:987 +#, c-format +msgid "invalid inode ratio %s (min %d/max %d)" +msgstr "Tỷ lệ nút inode không hợp lệ %s (thiểu %d/đa %d)" + +#: misc/mke2fs.c:1004 +msgid "in malloc for bad_blocks_filename" +msgstr "" +"trong hàm cấp phát bộ nhớ malloc cho tên tập tin khối hỏng\n" +"« bad_blocks_filename »" + +#: misc/mke2fs.c:1013 +#, c-format +msgid "invalid reserved blocks percent - %s" +msgstr "phần trăm khối được dành riêng không hợp lệ — %s" + +#: misc/mke2fs.c:1031 +#, c-format +msgid "bad revision level - %s" +msgstr "cấp bản sửa đổi sai — %s" + +#: misc/mke2fs.c:1044 +#, c-format +msgid "invalid inode size - %s" +msgstr "kích cỡ nút inode không hợp lệ — %s" + +#: misc/mke2fs.c:1065 +#, c-format +msgid "bad num inodes - %s" +msgstr "số (num) nút inode sai — %s" + +#: misc/mke2fs.c:1123 misc/mke2fs.c:1588 +#, c-format +msgid "while trying to open journal device %s\n" +msgstr "trong khi cố gắng mở thiết bị nhật ký %s\n" + +#: misc/mke2fs.c:1129 +#, c-format +msgid "Journal dev blocksize (%d) smaller than minimum blocksize %d\n" +msgstr "Kích cỡ của thiết bị nhật ký (%d) có nhỏ hơn kích cỡ tối thiểu là %d\n" + +#: misc/mke2fs.c:1143 +#, c-format +msgid "%d-byte blocks too big for system (max %d)" +msgstr "Khối %d-byte quá lớn đối với hệ thống (tối đa %d)" + +#: misc/mke2fs.c:1147 +#, c-format +msgid "Warning: %d-byte blocks too big for system (max %d), forced to continue\n" +msgstr "" +"Cảnh báo : khối %d-byte quá lớn đối với hệ thống (tối đa %d)\n" +"nên bị buộc tiếp tục\n" + +#: misc/mke2fs.c:1165 +msgid "filesystem" +msgstr "hệ thống tập tin" + +#: misc/mke2fs.c:1188 resize/main.c:279 +msgid "while trying to determine filesystem size" +msgstr "trong khi cố gắng quyết định kích cỡ của hệ thống tập tin" + +#: misc/mke2fs.c:1194 +msgid "" +"Couldn't determine device size; you must specify\n" +"the size of the filesystem\n" +msgstr "" +"Không thể quyết định kích cỡ của thiết bị;\n" +"bạn phải xác định kích cỡ của hệ thống tập tin\n" + +#: misc/mke2fs.c:1201 +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 "" +"Kích cỡ của thiết bị được thông báo là số không.\n" +"\tPhân vùng không hợp lệ được xác định,\n" +"\thoặc bảng phân vùng đã không được đọc lại\n" +"\tsau khi chạy tiến trình fdisk,\n" +"\tdo phân vùng đã sửa đổi đang bận và đang được dùng.\n" +"Có lẽ bạn cần phải khởi động lại máy để đọc lại bảng phân vùng.\n" + +#: misc/mke2fs.c:1219 +msgid "Filesystem larger than apparent device size." +msgstr "Hệ thống tập tin lớn hơn kích cỡ thiết bị biểu kiến." + +#: misc/mke2fs.c:1238 +#, c-format +msgid "Filesystem features not supported with revision 0 filesystems\n" +msgstr "" +"Tính năng hệ thống tập tin không được hỗ trợ với hệ thống tập tin\n" +"kiểu bản sửa đổi 0\n" + +#: misc/mke2fs.c:1297 +msgid "while trying to determine hardware sector size" +msgstr "trong khi cố gắng quyết định kích cỡ của rãnh ghi phần cứng" + +#: misc/mke2fs.c:1349 +msgid "reserved online resize blocks not supported on non-sparse filesystem" +msgstr "" +"khối thay đổi kích cỡ trực tuyến được dành riêng không được hỗ trợ\n" +"trên hệ thống tập tin không phải thưa thớt" + +#: misc/mke2fs.c:1358 +msgid "blocks per group count out of range" +msgstr "số khối trên mỗi nhóm ở ngoài phạm vi" + +#: misc/mke2fs.c:1365 +msgid "" +"Filesystem too large. No more than 2**31-1 blocks\n" +"\t (8TB using a blocksize of 4k) are currently supported." +msgstr "" +"Hệ thống tập tin quá lớn. Hiện thời hỗ trợ kích cỡ\n" +"\ttối đa 2**31-1 (8 TB theo kích cỡ khối 4k)." + +#: misc/mke2fs.c:1372 +#, c-format +msgid "" +"\n" +"Warning: some 2.4 kernels do not support blocksizes greater than 4096\n" +"\tusing ext3. Use -b 4096 if this is an issue for you.\n" +"\n" +msgstr "" +"\n" +"Cảnh báo : một số hạt nhân phiên bản 2.4 không hỗ trợ kích cỡ khối\n" +"\tlớn hơn 4096, dùng ext3. Hãy dùng tùy chọn « -b 4096 »\n" +"\tnếu bặn gặp khó khăn này.\n" +"\n" + +#: misc/mke2fs.c:1381 +#, c-format +msgid "invalid inode size %d (min %d/max %d)" +msgstr "kích cỡ nút inode không hợp lệ %d (thiểu %d/đa %d)" + +#: misc/mke2fs.c:1387 +#, c-format +msgid "Warning: %d-byte inodes not usable on most systems\n" +msgstr "Cảnh báo : nút inode kiểu %d-byte là vô ích trên phần lớn hệ thống\n" + +# Item in the main menu to select this package +#: misc/mke2fs.c:1438 +msgid "while setting up superblock" +msgstr "trong khi thiết lập siêu khối" + +#: misc/mke2fs.c:1472 +#, c-format +msgid "unknown os - %s" +msgstr "không biết hệ điều hành — %s" + +#: misc/mke2fs.c:1526 +msgid "while trying to allocate filesystem tables" +msgstr "trong khi cố gắng cấp phát các bảng hệ thống tập tin" + +#: misc/mke2fs.c:1557 +#, c-format +msgid "while zeroing block %u at end of filesystem" +msgstr "trong khi làm số không khối %u tại kết thúc của hệ thống tập tin" + +#: misc/mke2fs.c:1570 +msgid "while reserving blocks for online resize" +msgstr "trong khi dành riêng các khối để thay đổi kích cỡ trực tuyến" + +#: misc/mke2fs.c:1581 misc/tune2fs.c:388 +msgid "journal" +msgstr "nhật ký" + +#: misc/mke2fs.c:1593 +#, c-format +msgid "Adding journal to device %s: " +msgstr "Đang thêm nhật ký vào thiết bị %s: " + +#: misc/mke2fs.c:1600 +#, c-format +msgid "" +"\n" +"\twhile trying to add journal to device %s" +msgstr "" +"\n" +"trong khi cố gắng thêm nhật ký vào thiết bị %s" + +#: misc/mke2fs.c:1605 misc/mke2fs.c:1631 misc/tune2fs.c:416 misc/tune2fs.c:430 +#, c-format +msgid "done\n" +msgstr "đã xong\n" + +#: misc/mke2fs.c:1619 +#, c-format +msgid "Creating journal (%d blocks): " +msgstr "Đang tạo nhật ký (%d khối): " + +#: misc/mke2fs.c:1627 +msgid "" +"\n" +"\twhile trying to create journal" +msgstr "" +"\n" +"trong khi cố gắng tạo nhật ký" + +#: misc/mke2fs.c:1636 +#, c-format +msgid "Writing superblocks and filesystem accounting information: " +msgstr "Đang ghi siêu khối và thông tin kế toán hệ thống tập tin: " + +#: misc/mke2fs.c:1641 +#, c-format +msgid "" +"\n" +"Warning, had trouble writing out superblocks." +msgstr "" +"\n" +"Cảnh báo : gặp khó khăn trong việc ghi ra các siêu khối." + +#: misc/mke2fs.c:1644 +#, c-format +msgid "" +"done\n" +"\n" +msgstr "" +"đã xong\n" +"\n" + +#: misc/mklost+found.c:49 +#, c-format +msgid "Usage: mklost+found\n" +msgstr "Cách sử dụng: mklost+found\n" + +#: misc/tune2fs.c:78 +msgid "Please run e2fsck on the filesystem.\n" +msgstr "Hãy chạy tiến trình e2fsck trên hệ thống tập tin đó.\n" + +#: misc/tune2fs.c:85 +#, c-format +msgid "" +"Usage: %s [-c max_mounts_count] [-e errors_behavior] [-g group]\n" +"\t[-i interval[d|m|w]] [-j] [-J journal_options]\n" +"\t[-l] [-s sparse_flag] [-m reserved_blocks_percent]\n" +"\t[-o [^]mount_options[,...]] [-r reserved_blocks_count]\n" +"\t[-u user] [-C mount_count] [-L volume_label] [-M last_mounted_dir]\n" +"\t[-O [^]feature[,...]] [-T last_check_time] [-U UUID] device\n" +msgstr "" +"Cách sử dụng: %s [-c tổng_lắp_tối_đa] [-e ứng_xử_lỗi] [-g nhóm]\n" +"\t[-i khoảng[d|m|w]] [-j] [-J tùy_chọn_nhật_ký]\n" +"\t[-l] [-s cờ_thưa_thớt] [-m phần_trăm_khối_dành_riêng]\n" +"\t[-o [^]tùy_chọn_lắp[,...]] [-r tổng_khối_dành_riêng]\n" +"\t[-u người_dùng] [-C tổng_lắp] [-L nhãn_khối_tin] [-M thư_mục_lắp_cuối_cùng]\n" +"\t[-O [^]tính_năng[,...]] [-T giờ_kiểm_tra_cuối_cùng] [-U UUID] thiết_bị\n" + +#: misc/tune2fs.c:142 +msgid "while trying to open external journal" +msgstr "trong khi cố gắng mở nhật ký bên ngoài" + +#: misc/tune2fs.c:146 +#, c-format +msgid "%s is not a journal device.\n" +msgstr "%s không phải là thiết bị nhật ký.\n" + +#: misc/tune2fs.c:161 +msgid "Journal superblock not found!\n" +msgstr "Không tìm thấy siêu khối nhật ký !\n" + +#: misc/tune2fs.c:173 +msgid "Filesystem's UUID not found on journal device.\n" +msgstr "Không tìm thấy UUID của hệ thống tập tin trên thiết bị nhật ký.\n" + +#: misc/tune2fs.c:194 +msgid "Journal NOT removed\n" +msgstr "CHƯA gỡ bỏ nhật ký\n" + +#: misc/tune2fs.c:200 +msgid "Journal removed\n" +msgstr "Nhật ký đã được gỡ bỏ\n" + +#: misc/tune2fs.c:239 +msgid "while reading bitmaps" +msgstr "trong khi đọc các sơ đồ bit" + +#: misc/tune2fs.c:246 +msgid "while clearing journal inode" +msgstr "trong khi xoá nút inode nhật ký" + +#: misc/tune2fs.c:257 +msgid "while writing journal inode" +msgstr "trong khi ghi nút inode nhật ký" + +#: misc/tune2fs.c:272 +#, c-format +msgid "Invalid mount option set: %s\n" +msgstr "Tùy chọn lắp không hợp lệ đã được đặt: %s\n" + +#: misc/tune2fs.c:318 +msgid "" +"The has_journal flag may only be cleared when the filesystem is\n" +"unmounted or mounted read-only.\n" +msgstr "" +"Cờ có nhật ký (has_journal) có thể được xoá\n" +"chỉ khi hệ thống tập tin đã được tháo gắn kết\n" +"hay đã được gắn kết một cách chỉ đọc.\n" + +#: misc/tune2fs.c:326 +msgid "" +"The needs_recovery flag is set. Please run e2fsck before clearing\n" +"the has_journal flag.\n" +msgstr "" +"Cờ cần thiết phục hồi (needs_recovery) đã được đặt.\n" +"Hãy chạy tiến trình e2fsck trước khi xoá cờ có nhật ký (has_journal).\n" + +#: misc/tune2fs.c:383 +msgid "The filesystem already has a journal.\n" +msgstr "Hệ thống tập tin đã có nhật ký.\n" + +#: misc/tune2fs.c:400 +#, c-format +msgid "" +"\n" +"\twhile trying to open journal on %s\n" +msgstr "" +"\n" +"trong khi cố gắng mở nhật ký trên %s\n" + +#: misc/tune2fs.c:404 +#, c-format +msgid "Creating journal on device %s: " +msgstr "Đang tạo nhật ký trên thiết bị %s: " + +#: misc/tune2fs.c:412 +#, c-format +msgid "while adding filesystem to journal on %s" +msgstr "trong khi thêm hệ thống tập tin vào nhật ký trên %s" + +#: misc/tune2fs.c:418 +msgid "Creating journal inode: " +msgstr "Đang tạo nút inode nhật ký: " + +#: misc/tune2fs.c:427 +msgid "" +"\n" +"\twhile trying to create journal file" +msgstr "" +"\n" +"trong khi cố gắng tạo tập tin nhật ký" + +#: misc/tune2fs.c:493 +#, c-format +msgid "Couldn't parse date/time specifier: %s" +msgstr "Không thể phân tách toán tử ngày/giờ : %s" + +#: misc/tune2fs.c:515 misc/tune2fs.c:528 +#, c-format +msgid "bad mounts count - %s" +msgstr "tổng lắp sai — %s" + +#: misc/tune2fs.c:544 +#, c-format +msgid "bad error behavior - %s" +msgstr "ứng xử lỗi sai — %s" + +#: misc/tune2fs.c:567 +#, c-format +msgid "bad gid/group name - %s" +msgstr "GID/tên nhóom sai — %s" + +#: misc/tune2fs.c:600 +#, c-format +msgid "bad interval - %s" +msgstr "khoảng sai - %s" + +#: misc/tune2fs.c:628 +#, c-format +msgid "bad reserved block ratio - %s" +msgstr "tỷ lệ khối dành riêng sai — %s" + +#: misc/tune2fs.c:643 +msgid "-o may only be specified once" +msgstr "có thể xác định tùy chọn « -o » chỉ một lần thôi" + +#: misc/tune2fs.c:653 +msgid "-O may only be specified once" +msgstr "có thể xác định tùy chọn « -O » chỉ một lần thôi" + +#: misc/tune2fs.c:663 +#, c-format +msgid "bad reserved blocks count - %s" +msgstr "tổng khối dành riêng sai — %s" + +#: misc/tune2fs.c:692 +#, c-format +msgid "bad uid/user name - %s" +msgstr "UID/tên người dùng sai — %s" + +#: misc/tune2fs.c:802 +#, c-format +msgid "Setting maximal mount count to %d\n" +msgstr "Đang đặt tổng lắp tối đa thành %d\n" + +#: misc/tune2fs.c:808 +#, c-format +msgid "Setting current mount count to %d\n" +msgstr "Đang đặt tổng lắp hiện thời thành %d\n" + +#: misc/tune2fs.c:813 +#, c-format +msgid "Setting error behavior to %d\n" +msgstr "Đang đặt ứng xử lỗi thành %d\n" + +#: misc/tune2fs.c:818 +#, c-format +msgid "Setting reserved blocks gid to %lu\n" +msgstr "Đang đặt GID khối dành riêng thành %lu\n" + +#: misc/tune2fs.c:823 +#, c-format +msgid "Setting interval between checks to %lu seconds\n" +msgstr "Đang đặt khoảng giữa hai lần kiểm tra thành %lu giây\n" + +#: misc/tune2fs.c:828 +#, c-format +msgid "Setting reserved blocks percentage to %g%% (%u blocks)\n" +msgstr "Đang đặt phần trăm khối dành riêng thành %g%% (%u khối)\n" + +#: misc/tune2fs.c:834 +#, c-format +msgid "reserved blocks count is too big (%lu)" +msgstr "tông khối dành riêng là quá lớn (%lu)" + +#: misc/tune2fs.c:840 +#, c-format +msgid "Setting reserved blocks count to %lu\n" +msgstr "Đang đặt tổng khối dành riêng thành %lu\n" + +#: misc/tune2fs.c:846 +msgid "" +"\n" +"The filesystem already has sparse superblocks.\n" +msgstr "" +"\n" +"Hệ thống tập tin đã có siêu khối thưa thớt.\n" + +#: misc/tune2fs.c:853 +#, c-format +msgid "" +"\n" +"Sparse superblock flag set. %s" +msgstr "" +"\n" +"Cờ siêu khối thưa thớt đã được đặt. %s" + +#: misc/tune2fs.c:860 +msgid "" +"\n" +"The filesystem already has sparse superblocks disabled.\n" +msgstr "" +"\n" +"Hệ thống tập tin đã tắt khả năng siêu khối thưa thớt.\n" + +#: misc/tune2fs.c:868 +#, c-format +msgid "" +"\n" +"Sparse superblock flag cleared. %s" +msgstr "" +"\n" +"Cờ siêu khối thưa thớt đã được xoá. %s" + +#: misc/tune2fs.c:875 +#, c-format +msgid "Setting time filesystem last checked to %s\n" +msgstr "Đang đặt giờ kiểm tra hệ thống tập tin lần cuối cùng thành %s\n" + +#: misc/tune2fs.c:881 +#, c-format +msgid "Setting reserved blocks uid to %lu\n" +msgstr "Đang đặt UID khối dành riêng thành %lu\n" + +#: misc/tune2fs.c:914 +msgid "Invalid UUID format\n" +msgstr "Dạng thức UUID không hợp lệ\n" + +#: misc/util.c:72 +msgid "Proceed anyway? (y,n) " +msgstr "Vẫn còn tiếp tục không? (c,k)" + +#: misc/util.c:93 +#, c-format +msgid "Could not stat %s --- %s\n" +msgstr "Không thể lấy các thông tin về %s — %s\n" + +#: misc/util.c:96 +msgid "" +"\n" +"The device apparently does not exist; did you specify it correctly?\n" +msgstr "" +"\n" +"Hình như thiết bị đó không tồn tại; bạn có xác định đúng nó chưa?\n" + +#: misc/util.c:107 +#, c-format +msgid "%s is not a block special device.\n" +msgstr "%s không phải là thiết bị đặc biệt khối.\n" + +#: misc/util.c:136 +#, c-format +msgid "%s is entire device, not just one partition!\n" +msgstr "%s là toàn bộ thiết bị, không phải chỉ một phân vùng !\n" + +#: misc/util.c:158 +msgid "mke2fs forced anyway. Hope /etc/mtab is incorrect.\n" +msgstr "Tiến trình mke2fs vẫn còn bị ép buộc. Mong là không đúng.\n" + +#: misc/util.c:163 +#, c-format +msgid "will not make a %s here!\n" +msgstr "sẽ không làm %s ở đây !\n" + +#: misc/util.c:170 +msgid "mke2fs forced anyway.\n" +msgstr "Tiến trình mke2fs vẫn còn bị ép buộc.\n" + +#: misc/util.c:186 +msgid "Couldn't allocate memory to parse journal options!\n" +msgstr "Không thể cấp phát bộ nhớ để phân tách các tùy chọn nhật ký !\n" + +#: misc/util.c:228 +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=\n" +"\tdevice=\n" +"\n" +"The journal size must be between 1024 and 102400 filesystem blocks.\n" +"\n" +msgstr "" +"\n" +"Tùy chọn nhật ký sai đã được xác định.\n" +"\n" +"Các tùy chọn nhật ký có định giới bằng dấu phẩy, và có thể chấp nhận\n" +"đối số mà được ngụ ý bằng dấu bằng « = ».\n" +"\n" +"Tùy chọn nhật ký hợp lệ:\n" +"\tsize=\n" +"\tdevice=\n" +"\n" +"Kích cỡ của nhật ký phải nằm trong phạm vị\n" +"1024 đến 102400 khối hệ thống tập tin.\n" +"\n" + +#: misc/util.c:255 +msgid "" +"\n" +"Filesystem too small for a journal\n" +msgstr "" +"\n" +"Hệ thống tập tin quá nhỏ đối với nhật ký\n" + +#: misc/util.c:262 +#, c-format +msgid "" +"\n" +"The requested journal size is %d blocks; it must be\n" +"between 1024 and 102400 blocks. Aborting.\n" +msgstr "" +"\n" +"Kích cỡ nhật ký đã yêu cầu là %d khối;\n" +"nó phải nằm trong phạm vị 1024 đến 102400 khối\n" +"nên hủy bỏ.\n" + +#: misc/util.c:270 +msgid "" +"\n" +"Journal size too big for filesystem.\n" +msgstr "" +"\n" +"Kích cỡ nhật ký quá lớn đối với hệ thống tập tin.\n" + +#: misc/util.c:294 +#, 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 "" +"Hệ thống tập tin này sẽ được kiểm tra tự động mỗi %d lần gắn kết\n" +"hay mỗi %g ngày, điều nào xảy ra trước. Hãy dùng tùy chọn\n" +"« tune2fs -c » hay « tune2fs -i » để được quyền cao hơn.\n" + +#: misc/uuidgen.c:30 +#, c-format +msgid "Usage: %s [-r] [-t]\n" +msgstr "Cách sử dụng: %s [-r] [-t]\n" + +#: resize/extent.c:196 +msgid "# Extent dump:\n" +msgstr "# Đổ khoảng:\n" + +#: resize/extent.c:197 +#, c-format +msgid "#\tNum=%d, Size=%d, Cursor=%d, Sorted=%d\n" +msgstr "#\tSố=%d, Cỡ=%d, Con trỏ=%d, Sắp xếp=%d\n" + +#: resize/extent.c:200 +#, c-format +msgid "#\t\t %u -> %u (%d)\n" +msgstr "#\t\t %u -> %u (%d)\n" + +#: resize/main.c:39 +#, c-format +msgid "" +"Usage: %s [-d debug_flags] [-f] [-F] [-p] device [new_size]\n" +"\n" +msgstr "" +"Cách sử dụng: %s [-d cờ_gỡ_lỗi] [-f] [-F] [-p] thiết_bị [kích_cỡ_mới]\n" +"\n" + +#: resize/main.c:61 +msgid "Extending the inode table" +msgstr "Đang mở rộng bảng nút inode" + +#: resize/main.c:64 +msgid "Relocating blocks" +msgstr "Đang định vị lại các khối" + +#: resize/main.c:67 +msgid "Scanning inode table" +msgstr "Đang quét bảng nút inode" + +#: resize/main.c:70 +msgid "Updating inode references" +msgstr "Đang cập nhật các tham chiếu nút inode" + +#: resize/main.c:73 +msgid "Moving inode table" +msgstr "Đang di chuyển bảng nút inode" + +#: resize/main.c:76 +msgid "Unknown pass?!?" +msgstr "Lần qua không rõ ?!?" + +#: resize/main.c:79 +#, c-format +msgid "Begin pass %d (max = %lu)\n" +msgstr "Chạy lần qua %d (tối đa = %lu)\n" + +#: resize/main.c:200 +#, c-format +msgid "while opening %s" +msgstr "trong khi mở %s" + +#: resize/main.c:212 +#, c-format +msgid "while getting stat information for %s" +msgstr "trong khi lấy các thông tin về %s" + +#: resize/main.c:286 +#, c-format +msgid "bad filesystem size - %s" +msgstr "kích cỡ hệ thống tập tin sai — %s" + +#: resize/main.c:313 +#, c-format +msgid "" +"The containing partition (or device) is only %u (%dk) blocks.\n" +"You requested a new size of %u blocks.\n" +"\n" +msgstr "" +"Phân vùng (hay thiết bị) chứa là chỉ %u (%dk) khối thôi.\n" +"Bạn đã yêu cầu kích cỡ mới là %u khối.\n" +"\n" + +#: resize/main.c:320 +#, c-format +msgid "" +"The filesystem is already %u blocks long. Nothing to do!\n" +"\n" +msgstr "" +"Hệ thống tập tin đã có độ dài %u khối. Không có gì cần làm !\n" +"\n" + +#: resize/main.c:331 +#, c-format +msgid "" +"Please run 'e2fsck -f %s' first.\n" +"\n" +msgstr "Hãy chạy tiến trình « e2fsck -f %s » trước đó.\n" + +#: resize/main.c:342 +#, c-format +msgid "while trying to resize %s" +msgstr "trong khi cố gắng thay đổi kích cỡ %s" + +#: resize/main.c:347 +#, c-format +msgid "" +"The filesystem on %s is now %u blocks long.\n" +"\n" +msgstr "" +"Hệ thống tập tin nằm trên %s bây giờ có độ dài %u khối.\n" +"\n" + +#: resize/resize2fs.c:638 +msgid "reserved blocks" +msgstr "khối dành riêng" + +#: resize/resize2fs.c:643 +msgid "blocks to be moved" +msgstr "khối cần di chuyển" + +#: resize/resize2fs.c:648 +msgid "meta-data blocks" +msgstr "khối siêu dữ liệu" + +#: resize/resize2fs.c:1528 +#, c-format +msgid "Should never happen: resize inode corrupt!\n" +msgstr "Không bao giờ nên xảy ra: nút inode thay đổi kích cỡ bị hỏng !\n" Index: e2fsprogs-1.39/resize/ChangeLog =================================================================== --- e2fsprogs-1.39.orig/resize/ChangeLog 2006-05-22 23:54:13.000000000 +0200 +++ e2fsprogs-1.39/resize/ChangeLog 2006-09-18 17:42:57.000000000 +0200 @@ -1,3 +1,35 @@ +2006-08-30 Eric Sandeen + + * online.c (online_resize_fs): use div_ceil for r_frac calculation. + * resize2fs.c (adjust_fs_info): avoid overflow in blk calculation + when figuring new reserved blocks count. + +2006-08-30 Eric Sandeen + + * resize2fs.c (adjust_fs_info): Disallow > 2^32 indoes at resize time. + +2006-08-30 Eric Sandeen + + * online.c (online_resize_fs): Fix printf formats. + +2006-08-30 Eric Sandeen + + * resize2fs.c (mark_table_blocks): Remove unused variable. + +2006-08-30 Theodore Tso + + * resize2fs.c (adjust_fs_info), online.c (online_resize_fs): Use + e2p_percent to properly calculate the number of reserved + blocks without worrying about overflow. + + * resize2fs.c (ext2fs_calculate_summary_stats): Fix potential + overflow problems when the number of blocks is close to + 2**31. + + * resize2fs.c (adjust_fs_info): Use ext2fs_div_ceil() instead of a + using an open-coded expression which was subject to + overflows. + 2006-05-22 Theodore Tso * resize2fs.8.in: Fixed spelling mistake (Addresses Debian Bug: Index: e2fsprogs-1.39/resize/Makefile.pq =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ e2fsprogs-1.39/resize/Makefile.pq 2006-09-18 17:42:57.000000000 +0200 @@ -0,0 +1,11 @@ +TOPSRC=.. +LIBNAME=RESIZE.LIB +OBJFILE=RESIZE.LST + +OBJS= extent.obj \ + ext2_block_move.obj \ + ext2_inode_move.obj \ + resize2fs.obj + +!include $(TOPSRC)\powerquest\MCONFIG + Index: e2fsprogs-1.39/resize/online.c =================================================================== --- e2fsprogs-1.39.orig/resize/online.c 2006-03-18 01:43:52.000000000 +0100 +++ e2fsprogs-1.39/resize/online.c 2006-09-19 17:02:36.000000000 +0200 @@ -59,8 +59,7 @@ errcode_t online_resize_fs(ext2_filsys f exit(1); } - r_frac = ((100 * sb->s_r_blocks_count) + sb->s_blocks_count-1) / - sb->s_blocks_count; + r_frac = ext2fs_div_ceil(100 * sb->s_r_blocks_count, sb->s_blocks_count); retval = ext2fs_read_bitmaps(fs); if (retval) @@ -74,7 +73,7 @@ errcode_t online_resize_fs(ext2_filsys f if (retval) return retval; - printf(_("Performing an on-line resize of %s to %d (%dk) blocks.\n"), + printf(_("Performing an on-line resize of %s to %u (%dk) blocks.\n"), fs->device_name, *new_size, fs->blocksize / 1024); size = fs->group_desc_count * sb->s_blocks_per_group + @@ -107,7 +106,8 @@ errcode_t online_resize_fs(ext2_filsys f sb->s_first_data_block - (i * sb->s_blocks_per_group); } - input.reserved_blocks = input.blocks_count * r_frac / 100; + input.reserved_blocks = e2p_percent(r_frac, + input.blocks_count); #if 0 printf("new block bitmap is at 0x%04x\n", input.block_bitmap); @@ -115,7 +115,7 @@ errcode_t online_resize_fs(ext2_filsys f printf("new inode table is at 0x%04x-0x%04x\n", input.inode_table, input.inode_table + new_fs->inode_blocks_per_group-1); - printf("new group has %d blocks\n", input.blocks_count); + printf("new group has %u blocks\n", input.blocks_count); printf("new group will reserve %d blocks\n", input.reserved_blocks); printf("new group has %d free blocks\n", Index: e2fsprogs-1.39/resize/resize2fs.c =================================================================== --- e2fsprogs-1.39.orig/resize/resize2fs.c 2006-03-19 03:34:00.000000000 +0100 +++ e2fsprogs-1.39/resize/resize2fs.c 2006-09-19 17:05:57.000000000 +0200 @@ -186,19 +186,18 @@ errcode_t adjust_fs_info(ext2_filsys fs, unsigned long i, j, old_desc_blocks, max_group; unsigned int meta_bg, meta_bg_size; int has_super; + __u64 new_inodes; /* u64 to check for overflow */ fs->super->s_blocks_count = new_size; retry: - fs->group_desc_count = (fs->super->s_blocks_count - - fs->super->s_first_data_block + - EXT2_BLOCKS_PER_GROUP(fs->super) - 1) - / EXT2_BLOCKS_PER_GROUP(fs->super); + fs->group_desc_count = ext2fs_div_ceil(fs->super->s_blocks_count - + fs->super->s_first_data_block, + EXT2_BLOCKS_PER_GROUP(fs->super)); if (fs->group_desc_count == 0) return EXT2_ET_TOOSMALL; - fs->desc_blocks = (fs->group_desc_count + - EXT2_DESC_PER_BLOCK(fs->super) - 1) - / EXT2_DESC_PER_BLOCK(fs->super); + fs->desc_blocks = ext2fs_div_ceil(fs->group_desc_count, + EXT2_DESC_PER_BLOCK(fs->super)); /* * Overhead is the number of bookkeeping blocks per group. It @@ -228,6 +227,12 @@ retry: /* * Adjust the number of inodes */ + new_inodes =(__u64)fs->super->s_inodes_per_group * fs->group_desc_count; + if (new_inodes > ~0U) { + fprintf(stderr, _("inodes (%llu) must be less than %u"), + new_inodes, ~0U); + return EXT2_ET_TOO_MANY_INODES; + } fs->super->s_inodes_count = fs->super->s_inodes_per_group * fs->group_desc_count; @@ -245,10 +250,10 @@ retry: /* * Adjust the number of reserved blocks */ - blk = old_fs->super->s_r_blocks_count * 100 / + blk = (__u64)old_fs->super->s_r_blocks_count * 100 / old_fs->super->s_blocks_count; - fs->super->s_r_blocks_count = ((fs->super->s_blocks_count * blk) - / 100); + fs->super->s_r_blocks_count = e2p_percent(blk, + fs->super->s_blocks_count); /* * Adjust the bitmaps for size @@ -538,14 +543,13 @@ errout: static errcode_t mark_table_blocks(ext2_filsys fs, ext2fs_block_bitmap bmap) { - blk_t block, b; + blk_t b; unsigned int j; dgrp_t i; unsigned long meta_bg_size; unsigned int old_desc_blocks; meta_bg_size = (fs->blocksize / sizeof (struct ext2_group_desc)); - block = fs->super->s_first_data_block; if (fs->super->s_feature_incompat & EXT2_FEATURE_INCOMPAT_META_BG) old_desc_blocks = fs->super->s_first_meta_bg; else @@ -573,7 +577,6 @@ static errcode_t mark_table_blocks(ext2_ */ ext2fs_mark_block_bitmap(bmap, fs->group_desc[i].bg_inode_bitmap); - block += fs->super->s_blocks_per_group; } return 0; } @@ -1584,7 +1587,9 @@ static errcode_t ext2fs_calculate_summar total_free = 0; count = 0; group = 0; - for (ino = 1; ino <= fs->super->s_inodes_count; ino++) { + + /* Protect loop from wrap-around if s_inodes_count maxed */ + for (ino = 1; ino <= fs->super->s_inodes_count && ino > 0; ino++) { if (!ext2fs_fast_test_inode_bitmap(fs->inode_map, ino)) { group_free++; total_free++; Index: e2fsprogs-1.39/tests/ChangeLog =================================================================== --- e2fsprogs-1.39.orig/tests/ChangeLog 2006-05-29 05:28:05.000000000 +0200 +++ e2fsprogs-1.39/tests/ChangeLog 2006-09-18 17:42:57.000000000 +0200 @@ -1,3 +1,14 @@ +2006-08-30 Eric Sandeen + + * m_raid_opt/expect.1: + Change expected values for last group due to correctly + calculated last block when using strides. + +2006-08-06 Theodore Tso + + * Makefile.in, test_config: If available, use unified diffs to + report test failures + 2006-05-28 Theodore Tso * test_config: Unset all locale-related environment variables Index: e2fsprogs-1.39/tests/Makefile.in =================================================================== --- e2fsprogs-1.39.orig/tests/Makefile.in 2005-09-06 11:40:14.000000000 +0200 +++ e2fsprogs-1.39/tests/Makefile.in 2006-09-18 17:42:57.000000000 +0200 @@ -19,6 +19,7 @@ test_script: test_script.in Makefile @HTREE_CMT@ @echo "HTREE=y" >> test_script @echo 'EGREP="@EGREP@"' >> test_script @echo "SRCDIR=@srcdir@" >> test_script + @echo "DIFF_OPTS=@UNI_DIFF_OPTS@" >> test_script @cat $(srcdir)/test_script.in >> test_script @chmod +x test_script Index: e2fsprogs-1.39/tests/f_resize_inode/script =================================================================== --- e2fsprogs-1.39.orig/tests/f_resize_inode/script 2005-09-06 11:40:15.000000000 +0200 +++ e2fsprogs-1.39/tests/f_resize_inode/script 2006-09-18 17:42:57.000000000 +0200 @@ -1,4 +1,4 @@ -echo -n "e2fsck with resize_inode: " +printf "e2fsck with resize_inode: " FSCK_OPT=-yf OUT=$test_name.log if [ -f $test_dir/expect.gz ]; then Index: e2fsprogs-1.39/tests/m_raid_opt/expect.1 =================================================================== --- e2fsprogs-1.39.orig/tests/m_raid_opt/expect.1 2006-05-24 19:00:12.000000000 +0200 +++ e2fsprogs-1.39/tests/m_raid_opt/expect.1 2006-09-18 17:42:57.000000000 +0200 @@ -944,8 +944,8 @@ Group 126: (Blocks 129025-130048) Free inodes: 32257-32512 Group 127: (Blocks 130049-131071) Group descriptor at 130049 - Block bitmap at 130744 (+695), Inode bitmap at 130745 (+696) + Block bitmap at 130743 (+694), Inode bitmap at 130744 (+695) Inode table at 130050-130081 (+1) 988 free blocks, 256 free inodes, 0 directories - Free blocks: 130082-130743, 130746-131071 + Free blocks: 130082-130742, 130745-131071 Free inodes: 32513-32768 Index: e2fsprogs-1.39/tests/r_move_itable/script =================================================================== --- e2fsprogs-1.39.orig/tests/r_move_itable/script 2005-09-06 11:40:15.000000000 +0200 +++ e2fsprogs-1.39/tests/r_move_itable/script 2006-09-18 17:42:57.000000000 +0200 @@ -1,4 +1,4 @@ -echo -n "resize2fs with resize_inode: " +printf "resize2fs with resize_inode: " if test -x $RESIZE2FS_EXE; then Index: e2fsprogs-1.39/tests/r_resize_inode/script =================================================================== --- e2fsprogs-1.39.orig/tests/r_resize_inode/script 2005-09-06 11:40:15.000000000 +0200 +++ e2fsprogs-1.39/tests/r_resize_inode/script 2006-09-18 17:42:57.000000000 +0200 @@ -1,4 +1,4 @@ -echo -n "resize2fs with resize_inode: " +printf "resize2fs with resize_inode: " if test -x $RESIZE2FS_EXE; then Index: e2fsprogs-1.39/tests/run_e2fsck =================================================================== --- e2fsprogs-1.39.orig/tests/run_e2fsck 2005-09-06 11:40:15.000000000 +0200 +++ e2fsprogs-1.39/tests/run_e2fsck 2006-09-18 17:42:57.000000000 +0200 @@ -1,5 +1,5 @@ if [ "$DESCRIPTION"x != x ]; then - echo -n "$DESCRIPTION: " + printf "%s" "$DESCRIPTION: " fi if [ "$IMAGE"x = x ]; then IMAGE=$test_dir/image.gz Index: e2fsprogs-1.39/tests/test_config =================================================================== --- e2fsprogs-1.39.orig/tests/test_config 2006-05-29 05:08:44.000000000 +0200 +++ e2fsprogs-1.39/tests/test_config 2006-09-18 17:42:57.000000000 +0200 @@ -18,7 +18,6 @@ TEST_ICOUNT=../tests/progs/test_icount LD_LIBRARY_PATH=../lib:../lib/ext2fs:../lib/e2p:../lib/et:../lib/ss DYLD_LIBRARY_PATH=../lib:../lib/ext2fs:../lib/e2p:../lib/et:../lib/ss TMPFILE=./test.img -DIFF_OPTS=-c export LD_LIBRARY_PATH export DYLD_LIBRARY_PATH TZ=GMT Index: e2fsprogs-1.39/util/ChangeLog =================================================================== --- e2fsprogs-1.39.orig/util/ChangeLog 2005-11-09 23:24:25.000000000 +0100 +++ e2fsprogs-1.39/util/ChangeLog 2006-09-18 17:42:57.000000000 +0200 @@ -1,3 +1,8 @@ +2006-08-05 Andreas Dilger + + * subst.c (main): Create automatically-generated files be + read-only in order to remind developers not to end them. + 2005-10-26 Theodore Ts'o * Makefile.in: Use BUILD_CCFLAGS and BUILD_LDFLAGS instead of Index: e2fsprogs-1.39/util/Makefile.pq =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ e2fsprogs-1.39/util/Makefile.pq 2006-09-18 17:42:57.000000000 +0200 @@ -0,0 +1,10 @@ +TOPSRC=.. + +!include $(TOPSRC)\powerquest\MCONFIG + +ALL:: libecho.exe + +libecho.exe: libecho.c + +clean:: + $(RM) libecho.exe Index: e2fsprogs-1.39/util/subst.c =================================================================== --- e2fsprogs-1.39.orig/util/subst.c 2005-09-06 11:40:15.000000000 +0200 +++ e2fsprogs-1.39/util/subst.c 2006-09-18 17:42:57.000000000 +0200 @@ -367,6 +367,7 @@ int main(int argc, char **argv) fclose(in); fclose(out); if (outfn) { + struct stat st; if (compare_file(outfn, newfn)) { if (verbose) printf("No change, keeping %s.\n", outfn); @@ -386,6 +387,9 @@ int main(int argc, char **argv) printf("Creating or replacing %s.\n", outfn); rename(newfn, outfn); } + /* set read-only to alert user it is a generated file */ + if (stat(outfn, &st) == 0) + chmod(outfn, st.st_mode & ~0222); } return (0); }