Hello community,
here is the log from the commit of package xfsprogs
checked in at Mon Feb 4 17:44:00 CET 2008.
--------
--- xfsprogs/xfsprogs.changes 2007-10-23 15:00:24.000000000 +0200
+++ /mounts/work_src_done/STABLE/xfsprogs/xfsprogs.changes 2008-02-04 11:31:36.000000000 +0100
@@ -1,0 +2,20 @@
+Mon Feb 4 11:29:42 CET 2008 - mmarek@suse.cz
+
+- updated to version 2.9.5
+ * Updated mkfs.xfs defaults.
+ * Make xfs_info handle mount points with spaces.
+ * Improve xfs_repair's handling of invalid freespace btree
+ extents.
+ * Rebuild directories in xfs_repair if "." and ".." aren't the
+ first two directory entries. This guarantees a directory is
+ deletable.
+ * Changed mkfs.xfs -f to wipe all old AG headers, not just the
+ ones up to the end of the new filesystem size.
+ * Purged the end of device whack buffer in mkfs.xfs to prevent a
+ warning in certain device sizes.
+ * Man page fixes. Thanks to Utako Kusaka
+ for this.
+ * Disable the ability to turn off unwritten extents in mkfs.
+
+
+-------------------------------------------------------------------
Old:
----
xfsprogs_2.9.4-1.tar.bz2
New:
----
xfsprogs_2.9.5-1.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xfsprogs.spec ++++++
--- /var/tmp/diff_new_pack.E30538/_old 2008-02-04 17:42:19.000000000 +0100
+++ /var/tmp/diff_new_pack.E30538/_new 2008-02-04 17:42:19.000000000 +0100
@@ -1,7 +1,7 @@
#
-# spec file for package xfsprogs (Version 2.9.4)
+# spec file for package xfsprogs (Version 2.9.5)
#
-# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
@@ -12,7 +12,7 @@
Name: xfsprogs
BuildRequires: e2fsprogs-devel
-Version: 2.9.4
+Version: 2.9.5
Release: 1
# hint for ZYPP
Supplements: filesystem(xfs)
@@ -131,8 +131,25 @@
%_libdir/*.a
%_libdir/*.la
/usr/share/man/man3/*
+
%changelog
-* Tue Oct 23 2007 - mmarek@suse.cz
+* Mon Feb 04 2008 mmarek@suse.cz
+- updated to version 2.9.5
+ * Updated mkfs.xfs defaults.
+ * Make xfs_info handle mount points with spaces.
+ * Improve xfs_repair's handling of invalid freespace btree
+ extents.
+ * Rebuild directories in xfs_repair if "." and ".." aren't the
+ first two directory entries. This guarantees a directory is
+ deletable.
+ * Changed mkfs.xfs -f to wipe all old AG headers, not just the
+ ones up to the end of the new filesystem size.
+ * Purged the end of device whack buffer in mkfs.xfs to prevent a
+ warning in certain device sizes.
+ * Man page fixes. Thanks to Utako Kusaka
+ for this.
+ * Disable the ability to turn off unwritten extents in mkfs.
+* Tue Oct 23 2007 mmarek@suse.cz
- updated to version 2.9.4
* Fixed xfs_repair segfaulting with directory block size
different to the filesystem blocksize.
@@ -177,14 +194,14 @@
* Added new tools: xfs_metadump and xfs_mdrestore.
* Fix up the HAVE___U32 fix from 2.8.20
Thanks to Eric Sandeen for pointing this out.
-* Fri Jun 22 2007 - mmarek@suse.cz
+* Fri Jun 22 2007 mmarek@suse.cz
- updated to 2.8.21
* Add support for lazy superblock counters in mkfs.xfs, xfs_db,
xfs_repair, xfs_growfs and also libxfs.
* Fix xfs_quota project command to stop it operating on special files.
Thanks to Leo Baltus.
- specfile cleanup
-* Wed Apr 04 2007 - mmarek@suse.cz
+* Wed Apr 04 2007 mmarek@suse.cz
- updated to version 2.8.20
* Fix xfs_repair not detecting invalid btree root in inodes.
* Fix xfs_repair restoring corrupted superblock after repairing
@@ -248,9 +265,9 @@
perform better for buffered writes.
- added Supplements: filesystem(xfs), so that xfsprogs is installed
when an xfs filesystem is used (fate #301966)
-* Wed Oct 25 2006 - mjancar@suse.cz
+* Wed Oct 25 2006 mjancar@suse.cz
- fix xfq_quota man page (#214590)
-* Fri Oct 20 2006 - mjancar@suse.cz
+* Fri Oct 20 2006 mjancar@suse.cz
- update to 2.8.11
* xfs_repair prefetch optimisations.
* Make many tools use direct I/O on Linux if the underlying
@@ -272,9 +289,9 @@
* Fix annoying "ignores datarootdir" warning from configure.
* Fix issues with makedepend build infrastructure.
* Add prefetch code for improved xfs_repair run times.
-* Fri Jul 28 2006 - ro@suse.de
+* Fri Jul 28 2006 ro@suse.de
- fix file list (remove pl locale directory)
-* Thu Jul 27 2006 - mjancar@suse.cz
+* Thu Jul 27 2006 mjancar@suse.cz
- update to 2.8.4
* Fix a situation where xfs_growfs can fail to match a block
device to a filesystem correctly; thanks to Bastian Kleineidam.
@@ -317,35 +334,35 @@
* xfs-cmds-25183a-fix-xfs-headers-for-dmf
* xfs-cmds-25194a-fix-parents-interface
* xfs-copy-bug.diff
-* Wed Jun 14 2006 - dmueller@suse.de
+* Thu Jun 15 2006 dmueller@suse.de
- build parallel
-* Tue Apr 18 2006 - ro@suse.de
+* Tue Apr 18 2006 ro@suse.de
- fix build on ppc64: don't redefine __s64 and __u64
-* Tue Mar 07 2006 - agruen@suse.de
+* Tue Mar 07 2006 agruen@suse.de
- xfs-copy-bug.diff: Fix a bug in the xfs_copy log re-write code
avoiding duplicate UUIDs. Also fix the logic for sizing the
direct write buffer, which fails for large maxdio sizes
(155749).
-* Fri Feb 17 2006 - mjancar@suse.cz
+* Fri Feb 17 2006 mjancar@suse.cz
- include bugfixes from SGI (#151782)
-* Thu Feb 09 2006 - mjancar@suse.cz
+* Thu Feb 09 2006 mjancar@suse.cz
- make fsck.xfs verbose (#146670)
-* Wed Jan 25 2006 - mls@suse.de
+* Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires
-* Thu Jan 19 2006 - mjancar@suse.cz
+* Thu Jan 19 2006 mjancar@suse.cz
- fix some files not owned by root:root
-* Tue Jan 17 2006 - mjancar@suse.cz
+* Tue Jan 17 2006 mjancar@suse.cz
- the tarball labeled 2.7.11 was wrong version,
use a corrected one received from SGI
-* Mon Jan 16 2006 - mjancar@suse.cz
+* Mon Jan 16 2006 mjancar@suse.cz
- update to 2.7.11
-* Wed Jan 11 2006 - mjancar@suse.cz
+* Wed Jan 11 2006 mjancar@suse.cz
- update to 2.7.3
-* Wed Sep 07 2005 - lmichnovic@suse.cz
+* Wed Sep 07 2005 lmichnovic@suse.cz
- changed atributes of file /lib/libhandle.so.1.0.3 to 0755 (#114848)
-* Sun Aug 21 2005 - ro@suse.de
+* Sun Aug 21 2005 ro@suse.de
- no .a/.la files in /
-* Tue Aug 02 2005 - mjancar@suse.cz
+* Tue Aug 02 2005 mjancar@suse.cz
- Update to 2.6.36 with the following changes since .28:
o Fix mkfs stripe unit alignment checks for external logs
o Fix running xfs_db on non-XFS devices (was segfaulting)
@@ -384,7 +401,7 @@
for volumes that are not stripes (e.g. concat/mirror).
o Fix mkfs.xfs -dfile.
o Fix libhandle on 64bit, Big Endian systems.
-* Tue Apr 05 2005 - mmj@suse.de
+* Tue Apr 05 2005 mmj@suse.de
- Add gettext-devel to #nfb since it needs msgfmt
- Update to 2.6.28 with the following changes since .25:
o Fix compiler warning in repair/dir.c size checks.
@@ -411,22 +428,22 @@
do not require --enable-termcap when linking against
libreadline.
o Minor man page updates.
-* Mon Feb 07 2005 - mjancar@suse.cz
+* Mon Feb 07 2005 mjancar@suse.cz
- update to 2.6.25
-* Fri Aug 06 2004 - mjancar@suse.cz
+* Fri Aug 06 2004 mjancar@suse.cz
- update to 2.6.13
-* Thu Feb 26 2004 - mjancar@suse.cz
+* Thu Feb 26 2004 mjancar@suse.cz
- update to 2.6.3
-* Sat Jan 10 2004 - adrian@suse.de
+* Sat Jan 10 2004 adrian@suse.de
- build as user
-* Fri Oct 03 2003 - schwab@suse.de
+* Fri Oct 03 2003 schwab@suse.de
- Fix broken ioctl definitions.
-* Thu Aug 21 2003 - ja@suse.cz
+* Thu Aug 21 2003 ja@suse.cz
- Update to version 2.5.6.
- Fix a mkfs problem where it could exit inappropriately when
a large data volume stripe unit was either specified on the
command line or via querying the underlying volume manager.
-* Fri Aug 08 2003 - ja@suse.cz
+* Fri Aug 08 2003 ja@suse.cz
- Updated to 2.5.5 (XFS 1.3 release).
- Introducing xfs_copy.
- Fix shell quoting problem in xfs_bmap script.
@@ -438,7 +455,7 @@
- Fix libdisk device driver (volume managers) detection code
used by mkfs, so that drivers with multiple majors are not
incorrectly processed.
-* Fri Jun 20 2003 - ja@suse.cz
+* Fri Jun 20 2003 ja@suse.cz
- Upgrade to version 2.5.0.
- Allow xfs_repair to run on read-only filesystems.
- Fix a bug in mkfs - creating version 2 logs, an incorrect
@@ -449,9 +466,9 @@
to create larger logs at smaller filesystem sizes by default
(thanks to Andi Kleen for the patch).
- Enable support for sector sizes larger than 512 bytes.
-* Mon Jun 16 2003 - ja@suse.cz
+* Mon Jun 16 2003 ja@suse.cz
- File list fixed for xfsprogs-devel.
-* Mon Apr 28 2003 - jderfina@suse.cz
+* Mon Apr 28 2003 jderfina@suse.cz
- upgrade to version 2.4.7
- Fix a bug in detection of "clean" and "error" states with MD devices.
- Added the xfs_io(8) command, an xfs_db(8) alike command for testing
@@ -460,7 +477,7 @@
the realtime bitmap inode) in xfs_repair.
- Enable unwritten extents by default in mkfs.xfs. Should be used with
kernel code newer than Mar 3 2003.
-* Wed Feb 12 2003 - jderfina@suse.cz
+* Wed Feb 12 2003 jderfina@suse.cz
- update to version 2.3.9
- Additional xfs_repair check in v2 directory handling for blks
with no data entries (merged from IRIX), includes several
@@ -476,39 +493,39 @@
really should have been (due to a libxfs problem).
- Fix an endian bug in xfs_db freesp command when descending
into multi-level agf cnt/bno btrees.
-* Tue Jan 21 2003 - agruen@suse.de
+* Tue Jan 21 2003 agruen@suse.de
- Remove (Prereq: /sbin/ldconfig) tag, and use %%run_ldconfig
in %%post and %%postun instead.
-* Fri Dec 13 2002 - jderfina@suse.cz
+* Fri Dec 13 2002 jderfina@suse.cz
- upgrade to version 2.3.6.
-* Wed Oct 09 2002 - jderfina@suse.cz
+* Wed Oct 09 2002 jderfina@suse.cz
- update to version 2.3.3
-* Tue Aug 20 2002 - mge@suse.de
+* Tue Aug 20 2002 mge@suse.de
- update to 2.2.1 (mostly by gd@suse.de)
-* Thu May 09 2002 - tcrhak@suse.cz
+* Thu May 09 2002 tcrhak@suse.cz
- fixed for 64 bit platforms
-* Fri Apr 19 2002 - kukuk@suse.de
+* Fri Apr 19 2002 kukuk@suse.de
- Look at first in lib64 for libuuid.a before using lib
-* Tue Feb 26 2002 - ro@suse.de
+* Tue Feb 26 2002 ro@suse.de
- update to 2.0.0
- split off attr and acl subpacks
-* Tue Aug 21 2001 - adostal@suse.cz
+* Tue Aug 21 2001 adostal@suse.cz
- split xfsprogs to package xfsprogs-1.2.8, package xfsdump-1.0.9
and package dmapi-0.1.1
- create patches destdir and dirs for xfsprogs version 1.2.8
-* Wed Aug 15 2001 - adostal@suse.cz
+* Wed Aug 15 2001 adostal@suse.cz
- update acl to 1.0.7 ver.
- update xfsprogs to 1.2.8 ver.
- update dmapi to 0.1.1 ver.
- using $RPM_BUILD_ROOT
- create makefile and dirs patches
- split sources to acl, attr, dmapi, xfsdump, xfsprogs
-* Mon Jul 23 2001 - schwab@suse.de
+* Mon Jul 23 2001 schwab@suse.de
- Build with -fPIC, for inclusion in shared library.
- Use aclocal.
-* Wed Jun 20 2001 - ro@suse.de
+* Wed Jun 20 2001 ro@suse.de
- make it build (libtoolize, fix filelist)
-* Fri Jun 15 2001 - choeger@suse.de
+* Fri Jun 15 2001 choeger@suse.de
- did a cvs up today
-* Mon May 21 2001 - choeger@suse.de
+* Mon May 21 2001 choeger@suse.de
- first version
++++++ xfsprogs_2.9.4-1.tar.bz2 -> xfsprogs_2.9.5-1.tar.bz2 ++++++
++++ 2655 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/doc/CHANGES new/xfsprogs-2.9.5/doc/CHANGES
--- old/xfsprogs-2.9.4/doc/CHANGES 2007-09-11 04:01:15.000000000 +0200
+++ new/xfsprogs-2.9.5/doc/CHANGES 2008-01-21 07:13:40.000000000 +0100
@@ -1,3 +1,17 @@
+xfsprogs-2.9.5 (21 Jan 2007)
+ - Updated mkfs.xfs defaults.
+ - Make xfs_info handle mount points with spaces.
+ - Improve xfs_repair's handling of invalid freespace btree extents.
+ - Rebuild directories in xfs_repair if "." and ".." aren't the first
+ two directory entries. This guarantees a directory is deletable.
+ - Changed mkfs.xfs -f to wipe all old AG headers, not just the ones
+ up to the end of the new filesystem size.
+ - Purged the end of device whack buffer in mkfs.xfs to prevent a
+ warning in certain device sizes.
+ - Man page fixes. Thanks to Utako Kusaka
+ for this.
+ - Disable the ability to turn off unwritten extents in mkfs.
+
xfsprogs-2.9.4 (7 Sep 2007)
- Fixed xfs_repair segfaulting with directory block size different
to the filesystem blocksize.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/fsck/xfs_fsck.sh new/xfsprogs-2.9.5/fsck/xfs_fsck.sh
--- old/xfsprogs-2.9.4/fsck/xfs_fsck.sh 2007-09-11 04:01:15.000000000 +0200
+++ new/xfsprogs-2.9.5/fsck/xfs_fsck.sh 2007-10-09 02:27:18.000000000 +0200
@@ -10,6 +10,11 @@
a|A) AUTO=true;;
esac
done
+eval DEV=\${$#}
+if [ ! -e $DEV ]; then
+ echo "$0: $DEV does not exist"
+ exit 8
+fi
if $AUTO; then
echo "$0: XFS file system."
else
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/growfs/xfs_growfs.c new/xfsprogs-2.9.5/growfs/xfs_growfs.c
--- old/xfsprogs-2.9.4/growfs/xfs_growfs.c 2007-09-11 04:01:15.000000000 +0200
+++ new/xfsprogs-2.9.5/growfs/xfs_growfs.c 2008-01-17 02:49:04.000000000 +0100
@@ -58,7 +58,6 @@
int isint,
char *logname,
char *rtname,
- int unwritten,
int lazycount,
int dirversion,
int logversion,
@@ -68,7 +67,7 @@
"meta-data=%-22s isize=%-6u agcount=%u, agsize=%u blks\n"
" =%-22s sectsz=%-5u attr=%u\n"
"data =%-22s bsize=%-6u blocks=%llu, imaxpct=%u\n"
- " =%-22s sunit=%-6u swidth=%u blks, unwritten=%u\n"
+ " =%-22s sunit=%-6u swidth=%u blks\n"
"naming =version %-14u bsize=%-6u\n"
"log =%-22s bsize=%-6u blocks=%u, version=%u\n"
" =%-22s sectsz=%-5u sunit=%u blks, lazy-count=%u\n"
@@ -78,7 +77,7 @@
"", geo.sectsize, attrversion,
"", geo.blocksize, (unsigned long long)geo.datablocks,
geo.imaxpct,
- "", geo.sunit, geo.swidth, unwritten,
+ "", geo.sunit, geo.swidth,
dirversion, geo.dirblocksize,
isint ? _("internal") : logname ? logname : _("external"),
geo.blocksize, geo.logblocks, logversion,
@@ -115,7 +114,6 @@
xfs_fsop_geom_t ngeo; /* new fs geometry */
int rflag; /* -r flag */
long long rsize; /* new rt size in fs blocks */
- int unwritten; /* unwritten extent flag */
int lazycount; /* lazy superblock counters */
int xflag; /* -x flag */
char *fname; /* mount point name */
@@ -236,7 +234,6 @@
}
}
isint = geo.logstart > 0;
- unwritten = geo.flags & XFS_FSOP_GEOM_FLAGS_EXTFLG ? 1 : 0;
lazycount = geo.flags & XFS_FSOP_GEOM_FLAGS_LAZYSB ? 1 : 0;
dirversion = geo.flags & XFS_FSOP_GEOM_FLAGS_DIRV2 ? 2 : 1;
logversion = geo.flags & XFS_FSOP_GEOM_FLAGS_LOGV2 ? 2 : 1;
@@ -245,7 +242,7 @@
if (nflag) {
report_info(geo, datadev, isint, logdev, rtdev,
- unwritten, lazycount, dirversion, logversion,
+ lazycount, dirversion, logversion,
attrversion);
exit(0);
}
@@ -282,7 +279,7 @@
}
report_info(geo, datadev, isint, logdev, rtdev,
- unwritten, lazycount, dirversion, logversion,
+ lazycount, dirversion, logversion,
attrversion);
ddsize = xi.dsize;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/growfs/xfs_info.sh new/xfsprogs-2.9.5/growfs/xfs_info.sh
--- old/xfsprogs-2.9.4/growfs/xfs_info.sh 2007-09-11 04:01:15.000000000 +0200
+++ new/xfsprogs-2.9.5/growfs/xfs_info.sh 2008-01-21 06:45:53.000000000 +0100
@@ -16,10 +16,10 @@
;;
esac
done
-set -- extra $@
+set -- extra "$@"
shift $OPTIND
case $# in
- 1) xfs_growfs -p xfs_info -n $OPTS $1
+ 1) xfs_growfs -p xfs_info -n $OPTS "$1"
status=$?
;;
*) echo $USAGE 1>&2
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/libxfs/freebsd.c new/xfsprogs-2.9.5/libxfs/freebsd.c
--- old/xfsprogs-2.9.4/libxfs/freebsd.c 2007-09-11 04:01:18.000000000 +0200
+++ new/xfsprogs-2.9.5/libxfs/freebsd.c 2007-10-22 07:52:04.000000000 +0200
@@ -21,6 +21,7 @@
#include
#include
#include
+#include
int platform_has_uuid = 1;
extern char *progname;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/man/man8/mkfs.xfs.8 new/xfsprogs-2.9.5/man/man8/mkfs.xfs.8
--- old/xfsprogs-2.9.4/man/man8/mkfs.xfs.8 2007-09-11 04:01:19.000000000 +0200
+++ new/xfsprogs-2.9.5/man/man8/mkfs.xfs.8 2008-01-17 02:49:04.000000000 +0100
@@ -240,22 +240,6 @@
and
.B swidth
values.
-.TP
-.BI unwritten[= value ]
-This is used to specify whether unwritten extents are flagged as such,
-or not.
-The
-.I value
-is either 0 or 1, with 1 signifying that unwritten
-extent flagging should occur.
-If the suboption is omitted, unwritten extent flagging is enabled.
-If unwritten extents are flagged, filesystem write performance
-will be negatively affected for preallocated file extents, since
-extra filesystem transactions are required to convert extent flags
-for the range of the file written.
-This suboption should be disabled if the filesystem
-needs to be used on operating system versions which do not support the
-flagging capability.
.RE
.TP
.B \-f
@@ -567,7 +551,7 @@
command to terminate the branch of the filesystem it
is currently on and then continue
from the directory specified by
-the next line,in this case line 8
+the next line, in this case line 8.
It must be the last character
on a line.
The colon
@@ -610,13 +594,13 @@
used to specify the setgroupID mode, in which
case it is
.BR g .
-If setgroupID mode is not specified, the second character is
+If setgroupID mode is not specified, the third character is
.BR \- .
The remaining characters of the mode string are
a three digit octal number. This octal number
defines the owner, group, and other read, write,
and execute permissions for the file, respectively.
-Form more information on file permissions, see the
+For more information on file permissions, see the
.BR chmod (1)
command.
.IP
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/man/man8/xfs_admin.8 new/xfsprogs-2.9.5/man/man8/xfs_admin.8
--- old/xfsprogs-2.9.4/man/man8/xfs_admin.8 2007-09-11 04:01:19.000000000 +0200
+++ new/xfsprogs-2.9.5/man/man8/xfs_admin.8 2008-01-17 02:49:04.000000000 +0100
@@ -31,7 +31,8 @@
.TP
.B \-e
Enables unwritten extent support on a filesystem that does not
-already have this enabled.
+already have this enabled (for legacy filesystems, it can't be
+disabled anymore at mkfs time).
.TP
.B \-f
Specifies that the filesystem image to be processed is stored in a
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/man/man8/xfs_db.8 new/xfsprogs-2.9.5/man/man8/xfs_db.8
--- old/xfsprogs-2.9.4/man/man8/xfs_db.8 2007-09-11 04:01:19.000000000 +0200
+++ new/xfsprogs-2.9.5/man/man8/xfs_db.8 2007-10-04 08:54:11.000000000 +0200
@@ -153,30 +153,30 @@
command.
.TP
.BI ablock " filoff"
-Set current address to the offset .
-I filoff
+Set current address to the offset
+.I filoff
(a filesystem block number) in the attribute area of the current inode.
.TP
.BI "addr [" field-expression ]
Set current address to the value of the
.IR field-expression .
This is used to "follow" a reference in one structure to the object
-being referred to. If no argument is given the current address is printed.
+being referred to. If no argument is given, the current address is printed.
.TP
.BI "agf [" agno ]
Set current address to the AGF block for allocation group
.IR agno .
-If no argument is given use the current allocation group.
+If no argument is given, use the current allocation group.
.TP
.BI "agfl [" agno ]
Set current address to the AGFL block for allocation group
.IR agno .
-If no argument is given use the current allocation group.
+If no argument is given, use the current allocation group.
.TP
.BI "agi [" agno ]
Set current address to the AGI block for allocation group
.IR agno .
-If no argument is given use the current allocation group.
+If no argument is given, use the current allocation group.
.TP
.B b
See the
@@ -413,8 +413,8 @@
.IR d .
If no value for
.I d
-is given the current address is printed, expressed as a daddr.
-The type is set to .
+is given, the current address is printed, expressed as a daddr.
+The type is set to
.B data
(uninterpreted).
.TP
@@ -641,7 +641,7 @@
.IR agno .
If no
.I agno
-is given use the current allocation group number.
+is given, use the current allocation group number.
.TP
.BI "source " source-file
Process commands from
@@ -789,7 +789,7 @@
.PD
.RE
.TP
-.B agf
+.B agfl
The AGFL block contains block numbers for use of the block allocator;
it is in the fourth 512-byte block of each allocation group.
Each entry in the active list is a block number within the allocation group
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/man/man8/xfs_freeze.8 new/xfsprogs-2.9.5/man/man8/xfs_freeze.8
--- old/xfsprogs-2.9.4/man/man8/xfs_freeze.8 2007-09-11 04:01:19.000000000 +0200
+++ new/xfsprogs-2.9.5/man/man8/xfs_freeze.8 2007-10-04 08:54:11.000000000 +0200
@@ -43,7 +43,7 @@
.PP
The
.B \-u
-flagq is used to un-freeze the filesystem and allow
+flag is used to un-freeze the filesystem and allow
operations to continue.
Any filesystem modifications that were blocked by the freeze are
unblocked and allowed to complete.
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/man/man8/xfs_logprint.8 new/xfsprogs-2.9.5/man/man8/xfs_logprint.8
--- old/xfsprogs-2.9.4/man/man8/xfs_logprint.8 2007-09-11 04:01:19.000000000 +0200
+++ new/xfsprogs-2.9.5/man/man8/xfs_logprint.8 2007-10-04 08:54:11.000000000 +0200
@@ -76,7 +76,7 @@
an ordinary file with
.BR xfs_copy (8).
.TP
-.B \-l
+.BI \-l " logdev"
External log device. Only for those filesystems which use an external log.
.TP
.B \-i
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/man/man8/xfs_metadump.8 new/xfsprogs-2.9.5/man/man8/xfs_metadump.8
--- old/xfsprogs-2.9.4/man/man8/xfs_metadump.8 2007-09-11 04:01:19.000000000 +0200
+++ new/xfsprogs-2.9.5/man/man8/xfs_metadump.8 2007-10-04 08:54:11.000000000 +0200
@@ -39,11 +39,12 @@
.PP
By default,
.B xfs_metadump
-obfuscates most directory names and extended attribute names to allow the dumps
-to be sent without revealing confidential information. Extended attribute
-values are zeroed and no data is copied. The only exceptions are directory
-or attribute names that are 4 or less characters in length. Also directory
-names that span extents (this can only occur with the
+obfuscates most file (regular file, directory and symbolic link) names
+and extended attribute names to allow the dumps to be sent without
+revealing confidential information. Extended attribute values are zeroed
+and no data is copied. The only exceptions are file or attribute names
+that are 4 or less characters in length. Also file names that span extents
+(this can only occur with the
.BR mkfs.xfs (8)
options where
.B \-n
@@ -128,4 +129,4 @@
.BR xfs (5)
.SH BUGS
Email bug reports to
-.BR xfs@oss.sgi.com .
\ No newline at end of file
+.BR xfs@oss.sgi.com .
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/man/man8/xfs_repair.8 new/xfsprogs-2.9.5/man/man8/xfs_repair.8
--- old/xfsprogs-2.9.4/man/man8/xfs_repair.8 2007-09-11 04:01:19.000000000 +0200
+++ new/xfsprogs-2.9.5/man/man8/xfs_repair.8 2007-10-04 08:54:11.000000000 +0200
@@ -110,8 +110,7 @@
overrides the default buffer cache hash size. The total number of
buffer cache entries are limited to 8 times this amount. The default
size is set to use up the remainder of 75% of the system's physical
-RAM.
-size
+RAM size.
.TP
.BI ag_stride= ags_per_concat_unit
This creates additional processing threads to parallel process
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/mkfs/xfs_mkfs.c new/xfsprogs-2.9.5/mkfs/xfs_mkfs.c
--- old/xfsprogs-2.9.4/mkfs/xfs_mkfs.c 2007-09-11 04:01:20.000000000 +0200
+++ new/xfsprogs-2.9.5/mkfs/xfs_mkfs.c 2008-01-17 02:49:04.000000000 +0100
@@ -56,25 +56,23 @@
"sunit",
#define D_SWIDTH 5
"swidth",
-#define D_UNWRITTEN 6
- "unwritten",
-#define D_AGSIZE 7
+#define D_AGSIZE 6
"agsize",
-#define D_SU 8
+#define D_SU 7
"su",
-#define D_SW 9
+#define D_SW 8
"sw",
-#define D_SECTLOG 10
+#define D_SECTLOG 9
"sectlog",
-#define D_SECTSIZE 11
+#define D_SECTSIZE 10
"sectsize",
-#define D_NOALIGN 12
+#define D_NOALIGN 11
"noalign",
-#define D_RTINHERIT 13
+#define D_RTINHERIT 12
"rtinherit",
-#define D_PROJINHERIT 14
+#define D_PROJINHERIT 13
"projinherit",
-#define D_EXTSZINHERIT 15
+#define D_EXTSZINHERIT 14
"extszinherit",
NULL
};
@@ -376,14 +374,38 @@
}
}
+static int
+calc_default_imaxpct(
+ int blocklog,
+ __uint64_t dblocks)
+{
+ /*
+ * This returns the % of the disk space that is used for
+ * inodes, it changes relatively to the FS size:
+ * - over 50 TB, use 1%,
+ * - 1TB - 50 TB, use 5%,
+ * - under 1 TB, use XFS_DFL_IMAXIMUM_PCT (25%).
+ */
+
+ if (dblocks < TERABYTES(1, blocklog)) {
+ return XFS_DFL_IMAXIMUM_PCT;
+ } else if (dblocks < TERABYTES(50, blocklog)) {
+ return 5;
+ }
+
+ return 1;
+}
+
+
void
calc_default_ag_geometry(
int blocklog,
__uint64_t dblocks,
+ int multidisk,
__uint64_t *agsize,
__uint64_t *agcount)
{
- __uint64_t blocks;
+ __uint64_t blocks = 0;
__uint64_t count = 0;
int shift = 0;
@@ -415,6 +437,17 @@
*
* This scales us up smoothly between min/max AG sizes.
*/
+
+ if (!multidisk) {
+ if (dblocks >= TERABYTES(4, blocklog)) {
+ blocks = XFS_AG_MAX_BLOCKS(blocklog);
+ goto done;
+ }
+ count = 4;
+
+ goto done;
+ }
+
if (dblocks > GIGABYTES(512, blocklog))
shift = 5;
else if (dblocks > GIGABYTES(8, blocklog))
@@ -426,8 +459,12 @@
blocks = dblocks >> shift;
done:
+ ASSERT (count || blocks);
if (!count)
count = dblocks / blocks + (dblocks % blocks != 0);
+ if (!blocks)
+ blocks = dblocks / count;
+
*agsize = blocks;
*agcount = count;
}
@@ -558,15 +595,12 @@
goto done;
/*
- * block size and basic geometry seems alright, zero the secondaries,
- * but don't go beyond the end of the new filesystem.
+ * block size and basic geometry seems alright, zero the secondaries.
*/
bzero(buf, new_sb->sb_sectsize);
off = 0;
for (i = 1; i < sb.sb_agcount; i++) {
off += sb.sb_agblocks;
- if (off >= new_sb->sb_dblocks)
- break;
if (pwrite64(xi->dfd, buf, new_sb->sb_sectsize,
off << sb.sb_blocklog) == -1)
break;
@@ -607,7 +641,6 @@
int dsw;
int dsunit;
int dswidth;
- int extent_flagging;
int force_overwrite;
struct fsxattr fsx;
int iaflag;
@@ -680,7 +713,7 @@
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
- attrversion = 0;
+ attrversion = 2;
blflag = bsflag = slflag = ssflag = lslflag = lssflag = 0;
blocklog = blocksize = 0;
sectorlog = lsectorlog = XFS_MIN_SECTORSIZE_LOG;
@@ -689,7 +722,7 @@
ilflag = imflag = ipflag = isflag = 0;
liflag = laflag = lsflag = ldflag = lvflag = 0;
loginternal = 1;
- logversion = 1;
+ logversion = 2;
logagno = logblocks = rtblocks = rtextblocks = 0;
Nflag = nlflag = nsflag = nvflag = 0;
dirblocklog = dirblocksize = dirversion = 0;
@@ -700,7 +733,6 @@
dsize = logsize = rtsize = rtextsize = protofile = NULL;
dsu = dsw = dsunit = dswidth = lalign = lsu = lsunit = 0;
nodsflag = norsflag = 0;
- extent_flagging = 1;
force_overwrite = 0;
worst_freelist = 0;
lazy_sb_counters = 0;
@@ -880,14 +912,6 @@
D_NOALIGN);
nodsflag = 1;
break;
- case D_UNWRITTEN:
- if (!value)
- reqval('d', dopts, D_UNWRITTEN);
- c = atoi(value);
- if (c < 0 || c > 1)
- illegal(value, "d unwritten");
- extent_flagging = c;
- break;
case D_SECTLOG:
if (!value)
reqval('d', dopts, D_SECTLOG);
@@ -1771,10 +1795,14 @@
agsize /= blocksize;
agcount = dblocks / agsize + (dblocks % agsize != 0);
- } else if (daflag) /* User-specified AG size */
+ } else if (daflag) /* User-specified AG count */
agsize = dblocks / agcount + (dblocks % agcount != 0);
- else
- calc_default_ag_geometry(blocklog, dblocks, &agsize, &agcount);
+ else {
+ get_subvol_stripe_wrapper(dfile, SVTYPE_DATA,
+ &xlv_dsunit, &xlv_dswidth, §oralign),
+ calc_default_ag_geometry(blocklog, dblocks, xlv_dsunit | xlv_dswidth,
+ &agsize, &agcount);
+ }
/*
* If the last AG is too small, reduce the filesystem size
@@ -1993,7 +2021,7 @@
"meta-data=%-22s isize=%-6d agcount=%lld, agsize=%lld blks\n"
" =%-22s sectsz=%-5u attr=%u\n"
"data =%-22s bsize=%-6u blocks=%llu, imaxpct=%u\n"
- " =%-22s sunit=%-6u swidth=%u blks, unwritten=%u\n"
+ " =%-22s sunit=%-6u swidth=%u blks\n"
"naming =version %-14u bsize=%-6u\n"
"log =%-22s bsize=%-6d blocks=%lld, version=%d\n"
" =%-22s sectsz=%-5u sunit=%d blks, lazy-count=%d\n"
@@ -2001,8 +2029,8 @@
dfile, isize, (long long)agcount, (long long)agsize,
"", sectorsize, attrversion,
"", blocksize, (long long)dblocks,
- imflag ? imaxpct : XFS_DFL_IMAXIMUM_PCT,
- "", dsunit, dswidth, extent_flagging,
+ calc_default_imaxpct(blocklog, dblocks),
+ "", dsunit, dswidth,
dirversion, dirversion == 1 ? blocksize : dirblocksize,
logfile, 1 << blocklog, (long long)logblocks,
logversion, "", lsectorsize, lsunit, lazy_sb_counters,
@@ -2038,7 +2066,7 @@
(__uint8_t)(rtextents ?
libxfs_highbit32((unsigned int)rtextents) : 0);
sbp->sb_inprogress = 1; /* mkfs is in progress */
- sbp->sb_imax_pct = imflag ? imaxpct : XFS_DFL_IMAXIMUM_PCT;
+ sbp->sb_imax_pct = calc_default_imaxpct(blocklog, dblocks);
sbp->sb_icount = 0;
sbp->sb_ifree = 0;
sbp->sb_fdblocks = dblocks - agcount * XFS_PREALLOC_BLOCKS(mp) -
@@ -2069,7 +2097,7 @@
}
sbp->sb_features2 = XFS_SB_VERSION2_MKFS(lazy_sb_counters, attrversion == 2, 0);
sbp->sb_versionnum = XFS_SB_VERSION_MKFS(
- iaflag, dsunit != 0, extent_flagging,
+ iaflag, dsunit != 0,
dirversion == 2, logversion == 2, attrversion == 1,
(sectorsize != BBSIZE || lsectorsize != BBSIZE),
sbp->sb_features2 != 0);
@@ -2115,6 +2143,7 @@
BTOBB(WHACK_SIZE));
bzero(XFS_BUF_PTR(buf), WHACK_SIZE);
libxfs_writebuf(buf, LIBXFS_EXIT_ON_FAILURE);
+ libxfs_purgebuf(buf);
}
/*
@@ -2539,7 +2568,7 @@
/* blocksize */ [-b log=n|size=num]\n\
/* data subvol */ [-d agcount=n,agsize=n,file,name=xxx,size=num,\n\
(sunit=value,swidth=value|su=num,sw=num),\n\
- sectlog=n|sectsize=num,unwritten=0|1]\n\
+ sectlog=n|sectsize=num\n\
/* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2]\n\
/* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n\n\
sunit=value|su=num,sectlog=n|sectsize=num,\n\
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/mkfs/xfs_mkfs.h new/xfsprogs-2.9.5/mkfs/xfs_mkfs.h
--- old/xfsprogs-2.9.4/mkfs/xfs_mkfs.h 2007-09-11 04:01:19.000000000 +0200
+++ new/xfsprogs-2.9.5/mkfs/xfs_mkfs.h 2008-01-17 02:49:04.000000000 +0100
@@ -18,17 +18,21 @@
#ifndef __XFS_MKFS_H__
#define __XFS_MKFS_H__
-#define XFS_SB_VERSION_MKFS(ia,dia,extflag,dir2,log2,attr1,sflag,more) (\
- ((ia)||(dia)||(extflag)||(dir2)||(log2)||(attr1)||(sflag)||(more)) ? \
+#define XFS_DFL_SB_VERSION_BITS \
+ (XFS_SB_VERSION_NLINKBIT | \
+ XFS_SB_VERSION_EXTFLGBIT)
+
+#define XFS_SB_VERSION_MKFS(ia,dia,dir2,log2,attr1,sflag,more) (\
+ ((ia)||(dia)||(dir2)||(log2)||(attr1)||(sflag)||(more)) ? \
( XFS_SB_VERSION_4 | \
((ia) ? XFS_SB_VERSION_ALIGNBIT : 0) | \
((dia) ? XFS_SB_VERSION_DALIGNBIT : 0) | \
- ((extflag) ? XFS_SB_VERSION_EXTFLGBIT : 0) | \
((dir2) ? XFS_SB_VERSION_DIRV2BIT : 0) | \
((log2) ? XFS_SB_VERSION_LOGV2BIT : 0) | \
((attr1) ? XFS_SB_VERSION_ATTRBIT : 0) | \
((sflag) ? XFS_SB_VERSION_SECTORBIT : 0) | \
((more) ? XFS_SB_VERSION_MOREBITSBIT : 0) | \
+ XFS_DFL_SB_VERSION_BITS | \
0 ) : XFS_SB_VERSION_1 )
#define XFS_SB_VERSION2_MKFS(lazycount, attr2, parent) (\
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/repair/incore_ino.c new/xfsprogs-2.9.5/repair/incore_ino.c
--- old/xfsprogs-2.9.4/repair/incore_ino.c 2007-09-11 04:01:20.000000000 +0200
+++ new/xfsprogs-2.9.5/repair/incore_ino.c 2007-09-19 07:48:06.000000000 +0200
@@ -621,49 +621,61 @@
* is the Nth bit set in the mask is stored in the Nth location in
* the array where N starts at 0.
*/
+
void
-set_inode_parent(ino_tree_node_t *irec, int offset, xfs_ino_t parent)
-{
- int i;
- int cnt;
- int target;
- __uint64_t bitmask;
- parent_entry_t *tmp;
+set_inode_parent(
+ ino_tree_node_t *irec,
+ int offset,
+ xfs_ino_t parent)
+{
+ parent_list_t *ptbl;
+ int i;
+ int cnt;
+ int target;
+ __uint64_t bitmask;
+ parent_entry_t *tmp;
- ASSERT(full_ino_ex_data == 0);
+ if (full_ino_ex_data)
+ ptbl = irec->ino_un.ex_data->parents;
+ else
+ ptbl = irec->ino_un.plist;
- if (irec->ino_un.plist == NULL) {
- irec->ino_un.plist =
- (parent_list_t*)malloc(sizeof(parent_list_t));
- if (!irec->ino_un.plist)
+ if (ptbl == NULL) {
+ ptbl = (parent_list_t *)malloc(sizeof(parent_list_t));
+ if (!ptbl)
do_error(_("couldn't malloc parent list table\n"));
- irec->ino_un.plist->pmask = 1LL << offset;
- irec->ino_un.plist->pentries =
- (xfs_ino_t*)memalign(sizeof(xfs_ino_t), sizeof(xfs_ino_t));
- if (!irec->ino_un.plist->pentries)
+ if (full_ino_ex_data)
+ irec->ino_un.ex_data->parents = ptbl;
+ else
+ irec->ino_un.plist = ptbl;
+
+ ptbl->pmask = 1LL << offset;
+ ptbl->pentries = (xfs_ino_t*)memalign(sizeof(xfs_ino_t),
+ sizeof(xfs_ino_t));
+ if (!ptbl->pentries)
do_error(_("couldn't memalign pentries table\n"));
#ifdef DEBUG
- irec->ino_un.plist->cnt = 1;
+ ptbl->cnt = 1;
#endif
- irec->ino_un.plist->pentries[0] = parent;
+ ptbl->pentries[0] = parent;
return;
}
- if (irec->ino_un.plist->pmask & (1LL << offset)) {
+ if (ptbl->pmask & (1LL << offset)) {
bitmask = 1LL;
target = 0;
for (i = 0; i < offset; i++) {
- if (irec->ino_un.plist->pmask & bitmask)
+ if (ptbl->pmask & bitmask)
target++;
bitmask <<= 1;
}
#ifdef DEBUG
- ASSERT(target < irec->ino_un.plist->cnt);
+ ASSERT(target < ptbl->cnt);
#endif
- irec->ino_un.plist->pentries[target] = parent;
+ ptbl->pentries[target] = parent;
return;
}
@@ -672,7 +684,7 @@
cnt = target = 0;
for (i = 0; i < XFS_INODES_PER_CHUNK; i++) {
- if (irec->ino_un.plist->pmask & bitmask) {
+ if (ptbl->pmask & bitmask) {
cnt++;
if (i < offset)
target++;
@@ -682,7 +694,7 @@
}
#ifdef DEBUG
- ASSERT(cnt == irec->ino_un.plist->cnt);
+ ASSERT(cnt == ptbl->cnt);
#endif
ASSERT(cnt >= target);
@@ -690,23 +702,23 @@
if (!tmp)
do_error(_("couldn't memalign pentries table\n"));
- (void) bcopy(irec->ino_un.plist->pentries, tmp,
+ (void) bcopy(ptbl->pentries, tmp,
target * sizeof(parent_entry_t));
if (cnt > target)
- (void) bcopy(irec->ino_un.plist->pentries + target,
+ (void) bcopy(ptbl->pentries + target,
tmp + target + 1,
(cnt - target) * sizeof(parent_entry_t));
- free(irec->ino_un.plist->pentries);
+ free(ptbl->pentries);
- irec->ino_un.plist->pentries = tmp;
+ ptbl->pentries = tmp;
#ifdef DEBUG
- irec->ino_un.plist->cnt++;
+ ptbl->cnt++;
#endif
- irec->ino_un.plist->pentries[target] = parent;
- irec->ino_un.plist->pmask |= (1LL << offset);
+ ptbl->pentries[target] = parent;
+ ptbl->pmask |= (1LL << offset);
}
xfs_ino_t
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/repair/phase6.c new/xfsprogs-2.9.5/repair/phase6.c
--- old/xfsprogs-2.9.4/repair/phase6.c 2007-09-11 04:01:21.000000000 +0200
+++ new/xfsprogs-2.9.5/repair/phase6.c 2007-09-19 10:15:06.000000000 +0200
@@ -1624,16 +1624,25 @@
*/
if (is_inode_reached(irec, ino_offset)) {
junkit = 1;
- do_warn(
-_("entry \"%s\" in dir %llu points to an already connected dir inode %llu,\n"),
+ do_warn(_("entry \"%s\" in dir %llu points to an "
+ "already connected dir inode %llu,\n"),
fname, ino, lino);
} else if (parent == ino) {
add_inode_reached(irec, ino_offset);
add_inode_ref(current_irec, current_ino_offset);
- } else {
+ } else if (parent == NULLFSINO) {
+ /* ".." was missing, but this entry refers to it,
+ so, set it as the parent and mark for rebuild */
+ do_warn(_("entry \"%s\" in dir ino %llu doesn't have a"
+ " .. entry, will set it in ino %llu.\n"),
+ fname, ino, lino);
+ set_inode_parent(irec, ino_offset, ino);
+ add_inode_reached(irec, ino_offset);
+ add_inode_ref(current_irec, current_ino_offset);
+ } else {
junkit = 1;
- do_warn(
-_("entry \"%s\" in dir ino %llu not consistent with .. value (%llu) in ino %llu,\n"),
+ do_warn(_("entry \"%s\" in dir ino %llu not consistent"
+ " with .. value (%llu) in ino %llu,\n"),
fname, ino, parent, lino);
}
@@ -1788,10 +1797,12 @@
static void
longform_dir2_rebuild(
- xfs_mount_t *mp,
- xfs_ino_t ino,
- xfs_inode_t *ip,
- dir_hash_tab_t *hashtab)
+ xfs_mount_t *mp,
+ xfs_ino_t ino,
+ xfs_inode_t *ip,
+ ino_tree_node_t *irec,
+ int ino_offset,
+ dir_hash_tab_t *hashtab)
{
int error;
int nres;
@@ -1800,7 +1811,6 @@
xfs_fsblock_t firstblock;
xfs_bmap_free_t flist;
xfs_inode_t pip;
- int byhash;
dir_hash_ent_t *p;
int committed;
int done;
@@ -1813,19 +1823,14 @@
do_warn(_("rebuilding directory inode %llu\n"), ino);
/*
- * first attempt to locate the parent inode, if it can't be found,
- * set it to the root inode and it'll be adjusted or fixed later
- * if incorrect (the inode number here needs to be valid for the
- * libxfs_dir2_init() call).
- */
- byhash = DIR_HASH_FUNC(hashtab, libxfs_da_hashname((uchar_t*)"..", 2));
- pip.i_ino = mp->m_sb.sb_rootino;
- for (p = hashtab->byhash[byhash]; p; p = p->nextbyhash) {
- if (p->namelen == 2 && p->name[0] == '.' && p->name[1] == '.') {
- pip.i_ino = p->inum;
- break;
- }
- }
+ * first attempt to locate the parent inode, if it can't be
+ * found, set it to the root inode and it'll be moved to the
+ * orphanage later (the inode number here needs to be valid
+ * for the libxfs_dir2_init() call).
+ */
+ pip.i_ino = get_inode_parent(irec, ino_offset);
+ if (pip.i_ino == NULLFSINO)
+ pip.i_ino = mp->m_sb.sb_rootino;
XFS_BMAP_INIT(&flist, &firstblock);
@@ -2273,11 +2278,25 @@
* skip the '..' entry since it's checked when the
* directory is reached by something else. if it never
* gets reached, it'll be moved to the orphanage and we'll
- * take care of it then.
+ * take care of it then. If it doesn't exist at all, the
+ * directory needs to be rebuilt first before being added
+ * to the orphanage.
*/
if (dep->namelen == 2 && dep->name[0] == '.' &&
- dep->name[1] == '.')
+ dep->name[1] == '.') {
+ if (da_bno != 0) {
+ /* ".." should be in the first block */
+ nbad++;
+ if (entry_junked(_("entry \"%s\" (ino %llu) "
+ "in dir %llu is not in the "
+ "the first block"), fname,
+ inum, ip->i_ino)) {
+ dep->name[0] = '/';
+ libxfs_dir2_data_log_entry(tp, bp, dep);
+ }
+ }
continue;
+ }
ASSERT(no_modify || !verify_inum(mp, inum));
/*
* special case the . entry. we know there's only one
@@ -2291,6 +2310,16 @@
if (ip->i_ino == inum) {
ASSERT(dep->name[0] == '.' && dep->namelen == 1);
add_inode_ref(current_irec, current_ino_offset);
+ if (da_bno != 0 || dep != (xfs_dir2_data_entry_t *)d->u) {
+ /* "." should be the first entry */
+ nbad++;
+ if (entry_junked(_("entry \"%s\" in dir %llu is "
+ "not the first entry"),
+ fname, inum, ip->i_ino)) {
+ dep->name[0] = '/';
+ libxfs_dir2_data_log_entry(tp, bp, dep);
+ }
+ }
*need_dot = 0;
continue;
}
@@ -2325,6 +2354,15 @@
} else if (parent == ip->i_ino) {
add_inode_reached(irec, ino_offset);
add_inode_ref(current_irec, current_ino_offset);
+ } else if (parent == NULLFSINO) {
+ /* ".." was missing, but this entry refers to it,
+ so, set it as the parent and mark for rebuild */
+ do_warn(_("entry \"%s\" in dir ino %llu doesn't have a"
+ " .. entry, will set it in ino %llu.\n"),
+ fname, ip->i_ino, inum);
+ set_inode_parent(irec, ino_offset, ip->i_ino);
+ add_inode_reached(irec, ino_offset);
+ add_inode_ref(current_irec, current_ino_offset);
} else {
junkit = 1;
do_warn(
@@ -2637,7 +2675,7 @@
irec, ino_offset, &bplist[db], hashtab,
&freetab, da_bno, isblock);
}
- fixit = (*num_illegal != 0) || dir2_is_badino(ino);
+ fixit = (*num_illegal != 0) || dir2_is_badino(ino) || *need_dot;
/* check btree and freespace */
if (isblock) {
@@ -2659,8 +2697,9 @@
for (i = 0; i < freetab->naents; i++)
if (bplist[i])
libxfs_da_brelse(NULL, bplist[i]);
- longform_dir2_rebuild(mp, ino, ip, hashtab);
+ longform_dir2_rebuild(mp, ino, ip, irec, ino_offset, hashtab);
*num_illegal = 0;
+ *need_dot = 0;
} else {
for (i = 0; i < freetab->naents; i++)
if (bplist[i])
@@ -2865,6 +2904,15 @@
} else if (parent == ino) {
add_inode_reached(irec, ino_offset);
add_inode_ref(current_irec, current_ino_offset);
+ } else if (parent == NULLFSINO) {
+ /* ".." was missing, but this entry refers to it,
+ so, set it as the parent and mark for rebuild */
+ do_warn(_("entry \"%s\" in dir ino %llu doesn't have a"
+ " .. entry, will set it in ino %llu.\n"),
+ fname, ino, lino);
+ set_inode_parent(irec, ino_offset, ino);
+ add_inode_reached(irec, ino_offset);
+ add_inode_ref(current_irec, current_ino_offset);
} else {
junkit = 1;
do_warn(_("entry \"%s\" in dir %llu not "
@@ -3257,6 +3305,15 @@
} else if (parent == ino) {
add_inode_reached(irec, ino_offset);
add_inode_ref(current_irec, current_ino_offset);
+ } else if (parent == NULLFSINO) {
+ /* ".." was missing, but this entry refers to it,
+ so, set it as the parent and mark for rebuild */
+ do_warn(_("entry \"%s\" in dir ino %llu doesn't have a"
+ " .. entry, will set it in ino %llu.\n"),
+ fname, ino, lino);
+ set_inode_parent(irec, ino_offset, ino);
+ add_inode_reached(irec, ino_offset);
+ add_inode_ref(current_irec, current_ino_offset);
} else {
junkit = 1;
do_warn(_("entry \"%s\" in directory inode %llu"
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/repair/scan.c new/xfsprogs-2.9.5/repair/scan.c
--- old/xfsprogs-2.9.4/repair/scan.c 2007-09-11 04:01:21.000000000 +0200
+++ new/xfsprogs-2.9.5/repair/scan.c 2008-01-21 06:57:12.000000000 +0100
@@ -541,6 +541,8 @@
e = INT_GET(rp[i].ar_startblock, ARCH_CONVERT) +
INT_GET(rp[i].ar_blockcount, ARCH_CONVERT);
+ if (!verify_agbno(mp, agno, e - 1))
+ continue;
for (b = INT_GET(rp[i].ar_startblock, ARCH_CONVERT);
b < e; b++) {
if (get_agbno_state(mp, agno, b)
@@ -691,6 +693,8 @@
e = INT_GET(rp[i].ar_startblock, ARCH_CONVERT) +
INT_GET(rp[i].ar_blockcount, ARCH_CONVERT);
+ if (!verify_agbno(mp, agno, e - 1))
+ continue;
for (b = INT_GET(rp[i].ar_startblock, ARCH_CONVERT);
b < e; b++) {
state = get_agbno_state(mp, agno, b);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xfsprogs-2.9.4/VERSION new/xfsprogs-2.9.5/VERSION
--- old/xfsprogs-2.9.4/VERSION 2007-09-11 04:01:13.000000000 +0200
+++ new/xfsprogs-2.9.5/VERSION 2008-01-21 07:14:30.000000000 +0100
@@ -3,5 +3,5 @@
#
PKG_MAJOR=2
PKG_MINOR=9
-PKG_REVISION=4
+PKG_REVISION=5
PKG_BUILD=1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org