Hello community, here is the log from the commit of package xfsprogs for openSUSE:Factory checked in at 2014-12-16 14:50:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/xfsprogs (Old) and /work/SRC/openSUSE:Factory/.xfsprogs.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xfsprogs" Changes: -------- --- /work/SRC/openSUSE:Factory/xfsprogs/xfsprogs.changes 2014-07-23 22:06:11.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.xfsprogs.new/xfsprogs.changes 2014-12-16 14:50:45.000000000 +0100 @@ -1,0 +2,19 @@ +Thu Dec 11 10:06:01 UTC 2014 - j...@suse.cz + +- Updated to 3.2.2 + - xfs_repair, mkfs.xfs stripe geometry fixes + - libxcmd path handling fixes + - xfs_crash crash fix + - xfs_logprint AGI/AGF handling improvements + - libhandle support for symlinked /usr + - fix multiple Coverity and sparse reported issues + - new mremap, sync, syncfs commands for xfs_io + - man page updates + - xfs_repair sets ftype in lost+found dirents + - xfs_repair handles bad inodes better + - xfs_repair freelist rebuild improvements + - xfs_repair finobt crash fixes + - xfs_copy handles 4k sector devices better +logprint-Fix-printing-of-AGF-and-AGI-buffers.patch: Removed (merged upstream) + +------------------------------------------------------------------- Old: ---- logprint-Fix-printing-of-AGF-and-AGI-buffers.patch xfsprogs-3.2.1.tar.gz New: ---- xfsprogs-3.2.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xfsprogs.spec ++++++ --- /var/tmp/diff_new_pack.EjxhMS/_old 2014-12-16 14:50:47.000000000 +0100 +++ /var/tmp/diff_new_pack.EjxhMS/_new 2014-12-16 14:50:47.000000000 +0100 @@ -27,7 +27,7 @@ %else BuildRequires: libuuid-devel %endif -Version: 3.2.1 +Version: 3.2.2 Release: 0 %if 0%{?suse_version} >= 1010 # hint for ZYPP @@ -40,7 +40,6 @@ Source0: xfsprogs-%{version}.tar.gz Patch0: xfsprogs-docdir.diff Patch1: xfsprogs-ppc64.diff -Patch2: logprint-Fix-printing-of-AGF-and-AGI-buffers.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -76,7 +75,6 @@ %patch0 %endif %patch1 -%patch2 -p1 %build export OPTIMIZER="-fPIC" @@ -90,8 +88,7 @@ /usr/bin/make install /usr/bin/make install-dev # remove devel stuff from /lib -rm $RPM_BUILD_ROOT/%_lib/libhandle.{so,a,la} -rm $RPM_BUILD_ROOT/%_libdir/libhandle.so +rm $RPM_BUILD_ROOT/%_lib/libhandle.so # move things to usr mv $RPM_BUILD_ROOT/sbin/* $RPM_BUILD_ROOT%{_sbindir} mv $RPM_BUILD_ROOT/%_lib/* $RPM_BUILD_ROOT%{_libdir} ++++++ xfsprogs-3.2.1.tar.gz -> xfsprogs-3.2.2.tar.gz ++++++ ++++ 3931 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-3.2.1/.gitcensus new/xfsprogs-3.2.2/.gitcensus --- old/xfsprogs-3.2.1/.gitcensus 2014-07-15 06:30:47.000000000 +0200 +++ new/xfsprogs-3.2.2/.gitcensus 2014-12-03 22:14:02.000000000 +0100 @@ -104,6 +104,7 @@ debian/control debian/copyright debian/rules +debian/watch doc/CHANGES doc/COPYING doc/CREDITS @@ -214,6 +215,7 @@ io/seek.c io/sendfile.c io/shutdown.c +io/sync.c io/sync_file_range.c io/truncate.c io/xfs_bmap.sh 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-3.2.1/VERSION new/xfsprogs-3.2.2/VERSION --- old/xfsprogs-3.2.1/VERSION 2014-07-15 06:20:11.000000000 +0200 +++ new/xfsprogs-3.2.2/VERSION 2014-12-03 21:38:41.000000000 +0100 @@ -3,5 +3,5 @@ # PKG_MAJOR=3 PKG_MINOR=2 -PKG_REVISION=1 +PKG_REVISION=2 PKG_BUILD=1 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-3.2.1/copy/xfs_copy.c new/xfsprogs-3.2.2/copy/xfs_copy.c --- old/xfsprogs-3.2.1/copy/xfs_copy.c 2014-07-08 02:28:47.000000000 +0200 +++ new/xfsprogs-3.2.2/copy/xfs_copy.c 2014-12-02 03:31:11.000000000 +0100 @@ -475,7 +475,7 @@ int open_flags; xfs_off_t pos, end_pos; size_t length; - int c, first_residue, tmp_residue; + int c; __uint64_t size, sizeb; __uint64_t numblocks = 0; int wblocks = 0; @@ -697,27 +697,13 @@ ASSERT(source_blocksize % source_sectorsize == 0); ASSERT(source_sectorsize % BBSIZE == 0); - if (source_blocksize > source_sectorsize) { - /* get number of leftover sectors in last block of ag header */ - - tmp_residue = ((XFS_AGFL_DADDR(mp) + 1) * BBSIZE) - % source_blocksize; - first_residue = (tmp_residue == 0) ? 0 : - source_blocksize - tmp_residue; - ASSERT(first_residue % source_sectorsize == 0); - } else if (source_blocksize == source_sectorsize) { - first_residue = 0; - } else { + if (source_blocksize < source_sectorsize) { do_log(_("Error: filesystem block size is smaller than the" " disk sectorsize.\nAborting XFS copy now.\n")); exit(1); } - first_agbno = (((XFS_AGFL_DADDR(mp) + 1) * BBSIZE) - + first_residue) / source_blocksize; - ASSERT(first_agbno != 0); - ASSERT(((((XFS_AGFL_DADDR(mp) + 1) * BBSIZE) - + first_residue) % source_blocksize) == 0); + first_agbno = XFS_AGFL_BLOCK(mp) + 1; /* now open targets */ 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-3.2.1/db/write.c new/xfsprogs-3.2.2/db/write.c --- old/xfsprogs-3.2.1/db/write.c 2014-07-09 03:00:54.000000000 +0200 +++ new/xfsprogs-3.2.2/db/write.c 2014-12-02 03:31:11.000000000 +0100 @@ -652,6 +652,7 @@ buf = convert_arg(argv[1], bit_length); if (!buf) { dbprintf(_("unable to convert value '%s'.\n"), argv[1]); + flist_free(fl); return; } 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-3.2.1/debian/Makefile new/xfsprogs-3.2.2/debian/Makefile --- old/xfsprogs-3.2.1/debian/Makefile 2009-12-30 23:30:13.000000000 +0100 +++ new/xfsprogs-3.2.2/debian/Makefile 2014-12-02 03:31:11.000000000 +0100 @@ -5,7 +5,7 @@ TOPDIR = .. include $(TOPDIR)/include/builddefs -LSRCFILES = changelog compat control copyright rules +LSRCFILES = changelog compat control copyright rules watch DEV_DOC_DIR = $(PKG_DOC_DIR)/../xfslibs-dev BOOT_MKFS_BIN = $(TOPDIR)/mkfs/mkfs.xfs-xfsprogs-udeb LDIRDIRT = xfslibs-dev xfsprogs xfsprogs-udeb 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-3.2.1/debian/changelog new/xfsprogs-3.2.2/debian/changelog --- old/xfsprogs-3.2.1/debian/changelog 2014-05-09 00:53:19.000000000 +0200 +++ new/xfsprogs-3.2.2/debian/changelog 2014-12-02 03:31:11.000000000 +0100 @@ -1,3 +1,18 @@ +xfsprogs (3.2.2) unstable; urgency=low + + * New upstream release + * Rework dh-autoreconf invocation (closes: #757455) + * Update licensing words for headers (closes: #751511) + + -- Nathan Scott <nath...@debian.org> Mon, 10 Nov 2014 20:35:27 +1100 + +xfsprogs (3.2.1) unstable; urgency=low + + * New upstream release (closes: #747080) + * Add a watch file (closes: #748483) + + -- Nathan Scott <nath...@debian.org> Wed, 16 Jul 2014 13:47:49 +1000 + xfsprogs (3.2.0) unstable; urgency=low * New upstream release 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-3.2.1/debian/control new/xfsprogs-3.2.2/debian/control --- old/xfsprogs-3.2.1/debian/control 2014-01-20 23:47:46.000000000 +0100 +++ new/xfsprogs-3.2.2/debian/control 2014-12-02 03:31:11.000000000 +0100 @@ -3,7 +3,7 @@ Priority: optional Maintainer: XFS Development Team <x...@oss.sgi.com> Uploaders: Nathan Scott <nath...@debian.org>, Anibal Monsalve Salazar <ani...@debian.org> -Build-Depends: uuid-dev, autoconf, debhelper (>= 5), gettext, libtool, libreadline-gplv2-dev | libreadline5-dev, libblkid-dev (>= 2.17), linux-libc-dev, autotools-dev +Build-Depends: uuid-dev, dh-autoreconf, debhelper (>= 5), gettext, libtool, libreadline-gplv2-dev | libreadline5-dev, libblkid-dev (>= 2.17), linux-libc-dev Standards-Version: 3.9.1 Homepage: http://oss.sgi.com/projects/xfs/ 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-3.2.1/debian/copyright new/xfsprogs-3.2.2/debian/copyright --- old/xfsprogs-3.2.1/debian/copyright 2009-12-30 23:30:13.000000000 +0100 +++ new/xfsprogs-3.2.2/debian/copyright 2014-12-02 03:31:11.000000000 +0100 @@ -12,8 +12,8 @@ On Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL file. -The library named "libhandle" is licensed under Version 2.1 -of the GNU Lesser General Public License. +The library named "libhandle" and the headers in "xfslibs-dev" are +licensed under Version 2.1 of the GNU Lesser General Public License. On Debian systems, refer to /usr/share/common-licenses/LGPL-2.1 for the complete text of the GNU Lesser General Public License. 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-3.2.1/debian/rules new/xfsprogs-3.2.2/debian/rules --- old/xfsprogs-3.2.1/debian/rules 2014-01-20 23:47:46.000000000 +0100 +++ new/xfsprogs-3.2.2/debian/rules 2014-12-02 03:31:11.000000000 +0100 @@ -35,7 +35,7 @@ .census: @echo "== dpkg-buildpackage: configure" 1>&2 $(checkdir) - dh_autotools-dev_updateconfig + AUTOHEADER=/bin/true dh_autoreconf $(options) $(MAKE) include/platform_defs.h touch .census @@ -58,7 +58,7 @@ $(MAKE) distclean -rm -rf $(dirme) $(dirdev) $(dirdi) -rm -f debian/*substvars debian/files* debian/*.debhelper - dh_autotools-dev_restoreconfig + dh_autoreconf_clean dh_clean binary-indep: 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-3.2.1/debian/watch new/xfsprogs-3.2.2/debian/watch --- old/xfsprogs-3.2.1/debian/watch 1970-01-01 01:00:00.000000000 +0100 +++ new/xfsprogs-3.2.2/debian/watch 2014-12-02 03:31:11.000000000 +0100 @@ -0,0 +1,3 @@ +version=3 +opts=uversionmangle=s/(\d)[_\.\-\+]?((RC|rc|pre|dev|beta|alpha)\d*)$/$1~$2/ \ +ftp://oss.sgi.com/projects/xfs/cmd_tars/xfsprogs-(.+)\.tar\.gz 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-3.2.1/doc/CHANGES new/xfsprogs-3.2.2/doc/CHANGES --- old/xfsprogs-3.2.1/doc/CHANGES 2014-07-15 06:20:11.000000000 +0200 +++ new/xfsprogs-3.2.2/doc/CHANGES 2014-12-03 21:56:43.000000000 +0100 @@ -1,3 +1,19 @@ +xfsprogs-3.2.2 (4 December 2014) + - Debian packaging updates (Nathan Scott) + - xfs_repair, mkfs.xfs stripe geometry fixes (Eric Sandeen) + - libxcmd path handling fixes (Eric Sandeen) + - xfs_crash crash fix (Jie Liu) + - xfs_logprint AGI/AGF handling improvements (Jan Kara) + - libhandle support for symlinked /usr (Jan Tulak) + - fix multiple Coverity and sparse reported issues (Eric Sandeen) + - new mremap, sync, syncfs commands for xfs_io (Eric Sandeen) + - man page updates (Eric Sandeen, Mark Tinguely) + - xfs_repair sets ftype in lost+found dirents (Jan Kara) + - xfs_repair handles bad inodes better (Eric Sandeen) + - xfs_repair freelist rebuild improvements + - xfs_repair finobt crash fixes (Brian Foster) + - xfs_copy handles 4k sector devices better (Eric Sandeen) + xfsprogs-3.2.1 (15 July 2014) - Added support for new on-disk free inode btree (Brian Foster) - libxfs inode use-after free fixes (Mark Tinguely) 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-3.2.1/fsr/xfs_fsr.c new/xfsprogs-3.2.2/fsr/xfs_fsr.c --- old/xfsprogs-3.2.1/fsr/xfs_fsr.c 2014-07-08 02:28:47.000000000 +0200 +++ new/xfsprogs-3.2.2/fsr/xfs_fsr.c 2014-12-02 03:31:11.000000000 +0100 @@ -702,6 +702,7 @@ if ((fsfd = open(mntdir, O_RDONLY)) < 0) { fsrprintf(_("unable to open: %s: %s\n"), mntdir, strerror( errno )); + free(fshandlep); return -1; } @@ -709,6 +710,7 @@ fsrprintf(_("Skipping %s: could not get XFS geometry\n"), mntdir); close(fsfd); + free(fshandlep); return -1; } @@ -774,6 +776,7 @@ out0: tmp_close(mntdir); close(fsfd); + free(fshandlep); return 0; } @@ -809,15 +812,15 @@ { xfs_bstat_t statbuf; jdm_fshandle_t *fshandlep; - int fd, fsfd; - int error = 0; + int fd = -1, fsfd = -1; + int error = -1; char *tname; fshandlep = jdm_getfshandle(getparent (fname) ); - if (! fshandlep) { + if (!fshandlep) { fsrprintf(_("unable to construct sys handle for %s: %s\n"), fname, strerror(errno)); - return -1; + goto out; } /* @@ -828,39 +831,39 @@ if (fsfd < 0) { fsrprintf(_("unable to open sys handle for %s: %s\n"), fname, strerror(errno)); - return -1; + goto out; } if ((xfs_bulkstat_single(fsfd, &ino, &statbuf)) < 0) { fsrprintf(_("unable to get bstat on %s: %s\n"), fname, strerror(errno)); - close(fsfd); - return -1; + goto out; } fd = jdm_open(fshandlep, &statbuf, O_RDWR|O_DIRECT); if (fd < 0) { fsrprintf(_("unable to open handle %s: %s\n"), fname, strerror(errno)); - close(fsfd); - return -1; + goto out; } /* Get the fs geometry */ if (xfs_getgeom(fsfd, &fsgeom) < 0 ) { fsrprintf(_("Unable to get geom on fs for: %s\n"), fname); - close(fsfd); - return -1; + goto out; } - close(fsfd); - tname = gettmpname(fname); if (tname) error = fsrfile_common(fname, tname, NULL, fd, &statbuf); - close(fd); +out: + if (fsfd >= 0) + close(fsfd); + if (fd >= 0) + close(fd); + free(fshandlep); return error; } 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-3.2.1/include/buildmacros new/xfsprogs-3.2.2/include/buildmacros --- old/xfsprogs-3.2.1/include/buildmacros 2014-01-20 23:47:46.000000000 +0100 +++ new/xfsprogs-3.2.2/include/buildmacros 2014-12-02 03:31:11.000000000 +0100 @@ -76,10 +76,11 @@ ../$(INSTALL) -m 644 $(LIBNAME).lai $(PKG_LIB_DIR)/$(LIBNAME).la ; \ ../$(INSTALL) -m 755 -d $(PKG_ROOT_LIB_DIR); \ ../$(INSTALL) -T so_base $(LIBNAME).lai $(PKG_ROOT_LIB_DIR); \ - if test "x$(PKG_LIB_DIR)" != "x$(PKG_ROOT_LIB_DIR)" ; then \ - ../$(INSTALL) -S $(PKG_LIB_DIR)/$(LIBNAME).a $(PKG_ROOT_LIB_DIR)/$(LIBNAME).a; \ - ../$(INSTALL) -S $(PKG_LIB_DIR)/$(LIBNAME).la $(PKG_ROOT_LIB_DIR)/$(LIBNAME).la; \ - ../$(INSTALL) -S $(PKG_ROOT_LIB_DIR)/$(LIBNAME).so $(PKG_LIB_DIR)/$(LIBNAME).so; \ + if [ "x$(shell readlink -f $(PKG_LIB_DIR))" != \ + "x$(shell readlink -f $(PKG_ROOT_LIB_DIR))"; ]; then \ + ../$(INSTALL) -S $(PKG_LIB_DIR)/$(LIBNAME).a $(PKG_ROOT_LIB_DIR)/$(LIBNAME).a; \ + ../$(INSTALL) -S $(PKG_LIB_DIR)/$(LIBNAME).la $(PKG_ROOT_LIB_DIR)/$(LIBNAME).la; \ + ../$(INSTALL) -S $(PKG_ROOT_LIB_DIR)/$(LIBNAME).so $(PKG_LIB_DIR)/$(LIBNAME).so; \ fi else INSTALL_LTLIB_DEV = $(INSTALL_LTLIB_STATIC) 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-3.2.1/io/Makefile new/xfsprogs-3.2.2/io/Makefile --- old/xfsprogs-3.2.1/io/Makefile 2014-05-05 00:54:30.000000000 +0200 +++ new/xfsprogs-3.2.2/io/Makefile 2014-12-02 03:31:11.000000000 +0100 @@ -11,7 +11,7 @@ CFILES = init.c \ attr.c bmap.c file.c freeze.c fsync.c getrusage.c imap.c link.c \ mmap.c open.c parent.c pread.c prealloc.c pwrite.c seek.c shutdown.c \ - truncate.c + sync.c truncate.c LLDLIBS = $(LIBXCMD) $(LIBHANDLE) LTDEPENDENCIES = $(LIBXCMD) $(LIBHANDLE) @@ -64,6 +64,10 @@ LCFLAGS += -DHAVE_SYNC_FILE_RANGE endif +ifeq ($(HAVE_SYNCFS),yes) +LCFLAGS += -DHAVE_SYNCFS +endif + ifeq ($(ENABLE_READLINE),yes) LLDLIBS += $(LIBREADLINE) $(LIBTERMCAP) endif 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-3.2.1/io/init.c new/xfsprogs-3.2.2/io/init.c --- old/xfsprogs-3.2.1/io/init.c 2014-05-05 00:54:30.000000000 +0200 +++ new/xfsprogs-3.2.2/io/init.c 2014-12-02 03:31:11.000000000 +0100 @@ -80,8 +80,9 @@ resblks_init(); sendfile_init(); shutdown_init(); - truncate_init(); + sync_init(); sync_range_init(); + truncate_init(); } static int 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-3.2.1/io/io.h new/xfsprogs-3.2.2/io/io.h --- old/xfsprogs-3.2.1/io/io.h 2014-05-05 00:54:30.000000000 +0200 +++ new/xfsprogs-3.2.2/io/io.h 2014-12-02 03:31:11.000000000 +0100 @@ -109,6 +109,7 @@ extern void quit_init(void); extern void seek_init(void); extern void shutdown_init(void); +extern void sync_init(void); extern void truncate_init(void); #ifdef HAVE_FADVISE 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-3.2.1/io/mmap.c new/xfsprogs-3.2.2/io/mmap.c --- old/xfsprogs-3.2.1/io/mmap.c 2014-01-20 23:47:46.000000000 +0100 +++ new/xfsprogs-3.2.2/io/mmap.c 2014-12-02 03:31:11.000000000 +0100 @@ -29,6 +29,7 @@ static cmdinfo_t msync_cmd; static cmdinfo_t munmap_cmd; static cmdinfo_t mwrite_cmd; +static cmdinfo_t mremap_cmd; mmap_region_t *maptable; int mapcount; @@ -574,6 +575,66 @@ return 0; } +static void +mremap_help(void) +{ + printf(_( +"\n" +" resizes the current memory mapping\n" +"\n" +" Examples:\n" +" 'mremap 8192' - resizes the current mapping to 8192 bytes.\n" +"\n" +" Resizes the mappping, growing or shrinking from the current size.\n" +" The default stored value is 'X', repeated to fill the range specified.\n" +" -f -- use the MREMAP_FIXED flag\n" +" -m -- use the MREMAP_MAYMOVE flag\n" +"\n")); +} + +int +mremap_f( + int argc, + char **argv) +{ + ssize_t new_length; + void *new_addr; + int flags = 0; + int c; + size_t blocksize, sectsize; + + while ((c = getopt(argc, argv, "fm")) != EOF) { + switch (c) { + case 'f': + flags = MREMAP_FIXED|MREMAP_MAYMOVE; + break; + case 'm': + flags = MREMAP_MAYMOVE; + break; + default: + return command_usage(&mremap_cmd); + } + } + + init_cvtnum(&blocksize, §size); + new_length = cvtnum(blocksize, sectsize, argv[optind]); + if (new_length < 0) { + printf(_("non-numeric offset argument -- %s\n"), + argv[optind]); + return 0; + } + + new_addr = mremap(mapping->addr, mapping->length, new_length, flags); + if (new_addr == MAP_FAILED) + perror("mremap"); + else { + mapping->addr = new_addr; + mapping->length = new_length; + } + + return 0; +} + void mmap_init(void) { @@ -628,9 +689,21 @@ _("writes data into a region in the current memory mapping"); mwrite_cmd.help = mwrite_help; + mremap_cmd.name = "mremap"; + mremap_cmd.altname = "mrm"; + mremap_cmd.cfunc = mremap_f; + mremap_cmd.argmin = 1; + mremap_cmd.argmax = 2; + mremap_cmd.flags = CMD_NOFILE_OK | CMD_FOREIGN_OK; + mremap_cmd.args = _("[-m|-f] newsize"); + mremap_cmd.oneline = + _("alters the size of the current memory mapping"); + mremap_cmd.help = mremap_help; + add_command(&mmap_cmd); add_command(&mread_cmd); add_command(&msync_cmd); add_command(&munmap_cmd); add_command(&mwrite_cmd); + add_command(&mremap_cmd); } 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-3.2.1/io/parent.c new/xfsprogs-3.2.2/io/parent.c --- old/xfsprogs-3.2.1/io/parent.c 2014-05-05 00:54:30.000000000 +0200 +++ new/xfsprogs-3.2.2/io/parent.c 2014-12-02 03:31:11.000000000 +0100 @@ -258,9 +258,8 @@ if (!bstatbuf || !parentbuf) { fprintf(stderr, _("unable to allocate buffers: %s\n"), strerror(errno)); - free(bstatbuf); - free(parentbuf); - return 1; + err_status = 1; + goto out; } if (do_bulkstat(parentbuf, &parentbuf_size, bstatbuf, fsfd, fshandlep) != 0) @@ -272,8 +271,10 @@ printf(_("succeeded checking %llu inodes\n"), (unsigned long long) inodes_checked); +out: free(bstatbuf); free(parentbuf); + free(fshandlep); return err_status; } @@ -292,7 +293,7 @@ static int parent_list(int fullpath) { - void *handlep; + void *handlep = NULL; size_t handlen; int error, i; int retval = 1; @@ -312,6 +313,7 @@ progname, path, strerror(errno)); goto error; } + free_handle(fshandle, fshlen); } if (path_to_handle(path, &handlep, &handlen) != 0) { @@ -324,7 +326,7 @@ if (!parentbuf) { fprintf(stderr, _("%s: unable to allocate parent buffer: %s\n"), progname, strerror(errno)); - return 1; + goto error; } if (fullpath) { @@ -364,6 +366,7 @@ retval = 0; error: + free(handlep); free(parentbuf); return retval; } 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-3.2.1/io/sync.c new/xfsprogs-3.2.2/io/sync.c --- old/xfsprogs-3.2.1/io/sync.c 1970-01-01 01:00:00.000000000 +0100 +++ new/xfsprogs-3.2.2/io/sync.c 2014-12-02 03:31:11.000000000 +0100 @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2014 Red Hat, Inc. + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it would be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <xfs/xfs.h> +#include <xfs/command.h> +#include "init.h" +#include "io.h" + +static cmdinfo_t sync_cmd; + +static int +sync_f( + int argc, + char **argv) +{ + /* sync can't fail */ + sync(); + return 0; +} + +#ifdef HAVE_SYNCFS +static cmdinfo_t syncfs_cmd; + +static int +syncfs_f( + int argc, + char **argv) +{ + /* syncfs can't fail */ + syncfs(file->fd); + return 0; +} +#endif + +void +sync_init(void) +{ + sync_cmd.name = "sync"; + sync_cmd.cfunc = sync_f; + sync_cmd.flags = CMD_NOMAP_OK | CMD_NOFILE_OK | CMD_FOREIGN_OK; + sync_cmd.oneline = + _("calls sync(2) to flush all in-core filesystem state to disk"); + + add_command(&sync_cmd); + +#ifdef HAVE_SYNCFS + syncfs_cmd.name = "syncfs"; + syncfs_cmd.cfunc = syncfs_f; + syncfs_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK; + syncfs_cmd.oneline = + _("calls syncfs(2) to flush all in-core filesystem state to disk"); + + add_command(&syncfs_cmd); +#endif +} 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-3.2.1/libhandle/handle.c new/xfsprogs-3.2.2/libhandle/handle.c --- old/xfsprogs-3.2.1/libhandle/handle.c 2014-05-05 00:54:30.000000000 +0200 +++ new/xfsprogs-3.2.2/libhandle/handle.c 2014-12-02 03:31:11.000000000 +0100 @@ -97,6 +97,7 @@ /* new filesystem. add it to the cache */ fdhp = malloc(sizeof(struct fdhash)); if (fdhp == NULL) { + free(*fshanp); close(fd); errno = ENOMEM; return -1; 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-3.2.1/libxcmd/paths.c new/xfsprogs-3.2.2/libxcmd/paths.c --- old/xfsprogs-3.2.1/libxcmd/paths.c 2014-01-20 23:47:46.000000000 +0100 +++ new/xfsprogs-3.2.2/libxcmd/paths.c 2014-12-02 03:31:11.000000000 +0100 @@ -269,6 +269,9 @@ /* * If *path is NULL, initialize the fs table with all xfs mount points in mtab * If *path is specified, search for that path in mtab + * + * Everything - path, devices, and mountpoints - are boiled down to realpath() + * for comparison, but fs_table is populated with what comes from getmntent. */ static int fs_table_initialise_mounts( @@ -278,7 +281,7 @@ FILE *mtp; char *fslog, *fsrt; int error, found; - char *rpath = NULL; + char rpath[PATH_MAX], rmnt_fsname[PATH_MAX], rmnt_dir[PATH_MAX]; error = found = 0; fslog = fsrt = NULL; @@ -294,17 +297,20 @@ /* Use realpath to resolve symlinks, relative paths, etc */ if (path) - if ((rpath = realpath(path, NULL)) == NULL) - return ENOENT; + if (!realpath(path, rpath)) + return errno; while ((mnt = getmntent(mtp)) != NULL) { if (strcmp(mnt->mnt_type, "xfs") != 0) continue; + if (!realpath(mnt->mnt_dir, rmnt_dir)) + continue; + if (!realpath(mnt->mnt_fsname, rmnt_fsname)) + continue; + if (path && - ((strcmp(path, mnt->mnt_dir) != 0) && - (strcmp(path, mnt->mnt_fsname) != 0) && - (strcmp(rpath, mnt->mnt_dir) != 0) && - (strcmp(rpath, mnt->mnt_fsname) != 0))) + ((strcmp(rpath, rmnt_dir) != 0) && + (strcmp(rpath, rmnt_fsname) != 0))) continue; if (fs_extract_mount_options(mnt, &fslog, &fsrt)) continue; @@ -316,7 +322,6 @@ } } endmntent(mtp); - free(rpath); if (path && !found) error = ENXIO; @@ -330,6 +335,9 @@ /* * If *path is NULL, initialize the fs table with all xfs mount points in mtab * If *path is specified, search for that path in mtab + * + * Everything - path, devices, and mountpoints - are boiled down to realpath() + * for comparison, but fs_table is populated with what comes from getmntinfo. */ static int fs_table_initialise_mounts( @@ -337,7 +345,7 @@ { struct statfs *stats; int i, count, error, found; - char *rpath = NULL; + char rpath[PATH_MAX], rmntfromname[PATH_MAX], rmntonname[PATH_MAX]; error = found = 0; if ((count = getmntinfo(&stats, 0)) < 0) { @@ -348,17 +356,20 @@ /* Use realpath to resolve symlinks, relative paths, etc */ if (path) - if ((rpath = realpath(path, NULL)) == NULL) - return ENOENT; + if (!realpath(path, rpath)) + return errno; for (i = 0; i < count; i++) { if (strcmp(stats[i].f_fstypename, "xfs") != 0) continue; + if (!realpath(stats[i].f_mntfromname, rmntfromname)) + continue; + if (!realpath(stats[i].f_mntonname, rmnttomname))) + continue; + if (path && - ((strcmp(path, stats[i].f_mntonname) != 0) && - (strcmp(path, stats[i].f_mntfromname) != 0) && - (strcmp(rpath, stats[i].f_mntonname) != 0) && - (strcmp(rpath, stats[i].f_mntfromname) != 0))) + ((strcmp(rpath, rmntonname) != 0) && + (strcmp(rpath, rmntfromname) != 0))) continue; /* TODO: external log and realtime device? */ (void) fs_table_insert(stats[i].f_mntonname, 0, @@ -369,7 +380,6 @@ break; } } - free(rpath); if (path && !found) error = ENXIO; 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-3.2.1/libxfs/rdwr.c new/xfsprogs-3.2.2/libxfs/rdwr.c --- old/xfsprogs-3.2.1/libxfs/rdwr.c 2014-07-15 06:04:31.000000000 +0200 +++ new/xfsprogs-3.2.2/libxfs/rdwr.c 2014-12-03 21:36:27.000000000 +0100 @@ -187,7 +187,7 @@ head->h_len = cpu_to_be32(sunit - BBSIZE); else head->h_len = cpu_to_be32(20); - head->h_crc = cpu_to_be32(0); + head->h_crc = cpu_to_le32(0); head->h_prev_block = cpu_to_be32(-1); head->h_num_logops = cpu_to_be32(1); head->h_cycle_data[0] = cpu_to_be32(0xb0c0d0d0); @@ -1088,12 +1088,12 @@ } struct cache_operations libxfs_bcache_operations = { - /* .hash */ libxfs_bhash, - /* .alloc */ libxfs_balloc, - /* .flush */ libxfs_bflush, - /* .relse */ libxfs_brelse, - /* .compare */ libxfs_bcompare, - /* .bulkrelse */libxfs_bulkrelse + .hash = libxfs_bhash, + .alloc = libxfs_balloc, + .flush = libxfs_bflush, + .relse = libxfs_brelse, + .compare = libxfs_bcompare, + .bulkrelse = libxfs_bulkrelse }; 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-3.2.1/libxfs/xfs_ialloc.c new/xfsprogs-3.2.2/libxfs/xfs_ialloc.c --- old/xfsprogs-3.2.1/libxfs/xfs_ialloc.c 2014-06-10 06:42:53.000000000 +0200 +++ new/xfsprogs-3.2.2/libxfs/xfs_ialloc.c 2014-12-03 21:36:27.000000000 +0100 @@ -1057,7 +1057,8 @@ * most recently allocated inode. */ if (agi->agi_newino != cpu_to_be32(NULLAGINO)) { - error = xfs_inobt_lookup(cur, agi->agi_newino, + error = xfs_inobt_lookup(cur, + be32_to_cpu(agi->agi_newino), XFS_LOOKUP_EQ, &i); if (error) goto error_cur; 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-3.2.1/logprint/log_misc.c new/xfsprogs-3.2.2/logprint/log_misc.c --- old/xfsprogs-3.2.1/logprint/log_misc.c 2014-05-05 00:54:30.000000000 +0200 +++ new/xfsprogs-3.2.2/logprint/log_misc.c 2014-12-03 21:36:27.000000000 +0100 @@ -325,7 +325,15 @@ } else if (be32_to_cpu(*(__be32 *)(*ptr)) == XFS_AGI_MAGIC) { agi = (xfs_agi_t *)(*ptr); printf(_("AGI Buffer: XAGI ")); - if (be32_to_cpu(head->oh_len) < sizeof(xfs_agi_t) - + /* + * v4 filesystems only contain the fields before the uuid. + * Even v5 filesystems don't log any field beneath it. That + * means that the size that is logged is almost always going to + * be smaller than the structure itself. Hence we need to make + * sure that the buffer contains all the data we want to print + * rather than just check against the structure size. + */ + if (be32_to_cpu(head->oh_len) < offsetof(xfs_agi_t, agi_uuid) - XFS_AGI_UNLINKED_BUCKETS*sizeof(xfs_agino_t)) { printf(_("out of space\n")); } else { @@ -367,7 +375,15 @@ } else if (be32_to_cpu(*(__be32 *)(*ptr)) == XFS_AGF_MAGIC) { agf = (xfs_agf_t *)(*ptr); printf(_("AGF Buffer: XAGF ")); - if (be32_to_cpu(head->oh_len) < sizeof(xfs_agf_t)) { + /* + * v4 filesystems only contain the fields before the uuid. + * Even v5 filesystems don't log any field beneath it. That + * means that the size that is logged is almost always going to + * be smaller than the structure itself. Hence we need to make + * sure that the buffer contains all the data we want to print + * rather than just check against the structure size. + */ + if (be32_to_cpu(head->oh_len) < offsetof(xfs_agf_t, agf_uuid)) { printf(_("Out of space\n")); } else { printf("\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-3.2.1/m4/package_libcdev.m4 new/xfsprogs-3.2.2/m4/package_libcdev.m4 --- old/xfsprogs-3.2.1/m4/package_libcdev.m4 2014-01-28 07:19:44.000000000 +0100 +++ new/xfsprogs-3.2.2/m4/package_libcdev.m4 2014-12-02 03:31:11.000000000 +0100 @@ -171,6 +171,23 @@ ]) # +# Check if we have a syncfs libc call (Linux) +# +AC_DEFUN([AC_HAVE_SYNCFS], + [ AC_MSG_CHECKING([for syncfs]) + AC_TRY_LINK([ +#define _GNU_SOURCE +#define _FILE_OFFSET_BITS 64 +#include <unistd.h> + ], [ + syncfs(0); + ], have_sync_fs=yes + AC_MSG_RESULT(yes), + AC_MSG_RESULT(no)) + AC_SUBST(have_syncfs) + ]) + +# # Check if we have a readdir libc call # AC_DEFUN([AC_HAVE_READDIR], 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-3.2.1/man/man3/xfsctl.3 new/xfsprogs-3.2.2/man/man3/xfsctl.3 --- old/xfsprogs-3.2.1/man/man3/xfsctl.3 2014-01-20 23:47:46.000000000 +0100 +++ new/xfsprogs-3.2.2/man/man3/xfsctl.3 2014-12-02 03:31:11.000000000 +0100 @@ -245,9 +245,10 @@ The final argument points to a variable of type .BR "struct fsxattr" , but only the following fields are used in this call: -.B fsx_xflags +.BR fsx_xflags , +.B fsx_extsize and -.BR fsx_extsize . +.BR fsx_projid . The .B fsx_xflags realtime file bit and the file's extent size may be changed only 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-3.2.1/man/man5/xfs.5 new/xfsprogs-3.2.2/man/man5/xfs.5 --- old/xfsprogs-3.2.1/man/man5/xfs.5 2014-07-08 02:28:47.000000000 +0200 +++ new/xfsprogs-3.2.2/man/man5/xfs.5 2014-12-02 03:31:11.000000000 +0100 @@ -1,6 +1,6 @@ .TH xfs 5 .SH NAME -xfs \- layout and mount options for the XFS filesystem +xfs \- layout, mount options, and supported file attributes for the XFS filesystem .SH DESCRIPTION An XFS filesystem can reside on a regular disk partition or on a logical volume. @@ -302,7 +302,27 @@ where failover must not result in clients seeing inconsistent namespace presentation during or after a failover event. +.SH FILE ATTRIBUTES +The XFS filesystem supports setting the following file +attributes on Linux systems using the +.BR chattr (1) +utility: +.sp +.BR a " - append only" +.sp +.BR A " - no atime updates" +.sp +.BR d " - no dump" +.sp +.BR i " - immutable" +.sp +.BR S " - synchronous updates" +.sp +For descriptions of these attribute flags, please refer to the +.BR chattr (1) +man page. .SH SEE ALSO +.BR chattr (1), .BR xfsctl (3), .BR mount (8), .BR mkfs.xfs (8), 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-3.2.1/man/man8/xfs_io.8 new/xfsprogs-3.2.2/man/man8/xfs_io.8 --- old/xfsprogs-3.2.1/man/man8/xfs_io.8 2014-05-05 00:54:30.000000000 +0200 +++ new/xfsprogs-3.2.2/man/man8/xfs_io.8 2014-12-02 03:31:11.000000000 +0100 @@ -362,6 +362,16 @@ .RE .PD .TP +.B sync +Calls +.BR sync (2) +to flush all filesystems' in-core data to disk. +.TP +.B syncfs +Calls +.BR syncfs (2) +to flush this filesystem's in-core data to disk. +.TP .BI resvsp " offset length" Allocates reserved, unwritten space for part of a file using the XFS_IOC_RESVSP system call described in the @@ -501,6 +511,20 @@ .B mmap command. .TP +.BI "mremap [ \-f ] [ \-m ] " new_length +Changes the current mapping size to +.IR new_length . +Whether the mapping may be moved is controlled by the flags passed; +MREMAP_FIXED +.RB ( \-f ), +or MREMAP_MAYMOVE +.RB ( \-m ). +.TP +.B mrm +See the +.B mremap +command. +.TP .B munmap Unmaps the current memory mapping. .TP 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-3.2.1/mkfs/xfs_mkfs.c new/xfsprogs-3.2.2/mkfs/xfs_mkfs.c --- old/xfsprogs-3.2.1/mkfs/xfs_mkfs.c 2014-07-09 06:29:49.000000000 +0200 +++ new/xfsprogs-3.2.2/mkfs/xfs_mkfs.c 2014-12-03 21:36:27.000000000 +0100 @@ -410,21 +410,27 @@ *lsectorsize = val; val = blkid_topology_get_physical_sector_size(tp); *psectorsize = val; + val = blkid_topology_get_minimum_io_size(tp); + *sunit = val; + val = blkid_topology_get_optimal_io_size(tp); + *swidth = val; /* - * Blkid reports the information in terms of bytes, but we want it in - * terms of 512 bytes blocks (just to convert it to bytes later..) - * * If the reported values are the same as the physical sector size - * do not bother to report anything. It will just cause warnings + * do not bother to report anything. It will only cause warnings * if people specify larger stripe units or widths manually. */ - val = blkid_topology_get_minimum_io_size(tp); - if (val > *psectorsize) - *sunit = val >> 9; - val = blkid_topology_get_optimal_io_size(tp); - if (val > *psectorsize) - *swidth = val >> 9; + if (*sunit == *psectorsize || *swidth == *psectorsize) { + *sunit = 0; + *swidth = 0; + } + + /* + * Blkid reports the information in terms of bytes, but we want it in + * terms of 512 bytes blocks (only to convert it to bytes later..) + */ + *sunit = *sunit >> 9; + *swidth = *swidth >> 9; if (blkid_topology_get_alignment_offset(tp) != 0) { fprintf(stderr, @@ -447,7 +453,7 @@ out_free_probe: blkid_free_probe(pr); fprintf(stderr, - _("warning: unable to probe device toplology for device %s\n"), + _("warning: unable to probe device topology for device %s\n"), device); } @@ -484,10 +490,10 @@ } if (xi->rtname && !xi->risfile) { - int dummy; + int sunit, lsectorsize, psectorsize; - blkid_get_topology(xi->rtname, &dummy, &ft->rtswidth, - &dummy, &dummy, force_overwrite); + blkid_get_topology(xi->rtname, &sunit, &ft->rtswidth, + &lsectorsize, &psectorsize, force_overwrite); } } #else /* ENABLE_BLKID */ @@ -940,6 +946,8 @@ int logversion; int lvflag; int lsflag; + int lsuflag; + int lsunitflag; int lsectorlog; int lsectorsize; int lslflag; @@ -998,7 +1006,7 @@ sectorsize = lsectorsize = XFS_MIN_SECTORSIZE; agsize = daflag = dasize = dblocks = 0; ilflag = imflag = ipflag = isflag = 0; - liflag = laflag = lsflag = ldflag = lvflag = 0; + liflag = laflag = lsflag = lsuflag = lsunitflag = ldflag = lvflag = 0; loginternal = 1; logversion = 2; logagno = logblocks = rtblocks = rtextblocks = 0; @@ -1394,6 +1402,7 @@ respec('l', lopts, L_SU); lsu = cvtnum( blocksize, sectorsize, value); + lsuflag = 1; break; case L_SUNIT: if (!value || *value == '\0') @@ -1406,6 +1415,7 @@ usage(); } lsunit = cvtnum(0, 0, value); + lsunitflag = 1; break; case L_NAME: case L_DEV: @@ -2373,11 +2383,15 @@ } if (logversion == 2 && (lsunit * blocksize) > 256 * 1024) { - fprintf(stderr, + /* Warn only if specified on commandline */ + if (lsuflag || lsunitflag) { + fprintf(stderr, _("log stripe unit (%d bytes) is too large (maximum is 256KiB)\n"), - (lsunit * blocksize)); + (lsunit * blocksize)); + fprintf(stderr, + _("log stripe unit adjusted to 32KiB\n")); + } lsunit = (32 * 1024) >> blocklog; - fprintf(stderr, _("log stripe unit adjusted to 32KiB\n")); } min_logblocks = max_trans_res(crcs_enabled, dirversion, 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-3.2.1/po/pl.po new/xfsprogs-3.2.2/po/pl.po --- old/xfsprogs-3.2.1/po/pl.po 2014-07-15 06:18:05.000000000 +0200 +++ new/xfsprogs-3.2.2/po/pl.po 2014-12-02 03:31:11.000000000 +0100 @@ -7171,7 +7171,7 @@ #: .././mkfs/xfs_mkfs.c:450 #, c-format -msgid "warning: unable to probe device toplology for device %s\n" +msgid "warning: unable to probe device topology for device %s\n" msgstr "uwaga: nie udało się odczytać topologii urządzenia %s\n" #: .././mkfs/xfs_mkfs.c:578 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-3.2.1/quota/report.c new/xfsprogs-3.2.2/quota/report.c --- old/xfsprogs-3.2.1/quota/report.c 2014-01-20 23:47:46.000000000 +0100 +++ new/xfsprogs-3.2.2/quota/report.c 2014-12-02 03:31:11.000000000 +0100 @@ -624,7 +624,7 @@ if (flags & ALL_MOUNTS_FLAG) report_any_type(fp, form, type, NULL, lower, upper, flags); - else if (fs_path->fs_flags & FS_MOUNT_POINT) + else if (fs_path && (fs_path->fs_flags & FS_MOUNT_POINT)) report_any_type(fp, form, type, fs_path->fs_dir, lower, upper, flags); } else while (argc > optind) { 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-3.2.1/repair/attr_repair.c new/xfsprogs-3.2.2/repair/attr_repair.c --- old/xfsprogs-3.2.1/repair/attr_repair.c 2014-07-09 03:00:54.000000000 +0200 +++ new/xfsprogs-3.2.2/repair/attr_repair.c 2014-12-03 21:36:27.000000000 +0100 @@ -914,7 +914,8 @@ /* Only check values for root security attributes */ if (currententry->flags & XFS_ATTR_ROOT) - junkit = valuecheck(mp, (char *)¤tentry->nameval[0], + junkit |= valuecheck(mp, + (char *)¤tentry->nameval[0], NULL, currententry->namelen, currententry->valuelen); 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-3.2.1/repair/dinode.c new/xfsprogs-3.2.2/repair/dinode.c --- old/xfsprogs-3.2.1/repair/dinode.c 2014-07-14 01:41:07.000000000 +0200 +++ new/xfsprogs-3.2.2/repair/dinode.c 2014-12-03 21:36:27.000000000 +0100 @@ -2456,7 +2456,7 @@ _("Bad flags set in inode %" PRIu64 "\n"), lino); } - flags &= ~XFS_DIFLAG_ANY; + flags &= XFS_DIFLAG_ANY; } if (flags & (XFS_DIFLAG_REALTIME | XFS_DIFLAG_RTINHERIT)) { @@ -2513,11 +2513,11 @@ } if (!verify_mode && flags != be16_to_cpu(dino->di_flags)) { if (!no_modify) { - do_warn(_(", fixing bad flags.\n")); + do_warn(_("fixing bad flags.\n")); dino->di_flags = cpu_to_be16(flags); *dirty = 1; } else - do_warn(_(", would fix bad flags.\n")); + do_warn(_("would fix bad flags.\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-3.2.1/repair/globals.h new/xfsprogs-3.2.2/repair/globals.h --- old/xfsprogs-3.2.1/repair/globals.h 2014-07-14 01:41:07.000000000 +0200 +++ new/xfsprogs-3.2.2/repair/globals.h 2014-12-03 21:36:27.000000000 +0100 @@ -124,7 +124,7 @@ EXTERN int primary_sb_modified; EXTERN int bad_ino_btree; -EXTERN int clear_sunit; +EXTERN int copied_sunit; EXTERN int fs_is_dirty; /* for hunting down the root inode */ 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-3.2.1/repair/phase5.c new/xfsprogs-3.2.2/repair/phase5.c --- old/xfsprogs-3.2.1/repair/phase5.c 2014-06-10 06:42:53.000000000 +0200 +++ new/xfsprogs-3.2.2/repair/phase5.c 2014-12-03 21:36:49.000000000 +0100 @@ -335,11 +335,22 @@ } /* + * We need to leave some free records in the tree for the corner case of + * setting up the AGFL. This may require allocation of blocks, and as + * such can require insertion of new records into the tree (e.g. moving + * a record in the by-count tree when a long extent is shortened). If we + * pack the records into the leaves with no slack space, this requires a + * leaf split to occur and a block to be allocated from the free list. + * If we don't have any blocks on the free list (because we are setting + * it up!), then we fail, and the filesystem will fail with the same + * failure at runtime. Hence leave a couple of records slack space in + * each block to allow immediate modification of the tree without + * requiring splits to be done. + * * XXX(hch): any reason we don't just look at mp->m_alloc_mxr? */ #define XR_ALLOC_BLOCK_MAXRECS(mp, level) \ - xfs_allocbt_maxrecs((mp), (mp)->m_sb.sb_blocksize, \ - (level) == 0) + (xfs_allocbt_maxrecs((mp), (mp)->m_sb.sb_blocksize, (level) == 0) - 2) /* * this calculates a freespace cursor for an ag. @@ -361,14 +372,6 @@ bt_stat_level_t *p_lptr; extent_tree_node_t *ext_ptr; int level; -#ifdef XR_BLD_FREE_TRACE - int old_state; - int state = XR_E_BAD_STATE; -#endif -#ifdef XR_BLD_FREE_TRACE - fprintf(stderr, - "in init_freespace_cursor, agno = %d\n", agno); -#endif num_extents = *extents; extents_used = 0; @@ -389,6 +392,13 @@ lptr->num_recs_tot = num_extents; level = 1; +#ifdef XR_BLD_FREE_TRACE + fprintf(stderr, "%s 0 %d %d %d %d\n", __func__, + lptr->num_blocks, + lptr->num_recs_pb, + lptr->modulo, + lptr->num_recs_tot); +#endif /* * if we need more levels, set them up. # of records * per level is the # of blocks in the level below it @@ -406,6 +416,14 @@ lptr->num_recs_pb = p_lptr->num_blocks / lptr->num_blocks; lptr->num_recs_tot = p_lptr->num_blocks; +#ifdef XR_BLD_FREE_TRACE + fprintf(stderr, "%s %d %d %d %d %d\n", __func__, + level, + lptr->num_blocks, + lptr->num_recs_pb, + lptr->modulo, + lptr->num_recs_tot); +#endif } } @@ -550,8 +568,7 @@ lptr = &btree_curs->level[level]; p_lptr = &btree_curs->level[level-1]; lptr->num_blocks = howmany(p_lptr->num_blocks, - XR_ALLOC_BLOCK_MAXRECS(mp, - level)); + XR_ALLOC_BLOCK_MAXRECS(mp, level)); lptr->modulo = p_lptr->num_blocks % lptr->num_blocks; lptr->num_recs_pb = p_lptr->num_blocks @@ -897,26 +914,10 @@ lptr = &btree_curs->level[0]; btree_curs->init = 1; - if ((ino_rec = findfirst_inode_rec(agno)) == NULL) { - /* - * easy corner-case -- no inode records - */ - lptr->num_blocks = 1; - lptr->modulo = 0; - lptr->num_recs_pb = 0; - lptr->num_recs_tot = 0; - - btree_curs->num_levels = 1; - btree_curs->num_tot_blocks = btree_curs->num_free_blocks = 1; - - setup_cursor(mp, agno, btree_curs); - - return; - } - /* * build up statistics */ + ino_rec = findfirst_inode_rec(agno); for (num_recs = 0; ino_rec != NULL; ino_rec = next_ino_rec(ino_rec)) { rec_nfinos = 0; for (i = 0; i < XFS_INODES_PER_CHUNK; i++) { @@ -936,6 +937,23 @@ num_recs++; } + if (num_recs == 0) { + /* + * easy corner-case -- no inode records + */ + lptr->num_blocks = 1; + lptr->modulo = 0; + lptr->num_recs_pb = 0; + lptr->num_recs_tot = 0; + + btree_curs->num_levels = 1; + btree_curs->num_tot_blocks = btree_curs->num_free_blocks = 1; + + setup_cursor(mp, agno, btree_curs); + + return; + } + blocks_allocated = lptr->num_blocks = howmany(num_recs, XR_INOBT_BLOCK_MAXRECS(mp, 0)); @@ -1292,8 +1310,8 @@ memset(agf, 0, mp->m_sb.sb_sectsize); #ifdef XR_BLD_FREE_TRACE - fprintf(stderr, "agf = 0x%x, agf_buf->b_un.b_addr = 0x%x\n", - (__psint_t) agf, (__psint_t) agf_buf->b_un.b_addr); + fprintf(stderr, "agf = 0x%p, agf_buf->b_addr = 0x%p\n", + agf, agf_buf->b_addr); #endif /* @@ -1438,6 +1456,7 @@ xfs_alloc_arg_t args; xfs_trans_t *tp; struct xfs_trans_res tres = {0}; + int error; memset(&args, 0, sizeof(args)); args.tp = tp = libxfs_trans_alloc(mp, 0); @@ -1446,13 +1465,17 @@ args.alignment = 1; args.pag = xfs_perag_get(mp,agno); libxfs_trans_reserve(tp, &tres, XFS_MIN_FREELIST(agf, mp), 0); - libxfs_alloc_fix_freelist(&args, 0); + error = libxfs_alloc_fix_freelist(&args, 0); xfs_perag_put(args.pag); + if (error) { + do_error(_("failed to fix AGFL on AG %d, error %d\n"), + agno, error); + } libxfs_trans_commit(tp, 0); } #ifdef XR_BLD_FREE_TRACE - fprintf(stderr, "wrote agf for ag %u, error = %d\n", agno, error); + fprintf(stderr, "wrote agf for ag %u\n", agno); #endif } @@ -1707,11 +1730,10 @@ #ifdef XR_BLD_FREE_TRACE fprintf(stderr, "inobt level 1, maxrec = %d, minrec = %d\n", xfs_inobt_maxrecs(mp, mp->m_sb.sb_blocksize, 0), - xfs_inobt_maxrecs(mp->m_sb.sb_blocksize, 0) / 2 - ); + xfs_inobt_maxrecs(mp, mp->m_sb.sb_blocksize, 0) / 2); fprintf(stderr, "inobt level 0 (leaf), maxrec = %d, minrec = %d\n", - xfs_inobt_maxrecs(mp, mp->m_sb.sb_blocksize, xfs_inobt, 1), - xfs_inobt_maxrecs(mp, mp->m_sb.sb_blocksize, xfs_inobt, 1) / 2); + xfs_inobt_maxrecs(mp, mp->m_sb.sb_blocksize, 1), + xfs_inobt_maxrecs(mp, mp->m_sb.sb_blocksize, 1) / 2); fprintf(stderr, "xr inobt level 0 (leaf), maxrec = %d\n", XR_INOBT_BLOCK_MAXRECS(mp, 0)); fprintf(stderr, "xr inobt level 1 (int), maxrec = %d\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-3.2.1/repair/phase6.c new/xfsprogs-3.2.2/repair/phase6.c --- old/xfsprogs-3.2.1/repair/phase6.c 2014-07-14 01:41:07.000000000 +0200 +++ new/xfsprogs-3.2.2/repair/phase6.c 2014-12-03 21:36:27.000000000 +0100 @@ -1097,8 +1097,6 @@ xname.name = fname; xname.len = snprintf((char *)fname, sizeof(fname), "%llu", (unsigned long long)ino); - /* XXX use xfs_mode_to_ftype[] when userspace gains it */ - xname.type = XFS_DIR3_FT_UNKNOWN; err = libxfs_iget(mp, NULL, orphanage_ino, 0, &orphanage_ip, 0); if (err) @@ -1117,6 +1115,8 @@ if ((err = libxfs_iget(mp, NULL, ino, 0, &ino_p, 0))) do_error(_("%d - couldn't iget disconnected inode\n"), err); + xname.type = xfs_mode_to_ftype[(ino_p->i_d.di_mode & S_IFMT)>>S_SHIFT]; + if (isa_dir) { irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, orphanage_ino), XFS_INO_TO_AGINO(mp, orphanage_ino)); 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-3.2.1/repair/prefetch.c new/xfsprogs-3.2.2/repair/prefetch.c --- old/xfsprogs-3.2.1/repair/prefetch.c 2014-06-10 06:42:53.000000000 +0200 +++ new/xfsprogs-3.2.2/repair/prefetch.c 2014-12-03 21:36:27.000000000 +0100 @@ -171,7 +171,7 @@ struct xfs_buf_map map_array[MAP_ARRAY_SZ]; struct xfs_buf_map *map = map_array; int max_extents = MAP_ARRAY_SZ; - int nmaps = 0;; + int nmaps = 0; unsigned int len = 0; int ret = 0; 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-3.2.1/repair/sb.c new/xfsprogs-3.2.2/repair/sb.c --- old/xfsprogs-3.2.1/repair/sb.c 2014-07-14 01:41:07.000000000 +0200 +++ new/xfsprogs-3.2.2/repair/sb.c 2014-12-03 21:36:27.000000000 +0100 @@ -151,7 +151,7 @@ */ memmove(rsb, &bufsb, sizeof(xfs_sb_t)); rsb->sb_inprogress = 0; - clear_sunit = 1; + copied_sunit = 1; if (verify_set_primary_sb(rsb, 0, &dirty) == XR_OK) { do_warn( 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-3.2.1/repair/xfs_repair.c new/xfsprogs-3.2.2/repair/xfs_repair.c --- old/xfsprogs-3.2.1/repair/xfs_repair.c 2014-07-14 01:41:07.000000000 +0200 +++ new/xfsprogs-3.2.2/repair/xfs_repair.c 2014-12-03 21:36:27.000000000 +0100 @@ -193,7 +193,7 @@ delete_attr_ok = 1; force_geo = 0; assume_xfs = 0; - clear_sunit = 0; + copied_sunit = 0; sb_inoalignmt = 0; sb_unit = 0; sb_width = 0; @@ -898,13 +898,11 @@ dsb->sb_qflags &= cpu_to_be16(~XFS_ALL_QUOTA_CHKD); } - if (clear_sunit) { + if (copied_sunit) { do_warn( -_("Note - stripe unit (%d) and width (%d) fields have been reset.\n" - "Please set with mount -o sunit=<value>,swidth=<value>\n"), +_("Note - stripe unit (%d) and width (%d) were copied from a backup superblock.\n" + "Please reset with mount -o sunit=<value>,swidth=<value> if necessary\n"), be32_to_cpu(dsb->sb_unit), be32_to_cpu(dsb->sb_width)); - dsb->sb_unit = 0; - dsb->sb_width = 0; } libxfs_writebuf(sbp, 0); 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-3.2.1/rtcp/xfs_rtcp.c new/xfsprogs-3.2.2/rtcp/xfs_rtcp.c --- old/xfsprogs-3.2.1/rtcp/xfs_rtcp.c 2014-05-05 00:54:30.000000000 +0200 +++ new/xfsprogs-3.2.2/rtcp/xfs_rtcp.c 2014-12-02 03:31:11.000000000 +0100 @@ -25,7 +25,7 @@ char *progname; void -usage() +usage(void) { fprintf(stderr, _("%s [-e extsize] [-p] [-V] source target\n"), progname); exit(2); -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org