--- xfsprogs-2.5.4/m4/manual_format.m4.orig 2003-07-25 19:42:03.000000000 +0200 +++ xfsprogs-2.5.4/m4/manual_format.m4 2003-08-08 08:22:59.000000000 +0200 @@ -6,12 +6,5 @@ # AC_DEFUN([AC_MANUAL_FORMAT], [ have_zipped_manpages=false - for d in ${prefix}/share/man ${prefix}/man ; do - if test -f $d/man1/man.1.gz - then - have_zipped_manpages=true - break - fi - done AC_SUBST(have_zipped_manpages) ]) --- xfsprogs-3.1.3/Makefile~ 2010-08-18 06:54:06.000000000 +0200 +++ xfsprogs-3.1.3/Makefile 2010-08-28 16:35:25.820731669 +0200 @@ -39,7 +39,11 @@ LDIRT += $(SRCTAR) endif -LIB_SUBDIRS = libxfs libxlog libxcmd libhandle libdisk +LIB_SUBDIRS = libxfs libxlog libxcmd libhandle +ifneq ($(ENABLE_BLKID), yes) +LIB_SUBDIRS += libdisk +endif + TOOL_SUBDIRS = copy db estimate fsck fsr growfs io logprint mkfs quota \ mdrestore repair rtcp m4 man doc po debian --- xfsprogs-3.1.10/libxcmd/input.c~ 2012-12-13 22:29:24.000000000 +0100 +++ xfsprogs-3.1.10/libxcmd/input.c 2012-12-14 07:01:24.852839169 +0100 @@ -88,7 +88,7 @@ if (!line) return NULL; - printf(get_prompt()); + printf("%s", get_prompt()); fflush(stdout); if (!fgets(line, MAXREADLINESZ, stdin)) { free(line); --- /dev/null 2011-06-01 08:46:43.490033582 +0200 +++ xfsprogs/io/sync_file_range.c 2012-11-12 18:54:28.047526230 +0100 @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2012 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 +#include +#include +#include "init.h" +#include "io.h" + +static cmdinfo_t sync_range_cmd; + +static void +sync_range_help(void) +{ + printf(_( +"\n" +" Trigger specific writeback commands on a range of the current file\n" +"\n" +" With no options, the SYNC_FILE_RANGE_WRITE is implied.\n" +" -a -- wait for IO to finish after writing (SYNC_FILE_RANGE_WAIT_AFTER).\n" +" -b -- wait for IO to finish before writing (SYNC_FILE_RANGE_WAIT_BEFORE).\n" +" -w -- write dirty data in range (SYNC_FILE_RANGE_WRITE).\n" +"\n")); +} + +static int +sync_range_f( + int argc, + char **argv) +{ + off64_t offset = 0, length = 0; + int c, sync_mode = 0; + size_t blocksize, sectsize; + + while ((c = getopt(argc, argv, "abw")) != EOF) { + switch (c) { + case 'a': + sync_mode = SYNC_FILE_RANGE_WAIT_AFTER; + break; + case 'b': + sync_mode = SYNC_FILE_RANGE_WAIT_BEFORE; + break; + case 'w': + sync_mode = SYNC_FILE_RANGE_WRITE; + break; + default: + return command_usage(&sync_range_cmd); + } + } + + /* default to just starting writeback on the range */ + if (!sync_mode) + sync_mode = SYNC_FILE_RANGE_WRITE; + + if (optind != argc - 2) + return command_usage(&sync_range_cmd); + init_cvtnum(&blocksize, §size); + offset = cvtnum(blocksize, sectsize, argv[optind]); + if (offset < 0) { + printf(_("non-numeric offset argument -- %s\n"), + argv[optind]); + return 0; + } + optind++; + length = cvtnum(blocksize, sectsize, argv[optind]); + if (length < 0) { + printf(_("non-numeric length argument -- %s\n"), + argv[optind]); + return 0; + } + + if (sync_file_range(file->fd, offset, length, sync_mode) < 0) { + perror("sync_file_range"); + return 0; + } + return 0; +} + +void +sync_range_init(void) +{ + sync_range_cmd.name = "sync_range"; + sync_range_cmd.cfunc = sync_range_f; + sync_range_cmd.argmin = 2; + sync_range_cmd.argmax = -1; + sync_range_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK; + sync_range_cmd.args = _("[-abw] off len"); + sync_range_cmd.oneline = _("Control writeback on a range of a file"); + sync_range_cmd.help = sync_range_help; + + add_command(&sync_range_cmd); +}