From e48e5efc33b32988b222c868fb45f9ebe9bb2bd6 Mon Sep 17 00:00:00 2001 From: Doug Ledford Date: Thu, 12 Feb 2009 15:40:59 +0000 Subject: [PATCH] - Update to latest upstream devel release - Use the udev rules file included with mdadm instead of our own - Drop all the no longer relevant patches - Fix a build error in mdopen.c - Fix the udev rules path in Makefile --- .cvsignore | 1 + mdadm-2.2-nodiet.patch | 12 -- mdadm-2.5.2-cflags.patch | 15 -- mdadm-2.5.2-s390-build.patch | 11 -- mdadm-2.5.2-static.patch | 32 ++-- mdadm-2.6.1-build.patch | 74 --------- mdadm-2.6.4-incremental.patch | 35 ---- mdadm-2.6.4-open.patch | 95 ----------- mdadm-2.6.7.1-metadata.patch | 82 ---------- mdadm-2.6.7.1-partitionable.patch | 211 ------------------------- mdadm-2.6.7.1-raid10-incremental.patch | 42 ----- mdadm-3.0-udev.patch | 28 ++++ mdadm-3.0-warn.patch | 24 +++ mdadm.rules | 6 - mdadm.spec | 2 +- sources | 2 +- 16 files changed, 65 insertions(+), 607 deletions(-) delete mode 100644 mdadm-2.2-nodiet.patch delete mode 100644 mdadm-2.5.2-cflags.patch delete mode 100644 mdadm-2.5.2-s390-build.patch delete mode 100644 mdadm-2.6.1-build.patch delete mode 100644 mdadm-2.6.4-incremental.patch delete mode 100644 mdadm-2.6.4-open.patch delete mode 100644 mdadm-2.6.7.1-metadata.patch delete mode 100644 mdadm-2.6.7.1-partitionable.patch delete mode 100644 mdadm-2.6.7.1-raid10-incremental.patch create mode 100644 mdadm-3.0-udev.patch create mode 100644 mdadm-3.0-warn.patch delete mode 100644 mdadm.rules diff --git a/.cvsignore b/.cvsignore index bc44e70..27a40df 100644 --- a/.cvsignore +++ b/.cvsignore @@ -10,3 +10,4 @@ mdadm-2.6.2.tgz mdadm-2.6.4.tgz mdadm-2.6.7.tar.bz2 mdadm-2.6.7.1.tar.bz2 +mdadm-3.0-devel2.tar.bz2 diff --git a/mdadm-2.2-nodiet.patch b/mdadm-2.2-nodiet.patch deleted file mode 100644 index c6781d5..0000000 --- a/mdadm-2.2-nodiet.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -urN mdadm-2.2.orig/Makefile mdadm-2.2/Makefile ---- mdadm-2.2.orig/Makefile 2005-12-05 11:52:31.000000000 -0500 -+++ mdadm-2.2/Makefile 2005-12-05 11:52:46.000000000 -0500 -@@ -31,7 +31,7 @@ - # e.g. make CXFLAGS=-O to optimise - TCC = tcc - UCLIBC_GCC = $(shell for nm in i386-uclibc-linux-gcc i386-uclibc-gcc; do which $$nm > /dev/null && { echo $$nm ; exit; } ; done; echo false No uclibc found ) --DIET_GCC = diet gcc -+DIET_GCC = gcc - - KLIBC=/home/src/klibc/klibc-0.77 - diff --git a/mdadm-2.5.2-cflags.patch b/mdadm-2.5.2-cflags.patch deleted file mode 100644 index eb66e98..0000000 --- a/mdadm-2.5.2-cflags.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- mdadm-2.5.2/Makefile.cflags 2006-07-07 15:00:32.000000000 -0400 -+++ mdadm-2.5.2/Makefile 2006-07-07 15:02:09.000000000 -0400 -@@ -89,10 +89,10 @@ everything: all mdadm.static mdadm.uclib - # mdadm.tcc doesn't work.. - - mdadm : $(OBJS) -- $(CC) $(LDFLAGS) -o mdadm $(OBJS) $(LDLIBS) -+ $(CC) $(CFLAGS) $(LDFLAGS) -o mdadm $(OBJS) $(LDLIBS) - - mdadm.static : $(OBJS) $(STATICOBJS) -- $(CC) $(LDFLAGS) -static -o mdadm.static $(OBJS) $(STATICOBJS) -+ $(CC) $(CFLAGS) $(LDFLAGS) -static -o mdadm.static $(OBJS) $(STATICOBJS) - - mdadm.tcc : $(SRCS) mdadm.h - $(TCC) -o mdadm.tcc $(SRCS) diff --git a/mdadm-2.5.2-s390-build.patch b/mdadm-2.5.2-s390-build.patch deleted file mode 100644 index 93f84ad..0000000 --- a/mdadm-2.5.2-s390-build.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- mdadm-2.5.2/Makefile.s390 2006-06-19 20:01:17.000000000 -0400 -+++ mdadm-2.5.2/Makefile 2006-07-07 14:11:23.000000000 -0400 -@@ -39,7 +39,7 @@ KLIBC_GCC = gcc -nostdinc -iwithprefix i - - CC = $(CROSS_COMPILE)gcc - CXFLAGS = -ggdb --CWFLAGS = -Wall -Werror -Wstrict-prototypes -+CWFLAGS = -Wall -Wstrict-prototypes - - ifdef DEBIAN - CPPFLAGS= -DDEBIAN diff --git a/mdadm-2.5.2-static.patch b/mdadm-2.5.2-static.patch index bf3addc..6abc871 100644 --- a/mdadm-2.5.2-static.patch +++ b/mdadm-2.5.2-static.patch @@ -1,36 +1,24 @@ ---- mdadm-2.6.1/Makefile.static 2007-03-31 09:43:56.000000000 -0400 -+++ mdadm-2.6.1/Makefile 2007-03-31 09:44:32.000000000 -0400 -@@ -146,23 +146,26 @@ $(OBJS) : mdadm.h bitmap.h - sha1.o : sha1.c sha1.h md5.h - $(CC) $(CFLAGS) -DHAVE_STDINT_H -o sha1.o -c sha1.c - --install : mdadm install-man -- $(INSTALL) -D $(STRIP) -m 755 mdadm $(DESTDIR)$(BINDIR)/mdadm -+install : mdadm mdadm.static mdassemble.static install-man -+ $(INSTALL) -D -m 755 mdadm $(DESTDIR)$(BINDIR)/mdadm -+ $(INSTALL) -D -m 755 mdadm.static $(DESTDIR)$(BINDIR)/mdadm.static -+ $(INSTALL) -D -m 755 mdassemble.static $(DESTDIR)$(BINDIR)/mdassemble.static +Binary files mdadm-3.0-devel2/mdadm.static and mdadm-3.0-devel2/mdadm differ +--- mdadm-3.0-devel2/Makefile.static 2009-02-12 09:58:36.000000000 -0500 ++++ mdadm-3.0-devel2/Makefile 2009-02-12 09:59:22.000000000 -0500 +@@ -183,16 +183,16 @@ sha1.o : sha1.c sha1.h md5.h + $(INSTALL) -D $(STRIP) -m 755 mdmon $(DESTDIR)$(BINDIR)/mdmon install-static : mdadm.static install-man - $(INSTALL) -D $(STRIP) -m 755 mdadm.static $(DESTDIR)$(BINDIR)/mdadm -+ $(INSTALL) -D -m 755 mdadm.static $(DESTDIR)$(BINDIR)/mdadm ++ $(INSTALL) -D $(STRIP) -m 755 mdadm.static $(DESTDIR)$(BINDIR)/mdadm.static install-tcc : mdadm.tcc install-man - $(INSTALL) -D $(STRIP) -m 755 mdadm.tcc $(DESTDIR)$(BINDIR)/mdadm -+ $(INSTALL) -D -m 755 mdadm.tcc $(DESTDIR)$(BINDIR)/mdadm ++ $(INSTALL) -D $(STRIP) -m 755 mdadm.tcc $(DESTDIR)$(BINDIR)/mdadm.tcc install-uclibc : mdadm.uclibc install-man - $(INSTALL) -D $(STRIP) -m 755 mdadm.uclibc $(DESTDIR)$(BINDIR)/mdadm -+ $(INSTALL) -D -m 755 mdadm.uclibc $(DESTDIR)$(BINDIR)/mdadm ++ $(INSTALL) -D $(STRIP) -m 755 mdadm.uclibc $(DESTDIR)$(BINDIR)/mdadm.uclibc install-klibc : mdadm.klibc install-man - $(INSTALL) -D $(STRIP) -m 755 mdadm.klibc $(DESTDIR)$(BINDIR)/mdadm -+ $(INSTALL) -D -m 755 mdadm.klibc $(DESTDIR)$(BINDIR)/mdadm ++ $(INSTALL) -D $(STRIP) -m 755 mdadm.klibc $(DESTDIR)$(BINDIR)/mdadm.klibc --install-man: mdadm.8 md.4 mdadm.conf.5 -+install-man: mdadm.8 mdassemble.8 md.4 mdadm.conf.5 + install-man: mdadm.8 md.4 mdadm.conf.5 $(INSTALL) -D -m 644 mdadm.8 $(DESTDIR)$(MAN8DIR)/mdadm.8 -+ $(INSTALL) -D -m 644 mdassemble.8 $(DESTDIR)$(MAN8DIR)/mdassemble.8 - $(INSTALL) -D -m 644 md.4 $(DESTDIR)$(MAN4DIR)/md.4 - $(INSTALL) -D -m 644 mdadm.conf.5 $(DESTDIR)$(MAN5DIR)/mdadm.conf.5 - diff --git a/mdadm-2.6.1-build.patch b/mdadm-2.6.1-build.patch deleted file mode 100644 index 24b4439..0000000 --- a/mdadm-2.6.1-build.patch +++ /dev/null @@ -1,74 +0,0 @@ ---- mdadm-2.6.7/Makefile.build 2008-06-26 19:23:12.000000000 -0400 -+++ mdadm-2.6.7/Makefile 2008-06-26 19:31:56.000000000 -0400 -@@ -104,13 +104,15 @@ mdadm.static : $(OBJS) $(STATICOBJS) - $(CC) $(CFLAGS) $(LDFLAGS) -static -o mdadm.static $(OBJS) $(STATICOBJS) - - mdadm.tcc : $(SRCS) mdadm.h -+ rm -f $(OBJS) $(STATICOBJS) - $(TCC) -o mdadm.tcc $(SRCS) - - dadm.uclibc : $(SRCS) mdadm.h -+ rm -f $(OBJS) $(STATICOBJS) - $(UCLIBC_GCC) -DUCLIBC -DHAVE_STDINT_H -o mdadm.uclibc $(SRCS) $(STATICSRC) - - mdadm.klibc : $(SRCS) mdadm.h -- rm -f $(OBJS) -+ rm -f $(OBJS) $(STATICOBJS) - gcc -nostdinc -iwithprefix include -I$(KLIBC)/klibc/include -I$(KLIBC)/linux/include -I$(KLIBC)/klibc/arch/i386/include -I$(KLIBC)/klibc/include/bits32 $(CFLAGS) $(SRCS) - - mdadm.Os : $(SRCS) mdadm.h -@@ -122,12 +124,12 @@ mdadm.O2 : $(SRCS) mdadm.h - test_stripe : restripe.c mdadm.h - $(CC) $(CXFLAGS) $(LDFLAGS) -o test_stripe -DMAIN restripe.c - --mdassemble : $(ASSEMBLE_SRCS) mdadm.h -- rm -f $(OBJS) -- $(DIET_GCC) $(ASSEMBLE_FLAGS) -o mdassemble $(ASSEMBLE_SRCS) $(STATICSRC) -+mdassemble : $(ASSEMBLE_SRCS) $(STATICSRC) mdadm.h -+ rm -f $(OBJS) $(STATICOBJS) -+ $(CC) $(ASSEMBLE_FLAGS) $(LDFLAGS) -DHAVE_STDINT_H -o mdassemble $(ASSEMBLE_SRCS) $(STATICSRC) - --mdassemble.static : $(ASSEMBLE_SRCS) mdadm.h -- rm -f $(OBJS) -+mdassemble.static : $(ASSEMBLE_SRCS) $(STATICSRC) mdadm.h -+ rm -f $(OBJS) $(STATICOBJS) - $(CC) $(LDFLAGS) $(ASSEMBLE_FLAGS) -static -DHAVE_STDINT_H -o mdassemble.static $(ASSEMBLE_SRCS) $(STATICSRC) - - mdassemble.auto : $(ASSEMBLE_SRCS) mdadm.h $(ASSEMBLE_AUTO_SRCS) -@@ -135,8 +137,8 @@ mdassemble.auto : $(ASSEMBLE_SRCS) mdadm - $(MAKE) MDASSEMBLE_AUTO=1 mdassemble.static - mv mdassemble.static mdassemble.auto - --mdassemble.uclibc : $(ASSEMBLE_SRCS) mdadm.h -- rm -f $(OJS) -+mdassemble.uclibc : $(ASSEMBLE_SRCS) $(STATICSRC) mdadm.h -+ rm -f $(OJS) $(STATICOBJS) - $(UCLIBC_GCC) $(ASSEMBLE_FLAGS) -DUCLIBC -DHAVE_STDINT_H -static -o mdassemble.uclibc $(ASSEMBLE_SRCS) $(STATICSRC) - - # This doesn't work -@@ -161,8 +163,9 @@ $(OBJS) : mdadm.h bitmap.h - sha1.o : sha1.c sha1.h md5.h - $(CC) $(CFLAGS) -DHAVE_STDINT_H -o sha1.o -c sha1.c - --install : mdadm mdadm.static mdassemble.static install-man -+install : mdadm mdadm.static mdassemble mdassemble.static install-man - $(INSTALL) -D -m 755 mdadm $(DESTDIR)$(BINDIR)/mdadm -+ $(INSTALL) -D -m 755 mdassemble $(DESTDIR)$(BINDIR)/mdassemble - $(INSTALL) -D -m 755 mdadm.static $(DESTDIR)$(BINDIR)/mdadm.static - $(INSTALL) -D -m 755 mdassemble.static $(DESTDIR)$(BINDIR)/mdassemble.static - -@@ -179,10 +182,10 @@ install-klibc : mdadm.klibc install-man - $(INSTALL) -D -m 755 mdadm.klibc $(DESTDIR)$(BINDIR)/mdadm - - install-man: mdadm.8 mdassemble.8 md.4 mdadm.conf.5 -- $(INSTALL) -D -m 644 mdadm.8 $(DESTDIR)$(MAN8DIR)/mdadm.8 -- $(INSTALL) -D -m 644 mdassemble.8 $(DESTDIR)$(MAN8DIR)/mdassemble.8 -- $(INSTALL) -D -m 644 md.4 $(DESTDIR)$(MAN4DIR)/md.4 -- $(INSTALL) -D -m 644 mdadm.conf.5 $(DESTDIR)$(MAN5DIR)/mdadm.conf.5 -+ $(INSTALL) -Dp -m 644 mdadm.8 $(DESTDIR)$(MAN8DIR)/mdadm.8 -+ $(INSTALL) -Dp -m 644 mdassemble.8 $(DESTDIR)$(MAN8DIR)/mdassemble.8 -+ $(INSTALL) -Dp -m 644 md.4 $(DESTDIR)$(MAN4DIR)/md.4 -+ $(INSTALL) -Dp -m 644 mdadm.conf.5 $(DESTDIR)$(MAN5DIR)/mdadm.conf.5 - - uninstall: - rm -f $(DESTDIR)$(MAN8DIR)/mdadm.8 md.4 $(DESTDIR)$(MAN4DIR)/md.4 $(DESTDIR)$(MAN5DIR)/mdadm.conf.5 $(DESTDIR)$(BINDIR)/mdadm diff --git a/mdadm-2.6.4-incremental.patch b/mdadm-2.6.4-incremental.patch deleted file mode 100644 index 3762855..0000000 --- a/mdadm-2.6.4-incremental.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff -ru mdadm-2.6.4/mdopen.c mdadm-2.6.4-fixed/mdopen.c ---- mdadm-2.6.4/mdopen.c 2007-10-16 05:47:25.000000000 -0400 -+++ mdadm-2.6.4-fixed/mdopen.c 2008-04-16 19:04:08.000000000 -0400 -@@ -302,6 +302,7 @@ - */ - int major_num, minor_num; - struct stat stb; -+ int i; - - if (devname) - strcpy(chosen_name, devname); -@@ -333,11 +334,22 @@ - return -1; - } - } else { -+ if (strncmp(chosen_name, "/dev/md/", 8) == 0) { -+ mkdir("/dev/md", 0755); -+ } - if (mknod(chosen_name, S_IFBLK | 0600, - makedev(major_num, minor_num)) != 0) { - return -1; - } - /* FIXME chown/chmod ?? */ - } -- return open(chosen_name, O_RDWR); -+ for (i = 0; i < 25 ; i++) { -+ int fd; -+ -+ fd = open(chosen_name, O_RDWR|O_EXCL); -+ if (fd >= 0) -+ return fd; -+ usleep(200000); -+ } -+ return -1; - } diff --git a/mdadm-2.6.4-open.patch b/mdadm-2.6.4-open.patch deleted file mode 100644 index 174d897..0000000 --- a/mdadm-2.6.4-open.patch +++ /dev/null @@ -1,95 +0,0 @@ ---- mdadm-2.6.7/Create.c.open 2008-06-05 22:11:04.000000000 -0400 -+++ mdadm-2.6.7/Create.c 2008-06-26 19:34:48.000000000 -0400 -@@ -212,7 +212,7 @@ int Create(struct supertype *st, char *m - info.array.working_disks++; - if (dnum < raiddisks) - info.array.active_disks++; -- fd = open(dname, O_RDONLY|O_EXCL, 0); -+ fd = open(dname, O_RDONLY|O_EXCL); - if (fd <0 ) { - fprintf(stderr, Name ": Cannot open %s: %s\n", - dname, strerror(errno)); -@@ -543,7 +543,7 @@ int Create(struct supertype *st, char *m - info.disk.minor = 0; - info.disk.state = (1<devname, O_RDONLY|O_EXCL, 0); -+ fd = open(dv->devname, O_RDONLY|O_EXCL); - if (fd < 0) { - fprintf(stderr, Name ": failed to open %s after earlier success - aborting\n", - dv->devname); ---- mdadm-2.6.7/mdassemble.c.open 2008-06-01 19:12:21.000000000 -0400 -+++ mdadm-2.6.7/mdassemble.c 2008-06-26 19:33:42.000000000 -0400 -@@ -57,7 +57,7 @@ mapping_t pers[] = { - /* from mdopen.c */ - int open_mddev(char *dev, int autof/*unused */) - { -- int mdfd = open(dev, O_RDWR, 0); -+ int mdfd = open(dev, O_RDWR); - if (mdfd < 0) - fprintf(stderr, Name ": error opening %s: %s\n", - dev, strerror(errno)); ---- mdadm-2.6.7/mdopen.c.open 2008-06-01 19:12:21.000000000 -0400 -+++ mdadm-2.6.7/mdopen.c 2008-06-26 19:33:42.000000000 -0400 -@@ -173,7 +173,7 @@ int open_mddev(char *dev, int autof) - must_remove = 1; - if (stb.st_mode && !must_remove) { - /* looks ok, see if it is available */ -- mdfd = open(dev, O_RDWR, 0); -+ mdfd = open(dev, O_RDWR); - if (mdfd < 0) { - fprintf(stderr, Name ": error opening %s: %s\n", - dev, strerror(errno)); -@@ -254,7 +254,7 @@ int open_mddev(char *dev, int autof) - make_parts(dev,parts, ci->symlinks); - } - } -- mdfd = open(dev, O_RDWR, 0); -+ mdfd = open(dev, O_RDWR); - if (mdfd < 0) - fprintf(stderr, Name ": error opening %s: %s\n", - dev, strerror(errno)); ---- mdadm-2.6.7/Detail.c.open 2008-06-01 19:12:20.000000000 -0400 -+++ mdadm-2.6.7/Detail.c 2008-06-26 19:33:42.000000000 -0400 -@@ -38,7 +38,7 @@ int Detail(char *dev, int brief, int exp - * GET_ARRAY_INFO and GET_DISK_INFO ioctl calls - */ - -- int fd = open(dev, O_RDONLY, 0); -+ int fd = open(dev, O_RDONLY); - int vers; - mdu_array_info_t array; - mdu_disk_info_t *disks; ---- mdadm-2.6.7/Grow.c.open 2008-06-01 19:12:20.000000000 -0400 -+++ mdadm-2.6.7/Grow.c 2008-06-26 19:33:42.000000000 -0400 -@@ -685,7 +685,7 @@ int Grow_reshape(char *devname, int fd, - } - spares = sra->array.spare_disks; - if (backup_file) { -- fdlist[d] = open(backup_file, O_RDWR|O_CREAT|O_EXCL, 0600); -+ fdlist[d] = open(backup_file, O_RDWR|O_CREAT|O_EXCL, S_IRUSR | S_IWUSR); - if (fdlist[d] < 0) { - fprintf(stderr, Name ": %s: cannot create backup file %s: %s\n", - devname, backup_file, strerror(errno)); ---- mdadm-2.6.7/Query.c.open 2008-06-01 19:12:21.000000000 -0400 -+++ mdadm-2.6.7/Query.c 2008-06-26 19:33:42.000000000 -0400 -@@ -37,7 +37,7 @@ int Query(char *dev) - * whether it is an md device and whether it has - * a superblock - */ -- int fd = open(dev, O_RDONLY, 0); -+ int fd = open(dev, O_RDONLY); - int vers; - int ioctlerr; - int superror, superrno; ---- mdadm-2.6.7/Monitor.c.open 2008-06-01 19:12:21.000000000 -0400 -+++ mdadm-2.6.7/Monitor.c 2008-06-26 19:33:42.000000000 -0400 -@@ -156,7 +156,7 @@ int Monitor(mddev_dev_t devlist, - return 1; - } - close(0); -- open("/dev/null", 3); -+ open("/dev/null", O_RDWR); - dup2(0,1); - dup2(0,2); - setsid(); diff --git a/mdadm-2.6.7.1-metadata.patch b/mdadm-2.6.7.1-metadata.patch deleted file mode 100644 index 879aac4..0000000 --- a/mdadm-2.6.7.1-metadata.patch +++ /dev/null @@ -1,82 +0,0 @@ -commit ce1a9e3cfca9342080fe66a1352acd1671a49261 -Author: Doug Ledford -Date: Tue Oct 28 11:42:57 2008 -0400 - - Fix bad metadata formatting - - Certain operations (Detail.c mainly) would print out the metadata of - an array in a format that the scan operation in super0.c and super1.c - would later reject as unknown when it was found in the mdadm.conf file. - Use a consistent format, but also modify the super0 and super1 match - methods to accept the other format without complaint. - - Signed-off-by: Doug Ledford - -diff --git a/Detail.c b/Detail.c -index ab2f84e..1937fbe 100644 ---- a/Detail.c -+++ b/Detail.c -@@ -138,7 +138,7 @@ int Detail(char *dev, int brief, int export, int test, char *homehost) - if (sra && sra->array.major_version < 0) - printf("MD_METADATA=%s\n", sra->text_version); - else -- printf("MD_METADATA=%02d.%02d\n", -+ printf("MD_METADATA=%d.%02d\n", - array.major_version, array.minor_version); - - if (st && st->sb) -@@ -153,7 +153,7 @@ int Detail(char *dev, int brief, int export, int test, char *homehost) - if (sra && sra->array.major_version < 0) - printf(" metadata=%s", sra->text_version); - else -- printf(" metadata=%02d.%02d", -+ printf(" metadata=%d.%02d", - array.major_version, array.minor_version); - } else { - mdu_bitmap_file_t bmf; -@@ -175,7 +175,7 @@ int Detail(char *dev, int brief, int export, int test, char *homehost) - if (sra && sra->array.major_version < 0) - printf(" Version : %s\n", sra->text_version); - else -- printf(" Version : %02d.%02d\n", -+ printf(" Version : %d.%02d\n", - array.major_version, array.minor_version); - - atime = array.ctime; -diff --git a/super0.c b/super0.c -index 7e81482..42d8659 100644 ---- a/super0.c -+++ b/super0.c -@@ -93,7 +93,7 @@ static void examine_super0(struct supertype *st, char *homehost) - char *c; - - printf(" Magic : %08x\n", sb->md_magic); -- printf(" Version : %02d.%02d.%02d\n", sb->major_version, sb->minor_version, -+ printf(" Version : %d.%02d.%02d\n", sb->major_version, sb->minor_version, - sb->patch_version); - if (sb->minor_version >= 90) { - printf(" UUID : %08x:%08x:%08x:%08x", sb->set_uuid0, sb->set_uuid1, -@@ -847,6 +847,9 @@ static struct supertype *match_metadata_desc0(char *arg) - st->minor_version = 90; - st->max_devs = MD_SB_DISKS; - st->sb = NULL; -+ /* Eliminate pointless leading 0 from some versions of mdadm -D */ -+ if (strncmp(arg, "00.", 3) == 0) -+ arg++; - if (strcmp(arg, "0") == 0 || - strcmp(arg, "0.90") == 0 || - strcmp(arg, "0.91") == 0 || -diff --git a/super1.c b/super1.c -index e1d0219..a81ee6f 100644 ---- a/super1.c -+++ b/super1.c -@@ -1186,6 +1186,9 @@ static struct supertype *match_metadata_desc1(char *arg) - st->ss = &super1; - st->max_devs = 384; - st->sb = NULL; -+ /* Eliminate pointless leading 0 from some versions of mdadm -D */ -+ if (strncmp(arg, "01.", 3) == 0) -+ arg++; - if (strcmp(arg, "1.0") == 0) { - st->minor_version = 0; - return st; diff --git a/mdadm-2.6.7.1-partitionable.patch b/mdadm-2.6.7.1-partitionable.patch deleted file mode 100644 index 942e937..0000000 --- a/mdadm-2.6.7.1-partitionable.patch +++ /dev/null @@ -1,211 +0,0 @@ -commit d3fbb3c40ab14707dde13cd297b7ac64d8c3109b -Author: Doug Ledford -Date: Wed Oct 29 14:23:49 2008 -0400 - - Make incremental mode work with partitionable arrays - - There were multiple problems with incremental mode and partitionable - arrays. Change the logic to pay more attention to what it finds in - mdadm.conf when setting up incremental arrays. Modify is_standard to - differentiate between a required partitioned name format and an optionally - partitioned named format. Modify open_mddev() to know about change to - is_standard. Make Incremental differentiate between create default - autof setting, command line autof setting, and array specific autof - setting, with order of preference being command line, conf file, default. - Disable the homehost test in the event there is no match for an array - so we can hotplug new arrays into a running machine without them having - to exist in mdadm.conf first (a random array number will be picked for - the hot plugged array). Honor any name from mdadm.conf that matches the - UUID of a device, not just standard names. Verify that the array name - as matched in mdadm.conf allows the requested mode of operation and reject - attempts to start non-partitionable arrays as partitioned and vice versa. - - Signed-off-by: Doug Ledford - -diff --git a/Incremental.c b/Incremental.c -index 9c6524f..806d192 100644 ---- a/Incremental.c -+++ b/Incremental.c -@@ -87,9 +87,6 @@ int Incremental(char *devname, int verbose, int runstop, - - struct createinfo *ci = conf_get_create_info(); - -- if (autof == 0) -- autof = ci->autof; -- - /* 1/ Check if devices is permitted by mdadm.conf */ - - if (!conf_test_dev(devname)) { -@@ -204,6 +201,10 @@ int Incremental(char *devname, int verbose, int runstop, - } - - /* 3a/ if not, check for homehost match. If no match, reject. */ -+ /* We want to support hot plugged arrays that aren't listed in -+ * /etc/mdadm.conf, so we need to skip the homehost test and allow -+ * unmatched devices through so we can simply pick a random entry -+ * to start them under - if (!match) { - if (homehost == NULL || - st->ss->match_home(st, homehost) == 0) { -@@ -212,23 +213,128 @@ int Incremental(char *devname, int verbose, int runstop, - ": not found in mdadm.conf and not identified by homehost.\n"); - return 2; - } -- } -+ } */ - /* 4/ Determine device number. */ -- /* - If in mdadm.conf with std name, use that */ -+ /* - If in mdadm.conf with any name, use that */ - /* - UUID in /var/run/mdadm.map use that */ - /* - If name is suggestive, use that. unless in use with */ - /* different uuid. */ - /* - Choose a free, high number. */ - /* - Use a partitioned device unless strong suggestion not to. */ - /* e.g. auto=md */ -- if (match && is_standard(match->devname, &devnum)) -- /* We have devnum now */; -- else if ((mp = map_by_uuid(&map, info.uuid)) != NULL) -+ if (match) { -+ int use_partitions; -+ if (autof != 0) -+ /* command line overrides config file */ -+ match->autof = autof; -+ else if (match->autof == 0) -+ /* no specific autof setting in config for this */ -+ /* array, so use the ci->autof instead */ -+ match->autof = ci->autof; -+ switch(is_standard(match->devname, &devnum)) { -+ case 0: /* non-standard name */ -+ /* Need to find a free devnum to use */ -+ /* Need to know if we are supposed to be partitioned */ -+ /* or not to find a free devnum in the right major */ -+ switch(match->autof & 0x7) { -+ case 3: -+ case 5: -+ autof = match->autof; -+ case 0: /* this is what you get when you */ -+ /* don't specify anything, leave it */ -+ /* defaulting to non-partitioned for */ -+ /* back compatibility */ -+ use_partitions = 0; -+ break; -+ default: -+ autof = match->autof; -+ use_partitions = 1; -+ } -+ /* If we already have an assigned devnum find it */ -+ if ((mp = map_by_uuid(&map, info.uuid)) != NULL) -+ devnum = mp->devnum; -+ else -+ devnum = find_free_devnum(use_partitions); -+ -+ if (devnum == NoMdDev) { -+ fprintf(stderr, Name -+ ": No spare md devices!!\n"); -+ return 2; -+ } -+ break; -+ case -1: /* standard, non-partitioned name */ -+ switch(match->autof & 0x7) { -+ case 3: -+ case 5: -+ case 0: -+ /* all good */ -+ use_partitions = 0; -+ break; -+ default: -+ /* oops, attempting to set things to */ -+ /* an invalid state */ -+ fprintf(stderr, Name -+ ": can't be a partitioned device by naming standards!!\n"); -+ return 2; -+ } -+ break; -+ case 1: /* standard, partitioned name */ -+ switch(match->autof & 0x7) { -+ case 3: -+ case 5: -+ /* oops, attempting to set things to */ -+ /* an invalid state */ -+ fprintf(stderr, Name -+ ": must be a partitioned device by naming standards!!\n"); -+ return 2; -+ case 0: -+ /* we haven't been told how many */ -+ /* partitions to make on either the */ -+ /* command line or the config file, */ -+ /* set to the default and enable */ -+ /* partitioned mode due to our name */ -+ autof = match->autof = (4 << 3) | 2; -+ default: -+ /* all good */ -+ use_partitions = 1; -+ break; -+ } -+ break; -+ case 2: /* may be either partitioned or not, devnum is set */ -+ switch(match->autof & 0x7) { -+ case 0: -+ /* not specified in any way, default to */ -+ /* unpartitioned for back compatibility */ -+ case 1: -+ case 3: -+ case 5: -+ use_partitions = 0; -+ break; -+ case 2: -+ /* partitioned, but we didn't get a number */ -+ /* of parititions, so use the default */ -+ match->autof = autof |= 4 << 3; -+ case 4: -+ case 6: -+ /* the number of partitions is already in */ -+ /* autof */ -+ use_partitions = 1; -+ break; -+ } -+ break; -+ } -+ /* We have devnum now */ -+ if (use_partitions && devnum > 0) -+ devnum = (-1-devnum); -+ } else if ((mp = map_by_uuid(&map, info.uuid)) != NULL) - devnum = mp->devnum; - else { - /* Have to guess a bit. */ - int use_partitions = 1; - char *np, *ep; -+ -+ if (autof == 0 && ci->autof) -+ autof = ci->autof; - if ((autof&7) == 3 || (autof&7) == 5) - use_partitions = 0; - np = strchr(info.name, ':'); -diff --git a/mdopen.c b/mdopen.c -index 4fbcb48..4ba6fff 100644 ---- a/mdopen.c -+++ b/mdopen.c -@@ -147,8 +147,8 @@ int open_mddev(char *dev, int autof) - return -1; - } - break; -- case 3: /* create md, reject std>0 */ -- if (std > 0) { -+ case 3: /* create md, reject std==1 */ -+ if (std == 1) { - fprintf(stderr, Name ": that --auto option " - "not compatable with device named %s\n", dev); - return -1; -diff --git a/util.c b/util.c -index 75f3706..baa1690 100644 ---- a/util.c -+++ b/util.c -@@ -396,7 +396,7 @@ int is_standard(char *dev, int *nump) - if (!d) - return 0; - if (strncmp(d, "/d",2)==0) -- d += 2, type=1; /* /dev/md/dN{pM} */ -+ d += 2, type=2; /* /dev/md/dN{pM} */ - else if (strncmp(d, "/md_d", 5)==0) - d += 5, type=1; /* /dev/md_dNpM */ - else if (strncmp(d, "/md", 3)==0) diff --git a/mdadm-2.6.7.1-raid10-incremental.patch b/mdadm-2.6.7.1-raid10-incremental.patch deleted file mode 100644 index c69ff93..0000000 --- a/mdadm-2.6.7.1-raid10-incremental.patch +++ /dev/null @@ -1,42 +0,0 @@ -commit fb26614d7a69d164f9e401f57389a1ca4e84258f -Author: Doug Ledford -Date: Wed Oct 29 10:50:48 2008 -0400 - - Fix NULL pointer oops - - RAID10 is the only raid level that uses the avail char array pointer - during the enough() operation, so it was the only one that saw this. - The code in incremental assumes unconditionally that count_active will - allocate the avail char array, that it might be used by enough, and that - it will need to be freed afterward. Once you make count_active actually - do that, then the oops goes away. - - Signed-off-by: Doug Ledford - -diff --git a/Incremental.c b/Incremental.c -index 0fb9afd..9c6524f 100644 ---- a/Incremental.c -+++ b/Incremental.c -@@ -543,12 +543,18 @@ static int count_active(struct supertype *st, int mdfd, char **availp, - if (ok != 0) - continue; - st->ss->getinfo_super(st, &info); -+ if (!avail) { -+ avail = malloc(info.array.raid_disks); -+ if (!avail) { -+ fprintf(stderr, Name ": out of memory.\n"); -+ exit(1); -+ } -+ memset(avail, 0, info.array.raid_disks); -+ *availp = avail; -+ } -+ - if (info.disk.state & (1<