mirror of https://github.com/vitalif/e2fsprogs
commit
d2dce124dd
|
@ -110,6 +110,7 @@ LIBUUID = @LIBUUID@ @SOCKET_LIB@
|
|||
LIBQUOTA = @STATIC_LIBQUOTA@
|
||||
LIBBLKID = @LIBBLKID@ @PRIVATE_LIBS_CMT@ $(LIBUUID)
|
||||
LIBINTL = @LIBINTL@
|
||||
SYSLIBS = @LIBS@
|
||||
DEPLIBSS = $(LIB)/libss@LIB_EXT@
|
||||
DEPLIBCOM_ERR = $(LIB)/libcom_err@LIB_EXT@
|
||||
DEPLIBUUID = @DEPLIBUUID@
|
||||
|
|
|
@ -2759,6 +2759,21 @@ $as_echo "Release date is ${E2FSPROGS_MONTH}, ${E2FSPROGS_YEAR}" >&6; }
|
|||
|
||||
|
||||
|
||||
WITH_DIET_LIBC=
|
||||
|
||||
# Check whether --with-diet-libc was given.
|
||||
if test "${with_diet_libc+set}" = set; then :
|
||||
withval=$with_diet_libc; CC="diet cc -nostdinc"
|
||||
WITH_DIET_LIBC=yes
|
||||
if test -z "$LIBS"
|
||||
then
|
||||
LIBS="-lcompat"
|
||||
else
|
||||
LIBS="$LIBS -lcompat"
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: CC=$CC" >&5
|
||||
$as_echo "CC=$CC" >&6; }
|
||||
fi
|
||||
# Make sure we can run config.sub.
|
||||
$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
|
||||
as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
|
||||
|
@ -3665,15 +3680,6 @@ $as_echo "#define HAVE_DLOPEN 1" >>confdefs.h
|
|||
fi
|
||||
|
||||
|
||||
WITH_DIET_LIBC=
|
||||
|
||||
# Check whether --with-diet-libc was given.
|
||||
if test "${with_diet_libc+set}" = set; then :
|
||||
withval=$with_diet_libc; CC="diet cc -nostdinc"
|
||||
WITH_DIET_LIBC=yes
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: CC=$CC" >&5
|
||||
$as_echo "CC=$CC" >&6; }
|
||||
fi
|
||||
|
||||
# Check whether --with-cc was given.
|
||||
if test "${with_cc+set}" = set; then :
|
||||
|
@ -5446,9 +5452,16 @@ $as_echo "Enabling e4defrag support" >&6; }
|
|||
fi
|
||||
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Enabling e4defrag support by default" >&5
|
||||
if test -z "$WITH_DIET_LIBC"
|
||||
then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Enabling e4defrag support by default" >&5
|
||||
$as_echo "Enabling e4defrag support by default" >&6; }
|
||||
DEFRAG_CMT=
|
||||
DEFRAG_CMT=
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Disabling e4defrag support by default" >&5
|
||||
$as_echo "Disabling e4defrag support by default" >&6; }
|
||||
DEFRAG_CMT="#"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
|
@ -10523,6 +10536,16 @@ if test "x$ac_cv_member_struct_dirent_d_reclen" = xyes; then :
|
|||
|
||||
$as_echo "#define HAVE_RECLEN_DIRENT 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_member "$LINENO" "struct stat" "st_atim" "ac_cv_member_struct_stat_st_atim" "$ac_includes_default"
|
||||
if test "x$ac_cv_member_struct_stat_st_atim" = xyes; then :
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_STRUCT_STAT_ST_ATIM 1
|
||||
_ACEOF
|
||||
|
||||
|
||||
fi
|
||||
|
||||
ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "#include <sys/types.h>
|
||||
|
@ -11118,7 +11141,7 @@ if test "$ac_res" != no; then :
|
|||
fi
|
||||
|
||||
fi
|
||||
for ac_func in __secure_getenv backtrace blkid_probe_get_topology chflags fallocate fallocate64 fchown fdatasync fstat64 ftruncate64 getdtablesize getmntinfo getpwuid_r getrlimit getrusage jrand48 llseek lseek64 mallinfo mbstowcs memalign mmap msync nanosleep open64 pathconf posix_fadvise posix_memalign prctl secure_getenv setmntent setresgid setresuid srandom strcasecmp strdup strnlen strptime strtoull sync_file_range sysconf usleep utime valloc
|
||||
for ac_func in __secure_getenv backtrace blkid_probe_get_topology chflags fadvise64 fallocate fallocate64 fchown fdatasync fstat64 ftruncate64 futimes getcwd getdtablesize getmntinfo getpwuid_r getrlimit getrusage jrand48 llseek lseek64 mallinfo mbstowcs memalign mempcpy mmap msync nanosleep open64 pathconf posix_fadvise posix_fadvise64 posix_memalign prctl secure_getenv setmntent setresgid setresuid srandom stpcpy strcasecmp strdup strnlen strptime strtoull sync_file_range sysconf usleep utime valloc
|
||||
do :
|
||||
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
||||
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
|
||||
|
@ -11502,9 +11525,12 @@ fi
|
|||
if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
|
||||
INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl'
|
||||
fi
|
||||
if test -n "$WITH_DIET_LIBC" ; then
|
||||
INCLUDES="$INCLUDES -D_REENTRANT"
|
||||
fi
|
||||
|
||||
if test $cross_compiling = no; then
|
||||
BUILD_CFLAGS="$CFLAGS $CPPFLAGS"
|
||||
BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H"
|
||||
BUILD_LDFLAGS="$LDFLAGS"
|
||||
else
|
||||
BUILD_CFLAGS=
|
||||
|
|
47
configure.in
47
configure.in
|
@ -63,15 +63,6 @@ AC_SUBST(E2FSPROGS_MONTH)
|
|||
AC_SUBST(E2FSPROGS_DAY)
|
||||
AC_SUBST(E2FSPROGS_VERSION)
|
||||
AC_SUBST(E2FSPROGS_PKGVER)
|
||||
AC_CANONICAL_HOST
|
||||
dnl
|
||||
dnl Check to see if libdl exists for the sake of dlopen
|
||||
dnl
|
||||
DLOPEN_LIB=''
|
||||
AC_CHECK_LIB(dl, dlopen,
|
||||
[DLOPEN_LIB=-ldl
|
||||
AC_DEFINE(HAVE_DLOPEN, 1, [Define to 1 if dlopen/libdl exists])])
|
||||
AC_SUBST(DLOPEN_LIB)
|
||||
dnl
|
||||
dnl Use diet libc
|
||||
dnl
|
||||
|
@ -80,8 +71,24 @@ AC_ARG_WITH([diet-libc],
|
|||
[ --with-diet-libc use diet libc],
|
||||
CC="diet cc -nostdinc"
|
||||
WITH_DIET_LIBC=yes
|
||||
if test -z "$LIBS"
|
||||
then
|
||||
LIBS="-lcompat"
|
||||
else
|
||||
LIBS="$LIBS -lcompat"
|
||||
fi
|
||||
AC_MSG_RESULT(CC=$CC))dnl
|
||||
dnl
|
||||
AC_CANONICAL_HOST
|
||||
dnl
|
||||
dnl Check to see if libdl exists for the sake of dlopen
|
||||
dnl
|
||||
DLOPEN_LIB=''
|
||||
AC_CHECK_LIB(dl, dlopen,
|
||||
[DLOPEN_LIB=-ldl
|
||||
AC_DEFINE(HAVE_DLOPEN, 1, [Define to 1 if dlopen/libdl exists])])
|
||||
AC_SUBST(DLOPEN_LIB)
|
||||
dnl
|
||||
AC_ARG_WITH([cc],
|
||||
AC_HELP_STRING([--with-cc],[no longer supported, use CC= instead]),
|
||||
AC_MSG_ERROR([--with-cc no longer supported; use CC= instead]))
|
||||
|
@ -687,8 +694,14 @@ else
|
|||
AC_MSG_RESULT([Enabling e4defrag support])
|
||||
fi
|
||||
,
|
||||
AC_MSG_RESULT([Enabling e4defrag support by default])
|
||||
DEFRAG_CMT=
|
||||
if test -z "$WITH_DIET_LIBC"
|
||||
then
|
||||
AC_MSG_RESULT([Enabling e4defrag support by default])
|
||||
DEFRAG_CMT=
|
||||
else
|
||||
AC_MSG_RESULT([Disabling e4defrag support by default])
|
||||
DEFRAG_CMT="#"
|
||||
fi
|
||||
)
|
||||
AC_SUBST(DEFRAG_CMT)
|
||||
dnl
|
||||
|
@ -963,6 +976,7 @@ dnl is not decleared.
|
|||
AC_CHECK_MEMBER(struct dirent.d_reclen,[AC_DEFINE(HAVE_RECLEN_DIRENT, 1,
|
||||
[Define to 1 if dirent has d_reclen])],,
|
||||
[#include <dirent.h>])
|
||||
AC_CHECK_MEMBERS([struct stat.st_atim])
|
||||
dnl Check to see if ssize_t was declared
|
||||
AC_CHECK_TYPE(ssize_t,[AC_DEFINE(HAVE_TYPE_SSIZE_T, 1,
|
||||
[Define to 1 if ssize_t declared])],,
|
||||
|
@ -1079,12 +1093,15 @@ AC_CHECK_FUNCS(m4_flatten([
|
|||
backtrace
|
||||
blkid_probe_get_topology
|
||||
chflags
|
||||
fadvise64
|
||||
fallocate
|
||||
fallocate64
|
||||
fchown
|
||||
fdatasync
|
||||
fstat64
|
||||
ftruncate64
|
||||
futimes
|
||||
getcwd
|
||||
getdtablesize
|
||||
getmntinfo
|
||||
getpwuid_r
|
||||
|
@ -1096,12 +1113,14 @@ AC_CHECK_FUNCS(m4_flatten([
|
|||
mallinfo
|
||||
mbstowcs
|
||||
memalign
|
||||
mempcpy
|
||||
mmap
|
||||
msync
|
||||
nanosleep
|
||||
open64
|
||||
pathconf
|
||||
posix_fadvise
|
||||
posix_fadvise64
|
||||
posix_memalign
|
||||
prctl
|
||||
secure_getenv
|
||||
|
@ -1109,6 +1128,7 @@ AC_CHECK_FUNCS(m4_flatten([
|
|||
setresgid
|
||||
setresuid
|
||||
srandom
|
||||
stpcpy
|
||||
strcasecmp
|
||||
strdup
|
||||
strnlen
|
||||
|
@ -1329,12 +1349,15 @@ fi
|
|||
if test "$USE_INCLUDED_LIBINTL" = "yes" ; then
|
||||
INCLUDES=$INCLUDES' -I$(top_builddir)/intl -I$(top_srcdir)/intl'
|
||||
fi
|
||||
if test -n "$WITH_DIET_LIBC" ; then
|
||||
INCLUDES="$INCLUDES -D_REENTRANT"
|
||||
fi
|
||||
AC_SUBST(INCLUDES)
|
||||
dnl
|
||||
dnl Build CFLAGS
|
||||
dnl
|
||||
if test $cross_compiling = no; then
|
||||
BUILD_CFLAGS="$CFLAGS $CPPFLAGS"
|
||||
BUILD_CFLAGS="$CFLAGS $CPPFLAGS $INCLUDES -DHAVE_CONFIG_H"
|
||||
BUILD_LDFLAGS="$LDFLAGS"
|
||||
else
|
||||
BUILD_CFLAGS=
|
||||
|
|
|
@ -4,6 +4,20 @@ e2fsprogs (1.43~WIP-2013-12-28-1) unstable; urgency=low
|
|||
|
||||
-- Theodore Y. Ts'o <tytso@mit.edu> Mon, 28 Dec 2013 23:25:42 -0400
|
||||
|
||||
e2fsprogs (1.42.9-2) unstable; urgency=low
|
||||
|
||||
* Fix lintian warning: debian-changelog-has-wrong-weekday
|
||||
* Fix lintian warning: non-standard-dir-perm by using dh_strip's
|
||||
--dbg-package option instead of manually managing the debug files
|
||||
* Fix printf type format mismatch in e2image
|
||||
* Improved debugfs's error reporting when parsing block numbers
|
||||
* Use consistent configure options across the multiple e2fsprogs
|
||||
builds; this means that e2fsck.static will now use the blkid library
|
||||
shipped with util-linux, instead of the internal one shipped with
|
||||
the e2fsprogs sources.
|
||||
|
||||
-- Theodore Y. Ts'o <tytso@mit.edu> Mon, 30 Dec 2013 16:56:50 -0500
|
||||
|
||||
e2fsprogs (1.42.9-1) unstable; urgency=low
|
||||
|
||||
* New upstream version
|
||||
|
@ -55,8 +69,7 @@ e2fsprogs (1.42.9-1) unstable; urgency=low
|
|||
* Updated/fixed various man pages. (Closes: #586218, #669730,
|
||||
#698076, #731329)
|
||||
|
||||
-- Theodore Y. Ts'o <tytso@mit.edu> Tue, 28 Dec 2013 23:18:36 -0500
|
||||
>>>>>>> maint
|
||||
-- Theodore Y. Ts'o <tytso@mit.edu> Sat, 28 Dec 2013 23:18:36 -0500
|
||||
|
||||
e2fsprogs (1.42.8-1) unstable; urgency=low
|
||||
|
||||
|
|
|
@ -253,7 +253,8 @@ Description: ext2/ext3/ext4 file system utilities
|
|||
hard disks on Debian and other Linux systems.
|
||||
.
|
||||
This package contains programs for creating, checking, and maintaining
|
||||
ext2/3/4-based file systems.
|
||||
ext2/3/4-based file systems. It also includes the "badbocks" program,
|
||||
which can be used to scan for bad blocks on a disk or other storage device.
|
||||
|
||||
Package: e2fsprogs-dbg
|
||||
Section: debug
|
||||
|
|
|
@ -152,13 +152,12 @@ endif
|
|||
|
||||
BF_CFLAGS = -Os -fomit-frame-pointer
|
||||
|
||||
COMMON_CONF_FLAGS = --disable-e2initrd-helper --enable-elf-shlibs \
|
||||
--enable-quota --infodir=/usr/share/info
|
||||
ifeq ($(UTIL_LINUX_NG),yes)
|
||||
COMMON_CONF_FLAGS += --disable-fsck --disable-libblkid \
|
||||
UTIL_CONF_FLAGS ?= --disable-fsck --disable-libblkid \
|
||||
--disable-libuuid --disable-uuidd
|
||||
else
|
||||
COMMON_CONF_FLAGS += --enable-fsck
|
||||
UTIL_CONF_FLAGS ?= --enable-fsck --enable-libblkid \
|
||||
--enable-libuuid --enable-uuidd
|
||||
endif
|
||||
|
||||
ifneq ($(strip $(DEB_HOST_MULTIARCH)),)
|
||||
|
@ -173,10 +172,14 @@ endif
|
|||
|
||||
BACKTRACE_CONF_FLAGS ?= $(shell if ${debdir}/scripts/test-backtrace ; then echo --disable-backtrace ; fi)
|
||||
|
||||
STD_CONF_FLAGS ?= --enable-symlink-install $(MULTIARCH_CONF) $(BACKTRACE_CONF_FLAGS)
|
||||
COMMON_CONF_FLAGS = --disable-e2initrd-helper --enable-quota \
|
||||
--infodir=/usr/share/info --enable-symlink-install \
|
||||
$(MULTIARCH_CONF) $(BACKTRACE_CONF_FLAGS) $(UTIL_CONF_FLAGS)
|
||||
|
||||
BF_CONF_FLAGS ?= --disable-nls --disable-imager --disable-testio-debug \
|
||||
--disable-uuidd --disable-tls --disable-debugfs
|
||||
STD_CONF_FLAGS ?= --enable-elf-shlibs
|
||||
|
||||
BF_CONF_FLAGS ?= --enable-elf-shlibs --disable-nls --disable-imager \
|
||||
--disable-testio-debug --disable-uuidd --disable-tls --disable-debugfs
|
||||
|
||||
STATIC_CONF_FLAGS ?= --disable-nls --disable-imager \
|
||||
--disable-uuidd --disable-tls
|
||||
|
@ -213,7 +216,7 @@ M4_ARGS+=-UDIETLIBC
|
|||
WITH_DIET_LIBC =
|
||||
else
|
||||
M4_ARGS+=-DDIETLIBC
|
||||
WITH_DIET_LIBC = --with-diet-libc
|
||||
WITH_DIET_LIBC = --with-diet-libc --enable-libuuid --enable-libblkid
|
||||
endif
|
||||
|
||||
ifneq ($(BUILD_E2FSCK_STATIC),no)
|
||||
|
@ -253,24 +256,28 @@ ${CFGSTDSTAMP}:
|
|||
mkdir -p ${stdbuilddir}
|
||||
ifeq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
|
||||
cd ${stdbuilddir} && AWK=/usr/bin/awk \
|
||||
${topdir}/configure ${COMMON_CONF_FLAGS} ${STD_CONF_FLAGS} ${EXTRA_CONF_FLAGS} \
|
||||
CFLAGS="${CFLAGS}" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
|
||||
${topdir}/configure ${COMMON_CONF_FLAGS} ${STD_CONF_FLAGS} \
|
||||
${EXTRA_CONF_FLAGS} CFLAGS="${CFLAGS}" CPPFLAGS="$(CPPFLAGS)" \
|
||||
LDFLAGS="$(LDFLAGS)"
|
||||
else
|
||||
cd ${stdbuilddir} && AWK=/usr/bin/awk CC="${DEB_HOST_GNU_TYPE}-gcc" \
|
||||
${topdir}/configure ${COMMON_CONF_FLAGS} ${STD_CONF_FLAGS} ${EXTRA_CONF_FLAGS} \
|
||||
--build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) \
|
||||
CFLAGS="${CFLAGS}" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
|
||||
${topdir}/configure ${COMMON_CONF_FLAGS} ${STD_CONF_FLAGS} \
|
||||
${EXTRA_CONF_FLAGS} --build=$(DEB_BUILD_GNU_TYPE) \
|
||||
--host=$(DEB_HOST_GNU_TYPE) CFLAGS="${CFLAGS}" \
|
||||
CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
|
||||
endif
|
||||
|
||||
# specially-built MIPS libs
|
||||
ifneq ($(ismips),)
|
||||
mkdir -p ${mipsbuilddir} ${mipsbuilddir64}
|
||||
cd ${mipsbuilddir} && AWK=/usr/bin/awk \
|
||||
${topdir}/configure ${MIPS_NOPIC_CONF_FLAGS} \
|
||||
CFLAGS="${CFLAGS}" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
|
||||
${topdir}/configure ${COMMON_CONF_FLAGS} \
|
||||
${MIPS_NOPIC_CONF_FLAGS} CFLAGS="${CFLAGS}" \
|
||||
CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
|
||||
cd ${mipsbuilddir64} && AWK=/usr/bin/awk \
|
||||
${topdir}/configure ${MIPS_NOPIC_CONF_FLAGS} \
|
||||
CFLAGS="${CFLAGS}" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
|
||||
${topdir}/configure ${COMMON_CONF_FLAGS} \
|
||||
${MIPS_NOPIC_CONF_FLAGS} CFLAGS="${CFLAGS}" \
|
||||
CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
|
||||
endif
|
||||
|
||||
mkdir -p ${STAMPSDIR}
|
||||
|
@ -283,13 +290,15 @@ ${CFGBFSTAMP}:
|
|||
mkdir -p ${bfbuilddir}
|
||||
ifeq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
|
||||
cd ${bfbuilddir} && AWK=/usr/bin/awk \
|
||||
${topdir}/configure ${COMMON_CONF_FLAGS} ${BF_CONF_FLAGS} ${EXTRA_CONF_FLAGS} \
|
||||
CFLAGS="${CFLAGS} ${BF_CFLAGS}" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
|
||||
${topdir}/configure ${COMMON_CONF_FLAGS} ${BF_CONF_FLAGS} \
|
||||
${EXTRA_CONF_FLAGS} CFLAGS="${CFLAGS} ${BF_CFLAGS}" \
|
||||
CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
|
||||
else
|
||||
cd ${bfbuilddir} && AWK=/usr/bin/awk CC="${DEB_HOST_GNU_TYPE}-gcc" \
|
||||
${topdir}/configure ${COMMON_CONF_FLAGS} ${BF_CONF_FLAGS} ${EXTRA_CONF_FLAGS} \
|
||||
--build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) \
|
||||
CFLAGS="${CFLAGS}" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
|
||||
${topdir}/configure ${COMMON_CONF_FLAGS} ${BF_CONF_FLAGS} \
|
||||
${EXTRA_CONF_FLAGS} --build=$(DEB_BUILD_GNU_TYPE) \
|
||||
--host=$(DEB_HOST_GNU_TYPE) CFLAGS="${CFLAGS}" \
|
||||
CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
|
||||
endif
|
||||
mkdir -p ${STAMPSDIR}
|
||||
touch ${CFGBFSTAMP}
|
||||
|
@ -302,20 +311,22 @@ ${CFGSTATICSTAMP}:
|
|||
ifeq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
|
||||
if type diet > /dev/null 2>&1 ; then \
|
||||
cd ${staticbuilddir} && AWK=/usr/bin/awk \
|
||||
${topdir}/configure ${STATIC_CONF_FLAGS} ${EXTRA_CONF_FLAGS} \
|
||||
${WITH_DIET_LIBC} CFLAGS="${CFLAGS}" \
|
||||
${topdir}/configure ${COMMON_CONF_FLAGS} ${STATIC_CONF_FLAGS} \
|
||||
${EXTRA_CONF_FLAGS} ${WITH_DIET_LIBC} CFLAGS="${CFLAGS}" \
|
||||
CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"; \
|
||||
else \
|
||||
cd ${staticbuilddir} && AWK=/usr/bin/awk \
|
||||
${topdir}/configure ${STATIC_CONF_FLAGS} ${EXTRA_CONF_FLAGS} \
|
||||
${topdir}/configure ${COMMON_CONF_FLAGS} \
|
||||
${STATIC_CONF_FLAGS} ${EXTRA_CONF_FLAGS} \
|
||||
CFLAGS="${CFLAGS}" CPPFLAGS="$(CPPFLAGS)" \
|
||||
LDFLAGS="$(LDFLAGS)"; \
|
||||
fi
|
||||
else
|
||||
cd ${staticbuilddir} && AWK=/usr/bin/awk CC="${DEB_HOST_GNU_TYPE}-gcc" \
|
||||
${topdir}/configure ${COMMON_CONF_FLAGS} ${STATIC_CONF_FLAGS} ${EXTRA_CONF_FLAGS} \
|
||||
--build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) \
|
||||
CFLAGS="${CFLAGS}" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
|
||||
${topdir}/configure ${COMMON_CONF_FLAGS} ${STATIC_CONF_FLAGS} \
|
||||
${EXTRA_CONF_FLAGS} --build=$(DEB_BUILD_GNU_TYPE) \
|
||||
--host=$(DEB_HOST_GNU_TYPE) CFLAGS="${CFLAGS}" \
|
||||
CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
|
||||
endif
|
||||
mkdir -p ${STAMPSDIR}
|
||||
touch ${CFGSTATICSTAMP}
|
||||
|
@ -548,58 +559,22 @@ ifneq ($(UTIL_LINUX_NG),yes)
|
|||
endif
|
||||
|
||||
dh_fixperms
|
||||
dh_strip -pe2fsprogs --dbg-package=e2fsprogs-dbg
|
||||
dh_strip -pe2fsck-static --dbg-package=e2fsprogs-dbg
|
||||
ifneq ($(ismips),)
|
||||
dh_strip -k -Xlib64ext2fs-nopic.a
|
||||
dh_strip -pe2fslibs --dbg-package=e2fslibs-dbg -Xlib64ext2fs-nopic.a
|
||||
else
|
||||
dh_strip -k
|
||||
dh_strip -pe2fslibs --dbg-package=e2fslibs-dbg
|
||||
endif
|
||||
|
||||
# debug package stuff
|
||||
rm -rf ${udebdir}/usr
|
||||
dh_strip -plibss${SS_SOVERSION} --dbg-package=libss${SS_SOVERSION}-dbg
|
||||
dh_strip -plibcomerr${COMERR_SOVERSION} \
|
||||
--dbg-package=libcomerr${COMERR_SOVERSION}-dbg
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
rm -rf ${blkidudebdir}/usr
|
||||
rm -rf ${uuidudebdir}/usr
|
||||
endif
|
||||
|
||||
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
|
||||
mkdir -p ${debugdir}/$(USRLIB)
|
||||
mv ${maindir}/usr/lib/debug ${debugdir}/$(USRLIB)
|
||||
rm -rf ${maindir}/usr/lib/debug
|
||||
|
||||
ifneq ($(BUILD_E2FSCK_STATIC),no)
|
||||
mv ${e2fsckstaticdir}/usr/lib/debug/sbin/* \
|
||||
${debugdir}/$(USRLIB)/debug
|
||||
rm -rf ${e2fsckstaticdir}/usr/lib
|
||||
endif
|
||||
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
mkdir -p ${uuidruntimedbgdir}/$(USRLIB)
|
||||
mv ${uuidruntimedir}/usr/lib/debug ${uuidruntimedbgdir}/$(USRLIB)
|
||||
rmdir ${uuidruntimedir}/usr/lib
|
||||
endif
|
||||
|
||||
mkdir -p ${libext2dbgdir}/$(USRLIB)
|
||||
mv ${libext2dir}/usr/lib/debug ${libext2dbgdir}/$(USRLIB)
|
||||
rmdir ${libext2dir}/usr/lib
|
||||
|
||||
mkdir -p ${libcomerrdbgdir}/$(USRLIB)
|
||||
mv ${libcomerrdir}/usr/lib/debug ${libcomerrdbgdir}/$(USRLIB)
|
||||
rmdir ${libcomerrdir}/usr/lib
|
||||
|
||||
mkdir -p ${libssdbgdir}/$(USRLIB)
|
||||
mv ${libssdir}/usr/lib/debug ${libssdbgdir}/$(USRLIB)
|
||||
rmdir ${libssdir}/usr/lib
|
||||
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
mkdir -p ${libuuiddbgdir}/$(USRLIB)
|
||||
mv ${libuuiddir}/usr/lib/debug ${libuuiddbgdir}/$(USRLIB)
|
||||
rmdir ${libuuiddir}/usr/lib
|
||||
|
||||
mkdir -p ${libblkiddbgdir}/$(USRLIB)
|
||||
mv ${libblkiddir}/usr/lib/debug ${libblkiddbgdir}/$(USRLIB)
|
||||
rmdir ${libblkiddir}/usr/lib
|
||||
endif
|
||||
dh_strip -plibblkid${BLKID_SOVERSION} \
|
||||
--dbg-package=libblkid${BLKID_SOVERSION}-dbg
|
||||
dh_strip -plibuuid${UUID_SOVERSION} --dbg-package=libuuid${UUID_SOVERSION}-dbg
|
||||
endif
|
||||
dh_strip
|
||||
|
||||
# dpkg symbol handling
|
||||
ifneq (,$(findstring update-symbols,$(DEB_BUILD_OPTIONS)))
|
||||
|
|
|
@ -31,12 +31,12 @@ SRCS= debug_cmds.c $(srcdir)/debugfs.c $(srcdir)/util.c $(srcdir)/ls.c \
|
|||
$(srcdir)/filefrag.c $(srcdir)/extent_inode.c $(srcdir)/zap.c
|
||||
|
||||
LIBS= $(LIBEXT2FS) $(LIBE2P) $(LIBSS) $(LIBCOM_ERR) $(LIBBLKID) \
|
||||
$(LIBUUID)
|
||||
$(LIBUUID) $(SYSLIBS)
|
||||
DEPLIBS= $(LIBEXT2FS) $(LIBE2P) $(DEPLIBSS) $(DEPLIBCOM_ERR) \
|
||||
$(DEPLIBBLKID) $(DEPLIBUUID)
|
||||
|
||||
STATIC_LIBS= $(STATIC_LIBEXT2FS) $(STATIC_LIBSS) $(STATIC_LIBCOM_ERR) \
|
||||
$(STATIC_LIBBLKID) $(STATIC_LIBUUID) $(STATIC_LIBE2P)
|
||||
$(STATIC_LIBBLKID) $(STATIC_LIBUUID) $(STATIC_LIBE2P) $(SYSLIBS)
|
||||
STATIC_DEPLIBS= $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBSS) \
|
||||
$(DEPSTATIC_LIBCOM_ERR) $(DEPSTATIC_LIBUUID) \
|
||||
$(DEPSTATIC_LIBE2P)
|
||||
|
|
|
@ -181,7 +181,8 @@ void do_open_filesys(int argc, char **argv)
|
|||
return;
|
||||
break;
|
||||
case 's':
|
||||
err = strtoblk(argv[0], optarg, &superblock);
|
||||
err = strtoblk(argv[0], optarg,
|
||||
"superblock block number", &superblock);
|
||||
if (err)
|
||||
return;
|
||||
break;
|
||||
|
@ -284,7 +285,7 @@ void do_init_filesys(int argc, char **argv)
|
|||
return;
|
||||
|
||||
memset(¶m, 0, sizeof(struct ext2_super_block));
|
||||
err = strtoblk(argv[0], argv[2], &blocks);
|
||||
err = strtoblk(argv[0], argv[2], "blocks count", &blocks);
|
||||
if (err)
|
||||
return;
|
||||
ext2fs_blocks_count_set(¶m, blocks);
|
||||
|
@ -2112,7 +2113,7 @@ void do_bmap(int argc, char *argv[])
|
|||
ino = string_to_inode(argv[1]);
|
||||
if (!ino)
|
||||
return;
|
||||
err = strtoblk(argv[0], argv[2], &blk);
|
||||
err = strtoblk(argv[0], argv[2], "logical block", &blk);
|
||||
if (err)
|
||||
return;
|
||||
|
||||
|
@ -2259,11 +2260,11 @@ void do_punch(int argc, char *argv[])
|
|||
ino = string_to_inode(argv[1]);
|
||||
if (!ino)
|
||||
return;
|
||||
err = strtoblk(argv[0], argv[2], &start);
|
||||
err = strtoblk(argv[0], argv[2], "logical block", &start);
|
||||
if (err)
|
||||
return;
|
||||
if (argc == 4) {
|
||||
err = strtoblk(argv[0], argv[3], &end);
|
||||
err = strtoblk(argv[0], argv[3], "logical block", &end);
|
||||
if (err)
|
||||
return;
|
||||
} else
|
||||
|
@ -2478,7 +2479,9 @@ int main(int argc, char **argv)
|
|||
"block size", 0);
|
||||
break;
|
||||
case 's':
|
||||
retval = strtoblk(argv[0], optarg, &superblock);
|
||||
retval = strtoblk(argv[0], optarg,
|
||||
"superblock block number",
|
||||
&superblock);
|
||||
if (retval)
|
||||
return 1;
|
||||
break;
|
||||
|
|
|
@ -39,7 +39,8 @@ extern unsigned long parse_ulong(const char *str, const char *cmd,
|
|||
const char *descr, int *err);
|
||||
extern unsigned long long parse_ulonglong(const char *str, const char *cmd,
|
||||
const char *descr, int *err);
|
||||
extern int strtoblk(const char *cmd, const char *str, blk64_t *ret);
|
||||
extern int strtoblk(const char *cmd, const char *str, const char *errmsg,
|
||||
blk64_t *ret);
|
||||
extern int common_args_process(int argc, char *argv[], int min_argc,
|
||||
int max_argc, const char *cmd,
|
||||
const char *usage, int flags);
|
||||
|
|
|
@ -264,15 +264,15 @@ void do_replace_node(int argc, char *argv[])
|
|||
return;
|
||||
}
|
||||
|
||||
err = strtoblk(argv[0], argv[1], &extent.e_lblk);
|
||||
err = strtoblk(argv[0], argv[1], "logical block", &extent.e_lblk);
|
||||
if (err)
|
||||
return;
|
||||
|
||||
extent.e_len = parse_ulong(argv[2], argv[0], "logical block", &err);
|
||||
extent.e_len = parse_ulong(argv[2], argv[0], "length", &err);
|
||||
if (err)
|
||||
return;
|
||||
|
||||
err = strtoblk(argv[0], argv[3], &extent.e_pblk);
|
||||
err = strtoblk(argv[0], argv[3], "physical block", &extent.e_pblk);
|
||||
if (err)
|
||||
return;
|
||||
|
||||
|
@ -338,16 +338,15 @@ void do_insert_node(int argc, char *argv[])
|
|||
return;
|
||||
}
|
||||
|
||||
err = strtoblk(cmd, argv[1], &extent.e_lblk);
|
||||
err = strtoblk(cmd, argv[1], "logical block", &extent.e_lblk);
|
||||
if (err)
|
||||
return;
|
||||
|
||||
extent.e_len = parse_ulong(argv[2], cmd,
|
||||
"length", &err);
|
||||
extent.e_len = parse_ulong(argv[2], cmd, "length", &err);
|
||||
if (err)
|
||||
return;
|
||||
|
||||
err = strtoblk(cmd, argv[3], &extent.e_pblk);
|
||||
err = strtoblk(cmd, argv[3], "physical block", &extent.e_pblk);
|
||||
if (err)
|
||||
return;
|
||||
|
||||
|
@ -385,11 +384,11 @@ void do_set_bmap(int argc, char **argv)
|
|||
return;
|
||||
}
|
||||
|
||||
err = strtoblk(cmd, argv[1], &logical);
|
||||
err = strtoblk(cmd, argv[1], "logical block", &logical);
|
||||
if (err)
|
||||
return;
|
||||
|
||||
err = strtoblk(cmd, argv[2], &physical);
|
||||
err = strtoblk(cmd, argv[2], "physical block", &physical);
|
||||
if (err)
|
||||
return;
|
||||
|
||||
|
@ -516,7 +515,7 @@ void do_goto_block(int argc, char **argv)
|
|||
"block [level]", 0))
|
||||
return;
|
||||
|
||||
if (strtoblk(argv[0], argv[1], &blk))
|
||||
if (strtoblk(argv[0], argv[1], NULL, &blk))
|
||||
return;
|
||||
|
||||
if (argc == 3) {
|
||||
|
|
|
@ -86,7 +86,7 @@ void do_icheck(int argc, char **argv)
|
|||
}
|
||||
|
||||
for (i=1; i < argc; i++) {
|
||||
if (strtoblk(argv[0], argv[i], &bw.barray[i-1].blk))
|
||||
if (strtoblk(argv[0], argv[i], NULL, &bw.barray[i-1].blk))
|
||||
goto error_out;
|
||||
}
|
||||
|
||||
|
|
|
@ -273,42 +273,43 @@ print_usage:
|
|||
|
||||
|
||||
static int read_journal_block(const char *cmd, struct journal_source *source,
|
||||
off_t offset, char *buf, int size,
|
||||
unsigned int *got)
|
||||
off_t offset, char *buf, unsigned int size)
|
||||
{
|
||||
int retval;
|
||||
unsigned int got;
|
||||
|
||||
if (source->where == JOURNAL_IS_EXTERNAL) {
|
||||
if (lseek(source->fd, offset, SEEK_SET) < 0) {
|
||||
retval = errno;
|
||||
com_err(cmd, retval, "while seeking in reading journal");
|
||||
return retval;
|
||||
goto seek_err;
|
||||
}
|
||||
retval = read(source->fd, buf, size);
|
||||
if (retval >= 0) {
|
||||
*got = retval;
|
||||
retval = 0;
|
||||
} else
|
||||
if (retval < 0) {
|
||||
retval = errno;
|
||||
goto read_err;
|
||||
}
|
||||
got = retval;
|
||||
retval = 0;
|
||||
} else {
|
||||
retval = ext2fs_file_lseek(source->file, offset,
|
||||
EXT2_SEEK_SET, NULL);
|
||||
if (retval) {
|
||||
seek_err:
|
||||
com_err(cmd, retval, "while seeking in reading journal");
|
||||
return retval;
|
||||
}
|
||||
|
||||
retval = ext2fs_file_read(source->file, buf, size, got);
|
||||
retval = ext2fs_file_read(source->file, buf, size, &got);
|
||||
if (retval) {
|
||||
read_err:
|
||||
com_err(cmd, retval, "while reading journal");
|
||||
return retval;
|
||||
}
|
||||
}
|
||||
|
||||
if (retval)
|
||||
com_err(cmd, retval, "while reading journal");
|
||||
else if (*got != (unsigned int) size) {
|
||||
com_err(cmd, 0, "short read (read %d, expected %d) "
|
||||
"while reading journal", *got, size);
|
||||
if (got != size) {
|
||||
com_err(cmd, 0, "short read (read %u, expected %u) "
|
||||
"while reading journal", got, size);
|
||||
retval = -1;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
@ -338,7 +339,6 @@ static void dump_journal(char *cmdname, FILE *out_file,
|
|||
char buf[8192];
|
||||
journal_superblock_t *jsb;
|
||||
unsigned int blocksize = 1024;
|
||||
unsigned int got;
|
||||
int retval;
|
||||
__u32 magic, sequence, blocktype;
|
||||
journal_header_t *header;
|
||||
|
@ -347,8 +347,7 @@ static void dump_journal(char *cmdname, FILE *out_file,
|
|||
unsigned int blocknr = 0;
|
||||
|
||||
/* First, check to see if there's an ext2 superblock header */
|
||||
retval = read_journal_block(cmdname, source, 0,
|
||||
buf, 2048, &got);
|
||||
retval = read_journal_block(cmdname, source, 0, buf, 2048);
|
||||
if (retval)
|
||||
return;
|
||||
|
||||
|
@ -377,7 +376,7 @@ static void dump_journal(char *cmdname, FILE *out_file,
|
|||
/* Next, read the journal superblock */
|
||||
|
||||
retval = read_journal_block(cmdname, source, blocknr*blocksize,
|
||||
jsb_buffer, 1024, &got);
|
||||
jsb_buffer, 1024);
|
||||
if (retval)
|
||||
return;
|
||||
|
||||
|
@ -401,8 +400,8 @@ static void dump_journal(char *cmdname, FILE *out_file,
|
|||
while (1) {
|
||||
retval = read_journal_block(cmdname, source,
|
||||
blocknr*blocksize, buf,
|
||||
blocksize, &got);
|
||||
if (retval || got != blocksize)
|
||||
blocksize);
|
||||
if (retval)
|
||||
return;
|
||||
|
||||
header = (journal_header_t *) buf;
|
||||
|
@ -576,7 +575,6 @@ static void dump_metadata_block(FILE *out_file, struct journal_source *source,
|
|||
int blocksize,
|
||||
tid_t transaction)
|
||||
{
|
||||
unsigned int got;
|
||||
int retval;
|
||||
char buf[8192];
|
||||
|
||||
|
@ -612,7 +610,7 @@ static void dump_metadata_block(FILE *out_file, struct journal_source *source,
|
|||
|
||||
retval = read_journal_block("logdump", source,
|
||||
blocksize * log_blocknr,
|
||||
buf, blocksize, &got);
|
||||
buf, blocksize);
|
||||
if (retval)
|
||||
return;
|
||||
|
||||
|
|
|
@ -301,17 +301,20 @@ unsigned long long parse_ulonglong(const char *str, const char *cmd,
|
|||
|
||||
/*
|
||||
* This function will convert a string to a block number. It returns
|
||||
* 0 on success, 1 on failure.
|
||||
* 0 on success, 1 on failure. On failure, it outputs either an optionally
|
||||
* specified error message or a default.
|
||||
*/
|
||||
int strtoblk(const char *cmd, const char *str, blk64_t *ret)
|
||||
int strtoblk(const char *cmd, const char *str, const char *errmsg,
|
||||
blk64_t *ret)
|
||||
{
|
||||
blk64_t blk;
|
||||
int err;
|
||||
|
||||
blk = parse_ulonglong(str, cmd, "block number", &err);
|
||||
if (errmsg == NULL)
|
||||
blk = parse_ulonglong(str, cmd, "block number", &err);
|
||||
else
|
||||
blk = parse_ulonglong(str, cmd, errmsg, &err);
|
||||
*ret = blk;
|
||||
if (err)
|
||||
com_err(cmd, 0, "Invalid block number: %s", str);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -369,7 +372,7 @@ int common_block_args_process(int argc, char *argv[],
|
|||
"<block> [count]", CHECK_FS_BITMAPS))
|
||||
return 1;
|
||||
|
||||
if (strtoblk(argv[0], argv[1], block))
|
||||
if (strtoblk(argv[0], argv[1], NULL, block))
|
||||
return 1;
|
||||
if (*block == 0) {
|
||||
com_err(argv[0], 0, "Invalid block number 0");
|
||||
|
@ -377,7 +380,7 @@ int common_block_args_process(int argc, char *argv[],
|
|||
}
|
||||
|
||||
if (argc > 2) {
|
||||
err = strtoblk(argv[0], argv[2], count);
|
||||
err = strtoblk(argv[0], argv[2], "count", count);
|
||||
if (err)
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -16,19 +16,20 @@ MANPAGES= e2fsck.8
|
|||
FMANPAGES= e2fsck.conf.5
|
||||
|
||||
LIBS= $(LIBQUOTA) $(LIBEXT2FS) $(LIBCOM_ERR) $(LIBBLKID) $(LIBUUID) \
|
||||
$(LIBINTL) $(LIBE2P)
|
||||
$(LIBINTL) $(LIBE2P) $(SYSLIBS)
|
||||
DEPLIBS= $(DEPLIBQUOTA) $(LIBEXT2FS) $(DEPLIBCOM_ERR) $(DEPLIBBLKID) \
|
||||
$(DEPLIBUUID) $(DEPLIBE2P)
|
||||
|
||||
STATIC_LIBS= $(STATIC_LIBQUOTA) $(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR) \
|
||||
$(STATIC_LIBBLKID) $(STATIC_LIBUUID) $(LIBINTL) $(STATIC_LIBE2P)
|
||||
$(STATIC_LIBBLKID) $(STATIC_LIBUUID) $(LIBINTL) $(STATIC_LIBE2P) \
|
||||
$(SYSLIBS)
|
||||
STATIC_DEPLIBS= $(DEPSTATIC_LIBQUOTA) $(STATIC_LIBEXT2FS) \
|
||||
$(DEPSTATIC_LIBCOM_ERR) $(DEPSTATIC_LIBBLKID) \
|
||||
$(DEPSTATIC_LIBUUID) $(DEPSTATIC_LIBE2P)
|
||||
|
||||
PROFILED_LIBS= $(PROFILED_LIBQUOTA) $(PROFILED_LIBEXT2FS) \
|
||||
$(PROFILED_LIBCOM_ERR) $(PROFILED_LIBBLKID) $(PROFILED_LIBUUID) \
|
||||
$(PROFILED_LIBE2P) $(LIBINTL)
|
||||
$(PROFILED_LIBE2P) $(LIBINTL) $(SYSLIBS)
|
||||
PROFILED_DEPLIBS= $(DEPPROFILED_LIBQUOTA) $(PROFILED_LIBEXT2FS) \
|
||||
$(DEPPROFILED_LIBCOM_ERR) $(DEPPROFILED_LIBBLKID) \
|
||||
$(DEPPROFILED_LIBUUID) $(DEPPROFILED_LIBE2P)
|
||||
|
@ -142,22 +143,23 @@ tst_problem: $(srcdir)/problem.c $(srcdir)/problem.h $(LIBEXT2FS) \
|
|||
$(DEPLIBCOM_ERR)
|
||||
$(Q) $(CC) $(BUILD_LDFLAGS) $(ALL_CFLAGS) -o tst_problem \
|
||||
$(srcdir)/problem.c -DUNITTEST $(LIBEXT2FS) $(LIBCOM_ERR) \
|
||||
$(LIBINTL)
|
||||
$(LIBINTL) $(SYSLIBS)
|
||||
|
||||
tst_refcount: ea_refcount.c $(DEPLIBCOM_ERR)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_refcount $(srcdir)/ea_refcount.c \
|
||||
$(ALL_CFLAGS) -DTEST_PROGRAM $(LIBCOM_ERR) $(LIBEXT2FS)
|
||||
$(ALL_CFLAGS) -DTEST_PROGRAM $(LIBCOM_ERR) $(LIBEXT2FS) \
|
||||
$(SYSLIBS)
|
||||
|
||||
tst_logfile: $(srcdir)/logfile.c
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_logfile $(srcdir)/logfile.c $(ALL_CFLAGS) \
|
||||
-DTEST_PROGRAM
|
||||
-DTEST_PROGRAM $(SYSLIBS)
|
||||
|
||||
tst_region: region.c $(DEPLIBCOM_ERR)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_region $(srcdir)/region.c \
|
||||
$(ALL_CFLAGS) -DTEST_PROGRAM $(LIBCOM_ERR)
|
||||
$(ALL_CFLAGS) -DTEST_PROGRAM $(LIBCOM_ERR) $(SYSLIBS)
|
||||
|
||||
check:: tst_refcount tst_region tst_problem
|
||||
LD_LIBRARY_PATH=$(LIB) DYLD_LIBRARY_PATH=$(LIB) ./tst_refcount
|
||||
|
|
|
@ -97,9 +97,8 @@ incorrectly set at the time when e2fsck is run.
|
|||
Historically this was usually due to some distributions
|
||||
having buggy init scripts and/or installers that didn't
|
||||
correctly detect this case and take appropriate
|
||||
countermeasures. However, it's still possible, despite the
|
||||
best efforts of init script and installer authors to not be
|
||||
able to detect this misconfiguration, usually due to a
|
||||
countermeasures. Unfortunately, this is occasionally
|
||||
true even today, usually due to a
|
||||
buggy or misconfigured virtualization manager or the
|
||||
installer not having access to a network time server
|
||||
during the installation process. So by default, we allow
|
||||
|
|
|
@ -119,11 +119,13 @@ static struct e2fsck_problem problem_table[] = {
|
|||
|
||||
/* Superblock corrupt */
|
||||
{ PR_0_SB_CORRUPT,
|
||||
N_("\nThe @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"
|
||||
N_("\nThe @S could not be read or does not describe a valid ext2/ext3/ext4\n"
|
||||
"@f. If the @v is valid and it really contains an ext2/ext3/ext4\n"
|
||||
"@f (and not swap or ufs or something else), then the @S\n"
|
||||
"is corrupt, and you might try running e2fsck with an alternate @S:\n"
|
||||
" e2fsck -b %S <@v>\n\n"),
|
||||
" e2fsck -b 8193 <@v>\n"
|
||||
" or\n"
|
||||
" e2fsck -b 32768 <@v>\n\n"),
|
||||
PROMPT_NONE, PR_FATAL },
|
||||
|
||||
/* Filesystem size is wrong */
|
||||
|
|
|
@ -320,6 +320,7 @@ profile_init(const char **files, profile_t *ret_profile)
|
|||
for (fs = files; !PROFILE_LAST_FILESPEC(*fs); fs++) {
|
||||
if (array)
|
||||
free_list(array);
|
||||
array = NULL;
|
||||
retval = get_dirlist(*fs, &array);
|
||||
if (retval == 0) {
|
||||
if (!array)
|
||||
|
|
|
@ -22,14 +22,18 @@ static void move_quota_inode(ext2_filsys fs, ext2_ino_t from_ino,
|
|||
ext2_ino_t to_ino, int qtype)
|
||||
{
|
||||
struct ext2_inode inode;
|
||||
errcode_t retval;
|
||||
char qf_name[QUOTA_NAME_LEN];
|
||||
|
||||
/* We need the inode bitmap to be loaded */
|
||||
if (ext2fs_read_bitmaps(fs))
|
||||
return;
|
||||
|
||||
if (ext2fs_read_inode(fs, from_ino, &inode))
|
||||
retval = ext2fs_read_inode(fs, from_ino, &inode);
|
||||
if (retval) {
|
||||
com_err("ext2fs_read_inode", retval, _("in move_quota_inode"));
|
||||
return;
|
||||
}
|
||||
|
||||
inode.i_links_count = 1;
|
||||
inode.i_mode = LINUX_S_IFREG | 0600;
|
||||
|
@ -38,7 +42,13 @@ static void move_quota_inode(ext2_filsys fs, ext2_ino_t from_ino,
|
|||
EXT3_FEATURE_INCOMPAT_EXTENTS)
|
||||
inode.i_flags |= EXT4_EXTENTS_FL;
|
||||
|
||||
ext2fs_write_new_inode(fs, to_ino, &inode);
|
||||
retval = ext2fs_write_new_inode(fs, to_ino, &inode);
|
||||
if (retval) {
|
||||
com_err("ext2fs_write_new_inode", retval,
|
||||
_("in move_quota_inode"));
|
||||
return;
|
||||
}
|
||||
|
||||
/* unlink the old inode */
|
||||
quota_get_qf_name(qtype, QFMT_VFS_V1, qf_name);
|
||||
ext2fs_unlink(fs, EXT2_ROOT_INO, qf_name, from_ino, 0);
|
||||
|
|
|
@ -59,6 +59,20 @@ mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
|
|||
@ifNotGNUmake@ E = @E@
|
||||
@ifNotGNUmake@ Q = @Q@
|
||||
|
||||
@ifGNUmake@ CHECK=sparse
|
||||
@ifGNUmake@ CHECK_OPTS=-Wsparse-all -Wno-transparent-union -Wno-return-void -Wno-undef -Wno-non-pointer-null
|
||||
@ifGNUmake@ ifeq ("$(C)", "2")
|
||||
@ifGNUmake@ CHECK_CMD=$(CHECK) $(CHECK_OPTS) -Wbitwise -D__CHECK_ENDIAN__
|
||||
@ifGNUmake@ else
|
||||
@ifGNUmake@ ifeq ("$(C)", "1")
|
||||
@ifGNUmake@ CHECK_CMD=$(CHECK) $(CHECK_OPTS)
|
||||
@ifGNUmake@ else
|
||||
@ifGNUmake@ CHECK_CMD=@true
|
||||
@ifGNUmake@ endif
|
||||
@ifGNUmake@ endif
|
||||
|
||||
@ifNotGNUmake@ CHECK_CMD=@true
|
||||
|
||||
l = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||
|
||||
AR = ar
|
||||
|
|
|
@ -1003,7 +1003,7 @@ static int probe_udf(struct blkid_probe *probe,
|
|||
(block sizes larger than 2K will be null padded) */
|
||||
for (bs = 1; bs < 16; bs++) {
|
||||
isosb = (struct iso_volume_descriptor *)
|
||||
get_buffer(probe, bs*2048+32768, sizeof(isosb));
|
||||
get_buffer(probe, bs*2048+32768, sizeof(*isosb));
|
||||
if (!isosb)
|
||||
return 1;
|
||||
if (isosb->vd_id[0])
|
||||
|
@ -1015,7 +1015,7 @@ static int probe_udf(struct blkid_probe *probe,
|
|||
if (j > 1) {
|
||||
isosb = (struct iso_volume_descriptor *)
|
||||
get_buffer(probe, j*bs*2048+32768,
|
||||
sizeof(isosb));
|
||||
sizeof(*isosb));
|
||||
if (!isosb)
|
||||
return 1;
|
||||
}
|
||||
|
@ -1223,7 +1223,7 @@ static int probe_hfsplus(struct blkid_probe *probe,
|
|||
off = (alloc_first_block * 512) +
|
||||
(embed_first_block * alloc_block_size);
|
||||
buf = get_buffer(probe, off + (id->bim_kboff * 1024),
|
||||
sizeof(sbd));
|
||||
sizeof(*sbd));
|
||||
if (!buf)
|
||||
return 1;
|
||||
|
||||
|
@ -1360,7 +1360,7 @@ static int probe_lvm2(struct blkid_probe *probe,
|
|||
return 1;
|
||||
}
|
||||
|
||||
for (i=0, b=1, p=uuid, q= (char *) label->pv_uuid; i <= 32;
|
||||
for (i=0, b=1, p=uuid, q= (char *) label->pv_uuid; i < LVM2_ID_LEN;
|
||||
i++, b <<= 1) {
|
||||
if (b & 0x4444440)
|
||||
*p++ = '-';
|
||||
|
|
|
@ -112,6 +112,9 @@
|
|||
/* Define to 1 if Ext2 ioctls present */
|
||||
#undef HAVE_EXT2_IOCTLS
|
||||
|
||||
/* Define to 1 if you have the `fadvise64' function. */
|
||||
#undef HAVE_FADVISE64
|
||||
|
||||
/* Define to 1 if you have the `fallocate' function. */
|
||||
#undef HAVE_FALLOCATE
|
||||
|
||||
|
@ -130,6 +133,9 @@
|
|||
/* Define to 1 if you have the `ftruncate64' function. */
|
||||
#undef HAVE_FTRUNCATE64
|
||||
|
||||
/* Define to 1 if you have the `futimes' function. */
|
||||
#undef HAVE_FUTIMES
|
||||
|
||||
/* Define to 1 if you have the `fwprintf' function. */
|
||||
#undef HAVE_FWPRINTF
|
||||
|
||||
|
@ -206,6 +212,9 @@
|
|||
/* Define to 1 if you have the <linux/fd.h> header file. */
|
||||
#undef HAVE_LINUX_FD_H
|
||||
|
||||
/* Define to 1 if you have the <linux/loop.h> header file. */
|
||||
#undef HAVE_LINUX_LOOP_H
|
||||
|
||||
/* Define to 1 if you have the <linux/major.h> header file. */
|
||||
#undef HAVE_LINUX_MAJOR_H
|
||||
|
||||
|
@ -290,6 +299,9 @@
|
|||
/* Define to 1 if you have the `posix_fadvise' function. */
|
||||
#undef HAVE_POSIX_FADVISE
|
||||
|
||||
/* Define to 1 if you have the `posix_fadvise64' function. */
|
||||
#undef HAVE_POSIX_FADVISE64
|
||||
|
||||
/* Define to 1 if you have the `posix_memalign' function. */
|
||||
#undef HAVE_POSIX_MEMALIGN
|
||||
|
||||
|
@ -390,6 +402,9 @@
|
|||
/* Define to 1 if you have the `strtoull' function. */
|
||||
#undef HAVE_STRTOULL
|
||||
|
||||
/* Define to 1 if `st_atim' is a member of `struct stat'. */
|
||||
#undef HAVE_STRUCT_STAT_ST_ATIM
|
||||
|
||||
/* Define to 1 if you have the `sync_file_range' function. */
|
||||
#undef HAVE_SYNC_FILE_RANGE
|
||||
|
||||
|
|
|
@ -227,72 +227,72 @@ ext2fs.pc: $(srcdir)/ext2fs.pc.in $(top_builddir)/config.status
|
|||
tst_badblocks: tst_badblocks.o $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBCOM_ERR)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_badblocks tst_badblocks.o $(STATIC_LIBEXT2FS) \
|
||||
$(STATIC_LIBCOM_ERR)
|
||||
$(STATIC_LIBCOM_ERR) $(SYSLIBS)
|
||||
|
||||
tst_icount: $(srcdir)/icount.c $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBCOM_ERR)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_icount $(srcdir)/icount.c -DDEBUG $(ALL_CFLAGS) \
|
||||
$(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR)
|
||||
$(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR) $(SYSLIBS)
|
||||
|
||||
tst_iscan: tst_iscan.o $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBCOM_ERR)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_iscan tst_iscan.o $(STATIC_LIBEXT2FS) \
|
||||
$(STATIC_LIBCOM_ERR)
|
||||
$(STATIC_LIBCOM_ERR) $(SYSLIBS)
|
||||
|
||||
tst_getsize: tst_getsize.o $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBCOM_ERR)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_getsize tst_getsize.o $(STATIC_LIBEXT2FS) \
|
||||
$(STATIC_LIBCOM_ERR)
|
||||
$(STATIC_LIBCOM_ERR) $(SYSLIBS)
|
||||
|
||||
tst_ismounted: $(srcdir)/ismounted.c $(STATIC_LIBEXT2FS) \
|
||||
$(DEPSTATIC_LIBCOM_ERR)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_ismounted $(srcdir)/ismounted.c \
|
||||
$(STATIC_LIBEXT2FS) -DDEBUG $(ALL_CFLAGS) \
|
||||
$(STATIC_LIBCOM_ERR)
|
||||
$(STATIC_LIBCOM_ERR) $(SYSLIBS)
|
||||
|
||||
tst_byteswap: tst_byteswap.o $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBCOM_ERR)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_byteswap tst_byteswap.o $(STATIC_LIBEXT2FS) \
|
||||
$(STATIC_LIBCOM_ERR)
|
||||
$(STATIC_LIBCOM_ERR) $(SYSLIBS)
|
||||
|
||||
tst_bitops: tst_bitops.o $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBCOM_ERR)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_bitops tst_bitops.o $(ALL_CFLAGS) \
|
||||
$(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR)
|
||||
$(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR) $(SYSLIBS)
|
||||
|
||||
tst_getsectsize: tst_getsectsize.o $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBCOM_ERR)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_sectgetsize tst_getsectsize.o \
|
||||
$(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR)
|
||||
$(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR) $(SYSLIBS)
|
||||
|
||||
tst_types.o: $(srcdir)/tst_types.c ext2_types.h
|
||||
|
||||
tst_types: tst_types.o ext2_types.h
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_types tst_types.o
|
||||
$(Q) $(CC) -o tst_types tst_types.o $(SYSLIBS)
|
||||
|
||||
tst_super_size.o: $(srcdir)/tst_super_size.c $(srcdir)/ext2_fs.h
|
||||
|
||||
tst_super_size: tst_super_size.o
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_super_size tst_super_size.o
|
||||
$(Q) $(CC) -o tst_super_size tst_super_size.o $(SYSLIBS)
|
||||
|
||||
tst_fs_struct.o: $(srcdir)/tst_fs_struct.c $(srcdir)/ext2fs.h
|
||||
|
||||
tst_fs_struct: tst_fs_struct.o
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_fs_struct tst_fs_struct.o
|
||||
$(Q) $(CC) -o tst_fs_struct tst_fs_struct.o $(SYSLIBS)
|
||||
|
||||
tst_inode_size.o: $(srcdir)/tst_inode_size.c $(srcdir)/ext2_fs.h
|
||||
|
||||
tst_inode_size: tst_inode_size.o
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_inode_size tst_inode_size.o
|
||||
$(Q) $(CC) -o tst_inode_size tst_inode_size.o $(SYSLIBS)
|
||||
|
||||
ext2_tdbtool: tdbtool.o
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o ext2_tdbtool tdbtool.o tdb.o
|
||||
$(Q) $(CC) -o ext2_tdbtool tdbtool.o tdb.o $(SYSLIBS)
|
||||
|
||||
extent_dbg.c: $(srcdir)/extent_dbg.ct
|
||||
$(E) " MK_CMDS $<"
|
||||
|
@ -378,7 +378,8 @@ tst_bitmaps: tst_bitmaps.o tst_bitmaps_cmd.o $(STATIC_LIBEXT2FS) \
|
|||
$(DEPSTATIC_LIBSS) $(DEPSTATIC_LIBCOM_ERR)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o $@ tst_bitmaps.o tst_bitmaps_cmd.o $(ALL_CFLAGS) \
|
||||
$(STATIC_LIBEXT2FS) $(STATIC_LIBSS) $(STATIC_LIBCOM_ERR)
|
||||
$(STATIC_LIBEXT2FS) $(STATIC_LIBSS) $(STATIC_LIBCOM_ERR) \
|
||||
$(SYSLIBS)
|
||||
|
||||
tst_extents: $(srcdir)/extent.c $(DEBUG_OBJS) $(DEPSTATIC_LIBSS) \
|
||||
$(STATIC_LIBE2P) $(DEPLIBUUID) $(DEPLIBBLKID) $(DEPSTATIC_LIBCOM_ERR)
|
||||
|
@ -386,27 +387,29 @@ tst_extents: $(srcdir)/extent.c $(DEBUG_OBJS) $(DEPSTATIC_LIBSS) \
|
|||
$(Q) $(CC) -o tst_extents $(srcdir)/extent.c \
|
||||
$(ALL_CFLAGS) -DDEBUG $(DEBUG_OBJS) $(STATIC_LIBSS) \
|
||||
$(STATIC_LIBE2P) $(STATIC_LIBEXT2FS) $(LIBBLKID) $(LIBUUID) \
|
||||
$(STATIC_LIBCOM_ERR) -I $(top_srcdir)/debugfs
|
||||
$(STATIC_LIBCOM_ERR) $(SYSLIBS) -I $(top_srcdir)/debugfs
|
||||
|
||||
tst_inline: $(srcdir)/inline.c $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBCOM_ERR)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_inline $(srcdir)/inline.c $(ALL_CFLAGS) -DDEBUG \
|
||||
$(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR)
|
||||
$(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR) $(SYSLIBS)
|
||||
|
||||
tst_csum: csum.c $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBCOM_ERR) $(STATIC_LIBE2P) \
|
||||
$(top_srcdir)/lib/e2p/e2p.h
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o tst_csum $(srcdir)/csum.c -DDEBUG \
|
||||
$(ALL_CFLAGS) $(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR) \
|
||||
$(STATIC_LIBE2P)
|
||||
$(STATIC_LIBE2P) $(SYSLIBS)
|
||||
|
||||
tst_crc32c: $(srcdir)/crc32c.c $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBCOM_ERR)
|
||||
$(Q) $(CC) $(BUILD_LDFLAGS) $(ALL_CFLAGS) -o tst_crc32c $(srcdir)/crc32c.c \
|
||||
-DUNITTEST $(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR)
|
||||
-DUNITTEST $(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR) \
|
||||
$(SYSLIBS)
|
||||
|
||||
mkjournal: mkjournal.c $(STATIC_LIBEXT2FS) $(DEPLIBCOM_ERR)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o mkjournal $(srcdir)/mkjournal.c -DDEBUG $(STATIC_LIBEXT2FS) $(LIBCOM_ERR) $(ALL_CFLAGS)
|
||||
$(Q) $(CC) -o mkjournal $(srcdir)/mkjournal.c -DDEBUG \
|
||||
$(STATIC_LIBEXT2FS) $(LIBCOM_ERR) $(ALL_CFLAGS) $(SYSLIBS)
|
||||
|
||||
check:: tst_bitops tst_badblocks tst_iscan tst_types tst_icount \
|
||||
tst_super_size tst_types tst_inode_size tst_csum tst_crc32c tst_bitmaps \
|
||||
|
|
|
@ -235,8 +235,10 @@ int qcow2_write_raw_image(int qcow2_fd, int raw_fd,
|
|||
}
|
||||
|
||||
/* Resize the output image to the filesystem size */
|
||||
if (ext2fs_llseek(raw_fd, img.image_size - 1, SEEK_SET) < 0)
|
||||
return errno;
|
||||
if (ext2fs_llseek(raw_fd, img.image_size - 1, SEEK_SET) < 0) {
|
||||
ret = errno;
|
||||
goto out;
|
||||
}
|
||||
|
||||
((char *)copy_buf)[0] = 0;
|
||||
size = write(raw_fd, copy_buf, 1);
|
||||
|
|
|
@ -931,10 +931,10 @@ static errcode_t unix_discard(io_channel channel, unsigned long long block,
|
|||
|
||||
if (channel->flags & CHANNEL_FLAGS_BLOCK_DEVICE) {
|
||||
#ifdef BLKDISCARD
|
||||
__uint64_t range[2];
|
||||
__u64 range[2];
|
||||
|
||||
range[0] = (__uint64_t)(block) * channel->block_size;
|
||||
range[1] = (__uint64_t)(count) * channel->block_size;
|
||||
range[0] = (__u64)(block) * channel->block_size;
|
||||
range[1] = (__u64)(count) * channel->block_size;
|
||||
|
||||
ret = ioctl(data->dev, BLKDISCARD, &range);
|
||||
#else
|
||||
|
|
|
@ -7,6 +7,13 @@
|
|||
#ifndef __QUOTA_COMMON_H__
|
||||
#define __QUOTA_COMMON_H__
|
||||
|
||||
#if EXT2_FLAT_INCLUDES
|
||||
#include "e2_types.h"
|
||||
#else
|
||||
#include <ext2fs/ext2_types.h>
|
||||
#endif /* EXT2_FLAT_INCLUDES */
|
||||
|
||||
|
||||
#ifndef __attribute__
|
||||
# if !defined __GNUC__ || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
|
||||
# define __attribute__(x)
|
||||
|
|
|
@ -30,8 +30,8 @@ static const char * const basenames[] = {
|
|||
|
||||
/* Header in all newer quotafiles */
|
||||
struct disk_dqheader {
|
||||
u_int32_t dqh_magic;
|
||||
u_int32_t dqh_version;
|
||||
__u32 dqh_magic;
|
||||
__u32 dqh_version;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/**
|
||||
|
|
|
@ -59,7 +59,7 @@ static inline void mark_quotafile_info_dirty(struct quota_handle *h)
|
|||
}
|
||||
|
||||
/* Read given block */
|
||||
static void read_blk(struct quota_handle *h, uint blk, dqbuf_t buf)
|
||||
static void read_blk(struct quota_handle *h, unsigned int blk, dqbuf_t buf)
|
||||
{
|
||||
int err;
|
||||
|
||||
|
@ -72,7 +72,7 @@ static void read_blk(struct quota_handle *h, uint blk, dqbuf_t buf)
|
|||
}
|
||||
|
||||
/* Write block */
|
||||
static int write_blk(struct quota_handle *h, uint blk, dqbuf_t buf)
|
||||
static int write_blk(struct quota_handle *h, unsigned int blk, dqbuf_t buf)
|
||||
{
|
||||
int err;
|
||||
|
||||
|
@ -117,7 +117,8 @@ static int get_free_dqblk(struct quota_handle *h)
|
|||
}
|
||||
|
||||
/* Put given block to free list */
|
||||
static void put_free_dqblk(struct quota_handle *h, dqbuf_t buf, uint blk)
|
||||
static void put_free_dqblk(struct quota_handle *h, dqbuf_t buf,
|
||||
unsigned int blk)
|
||||
{
|
||||
struct qt_disk_dqdbheader *dh = (struct qt_disk_dqdbheader *)buf;
|
||||
struct qtree_mem_dqinfo *info = &h->qh_info.u.v2_mdqi.dqi_qtree;
|
||||
|
@ -131,11 +132,12 @@ static void put_free_dqblk(struct quota_handle *h, dqbuf_t buf, uint blk)
|
|||
}
|
||||
|
||||
/* Remove given block from the list of blocks with free entries */
|
||||
static void remove_free_dqentry(struct quota_handle *h, dqbuf_t buf, uint blk)
|
||||
static void remove_free_dqentry(struct quota_handle *h, dqbuf_t buf,
|
||||
unsigned int blk)
|
||||
{
|
||||
dqbuf_t tmpbuf = getdqbuf();
|
||||
struct qt_disk_dqdbheader *dh = (struct qt_disk_dqdbheader *)buf;
|
||||
uint nextblk = ext2fs_le32_to_cpu(dh->dqdh_next_free), prevblk =
|
||||
unsigned int nextblk = ext2fs_le32_to_cpu(dh->dqdh_next_free), prevblk =
|
||||
|
||||
ext2fs_le32_to_cpu(dh->dqdh_prev_free);
|
||||
|
||||
|
@ -164,7 +166,8 @@ static void remove_free_dqentry(struct quota_handle *h, dqbuf_t buf, uint blk)
|
|||
}
|
||||
|
||||
/* Insert given block to the beginning of list with free entries */
|
||||
static void insert_free_dqentry(struct quota_handle *h, dqbuf_t buf, uint blk)
|
||||
static void insert_free_dqentry(struct quota_handle *h, dqbuf_t buf,
|
||||
unsigned int blk)
|
||||
{
|
||||
dqbuf_t tmpbuf = getdqbuf();
|
||||
struct qt_disk_dqdbheader *dh = (struct qt_disk_dqdbheader *)buf;
|
||||
|
@ -188,8 +191,8 @@ static void insert_free_dqentry(struct quota_handle *h, dqbuf_t buf, uint blk)
|
|||
}
|
||||
|
||||
/* Find space for dquot */
|
||||
static uint find_free_dqentry(struct quota_handle *h, struct dquot *dquot,
|
||||
int *err)
|
||||
static unsigned int find_free_dqentry(struct quota_handle *h,
|
||||
struct dquot *dquot, int *err)
|
||||
{
|
||||
int blk, i;
|
||||
struct qt_disk_dqdbheader *dh;
|
||||
|
@ -247,12 +250,12 @@ static uint find_free_dqentry(struct quota_handle *h, struct dquot *dquot,
|
|||
|
||||
/* Insert reference to structure into the trie */
|
||||
static int do_insert_tree(struct quota_handle *h, struct dquot *dquot,
|
||||
uint * treeblk, int depth)
|
||||
unsigned int * treeblk, int depth)
|
||||
{
|
||||
dqbuf_t buf;
|
||||
int newson = 0, newact = 0;
|
||||
u_int32_t *ref;
|
||||
uint newblk;
|
||||
__u32 *ref;
|
||||
unsigned int newblk;
|
||||
int ret = 0;
|
||||
|
||||
log_debug("inserting in tree: treeblk=%u, depth=%d", *treeblk, depth);
|
||||
|
@ -271,7 +274,7 @@ static int do_insert_tree(struct quota_handle *h, struct dquot *dquot,
|
|||
read_blk(h, *treeblk, buf);
|
||||
}
|
||||
|
||||
ref = (u_int32_t *) buf;
|
||||
ref = (__u32 *) buf;
|
||||
newblk = ext2fs_le32_to_cpu(ref[get_index(dquot->dq_id, depth)]);
|
||||
if (!newblk)
|
||||
newson = 1;
|
||||
|
@ -301,11 +304,11 @@ out_buf:
|
|||
/* Wrapper for inserting quota structure into tree */
|
||||
static void dq_insert_tree(struct quota_handle *h, struct dquot *dquot)
|
||||
{
|
||||
uint tmp = QT_TREEOFF;
|
||||
unsigned int tmp = QT_TREEOFF;
|
||||
|
||||
if (do_insert_tree(h, dquot, &tmp, 0) < 0)
|
||||
log_err("Cannot write quota (id %u): %s",
|
||||
(uint) dquot->dq_id, strerror(errno));
|
||||
(unsigned int) dquot->dq_id, strerror(errno));
|
||||
}
|
||||
|
||||
/* Write dquot to file */
|
||||
|
@ -323,7 +326,7 @@ void qtree_write_dquot(struct dquot *dquot)
|
|||
if (ret) {
|
||||
errno = ENOMEM;
|
||||
log_err("Quota write failed (id %u): %s",
|
||||
(uint)dquot->dq_id, strerror(errno));
|
||||
(unsigned int)dquot->dq_id, strerror(errno));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -340,13 +343,14 @@ void qtree_write_dquot(struct dquot *dquot)
|
|||
if (ret > 0)
|
||||
errno = ENOSPC;
|
||||
log_err("Quota write failed (id %u): %s",
|
||||
(uint)dquot->dq_id, strerror(errno));
|
||||
(unsigned int)dquot->dq_id, strerror(errno));
|
||||
}
|
||||
ext2fs_free_mem(&ddquot);
|
||||
}
|
||||
|
||||
/* Free dquot entry in data block */
|
||||
static void free_dqentry(struct quota_handle *h, struct dquot *dquot, uint blk)
|
||||
static void free_dqentry(struct quota_handle *h, struct dquot *dquot,
|
||||
unsigned int blk)
|
||||
{
|
||||
struct qt_disk_dqdbheader *dh;
|
||||
struct qtree_mem_dqinfo *info = &h->qh_info.u.v2_mdqi.dqi_qtree;
|
||||
|
@ -358,7 +362,7 @@ static void free_dqentry(struct quota_handle *h, struct dquot *dquot, uint blk)
|
|||
if (dquot->dq_dqb.u.v2_mdqb.dqb_off >> QT_BLKSIZE_BITS != blk)
|
||||
log_err("Quota structure has offset to other block (%u) "
|
||||
"than it should (%u).", blk,
|
||||
(uint) (dquot->dq_dqb.u.v2_mdqb.dqb_off >>
|
||||
(unsigned int) (dquot->dq_dqb.u.v2_mdqb.dqb_off >>
|
||||
QT_BLKSIZE_BITS));
|
||||
|
||||
read_blk(h, blk, buf);
|
||||
|
@ -388,11 +392,11 @@ static void free_dqentry(struct quota_handle *h, struct dquot *dquot, uint blk)
|
|||
|
||||
/* Remove reference to dquot from tree */
|
||||
static void remove_tree(struct quota_handle *h, struct dquot *dquot,
|
||||
uint * blk, int depth)
|
||||
unsigned int * blk, int depth)
|
||||
{
|
||||
dqbuf_t buf = getdqbuf();
|
||||
uint newblk;
|
||||
u_int32_t *ref = (u_int32_t *) buf;
|
||||
unsigned int newblk;
|
||||
__u32 *ref = (__u32 *) buf;
|
||||
|
||||
if (!buf)
|
||||
return;
|
||||
|
@ -428,7 +432,7 @@ static void remove_tree(struct quota_handle *h, struct dquot *dquot,
|
|||
/* Delete dquot from tree */
|
||||
void qtree_delete_dquot(struct dquot *dquot)
|
||||
{
|
||||
uint tmp = QT_TREEOFF;
|
||||
unsigned int tmp = QT_TREEOFF;
|
||||
|
||||
if (!dquot->dq_dqb.u.v2_mdqb.dqb_off) /* Even not allocated? */
|
||||
return;
|
||||
|
@ -437,7 +441,7 @@ void qtree_delete_dquot(struct dquot *dquot)
|
|||
|
||||
/* Find entry in block */
|
||||
static ext2_loff_t find_block_dqentry(struct quota_handle *h,
|
||||
struct dquot *dquot, uint blk)
|
||||
struct dquot *dquot, unsigned int blk)
|
||||
{
|
||||
struct qtree_mem_dqinfo *info = &h->qh_info.u.v2_mdqi.dqi_qtree;
|
||||
dqbuf_t buf = getdqbuf();
|
||||
|
@ -464,11 +468,11 @@ static ext2_loff_t find_block_dqentry(struct quota_handle *h,
|
|||
/* Find entry for given id in the tree */
|
||||
static ext2_loff_t find_tree_dqentry(struct quota_handle *h,
|
||||
struct dquot *dquot,
|
||||
uint blk, int depth)
|
||||
unsigned int blk, int depth)
|
||||
{
|
||||
dqbuf_t buf = getdqbuf();
|
||||
ext2_loff_t ret = 0;
|
||||
u_int32_t *ref = (u_int32_t *) buf;
|
||||
__u32 *ref = (__u32 *) buf;
|
||||
|
||||
if (!buf)
|
||||
return -ENOMEM;
|
||||
|
@ -540,7 +544,7 @@ struct dquot *qtree_read_dquot(struct quota_handle *h, qid_t id)
|
|||
#define set_bit(bmp, ind) ((bmp)[(ind) >> 3] |= (1 << ((ind) & 7)))
|
||||
#define get_bit(bmp, ind) ((bmp)[(ind) >> 3] & (1 << ((ind) & 7)))
|
||||
|
||||
static int report_block(struct dquot *dquot, uint blk, char *bitmap,
|
||||
static int report_block(struct dquot *dquot, unsigned int blk, char *bitmap,
|
||||
int (*process_dquot) (struct dquot *, void *),
|
||||
void *data)
|
||||
{
|
||||
|
@ -574,7 +578,7 @@ static int report_block(struct dquot *dquot, uint blk, char *bitmap,
|
|||
return entries;
|
||||
}
|
||||
|
||||
static void check_reference(struct quota_handle *h, uint blk)
|
||||
static void check_reference(struct quota_handle *h, unsigned int blk)
|
||||
{
|
||||
if (blk >= h->qh_info.u.v2_mdqi.dqi_qtree.dqi_blocks)
|
||||
log_err("Illegal reference (%u >= %u) in %s quota file. "
|
||||
|
@ -585,13 +589,14 @@ static void check_reference(struct quota_handle *h, uint blk)
|
|||
type2name(h->qh_type));
|
||||
}
|
||||
|
||||
static int report_tree(struct dquot *dquot, uint blk, int depth, char *bitmap,
|
||||
static int report_tree(struct dquot *dquot, unsigned int blk, int depth,
|
||||
char *bitmap,
|
||||
int (*process_dquot) (struct dquot *, void *),
|
||||
void *data)
|
||||
{
|
||||
int entries = 0, i;
|
||||
dqbuf_t buf = getdqbuf();
|
||||
u_int32_t *ref = (u_int32_t *) buf;
|
||||
__u32 *ref = (__u32 *) buf;
|
||||
|
||||
if (!buf)
|
||||
return 0;
|
||||
|
@ -620,9 +625,9 @@ static int report_tree(struct dquot *dquot, uint blk, int depth, char *bitmap,
|
|||
return entries;
|
||||
}
|
||||
|
||||
static uint find_set_bits(char *bmp, int blocks)
|
||||
static unsigned int find_set_bits(char *bmp, int blocks)
|
||||
{
|
||||
uint i, used = 0;
|
||||
unsigned int i, used = 0;
|
||||
|
||||
for (i = 0; i < blocks; i++)
|
||||
if (get_bit(bmp, i))
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
#include <sys/types.h>
|
||||
|
||||
typedef u_int32_t qid_t; /* Type in which we store ids in memory */
|
||||
typedef __u32 qid_t; /* Type in which we store ids in memory */
|
||||
|
||||
#define QT_TREEOFF 1 /* Offset of tree in file in blocks */
|
||||
#define QT_TREEDEPTH 4 /* Depth of quota tree */
|
||||
|
@ -20,13 +20,13 @@ typedef u_int32_t qid_t; /* Type in which we store ids in memory */
|
|||
* so there will be space for exactly 21 quota-entries in a block
|
||||
*/
|
||||
struct qt_disk_dqdbheader {
|
||||
u_int32_t dqdh_next_free; /* Number of next block with free
|
||||
__u32 dqdh_next_free; /* Number of next block with free
|
||||
* entry */
|
||||
u_int32_t dqdh_prev_free; /* Number of previous block with free
|
||||
__u32 dqdh_prev_free; /* Number of previous block with free
|
||||
* entry */
|
||||
u_int16_t dqdh_entries; /* Number of valid entries in block */
|
||||
u_int16_t dqdh_pad1;
|
||||
u_int32_t dqdh_pad2;
|
||||
__u16 dqdh_entries; /* Number of valid entries in block */
|
||||
__u16 dqdh_pad1;
|
||||
__u32 dqdh_pad2;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct dquot;
|
||||
|
|
|
@ -16,8 +16,8 @@
|
|||
#define V2_VERSION 1
|
||||
|
||||
struct v2_disk_dqheader {
|
||||
u_int32_t dqh_magic; /* Magic number identifying file */
|
||||
u_int32_t dqh_version; /* File version */
|
||||
__u32 dqh_magic; /* Magic number identifying file */
|
||||
__u32 dqh_version; /* File version */
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Flags for version specific files */
|
||||
|
@ -25,30 +25,30 @@ struct v2_disk_dqheader {
|
|||
|
||||
/* Header with type and version specific information */
|
||||
struct v2_disk_dqinfo {
|
||||
u_int32_t dqi_bgrace; /* Time before block soft limit becomes
|
||||
__u32 dqi_bgrace; /* Time before block soft limit becomes
|
||||
* hard limit */
|
||||
u_int32_t dqi_igrace; /* Time before inode soft limit becomes
|
||||
__u32 dqi_igrace; /* Time before inode soft limit becomes
|
||||
* hard limit */
|
||||
u_int32_t dqi_flags; /* Flags for quotafile (DQF_*) */
|
||||
u_int32_t dqi_blocks; /* Number of blocks in file */
|
||||
u_int32_t dqi_free_blk; /* Number of first free block in the list */
|
||||
u_int32_t dqi_free_entry; /* Number of block with at least one
|
||||
__u32 dqi_flags; /* Flags for quotafile (DQF_*) */
|
||||
__u32 dqi_blocks; /* Number of blocks in file */
|
||||
__u32 dqi_free_blk; /* Number of first free block in the list */
|
||||
__u32 dqi_free_entry; /* Number of block with at least one
|
||||
* free entry */
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct v2r1_disk_dqblk {
|
||||
u_int32_t dqb_id; /* id this quota applies to */
|
||||
u_int32_t dqb_pad;
|
||||
u_int64_t dqb_ihardlimit; /* absolute limit on allocated inodes */
|
||||
u_int64_t dqb_isoftlimit; /* preferred inode limit */
|
||||
u_int64_t dqb_curinodes; /* current # allocated inodes */
|
||||
u_int64_t dqb_bhardlimit; /* absolute limit on disk space
|
||||
__u32 dqb_id; /* id this quota applies to */
|
||||
__u32 dqb_pad;
|
||||
__u64 dqb_ihardlimit; /* absolute limit on allocated inodes */
|
||||
__u64 dqb_isoftlimit; /* preferred inode limit */
|
||||
__u64 dqb_curinodes; /* current # allocated inodes */
|
||||
__u64 dqb_bhardlimit; /* absolute limit on disk space
|
||||
* (in QUOTABLOCK_SIZE) */
|
||||
u_int64_t dqb_bsoftlimit; /* preferred limit on disk space
|
||||
__u64 dqb_bsoftlimit; /* preferred limit on disk space
|
||||
* (in QUOTABLOCK_SIZE) */
|
||||
u_int64_t dqb_curspace; /* current space occupied (in bytes) */
|
||||
u_int64_t dqb_btime; /* time limit for excessive disk use */
|
||||
u_int64_t dqb_itime; /* time limit for excessive inode use */
|
||||
__u64 dqb_curspace; /* current space occupied (in bytes) */
|
||||
__u64 dqb_btime; /* time limit for excessive disk use */
|
||||
__u64 dqb_itime; /* time limit for excessive inode use */
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#endif
|
||||
|
|
|
@ -162,7 +162,7 @@ uninstall::
|
|||
test_ss: test_ss.o test_cmd.o $(DEPLIBSS) $(DEPLIBCOM_ERR)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) -o $@ test_ss.o test_cmd.o $(ALL_CFLAGS) \
|
||||
$(LIBSS) $(LIBCOM_ERR)
|
||||
$(LIBSS) $(LIBCOM_ERR) $(SYSLIBS)
|
||||
|
||||
check:: all test_ss
|
||||
$(E) " RUN TEST test_ss"
|
||||
|
|
|
@ -28,7 +28,7 @@ int ss_create_invocation(const char *subsystem_name, const char *version_string,
|
|||
{
|
||||
register int sci_idx;
|
||||
register ss_data *new_table;
|
||||
register ss_data **table;
|
||||
register ss_data **table, **rt;
|
||||
|
||||
*code_ptr = 0;
|
||||
table = _ss_table;
|
||||
|
@ -42,10 +42,10 @@ int ss_create_invocation(const char *subsystem_name, const char *version_string,
|
|||
|
||||
for (sci_idx = 1; table[sci_idx] != (ss_data *)NULL; sci_idx++)
|
||||
;
|
||||
table = (ss_data **) realloc((char *)table,
|
||||
((unsigned)sci_idx+2)*size);
|
||||
if (table == NULL) {
|
||||
*code_ptr = errno;
|
||||
rt = (ss_data **) realloc((char *)table, ((unsigned)sci_idx+2)*size);
|
||||
if (rt == NULL) {
|
||||
*code_ptr = ENOMEM;
|
||||
free(table);
|
||||
return 0;
|
||||
}
|
||||
table[sci_idx+1] = (ss_data *) NULL;
|
||||
|
|
|
@ -84,12 +84,12 @@ SRCS= $(srcdir)/tune2fs.c $(srcdir)/mklost+found.c $(srcdir)/mke2fs.c \
|
|||
$(srcdir)/ismounted.c $(srcdir)/../e2fsck/profile.c \
|
||||
$(srcdir)/e2undo.c $(srcdir)/e2freefrag.c
|
||||
|
||||
LIBS= $(LIBEXT2FS) $(LIBCOM_ERR)
|
||||
LIBS= $(LIBEXT2FS) $(LIBCOM_ERR)
|
||||
DEPLIBS= $(LIBEXT2FS) $(DEPLIBCOM_ERR)
|
||||
PROFILED_LIBS= $(PROFILED_LIBEXT2FS) $(PROFILED_LIBCOM_ERR)
|
||||
PROFILED_DEPLIBS= $(PROFILED_LIBEXT2FS) $(DEPPROFILED_LIBCOM_ERR)
|
||||
|
||||
STATIC_LIBS= $(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR)
|
||||
STATIC_LIBS= $(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR)
|
||||
STATIC_DEPLIBS= $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBCOM_ERR)
|
||||
|
||||
LIBS_E2P= $(LIBE2P) $(LIBCOM_ERR)
|
||||
|
@ -142,7 +142,7 @@ profile.o:
|
|||
|
||||
findsuper: findsuper.o
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o findsuper findsuper.o $(LIBS)
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o findsuper findsuper.o $(LIBS) $(SYSLIBS)
|
||||
|
||||
partinfo: partinfo.o
|
||||
$(E) " LD $@"
|
||||
|
@ -151,20 +151,20 @@ partinfo: partinfo.o
|
|||
e2initrd_helper: e2initrd_helper.o $(DEPLIBS) $(DEPLIBBLKID) $(LIBEXT2FS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o e2initrd_helper e2initrd_helper.o $(LIBS) \
|
||||
$(LIBBLKID) $(LIBEXT2FS) $(LIBINTL)
|
||||
$(LIBBLKID) $(LIBEXT2FS) $(LIBINTL) $(SYSLIBS)
|
||||
|
||||
tune2fs: $(TUNE2FS_OBJS) $(DEPLIBS) $(DEPLIBS_E2P) $(DEPLIBBLKID) \
|
||||
$(DEPLIBUUID) $(DEPLIBQUOTA) $(LIBEXT2FS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o tune2fs $(TUNE2FS_OBJS) $(LIBS) \
|
||||
$(LIBBLKID) $(LIBUUID) $(LIBQUOTA) $(LIBEXT2FS) $(LIBS_E2P) \
|
||||
$(LIBINTL)
|
||||
$(LIBINTL) $(SYSLIBS)
|
||||
|
||||
tune2fs.static: $(TUNE2FS_OBJS) $(STATIC_DEPLIBS) $(STATIC_LIBE2P) $(DEPSTATIC_LIBBLKID)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(LDFLAGS_STATIC) -o tune2fs.static $(TUNE2FS_OBJS) \
|
||||
$(STATIC_LIBS) $(STATIC_LIBBLKID) $(STATIC_LIBUUID) \
|
||||
$(STATIC_LIBQUOTA) $(STATIC_LIBE2P) $(LIBINTL)
|
||||
$(STATIC_LIBQUOTA) $(STATIC_LIBE2P) $(LIBINTL) $(SYSLIBS)
|
||||
|
||||
tune2fs.profiled: $(TUNE2FS_OBJS) $(PROFILED_DEPLIBS) \
|
||||
$(PROFILED_E2P) $(DEPPROFILED_LIBBLKID) $(DEPPROFILED_LIBUUID) \
|
||||
|
@ -173,55 +173,58 @@ tune2fs.profiled: $(TUNE2FS_OBJS) $(PROFILED_DEPLIBS) \
|
|||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o tune2fs.profiled \
|
||||
$(PROFILED_TUNE2FS_OBJS) $(PROFILED_LIBBLKID) \
|
||||
$(PROFILED_LIBUUID) $(PROFILED_LIBQUOTA) $(PROFILED_LIBE2P) \
|
||||
$(LIBINTL) $(PROFILED_LIBS)
|
||||
$(LIBINTL) $(PROFILED_LIBS) $(SYSLIBS)
|
||||
|
||||
blkid: $(BLKID_OBJS) $(DEPLIBBLKID) $(LIBEXT2FS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o blkid $(BLKID_OBJS) $(LIBBLKID) $(LIBINTL) \
|
||||
$(LIBEXT2FS)
|
||||
$(LIBEXT2FS) $(SYSLIBS)
|
||||
|
||||
blkid.static: $(BLKID_OBJS) $(STATIC_DEPLIBS) $(DEPSTATIC_LIBBLKID)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o blkid.static $(BLKID_OBJS) $(STATIC_LIBS) \
|
||||
$(STATIC_LIBBLKID) $(LIBINTL)
|
||||
$(STATIC_LIBBLKID) $(LIBINTL) $(SYSLIBS)
|
||||
|
||||
blkid.profiled: $(BLKID_OBJS) $(DEPPROFILED_LIBBLKID) \
|
||||
$(PROFILED_LIBEXT2FS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o blkid.profiled $(PROFILED_BLKID_OBJS) \
|
||||
$(PROFILED_LIBBLKID) $(LIBINTL) $(PROFILED_LIBEXT2FS)
|
||||
$(PROFILED_LIBBLKID) $(LIBINTL) $(PROFILED_LIBEXT2FS) $(SYSLIBS)
|
||||
|
||||
e2image: $(E2IMAGE_OBJS) $(DEPLIBS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o e2image $(E2IMAGE_OBJS) $(LIBS) $(LIBINTL)
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o e2image $(E2IMAGE_OBJS) $(LIBS) \
|
||||
$(LIBINTL) $(SYSLIBS)
|
||||
|
||||
e2image.profiled: $(E2IMAGE_OBJS) $(PROFILED_DEPLIBS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o e2image.profiled \
|
||||
$(PROFILED_E2IMAGE_OBJS) $(PROFILED_LIBS) $(LIBINTL)
|
||||
$(PROFILED_E2IMAGE_OBJS) $(PROFILED_LIBS) $(LIBINTL) $(SYSLIBS)
|
||||
|
||||
e2undo: $(E2UNDO_OBJS) $(DEPLIBS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o e2undo $(E2UNDO_OBJS) $(LIBS) $(LIBINTL)
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o e2undo $(E2UNDO_OBJS) $(LIBS) \
|
||||
$(LIBINTL) $(SYSLIBS)
|
||||
|
||||
e2undo.profiled: $(E2UNDO_OBJS) $(PROFILED_DEPLIBS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o e2undo.profiled \
|
||||
$(PROFILED_E2UNDO_OBJS) $(PROFILED_LIBS) $(LIBINTL)
|
||||
$(PROFILED_E2UNDO_OBJS) $(PROFILED_LIBS) $(LIBINTL) $(SYSLIBS)
|
||||
|
||||
e4defrag: $(E4DEFRAG_OBJS) $(DEPLIBS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o e4defrag $(E4DEFRAG_OBJS) $(LIBS)
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o e4defrag $(E4DEFRAG_OBJS) $(LIBS) \
|
||||
$(SYSLIBS)
|
||||
|
||||
e4defrag.profiled: $(E4DEFRAG_OBJS) $(PROFILED_DEPLIBS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o e4defrag.profiled \
|
||||
$(PROFILED_E4DEFRAG_OBJS) $(PROFILED_LIBS)
|
||||
$(PROFILED_E4DEFRAG_OBJS) $(PROFILED_LIBS) $(SYSLIBS)
|
||||
|
||||
base_device: base_device.c
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_CFLAGS) $(ALL_LDFLAGS) $(srcdir)/base_device.c \
|
||||
-DDEBUG -o base_device
|
||||
-DDEBUG -o base_device $(SYSLIBS)
|
||||
|
||||
check:: base_device
|
||||
./base_device < $(srcdir)/base_device.tst > base_device.out
|
||||
|
@ -229,20 +232,22 @@ check:: base_device
|
|||
|
||||
mklost+found: $(MKLPF_OBJS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o mklost+found $(MKLPF_OBJS) $(LIBINTL)
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o mklost+found $(MKLPF_OBJS) \
|
||||
$(LIBINTL) $(SYSLIBS)
|
||||
|
||||
mke2fs: $(MKE2FS_OBJS) $(DEPLIBS) $(LIBE2P) $(DEPLIBBLKID) $(DEPLIBUUID) \
|
||||
$(DEPLIBQUOTA) $(LIBEXT2FS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o mke2fs $(MKE2FS_OBJS) $(LIBS) $(LIBBLKID) \
|
||||
$(LIBUUID) $(LIBQUOTA) $(LIBEXT2FS) $(LIBE2P) $(LIBINTL)
|
||||
$(LIBUUID) $(LIBQUOTA) $(LIBEXT2FS) $(LIBE2P) $(LIBINTL) \
|
||||
$(SYSLIBS)
|
||||
|
||||
mke2fs.static: $(MKE2FS_OBJS) $(STATIC_DEPLIBS) $(STATIC_LIBE2P) $(DEPSTATIC_LIBUUID) \
|
||||
$(DEPSTATIC_LIBQUOTA) $(DEPSTATIC_LIBBLKID)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -static -o mke2fs.static $(MKE2FS_OBJS) \
|
||||
$(STATIC_LIBQUOTA) $(STATIC_LIBS) $(STATIC_LIBE2P) \
|
||||
$(STATIC_LIBBLKID) $(STATIC_LIBUUID) $(LIBINTL)
|
||||
$(STATIC_LIBBLKID) $(STATIC_LIBUUID) $(LIBINTL) $(SYSLIBS)
|
||||
|
||||
mke2fs.profiled: $(MKE2FS_OBJS) $(PROFILED_DEPLIBS) \
|
||||
$(PROFILED_LIBE2P) $(PROFILED_DEPLIBBLKID) $(PROFILED_DEPLIBUUID) \
|
||||
|
@ -250,85 +255,95 @@ mke2fs.profiled: $(MKE2FS_OBJS) $(PROFILED_DEPLIBS) \
|
|||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o mke2fs.profiled \
|
||||
$(PROFILED_MKE2FS_OBJS) $(PROFILED_LIBBLKID) \
|
||||
$(PROFILED_LIBUUID) $(PROFILED_LIBQUOTA) $(PROFILED_LIBE2P) $(LIBINTL) \
|
||||
$(PROFILED_LIBS)
|
||||
$(PROFILED_LIBUUID) $(PROFILED_LIBQUOTA) $(PROFILED_LIBE2P) \
|
||||
$(LIBINTL) $(PROFILED_LIBS) $(SYSLIBS)
|
||||
|
||||
chattr: $(CHATTR_OBJS) $(DEPLIBS_E2P)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o chattr $(CHATTR_OBJS) $(LIBS_E2P) $(LIBINTL)
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o chattr $(CHATTR_OBJS) $(LIBS_E2P) \
|
||||
$(LIBINTL) $(SYSLIBS)
|
||||
|
||||
lsattr: $(LSATTR_OBJS) $(DEPLIBS_E2P)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o lsattr $(LSATTR_OBJS) $(LIBS_E2P) $(LIBINTL)
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o lsattr $(LSATTR_OBJS) $(LIBS_E2P) \
|
||||
$(LIBINTL) $(SYSLIBS)
|
||||
|
||||
uuidgen: $(UUIDGEN_OBJS) $(DEPLIBUUID)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o uuidgen $(UUIDGEN_OBJS) $(LIBUUID) $(LIBINTL)
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o uuidgen $(UUIDGEN_OBJS) $(LIBUUID) \
|
||||
$(LIBINTL) $(SYSLIBS)
|
||||
|
||||
uuidgen.profiled: $(UUIDGEN_OBJS) $(PROFILED_DEPLIBUUID)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o uuidgen.profiled \
|
||||
$(PROFILED_UUIDGEN_OBJS) $(PROFILED_LIBUUID) $(LIBINTL)
|
||||
$(PROFILED_UUIDGEN_OBJS) $(PROFILED_LIBUUID) $(LIBINTL) \
|
||||
$(SYSLIBS)
|
||||
|
||||
uuidd: $(UUIDD_OBJS) $(DEPLIBUUID)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o uuidd $(UUIDD_OBJS) $(LIBUUID) $(LIBINTL)
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o uuidd $(UUIDD_OBJS) $(LIBUUID) \
|
||||
$(LIBINTL) $(SYSLIBS)
|
||||
|
||||
uuidd.profiled: $(UUIDD_OBJS) $(PROFILED_DEPLIBUUID)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o uuidd.profiled $(PROFILED_UUIDD_OBJS) \
|
||||
$(PROFILED_LIBUUID) $(LIBINTL)
|
||||
$(PROFILED_LIBUUID) $(LIBINTL) $(SYSLIBS)
|
||||
|
||||
dumpe2fs: $(DUMPE2FS_OBJS) $(DEPLIBS) $(DEPLIBS_E2P) $(DEPLIBUUID)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o dumpe2fs $(DUMPE2FS_OBJS) $(LIBS) \
|
||||
$(LIBS_E2P) $(LIBUUID) $(LIBINTL)
|
||||
$(LIBS_E2P) $(LIBUUID) $(LIBINTL) $(SYSLIBS)
|
||||
|
||||
dumpe2fs.profiled: $(DUMPE2FS_OBJS) $(PROFILED_DEPLIBS) \
|
||||
$(PROFILED_LIBE2P) $(PROFILED_DEPLIBUUID)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o dumpe2fs.profiled \
|
||||
$(PROFILED_DUMPE2FS_OBJS) $(PROFILED_LIBS) \
|
||||
$(PROFILED_LIBE2P) $(PROFILED_LIBUUID) $(LIBINTL)
|
||||
$(PROFILED_LIBE2P) $(PROFILED_LIBUUID) $(LIBINTL) $(SYSLIBS)
|
||||
|
||||
fsck: $(FSCK_OBJS) $(DEPLIBBLKID)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o fsck $(FSCK_OBJS) $(LIBBLKID) $(LIBINTL)
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o fsck $(FSCK_OBJS) $(LIBBLKID) \
|
||||
$(LIBINTL) $(SYSLIBS)
|
||||
|
||||
fsck.profiled: $(FSCK_OBJS) $(PROFILED_DEPLIBBLKID)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o fsck.profiled $(PROFILED_FSCK_OBJS) \
|
||||
$(PROFILED_LIBBLKID) $(LIBINTL)
|
||||
$(PROFILED_LIBBLKID) $(LIBINTL) $(SYSLIBS)
|
||||
|
||||
badblocks: $(BADBLOCKS_OBJS) $(DEPLIBS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o badblocks $(BADBLOCKS_OBJS) $(LIBS) $(LIBINTL)
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o badblocks $(BADBLOCKS_OBJS) $(LIBS) \
|
||||
$(LIBINTL) $(SYSLIBS)
|
||||
|
||||
badblocks.profiled: $(BADBLOCKS_OBJS) $(PROFILED_DEPLIBS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o badblocks.profiled \
|
||||
$(PROFILED_BADBLOCKS_OBJS) $(PROFILED_LIBS) $(LIBINTL)
|
||||
$(PROFILED_BADBLOCKS_OBJS) $(PROFILED_LIBS) $(LIBINTL) \
|
||||
$(SYSLIBS)
|
||||
|
||||
logsave: logsave.o
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o logsave logsave.o
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o logsave logsave.o $(SYSLIBS)
|
||||
|
||||
logsave.profiled: logsave.o
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o logsave.profiled profiled/logsave.o
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o logsave.profiled \
|
||||
profiled/logsave.o $(SYSLIBS)
|
||||
|
||||
e2freefrag: $(E2FREEFRAG_OBJS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o e2freefrag $(E2FREEFRAG_OBJS) $(LIBS)
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o e2freefrag $(E2FREEFRAG_OBJS) \
|
||||
$(LIBS) $(SYSLIBS)
|
||||
|
||||
e2freefrag.profiled: $(E2FREEFRAG_OBJS) $(PROFILED_DEPLIBS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -g -pg -o e2freefrag.profiled \
|
||||
$(PROFILED_E2FREEFRAG_OBJS) $(PROFILED_LIBS)
|
||||
$(PROFILED_E2FREEFRAG_OBJS) $(PROFILED_LIBS) $(SYSLIBS)
|
||||
|
||||
filefrag: $(FILEFRAG_OBJS)
|
||||
$(E) " LD $@"
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o filefrag $(FILEFRAG_OBJS)
|
||||
$(Q) $(CC) $(ALL_LDFLAGS) -o filefrag $(FILEFRAG_OBJS) $(SYSLIBS)
|
||||
|
||||
filefrag.profiled: $(FILEFRAG_OBJS)
|
||||
$(E) " LD $@"
|
||||
|
@ -338,7 +353,7 @@ filefrag.profiled: $(FILEFRAG_OBJS)
|
|||
tst_ismounted: $(srcdir)/ismounted.c $(STATIC_LIBEXT2FS) $(DEPLIBCOM_ERR)
|
||||
$(E) " LD $@"
|
||||
$(CC) -o tst_ismounted $(srcdir)/ismounted.c -DDEBUG $(ALL_CFLAGS) \
|
||||
$(LIBCOM_ERR)
|
||||
$(LIBCOM_ERR) $(SYSLIBS)
|
||||
|
||||
tune2fs.8: $(DEP_SUBSTITUTE) $(srcdir)/tune2fs.8.in
|
||||
$(E) " SUBST $@"
|
||||
|
|
|
@ -174,7 +174,7 @@ static void generic_write(int fd, void *buf, int blocksize, blk64_t block)
|
|||
printf(_("Writing block %llu\n"), (unsigned long long) block);
|
||||
if (fd != 1)
|
||||
seek_relative(fd, blocksize);
|
||||
return;
|
||||
goto free_and_return;
|
||||
}
|
||||
count = write(fd, buf, blocksize);
|
||||
if (count != blocksize) {
|
||||
|
@ -191,6 +191,7 @@ static void generic_write(int fd, void *buf, int blocksize, blk64_t block)
|
|||
|
||||
exit(1);
|
||||
}
|
||||
free_and_return:
|
||||
if (free_buf)
|
||||
ext2fs_free_mem(&buf);
|
||||
}
|
||||
|
@ -631,7 +632,7 @@ more_blocks:
|
|||
bscount = print_progress(total_written,
|
||||
meta_blocks_count);
|
||||
duration = time(NULL) - start_time;
|
||||
if (duration > 5) {
|
||||
if (duration > 5 && total_written) {
|
||||
time_t est = (duration * meta_blocks_count /
|
||||
total_written) - duration;
|
||||
char buff[30];
|
||||
|
@ -701,14 +702,15 @@ more_blocks:
|
|||
if (show_progress) {
|
||||
time_t duration = time(NULL) - start_time;
|
||||
char buff[30];
|
||||
while (bscount--)
|
||||
fputc('\b', stderr);
|
||||
fputc('\r', stderr);
|
||||
strftime(buff, 30, "%T", gmtime(&duration));
|
||||
fprintf(stderr, _("\b\b\b\b\b\b\b\bCopied %llu / %llu "
|
||||
"blocks (%llu%%) in %s at %.2f MB/s \n"),
|
||||
total_written, meta_blocks_count,
|
||||
calc_percent(total_written, meta_blocks_count), buff,
|
||||
calc_rate(total_written, fs->blocksize, duration));
|
||||
fprintf(stderr, _("Copied %llu / %llu blocks (%d%%) in %s "),
|
||||
total_written, meta_blocks_count,
|
||||
calc_percent(total_written, meta_blocks_count), buff);
|
||||
if (duration)
|
||||
fprintf(stderr, _("at %.2f MB/s"),
|
||||
calc_rate(total_written, fs->blocksize, duration));
|
||||
fputs(" \n", stderr);
|
||||
}
|
||||
#ifdef HAVE_FTRUNCATE64
|
||||
if (sparse) {
|
||||
|
@ -1408,7 +1410,7 @@ static void install_image(char *device, char *image_fn, int type)
|
|||
|
||||
retval = ext2fs_image_inode_read(fs, fd, 0);
|
||||
if (retval) {
|
||||
com_err(image_fn, 0, "while restoring the image table");
|
||||
com_err(image_fn, 0, _("while restoring the image table"));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
@ -1595,7 +1597,7 @@ skip_device:
|
|||
}
|
||||
if (fd != 1) {
|
||||
if (fstat(fd, &st)) {
|
||||
com_err(program_name, 0, "Can not stat output\n");
|
||||
com_err(program_name, 0, _("Can not stat output\n"));
|
||||
exit(1);
|
||||
}
|
||||
if (S_ISBLK(st.st_mode))
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
#include <unistd.h>
|
||||
#include <ext2fs/ext2_types.h>
|
||||
#include <ext2fs/ext2fs.h>
|
||||
#include <linux/fs.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <ext2fs/fiemap.h>
|
||||
#include <sys/mman.h>
|
||||
|
@ -183,29 +182,21 @@ static ext4_fsblk_t files_block_count;
|
|||
static struct frag_statistic_ino frag_rank[SHOW_FRAG_FILES];
|
||||
|
||||
|
||||
/* Local definitions of some syscalls glibc may not yet have */
|
||||
|
||||
#ifndef HAVE_POSIX_FADVISE
|
||||
#warning Using locally defined posix_fadvise interface.
|
||||
|
||||
#ifndef __NR_fadvise64_64
|
||||
#error Your kernel headers dont define __NR_fadvise64_64
|
||||
/*
|
||||
* We prefer posix_fadvise64 when available, as it allows 64bit offset on
|
||||
* 32bit systems
|
||||
*/
|
||||
#if defined(HAVE_POSIX_FADVISE64)
|
||||
#define posix_fadvise posix_fadvise64
|
||||
#elif defined(HAVE_FADVISE64)
|
||||
#define posix_fadvise fadvise64
|
||||
#elif !defined(HAVE_POSIX_FADVISE)
|
||||
#error posix_fadvise not available!
|
||||
#endif
|
||||
|
||||
/*
|
||||
* fadvise() - Give advice about file access.
|
||||
*
|
||||
* @fd: defrag target file's descriptor.
|
||||
* @offset: file offset.
|
||||
* @len: area length.
|
||||
* @advise: process flag.
|
||||
* Local definitions of some syscalls glibc may not yet have
|
||||
*/
|
||||
static int posix_fadvise(int fd, loff_t offset, size_t len, int advise)
|
||||
{
|
||||
return syscall(__NR_fadvise64_64, fd, offset, len, advise);
|
||||
}
|
||||
#endif /* ! HAVE_FADVISE64_64 */
|
||||
|
||||
#ifndef HAVE_SYNC_FILE_RANGE
|
||||
#warning Using locally defined sync_file_range interface.
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ mke2fs \- create an ext2/ext3/ext4 filesystem
|
|||
]
|
||||
[
|
||||
.B \-O
|
||||
.IR feature [,...]
|
||||
[^]\fIfeature\fR[,...]
|
||||
]
|
||||
[
|
||||
.B \-q
|
||||
|
@ -246,6 +246,10 @@ parity disk, so N will be the number of disks in the array minus 1).
|
|||
This allows the block allocator to prevent read-modify-write of the
|
||||
parity in a RAID stripe if possible when the data is written.
|
||||
.TP
|
||||
.BI offset= offset
|
||||
Create the filesystem at an offset from the beginning of the device or
|
||||
file. This can be useful when creating disk images for virtual machines.
|
||||
.TP
|
||||
.BI resize= max-online-resize
|
||||
Reserve enough space so that the block group descriptor table can grow
|
||||
to support a filesystem that has
|
||||
|
@ -508,7 +512,7 @@ filesystem. The creator field is set by default to the name of the OS the
|
|||
.B mke2fs
|
||||
executable was compiled for.
|
||||
.TP
|
||||
.B "\-O \fIfeature\fR[,...]"
|
||||
.B "\-O \fR[^]\fIfeature\fR[,...]"
|
||||
Create a filesystem with the given features (filesystem options),
|
||||
overriding the default filesystem options. The features that are
|
||||
enabled by default are specified by the
|
||||
|
@ -544,7 +548,7 @@ section of the configuration file.
|
|||
.sp
|
||||
The filesystem feature set is comprised of a list of features, separated
|
||||
by commas, that are to be enabled. To disable a feature, simply
|
||||
prefix the feature name with a caret ('^') or a minus ('-') character.
|
||||
prefix the feature name with a caret ('^') character.
|
||||
Features with dependencies will not be removed successfully.
|
||||
The pseudo-filesystem feature "none" will clear all filesystem features.
|
||||
.TP
|
||||
|
|
|
@ -96,6 +96,7 @@ static int lazy_itable_init;
|
|||
static char *bad_blocks_filename = NULL;
|
||||
static __u32 fs_stride;
|
||||
static int quotatype = -1; /* Initialize both user and group quotas by default */
|
||||
static __u64 offset;
|
||||
|
||||
static struct ext2_super_block fs_param;
|
||||
static char *fs_uuid = NULL;
|
||||
|
@ -754,6 +755,19 @@ static void parse_extended_opts(struct ext2_super_block *param,
|
|||
continue;
|
||||
}
|
||||
param->s_desc_size = desc_size;
|
||||
} else if (strcmp(token, "offset") == 0) {
|
||||
if (!arg) {
|
||||
r_usage++;
|
||||
badopt = token;
|
||||
continue;
|
||||
}
|
||||
offset = strtoull(arg, &p, 0);
|
||||
if (*p) {
|
||||
fprintf(stderr, _("Invalid offset: %s\n"),
|
||||
arg);
|
||||
r_usage++;
|
||||
continue;
|
||||
}
|
||||
} else if (strcmp(token, "mmp_update_interval") == 0) {
|
||||
if (!arg) {
|
||||
r_usage++;
|
||||
|
@ -923,8 +937,10 @@ static void parse_extended_opts(struct ext2_super_block *param,
|
|||
"and may take an argument which\n"
|
||||
"\tis set off by an equals ('=') sign.\n\n"
|
||||
"Valid extended options are:\n"
|
||||
"\tmmp_update_interval=<interval>\n"
|
||||
"\tstride=<RAID per-disk data chunk in blocks>\n"
|
||||
"\tstripe-width=<RAID stride * data disks in blocks>\n"
|
||||
"\toffset=<offset to create the file system>\n"
|
||||
"\tresize=<resize maximum size in blocks>\n"
|
||||
"\tlazy_itable_init=<0 to disable, 1 to enable>\n"
|
||||
"\tlazy_journal_init=<0 to disable, 1 to enable>\n"
|
||||
|
@ -2446,7 +2462,7 @@ int main (int argc, char *argv[])
|
|||
int flags;
|
||||
int old_bitmaps;
|
||||
io_manager io_ptr;
|
||||
char tdb_string[40];
|
||||
char opt_string[40];
|
||||
char *hash_alg_str;
|
||||
int itable_zeroed = 0;
|
||||
|
||||
|
@ -2536,9 +2552,13 @@ int main (int argc, char *argv[])
|
|||
}
|
||||
}
|
||||
|
||||
sprintf(tdb_string, "tdb_data_size=%d", fs->blocksize <= 4096 ?
|
||||
sprintf(opt_string, "tdb_data_size=%d", fs->blocksize <= 4096 ?
|
||||
32768 : fs->blocksize * 8);
|
||||
io_channel_set_options(fs->io, tdb_string);
|
||||
io_channel_set_options(fs->io, opt_string);
|
||||
if (offset) {
|
||||
sprintf(opt_string, "offset=%llu", offset);
|
||||
io_channel_set_options(fs->io, opt_string);
|
||||
}
|
||||
|
||||
if (fs_param.s_flags & EXT2_FLAGS_TEST_FILESYS)
|
||||
fs->super->s_flags |= EXT2_FLAGS_TEST_FILESYS;
|
||||
|
|
|
@ -28,11 +28,11 @@ SRCS= $(srcdir)/extent.c \
|
|||
$(srcdir)/resource_track.c \
|
||||
$(srcdir)/sim_progress.c
|
||||
|
||||
LIBS= $(LIBE2P) $(LIBEXT2FS) $(LIBCOM_ERR) $(LIBINTL)
|
||||
LIBS= $(LIBE2P) $(LIBEXT2FS) $(LIBCOM_ERR) $(LIBINTL) $(SYSLIBS)
|
||||
DEPLIBS= $(LIBE2P) $(LIBEXT2FS) $(DEPLIBCOM_ERR)
|
||||
|
||||
STATIC_LIBS= $(STATIC_LIBE2P) $(STATIC_LIBEXT2FS) $(STATIC_LIBCOM_ERR) \
|
||||
$(LIBINTL)
|
||||
$(LIBINTL) $(SYSLIBS)
|
||||
DEPSTATIC_LIBS= $(STATIC_LIBE2P) $(STATIC_LIBEXT2FS) $(DEPSTATIC_LIBCOM_ERR)
|
||||
|
||||
.c.o:
|
||||
|
|
|
@ -109,6 +109,8 @@ void do_test(FILE *in, FILE *out)
|
|||
} else
|
||||
fputs("# Syntax error\n", out);
|
||||
}
|
||||
if (extent)
|
||||
ext2fs_free_extent_table(extent);
|
||||
}
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
|
|
@ -2,10 +2,12 @@ ext2fs_open2: The ext2 superblock is corrupt
|
|||
../e2fsck/e2fsck: Superblock invalid, trying backup blocks...
|
||||
../e2fsck/e2fsck: The ext2 superblock is corrupt while trying to open test.img
|
||||
|
||||
The superblock could not be read or does not describe a correct ext2
|
||||
filesystem. If the device is valid and it really contains an ext2
|
||||
The superblock could not be read or does not describe a valid ext2/ext3/ext4
|
||||
filesystem. If the device is valid and it really contains an ext2/ext3/ext4
|
||||
filesystem (and not swap or ufs or something else), then the superblock
|
||||
is corrupt, and you might try running e2fsck with an alternate superblock:
|
||||
e2fsck -b 8193 <device>
|
||||
or
|
||||
e2fsck -b 32768 <device>
|
||||
|
||||
Exit status is 8
|
||||
|
|
|
@ -21,7 +21,7 @@ TEST_ICOUNT_OBJS= test_icount.o test_icount_cmds.o
|
|||
|
||||
SRCS= $(srcdir)/test_rel.c
|
||||
|
||||
LIBS= $(LIBEXT2FS) $(LIBSS) $(LIBCOM_ERR)
|
||||
LIBS= $(LIBEXT2FS) $(LIBSS) $(LIBCOM_ERR) $(SYSLIBS)
|
||||
DEPLIBS= $(LIBEXT2FS) $(DEPLIBSS) $(DEPLIBCOM_ERR)
|
||||
|
||||
.c.o:
|
||||
|
|
|
@ -22,6 +22,12 @@ PROGS= subst symlinks
|
|||
|
||||
all:: $(PROGS) gen-tarball
|
||||
|
||||
dirpaths.h:
|
||||
$(E) " CREATE dirpaths.h"
|
||||
$(Q) echo "/* fake dirpaths.h for config.h */" > dirpaths.h
|
||||
|
||||
subst.o: dirpaths.h
|
||||
|
||||
subst: subst.o
|
||||
$(E) " LD $@"
|
||||
$(Q) $(BUILD_CC) $(BUILD_LDFLAGS) -o subst subst.o
|
||||
|
@ -46,7 +52,7 @@ tarballs: gen-tarball
|
|||
|
||||
clean:
|
||||
$(RM) -f $(PROGS) \#* *.s *.o *.a *~ core *.tar.gz gen-tarball \
|
||||
copy-sparse
|
||||
copy-sparse dirpaths.h
|
||||
|
||||
mostlyclean: clean
|
||||
|
||||
|
|
98
util/subst.c
98
util/subst.c
|
@ -5,6 +5,9 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -13,6 +16,7 @@
|
|||
#include <ctype.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <time.h>
|
||||
#include <utime.h>
|
||||
|
||||
|
@ -264,21 +268,11 @@ static void parse_config_file(FILE *f)
|
|||
/*
|
||||
* Return 0 if the files are different, 1 if the files are the same.
|
||||
*/
|
||||
static int compare_file(const char *outfn, const char *newfn)
|
||||
static int compare_file(FILE *old_f, FILE *new_f)
|
||||
{
|
||||
FILE *old_f, *new_f;
|
||||
char oldbuf[2048], newbuf[2048], *oldcp, *newcp;
|
||||
int retval;
|
||||
|
||||
old_f = fopen(outfn, "r");
|
||||
if (!old_f)
|
||||
return 0;
|
||||
new_f = fopen(newfn, "r");
|
||||
if (!new_f) {
|
||||
fclose(old_f);
|
||||
return 0;
|
||||
}
|
||||
|
||||
while (1) {
|
||||
oldcp = fgets(oldbuf, sizeof(oldbuf), old_f);
|
||||
newcp = fgets(newbuf, sizeof(newbuf), new_f);
|
||||
|
@ -291,8 +285,6 @@ static int compare_file(const char *outfn, const char *newfn)
|
|||
break;
|
||||
}
|
||||
}
|
||||
fclose(old_f);
|
||||
fclose(new_f);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
@ -302,12 +294,14 @@ int main(int argc, char **argv)
|
|||
{
|
||||
char line[2048];
|
||||
int c;
|
||||
FILE *in, *out;
|
||||
int fd;
|
||||
FILE *in, *out, *old = NULL;
|
||||
char *outfn = NULL, *newfn = NULL;
|
||||
int verbose = 0;
|
||||
int adjust_timestamp = 0;
|
||||
int got_atime = 0;
|
||||
struct stat stbuf;
|
||||
struct utimbuf ut;
|
||||
struct timeval tv[2];
|
||||
|
||||
while ((c = getopt (argc, argv, "f:tv")) != EOF) {
|
||||
switch (c) {
|
||||
|
@ -351,11 +345,34 @@ int main(int argc, char **argv)
|
|||
}
|
||||
strcpy(newfn, outfn);
|
||||
strcat(newfn, ".new");
|
||||
out = fopen(newfn, "w");
|
||||
if (!out) {
|
||||
fd = open(newfn, O_CREAT|O_TRUNC|O_RDWR, 0444);
|
||||
if (fd < 0) {
|
||||
perror(newfn);
|
||||
exit(1);
|
||||
}
|
||||
out = fdopen(fd, "w+");
|
||||
if (!out) {
|
||||
perror("fdopen");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
fd = open(outfn, O_RDONLY);
|
||||
if (fd > 0) {
|
||||
/* save the original atime, if possible */
|
||||
if (fstat(fd, &stbuf) == 0) {
|
||||
#if HAVE_STRUCT_STAT_ST_ATIM
|
||||
tv[0].tv_sec = stbuf.st_atim.tv_sec;
|
||||
tv[0].tv_usec = stbuf.st_atim.tv_nsec / 1000;
|
||||
#else
|
||||
tv[0].tv_sec = stbuf.st_atime;
|
||||
tv[0].tv_usec = 0;
|
||||
#endif
|
||||
got_atime = 1;
|
||||
}
|
||||
old = fdopen(fd, "r");
|
||||
if (!old)
|
||||
close(fd);
|
||||
}
|
||||
} else {
|
||||
out = stdout;
|
||||
outfn = 0;
|
||||
|
@ -368,32 +385,49 @@ int main(int argc, char **argv)
|
|||
fputs(line, out);
|
||||
}
|
||||
fclose(in);
|
||||
fclose(out);
|
||||
if (outfn) {
|
||||
struct stat st;
|
||||
if (compare_file(outfn, newfn)) {
|
||||
fflush(out);
|
||||
rewind(out);
|
||||
if (old && compare_file(old, out)) {
|
||||
if (verbose)
|
||||
printf("No change, keeping %s.\n", outfn);
|
||||
if (adjust_timestamp) {
|
||||
if (stat(outfn, &stbuf) == 0) {
|
||||
if (verbose)
|
||||
printf("Updating modtime for %s\n", outfn);
|
||||
ut.actime = stbuf.st_atime;
|
||||
ut.modtime = time(0);
|
||||
if (utime(outfn, &ut) < 0)
|
||||
perror("utime");
|
||||
if (verbose)
|
||||
printf("Updating modtime for %s\n", outfn);
|
||||
if (gettimeofday(&tv[1], NULL) < 0) {
|
||||
perror("gettimeofday");
|
||||
exit(1);
|
||||
}
|
||||
if (got_atime == 0)
|
||||
tv[0] = tv[1];
|
||||
else if (verbose)
|
||||
printf("Using original atime\n");
|
||||
#ifdef HAVE_FUTIMES
|
||||
if (futimes(fileno(old), tv) < 0)
|
||||
perror("futimes");
|
||||
#else
|
||||
if (utimes(outfn, tv) < 0)
|
||||
perror("utimes");
|
||||
#endif
|
||||
}
|
||||
unlink(newfn);
|
||||
fclose(out);
|
||||
if (unlink(newfn) < 0)
|
||||
perror("unlink");
|
||||
} else {
|
||||
if (verbose)
|
||||
printf("Creating or replacing %s.\n", outfn);
|
||||
rename(newfn, outfn);
|
||||
fclose(out);
|
||||
if (old)
|
||||
fclose(old);
|
||||
old = NULL;
|
||||
if (rename(newfn, outfn) < 0) {
|
||||
perror("rename");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
/* set read-only to alert user it is a generated file */
|
||||
if (stat(outfn, &st) == 0)
|
||||
chmod(outfn, st.st_mode & ~0222);
|
||||
}
|
||||
if (old)
|
||||
fclose(old);
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue