rpms/xfsprogs/devel xfsprogs-libdisk-gfs2.patch, NONE, 1.1 xfsprogs-parallel-build.patch, NONE, 1.1 xfsprogs.spec, 1.41, 1.42
Eric Sandeen
sandeen at fedoraproject.org
Wed Nov 12 16:57:41 UTC 2008
Author: sandeen
Update of /cvs/pkgs/rpms/xfsprogs/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv30124
Modified Files:
xfsprogs.spec
Added Files:
xfsprogs-libdisk-gfs2.patch xfsprogs-parallel-build.patch
Log Message:
* Wed Nov 12 2008 Eric Sandeen <sandeen at redhat.com> 2.10.1-2
- Recognize gfs/gfs2 in libdisk
- Enable parallel builds
xfsprogs-libdisk-gfs2.patch:
--- NEW FILE xfsprogs-libdisk-gfs2.patch ---
Recognize gfs & gfs2 disk formats.
Signed-off-by: Eric Sandeen <sandeen at sandeen.net>
---
Index: xfsprogs-2.10.1/libdisk/fstype.c
===================================================================
--- xfsprogs-2.10.1.orig/libdisk/fstype.c 2007-09-10 21:01:17.000000000 -0500
+++ xfsprogs-2.10.1/libdisk/fstype.c 2008-11-12 10:41:38.996064522 -0600
@@ -68,6 +68,7 @@ swapped(unsigned short a) {
Added jfs - Christoph Hellwig
Added sysv - Tim Launchbury
Added udf - Bryce Nesbitt
+ Added gfs/gfs2 - Eric Sandeen
*/
/*
@@ -192,6 +193,7 @@ fstype(const char *device) {
struct hpfs_super_block hpfssb;
struct adfs_super_block adfssb;
struct sysv_super_block svsb;
+ struct gfs2_sb gfs2sb;
struct stat statbuf;
/* opening and reading an arbitrary unknown path can have
@@ -382,6 +384,21 @@ fstype(const char *device) {
}
if (!type) {
+ /* block 64 */
+ if (lseek(fd, GFS_SUPERBLOCK_OFFSET, SEEK_SET) != GFS_SUPERBLOCK_OFFSET
+ || read(fd, (char *) &gfs2sb, sizeof(gfs2sb)) != sizeof(gfs2sb))
+ goto io_error;
+ if (gfsmagic(gfs2sb)) {
+ if (gfsformat(gfs2sb) == GFS_FORMAT_FS &&
+ gfsmultiformat(gfs2sb) == GFS_FORMAT_MULTI)
+ type = "gfs";
+ else if (gfsformat(gfs2sb) == GFS2_FORMAT_FS &&
+ gfsmultiformat(gfs2sb) == GFS2_FORMAT_MULTI)
+ type = "gfs2";
+ }
+ }
+
+ if (!type) {
/* perhaps the user tries to mount the swap space
on a new disk; warn her before she does mkfs on it */
int pagesize = getpagesize();
Index: xfsprogs-2.10.1/libdisk/fstype.h
===================================================================
--- xfsprogs-2.10.1.orig/libdisk/fstype.h 2007-09-10 21:01:17.000000000 -0500
+++ xfsprogs-2.10.1/libdisk/fstype.h 2008-11-12 10:41:38.997064279 -0600
@@ -242,6 +242,56 @@ struct ocfs_volume_label {
#define ocfslabellen(o) assemble2le(o.label_len)
#define OCFS_MAGIC "OracleCFS"
+/* Common gfs/gfs2 constants: */
+#define GFS_MAGIC 0x01161970
+#define GFS_DEFAULT_BSIZE 4096
+#define GFS_SUPERBLOCK_OFFSET (0x10 * GFS_DEFAULT_BSIZE)
+#define GFS_LOCKNAME_LEN 64
+
+/* gfs1 constants: */
+#define GFS_FORMAT_FS 1309
+#define GFS_FORMAT_MULTI 1401
+/* gfs2 constants: */
+#define GFS2_FORMAT_FS 1801
+#define GFS2_FORMAT_MULTI 1900
+
+struct gfs2_meta_header {
+ char mh_magic[4];
+ char mh_type[4];
+ char __pad0[8]; /* Was generation number in gfs1 */
+ char mh_format[4];
+ char __pad1[4]; /* Was incarnation number in gfs1 */
+};
+
+struct gfs2_inum {
+ char no_formal_ino[8];
+ char no_addr[8];
+};
+
+struct gfs2_sb {
+ struct gfs2_meta_header sb_header;
+
+ char sb_fs_format[4];
+ char sb_multihost_format[4];
+ char __pad0[4]; /* Was superblock flags in gfs1 */
+
+ char sb_bsize[4];
+ char sb_bsize_shift[4];
+ char __pad1[4]; /* Was journal segment size in gfs1 */
+
+ struct gfs2_inum sb_master_dir; /* Was jindex dinode in gfs1 */
+ struct gfs2_inum __pad2; /* Was rindex dinode in gfs1 */
+ struct gfs2_inum sb_root_dir;
+
+ char sb_lockproto[GFS_LOCKNAME_LEN];
+ char sb_locktable[GFS_LOCKNAME_LEN];
+ /* In gfs1, quota and license dinodes followed */
+};
+
+#define gfsmagic(s) assemble4be(s.sb_header.mh_magic)
+#define gfsformat(s) assemble4be(s.sb_fs_format)
+#define gfsmultiformat(s) assemble4be(s.sb_multihost_format)
+
static inline int
assemble2le(char *p) {
return (p[0] | (p[1] << 8));
@@ -251,3 +301,8 @@ static inline int
assemble4le(char *p) {
return (p[0] | (p[1] << 8) | (p[2] << 16) | (p[3] << 24));
}
+
+static inline int
+assemble4be(char *p) {
+ return (p[3] | (p[2] << 8) | (p[1] << 16) | (p[0] << 24));
+}
xfsprogs-parallel-build.patch:
--- NEW FILE xfsprogs-parallel-build.patch ---
(oops, cvs version...)
I got tired of waiting for xfsprogs to build
serially...
On a 16p altix, make -j16 (excluding the configure
phase) went from 2m16s to 33s.
I tossed this into an rpm and did a fedora scratch
build on all arches, they all passed - some of them,
at least, should have been doing parallel builds too.
So this has had reasonable testing.
Signed-off-by: Eric Sandeen <sandeen at sandeen.net>
---
Index: xfsprogs-2.10.1/Makefile
===================================================================
--- xfsprogs-2.10.1.orig/Makefile 2007-09-10 21:01:13.000000000 -0500
+++ xfsprogs-2.10.1/Makefile 2008-11-12 10:41:03.159001661 -0600
@@ -15,23 +15,28 @@ LSRCFILES = configure configure.in Makep
LDIRT = config.log .dep config.status config.cache confdefs.h conftest* \
Logs/* built .census install.* install-dev.* *.gz
-SUBDIRS = include libxfs libxlog libxcmd libhandle libdisk \
- copy db fsck growfs io logprint mkfs quota mdrestore repair rtcp \
+LIB_SUBDIRS = include libxfs libxlog libxcmd libhandle libdisk
+TOOL_SUBDIRS = copy db fsck growfs io logprint mkfs quota mdrestore repair rtcp \
m4 man doc po debian build
+SUBDIRS = $(LIB_SUBDIRS) $(TOOL_SUBDIRS)
+
default: $(CONFIGURE)
ifeq ($(HAVE_BUILDDEFS), no)
$(MAKE) -C . $@
else
- $(SUBDIRS_MAKERULE)
+ $(MAKE) $(SUBDIRS)
endif
+$(TOOL_SUBDIRS) : $(LIB_SUBDIRS)
+
ifeq ($(HAVE_BUILDDEFS), yes)
include $(BUILDRULES)
else
clean: # if configure hasn't run, nothing to clean
endif
+.NOTPARALLEL: $(CONFIGURE)
$(CONFIGURE):
autoconf
./configure \
@@ -51,14 +56,19 @@ $(CONFIGURE):
aclocal.m4::
aclocal --acdir=`pwd`/m4 --output=$@
-install: default
- $(SUBDIRS_MAKERULE)
+install: default $(addsuffix -install,$(SUBDIRS))
$(INSTALL) -m 755 -d $(PKG_DOC_DIR)
$(INSTALL) -m 644 README $(PKG_DOC_DIR)
-install-dev: default
+install-dev: default $(addsuffix -install-dev,$(SUBDIRS))
$(SUBDIRS_MAKERULE)
+%-install:
+ $(MAKE) -C $* install
+
+%-install-dev:
+ $(MAKE) -C $* install-dev
+
realclean distclean: clean
rm -f $(LDIRT) $(CONFIGURE)
rm -rf autom4te.cache Logs
Index: xfsprogs-2.10.1/include/buildrules
===================================================================
--- xfsprogs-2.10.1.orig/include/buildrules 2008-09-04 21:37:53.000000000 -0500
+++ xfsprogs-2.10.1/include/buildrules 2008-11-12 10:39:11.683063452 -0600
@@ -6,18 +6,22 @@ _BUILDRULES_INCLUDED_ = 1
include $(TOPDIR)/include/builddefs
-clean clobber : $(SUBDIRS)
+clean clobber: $(addsuffix -clean,$(SUBDIRS))
rm -f $(DIRT)
@rm -fr .libs
- $(SUBDIRS_MAKERULE)
+%-clean::
+ $(MAKE) -C $* clean
# Never blow away subdirs
ifdef SUBDIRS
.PRECIOUS: $(SUBDIRS)
-$(SUBDIRS):
- $(SUBDIRS_MAKERULE)
endif
+.PHONY: $(SUBDIRS)
+
+$(SUBDIRS):
+ $(MAKE) -C $@
+
#
# Standard targets
#
@@ -69,11 +73,13 @@ ifdef LTLIBRARY
DEPENDSCRIPT := $(DEPENDSCRIPT) | $(SED) -e 's,^\([^:]*\)\.o,\1.lo,'
endif
-depend : $(CFILES) $(HFILES)
- $(SUBDIRS_MAKERULE)
+depend : $(CFILES) $(HFILES) $(addsuffix -depend,$(SUBDIRS))
$(DEPENDSCRIPT) > .dep
test -s .dep || rm -f .dep
+%-depend:
+ $(MAKE) -C $* depend
+
# Include dep, but only if it exists
ifeq ($(shell test -f .dep && echo .dep), .dep)
include .dep
Index: xfsprogs-2.10.1/include/buildmacros
===================================================================
--- xfsprogs-2.10.1.orig/include/buildmacros 2007-09-10 21:01:15.000000000 -0500
+++ xfsprogs-2.10.1/include/buildmacros 2008-11-12 10:39:11.706064211 -0600
@@ -123,14 +123,6 @@ INSTALL_LINGUAS = \
done
endif
-SUBDIRS_MAKERULE = \
- @for d in $(SUBDIRS) ""; do \
- if test -d "$$d" -a ! -z "$$d"; then \
- $(ECHO) === $$d ===; \
- $(MAKEF) -C $$d $@ || exit $$?; \
- fi; \
- done
-
MAN_MAKERULE = \
@for f in *.[12345678] ""; do \
if test ! -z "$$f"; then \
Index: xfsprogs-2.10.1/man/Makefile
===================================================================
--- xfsprogs-2.10.1.orig/man/Makefile 2007-09-10 21:01:19.000000000 -0500
+++ xfsprogs-2.10.1/man/Makefile 2008-11-12 10:39:11.714001250 -0600
@@ -7,7 +7,16 @@ include $(TOPDIR)/include/builddefs
SUBDIRS = man3 man5 man8
-default install install-dev : $(SUBDIRS)
- $(SUBDIRS_MAKERULE)
+default : $(SUBDIRS)
+
+install : $(addsuffix -install,$(SUBDIRS))
+
+install-dev : $(addsuffix -install-dev,$(SUBDIRS))
+
+%-install:
+ $(MAKE) -C $* install
+
+%-install-dev:
+ $(MAKE) -C $* install-dev
include $(BUILDRULES)
Index: xfsprogs.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xfsprogs/devel/xfsprogs.spec,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- xfsprogs.spec 5 Sep 2008 20:01:35 -0000 1.41
+++ xfsprogs.spec 12 Nov 2008 16:57:10 -0000 1.42
@@ -1,7 +1,7 @@
Summary: Utilities for managing the XFS filesystem
Name: xfsprogs
Version: 2.10.1
-Release: 1%{?dist}
+Release: 2%{?dist}
# Licensing based on generic "GNU GENERAL PUBLIC LICENSE"
# in source, with no mention of version.
# doc/COPYING file specifies what is GPL and what is LGPL
@@ -18,6 +18,9 @@
Obsoletes: xfs-cmds <= %{version}
Conflicts: xfsdump < 2.0.0
+Patch0: xfsprogs-parallel-build.patch
+Patch1: xfsprogs-libdisk-gfs2.patch
+
%description
A set of commands to use the XFS filesystem, including mkfs.xfs.
@@ -47,6 +50,8 @@
%prep
%setup -q
+%patch0 -p1
+%patch1 -p1
%build
# xfsprogs abuses libexecdir
@@ -110,6 +115,10 @@
%{_libdir}/*.so
%changelog
+* Wed Nov 12 2008 Eric Sandeen <sandeen at redhat.com> 2.10.1-2
+- Recognize gfs/gfs2 in libdisk
+- Enable parallel builds
+
* Fri Sep 05 2008 Eric Sandeen <sandeen at redhat.com> 2.10.1-1
- Update to xfsprogs 2.10.1
- Add ASCII case-insensitive support to xfsprogs.
More information about the scm-commits
mailing list