mirror of https://github.com/vitalif/e2fsprogs
Merge branch 'maint' into next
commit
5635e75c91
|
@ -1,3 +1,35 @@
|
|||
E2fsprogs 1.41.9-WIP (July 20, 2009) commit 8b5ed492de
|
||||
====================================
|
||||
|
||||
Fix regression in ext2fs_extent_set_bmap() caused e2fsck -fD to fail
|
||||
and corrupt large directories if the directory needs to shrink by more
|
||||
than one block. (Addresses Debian Bug: #537510)
|
||||
|
||||
Fix e2fsck's buggy_init_scritps=1 so that the if the last write and/or
|
||||
last mount times are in the future, they are corrected even if
|
||||
buggy_init_scripts is set. This is needed because otherwise resize2fs
|
||||
will refuse to resize the filesystem, even after running "e2fsck -f".
|
||||
(Addresses Launchpad bug: #373409)
|
||||
|
||||
Fixed filefrag for non-extent based files.
|
||||
|
||||
Fixed various Debian packaging issues --- see debian/changelog for
|
||||
details.
|
||||
|
||||
Programmer's Notes
|
||||
------------------
|
||||
|
||||
Fixed miscellaneous gcc -Wall warnings.
|
||||
|
||||
Fixed memory leak in error path in ext2fs_block_iterate2()
|
||||
|
||||
Fixed non-Linux build of the intl directory by adding support for the
|
||||
E/Q/V macros.
|
||||
|
||||
Improve ext2fs_extent_set_bmap() to avoid creating new extents which
|
||||
get inserted into the extent tree when they are not needed.
|
||||
|
||||
|
||||
E2fsprogs 1.41.8 (July 11, 2009)
|
||||
================================
|
||||
|
||||
|
|
|
@ -16592,7 +16592,8 @@ for i in MCONFIG Makefile e2fsprogs.spec \
|
|||
lib/e2p/e2p.pc lib/blkid/blkid.pc lib/ext2fs/ext2fs.pc \
|
||||
misc/Makefile ext2ed/Makefile e2fsck/Makefile \
|
||||
debugfs/Makefile tests/Makefile tests/progs/Makefile \
|
||||
resize/Makefile doc/Makefile intl/Makefile po/Makefile.in ; do
|
||||
resize/Makefile doc/Makefile intl/Makefile \
|
||||
intl/libgnuintl.h po/Makefile.in ; do
|
||||
if test -d `dirname ${srcdir}/$i` ; then
|
||||
outlist="$outlist $i"
|
||||
fi
|
||||
|
|
|
@ -1062,7 +1062,8 @@ for i in MCONFIG Makefile e2fsprogs.spec \
|
|||
lib/e2p/e2p.pc lib/blkid/blkid.pc lib/ext2fs/ext2fs.pc \
|
||||
misc/Makefile ext2ed/Makefile e2fsck/Makefile \
|
||||
debugfs/Makefile tests/Makefile tests/progs/Makefile \
|
||||
resize/Makefile doc/Makefile intl/Makefile po/Makefile.in ; do
|
||||
resize/Makefile doc/Makefile intl/Makefile \
|
||||
intl/libgnuintl.h po/Makefile.in ; do
|
||||
if test -d `dirname ${srcdir}/$i` ; then
|
||||
outlist="$outlist $i"
|
||||
fi
|
||||
|
|
|
@ -1,3 +1,14 @@
|
|||
e2fsprogs (1.41.8-2) unstable; urgency=low
|
||||
|
||||
* Fix regression in ext2fs_extent_set_bmap() which caused e2fsck -fD
|
||||
to fail on ext4 filesystems if the directory needs to shrink by more
|
||||
than a block (Closes: #537510)
|
||||
* Fixed filefrag for non-extent based files
|
||||
* Fix use of apostrohe's in package descriptions
|
||||
* Don't use dietlibc when building for mips and mipsel architectures
|
||||
|
||||
-- Theodore Y. Ts'o <tytso@mit.edu> Mon, 20 Jul 2009 09:38:21 -0400
|
||||
|
||||
e2fsprogs (1.41.8-1) unstable; urgency=low
|
||||
|
||||
* New upstream release
|
||||
|
|
|
@ -2,7 +2,11 @@ Source: e2fsprogs
|
|||
Section: admin
|
||||
Priority: required
|
||||
Maintainer: Theodore Y. Ts'o <tytso@mit.edu>
|
||||
Build-Depends: texi2html (>= 1.76), gettext, texinfo, dc, pkg-config, dietlibc-dev (>> 0.30) [alpha amd64 arm hppa i386 ia64 powerpc ppc64 s390 sparc], debhelper (>= 7.0)
|
||||
ifdef(`UTIL_LINUX_NG',
|
||||
``Build-Depends: texi2html (>= 1.76), gettext, texinfo, dc, pkg-config, dietlibc-dev (>> 0.30) [alpha amd64 arm hppa i386 ia64 powerpc ppc64 s390 sparc], debhelper (>= 7.0), m4, libblkid-dev (>= 2.16), uuid-dev (>= 2.16)
|
||||
'',
|
||||
``Build-Depends: texi2html (>= 1.76), gettext, texinfo, dc, pkg-config, dietlibc-dev (>> 0.30) [alpha amd64 arm hppa i386 ia64 powerpc ppc64 s390 sparc], debhelper (>= 7.0), m4
|
||||
'')dnl
|
||||
Standards-Version: 3.8.2
|
||||
Homepage: http://e2fsprogs.sourceforge.net
|
||||
|
||||
|
@ -70,7 +74,7 @@ Description: command-line interface parsing library - headers and static librari
|
|||
It was originally inspired by the Multics SubSystem library.
|
||||
.
|
||||
This package contains the development environment for the ss library.
|
||||
|
||||
ifdef(`UTIL_LINUX_NG',,``
|
||||
Package: libuuid1
|
||||
Section: libs
|
||||
Depends: passwd, ${shlibs:Depends}
|
||||
|
@ -79,7 +83,7 @@ Replaces: e2fsprogs (<< 1.34-1)
|
|||
Architecture: any
|
||||
Description: Universally Unique ID library
|
||||
The libuuid library generates and parses 128-bit universally unique
|
||||
id's (UUID's). A UUID is an identifier that is unique across both
|
||||
ids (UUIDs). A UUID is an identifier that is unique across both
|
||||
space and time, with respect to the space of all UUIDs. A UUID can
|
||||
be used for multiple purposes, from tagging objects with an extremely
|
||||
short lifetime, to reliably identifying very persistent objects
|
||||
|
@ -95,7 +99,7 @@ Replaces: e2fsprogs (<= 1.40.3-1ubuntu1)
|
|||
Architecture: any
|
||||
Description: runtime components for the Universally Unique ID library
|
||||
The libuuid library generates and parses 128-bit universally unique
|
||||
id's (UUID's). A UUID is an identifier that is unique across both
|
||||
ids (UUIDs). A UUID is an identifier that is unique across both
|
||||
space and time, with respect to the space of all UUIDs. A UUID can
|
||||
be used for multiple purposes, from tagging objects with an extremely
|
||||
short lifetime, to reliably identifying very persistent objects
|
||||
|
@ -118,7 +122,7 @@ Priority: optional
|
|||
Depends: ${shlibs:Depends}
|
||||
Architecture: any
|
||||
Description: stripped down universally unique id library, for debian-installer
|
||||
libuuid generates and parses 128-bit universally unique id's (UUID's).
|
||||
libuuid generates and parses 128-bit universally unique ids (UUIDs).
|
||||
See RFC 4122 for more information.
|
||||
.
|
||||
This is a minimal package for debian-installer.
|
||||
|
@ -130,7 +134,7 @@ Depends: libc6-dev | libc-dev, libuuid1 (= ${mainBinary})
|
|||
Replaces: e2fslibs-dev (<< 1.15)
|
||||
Architecture: any
|
||||
Description: universally unique id library - headers and static libraries
|
||||
libuuid generates and parses 128-bit universally unique id's (UUID's).
|
||||
libuuid generates and parses 128-bit universally unique ids (UUIDs).
|
||||
See RFC 4122 for more information.
|
||||
.
|
||||
This package contains the development environment for the uuid library.
|
||||
|
@ -174,6 +178,7 @@ Description: block device id library - headers and static libraries
|
|||
system instead.
|
||||
.
|
||||
This package contains the development environment for the blkid library.
|
||||
'')dnl
|
||||
|
||||
Package: e2fsprogs-udeb
|
||||
XC-Package-Type: udeb
|
||||
|
@ -245,7 +250,7 @@ Description: debugging information for e2fsprogs
|
|||
and its libraries, contained in the e2fsprogs and e2fsck-static packages.
|
||||
The debug information is used for execution tracing and core
|
||||
dump analysis.
|
||||
|
||||
ifdef(`UTIL_LINUX_NG',,``
|
||||
Package: uuid-runtime-dbg
|
||||
Section: debug
|
||||
Priority: extra
|
||||
|
@ -256,6 +261,7 @@ Description: debugging information for uuid-runtime
|
|||
uuid runtime programs, contained in the uuid-runtime package.
|
||||
The debugging information is used for execution tracing and core
|
||||
dump analysis.
|
||||
'')dnl
|
||||
|
||||
Package: e2fslibs-dbg
|
||||
Section: debug
|
||||
|
@ -286,7 +292,7 @@ Description: debugging information for libss2
|
|||
This package includes the debug information useful for debugging the
|
||||
ss library, contained in the libss2 package. The debug information
|
||||
is used for execution tracing and core dump analysis.
|
||||
|
||||
ifdef(`UTIL_LINUX_NG',,``
|
||||
Package: libblkid1-dbg
|
||||
Section: debug
|
||||
Priority: extra
|
||||
|
@ -306,3 +312,4 @@ Description: debugging information for libuuid1
|
|||
This package includes the debug information useful for debugging the
|
||||
UUID library, contained in the libuuid1 package. The debug
|
||||
information is used for execution tracing and core dump analysis.
|
||||
'')dnl
|
|
@ -10,6 +10,13 @@
|
|||
# be paranoid
|
||||
export LC_ALL=C
|
||||
|
||||
# Allow distro-specific behaviour
|
||||
DISTRO :=$(shell sed -ne '/DISTRIB_ID/s/.*=//p' /etc/lsb-release || echo Debian)
|
||||
SYS_BLKID_VER :=$(shell dpkg-query -W -f '${version}\n' libblkid1 | cut -b 1)
|
||||
ifeq ($(SYS_BLKID_VER),2)
|
||||
UTIL_LINUX_NG ?= yes
|
||||
endif
|
||||
|
||||
# These are used for cross-compiling and for saving the configure script
|
||||
# from having to guess our platform (since we know it already)
|
||||
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
|
||||
|
@ -26,10 +33,15 @@ COMERR_VERSION = $(shell grep ELF_VERSION lib/et/Makefile.in | cut '-d ' -f3)
|
|||
COMERR_SOVERSION = $(shell grep ELF_SO_VERSION lib/et/Makefile.in | cut '-d ' -f3)
|
||||
SS_VERSION = $(shell grep ELF_VERSION lib/ss/Makefile.in | cut '-d ' -f3)
|
||||
SS_SOVERSION = $(shell grep ELF_SO_VERSION lib/ss/Makefile.in | cut '-d ' -f3)
|
||||
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
UUID_VERSION = $(shell grep ELF_VERSION lib/uuid/Makefile.in | cut '-d ' -f3)
|
||||
UUID_SOVERSION = $(shell grep ELF_SO_VERSION lib/uuid/Makefile.in | cut '-d ' -f3)
|
||||
|
||||
BLKID_VERSION = $(shell grep ELF_VERSION lib/blkid/Makefile.in | cut '-d ' -f3)
|
||||
BLKID_SOVERSION = $(shell grep ELF_SO_VERSION lib/blkid/Makefile.in | cut '-d ' -f3)
|
||||
endif
|
||||
|
||||
EXT2FS_SOVERSION = $(shell grep ELF_SO_VERSION lib/ext2fs/Makefile.in | cut '-d ' -f3)
|
||||
E2P_SOVERSION = $(shell grep ELF_SO_VERSION lib/e2p/Makefile.in | cut '-d ' -f3)
|
||||
|
||||
|
@ -39,14 +51,17 @@ topdir=$(shell pwd)
|
|||
debdir=${topdir}/debian
|
||||
tmpdir=${debdir}/tmp
|
||||
udebdir=${debdir}/e2fsprogs-udeb
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
blkidudebdir=${debdir}/libblkid1-udeb
|
||||
uuidudebdir=${debdir}/libuuid1-udeb
|
||||
endif
|
||||
libcomerrdir=${debdir}/libcomerr${COMERR_SOVERSION}
|
||||
comerrdevdir=${debdir}/comerr-dev
|
||||
libcomerrdbgdir=${debdir}/libcomerr2-dbg
|
||||
libssdir=${debdir}/libss${SS_SOVERSION}
|
||||
ssdevdir=${debdir}/ss-dev
|
||||
libssdbgdir=${debdir}/libss2-dbg
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
libblkiddir=${debdir}/libblkid${BLKID_SOVERSION}
|
||||
libblkiddevdir=${debdir}/libblkid-dev
|
||||
libblkiddbgdir=${debdir}/libblkid1-dbg
|
||||
|
@ -55,6 +70,7 @@ uuiddevdir=${debdir}/uuid-dev
|
|||
libuuiddbgdir=${debdir}/libuuid1-dbg
|
||||
uuidruntimedir=${debdir}/uuid-runtime
|
||||
uuidruntimedbgdir=${debdir}/uuid-runtime-dbg
|
||||
endif
|
||||
libext2dir=${debdir}/e2fslibs
|
||||
libext2devdir=${debdir}/e2fslibs-dev
|
||||
libext2dbgdir=${debdir}/e2fslibs-dbg
|
||||
|
@ -71,13 +87,15 @@ MANDIR=/usr/share/man
|
|||
mandir=${tmpdir}${MANDIR}
|
||||
|
||||
UDEB_NAME = $(package)-udeb_$(MAIN_VERSION)_$(DEB_HOST_ARCH).udeb
|
||||
UDEB_PRIORITY = $(shell grep '^Package: e2fsprogs-udeb' debian/control -A 10 | grep ^Priority: | cut -d ' ' -f 2)
|
||||
UDEB_PRIORITY = $(shell grep '^Package: e2fsprogs-udeb' debian/control.in -A 10 | grep ^Priority: | cut -d ' ' -f 2)
|
||||
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
BLKID_UDEB_NAME = libblkid1-udeb_$(MAIN_VERSION)_$(DEB_HOST_ARCH).udeb
|
||||
BLKID_UDEB_PRIORITY = $(shell grep '^Package: libblkid1-udeb' debian/control -A 10 | grep ^Priority: | cut -d ' ' -f 2)
|
||||
BLKID_UDEB_PRIORITY = $(shell grep '^Package: libblkid1-udeb' debian/control.in -A 10 | grep ^Priority: | cut -d ' ' -f 2)
|
||||
|
||||
UUID_UDEB_NAME = libuuid1-udeb_$(MAIN_VERSION)_$(DEB_HOST_ARCH).udeb
|
||||
UUID_UDEB_PRIORITY = $(shell grep '^Package: libuuid1-udeb' debian/control -A 10 | grep ^Priority: | cut -d ' ' -f 2)
|
||||
UUID_UDEB_PRIORITY = $(shell grep '^Package: libuuid1-udeb' debian/control.in -A 10 | grep ^Priority: | cut -d ' ' -f 2)
|
||||
endif
|
||||
|
||||
STAMPSDIR=debian/stampdir
|
||||
CFGSTDSTAMP=${STAMPSDIR}/configure-std-stamp
|
||||
|
@ -115,7 +133,13 @@ endif
|
|||
BF_CCOPTS = -Os -fomit-frame-pointer
|
||||
|
||||
COMMON_CONF_FLAGS = \
|
||||
--enable-elf-shlibs --infodir=/usr/share/info --enable-fsck
|
||||
--enable-elf-shlibs --infodir=/usr/share/info
|
||||
ifeq ($(UTIL_LINUX_NG),yes)
|
||||
COMMON_CONF_FLAGS += --disable-fsck --disable-libblkid \
|
||||
--disable-libuuid --disable-uuidd
|
||||
else
|
||||
COMMON_CONF_FLAGS += --enable-fsck
|
||||
endif
|
||||
|
||||
STD_CONF_FLAGS = --with-ccopts="${CCOPTS}" --enable-compression
|
||||
|
||||
|
@ -145,6 +169,16 @@ ismips=ismips
|
|||
endif
|
||||
endif
|
||||
|
||||
M4_ARGS=
|
||||
ifeq ($(UTIL_LINUX_NG),yes)
|
||||
M4_ARGS+=-DUTIL_LINUX_NG
|
||||
else
|
||||
M4_ARGS+=-UUTIL_LINUX_NG
|
||||
endif
|
||||
|
||||
debian/control: debian/control.in debian/rules
|
||||
m4 $(M4_ARGS) < debian/control.in > $@
|
||||
|
||||
${CFGSTDSTAMP}:
|
||||
dh_testdir
|
||||
|
||||
|
@ -325,11 +359,13 @@ install-udeb: build
|
|||
ln -s e2fsck fsck.ext3 ; ln -s mke2fs mkfs.ext2 ; \
|
||||
ln -s mke2fs mkfs.ext3 ; ln -s mke2fs mkfs.ext4)
|
||||
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
mkdir -p ${blkidudebdir}/lib
|
||||
mv ${udebdir}/lib/libblkid.* ${blkidudebdir}/lib
|
||||
|
||||
mkdir -p ${uuidudebdir}/lib
|
||||
mv ${udebdir}/lib/libuuid.* ${uuidudebdir}/lib
|
||||
endif
|
||||
|
||||
binary-indep:
|
||||
# no arch-independant debs.
|
||||
|
@ -358,9 +394,11 @@ binary-arch: install install-udeb
|
|||
|
||||
# symlinks to prepare dh_installdocs run
|
||||
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
mkdir -p ${debdir}/libblkid${BLKID_SOVERSION}/usr/share/doc/libblkid${BLKID_SOVERSION}
|
||||
mkdir -p ${debdir}/libblkid-dev/usr/share/doc
|
||||
ln -sf libblkid${BLKID_SOVERSION} ${debdir}/libblkid-dev/usr/share/doc/libblkid-dev
|
||||
endif
|
||||
|
||||
mkdir -p ${debdir}/libss${SS_SOVERSION}/usr/share/doc/libss${SS_SOVERSION}
|
||||
mkdir -p ${debdir}/ss-dev/usr/share/doc
|
||||
|
@ -370,16 +408,20 @@ binary-arch: install install-udeb
|
|||
mkdir -p ${debdir}/comerr-dev/usr/share/doc
|
||||
ln -sf libcomerr${COMERR_SOVERSION} ${debdir}/comerr-dev/usr/share/doc/comerr-dev
|
||||
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
mkdir -p ${debdir}/libuuid${UUID_SOVERSION}/usr/share/doc/libuuid${UUID_SOVERSION}
|
||||
mkdir -p ${debdir}/uuid-dev/usr/share/doc
|
||||
# ln -sf libuuid${UUID_SOVERSION} ${debdir}/uuid-dev/usr/share/doc/uuid-dev
|
||||
endif
|
||||
|
||||
mkdir -p ${debdir}/e2fslibs/usr/share/doc/e2fslibs
|
||||
mkdir -p ${debdir}/e2fslibs-dev/usr/share/doc
|
||||
ln -sf e2fslibs ${debdir}/e2fslibs-dev/usr/share/doc/e2fslibs-dev
|
||||
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
$(INSTALL) -p -m 0644 debian/libblkid.copyright \
|
||||
${debdir}/libblkid${BLKID_SOVERSION}/usr/share/doc/libblkid${BLKID_SOVERSION}/copyright
|
||||
endif
|
||||
|
||||
dh_installdocs -Ne2fsprogs-udeb -Nlibblkid1-udeb -Nlibuuid1-udeb
|
||||
|
||||
|
@ -416,11 +458,15 @@ binary-arch: install install-udeb
|
|||
dh_installinfo -pe2fslibs-dev ${stdbuilddir}/doc/libext2fs.info
|
||||
|
||||
DH_OPTIONS= dh_installchangelogs -pe2fsprogs \
|
||||
-plibblkid${BLKID_SOVERSION} -plibcomerr${COMERR_SOVERSION} \
|
||||
-plibss${SS_SOVERSION} -plibuuid${UUID_SOVERSION} \
|
||||
-pe2fslibs -puuid-dev -puuid-runtime -pe2fsck-static \
|
||||
-pe2fsprogs-dbg -puuid-runtime-dbg -pe2fslibs-dbg \
|
||||
-plibcomerr2-dbg -plibss2-dbg -plibblkid1-dbg -plibuuid1-dbg
|
||||
-plibcomerr${COMERR_SOVERSION} \
|
||||
-plibss${SS_SOVERSION} \
|
||||
-pe2fslibs -pe2fsck-static \
|
||||
-pe2fsprogs-dbg -pe2fslibs-dbg \
|
||||
-plibcomerr2-dbg -plibss2-dbg
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
DH_OPTIONS= dh_installchangelogs -plibuuid${UUID_SOVERSION} \
|
||||
-puuid-dev -puuid-runtime -puuid-runtime-dbg -plibuuid1-dbg
|
||||
endif
|
||||
|
||||
dh_fixperms
|
||||
ifneq ($(ismips),)
|
||||
|
@ -431,8 +477,10 @@ endif
|
|||
|
||||
# debug package stuff
|
||||
rm -rf ${udebdir}/usr
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
rm -rf ${blkidudebdir}/usr
|
||||
rm -rf ${uuidudebdir}/usr
|
||||
endif
|
||||
|
||||
mkdir -p ${debugdir}/usr/lib
|
||||
mv ${maindir}/usr/lib/debug ${debugdir}/usr/lib
|
||||
|
@ -441,9 +489,11 @@ endif
|
|||
${debugdir}/usr/lib/debug
|
||||
rm -rf ${e2fsckstaticdir}/usr/lib
|
||||
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
mkdir -p ${uuidruntimedbgdir}/usr/lib
|
||||
mv ${uuidruntimedir}/usr/lib/debug ${uuidruntimedbgdir}/usr/lib
|
||||
rmdir ${uuidruntimedir}/usr/lib
|
||||
endif
|
||||
|
||||
mkdir -p ${libext2dbgdir}/usr/lib
|
||||
mv ${libext2dir}/usr/lib/debug ${libext2dbgdir}/usr/lib
|
||||
|
@ -457,6 +507,7 @@ endif
|
|||
mv ${libssdir}/usr/lib/debug ${libssdbgdir}/usr/lib
|
||||
rmdir ${libssdir}/usr/lib
|
||||
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
mkdir -p ${libuuiddbgdir}/usr/lib
|
||||
mv ${libuuiddir}/usr/lib/debug ${libuuiddbgdir}/usr/lib
|
||||
rmdir ${libuuiddir}/usr/lib
|
||||
|
@ -464,10 +515,15 @@ endif
|
|||
mkdir -p ${libblkiddbgdir}/usr/lib
|
||||
mv ${libblkiddir}/usr/lib/debug ${libblkiddbgdir}/usr/lib
|
||||
rmdir ${libblkiddir}/usr/lib
|
||||
endif
|
||||
|
||||
# dpkg symbol handling
|
||||
ifneq (,$(findstring update-symbols,$(DEB_BUILD_OPTIONS)))
|
||||
for i in e2fslibs libcomerr2 libss2 libblkid1 libuuid1; \
|
||||
SYMBOL_LIBS := e2fslibs libcomerr2 libss2
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
SYMBOL_LIBS += libblkid1 libuuid1
|
||||
endif
|
||||
for i in $(SYMBOL_LIBS); \
|
||||
do \
|
||||
echo "Generating symbols for $$i..."; \
|
||||
dpkg-gensymbols -p$$i -Pdebian/$$i > debian/$$i.tmp-patch; \
|
||||
|
@ -480,8 +536,10 @@ endif
|
|||
$(INSTALL) -p -m 0644 debian/e2fsprogs.copyright \
|
||||
${debugdir}/usr/share/doc/e2fsprogs-dbg/copyright
|
||||
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
$(INSTALL) -p -m 0644 debian/uuid-runtime.copyright \
|
||||
${uuidruntimedbgdir}/usr/share/doc/uuid-runtime-dbg/copyright
|
||||
endif
|
||||
|
||||
$(INSTALL) -p -m 0644 debian/e2fslibs.copyright \
|
||||
${libext2dbgdir}/usr/share/doc/e2fslibs-dbg/copyright
|
||||
|
@ -492,21 +550,25 @@ endif
|
|||
$(INSTALL) -p -m 0644 debian/libss2.copyright \
|
||||
${libssdbgdir}/usr/share/doc/libss2-dbg/copyright
|
||||
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
$(INSTALL) -p -m 0644 debian/libblkid.copyright \
|
||||
${libblkiddbgdir}/usr/share/doc/libblkid1-dbg/copyright
|
||||
|
||||
$(INSTALL) -p -m 0644 debian/libuuid1.copyright \
|
||||
${libuuiddbgdir}/usr/share/doc/libuuid1-dbg/copyright
|
||||
endif
|
||||
|
||||
dh_compress
|
||||
|
||||
dh_makeshlibs -Ne2fsprogs-udeb -Nlibblkid1-udeb -Nlibuuid1-udeb
|
||||
dh_makeshlibs -plibcomerr${COMERR_SOVERSION} \
|
||||
-V 'libcomerr2 (>= 1.33-3)'
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
dh_makeshlibs -plibblkid${BLKID_SOVERSION} -V 'libblkid1 (>= 1.39-1)'
|
||||
echo "udeb: libblkid 1 libblkid1-udeb" >> \
|
||||
debian/libblkid1/DEBIAN/shlibs
|
||||
echo "udeb: libuuid 1 libuuid1-udeb" >> debian/libuuid1/DEBIAN/shlibs
|
||||
endif
|
||||
|
||||
dh_installdeb
|
||||
dh_shlibdeps -l${stdbuilddir}/lib
|
||||
|
@ -521,20 +583,28 @@ endif
|
|||
-u '-v${COMERR_VERSION}-${MAIN_VERSION} -VmainBinary=${MAIN_VERSION}'
|
||||
DH_OPTIONS= dh_gencontrol -pss-dev \
|
||||
-u '-v${SS_VERSION}-${MAIN_VERSION} -VmainBinary=${MAIN_VERSION}'
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
DH_OPTIONS= dh_gencontrol -puuid-dev \
|
||||
-u '-v${UUID_VERSION}-${MAIN_VERSION} -VmainBinary=${MAIN_VERSION}'
|
||||
endif
|
||||
dh_gencontrol -pe2fsprogs-udeb -- -fdebian/files~
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
dh_gencontrol -plibblkid1-udeb -- -fdebian/files~
|
||||
dh_gencontrol -plibuuid1-udeb -- -fdebian/files~
|
||||
endif
|
||||
|
||||
dpkg-distaddfile $(UDEB_NAME) debian-installer $(UDEB_PRIORITY)
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
dpkg-distaddfile $(BLKID_UDEB_NAME) debian-installer $(BLKID_UDEB_PRIORITY)
|
||||
dpkg-distaddfile $(UUID_UDEB_NAME) debian-installer $(UUID_UDEB_PRIORITY)
|
||||
endif
|
||||
dh_md5sums -Ne2fsprogs-udeb -Nlibblkid1-udeb -Nlibuuid1-udeb
|
||||
dh_builddeb -Ne2fsprogs-udeb -Nlibblkid1-udeb -Nlibuuid1-udeb
|
||||
dh_builddeb -pe2fsprogs-udeb --filename=$(UDEB_NAME)
|
||||
ifneq ($(UTIL_LINUX_NG),yes)
|
||||
dh_builddeb -plibblkid1-udeb --filename=$(BLKID_UDEB_NAME)
|
||||
dh_builddeb -plibuuid1-udeb --filename=$(UUID_UDEB_NAME)
|
||||
endif
|
||||
|
||||
binary: binary-indep binary-arch
|
||||
|
||||
|
|
|
@ -335,12 +335,12 @@ static struct e2fsck_problem problem_table[] = {
|
|||
/* Last mount time is in the future */
|
||||
{ PR_0_FUTURE_SB_LAST_MOUNT,
|
||||
N_("@S last mount time is in the future. "),
|
||||
PROMPT_FIX, PR_PREEN_OK | PR_NO_OK },
|
||||
PROMPT_FIX, PR_NO_OK },
|
||||
|
||||
/* Last write time is in the future */
|
||||
{ PR_0_FUTURE_SB_LAST_WRITE,
|
||||
N_("@S last write time is in the future. "),
|
||||
PROMPT_FIX, PR_PREEN_OK | PR_NO_OK },
|
||||
PROMPT_FIX, PR_NO_OK },
|
||||
|
||||
{ PR_0_EXTERNAL_JOURNAL_HINT,
|
||||
N_("@S hint for external superblock @s %X. "),
|
||||
|
@ -385,6 +385,18 @@ static struct e2fsck_problem problem_table[] = {
|
|||
N_("The test_fs flag is set (and ext4 is available). "),
|
||||
PROMPT_CLEAR, PR_PREEN_OK },
|
||||
|
||||
/* Last mount time is in the future (fudged) */
|
||||
{ PR_0_FUTURE_SB_LAST_MOUNT_FUDGED,
|
||||
N_("@S last mount time is in the future.\n\t(by less than a day, "
|
||||
"probably due to buggy init scripts) "),
|
||||
PROMPT_FIX, PR_PREEN_OK | PR_NO_OK },
|
||||
|
||||
/* Last write time is in the future (fudged) */
|
||||
{ PR_0_FUTURE_SB_LAST_WRITE_FUDGED,
|
||||
N_("@S last write time is in the future.\n\t(by less than a day, "
|
||||
"probably due to buggy init scripts). "),
|
||||
PROMPT_FIX, PR_PREEN_OK | PR_NO_OK },
|
||||
|
||||
/* Pass 1 errors */
|
||||
|
||||
/* Pass 1: Checking inodes, blocks, and sizes */
|
||||
|
|
|
@ -217,6 +217,13 @@ struct problem_context {
|
|||
/* The test_fs filesystem flag is set and ext4 is available */
|
||||
#define PR_0_CLEAR_TESTFS_FLAG 0x00003B
|
||||
|
||||
/* Last mount time is in the future (fudged) */
|
||||
#define PR_0_FUTURE_SB_LAST_MOUNT_FUDGED 0x00003C
|
||||
|
||||
/* Last write time is in the future (fudged) */
|
||||
#define PR_0_FUTURE_SB_LAST_WRITE_FUDGED 0x00003D
|
||||
|
||||
|
||||
/*
|
||||
* Pass 1 errors
|
||||
*/
|
||||
|
|
|
@ -457,6 +457,7 @@ void check_super_block(e2fsck_t ctx)
|
|||
blk_t first_block, last_block;
|
||||
struct ext2_super_block *sb = fs->super;
|
||||
struct ext2_group_desc *gd;
|
||||
problem_t problem;
|
||||
blk_t blocks_per_group = fs->super->s_blocks_per_group;
|
||||
blk_t bpg_max;
|
||||
int inodes_per_block;
|
||||
|
@ -818,16 +819,22 @@ void check_super_block(e2fsck_t ctx)
|
|||
* Check to see if the superblock last mount time or last
|
||||
* write time is in the future.
|
||||
*/
|
||||
if (fs->super->s_mtime > (__u32) ctx->now + ctx->time_fudge) {
|
||||
if (fs->super->s_mtime > (__u32) ctx->now) {
|
||||
pctx.num = fs->super->s_mtime;
|
||||
if (fix_problem(ctx, PR_0_FUTURE_SB_LAST_MOUNT, &pctx)) {
|
||||
problem = PR_0_FUTURE_SB_LAST_MOUNT;
|
||||
if (fs->super->s_mtime <= (__u32) ctx->now + ctx->time_fudge)
|
||||
problem = PR_0_FUTURE_SB_LAST_MOUNT_FUDGED;
|
||||
if (fix_problem(ctx, problem, &pctx)) {
|
||||
fs->super->s_mtime = ctx->now;
|
||||
ext2fs_mark_super_dirty(fs);
|
||||
}
|
||||
}
|
||||
if (fs->super->s_wtime > (__u32) ctx->now + ctx->time_fudge) {
|
||||
if (fs->super->s_wtime > (__u32) ctx->now) {
|
||||
pctx.num = fs->super->s_wtime;
|
||||
if (fix_problem(ctx, PR_0_FUTURE_SB_LAST_WRITE, &pctx)) {
|
||||
problem = PR_0_FUTURE_SB_LAST_MOUNT;
|
||||
if (fs->super->s_wtime <= (__u32) ctx->now + ctx->time_fudge)
|
||||
problem = PR_0_FUTURE_SB_LAST_MOUNT_FUDGED;
|
||||
if (fix_problem(ctx, problem, &pctx)) {
|
||||
fs->super->s_wtime = ctx->now;
|
||||
ext2fs_mark_super_dirty(fs);
|
||||
}
|
||||
|
|
|
@ -43,6 +43,22 @@ INSTALL_DATA = @INSTALL_DATA@
|
|||
MKINSTALLDIRS = @MKINSTALLDIRS@
|
||||
mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
@ifGNUmake@ V =
|
||||
@ifGNUmake@ ifeq ($(strip $(V)),)
|
||||
@ifGNUmake@ # E = @echo
|
||||
@ifGNUmake@ # Q = @
|
||||
@ifGNUmake@ E = @E@
|
||||
@ifGNUmake@ Q = @Q@
|
||||
@ifGNUmake@ else
|
||||
@ifGNUmake@ E = @\#
|
||||
@ifGNUmake@ Q =
|
||||
@ifGNUmake@ endif
|
||||
|
||||
@ifNotGNUmake@ E = @E@
|
||||
@ifNotGNUmake@ Q = @Q@
|
||||
|
||||
l = @INTL_LIBTOOL_SUFFIX_PREFIX@
|
||||
|
||||
AR = ar
|
||||
|
|
|
@ -488,8 +488,10 @@ errcode_t ext2fs_block_iterate2(ext2_filsys fs,
|
|||
abort_exit:
|
||||
if (ret & BLOCK_CHANGED) {
|
||||
retval = ext2fs_write_inode(fs, ino, &inode);
|
||||
if (retval)
|
||||
return retval;
|
||||
if (retval) {
|
||||
ret |= BLOCK_ERROR;
|
||||
ctx.errcode = retval;
|
||||
}
|
||||
}
|
||||
errout:
|
||||
if (!block_buf)
|
||||
|
|
|
@ -104,7 +104,7 @@ static void dbg_print_extent(char *desc, struct ext2fs_extent *extent)
|
|||
{
|
||||
if (desc)
|
||||
printf("%s: ", desc);
|
||||
printf("extent: lblk %llu--%llu, len %lu, pblk %llu, flags: ",
|
||||
printf("extent: lblk %llu--%llu, len %u, pblk %llu, flags: ",
|
||||
extent->e_lblk, extent->e_lblk + extent->e_len - 1,
|
||||
extent->e_len, extent->e_pblk);
|
||||
if (extent->e_flags & EXT2_EXTENT_FLAGS_LEAF)
|
||||
|
@ -321,7 +321,7 @@ retry:
|
|||
return EXT2_ET_EXTENT_NO_NEXT;
|
||||
}
|
||||
if (op != EXT2_EXTENT_NEXT_SIB) {
|
||||
#ifdef DEBUG
|
||||
#ifdef DEBUG_GET_EXTENT
|
||||
printf("<<<< OP = %s\n",
|
||||
(op == EXT2_EXTENT_DOWN) ? "down" :
|
||||
((op == EXT2_EXTENT_UP) ? "up" : "unknown"));
|
||||
|
@ -352,7 +352,7 @@ retry:
|
|||
return EXT2_ET_EXTENT_NO_PREV;
|
||||
}
|
||||
if (op != EXT2_EXTENT_PREV_SIB) {
|
||||
#ifdef DEBUG
|
||||
#ifdef DEBUG_GET_EXTENT
|
||||
printf("<<<< OP = %s\n",
|
||||
(op == EXT2_EXTENT_DOWN_AND_LAST) ? "down/last" :
|
||||
((op == EXT2_EXTENT_UP) ? "up" : "unknown"));
|
||||
|
@ -366,7 +366,7 @@ retry:
|
|||
op = EXT2_EXTENT_DOWN;
|
||||
else
|
||||
op = EXT2_EXTENT_LAST_SIB;
|
||||
#ifdef DEBUG
|
||||
#ifdef DEBUG_GET_EXTENT
|
||||
printf("<<<< OP = %s\n",
|
||||
(op == EXT2_EXTENT_DOWN) ? "down" : "last_sib");
|
||||
#endif
|
||||
|
@ -481,7 +481,7 @@ retry:
|
|||
if (handle->level < handle->max_depth)
|
||||
path->visit_num = 1;
|
||||
}
|
||||
#ifdef DEBUG
|
||||
#ifdef DEBUG_GET_EXTENT
|
||||
printf("Down to level %d/%d, end_blk=%llu\n",
|
||||
handle->level, handle->max_depth,
|
||||
path->end_blk);
|
||||
|
@ -495,7 +495,7 @@ retry:
|
|||
return EXT2_ET_NO_CURRENT_NODE;
|
||||
|
||||
extent->e_flags = 0;
|
||||
#ifdef DEBUG
|
||||
#ifdef DEBUG_GET_EXTENT
|
||||
printf("(Left %d)\n", path->left);
|
||||
#endif
|
||||
|
||||
|
@ -628,7 +628,14 @@ static errcode_t extent_goto(ext2_extent_handle_t handle,
|
|||
return EXT2_ET_OP_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
printf("goto extent ino %u, level %d, %llu\n", handle->ino,
|
||||
leaf_level, blk);
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_GOTO_EXTENTS
|
||||
dbg_print_extent("root", &extent);
|
||||
#endif
|
||||
while (1) {
|
||||
if (handle->max_depth - handle->level == leaf_level) {
|
||||
/* block is in this &extent */
|
||||
|
@ -658,7 +665,9 @@ static errcode_t extent_goto(ext2_extent_handle_t handle,
|
|||
if (retval)
|
||||
return retval;
|
||||
|
||||
#ifdef DEBUG_GOTO_EXTENTS
|
||||
dbg_print_extent("next", &extent);
|
||||
#endif
|
||||
if (blk == extent.e_lblk)
|
||||
goto go_down;
|
||||
if (blk > extent.e_lblk)
|
||||
|
@ -669,7 +678,9 @@ static errcode_t extent_goto(ext2_extent_handle_t handle,
|
|||
if (retval)
|
||||
return retval;
|
||||
|
||||
#ifdef DEBUG_GOTO_EXTENTS
|
||||
dbg_print_extent("prev", &extent);
|
||||
#endif
|
||||
|
||||
go_down:
|
||||
retval = ext2fs_extent_get(handle, EXT2_EXTENT_DOWN,
|
||||
|
@ -677,7 +688,9 @@ static errcode_t extent_goto(ext2_extent_handle_t handle,
|
|||
if (retval)
|
||||
return retval;
|
||||
|
||||
#ifdef DEBUG_GOTO_EXTENTS
|
||||
dbg_print_extent("down", &extent);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -765,6 +778,11 @@ errcode_t ext2fs_extent_replace(ext2_extent_handle_t handle,
|
|||
if (!path->curr)
|
||||
return EXT2_ET_NO_CURRENT_NODE;
|
||||
|
||||
#ifdef DEBUG
|
||||
printf("extent replace: %u ", handle->ino);
|
||||
dbg_print_extent(0, extent);
|
||||
#endif
|
||||
|
||||
if (handle->level == handle->max_depth) {
|
||||
ex = path->curr;
|
||||
|
||||
|
@ -922,7 +940,8 @@ static errcode_t extent_node_split(ext2_extent_handle_t handle)
|
|||
goto done;
|
||||
|
||||
#ifdef DEBUG
|
||||
printf("will copy to new node at block %lu\n", new_node_pblk);
|
||||
printf("will copy to new node at block %lu\n",
|
||||
(unsigned long) new_node_pblk);
|
||||
#endif
|
||||
|
||||
/* Copy data into new block buffer */
|
||||
|
@ -1040,6 +1059,11 @@ errcode_t ext2fs_extent_insert(ext2_extent_handle_t handle, int flags,
|
|||
if (!handle->path)
|
||||
return EXT2_ET_NO_CURRENT_NODE;
|
||||
|
||||
#ifdef DEBUG
|
||||
printf("extent insert: %u ", handle->ino);
|
||||
dbg_print_extent(0, extent);
|
||||
#endif
|
||||
|
||||
path = handle->path + handle->level;
|
||||
|
||||
if (path->entries >= path->max_entries) {
|
||||
|
@ -1122,16 +1146,24 @@ errcode_t ext2fs_extent_set_bmap(ext2_extent_handle_t handle,
|
|||
int mapped = 1; /* logical is mapped? */
|
||||
int orig_height;
|
||||
int extent_uninit = 0;
|
||||
int prev_uninit = 0;
|
||||
int next_uninit = 0;
|
||||
int new_uninit = 0;
|
||||
int max_len = EXT_INIT_MAX_LEN;
|
||||
int has_prev, has_next;
|
||||
blk64_t orig_lblk;
|
||||
struct extent_path *path;
|
||||
struct ext2fs_extent extent;
|
||||
struct ext2fs_extent extent, next_extent, prev_extent;
|
||||
struct ext2fs_extent newextent;
|
||||
struct ext2_extent_info info;
|
||||
|
||||
EXT2_CHECK_MAGIC(handle, EXT2_ET_MAGIC_EXTENT_HANDLE);
|
||||
|
||||
#ifdef DEBUG
|
||||
printf("set_bmap ino %u log %lld phys %lld flags %d\n",
|
||||
handle->ino, logical, physical, flags);
|
||||
#endif
|
||||
|
||||
if (!(handle->fs->flags & EXT2_FLAG_RW))
|
||||
return EXT2_ET_RO_FILSYS;
|
||||
|
||||
|
@ -1193,12 +1225,44 @@ errcode_t ext2fs_extent_set_bmap(ext2_extent_handle_t handle,
|
|||
/*
|
||||
* This may be the extent *before* the requested logical,
|
||||
* if it's currently unmapped.
|
||||
*
|
||||
* Get the previous and next leaf extents, if they are present.
|
||||
*/
|
||||
retval = ext2fs_extent_get(handle, EXT2_EXTENT_CURRENT, &extent);
|
||||
if (retval)
|
||||
goto done;
|
||||
if (extent.e_flags & EXT2_EXTENT_FLAGS_UNINIT)
|
||||
extent_uninit = 1;
|
||||
retval = ext2fs_extent_get(handle, EXT2_EXTENT_NEXT_LEAF, &next_extent);
|
||||
if (retval) {
|
||||
has_next = 0;
|
||||
if (retval != EXT2_ET_EXTENT_NO_NEXT)
|
||||
goto done;
|
||||
} else {
|
||||
dbg_print_extent("set_bmap: next_extent",
|
||||
&next_extent);
|
||||
has_next = 1;
|
||||
if (next_extent.e_flags & EXT2_EXTENT_FLAGS_UNINIT)
|
||||
next_uninit = 1;
|
||||
}
|
||||
retval = ext2fs_extent_goto(handle, logical);
|
||||
if (retval && retval != EXT2_ET_EXTENT_NOT_FOUND)
|
||||
goto done;
|
||||
retval = ext2fs_extent_get(handle, EXT2_EXTENT_PREV_LEAF, &prev_extent);
|
||||
if (retval) {
|
||||
has_prev = 0;
|
||||
if (retval != EXT2_ET_EXTENT_NO_PREV)
|
||||
goto done;
|
||||
} else {
|
||||
has_prev = 1;
|
||||
dbg_print_extent("set_bmap: prev_extent",
|
||||
&prev_extent);
|
||||
if (prev_extent.e_flags & EXT2_EXTENT_FLAGS_UNINIT)
|
||||
prev_uninit = 1;
|
||||
}
|
||||
retval = ext2fs_extent_goto(handle, logical);
|
||||
if (retval && retval != EXT2_ET_EXTENT_NOT_FOUND)
|
||||
goto done;
|
||||
|
||||
/* check if already pointing to the requested physical */
|
||||
if (mapped && (new_uninit == extent_uninit) &&
|
||||
|
@ -1219,6 +1283,28 @@ errcode_t ext2fs_extent_set_bmap(ext2_extent_handle_t handle,
|
|||
((int) extent.e_len < max_len-1)) {
|
||||
extent.e_len++;
|
||||
retval = ext2fs_extent_replace(handle, 0, &extent);
|
||||
} else if ((logical == extent.e_lblk - 1) &&
|
||||
(physical == extent.e_pblk - 1) &&
|
||||
(new_uninit == extent_uninit) &&
|
||||
((int) extent.e_len < max_len - 1)) {
|
||||
extent.e_len++;
|
||||
extent.e_lblk--;
|
||||
extent.e_pblk--;
|
||||
retval = ext2fs_extent_replace(handle, 0, &extent);
|
||||
} else if (has_next &&
|
||||
(logical == next_extent.e_lblk - 1) &&
|
||||
(physical == next_extent.e_pblk - 1) &&
|
||||
(new_uninit == next_uninit) &&
|
||||
((int) next_extent.e_len < max_len - 1)) {
|
||||
retval = ext2fs_extent_get(handle,
|
||||
EXT2_EXTENT_NEXT_LEAF,
|
||||
&next_extent);
|
||||
if (retval)
|
||||
goto done;
|
||||
next_extent.e_len++;
|
||||
next_extent.e_lblk--;
|
||||
next_extent.e_pblk--;
|
||||
retval = ext2fs_extent_replace(handle, 0, &next_extent);
|
||||
} else if (logical < extent.e_lblk)
|
||||
retval = ext2fs_extent_insert(handle, 0, &newextent);
|
||||
else
|
||||
|
@ -1250,14 +1336,32 @@ errcode_t ext2fs_extent_set_bmap(ext2_extent_handle_t handle,
|
|||
#ifdef DEBUG
|
||||
printf("(re/un)mapping last block in extent\n");
|
||||
#endif
|
||||
/* Make sure insert works before replacing old extent */
|
||||
if (physical) {
|
||||
retval = ext2fs_extent_insert(handle,
|
||||
EXT2_EXTENT_INSERT_AFTER, &newextent);
|
||||
if (has_next &&
|
||||
(logical == (next_extent.e_lblk - 1)) &&
|
||||
(physical == (next_extent.e_pblk - 1)) &&
|
||||
(new_uninit == next_uninit) &&
|
||||
((int) next_extent.e_len < max_len - 1)) {
|
||||
retval = ext2fs_extent_get(handle,
|
||||
EXT2_EXTENT_NEXT_LEAF, &next_extent);
|
||||
if (retval)
|
||||
goto done;
|
||||
next_extent.e_len++;
|
||||
next_extent.e_lblk--;
|
||||
next_extent.e_pblk--;
|
||||
retval = ext2fs_extent_replace(handle, 0,
|
||||
&next_extent);
|
||||
if (retval)
|
||||
goto done;
|
||||
} else
|
||||
retval = ext2fs_extent_insert(handle,
|
||||
EXT2_EXTENT_INSERT_AFTER, &newextent);
|
||||
if (retval)
|
||||
goto done;
|
||||
/* Now pointing at inserted extent; move back to prev */
|
||||
retval = ext2fs_extent_goto(handle, logical - 1);
|
||||
retval = ext2fs_extent_get(handle,
|
||||
EXT2_EXTENT_PREV_LEAF,
|
||||
&extent);
|
||||
if (retval)
|
||||
goto done;
|
||||
}
|
||||
|
@ -1270,37 +1374,31 @@ errcode_t ext2fs_extent_set_bmap(ext2_extent_handle_t handle,
|
|||
printf("(re/un)mapping first block in extent\n");
|
||||
#endif
|
||||
if (physical) {
|
||||
retval = ext2fs_extent_get(handle,
|
||||
EXT2_EXTENT_PREV_LEAF,
|
||||
&extent);
|
||||
if (extent.e_flags & EXT2_EXTENT_FLAGS_UNINIT)
|
||||
extent_uninit = 1;
|
||||
if (retval == EXT2_ET_EXTENT_NO_PREV) {
|
||||
retval = ext2fs_extent_goto(handle, logical);
|
||||
if (has_prev &&
|
||||
(logical == (prev_extent.e_lblk +
|
||||
prev_extent.e_len)) &&
|
||||
(physical == (prev_extent.e_pblk +
|
||||
prev_extent.e_len)) &&
|
||||
(new_uninit == prev_uninit) &&
|
||||
((int) prev_extent.e_len < max_len-1)) {
|
||||
retval = ext2fs_extent_get(handle,
|
||||
EXT2_EXTENT_PREV_LEAF, &prev_extent);
|
||||
if (retval)
|
||||
goto done;
|
||||
prev_extent.e_len++;
|
||||
retval = ext2fs_extent_replace(handle, 0,
|
||||
&prev_extent);
|
||||
} else
|
||||
retval = ext2fs_extent_insert(handle,
|
||||
0, &newextent);
|
||||
} else if (retval)
|
||||
if (retval)
|
||||
goto done;
|
||||
else if ((logical == extent.e_lblk + extent.e_len) &&
|
||||
(physical == extent.e_pblk + extent.e_len) &&
|
||||
(new_uninit == extent_uninit) &&
|
||||
((int) extent.e_len < max_len-1)) {
|
||||
extent.e_len++;
|
||||
retval = ext2fs_extent_replace(handle, 0,
|
||||
&extent);
|
||||
} else {
|
||||
retval = ext2fs_extent_insert(handle,
|
||||
EXT2_EXTENT_INSERT_AFTER, &newextent);
|
||||
}
|
||||
retval = ext2fs_extent_get(handle,
|
||||
EXT2_EXTENT_NEXT_LEAF,
|
||||
&extent);
|
||||
if (retval)
|
||||
goto done;
|
||||
}
|
||||
retval = ext2fs_extent_get(handle, EXT2_EXTENT_NEXT_LEAF,
|
||||
&extent);
|
||||
if (retval)
|
||||
goto done;
|
||||
extent.e_pblk++;
|
||||
extent.e_lblk++;
|
||||
extent.e_len--;
|
||||
|
@ -1363,6 +1461,19 @@ errcode_t ext2fs_extent_delete(ext2_extent_handle_t handle, int flags)
|
|||
if (!handle->path)
|
||||
return EXT2_ET_NO_CURRENT_NODE;
|
||||
|
||||
#ifdef DEBUG
|
||||
{
|
||||
struct ext2fs_extent extent;
|
||||
|
||||
retval = ext2fs_extent_get(handle, EXT2_EXTENT_CURRENT,
|
||||
&extent);
|
||||
if (retval == 0) {
|
||||
printf("extent delete %u ", handle->ino);
|
||||
dbg_print_extent(0, &extent);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
path = handle->path + handle->level;
|
||||
if (!path->curr)
|
||||
return EXT2_ET_NO_CURRENT_NODE;
|
||||
|
@ -1885,7 +1996,8 @@ void do_goto_block(int argc, char **argv)
|
|||
retval = extent_goto(current_handle, level, (blk64_t) blk);
|
||||
|
||||
if (retval) {
|
||||
com_err(argv[0], retval, "while trying to go to block %lu, level %d",
|
||||
com_err(argv[0], retval,
|
||||
"while trying to go to block %u, level %d",
|
||||
blk, level);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -95,8 +95,6 @@ static int get_bmap(int fd, unsigned long block, unsigned long *phy_blk)
|
|||
int ret;
|
||||
unsigned int b;
|
||||
|
||||
printf("Calling get_bmap for block %lu\n", block);
|
||||
abort();
|
||||
b = block;
|
||||
ret = ioctl(fd, FIBMAP, &b); /* FIBMAP takes pointer to integer */
|
||||
if (ret < 0) {
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include <fcntl.h>
|
||||
#include <ctype.h>
|
||||
#include <time.h>
|
||||
|
|
Loading…
Reference in New Issue