All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] add some recipes
@ 2014-11-28  8:49 Bian Naimeng
  2014-11-28  8:49 ` [PATCH 1/3] [meta-oe]daemontools: add recipe Bian Naimeng
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Bian Naimeng @ 2014-11-28  8:49 UTC (permalink / raw)
  To: openembedded-devel

Bian Naimeng (3):
  [meta-oe] daemontools: add recipe
  [meta-oe] dmraid: add recipe
  [meta-oe] drbd: add recipe

 .../recipes-extended/dmraid/dmraid_1.0.0.rc16.bb   |  71 +++++
 .../dmraid/files/01_fix_broken_linking.patch       | 121 +++++++++
 .../dmraid/files/02_disable_dmreg.patch            | 134 ++++++++++
 .../files/03_fix_hyphen-used-as-minus-sign.patch   | 291 +++++++++++++++++++++
 .../dmraid/files/04_promise-add-offsets.patch      |  13 +
 .../dmraid/files/05_exit_code.patch                |  22 ++
 .../dmraid/files/06_support_virtio_devices.patch   |  13 +
 .../dmraid/files/07_isw-probe-hpa.patch            | 144 ++++++++++
 .../files/08_activate_multiple_raid_sets.patch     |  12 +
 .../dmraid/files/09_pdc_raid10_failure..patch      |  14 +
 .../dmraid/files/10_ddf1_lsi_persistent_name.patch |  20 ++
 .../files/11_fix_isw_sectors_calculation.patch     |  14 +
 .../dmraid/files/12_jmicron_namefix.patch          |  20 ++
 .../dmraid/files/13_fix_testing.patch              |  24 ++
 .../files/14_pdc_dump_extended_metadata.patch      | 147 +++++++++++
 .../15_drop_p_for_partition_conditional.patch      |  31 +++
 .../dmraid/files/16_change-uuid.patch              |  77 ++++++
 .../files/17_convert-dmraid45-to-dmraid.patch      | 273 +++++++++++++++++++
 .../dmraid/files/18_ignore-too-small-devices.patch |  39 +++
 .../files/19_compile-dmraid-in-subdir-tools.patch  |  20 ++
 .../20_specifies-install-dir-by-DESTDIR.patch      | 123 +++++++++
 meta-oe/recipes-extended/drbd/drbd_8.4.4.bb        |  57 ++++
 meta-oe/recipes-extended/drbd/files/drbd.service   |  12 +
 ...or.h-include-errno.h-instead-of-extern-int.diff |  25 ++
 ....c-.-supervise-may-be-a-symlink-if-it-s-da.diff |  47 ++++
 .../daemontools/daemontools/cross-compile.patch    |  45 ++++
 .../daemontools/daemontools_0.76.bb                |  47 ++++
 27 files changed, 1856 insertions(+)
 create mode 100644 meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb
 create mode 100644 meta-oe/recipes-extended/dmraid/files/01_fix_broken_linking.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/02_disable_dmreg.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/03_fix_hyphen-used-as-minus-sign.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/04_promise-add-offsets.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/05_exit_code.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/06_support_virtio_devices.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/07_isw-probe-hpa.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/08_activate_multiple_raid_sets.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/09_pdc_raid10_failure..patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/10_ddf1_lsi_persistent_name.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/11_fix_isw_sectors_calculation.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/12_jmicron_namefix.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/13_fix_testing.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/14_pdc_dump_extended_metadata.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/15_drop_p_for_partition_conditional.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/16_change-uuid.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/17_convert-dmraid45-to-dmraid.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/18_ignore-too-small-devices.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/19_compile-dmraid-in-subdir-tools.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/20_specifies-install-dir-by-DESTDIR.patch
 create mode 100644 meta-oe/recipes-extended/drbd/drbd_8.4.4.bb
 create mode 100644 meta-oe/recipes-extended/drbd/files/drbd.service
 create mode 100644 meta-oe/recipes-support/daemontools/daemontools/0001-error.h-include-errno.h-instead-of-extern-int.diff
 create mode 100644 meta-oe/recipes-support/daemontools/daemontools/0002-supervise.c-.-supervise-may-be-a-symlink-if-it-s-da.diff
 create mode 100644 meta-oe/recipes-support/daemontools/daemontools/cross-compile.patch
 create mode 100644 meta-oe/recipes-support/daemontools/daemontools_0.76.bb

-- 
1.9.1



^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 1/3] [meta-oe]daemontools: add recipe
  2014-11-28  8:49 [PATCH 0/3] add some recipes Bian Naimeng
@ 2014-11-28  8:49 ` Bian Naimeng
  2014-11-29 14:23   ` Koen Kooi
  2014-11-28  8:49 ` [PATCH 2/3] [meta-oe] dmraid: " Bian Naimeng
  2014-11-28  8:49 ` [PATCH 3/3] [meta-oe] drbd: " Bian Naimeng
  2 siblings, 1 reply; 11+ messages in thread
From: Bian Naimeng @ 2014-11-28  8:49 UTC (permalink / raw)
  To: openembedded-devel

daemontools is a collection of tools for managing UNIX services. 

Though daemontools is a very old tool, but it still supported by some
distro such as ubuntu(trusty 14.04LTS).

Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
---
 ...or.h-include-errno.h-instead-of-extern-int.diff | 25 ++++++++++++
 ....c-.-supervise-may-be-a-symlink-if-it-s-da.diff | 47 ++++++++++++++++++++++
 .../daemontools/daemontools/cross-compile.patch    | 45 +++++++++++++++++++++
 .../daemontools/daemontools_0.76.bb                | 47 ++++++++++++++++++++++
 4 files changed, 164 insertions(+)
 create mode 100644 meta-oe/recipes-support/daemontools/daemontools/0001-error.h-include-errno.h-instead-of-extern-int.diff
 create mode 100644 meta-oe/recipes-support/daemontools/daemontools/0002-supervise.c-.-supervise-may-be-a-symlink-if-it-s-da.diff
 create mode 100644 meta-oe/recipes-support/daemontools/daemontools/cross-compile.patch
 create mode 100644 meta-oe/recipes-support/daemontools/daemontools_0.76.bb

diff --git a/meta-oe/recipes-support/daemontools/daemontools/0001-error.h-include-errno.h-instead-of-extern-int.diff b/meta-oe/recipes-support/daemontools/daemontools/0001-error.h-include-errno.h-instead-of-extern-int.diff
new file mode 100644
index 0000000..ce19597
--- /dev/null
+++ b/meta-oe/recipes-support/daemontools/daemontools/0001-error.h-include-errno.h-instead-of-extern-int.diff
@@ -0,0 +1,25 @@
+From d3e7651e2f2492dd1031d09a99713644b604cab5 Mon Sep 17 00:00:00 2001
+From: Gerrit Pape <pape@smarden.org>
+Date: Wed, 12 Dec 2007 13:44:15 +0000
+Subject: [PATCH] error.h: '#include <errno.h>' instead of 'extern int errno;'
+
+---
+ daemontools-0.76/src/error.h |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git daemontools-0.76.orig/src/error.h daemontools-0.76/src/error.h
+index 086fb55..f7e8273 100644
+--- daemontools-0.76.orig/src/error.h
++++ daemontools-0.76/src/error.h
+@@ -3,7 +3,7 @@
+ #ifndef ERROR_H
+ #define ERROR_H
+ 
+-extern int errno;
++#include <errno.h>
+ 
+ extern int error_intr;
+ extern int error_nomem;
+-- 
+1.5.4.2
+
diff --git a/meta-oe/recipes-support/daemontools/daemontools/0002-supervise.c-.-supervise-may-be-a-symlink-if-it-s-da.diff b/meta-oe/recipes-support/daemontools/daemontools/0002-supervise.c-.-supervise-may-be-a-symlink-if-it-s-da.diff
new file mode 100644
index 0000000..73dce90
--- /dev/null
+++ b/meta-oe/recipes-support/daemontools/daemontools/0002-supervise.c-.-supervise-may-be-a-symlink-if-it-s-da.diff
@@ -0,0 +1,47 @@
+From 7ee585cab1d5b68f804a5601a66ae87799c8a7c3 Mon Sep 17 00:00:00 2001
+From: Gerrit Pape <pape@smarden.org>
+Date: Sun, 24 Feb 2008 10:54:26 +0000
+Subject: [PATCH] supervise.c: ./supervise may be a symlink, if it's dangling, create link target
+
+---
+ daemontools-0.76/src/supervise.c |   17 ++++++++++++++++-
+ 1 files changed, 16 insertions(+), 1 deletions(-)
+
+diff --git daemontools-0.76.orig/src/supervise.c daemontools-0.76/src/supervise.c
+index 2482ad2..f43cabf 100644
+--- daemontools-0.76.orig/src/supervise.c
++++ daemontools-0.76/src/supervise.c
+@@ -208,6 +208,8 @@ void doit(void)
+ int main(int argc,char **argv)
+ {
+   struct stat st;
++  int r;
++  char buf[256];
+ 
+   dir = argv[1];
+   if (!dir || argv[2])
+@@ -232,7 +234,20 @@ int main(int argc,char **argv)
+     if (errno != error_noent)
+       strerr_die4sys(111,FATAL,"unable to stat ",dir,"/down: ");
+ 
+-  mkdir("supervise",0700);
++  if (mkdir("supervise",0700) == -1) {
++    if ((r = readlink("supervise", buf, 256)) != -1) {
++      if (r == 256) {
++        errno = EOVERFLOW;
++        strerr_die1sys(111,"unable to readlink ./supervise: ");
++      }
++      buf[r] = 0;
++      mkdir(buf, 0700);
++    }
++    else {
++      if ((errno != ENOENT) && (errno != EINVAL))
++        strerr_die1sys(111, "unable to readlink ./supervise: ");
++    }
++  }
+   fdlock = open_append("supervise/lock");
+   if ((fdlock == -1) || (lock_exnb(fdlock) == -1))
+     strerr_die4sys(111,FATAL,"unable to acquire ",dir,"/supervise/lock: ");
+-- 
+1.5.4.2
+
diff --git a/meta-oe/recipes-support/daemontools/daemontools/cross-compile.patch b/meta-oe/recipes-support/daemontools/daemontools/cross-compile.patch
new file mode 100644
index 0000000..f164c2d
--- /dev/null
+++ b/meta-oe/recipes-support/daemontools/daemontools/cross-compile.patch
@@ -0,0 +1,45 @@
+make sure it can be compiled for cross target
+
+1. never try to compile target binary by native gcc
+2. target's chkshsgr doesn't work on native.
+3. it's wrong to do target tests on native.
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+diff -Nurp daemontools-0.76.orig/src/conf-cc daemontools-0.76/src/conf-cc
+--- daemontools-0.76.orig/src/conf-cc	2001-07-13 00:49:49.000000000 +0800
++++ daemontools-0.76/src/conf-cc	2014-11-26 09:34:38.828812162 +0800
+@@ -1,3 +1,3 @@
+-gcc -O2 -Wimplicit -Wunused -Wcomment -Wchar-subscripts -Wuninitialized -Wshadow -Wcast-qual -Wcast-align -Wwrite-strings
++${CC} -O2 -Wimplicit -Wunused -Wcomment -Wchar-subscripts -Wuninitialized -Wshadow -Wcast-qual -Wcast-align -Wwrite-strings
+ 
+ This will be used to compile .c files.
+diff -Nurp daemontools-0.76.orig/src/conf-ld daemontools-0.76/src/conf-ld
+--- daemontools-0.76.orig/src/conf-ld	2001-07-13 00:49:49.000000000 +0800
++++ daemontools-0.76/src/conf-ld	2014-11-26 09:34:49.880811730 +0800
+@@ -1,3 +1,3 @@
+-gcc -s
++${CC}
+ 
+ This will be used to link .o files into an executable.
+diff -Nurp daemontools-0.76.orig/src/Makefile daemontools-0.76/src/Makefile
+--- daemontools-0.76.orig/src/Makefile	2001-07-13 00:49:49.000000000 +0800
++++ daemontools-0.76/src/Makefile	2014-11-26 09:38:47.120802459 +0800
+@@ -165,7 +165,7 @@ hassgprm.h: choose compile hassgprm.h1 h
+ 
+ hasshsgr.h: chkshsgr choose compile hasshsgr.h1 hasshsgr.h2 load \
+ tryshsgr.c warn-shsgr
+-	./chkshsgr || ( cat warn-shsgr; exit 1 )
++	chkshsgr || ( cat warn-shsgr; exit 1 )
+ 	./choose clr tryshsgr hasshsgr.h1 hasshsgr.h2 > hasshsgr.h
+ 
+ haswaitp.h: choose compile haswaitp.h1 haswaitp.h2 load trywaitp.c
+@@ -265,7 +265,7 @@ readproctitle.o: compile error.h readpro
+ rts: envdir envuidgid fghack matchtest multilog pgrphack \
+ readproctitle rts.tests setlock setuidgid softlimit supervise svc \
+ svok svscan svscanboot svstat tai64n tai64nlocal
+-	env - /bin/sh rts.tests 2>&1 | cat -v > rts
++	echo "Warning: We can not run test on cross target."
+ 
+ scan_ulong.o: compile scan.h scan_ulong.c
+ 	./compile scan_ulong.c
diff --git a/meta-oe/recipes-support/daemontools/daemontools_0.76.bb b/meta-oe/recipes-support/daemontools/daemontools_0.76.bb
new file mode 100644
index 0000000..fb87ea8
--- /dev/null
+++ b/meta-oe/recipes-support/daemontools/daemontools_0.76.bb
@@ -0,0 +1,47 @@
+SUMMARY = "DJB daemontools"
+DESCRIPTION = "supervise monitors a service. It starts the service and restarts the \
+service if it dies. The companion svc program stops, pauses, or restarts \
+the service on sysadmin request. The svstat program prints a one-line \
+status report. \
+multilog saves error messages to one or more logs.  It optionally timestamps \
+each line and, for each log, includes or excludes lines matching specified \
+patterns.  It automatically rotates logs to limit the amount of disk space \
+used.  If the disk fills up, it pauses and tries again, without losing any \
+data."
+
+SECTION = "System/Servers"
+
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/PD;md5=b3597d12946881e13cb3b548d1173851"
+LICENSE = "PD"
+
+SRC_URI = "http://cr.yp.to/daemontools/${BPN}-${PV}.tar.gz \
+           file://0001-error.h-include-errno.h-instead-of-extern-int.diff \
+           file://0002-supervise.c-.-supervise-may-be-a-symlink-if-it-s-da.diff "
+
+SRC_URI_append_class-target = "file://cross-compile.patch"
+
+SRC_URI[md5sum] = "1871af2453d6e464034968a0fbcb2bfc"
+SRC_URI[sha256sum] = "a55535012b2be7a52dcd9eccabb9a198b13be50d0384143bd3b32b8710df4c1f"
+
+S = "${WORKDIR}/admin/${BPN}-${PV}"
+
+DEPENDS += "daemontools-native"
+DEPENDS_virtclass-native = ""
+
+do_compile() {
+    ./package/compile
+}
+
+do_install() {
+    install -d ${D}/${bindir}
+}
+
+do_install_append_class-native() {
+    install -m 755 ${S}/compile/chkshsgr ${D}/${bindir}
+}
+
+do_install_append_class-target() {
+    install -m755 ${S}/command/* ${D}/${bindir}
+}
+
+BBCLASSEXTEND = "native"
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/3] [meta-oe] dmraid: add recipe
  2014-11-28  8:49 [PATCH 0/3] add some recipes Bian Naimeng
  2014-11-28  8:49 ` [PATCH 1/3] [meta-oe]daemontools: add recipe Bian Naimeng
@ 2014-11-28  8:49 ` Bian Naimeng
  2014-11-28 12:50   ` Martin Jansa
  2014-11-29 14:25   ` Koen Kooi
  2014-11-28  8:49 ` [PATCH 3/3] [meta-oe] drbd: " Bian Naimeng
  2 siblings, 2 replies; 11+ messages in thread
From: Bian Naimeng @ 2014-11-28  8:49 UTC (permalink / raw)
  To: openembedded-devel

There is no update anymore since 2010, but is still supported by
some distro such as Ubuntu(trusty 14.04LTS).

Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
---
 .../recipes-extended/dmraid/dmraid_1.0.0.rc16.bb   |  71 +++++
 .../dmraid/files/01_fix_broken_linking.patch       | 121 +++++++++
 .../dmraid/files/02_disable_dmreg.patch            | 134 ++++++++++
 .../files/03_fix_hyphen-used-as-minus-sign.patch   | 291 +++++++++++++++++++++
 .../dmraid/files/04_promise-add-offsets.patch      |  13 +
 .../dmraid/files/05_exit_code.patch                |  22 ++
 .../dmraid/files/06_support_virtio_devices.patch   |  13 +
 .../dmraid/files/07_isw-probe-hpa.patch            | 144 ++++++++++
 .../files/08_activate_multiple_raid_sets.patch     |  12 +
 .../dmraid/files/09_pdc_raid10_failure..patch      |  14 +
 .../dmraid/files/10_ddf1_lsi_persistent_name.patch |  20 ++
 .../files/11_fix_isw_sectors_calculation.patch     |  14 +
 .../dmraid/files/12_jmicron_namefix.patch          |  20 ++
 .../dmraid/files/13_fix_testing.patch              |  24 ++
 .../files/14_pdc_dump_extended_metadata.patch      | 147 +++++++++++
 .../15_drop_p_for_partition_conditional.patch      |  31 +++
 .../dmraid/files/16_change-uuid.patch              |  77 ++++++
 .../files/17_convert-dmraid45-to-dmraid.patch      | 273 +++++++++++++++++++
 .../dmraid/files/18_ignore-too-small-devices.patch |  39 +++
 .../files/19_compile-dmraid-in-subdir-tools.patch  |  20 ++
 .../20_specifies-install-dir-by-DESTDIR.patch      | 123 +++++++++
 21 files changed, 1623 insertions(+)
 create mode 100644 meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb
 create mode 100644 meta-oe/recipes-extended/dmraid/files/01_fix_broken_linking.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/02_disable_dmreg.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/03_fix_hyphen-used-as-minus-sign.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/04_promise-add-offsets.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/05_exit_code.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/06_support_virtio_devices.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/07_isw-probe-hpa.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/08_activate_multiple_raid_sets.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/09_pdc_raid10_failure..patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/10_ddf1_lsi_persistent_name.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/11_fix_isw_sectors_calculation.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/12_jmicron_namefix.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/13_fix_testing.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/14_pdc_dump_extended_metadata.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/15_drop_p_for_partition_conditional.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/16_change-uuid.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/17_convert-dmraid45-to-dmraid.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/18_ignore-too-small-devices.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/19_compile-dmraid-in-subdir-tools.patch
 create mode 100644 meta-oe/recipes-extended/dmraid/files/20_specifies-install-dir-by-DESTDIR.patch

diff --git a/meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb b/meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb
new file mode 100644
index 0000000..281587d
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb
@@ -0,0 +1,71 @@
+SUMMARY = "dmraid (Device-mapper RAID tool and library)"
+DESCRIPTION = "DMRAID supports RAID device discovery, RAID set activation, \
+creation, removal, rebuild and display of properties for ATARAID/DDF1 \
+metadata on Linux >= 2.4 using device-mapper."
+HOMEPAGE = "http://people.redhat.com/heinzm/sw/dmraid"
+SECTION = "System Environment/Base"
+
+SRC_URI = "http://people.redhat.com/heinzm/sw/dmraid/src/old/${BPN}-${PV}.tar.bz2 \
+           file://01_fix_broken_linking.patch \
+           file://02_disable_dmreg.patch \
+           file://03_fix_hyphen-used-as-minus-sign.patch \
+           file://04_promise-add-offsets.patch \
+           file://05_exit_code.patch \
+           file://06_support_virtio_devices.patch \
+           file://07_isw-probe-hpa.patch \
+           file://08_activate_multiple_raid_sets.patch \
+           file://09_pdc_raid10_failure..patch \
+           file://10_ddf1_lsi_persistent_name.patch \
+           file://11_fix_isw_sectors_calculation.patch \
+           file://12_jmicron_namefix.patch \
+           file://13_fix_testing.patch \
+           file://14_pdc_dump_extended_metadata.patch \
+           file://15_drop_p_for_partition_conditional.patch \
+           file://16_change-uuid.patch \
+           file://17_convert-dmraid45-to-dmraid.patch \
+           file://18_ignore-too-small-devices.patch \
+           file://19_compile-dmraid-in-subdir-tools.patch \
+           file://20_specifies-install-dir-by-DESTDIR.patch \
+          "
+
+SRC_URI[md5sum] = "32832c1dfd7e72cd4355490322fca68a"
+SRC_URI[sha256sum] = "f849c44d041f8891c61419ddf906e6e34b44948939ae9e550be662ffc2492255"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=15b3012575eeffacc3cec27a6d3cb31f"
+
+DEPENDS = "lvm2"
+
+S = "${WORKDIR}/${BPN}/${PV}"
+
+CONFIGUREOPTS = " --build=${BUILD_SYS} \
+                  --host=${HOST_SYS} \
+                  --target=${TARGET_SYS} \
+                  --prefix=${prefix} \
+                  --exec_prefix=${exec_prefix} \
+                  --bindir=${bindir} \
+                  --sbindir=${sbindir} \
+                  --libexecdir=${libexecdir} \
+                  --datadir=${datadir} \
+                  --sysconfdir=${sysconfdir} \
+                  --sharedstatedir=${sharedstatedir} \
+                  --localstatedir=${localstatedir} \
+                  --libdir=${libdir} \
+                  --includedir=${includedir} \
+                  --oldincludedir=${oldincludedir} \
+                  --infodir=${infodir} \
+                  --mandir=${mandir} \
+                "
+EXTRA_OECONF += " --disable-static_link --enable-led --enable-intel_led --enable-debug  "
+
+do_configure() {
+    ./configure ${CONFIGUREOPTS} ${EXTRA_OECONF}
+}
+
+do_compile() {
+  oe_runmake DESTDIR=${D}
+}
+
+do_install() {
+   oe_runmake DESTDIR=${D} install
+}
diff --git a/meta-oe/recipes-extended/dmraid/files/01_fix_broken_linking.patch b/meta-oe/recipes-extended/dmraid/files/01_fix_broken_linking.patch
new file mode 100644
index 0000000..b43ecac
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/01_fix_broken_linking.patch
@@ -0,0 +1,121 @@
+Author: Luke Yelavich <themuso@ubuntu.com>
+Description: Fix library symbolic link creation and library linking.
+--- 1.0.0.rc16.orig/configure
++++ 1.0.0.rc16/configure
+@@ -693,6 +693,7 @@ DEBUG_MALLOC
+ DMRAID_TEST
+ DMRAID_VERSION
+ DMRAID_LIB_VERSION
++DMRAID_LIB_MAJOR_VERSION
+ DIETLIBC
+ GROUP
+ JOBS
+@@ -5767,8 +5768,10 @@ fi
+ 
+ if test "-f lib/version.h"; then
+   DMRAID_LIB_VERSION="`sed --quiet 's/^.*\(DMRAID_LIB_VERSION\)[^_].*"\(.*\)"/\2/p' lib/version.h`"
++  DMRAID_LIB_MAJOR_VERSION="`grep DMRAID_LIB_MAJOR_VERSION lib/version.h | tr '\t' ' ' | cut -f 3 -d ' '`"
+ else
+   DMRAID_LIB_VERSION="Unknown"
++  DMRAID_LIB_MAJOR_VERSION="Unknown"
+ fi
+ 
+ 
+--- 1.0.0.rc16.orig/configure.in
++++ 1.0.0.rc16/configure.in
+@@ -178,7 +178,7 @@ if test x$DEBUG_MALLOC = xyes; then
+ fi
+ 
+ dnl Mess with default exec_prefix
+-if [[ "x$exec_prefix" = xNONE -a "x$prefix" = xNONE ]];
++if [ "x$exec_prefix" = xNONE -a "x$prefix" = xNONE ];
+  then  exec_prefix="";
+ fi;
+ 
+@@ -220,8 +220,10 @@ fi
+ 
+ if test "-f lib/version.h"; then
+   DMRAID_LIB_VERSION="`sed --quiet 's/^.*\(DMRAID_LIB_VERSION\)[[^_]].*"\(.*\)"/\2/p' lib/version.h`"
++  DMRAID_LIB_MAJOR_VERSION="`grep DMRAID_LIB_MAJOR_VERSION lib/version.h | tr '\t' ' ' | cut -f 3 -d ' '`"
+ else
+   DMRAID_LIB_VERSION="Unknown"
++  DMRAID_LIB_MAJOR_VERSION="Unknown"
+ fi
+ 
+ AC_SUBST(CC)
+@@ -232,6 +234,7 @@ AC_SUBST(DEBUG_MALLOC)
+ AC_SUBST(DMRAID_TEST)
+ AC_SUBST(DMRAID_VERSION)
+ AC_SUBST(DMRAID_LIB_VERSION)
++AC_SUBST(DMRAID_LIB_MAJOR_VERSION)
+ AC_SUBST(DIETLIBC)
+ AC_SUBST(GROUP)
+ AC_SUBST(JOBS)
+--- 1.0.0.rc16.orig/lib/Makefile.in
++++ 1.0.0.rc16/lib/Makefile.in
+@@ -65,6 +65,11 @@ ifeq ("@KLIBC@", "no")
+ 		LIB_EVENTS_SHARED=$(top_srcdir)/lib/$(LIB_EVENTS_NAME).so
+ 		TARGETS += $(LIB_SHARED) $(LIB_EVENTS_SHARED)
+ 		INSTALL_TARGETS += $(LIB_SHARED) $(LIB_EVENTS_SHARED)
++		ifeq ("@DIETLIBC@", "yes")
++			LIBDMRAIDLIBS += -ldevmapper_dietc
++		else
++			LIBDMRAIDLIBS += -ldevmapper
++		endif
+ 	endif
+ endif
+ 
+@@ -82,10 +87,11 @@ install_dmraid_libs: $(INSTALL_TARGETS)
+ 	for f in $(INSTALL_TARGETS); \
+ 	do \
+ 		n=$$(basename $${f}) ; \
+-		if [[ "$$n" =~ '.so$$' ]]; then \
++		if echo "$$n" | grep -q '.so$$'; then \
+ 			$(INSTALL) -m 555 $(STRIP) \
+ 				$$f $(libdir)/$${n}.@DMRAID_LIB_VERSION@; \
+-			$(LN_S) -f $${n}.@DMRAID_LIB_VERSION@ $(libdir)/$${n}; \
++			mkdir -p $(prefix)/lib; \
++			cd $(prefix)/lib/ && $(LN_S) -f /lib/$${n}.@DMRAID_LIB_VERSION@ $${n}; \
+ 		else \
+ 			$(INSTALL) -m 555 $(STRIP) $$f $(libdir)/$${n}; \
+ 		fi \
+--- 1.0.0.rc16.orig/make.tmpl.in
++++ 1.0.0.rc16/make.tmpl.in
+@@ -44,6 +44,7 @@ endif
+ OWNER = @OWNER@
+ GROUP = @GROUP@
+ DMRAID_LIB_VERSION = @DMRAID_LIB_VERSION@
++DMRAID_LIB_MAJOR_VERSION = @DMRAID_LIB_MAJOR_VERSION@
+ 
+ # The number of jobs to run, if blank, defaults to the make standard
+ ifndef MAKEFLAGS
+@@ -136,7 +137,7 @@ $(TARGETS): $(OBJECTS)
+ 
+ %.so: $(OBJECTS)
+ 	$(CC) -shared -Wl,-soname,$(notdir $@).$(DMRAID_LIB_VERSION) \
+-	-Wl,--version-script,.export.sym $(OBJECTS) -o $@ -ldevmapper-event
++	-Wl,--version-script,.export.sym $(OBJECTS) $(LIBDMRAIDLIBS) -o $@ -ldevmapper-event
+ 
+ $(LIB_STATIC): $(OBJECTS)
+ 	$(RM) $@
+--- 1.0.0.rc16.orig/tools/Makefile.in
++++ 1.0.0.rc16/tools/Makefile.in
+@@ -34,12 +34,16 @@ ifeq ("@KLIBC@", "yes")
+ 	DMRAIDLIBS += -ldevmapper_klibc
+ else
+ 	ifeq ("@DIETLIBC@", "yes")
+-		DMRAIDLIBS += -ldevmapper_dietc
++		ifeq ("@LIB_SO@", "no")
++			DMRAIDLIBS += -ldevmapper_dietc
++		endif
+ 		ifeq ("@STATIC_LINK@", "no")
+ 			DMEVENTTOOLLIBS = -ldevmapper-event_dietc
+ 		endif
+ 	else
+-		DMRAIDLIBS += -ldevmapper
++		ifeq ("@LIB_SO@", "no")
++			DMRAIDLIBS += -ldevmapper
++		endif
+ 		ifeq ("@STATIC_LINK@", "no")
+ 			DMEVENTTOOLLIBS = -ldevmapper-event
+ 		endif
diff --git a/meta-oe/recipes-extended/dmraid/files/02_disable_dmreg.patch b/meta-oe/recipes-extended/dmraid/files/02_disable_dmreg.patch
new file mode 100644
index 0000000..079768b
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/02_disable_dmreg.patch
@@ -0,0 +1,134 @@
+Disabled all dmreg stuff
+--- 1.0.0.rc16.orig/lib/Makefile.in
++++ 1.0.0.rc16/lib/Makefile.in
+@@ -45,10 +45,6 @@ SOURCES=\
+ 	format/ddf/ddf1_dump.c \
+ 	format/partition/dos.c
+ 
+-ifeq ("@STATIC_LINK@", "no")
+-	SOURCES += register/dmreg.c
+-endif
+-
+ OBJECTS=$(SOURCES:%.c=%.o)
+ 
+ LIB_STATIC=$(top_srcdir)/lib/libdmraid.a
+@@ -63,8 +59,8 @@ ifeq ("@KLIBC@", "no")
+ 	ifeq ("@STATIC_LINK@", "no")
+ 		LIB_SHARED=$(top_srcdir)/lib/libdmraid.so
+ 		LIB_EVENTS_SHARED=$(top_srcdir)/lib/$(LIB_EVENTS_NAME).so
+-		TARGETS += $(LIB_SHARED) $(LIB_EVENTS_SHARED)
+-		INSTALL_TARGETS += $(LIB_SHARED) $(LIB_EVENTS_SHARED)
++		TARGETS += $(LIB_SHARED)
++		INSTALL_TARGETS += $(LIB_SHARED)
+ 		ifeq ("@DIETLIBC@", "yes")
+ 			LIBDMRAIDLIBS += -ldevmapper_dietc
+ 		else
+--- 1.0.0.rc16.orig/make.tmpl.in
++++ 1.0.0.rc16/make.tmpl.in
+@@ -137,7 +137,7 @@ $(TARGETS): $(OBJECTS)
+ 
+ %.so: $(OBJECTS)
+ 	$(CC) -shared -Wl,-soname,$(notdir $@).$(DMRAID_LIB_VERSION) \
+-	-Wl,--version-script,.export.sym $(OBJECTS) $(LIBDMRAIDLIBS) -o $@ -ldevmapper-event
++	-Wl,--version-script,.export.sym $(OBJECTS) $(LIBDMRAIDLIBS) -o $@
+ 
+ $(LIB_STATIC): $(OBJECTS)
+ 	$(RM) $@
+--- 1.0.0.rc16.orig/tools/Makefile.in
++++ 1.0.0.rc16/tools/Makefile.in
+@@ -22,12 +22,6 @@ TARGETS=\
+ 
+ include $(top_srcdir)/make.tmpl
+ 
+-ifeq ("@KLIBC@", "no")
+-	ifeq ("@STATIC_LINK@", "no")
+-		TARGETS += dmevent_tool
+-	endif
+-endif
+-
+ DMRAIDLIBS=-ldmraid
+ 
+ ifeq ("@KLIBC@", "yes")
+@@ -37,16 +31,10 @@ else
+ 		ifeq ("@LIB_SO@", "no")
+ 			DMRAIDLIBS += -ldevmapper_dietc
+ 		endif
+-		ifeq ("@STATIC_LINK@", "no")
+-			DMEVENTTOOLLIBS = -ldevmapper-event_dietc
+-		endif
+ 	else
+ 		ifeq ("@LIB_SO@", "no")
+ 			DMRAIDLIBS += -ldevmapper
+ 		endif
+-		ifeq ("@STATIC_LINK@", "no")
+-			DMEVENTTOOLLIBS = -ldevmapper-event
+-		endif
+ 	endif
+ 
+ 	ifeq ("@LIBSELINUX@", "yes")
+--- 1.0.0.rc16.orig/lib/.export.sym
++++ 1.0.0.rc16/lib/.export.sym
+@@ -52,8 +52,6 @@ Base {

+ 		dso_end_rebuild;

+ 		hot_spare_add;

+ 		dso_get_members;

+-		dm_register_device;

+-		dm_unregister_device;
+ 		dm_all_monitored;
+ 	local:

+ 		*;

+--- 1.0.0.rc16.orig/lib/activate/activate.c
++++ 1.0.0.rc16/lib/activate/activate.c
+@@ -849,18 +849,12 @@ enum dm_what { DM_ACTIVATE, DM_REGISTER 
+ static int
+ dm_register_for_event(char *dev_name, char *lib_name)
+ {
+-#ifdef	DMRAID_AUTOREGISTER
+-	dm_register_device(dev_name, lib_name);
+-#endif
+ 	return 1;
+ }
+ 
+ static int
+ dm_unregister_for_event(char *dev_name, char *lib_name)
+ {
+-#ifdef	DMRAID_AUTOREGISTER
+-	dm_unregister_device(dev_name, lib_name);
+-#endif
+ 	return 1;
+ }
+ 
+@@ -874,6 +868,8 @@ do_device(struct lib_context *lc, struct
+ 	if (OPT_TEST(lc))
+ 		return 1;
+ 
++	return 1;
++
+         struct dmraid_format *fmt = get_format(rs);
+ 
+         if (fmt->name != NULL) {
+--- 1.0.0.rc16.orig/lib/metadata/reconfig.c
++++ 1.0.0.rc16/lib/metadata/reconfig.c
+@@ -242,20 +242,16 @@ add_dev_to_raid(struct lib_context *lc, 
+ 		 * metadata on disks to OK state.
+ 		 */
+ 		/* Create lib-events library name */
+-		if (fmt->name) {
++		/*if (fmt->name) {
+ 			strncpy(lib_name, "libdmraid-events-", LIB_NAME_LENGTH);
+ 			strncat(lib_name, fmt->name,
+ 				LIB_NAME_LENGTH-strlen(fmt->name)-3);
+ 			strncat(lib_name, ".so", 3);
+ 		} else
+ 			goto err;
+-
+-		/* Check registration */
+-		if (!dm_monitored_events(&pending, sub_rs->name, lib_name)) {
+-			/* If NOT registered update metadata to OK state. */
++*/
+ 			if (check_rd->fmt->metadata_handler)
+ 				check_rd->fmt->metadata_handler(lc, UPDATE_REBUILD_STATE, NULL, (void *) rs);
+-		}
+ 	}
+ #endif
+ 
diff --git a/meta-oe/recipes-extended/dmraid/files/03_fix_hyphen-used-as-minus-sign.patch b/meta-oe/recipes-extended/dmraid/files/03_fix_hyphen-used-as-minus-sign.patch
new file mode 100644
index 0000000..8c8c0de
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/03_fix_hyphen-used-as-minus-sign.patch
@@ -0,0 +1,291 @@
+Author: Giuseppe Iuculano <giuseppe@iuculano.it>
+Description: Fix hyphen-used-as-minus-sign
+--- 1.0.0.rc16.orig/man/dmraid.8
++++ 1.0.0.rc16/man/dmraid.8
+@@ -4,20 +4,20 @@ dmraid \- discover, configure and activa
+ .SH SYNOPSIS
+ .B dmraid
+  {-a|--activate} {y|n|yes|no} 
+- [-d|--debug]... [-v|--verbose]... [-i|--ignorelocking]
+- [-f|--format FORMAT[,FORMAT...]]
++ [\-d|--debug]... [\-v|--verbose]... [\-i|--ignorelocking]
++ [\-f|--format FORMAT[,FORMAT...]]
+  [{-P|--partchar} CHAR]
+- [-p|--no_partitions]
+- [-Z|--rm_partitions]
++ [\-p|--no_partitions]
++ [\-Z|--rm_partitions]
+  [--separator SEPARATOR]
+- [-t|--test]
++ [\-t|--test]
+  [RAID-set...]
+ 
+ .B dmraid
+  {-b|--block_devices}
+- [-c|--display_columns][FIELD[,FIELD...]]...
+- [-d|--debug]... [-v|--verbose]...
+- [--separator SEPARATOR]
++ [\-c|--display_columns][FIELD[,FIELD...]]...
++ [\-d|--debug]... [\-v|--verbose]...
++ [\--separator SEPARATOR]
+  [device-path...]
+ 
+ .B dmraid
+@@ -25,60 +25,60 @@ dmraid \- discover, configure and activa
+ 
+ .B dmraid
+  {-l|--list_formats}
+- [-d|--debug]... [-v|--verbose]...
++ [\-d|--debug]... [\-v|--verbose]...
+ 
+ .B dmraid
+  {-n|--native_log}
+- [-d|--debug]... [-v|--verbose]... [-i|--ignorelocking]
+- [-f|--format FORMAT[,FORMAT...]]
+- [--separator SEPARATOR]
++ [\-d|--debug]... [\-v|--verbose]... [\-i|--ignorelocking]
++ [\-f|--format FORMAT[,FORMAT...]]
++ [\--separator SEPARATOR]
+  [device-path...]
+ 
+ .B dmraid
+- {-R| --rebuild}
++ {-R| \--rebuild}
+  RAID-set
+  [device-path]
+ 
+ .B dmraid
+- {-x| --remove}
++ {-x| \--remove}
+  [RAID-set]
+ 
+ .B dmraid
+- -f FORMAT-handler
+-{-C| --create} set 
+- --type raidlevel
+- [--size=setsize --strip stridesize] 
+- --disk "device-path, device-path [, device-path ...]"
++ \-f FORMAT-handler
++{-C| \--create} set 
++ \--type raidlevel
++ [\--size=setsize \--strip stridesize] 
++ \--disk "device-path, device-path [, device-path ...]"
+ 
+ .B dmraid
+-[ -f|--format FORMAT-handler]
+--S|--spare [RAID-set]
+--M|--media  "device-path"
++[ \-f|--format FORMAT-handler]
++\-S|--spare [RAID-set]
++\-M|--media  "device-path"
+ 
+ .B dmraid
+  {-r|--raid_devices}
+- [-c|--display_columns][FIELD[,FIELD...]]...
+- [-d|--debug]... [-v|--verbose]... [-i|--ignorelocking]
+- [-D|--dump_metadata]
+- [-f|--format FORMAT[,FORMAT...]]
+- [--separator SEPARATOR]
++ [\-c|--display_columns][FIELD[,FIELD...]]...
++ [\-d|--debug]... [\-v|--verbose]... [\-i|--ignorelocking]
++ [\-D|--dump_metadata]
++ [\-f|--format FORMAT[,FORMAT...]]
++ [\--separator SEPARATOR]
+  [device-path...]
+ 
+ .B dmraid
+  {-r|--raid_devices}
+- [-d|--debug]... [-v|--verbose]... [-i|--ignorelocking]
+- [-E|--erase_metadata]
+- [-f|--format FORMAT[,FORMAT...]]
+- [--separator SEPARATOR]
++ [\-d|--debug]... [\-v|--verbose]... [\-i|--ignorelocking]
++ [\-E|--erase_metadata]
++ [\-f|--format FORMAT[,FORMAT...]]
++ [\--separator SEPARATOR]
+  [device-path...]
+ 
+ .B dmraid
+  {-s|--sets}...[a|i|active|inactive]
+- [-c|--display_columns][FIELD[,FIELD...]]...
+- [-d|--debug]... [-v|--verbose]... [-i|--ignorelocking]
+- [-f|--format FORMAT[,FORMAT...]]
+- [-g|--display_group]
+- [--separator SEPARATOR]
++ [\-c|--display_columns][FIELD[,FIELD...]]...
++ [\-d|--debug]... [\-v|--verbose]... [\-i|--ignorelocking]
++ [\-f|--format FORMAT[,FORMAT...]]
++ [\-g|--display_group]
++ [\--separator SEPARATOR]
+  [RAID-set...]
+ 
+ .B dmraid
+@@ -117,7 +117,7 @@ will make dmraid tell the kernel to remo
+ underlying the set, ie if sda is part of the set, remove sda1, sda2, etc.
+ This prevents applications from directly accessiong the disks bypassing dmraid.
+ RAID set names given on command line don't need to be fully specified
+-(eg, "dmraid -ay sil" would activate all discovered Silicon Image Medley
++(eg, "dmraid \-ay sil" would activate all discovered Silicon Image Medley
+ RAID sets).
+ 
+ .TP
+@@ -134,7 +134,7 @@ See description of
+ below for FIELD identifiers.
+ 
+ .TP
+-.I [-d|--debug]...
++.I [\-d|--debug]...
+ Enable debugging output. Opion can be given multiple times
+ increasing the debug output level.
+ 
+@@ -214,18 +214,18 @@ is added to the system.
+     During system reboot, enter OROM and mark the new drive as the rebuild drive.  
+     After booting to the OS, use the dmraid command to rebuild.
+ 
+-    Example: dmraid -R raid_set 
++    Example: dmraid \-R raid_set 
+ 
+ 2. Using dmraid to identify a new drive
+     Boot to the OS and use the dmraid command with the new drive as
+ the second parameter.
+ 
+-    Example: dmraid -R raid_set /dev/sdc
++    Example: dmraid \-R raid_set /dev/sdc
+ 
+ 3. Using hot spare drive
+-    Mark a drive as hot spare using the "dmraid -f isw -S" command. Then use the dmraid command to start the rebuild.
++    Mark a drive as hot spare using the "dmraid \-f isw \-S" command. Then use the dmraid command to start the rebuild.
+ 
+-    Example: dmraid -R raid_set
++    Example: dmraid \-R raid_set
+ 
+ .TP
+ .I {-x|--remove} [RAID-set]
+@@ -235,11 +235,11 @@ Delete one or all existing software RAID
+ .I -f FORMAT-handler {-C|--create} --type raidlevel [--size=setsize --strip stripsize] --disk "device-path, device-path [,device-path]"
+ Delete one or all existing Configure a software RAID device  and store the configuration data in a group of hard drive devices consisting of this array. This command requires the following options:
+ 
+--f FORMAT-handler
++\-f FORMAT-handler
+ .br
+-	metadata format (see "dmraid -l")
++	metadata format (see "dmraid \-l")
+ .br		
+---type digit[digit...]
++\--type digit[digit...]
+ .br
+ 	specify the raid level of the software RAID set. 
+ .br
+@@ -251,7 +251,7 @@ Delete one or all existing Configure a s
+ .br
+ 		01: raid01 (isw raid10)
+ .br
+---size: [digits[k|K|m|M|g|G][b|B]]
++\--size: [digits[k|K|m|M|g|G][b|B]]
+ .br
+ 	specify the size of the RAID set.The number is an integer followed by [kKmMgG] and/or [bB].
+ .br
+@@ -267,11 +267,11 @@ Delete one or all existing Configure a s
+ .br
+ If this option is missing, it's set to the default value pre-configured by the vendor. Note that different vendors may apply different constraints on the granularity of the size or the minimal value.
+ .br
+---strip: [digits[k|K|m|M|g|G][b|B]]
++\--strip: [digits[k|K|m|M|g|G][b|B]]
+ .br
+ 	specify the strip size of a RAID1, RAID5, and RAID10 RAID set (as above)
+ .br
+---disk: device-path[{,| }device-path...]
++\--disk: device-path[{,| }device-path...]
+ .br
+ 	specify the array of the hard drives, e.g. /dev/sda.
+ 
+@@ -349,7 +349,7 @@ Use SEPARATOR as a delimiter for all opt
+ .TP
+ .I -s... [a|i] [RAID-set...]
+ Display properties of RAID sets. Multiple RAID set names can be given
+-on the command line which don't need to be fully specified (eg, "dmraid -s hpt"
++on the command line which don't need to be fully specified (eg, "dmraid \-s hpt"
+ would display all discovered Highpoint RAID sets). Enter
+ .B -s
+ twice to display RAID subsets too.
+@@ -377,7 +377,7 @@ Enable verbose runtime information outpu
+ increasing the verbosity level.
+ 
+ .SH EXAMPLES
+-"dmraid -l" lists all supported metadata formats with their names along with
++"dmraid \-l" lists all supported metadata formats with their names along with
+ some descriptive information, eg:
+ .br
+ hpt37x : (+) Highpoint HPT37X
+@@ -400,16 +400,16 @@ dos    : (+) DOS partitions on SW RAIDs
+ .br
+ (0): Discover, (+): Discover+Activate
+ 
+-"dmraid -ay" activates all software RAID sets discovered.
++"dmraid \-ay" activates all software RAID sets discovered.
+ 
+-"dmraid -an" deactivates all active software RAID sets which are not open
++"dmraid \-an" deactivates all active software RAID sets which are not open
+ (eg, mounted filesystem on them).
+ 
+-"dmraid -ay -f pdc" (pdc looked up from "dmraid -l") activates all
++"dmraid \-ay \-f pdc" (pdc looked up from "dmraid \-l") activates all
+ software RAID sets with Promise format discovered and ignores all other
+ supported formats.
+ 
+-"dmraid -r" discovers all software RAID devices supported on your system, eg:
++"dmraid \-r" discovers all software RAID devices supported on your system, eg:
+ .br
+ /dev/dm-46: hpt45x, "hpt45x_chidjhaiaa-0", striped, ok, 320172928 sectors, data@ 0
+ .br
+@@ -420,7 +420,7 @@ supported formats.
+ /dev/dm-58: hpt45x, "hpt45x_chidjhaiaa-1", striped, ok, 320172928 sectors, data@ 0
+ 
+ 
+-"dmraid -s -s hpt45x_chidjhaiaa" displays properties of
++"dmraid \-s \-s hpt45x_chidjhaiaa" displays properties of
+ set "hpt45x_chidjhaiaa", eg:
+ .br
+ *** Superset
+@@ -478,7 +478,7 @@ dev    : 2
+ spare  : 0
+ .br
+ 
+-"dmraid -s -ccs hpt45" displays properties in column format of all sets
++"dmraid \-s \-ccs hpt45" displays properties in column format of all sets
+ and subsets with hpt45* format, eg:
+ .br
+ hpt45x_chidjhaiaa,640345856,128,raid10,ok,4,0
+@@ -487,7 +487,7 @@ hpt45x_chidjhaiaa-a,640345856,128,stripe
+ .br
+ hpt45x_chidjhaiaa-b,640345856,128,stripe,ok,2,0
+ 
+-"dmraid -r --sep : -cpath:size" display paths and sizes in sectors for
++"dmraid \-r \--sep : \-cpath:size" display paths and sizes in sectors for
+ RAID devices in column format using ':' as a delimiter, eg:
+ .br
+ /dev/dm-8:320173055
+@@ -518,18 +518,18 @@ RAID devices in column format using ':' 
+ .br
+ /dev/dm-66:390624896
+ 
+-"dmraid -f isw -C Raid0 --type 0 --strip 8k --size 20g --disk "/dev/sdb /dev/sdc"" creates an ISW volume with
++"dmraid \-f isw \-C Raid0 \--type 0 \--strip 8k \--size 20g \--disk "/dev/sdb /dev/sdc"" creates an ISW volume with
+ a name of "Raid0", 20Gig bytes in total, and 8kilo bytes strip size on two disks.
+ 
+-"dmraid -f isw -C Test0 --type 0 --disk "/dev/sdd /dev/sde"" creates an ISW volume with the default size and strip size.
++"dmraid \-f isw \-C Test0 \--type 0 \--disk "/dev/sdd /dev/sde"" creates an ISW volume with the default size and strip size.
+ 
+-"dmraid -f isw -C Test10 --type 01 --strip 128B --disk "/dev/sda /dev/sdb /dev/sdc /dev/sdd" creates a stacked
++"dmraid \-f isw \-C Test10 \--type 01 \--strip 128B \--disk "/dev/sda /dev/sdb /dev/sdc /dev/sdd" creates a stacked
+ RAID device, RAID10 (isw format), with a name of "Test10", 128 blocks (512bytes) strip size , and the default volume size on
+ 4 disks.
+ 
+-"dmraid -f isw -S -M /dev/sde" marks the device /dev/sde as a hot spare for rebuild
++"dmraid \-f isw \-S \-M /dev/sde" marks the device /dev/sde as a hot spare for rebuild
+ 
+-"dmraid -R isw_djaggchdde_RAID1 /dev/sde" starts rebuild of the RAID volume on device /dev/sde
++"dmraid \-R isw_djaggchdde_RAID1 /dev/sde" starts rebuild of the RAID volume on device /dev/sde
+ 
+ .SH DIAGNOSTICS
+ dmraid returns an exit code of 0 for success or 1 for error.
diff --git a/meta-oe/recipes-extended/dmraid/files/04_promise-add-offsets.patch b/meta-oe/recipes-extended/dmraid/files/04_promise-add-offsets.patch
new file mode 100644
index 0000000..1f07da5
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/04_promise-add-offsets.patch
@@ -0,0 +1,13 @@
+Author: Luke Yelavich <themuso@ubuntu.com>
+Description: Add extra offsets where promise metadata can be found.
+--- 1.0.0.rc16.orig/lib/format/ataraid/pdc.h
++++ 1.0.0.rc16/lib/format/ataraid/pdc.h
+@@ -13,7 +13,7 @@
+ 
+ #include <stdint.h>
+ 
+-#define PDC_CONFIGOFFSETS	63,255,256,16,399,591,675,735,974,991
++#define PDC_CONFIGOFFSETS	63,255,256,16,399,591,675,735,974,991,911,951
+ #define	PDC_DATAOFFSET 0
+ 
+ /*
diff --git a/meta-oe/recipes-extended/dmraid/files/05_exit_code.patch b/meta-oe/recipes-extended/dmraid/files/05_exit_code.patch
new file mode 100644
index 0000000..5c0b036
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/05_exit_code.patch
@@ -0,0 +1,22 @@
+Author: Giuseppe Iuculano <giuseppe@iuculano.it>
+Description: Fix exit-code for "No RAID disks" and "no block devices found" errors (LP: #300825)
+--- 1.0.0.rc16.orig/lib/metadata/metadata.c
++++ 1.0.0.rc16/lib/metadata/metadata.c
+@@ -2096,7 +2096,7 @@ get_metadata(struct lib_context *lc, enu
+ 
+ 	if (!count_devices(lc, DEVICE)) {
+ 		log_print(lc, "no block devices found");
+-		return 1;
++		return 0;
+ 	}
+ 
+ 	if (!(M_RAID & p->metadata))
+@@ -2118,7 +2118,7 @@ get_metadata(struct lib_context *lc, enu
+ 	if (!OPT_HOT_SPARE_SET(lc) && !OPT_CREATE(lc)
+ 	    && !count_devices(lc, RAID)) {
+ 		format_error(lc, "disks", argv);
+-		return 1;
++		return 0;
+ 	}
+ 
+ 	if (M_SET & p->metadata) {
diff --git a/meta-oe/recipes-extended/dmraid/files/06_support_virtio_devices.patch b/meta-oe/recipes-extended/dmraid/files/06_support_virtio_devices.patch
new file mode 100644
index 0000000..2863219
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/06_support_virtio_devices.patch
@@ -0,0 +1,13 @@
+Author: Luke Yelavich <themuso@ubuntu.com>
+Description: Support for checking virtio devices for dmraid metadata.
+--- 1.0.0.rc16.orig/lib/device/scan.c
++++ 1.0.0.rc16/lib/device/scan.c
+@@ -174,7 +174,7 @@ interested(struct lib_context *lc, char 
+ 	 * Whole IDE and SCSI disks only.
+ 	 */
+ 	return (!isdigit(name[strlen(name) - 1]) &&
+-		(*(name + 1) == 'd' && (*name == 'h' || *name == 's')))
++		(*(name + 1) == 'd' && (*name == 'h' || *name == 's' || *name == 'v')))
+ #ifdef	DMRAID_TEST
+ 		/*
+ 		 * Include dm devices for testing.
diff --git a/meta-oe/recipes-extended/dmraid/files/07_isw-probe-hpa.patch b/meta-oe/recipes-extended/dmraid/files/07_isw-probe-hpa.patch
new file mode 100644
index 0000000..289604f
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/07_isw-probe-hpa.patch
@@ -0,0 +1,144 @@
+Probe isw disks with [some] HPA awareness, thanks to Robert Collins <robert@ubuntu.com>. (LP: #372170)
+--- 1.0.0.rc16.orig/lib/format/ataraid/isw.c
++++ 1.0.0.rc16/lib/format/ataraid/isw.c
+@@ -353,6 +353,7 @@ raiddev(struct isw *isw, unsigned i)
+ enum convert { FULL, FIRST, LAST };
+ #if	BYTE_ORDER == LITTLE_ENDIAN
+ #  define	to_cpu(x, y)
++#  define       CVT16(x)
+ #else
+ /*
+  * We can differ from the read_raid_dev template here,
+@@ -547,15 +548,16 @@ disk_ok(struct lib_context *lc, struct d
+ }
+ 
+ static void *
+-isw_read_metadata(struct lib_context *lc, struct dev_info *di,
+-		  size_t * sz, uint64_t * offset, union read_info *info)
++isw_try_sboffset(struct lib_context *lc, struct dev_info *di,
++		 size_t * sz, uint64_t * offset, union read_info *info,
++		 uint64_t const isw_sboffset)
+ {
+ 	size_t size = ISW_DISK_BLOCK_SIZE;
+-	uint64_t isw_sboffset = ISW_CONFIGOFFSET(di);
+ 	struct isw *isw;
++	uint64_t temp_isw_sboffset = isw_sboffset;
+ 
+ 	if (!(isw = alloc_private_and_read(lc, handler, size,
+-					   di->path, isw_sboffset)))
++					   di->path, temp_isw_sboffset)))
+ 		goto out;
+ 
+ 	/*
+@@ -565,9 +567,15 @@ isw_read_metadata(struct lib_context *lc
+ 	to_cpu(isw, FIRST);
+ 
+ 	/* Check Signature and read optional extended metadata. */
+-	if (!is_isw(lc, di, isw) ||
+-	    !isw_read_extended(lc, di, &isw, &isw_sboffset, &size))
++	if (!is_isw(lc, di, isw)) {
++		log_dbg(lc, "not isw at %ld", isw_sboffset);
+ 		goto bad;
++	}
++	if (!isw_read_extended(lc, di, &isw, &temp_isw_sboffset, &size)) {
++		log_err(lc, "isw metadata, but extended read failed at %ld",
++			isw_sboffset);
++		goto bad;
++	}
+ 
+ 	/*
+ 	 * Now that we made sure, that we've got all the
+@@ -578,6 +586,8 @@ isw_read_metadata(struct lib_context *lc
+ 	if (disk_ok(lc, di, isw)) {
+ 		*sz = size;
+ 		*offset = info->u64 = isw_sboffset;
++		log_dbg(lc, "isw metadata found at %ld from probe at %ld\n",
++			*offset, isw_sboffset);
+ 		goto out;
+ 	}
+ 
+@@ -589,6 +599,54 @@ out:
+ 	return (void *) isw;
+ }
+ 
++/* HPA on a disk shifts everything down. This is a 'works-enough' approach to
++ * handling that. There is a better long term approach requiring kernel
++ * patches - see the lkml patches for alt_size.
++ */
++static void *
++isw_try_hpa(struct lib_context *lc, struct dev_info *di,
++	   size_t * sz, uint64_t * offset, union read_info *info)
++{
++	struct isw10 *isw10;
++	void *result = NULL;
++	uint64_t actual_offset;
++	if (!(isw10 = alloc_private_and_read(lc, handler, ISW_DISK_BLOCK_SIZE,
++		di->path, ISW_10_CONFIGOFFSET(di))))
++		goto out;
++	if (strncmp((const char *)isw10->sig, ISW10_SIGNATURE, ISW10_SIGNATURE_SIZE))
++		goto out_free;
++	log_dbg(lc, "Found isw 10 gafr signature.");
++	CVT16(isw10->offset);
++	actual_offset = isw10->offset + 2;
++	log_dbg(lc, "isw 10 sector offset calculated at %hd.", actual_offset);
++	if (actual_offset > di->sectors)
++		goto out_free;
++	result = isw_try_sboffset(lc, di, sz, offset, info,
++		ISW_SECTOR_TO_OFFSET(di->sectors - actual_offset));
++      out_free:
++	dbg_free(isw10);
++      out:
++	return result;
++}
++
++
++static void *
++isw_read_metadata(struct lib_context *lc, struct dev_info *di,
++		  size_t * sz, uint64_t * offset, union read_info *info)
++{
++	void *result;
++	if ((result = isw_try_sboffset(
++		lc, di, sz, offset, info, ISW_CONFIGOFFSET(di))))
++		return result;
++	if ((result = isw_try_hpa(lc, di, sz, offset, info)))
++		return result;
++        log_dbg(lc, "isw trying hard coded -2115 offset.");
++	if ((result = isw_try_sboffset(
++		lc, di, sz, offset, info, (di->sectors - 2115)*512)))
++		return result;
++	return NULL;
++}
++
+ static int setup_rd(struct lib_context *lc, struct raid_dev *rd,
+ 		    struct dev_info *di, void *meta, union read_info *info);
+ static struct raid_dev *
+--- 1.0.0.rc16.orig/lib/format/ataraid/isw.h
++++ 1.0.0.rc16/lib/format/ataraid/isw.h
+@@ -36,8 +36,11 @@
+ 
+ /* Intel metadata offset in bytes */
+ #define	ISW_CONFIGSECTOR(di)	((di)->sectors - 2)
+-#define	ISW_CONFIGOFFSET(di)	(ISW_CONFIGSECTOR(di) << 9)
++#define ISW_SECTOR_TO_OFFSET(sector) ((sector) << 9)
++#define	ISW_CONFIGOFFSET(di)	(ISW_SECTOR_TO_OFFSET(ISW_CONFIGSECTOR(di)))
+ #define	ISW_DATAOFFSET		0	/* Data offset in sectors */
++#define ISW_10_CONFIGSECTOR(di) ((di)->sectors - 1)
++#define ISW_10_CONFIGOFFSET(di) (ISW_SECTOR_TO_OFFSET(ISW_10_CONFIGSECTOR(di)))
+ 
+ #define MPB_SIGNATURE	     "Intel Raid ISM Cfg Sig. "
+ #define MPB_SIGNATURE_SIZE	(sizeof(MPB_SIGNATURE) - 1)
+@@ -222,6 +225,14 @@ struct isw {
+ 	// here comes isw_dev[num_raid_devs]
+ } __attribute__ ((packed));
+ 
++#define ISW10_SIGNATURE "$GAFR\x10"
++#define ISW10_SIGNATURE_SIZE (sizeof(ISW10_SIGNATURE) - 1)
++struct isw10 {
++	int8_t sig[ISW10_SIGNATURE_SIZE];
++	uint32_t offset; /* offset to real data, in sectors back */
++} __attribute__ ((packed));
++
++
+ #endif
+ 
+ int register_isw(struct lib_context *lc);
diff --git a/meta-oe/recipes-extended/dmraid/files/08_activate_multiple_raid_sets.patch b/meta-oe/recipes-extended/dmraid/files/08_activate_multiple_raid_sets.patch
new file mode 100644
index 0000000..807ceac
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/08_activate_multiple_raid_sets.patch
@@ -0,0 +1,12 @@
+Continue onto all raid sets instead of returning after processing the first. (LP: #401713)
+--- 1.0.0.rc16.orig/lib/metadata/metadata.c
++++ 1.0.0.rc16/lib/metadata/metadata.c
+@@ -839,7 +839,7 @@ _discover_partitions(struct lib_context 
+ 		 */
+ 		if (T_GROUP(rs)) {
+ 			_discover_partitions(lc, &rs->sets);
+-			return;
++			continue;
+ 		}
+ 
+ 		/*
diff --git a/meta-oe/recipes-extended/dmraid/files/09_pdc_raid10_failure..patch b/meta-oe/recipes-extended/dmraid/files/09_pdc_raid10_failure..patch
new file mode 100644
index 0000000..62b2f36
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/09_pdc_raid10_failure..patch
@@ -0,0 +1,14 @@
+fix pdc metadata format handler to report the proper number of devices in a subset
+--- 1.0.0.rc16.orig/lib/format/ataraid/pdc.c
++++ 1.0.0.rc16/lib/format/ataraid/pdc.c
+@@ -490,7 +490,9 @@ devices(struct raid_dev *rd, void *conte
+ 	if (context && pdc->raid.type != PDC_T_SPAN)
+ 		*((uint64_t *) context) += rd->sectors;
+ 
+-	return pdc->raid.total_disks;
++	return is_raid10(pdc) ? 
++		pdc->raid.total_disks / 2 :
++		pdc->raid.total_disks;
+ }
+ 
+ static int
diff --git a/meta-oe/recipes-extended/dmraid/files/10_ddf1_lsi_persistent_name.patch b/meta-oe/recipes-extended/dmraid/files/10_ddf1_lsi_persistent_name.patch
new file mode 100644
index 0000000..6e085e7
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/10_ddf1_lsi_persistent_name.patch
@@ -0,0 +1,20 @@
+Using a dummy string for the timestamp in the LSI metadata
+--- 1.0.0.rc16.orig/lib/format/ddf/ddf1.c
++++ 1.0.0.rc16/lib/format/ddf/ddf1.c
+@@ -696,6 +696,16 @@ name(struct lib_context *lc, struct ddf1
+ 			sprintf(b, "%02x%02x%02x%02x",
+ 				vd->guid[i], vd->guid[i + 1],
+ 				vd->guid[i + 2], vd->guid[i + 3]);
++
++		/*
++		 * Because the LSI bios changes the timestamp in the
++		 * metadata on every boot, we have to neutralize it
++		 * in order to allow for persistent names.
++		 *
++		 * Using a dummy string "47114711" for that.
++		 */
++		if (!strncmp((char *) vd->guid, "LSI", 3))
++			strncpy(buf + prefix + 32, "47114711", 8);
+ 	}
+ 
+ out:
diff --git a/meta-oe/recipes-extended/dmraid/files/11_fix_isw_sectors_calculation.patch b/meta-oe/recipes-extended/dmraid/files/11_fix_isw_sectors_calculation.patch
new file mode 100644
index 0000000..8087904
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/11_fix_isw_sectors_calculation.patch
@@ -0,0 +1,14 @@
+Fix isw raid0 incorrect  sectors calculation, thanks to Valentin Pavlyuchenko
+--- 1.0.0.rc16.orig/lib/format/ataraid/isw.c
++++ 1.0.0.rc16/lib/format/ataraid/isw.c
+@@ -776,7 +776,9 @@ _create_rd(struct lib_context *lc,
+ 	r->di = rd->di;
+ 	r->fmt = rd->fmt;
+ 	r->offset = dev->vol.map[0].pba_of_lba0;
+-	if ((r->sectors = dev->vol.map[0].blocks_per_member - RAID_DS_JOURNAL))
++	//fix bugs on ICH10R
++	//if ((r->sectors = dev->vol.map[0].blocks_per_member - RAID_DS_JOURNAL))
++	if ((r->sectors = dev->vol.map[0].blocks_per_member))
+ 		goto out;
+ 
+ 	log_zero_sectors(lc, rd->di->path, handler);
diff --git a/meta-oe/recipes-extended/dmraid/files/12_jmicron_namefix.patch b/meta-oe/recipes-extended/dmraid/files/12_jmicron_namefix.patch
new file mode 100644
index 0000000..a0ed1eb
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/12_jmicron_namefix.patch
@@ -0,0 +1,20 @@
+From: Phillip Susi <psusi@cfl.rr.com>
+Author: Danny Wood <danwood76@gmail.com>
+Subject: Fix jmicron names again
+Bug-Ubuntu: http://launchpad.net/bugs/576289
+Last-Update: 2011-03-08
+Description: Uninitialized variable prevented code from working
+ as intended.
+Index: 1.0.0.rc16/lib/format/ataraid/jm.c
+===================================================================
+--- 1.0.0.rc16.orig/lib/format/ataraid/jm.c
++++ 1.0.0.rc16/lib/format/ataraid/jm.c
+@@ -25,7 +25,7 @@
+ static char *
+ name(struct lib_context *lc, struct raid_dev *rd, unsigned int subset)
+ {
+-	size_t i, len;
++	size_t i = JM_NAME_LEN - 1, len;
+ 	struct jm *jm = META(rd, jm);
+ 	char *ret, *name = (char *) jm->name;
+ 	char buf[JM_NAME_LEN + 1] = { '\0' };
diff --git a/meta-oe/recipes-extended/dmraid/files/13_fix_testing.patch b/meta-oe/recipes-extended/dmraid/files/13_fix_testing.patch
new file mode 100644
index 0000000..48c2ed4
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/13_fix_testing.patch
@@ -0,0 +1,24 @@
+From: Phillip Susi <psusi@cfl.rr.com>
+Last-Update: 2011-03-08
+Forwarded: yes
+Description: Testing with dm devices was failing on Ubuntu because
+ /dev/dm-X is the actual device node, but the code wanted it to be
+ a symlink.  Fixed dm_test_device() to test that the file ( or node
+ it points to ) is a block device, which seems a much more
+ appropriate test.
+
+Index: 1.0.0.rc16/lib/device/scan.c
+===================================================================
+--- 1.0.0.rc16.orig/lib/device/scan.c
++++ 1.0.0.rc16/lib/device/scan.c
+@@ -86,8 +86,8 @@
+ {
+ 	struct stat s;
+ 
+-	return !lstat(path, &s) &&
+-		S_ISLNK(s.st_mode) &&
++	return !stat(path, &s) &&
++		S_ISBLK(s.st_mode) &&
+ 		!strncmp(get_basename(lc, path), "dm-", 3);
+ }
+ 
diff --git a/meta-oe/recipes-extended/dmraid/files/14_pdc_dump_extended_metadata.patch b/meta-oe/recipes-extended/dmraid/files/14_pdc_dump_extended_metadata.patch
new file mode 100644
index 0000000..a821195
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/14_pdc_dump_extended_metadata.patch
@@ -0,0 +1,147 @@
+From: Phillip Susi <psusi@cfl.rr.com>
+Last-Update: 2011-03-08
+Forwarded: Yes
+Description: PDC supports up to 4 sets of metadata to describe
+ different arrays. Only the first set was being dumped with
+ dmraid -rD or -n.  This patch corrects that.  Also fixes the
+ .offset file, which was always reporting 0.
+
+Index: 1.0.0.rc16/lib/format/ataraid/pdc.c
+===================================================================
+--- 1.0.0.rc16.orig/lib/format/ataraid/pdc.c
++++ 1.0.0.rc16/lib/format/ataraid/pdc.c
+@@ -172,7 +172,6 @@
+ 	unsigned *s = end_sectors;
+ 	uint64_t sector;
+ 
+-	*size = sizeof(*ret);
+ 	pdc_sectors_max = di->sectors - div_up(*size, 512);
+ 
+ 	if (!(ret = alloc_private(lc, handler,
+@@ -219,7 +218,9 @@
+ 		dbg_free(ret);
+ 		ret = NULL;
+ 	}
+-
++	*size = sizeof(*ret) * ma;
++	*offset = di->sectors - info->u32;
++	*offset <<= 9;
+ 	return ret;
+ }
+ 
+@@ -544,60 +545,64 @@
+ static void
+ _pdc_log(struct lib_context *lc, struct dev_info *di, struct pdc *pdc)
+ {
+-	unsigned i;
++	unsigned i, ma = count_meta_areas(pdc);
+ 	struct pdc_disk *disk;
+ 
+-	log_print(lc, "%s (%s):", di->path, handler);
+-	DP("promise_id: \"%s\"", pdc, pdc->promise_id);
+-	P("unknown_0: 0x%x %u",
+-	  pdc, pdc->unknown_0, pdc->unknown_0, pdc->unknown_0);
+-	DP("magic_0: 0x%x", pdc, pdc->magic_0);
+-	P("unknown_1: 0x%x %u",
+-	  pdc, pdc->unknown_1, pdc->unknown_1, pdc->unknown_1);
+-	DP("magic_1: 0x%x", pdc, pdc->magic_1);
+-	P("unknown_2: 0x%x %u",
+-	  pdc, pdc->unknown_2, pdc->unknown_2, pdc->unknown_2);
+-	DP("raid.flags: 0x%x", pdc, pdc->raid.flags);
+-	P("raid.unknown_0: 0x%x %d",
+-	  pdc, pdc->raid.unknown_0, pdc->raid.unknown_0, pdc->raid.unknown_0);
+-	DP("raid.disk_number: %u", pdc, pdc->raid.disk_number);
+-	DP("raid.channel: %u", pdc, pdc->raid.channel);
+-	DP("raid.device: %u", pdc, pdc->raid.device);
+-	DP("raid.magic_0: 0x%x", pdc, pdc->raid.magic_0);
+-	P("raid.unknown_1: 0x%x %u",
+-	  pdc, pdc->raid.unknown_1, pdc->raid.unknown_1, pdc->raid.unknown_1);
+-	P("raid.start: 0x%x %u",
+-	  pdc, pdc->raid.start, pdc->raid.start, pdc->raid.start);
+-	DP("raid.disk_secs: %u", pdc, pdc->raid.disk_secs);
+-	P("raid.unknown_3: 0x%x %u",
+-	  pdc, pdc->raid.unknown_3, pdc->raid.unknown_3, pdc->raid.unknown_3);
+-	P("raid.unknown_4: 0x%x %u",
+-	  pdc, pdc->raid.unknown_4, pdc->raid.unknown_4, pdc->raid.unknown_4);
+-	DP("raid.status: 0x%x", pdc, pdc->raid.status);
+-	DP("raid.type: 0x%x", pdc, pdc->raid.type);
+-	DP("raid.total_disks: %u", pdc, pdc->raid.total_disks);
+-	DP("raid.raid0_shift: %u", pdc, pdc->raid.raid0_shift);
+-	DP("raid.raid0_disks: %u", pdc, pdc->raid.raid0_disks);
+-	DP("raid.array_number: %u", pdc, pdc->raid.array_number);
+-	DP("raid.total_secs: %u", pdc, pdc->raid.total_secs);
+-	DP("raid.cylinders: %u", pdc, pdc->raid.cylinders);
+-	DP("raid.heads: %u", pdc, pdc->raid.heads);
+-	DP("raid.sectors: %u", pdc, pdc->raid.sectors);
+-	DP("raid.magic_1: 0x%x", pdc, pdc->raid.magic_1);
+-	P("raid.unknown_5: 0x%x %u",
+-	  pdc, pdc->raid.unknown_5, pdc->raid.unknown_5, pdc->raid.unknown_5);
+-
+-	for (disk = pdc->raid.disk, i = 0;
+-	     i < pdc->raid.total_disks; disk++, i++) {
+-		P2("raid.disk[%d].unknown_0: 0x%x", pdc, i, disk->unknown_0);
+-		P2("raid.disk[%d].channel: %u", pdc, i, disk->channel);
+-		P2("raid.disk[%d].device: %u", pdc, i, disk->device);
+-		P2("raid.disk[%d].magic_0: 0x%x", pdc, i, disk->magic_0);
+-		P2("raid.disk[%d].disk_number: %u", pdc, i, disk->disk_number);
+-	}
++	while (ma) {
++		log_print(lc, "%s (%s):", di->path, handler);
++		DP("promise_id: \"%s\"", pdc, pdc->promise_id);
++		P("unknown_0: 0x%x %u",
++		  pdc, pdc->unknown_0, pdc->unknown_0, pdc->unknown_0);
++		DP("magic_0: 0x%x", pdc, pdc->magic_0);
++		P("unknown_1: 0x%x %u",
++		  pdc, pdc->unknown_1, pdc->unknown_1, pdc->unknown_1);
++		DP("magic_1: 0x%x", pdc, pdc->magic_1);
++		P("unknown_2: 0x%x %u",
++		  pdc, pdc->unknown_2, pdc->unknown_2, pdc->unknown_2);
++		DP("raid.flags: 0x%x", pdc, pdc->raid.flags);
++		P("raid.unknown_0: 0x%x %d",
++		  pdc, pdc->raid.unknown_0, pdc->raid.unknown_0, pdc->raid.unknown_0);
++		DP("raid.disk_number: %u", pdc, pdc->raid.disk_number);
++		DP("raid.channel: %u", pdc, pdc->raid.channel);
++		DP("raid.device: %u", pdc, pdc->raid.device);
++		DP("raid.magic_0: 0x%x", pdc, pdc->raid.magic_0);
++		P("raid.unknown_1: 0x%x %u",
++		  pdc, pdc->raid.unknown_1, pdc->raid.unknown_1, pdc->raid.unknown_1);
++		P("raid.start: 0x%x %u",
++		  pdc, pdc->raid.start, pdc->raid.start, pdc->raid.start);
++		DP("raid.disk_secs: %u", pdc, pdc->raid.disk_secs);
++		P("raid.unknown_3: 0x%x %u",
++		  pdc, pdc->raid.unknown_3, pdc->raid.unknown_3, pdc->raid.unknown_3);
++		P("raid.unknown_4: 0x%x %u",
++		  pdc, pdc->raid.unknown_4, pdc->raid.unknown_4, pdc->raid.unknown_4);
++		DP("raid.status: 0x%x", pdc, pdc->raid.status);
++		DP("raid.type: 0x%x", pdc, pdc->raid.type);
++		DP("raid.total_disks: %u", pdc, pdc->raid.total_disks);
++		DP("raid.raid0_shift: %u", pdc, pdc->raid.raid0_shift);
++		DP("raid.raid0_disks: %u", pdc, pdc->raid.raid0_disks);
++		DP("raid.array_number: %u", pdc, pdc->raid.array_number);
++		DP("raid.total_secs: %u", pdc, pdc->raid.total_secs);
++		DP("raid.cylinders: %u", pdc, pdc->raid.cylinders);
++		DP("raid.heads: %u", pdc, pdc->raid.heads);
++		DP("raid.sectors: %u", pdc, pdc->raid.sectors);
++		DP("raid.magic_1: 0x%x", pdc, pdc->raid.magic_1);
++		P("raid.unknown_5: 0x%x %u",
++		  pdc, pdc->raid.unknown_5, pdc->raid.unknown_5, pdc->raid.unknown_5);
++
++		for (disk = pdc->raid.disk, i = 0;
++		     i < pdc->raid.total_disks; disk++, i++) {
++			P2("raid.disk[%d].unknown_0: 0x%x", pdc, i, disk->unknown_0);
++			P2("raid.disk[%d].channel: %u", pdc, i, disk->channel);
++			P2("raid.disk[%d].device: %u", pdc, i, disk->device);
++			P2("raid.disk[%d].magic_0: 0x%x", pdc, i, disk->magic_0);
++			P2("raid.disk[%d].disk_number: %u", pdc, i, disk->disk_number);
++		}
+ 
+-	P("checksum: 0x%x %s", pdc, pdc->checksum, pdc->checksum,
+-	  checksum(pdc) ? "Ok" : "BAD");
++		P("checksum: 0x%x %s", pdc, pdc->checksum, pdc->checksum,
++		  checksum(pdc) ? "Ok" : "BAD");
++		ma--;
++		pdc++;
++	}
+ }
+ 
+ static void
diff --git a/meta-oe/recipes-extended/dmraid/files/15_drop_p_for_partition_conditional.patch b/meta-oe/recipes-extended/dmraid/files/15_drop_p_for_partition_conditional.patch
new file mode 100644
index 0000000..72e6237
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/15_drop_p_for_partition_conditional.patch
@@ -0,0 +1,31 @@
+From: Phillip Susi <psusi@cfl.rr.com>
+Last-Update: 2011-03-08
+Description: dmraid was changed at one point to insert a 'p' between
+ the base device name and the partition number.  For some time
+ debian and ubuntu reversed this change.  This patch modifies the
+ behavior to add the 'p' iff the last character of the base name is
+ a digit.  This makes dmraid comply with the behavior used by
+ kpartx and "by linux since the dawn of time".
+Forwarded: Yes
+
+Index: 1.0.0.rc16/lib/format/partition/dos.c
+===================================================================
+--- 1.0.0.rc16.orig/lib/format/partition/dos.c
++++ 1.0.0.rc16/lib/format/partition/dos.c
+@@ -31,8 +31,14 @@
+ {
+ 	const char *base = get_basename(lc, rd->di->path);
+ 
+-	return type ? snprintf(str, len, "%s%s%u", base, OPT_STR_PARTCHAR(lc),
+-			       partition) : snprintf(str, len, "%s", base);
++	if (type)
++	{
++		if (isdigit(base[strlen(base) - 1]))
++			return snprintf(str, len, "%s%s%u", base,
++					OPT_STR_PARTCHAR(lc), partition);
++		else return snprintf(str, len, "%s%u", base, partition);
++	}
++	else return snprintf(str, len, "%s", base);
+ }
+ 
+ static char *
diff --git a/meta-oe/recipes-extended/dmraid/files/16_change-uuid.patch b/meta-oe/recipes-extended/dmraid/files/16_change-uuid.patch
new file mode 100644
index 0000000..12017d6
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/16_change-uuid.patch
@@ -0,0 +1,77 @@
+From: Phillip Susi <psusi@ubuntu.com>
+Subject: Change uuid for partitions and internal devices
+Description: Change the uuid for internal devices ( like
+ each half of a raid10 ) so that the rest of the system
+ can recognize that the internal device should not be
+ probed for partitions or filesystems or mounted.  Also
+ change partition's uuid to have the same "partNN-"
+ prefix that kpartx gives them.
+
+Index: 1.0.0.rc16/lib/activate/devmapper.c
+===================================================================
+--- 1.0.0.rc16.orig/lib/activate/devmapper.c
++++ 1.0.0.rc16/lib/activate/devmapper.c
+@@ -171,8 +171,18 @@ dmraid_uuid(struct lib_context *lc, stru
+ 	/* Clear garbage data from uuid string */
+ 	memset(uuid, 0, uuid_len);
+ 
+-	/* Create UUID string from subsystem prefix and RAID set name. */
+-	r = snprintf(uuid, uuid_len, "DMRAID-%s", name) < uuid_len;
++	/* Create UUID string from subsystem prefix and RAID set name.  *
++	 * Prefix partitions with "partNN-" and add an 'I' for internal *
++	 * for stacked devices ( each half of a raid10 )                */
++
++	if (rs->type & t_partition) {
++		char *part;
++		for (part = name + strlen(name) - 1; isdigit(*part); part--);
++		part++;
++		r = snprintf(uuid, uuid_len, "part%s-DMRAID-%S", part, name) < uuid_len;
++	} else if (rs->flags & f_subset)
++		r = snprintf(uuid, uuid_len, "DMRAIDI-%s", name) < uuid_len;
++	else r = snprintf(uuid, uuid_len, "DMRAID-%s", name) < uuid_len;
+ 	return r < 0 ? 0 : (r < uuid_len);
+ }
+ 
+Index: 1.0.0.rc16/include/dmraid/metadata.h
+===================================================================
+--- 1.0.0.rc16.orig/include/dmraid/metadata.h
++++ 1.0.0.rc16/include/dmraid/metadata.h
+@@ -177,6 +177,7 @@ enum flags {
+ 	f_maximize = 0x01,	/* If set, maximize set capacity,
+ 				   if not set, limit to smallest device. */
+ 	f_partitions = 0x02,	/* Set has partitions. */
++	f_subset = 0x04,	/* Set is an internal subset ( half of raid10 ) */
+ };
+ 
+ #define	F_MAXIMIZE(rs)		((rs)->flags & f_maximize)
+Index: 1.0.0.rc16/lib/format/ataraid/isw.c
+===================================================================
+--- 1.0.0.rc16.orig/lib/format/ataraid/isw.c
++++ 1.0.0.rc16/lib/format/ataraid/isw.c
+@@ -877,7 +877,8 @@ group_rd(struct lib_context *lc,
+ 				free_raid_dev(lc, &rd);
+ 				return NULL;
+ 			}
+-
++			if (is_raid10(dev))
++				rs->flags |= f_subset;
+ 			rs->status = s_ok;
+ 
+ 			/* Save and set to enable dev_sort(). */
+Index: 1.0.0.rc16/lib/format/format.c
+===================================================================
+--- 1.0.0.rc16.orig/lib/format/format.c
++++ 1.0.0.rc16/lib/format/format.c
+@@ -649,9 +649,10 @@ join_superset(struct lib_context *lc,
+ 	if ((n = f_name(lc, rd, 0))) {
+ 		if ((ret = find_or_alloc_raid_set(lc, n, FIND_TOP, NO_RD,
+ 						  LC_RS(lc), f_create, rd)) &&
+-		    !find_set(lc, &ret->sets, rs->name, FIND_TOP))
++		    !find_set(lc, &ret->sets, rs->name, FIND_TOP)) {
+ 			list_add_sorted(lc, &ret->sets, &rs->list, f_set_sort);
+-
++			rs->flags |= f_subset;
++		}
+ 		dbg_free(n);
+ 	}
+ 
diff --git a/meta-oe/recipes-extended/dmraid/files/17_convert-dmraid45-to-dmraid.patch b/meta-oe/recipes-extended/dmraid/files/17_convert-dmraid45-to-dmraid.patch
new file mode 100644
index 0000000..285db15
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/17_convert-dmraid45-to-dmraid.patch
@@ -0,0 +1,273 @@
+From: Stefan Bader <stefan.bader@canonical.com>
+Date: Mon, 13 Jan 2014 14:39:29 +0100
+Subject: Convert dmraid to use dm-raid module for RAID4 and RAID5
+
+The dmraid library used the dm-raid45 target for RAID4 and RAID5 sets.
+This module however was never upstream and is suffering constant issues
+when the Linux kernel changes.
+Upstream introduced the dm-raid/raid module/target in 2.6.38. This can be
+used to create device-mapper targets which use the MD RAID disciplines
+(though not showing up in /proc/mdstat).
+
+Most of the table constructor arguments can be mapped, only the member
+devices may not have an offset.
+
+From the old code it seems that RAID5 would always be build by set
+elements which will not have an offset. So potentially only RAID4
+could cause issues. That could be worked around if needed by creating
+additional linear mappings.
+
+NOTE: The event code is only compile tested. But we seem to have never
+shipped the dmraid event tool which is needed to use this feature. And
+we are about to remove support for ISW from dmraid (in favour of mdadm)
+anyway.
+
+Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
+
+Index: 1.0.0.rc16/lib/activate/activate.c
+===================================================================
+--- 1.0.0.rc16.orig/lib/activate/activate.c	2014-01-14 15:41:29.872372693 +0100
++++ 1.0.0.rc16/lib/activate/activate.c	2014-01-14 15:41:59.692518476 +0100
+@@ -118,6 +118,17 @@ _dm_path_offset(struct lib_context *lc,
+ 		     valid ? path : lc->path.error, offset);
+ }
+ 
++/* Push metadata and data device path onto a table */
++static int
++_dm_meta_data_path(struct lib_context *lc, char **table, int valid,
++		   const char *meta, const char *path)
++
++{
++	return p_fmt(lc, table, " %s %s",
++		     meta ? meta : "-",
++		     valid ? path : lc->path.error);
++}
++
+ /*
+  * Create dm table for linear mapping.
+  */
+@@ -537,9 +548,10 @@ err:
+ /* Push begin of line onto a RAID5 table. */
+ /* FIXME: persistent dirty log. */
+ static int
+-_dm_raid45_bol(struct lib_context *lc, char **table, struct raid_set *rs,
++_dm_raid_bol(struct lib_context *lc, char **table, struct raid_set *rs,
+ 	       uint64_t sectors, unsigned int members)
+ {
++	int rc;
+ 	int need_sync = rs_need_sync(rs);
+ 	struct handler_info rebuild_drive;
+ 
+@@ -548,13 +560,31 @@ _dm_raid45_bol(struct lib_context *lc, c
+ 	if (need_sync && !get_rebuild_drive(lc, rs, &rebuild_drive))
+ 		return 0;
+ 
+-	return p_fmt(lc, table, "0 %U %s core 2 %u %s %s 1 %u %u %d",
+-		     sectors, get_dm_type(lc, rs->type),
+-		     calc_region_size(lc,
+-				      total_sectors(lc, rs) /
+-				      _dm_raid_devs(lc, rs, 0)),
+-		     (need_sync) ? "sync" : "nosync", get_type(lc, rs->type),
+-		     rs->stride, members, rebuild_drive.data.i32);
++	if (rebuild_drive.data.i32 < 0) {
++		rc = p_fmt(lc, table,
++		           "0 %U %s %s 4 %u %s region_size %u %u",
++			   sectors,
++			   get_dm_type(lc, rs->type),
++			   get_type(lc, rs->type),
++			   rs->stride,
++			   (need_sync) ? "sync" : "nosync",
++			   calc_region_size(lc, total_sectors(lc, rs) /
++					    _dm_raid_devs(lc, rs, 0)),
++			   members);
++	} else {
++		rc = p_fmt(lc, table,
++			   "0 %U %s %s 6 %u %s rebuild %d region_size %u %u",
++			   sectors,
++			   get_dm_type(lc, rs->type),
++			   get_type(lc, rs->type),
++			   rs->stride,
++			   (need_sync) ? "sync" : "nosync",
++			   rebuild_drive.data.i32,
++			   calc_region_size(lc, total_sectors(lc, rs) /
++					    _dm_raid_devs(lc, rs, 0)),
++			   members);
++	}
++	return rc;
+ }
+ 
+ /* Create "error target" name based on raid set name. */
+@@ -669,7 +699,7 @@ err:
+ }
+ 
+ static int
+-dm_raid45(struct lib_context *lc, char **table, struct raid_set *rs)
++dm_raid(struct lib_context *lc, char **table, struct raid_set *rs)
+ {
+ 	int ret;
+ 	uint64_t sectors = 0;
+@@ -749,7 +779,7 @@ dm_raid45(struct lib_context *lc, char *
+ 	 */
+ 	sectors *= members - 1;
+ 
+-	if (!_dm_raid45_bol(lc, table, rs, sectors, members))
++	if (!_dm_raid_bol(lc, table, rs, sectors, members))
+ 		goto err;
+ 
+ 	/* Stacked RAID sets (for RAID50 etc.) */
+@@ -759,7 +789,8 @@ dm_raid45(struct lib_context *lc, char *
+ 		if (!(path = mkdm_path(lc, r->name)))
+ 			goto err;
+ 
+-		ret = _dm_path_offset(lc, table, valid_rs(r), path, 0);
++		log_dbg(lc, "%s: raid set device %s", __func__, path);
++		ret = _dm_meta_data_path(lc, table, valid_rs(r), NULL, path);
+ 		dbg_free(path);
+ 
+ 		if (!ret)
+@@ -768,8 +799,11 @@ dm_raid45(struct lib_context *lc, char *
+ 
+ 	/* Lowest level RAID devices. */
+ 	list_for_each_entry(rd, &rs->devs, devs) {
+-		if (!_dm_path_offset(lc, table, valid_rd(rd), 
+-				     rd->di->path, rd->offset))
++		if (rd->offset)
++			goto err;
++		log_dbg(lc, "%s: low level dev %s", __func__, rd->di->path);
++		if (!_dm_meta_data_path(lc, table, valid_rd(rd), NULL,
++					rd->di->path))
+ 			goto err;
+ 	}
+ 
+@@ -802,11 +836,11 @@ static struct type_handler {
+ 	{ t_linear, dm_linear },
+ 	{ t_raid0, dm_raid0 },
+ 	{ t_raid1, dm_raid1 },
+-	{ t_raid4, dm_raid45 },
+-	{ t_raid5_ls, dm_raid45 },
+-	{ t_raid5_rs, dm_raid45 },
+-	{ t_raid5_la, dm_raid45 },
+-	{ t_raid5_ra, dm_raid45 },
++	{ t_raid4, dm_raid },
++	{ t_raid5_ls, dm_raid },
++	{ t_raid5_rs, dm_raid },
++	{ t_raid5_la, dm_raid },
++	{ t_raid5_ra, dm_raid },
+ 	/* RAID types below not supported (yet) */
+ 	{ t_raid6, dm_unsup },
+ };
+Index: 1.0.0.rc16.orig/lib/metadata/metadata.c
+===================================================================
+--- 1.0.0.rc16.orig/lib/metadata/metadata.c	2014-01-14 15:41:29.908372863 +0100
++++ 1.0.0.rc16/lib/metadata/metadata.c	2014-01-14 15:41:59.692518476 +0100
+@@ -31,11 +31,11 @@ static const struct {
+ 	{ t_linear, "linear", "linear"},
+ 	{ t_raid0, "stripe", "striped"},
+ 	{ t_raid1, "mirror", "mirror"},
+-	{ t_raid4, "raid4", "raid45"},
+-	{ t_raid5_ls, "raid5_ls", "raid45"},
+-	{ t_raid5_rs, "raid5_rs", "raid45"},
+-	{ t_raid5_la, "raid5_la", "raid45"},
+-	{ t_raid5_ra, "raid5_ra", "raid45"},
++	{ t_raid4, "raid4", "raid"},
++	{ t_raid5_ls, "raid5_ls", "raid"},
++	{ t_raid5_rs, "raid5_rs", "raid"},
++	{ t_raid5_la, "raid5_la", "raid"},
++	{ t_raid5_ra, "raid5_ra", "raid"},
+ 	{ t_raid6, "raid6", NULL},
+ };
+ 
+Index: 1.0.0.rc16/lib/events/libdmraid-events-isw.c
+===================================================================
+--- 1.0.0.rc16.orig/lib/events/libdmraid-events-isw.c	2014-01-14 10:20:23.598184676 +0100
++++ 1.0.0.rc16/lib/events/libdmraid-events-isw.c	2014-01-14 15:41:59.696518490 +0100
+@@ -502,7 +502,7 @@ static int _get_num_devs_from_status(cha
+ 	int ret;
+ 
+ 	for (ret = 0; *status; status++) {
+-		if (*status == 'A' || *status == 'D')
++		if (*status == 'A' || *status == 'a' || *status == 'D')
+ 			ret++;
+ 	}
+ 
+@@ -1258,8 +1258,8 @@ err:
+ 	return D_IGNORE;
+ }
+ 
+-/* Get the raid45 device(s) that caused the trigger. */
+-static enum disk_state_type _process_raid45_event(struct dm_task *dmt,
++/* Get the raid device(s) that caused the trigger. */
++static enum disk_state_type _process_raid_event(struct dm_task *dmt,
+ 						  char *params)
+ {
+ 	int argc, i, num_devs, dead, ret = D_INSYNC;
+@@ -1272,32 +1272,34 @@ static enum disk_state_type _process_rai
+ 		return D_IGNORE;
+ 
+ 	/*
+-	 * dm core parms (NOT provided in @params):  	0 976783872 raid45 
+-	 *
+-	 * raid45 device parms:     	3 253:4 253:5 253:6
+-	 * raid45 device status:	1 AAA
++	 * raid device status:	<type> 3 AAA <synced/total> <action> <rmm>
+ 	 */
+ 
++	/* Skip over the raid type */
++	if(!dm_split_words(params, 1, 0, &p))
++		goto err;
++	p += strlen(p) + 1;
++
+ 	/* Number of devices. */
+ 	num_devs = _get_num_devs(params, &p);
+ 	if (!num_devs)
+ 		goto err;
+ 
+-	/* Devices names + "1" + "AA". */
+-	argc = num_devs + 2;
++	/* AAA + <completeness> <action> <resync mismatches> */
++	argc = 4;
+ 	args = dm_malloc(argc * sizeof(*args));
+ 	if (!args ||
+ 	    dm_split_words(p, argc, 0, args) != argc)
+ 		goto err;
+ 
+-	dev_status_str = args[num_devs + 1];
++	dev_status_str = args[0];
+ 
+ 	/* Consistency check on num_devs and status chars. */
+ 	i = _get_num_devs_from_status(dev_status_str);
+ 	if (i != num_devs)
+ 		goto err;
+ 
+-	/* Check for bad raid45 devices. */
++	/* Check for bad raid devices. */
+ 	for (i = 0, p = dev_status_str; i < rs->num_devs; i++) {
+ 		/* Skip past any non active/dead identifiers. */
+ 		dead = *(p++) == 'D';
+@@ -1324,7 +1326,7 @@ static enum disk_state_type _process_rai
+ 	return ret;
+ 
+ err:
+-	_event_cleanup_and_log(args, "raid45");
++	_event_cleanup_and_log(args, "raid");
+ 	return D_IGNORE;
+ }
+ 
+@@ -1341,7 +1343,7 @@ static void _process_event(char *target_
+ 	} *proc,  process[] = {
+ 		{ "striped", _process_stripe_event, 0 },
+ 		{ "mirror",  _process_mirror_event, 1 },
+-		{ "raid45",  _process_raid45_event, 1 },
++		{ "raid",    _process_raid_event, 1 },
+ 	};
+ #ifdef	_LIBDMRAID_DSO_TESTING
+ 	struct dso_raid_set *rs;
+@@ -1352,7 +1354,7 @@ static void _process_event(char *target_
+ 	 * stripe (raid 0),
+ 	 * mirror (raid 1)
+ 	 * or
+-	 * raid45 (raid 4/5).
++	 * raid   (raid 4/5).
+ 	 */
+ 	for (proc = process; proc < ARRAY_END(process); proc++) {
+ 		if (!strcmp(target_type, proc->target_type))
diff --git a/meta-oe/recipes-extended/dmraid/files/18_ignore-too-small-devices.patch b/meta-oe/recipes-extended/dmraid/files/18_ignore-too-small-devices.patch
new file mode 100644
index 0000000..ab500bb
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/18_ignore-too-small-devices.patch
@@ -0,0 +1,39 @@
+From: Stefan Bader <stefan.bader@canonical.com>
+Date: Tue, 14 Jan 2014 15:26:50 +0100
+Subject: Avoid meaningless error messages while probing for meta-data
+
+This happens as device-mapper volumes are checked and kpartx creates
+a 2 sector mapping if a device contains an extended partition.
+Offsetting from the last sector backwards some probes overflow and
+end up trying to seek to a very large offset (which fails and emits
+a visible error message during device scanning).
+This message is useless as such a small device would be pointless as
+a RAID set anyway.
+To fix this without larger changes, pragmatically ignore devices smaller
+than 8 sectors (4K).
+
+Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
+
+Index: 1.0.0.rc16/lib/format/format.c
+===================================================================
+--- 1.0.0.rc16.orig/lib/format/format.c	2014-01-14 15:50:17.554952405 +0100
++++ 1.0.0.rc16/lib/format/format.c	2014-01-14 15:50:35.319039242 +0100
+@@ -533,6 +533,18 @@ read_raid_dev(struct lib_context *lc,
+ 	union read_info info;
+ 
+ 	/*
++	 * Kpartx will create a mapping for extended partitions which only
++	 * covers 2 sectors. That leads to error messages when looking for
++	 * meta-data as moving back from the last sector results in huge
++	 * offsets. Quick hack here to ignore any device smaller than 4K.
++	 */
++	if (di->sectors < 8) {
++		log_dbg(lc, "%s: Ignore device smaller than 4K (%s)",
++			handler, di->path);
++		return NULL;
++	}
++
++	/*
+ 	 * In case the metadata format handler provides a special
+ 	 * metadata read function, use that. If not, allocate and
+ 	 * read size from offset.
diff --git a/meta-oe/recipes-extended/dmraid/files/19_compile-dmraid-in-subdir-tools.patch b/meta-oe/recipes-extended/dmraid/files/19_compile-dmraid-in-subdir-tools.patch
new file mode 100644
index 0000000..8318248
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/19_compile-dmraid-in-subdir-tools.patch
@@ -0,0 +1,20 @@
+Compile dmraid in subdir tools to avoid error as follows
+
+  | tools/dmraid.c:12:27: fatal error: dmraid/dmraid.h: No such file or directory
+  |  #include <dmraid/dmraid.h>
+  |                            ^
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+diff -Nurp 1.0.0.rc16.orig/Makefile.in 1.0.0.rc16/Makefile.in
+--- 1.0.0.rc16.orig/Makefile.in	2009-09-16 16:55:23.000000000 +0800
++++ 1.0.0.rc16/Makefile.in	2014-11-26 16:39:54.087815059 +0800
+@@ -10,8 +10,6 @@ VPATH = @srcdir@
+ 
+ SUBDIRS = include lib man tools
+ 
+-TARGETS = tools/dmraid
+-
+ include make.tmpl
+ 
+ tools: lib
diff --git a/meta-oe/recipes-extended/dmraid/files/20_specifies-install-dir-by-DESTDIR.patch b/meta-oe/recipes-extended/dmraid/files/20_specifies-install-dir-by-DESTDIR.patch
new file mode 100644
index 0000000..63f46ef
--- /dev/null
+++ b/meta-oe/recipes-extended/dmraid/files/20_specifies-install-dir-by-DESTDIR.patch
@@ -0,0 +1,123 @@
+Install all target into ${D} specified by DESTDIR.
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+diff -Nurp 1.0.0.rc16.org/include/Makefile.in 1.0.0.rc16/include/Makefile.in
+--- 1.0.0.rc16.org/include/Makefile.in	2009-09-16 16:55:23.000000000 +0800
++++ 1.0.0.rc16/include/Makefile.in	2014-11-27 15:05:06.108660939 +0800
+@@ -16,15 +16,15 @@ include $(top_srcdir)/make.tmpl
+ .PHONY: install_dmraid_headers remove_dmraid_headers
+ 
+ install_dmraid_headers: $(HEADERS)
+-	@echo "Installing $(HEADERS) in $(includedir)/dmraid"
+-	mkdir -p $(includedir)/dmraid
+-	$(INSTALL) $(STRIP) $(HEADERS) $(includedir)/dmraid
++	@echo "Installing $(HEADERS) in $(DESTDIR)/$(includedir)/dmraid"
++	mkdir -p $(DESTDIR)$(includedir)/dmraid
++	$(INSTALL) $(STRIP) $(HEADERS) $(DESTDIR)/$(includedir)/dmraid
+ 
+ install: install_dmraid_headers
+ 
+ remove_dmraid_headers:
+-	@echo "Removing $(HEADERS) from $(includedir)/dmraid"
+-	rm -f $(includedir)/dmraid
++	@echo "Removing $(HEADERS) from $(DESTDIR)/$(includedir)/dmraid"
++	rm -f $(DESTDIR)/$(includedir)/dmraid
+ 
+ remove:        remove_dmraid_headers
+ 
+diff -Nurp 1.0.0.rc16.org/lib/Makefile.in 1.0.0.rc16/lib/Makefile.in
+--- 1.0.0.rc16.org/lib/Makefile.in	2014-11-27 14:49:17.212698021 +0800
++++ 1.0.0.rc16/lib/Makefile.in	2014-11-27 15:07:33.008655199 +0800
+@@ -78,30 +78,30 @@ $(LIB_EVENTS_SHARED):
+ .PHONY: install_dmraid_libs remove_dmraid_libs
+ 
+ install_dmraid_libs: $(INSTALL_TARGETS)
+-	@echo "Installing $(INSTALL_TARGETS) in $(libdir)"; \
+-	mkdir -p $(libdir); \
++	@echo "Installing $(INSTALL_TARGETS) in $(DESTDIR)/$(libdir)"; \
++	mkdir -p $(DESTDIR)/$(libdir); \
+ 	for f in $(INSTALL_TARGETS); \
+ 	do \
+ 		n=$$(basename $${f}) ; \
+ 		if echo "$$n" | grep -q '.so$$'; then \
+ 			$(INSTALL) -m 555 $(STRIP) \
+-				$$f $(libdir)/$${n}.@DMRAID_LIB_VERSION@; \
+-			mkdir -p $(prefix)/lib; \
+-			cd $(prefix)/lib/ && $(LN_S) -f /lib/$${n}.@DMRAID_LIB_VERSION@ $${n}; \
++				$$f $(DESTDIR)/$(libdir)/$${n}.@DMRAID_LIB_VERSION@; \
++			mkdir -p $(DESTDIR)/$(prefix)/lib; \
++			cd $(DESTDIR)/$(prefix)/lib/ && $(LN_S) -f /lib/$${n}.@DMRAID_LIB_VERSION@ $${n}; \
+ 		else \
+-			$(INSTALL) -m 555 $(STRIP) $$f $(libdir)/$${n}; \
++			$(INSTALL) -m 555 $(STRIP) $$f $(DESTDIR)/$(libdir)/$${n}; \
+ 		fi \
+ 	done
+ 
+ install: install_dmraid_libs
+ 
+ remove_dmraid_libs:
+-	@echo "Removing $(INSTALL_TARGETS) from $(libdir)"; \
++	@echo "Removing $(INSTALL_TARGETS) from $(DESTDIR)/$(libdir)"; \
+ 	for f in $(INSTALL_TARGETS); \
+ 	do \
+ 		n=$$(basename $${f}) ; \
+-		rm -f $(libdir)/$${n}.@DMRAID_LIB_VERSION@; \
+-		rm -f $(libdir)/$${n}; \
++		rm -f $(DESTDIR)/$(libdir)/$${n}.@DMRAID_LIB_VERSION@; \
++		rm -f $(DESTDIR)/$(libdir)/$${n}; \
+ 	done
+ 
+ remove:	remove_dmraid_libs
+diff -Nurp 1.0.0.rc16.org/make.tmpl.in 1.0.0.rc16/make.tmpl.in
+--- 1.0.0.rc16.org/make.tmpl.in	2014-11-27 14:49:17.212698021 +0800
++++ 1.0.0.rc16/make.tmpl.in	2014-11-27 15:02:34.940666847 +0800
+@@ -21,8 +21,8 @@ LD_DEPS += @LD_DEPS@
+ SOFLAG += @SOFLAG@
+ 
+ # Setup directory variables
+-prefix = $(DESTDIR)@prefix@
+-exec_prefix = $(DESTDIR)@exec_prefix@
++prefix = @prefix@
++exec_prefix = @exec_prefix@
+ bindir = @bindir@
+ ifeq ("@KLIBC@", "no")
+   libdir = @libdir@
+diff -Nurp 1.0.0.rc16.org/man/Makefile.in 1.0.0.rc16/man/Makefile.in
+--- 1.0.0.rc16.org/man/Makefile.in	2009-09-16 16:55:23.000000000 +0800
++++ 1.0.0.rc16/man/Makefile.in	2014-11-27 15:08:35.924652740 +0800
+@@ -9,7 +9,7 @@ top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+ 
+ MAN8=dmraid.8 dmevent_tool.8
+-MAN8DIR=${mandir}/man8
++MAN8DIR=$(DESTDIR)/${mandir}/man8
+ 
+ include $(top_srcdir)/make.tmpl
+ 
+diff -Nurp 1.0.0.rc16.org/tools/Makefile.in 1.0.0.rc16/tools/Makefile.in
+--- 1.0.0.rc16.org/tools/Makefile.in	2014-11-27 14:49:17.212698021 +0800
++++ 1.0.0.rc16/tools/Makefile.in	2014-11-27 15:10:11.408649009 +0800
+@@ -71,17 +71,17 @@ dmevent_tool: $(top_srcdir)/lib/libdmrai
+ 	      -L$(DESTDIR)$(libdir) $(DMRAIDLIBS) $(DMEVENTTOOLLIBS) $(DMRAIDLIBS) $(LIBS) 
+ 
+ install_dmraid_tools: $(TARGETS)
+-	@echo "Installing $(TARGETS) in $(sbindir)"; \
+-	mkdir -p $(sbindir); \
+-	$(INSTALL) $(STRIP) $(TARGETS) $(sbindir)
++	@echo "Installing $(TARGETS) in $(DESTDIR)/$(sbindir)"; \
++	mkdir -p $(DESTDIR)/$(sbindir); \
++	$(INSTALL) $(STRIP) $(TARGETS) $(DESTDIR)/$(sbindir)
+ 
+ install: install_dmraid_tools
+ 
+ remove_dmraid_tools:
+-	@echo "Removing $(TARGETS) from $(sbindir)"; \
++	@echo "Removing $(TARGETS) from $(DESTDIR)/$(sbindir)"; \
+ 	for f in $(TARGETS); \
+ 	do \
+-		rm -f $(sbindir)/$$f; \
++		rm -f $(DESTDIR)/$(sbindir)/$$f; \
+ 	done
+ 
+ remove:	remove_dmraid_tools
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 3/3] [meta-oe] drbd: add recipe
  2014-11-28  8:49 [PATCH 0/3] add some recipes Bian Naimeng
  2014-11-28  8:49 ` [PATCH 1/3] [meta-oe]daemontools: add recipe Bian Naimeng
  2014-11-28  8:49 ` [PATCH 2/3] [meta-oe] dmraid: " Bian Naimeng
@ 2014-11-28  8:49 ` Bian Naimeng
  2014-11-29 14:27   ` Koen Kooi
  2014-12-09 10:17   ` Martin Jansa
  2 siblings, 2 replies; 11+ messages in thread
From: Bian Naimeng @ 2014-11-28  8:49 UTC (permalink / raw)
  To: openembedded-devel

DRBD is a block device which is designed to build high availability clusters.

Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
---
 meta-oe/recipes-extended/drbd/drbd_8.4.4.bb      | 57 ++++++++++++++++++++++++
 meta-oe/recipes-extended/drbd/files/drbd.service | 12 +++++
 2 files changed, 69 insertions(+)
 create mode 100644 meta-oe/recipes-extended/drbd/drbd_8.4.4.bb
 create mode 100644 meta-oe/recipes-extended/drbd/files/drbd.service

diff --git a/meta-oe/recipes-extended/drbd/drbd_8.4.4.bb b/meta-oe/recipes-extended/drbd/drbd_8.4.4.bb
new file mode 100644
index 0000000..5439bac
--- /dev/null
+++ b/meta-oe/recipes-extended/drbd/drbd_8.4.4.bb
@@ -0,0 +1,57 @@
+SUMMARY = "BD driver for Linux"
+DESCRIPTION = "DRBD mirrors a block device over the network to another machine.\
+DRBD mirrors a block device over the network to another machine.\
+Think of it as networked raid 1. It is a building block for\
+setting up high availability (HA) clusters."
+
+HOMEPAGE = "http://www.drbd.org/"
+
+SECTION = "kernel/userland"
+
+LICENSE = "GPLv2+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=5574c6965ae5f583e55880e397fbb018"
+
+PR = "r0"
+#PR = "r1001"
+
+SRC_URI = "http://oss.linbit.com/${BPN}/8.4/${BPN}-${PV}.tar.gz \
+           file://drbd.service \
+          "
+
+#SRC_URI[md5sum] = "ef4e6db51cda1898c597a3d61fcb9e1e"
+#SRC_URI[sha256sum] = "7c1558459614fbdc1b3209f1b9e5767a443d9bdfe681a49c652b5f392799d58d"
+
+SRC_URI[md5sum] = "b51815343c1a9151e2936b3b97520388"
+SRC_URI[sha256sum] = "a056219c5c23b079c3354179f7a1b9f55d47e573a4cd3178f2ef4c15604288f0"
+
+inherit autotools-brokensep systemd
+
+EXTRA_OECONF = "--with-utils                  \
+                --without-km                  \
+                --with-initdir=/etc/init.d    \
+                --without-pacemaker           \
+                --without-rgmanager           \
+                --without-bashcompletion      \
+                --with-distro debian          \
+               "
+
+do_configure (){
+    oe_runconf
+}
+
+SYSTEMD_SERVICE_${PN} = "drbd.service"
+SYSTEMD_AUTO_ENABLE = "disable"
+
+do_install_append() {
+    if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+        install -d ${D}/${systemd_unitdir}/system
+        install -m 644 ${WORKDIR}/drbd.service ${D}/${systemd_unitdir}/system
+        install -d ${D}/${libexecdir}
+        install -m 755 ${D}/etc/init.d/drbd ${D}/${libexecdir}/drbd-helper
+    fi
+}
+
+FILES_${PN} += "run"
+FILES_${PN} += "${base_libdir}/drbd"
+FILES_${PN}-dbg += "${base_libdir}/drbd/.debug"
diff --git a/meta-oe/recipes-extended/drbd/files/drbd.service b/meta-oe/recipes-extended/drbd/files/drbd.service
new file mode 100644
index 0000000..22f853f
--- /dev/null
+++ b/meta-oe/recipes-extended/drbd/files/drbd.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=DRBD Service
+After=network.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/usr/lib/drbd/drbd-helper start
+ExecStop=/usr/lib/drbd/drbd-helper stop
+
+[Install]
+WantedBy=multi-user.target
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/3] [meta-oe] dmraid: add recipe
  2014-11-28  8:49 ` [PATCH 2/3] [meta-oe] dmraid: " Bian Naimeng
@ 2014-11-28 12:50   ` Martin Jansa
  2014-11-29 14:25   ` Koen Kooi
  1 sibling, 0 replies; 11+ messages in thread
From: Martin Jansa @ 2014-11-28 12:50 UTC (permalink / raw)
  To: openembedded-devel

[-- Attachment #1: Type: text/plain, Size: 74256 bytes --]

On Fri, Nov 28, 2014 at 04:49:44PM +0800, Bian Naimeng wrote:
> There is no update anymore since 2010, but is still supported by
> some distro such as Ubuntu(trusty 14.04LTS).

Fails to apply

OE @ ~/meta-openembedded $ pwam 84071
2014-11-28 13:48:52 URL:http://patchwork.openembedded.org/patch/84071/mbox/ [67864] -> "pw-am-84071.patch" [1]
Applying: dmraid: add recipe
/OE/meta-openembedded/.git/rebase-apply/patch:142: trailing whitespace.
 
/OE/meta-openembedded/.git/rebase-apply/patch:150: trailing whitespace.
 
/OE/meta-openembedded/.git/rebase-apply/patch:151: trailing whitespace.
 
/OE/meta-openembedded/.git/rebase-apply/patch:156: trailing whitespace.
 
/OE/meta-openembedded/.git/rebase-apply/patch:162: trailing whitespace.
 
fatal: corrupt patch at line 397
Patch failed at 0001 dmraid: add recipe
The copy of the patch that failed is found in:
   /OE/meta-openembedded/.git/rebase-apply/patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

Also use $BPN instead of "files" for slightly faster lookup.

> 
> Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
> ---
>  .../recipes-extended/dmraid/dmraid_1.0.0.rc16.bb   |  71 +++++
>  .../dmraid/files/01_fix_broken_linking.patch       | 121 +++++++++
>  .../dmraid/files/02_disable_dmreg.patch            | 134 ++++++++++
>  .../files/03_fix_hyphen-used-as-minus-sign.patch   | 291 +++++++++++++++++++++
>  .../dmraid/files/04_promise-add-offsets.patch      |  13 +
>  .../dmraid/files/05_exit_code.patch                |  22 ++
>  .../dmraid/files/06_support_virtio_devices.patch   |  13 +
>  .../dmraid/files/07_isw-probe-hpa.patch            | 144 ++++++++++
>  .../files/08_activate_multiple_raid_sets.patch     |  12 +
>  .../dmraid/files/09_pdc_raid10_failure..patch      |  14 +
>  .../dmraid/files/10_ddf1_lsi_persistent_name.patch |  20 ++
>  .../files/11_fix_isw_sectors_calculation.patch     |  14 +
>  .../dmraid/files/12_jmicron_namefix.patch          |  20 ++
>  .../dmraid/files/13_fix_testing.patch              |  24 ++
>  .../files/14_pdc_dump_extended_metadata.patch      | 147 +++++++++++
>  .../15_drop_p_for_partition_conditional.patch      |  31 +++
>  .../dmraid/files/16_change-uuid.patch              |  77 ++++++
>  .../files/17_convert-dmraid45-to-dmraid.patch      | 273 +++++++++++++++++++
>  .../dmraid/files/18_ignore-too-small-devices.patch |  39 +++
>  .../files/19_compile-dmraid-in-subdir-tools.patch  |  20 ++
>  .../20_specifies-install-dir-by-DESTDIR.patch      | 123 +++++++++
>  21 files changed, 1623 insertions(+)
>  create mode 100644 meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/01_fix_broken_linking.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/02_disable_dmreg.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/03_fix_hyphen-used-as-minus-sign.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/04_promise-add-offsets.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/05_exit_code.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/06_support_virtio_devices.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/07_isw-probe-hpa.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/08_activate_multiple_raid_sets.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/09_pdc_raid10_failure..patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/10_ddf1_lsi_persistent_name.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/11_fix_isw_sectors_calculation.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/12_jmicron_namefix.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/13_fix_testing.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/14_pdc_dump_extended_metadata.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/15_drop_p_for_partition_conditional.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/16_change-uuid.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/17_convert-dmraid45-to-dmraid.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/18_ignore-too-small-devices.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/19_compile-dmraid-in-subdir-tools.patch
>  create mode 100644 meta-oe/recipes-extended/dmraid/files/20_specifies-install-dir-by-DESTDIR.patch
> 
> diff --git a/meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb b/meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb
> new file mode 100644
> index 0000000..281587d
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb
> @@ -0,0 +1,71 @@
> +SUMMARY = "dmraid (Device-mapper RAID tool and library)"
> +DESCRIPTION = "DMRAID supports RAID device discovery, RAID set activation, \
> +creation, removal, rebuild and display of properties for ATARAID/DDF1 \
> +metadata on Linux >= 2.4 using device-mapper."
> +HOMEPAGE = "http://people.redhat.com/heinzm/sw/dmraid"
> +SECTION = "System Environment/Base"
> +
> +SRC_URI = "http://people.redhat.com/heinzm/sw/dmraid/src/old/${BPN}-${PV}.tar.bz2 \
> +           file://01_fix_broken_linking.patch \
> +           file://02_disable_dmreg.patch \
> +           file://03_fix_hyphen-used-as-minus-sign.patch \
> +           file://04_promise-add-offsets.patch \
> +           file://05_exit_code.patch \
> +           file://06_support_virtio_devices.patch \
> +           file://07_isw-probe-hpa.patch \
> +           file://08_activate_multiple_raid_sets.patch \
> +           file://09_pdc_raid10_failure..patch \
> +           file://10_ddf1_lsi_persistent_name.patch \
> +           file://11_fix_isw_sectors_calculation.patch \
> +           file://12_jmicron_namefix.patch \
> +           file://13_fix_testing.patch \
> +           file://14_pdc_dump_extended_metadata.patch \
> +           file://15_drop_p_for_partition_conditional.patch \
> +           file://16_change-uuid.patch \
> +           file://17_convert-dmraid45-to-dmraid.patch \
> +           file://18_ignore-too-small-devices.patch \
> +           file://19_compile-dmraid-in-subdir-tools.patch \
> +           file://20_specifies-install-dir-by-DESTDIR.patch \
> +          "
> +
> +SRC_URI[md5sum] = "32832c1dfd7e72cd4355490322fca68a"
> +SRC_URI[sha256sum] = "f849c44d041f8891c61419ddf906e6e34b44948939ae9e550be662ffc2492255"
> +
> +LICENSE = "GPLv2+"
> +LIC_FILES_CHKSUM = "file://LICENSE;md5=15b3012575eeffacc3cec27a6d3cb31f"
> +
> +DEPENDS = "lvm2"
> +
> +S = "${WORKDIR}/${BPN}/${PV}"
> +
> +CONFIGUREOPTS = " --build=${BUILD_SYS} \
> +                  --host=${HOST_SYS} \
> +                  --target=${TARGET_SYS} \
> +                  --prefix=${prefix} \
> +                  --exec_prefix=${exec_prefix} \
> +                  --bindir=${bindir} \
> +                  --sbindir=${sbindir} \
> +                  --libexecdir=${libexecdir} \
> +                  --datadir=${datadir} \
> +                  --sysconfdir=${sysconfdir} \
> +                  --sharedstatedir=${sharedstatedir} \
> +                  --localstatedir=${localstatedir} \
> +                  --libdir=${libdir} \
> +                  --includedir=${includedir} \
> +                  --oldincludedir=${oldincludedir} \
> +                  --infodir=${infodir} \
> +                  --mandir=${mandir} \
> +                "
> +EXTRA_OECONF += " --disable-static_link --enable-led --enable-intel_led --enable-debug  "
> +
> +do_configure() {
> +    ./configure ${CONFIGUREOPTS} ${EXTRA_OECONF}
> +}
> +
> +do_compile() {
> +  oe_runmake DESTDIR=${D}
> +}
> +
> +do_install() {
> +   oe_runmake DESTDIR=${D} install
> +}
> diff --git a/meta-oe/recipes-extended/dmraid/files/01_fix_broken_linking.patch b/meta-oe/recipes-extended/dmraid/files/01_fix_broken_linking.patch
> new file mode 100644
> index 0000000..b43ecac
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/01_fix_broken_linking.patch
> @@ -0,0 +1,121 @@
> +Author: Luke Yelavich <themuso@ubuntu.com>
> +Description: Fix library symbolic link creation and library linking.
> +--- 1.0.0.rc16.orig/configure
> ++++ 1.0.0.rc16/configure
> +@@ -693,6 +693,7 @@ DEBUG_MALLOC
> + DMRAID_TEST
> + DMRAID_VERSION
> + DMRAID_LIB_VERSION
> ++DMRAID_LIB_MAJOR_VERSION
> + DIETLIBC
> + GROUP
> + JOBS
> +@@ -5767,8 +5768,10 @@ fi
> + 
> + if test "-f lib/version.h"; then
> +   DMRAID_LIB_VERSION="`sed --quiet 's/^.*\(DMRAID_LIB_VERSION\)[^_].*"\(.*\)"/\2/p' lib/version.h`"
> ++  DMRAID_LIB_MAJOR_VERSION="`grep DMRAID_LIB_MAJOR_VERSION lib/version.h | tr '\t' ' ' | cut -f 3 -d ' '`"
> + else
> +   DMRAID_LIB_VERSION="Unknown"
> ++  DMRAID_LIB_MAJOR_VERSION="Unknown"
> + fi
> + 
> + 
> +--- 1.0.0.rc16.orig/configure.in
> ++++ 1.0.0.rc16/configure.in
> +@@ -178,7 +178,7 @@ if test x$DEBUG_MALLOC = xyes; then
> + fi
> + 
> + dnl Mess with default exec_prefix
> +-if [[ "x$exec_prefix" = xNONE -a "x$prefix" = xNONE ]];
> ++if [ "x$exec_prefix" = xNONE -a "x$prefix" = xNONE ];
> +  then  exec_prefix="";
> + fi;
> + 
> +@@ -220,8 +220,10 @@ fi
> + 
> + if test "-f lib/version.h"; then
> +   DMRAID_LIB_VERSION="`sed --quiet 's/^.*\(DMRAID_LIB_VERSION\)[[^_]].*"\(.*\)"/\2/p' lib/version.h`"
> ++  DMRAID_LIB_MAJOR_VERSION="`grep DMRAID_LIB_MAJOR_VERSION lib/version.h | tr '\t' ' ' | cut -f 3 -d ' '`"
> + else
> +   DMRAID_LIB_VERSION="Unknown"
> ++  DMRAID_LIB_MAJOR_VERSION="Unknown"
> + fi
> + 
> + AC_SUBST(CC)
> +@@ -232,6 +234,7 @@ AC_SUBST(DEBUG_MALLOC)
> + AC_SUBST(DMRAID_TEST)
> + AC_SUBST(DMRAID_VERSION)
> + AC_SUBST(DMRAID_LIB_VERSION)
> ++AC_SUBST(DMRAID_LIB_MAJOR_VERSION)
> + AC_SUBST(DIETLIBC)
> + AC_SUBST(GROUP)
> + AC_SUBST(JOBS)
> +--- 1.0.0.rc16.orig/lib/Makefile.in
> ++++ 1.0.0.rc16/lib/Makefile.in
> +@@ -65,6 +65,11 @@ ifeq ("@KLIBC@", "no")
> + 		LIB_EVENTS_SHARED=$(top_srcdir)/lib/$(LIB_EVENTS_NAME).so
> + 		TARGETS += $(LIB_SHARED) $(LIB_EVENTS_SHARED)
> + 		INSTALL_TARGETS += $(LIB_SHARED) $(LIB_EVENTS_SHARED)
> ++		ifeq ("@DIETLIBC@", "yes")
> ++			LIBDMRAIDLIBS += -ldevmapper_dietc
> ++		else
> ++			LIBDMRAIDLIBS += -ldevmapper
> ++		endif
> + 	endif
> + endif
> + 
> +@@ -82,10 +87,11 @@ install_dmraid_libs: $(INSTALL_TARGETS)
> + 	for f in $(INSTALL_TARGETS); \
> + 	do \
> + 		n=$$(basename $${f}) ; \
> +-		if [[ "$$n" =~ '.so$$' ]]; then \
> ++		if echo "$$n" | grep -q '.so$$'; then \
> + 			$(INSTALL) -m 555 $(STRIP) \
> + 				$$f $(libdir)/$${n}.@DMRAID_LIB_VERSION@; \
> +-			$(LN_S) -f $${n}.@DMRAID_LIB_VERSION@ $(libdir)/$${n}; \
> ++			mkdir -p $(prefix)/lib; \
> ++			cd $(prefix)/lib/ && $(LN_S) -f /lib/$${n}.@DMRAID_LIB_VERSION@ $${n}; \
> + 		else \
> + 			$(INSTALL) -m 555 $(STRIP) $$f $(libdir)/$${n}; \
> + 		fi \
> +--- 1.0.0.rc16.orig/make.tmpl.in
> ++++ 1.0.0.rc16/make.tmpl.in
> +@@ -44,6 +44,7 @@ endif
> + OWNER = @OWNER@
> + GROUP = @GROUP@
> + DMRAID_LIB_VERSION = @DMRAID_LIB_VERSION@
> ++DMRAID_LIB_MAJOR_VERSION = @DMRAID_LIB_MAJOR_VERSION@
> + 
> + # The number of jobs to run, if blank, defaults to the make standard
> + ifndef MAKEFLAGS
> +@@ -136,7 +137,7 @@ $(TARGETS): $(OBJECTS)
> + 
> + %.so: $(OBJECTS)
> + 	$(CC) -shared -Wl,-soname,$(notdir $@).$(DMRAID_LIB_VERSION) \
> +-	-Wl,--version-script,.export.sym $(OBJECTS) -o $@ -ldevmapper-event
> ++	-Wl,--version-script,.export.sym $(OBJECTS) $(LIBDMRAIDLIBS) -o $@ -ldevmapper-event
> + 
> + $(LIB_STATIC): $(OBJECTS)
> + 	$(RM) $@
> +--- 1.0.0.rc16.orig/tools/Makefile.in
> ++++ 1.0.0.rc16/tools/Makefile.in
> +@@ -34,12 +34,16 @@ ifeq ("@KLIBC@", "yes")
> + 	DMRAIDLIBS += -ldevmapper_klibc
> + else
> + 	ifeq ("@DIETLIBC@", "yes")
> +-		DMRAIDLIBS += -ldevmapper_dietc
> ++		ifeq ("@LIB_SO@", "no")
> ++			DMRAIDLIBS += -ldevmapper_dietc
> ++		endif
> + 		ifeq ("@STATIC_LINK@", "no")
> + 			DMEVENTTOOLLIBS = -ldevmapper-event_dietc
> + 		endif
> + 	else
> +-		DMRAIDLIBS += -ldevmapper
> ++		ifeq ("@LIB_SO@", "no")
> ++			DMRAIDLIBS += -ldevmapper
> ++		endif
> + 		ifeq ("@STATIC_LINK@", "no")
> + 			DMEVENTTOOLLIBS = -ldevmapper-event
> + 		endif
> diff --git a/meta-oe/recipes-extended/dmraid/files/02_disable_dmreg.patch b/meta-oe/recipes-extended/dmraid/files/02_disable_dmreg.patch
> new file mode 100644
> index 0000000..079768b
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/02_disable_dmreg.patch
> @@ -0,0 +1,134 @@
> +Disabled all dmreg stuff
> +--- 1.0.0.rc16.orig/lib/Makefile.in
> ++++ 1.0.0.rc16/lib/Makefile.in
> +@@ -45,10 +45,6 @@ SOURCES=\
> + 	format/ddf/ddf1_dump.c \
> + 	format/partition/dos.c
> + 
> +-ifeq ("@STATIC_LINK@", "no")
> +-	SOURCES += register/dmreg.c
> +-endif
> +-
> + OBJECTS=$(SOURCES:%.c=%.o)
> + 
> + LIB_STATIC=$(top_srcdir)/lib/libdmraid.a
> +@@ -63,8 +59,8 @@ ifeq ("@KLIBC@", "no")
> + 	ifeq ("@STATIC_LINK@", "no")
> + 		LIB_SHARED=$(top_srcdir)/lib/libdmraid.so
> + 		LIB_EVENTS_SHARED=$(top_srcdir)/lib/$(LIB_EVENTS_NAME).so
> +-		TARGETS += $(LIB_SHARED) $(LIB_EVENTS_SHARED)
> +-		INSTALL_TARGETS += $(LIB_SHARED) $(LIB_EVENTS_SHARED)
> ++		TARGETS += $(LIB_SHARED)
> ++		INSTALL_TARGETS += $(LIB_SHARED)
> + 		ifeq ("@DIETLIBC@", "yes")
> + 			LIBDMRAIDLIBS += -ldevmapper_dietc
> + 		else
> +--- 1.0.0.rc16.orig/make.tmpl.in
> ++++ 1.0.0.rc16/make.tmpl.in
> +@@ -137,7 +137,7 @@ $(TARGETS): $(OBJECTS)
> + 
> + %.so: $(OBJECTS)
> + 	$(CC) -shared -Wl,-soname,$(notdir $@).$(DMRAID_LIB_VERSION) \
> +-	-Wl,--version-script,.export.sym $(OBJECTS) $(LIBDMRAIDLIBS) -o $@ -ldevmapper-event
> ++	-Wl,--version-script,.export.sym $(OBJECTS) $(LIBDMRAIDLIBS) -o $@
> + 
> + $(LIB_STATIC): $(OBJECTS)
> + 	$(RM) $@
> +--- 1.0.0.rc16.orig/tools/Makefile.in
> ++++ 1.0.0.rc16/tools/Makefile.in
> +@@ -22,12 +22,6 @@ TARGETS=\
> + 
> + include $(top_srcdir)/make.tmpl
> + 
> +-ifeq ("@KLIBC@", "no")
> +-	ifeq ("@STATIC_LINK@", "no")
> +-		TARGETS += dmevent_tool
> +-	endif
> +-endif
> +-
> + DMRAIDLIBS=-ldmraid
> + 
> + ifeq ("@KLIBC@", "yes")
> +@@ -37,16 +31,10 @@ else
> + 		ifeq ("@LIB_SO@", "no")
> + 			DMRAIDLIBS += -ldevmapper_dietc
> + 		endif
> +-		ifeq ("@STATIC_LINK@", "no")
> +-			DMEVENTTOOLLIBS = -ldevmapper-event_dietc
> +-		endif
> + 	else
> + 		ifeq ("@LIB_SO@", "no")
> + 			DMRAIDLIBS += -ldevmapper
> + 		endif
> +-		ifeq ("@STATIC_LINK@", "no")
> +-			DMEVENTTOOLLIBS = -ldevmapper-event
> +-		endif
> + 	endif
> + 
> + 	ifeq ("@LIBSELINUX@", "yes")
> +--- 1.0.0.rc16.orig/lib/.export.sym
> ++++ 1.0.0.rc16/lib/.export.sym
> +@@ -52,8 +52,6 @@ Base {
> 
> + 		dso_end_rebuild;
> 
> + 		hot_spare_add;
> 
> + 		dso_get_members;
> 
> +-		dm_register_device;
> 
> +-		dm_unregister_device;
> + 		dm_all_monitored;
> + 	local:
> 
> + 		*;
> 
> +--- 1.0.0.rc16.orig/lib/activate/activate.c
> ++++ 1.0.0.rc16/lib/activate/activate.c
> +@@ -849,18 +849,12 @@ enum dm_what { DM_ACTIVATE, DM_REGISTER 
> + static int
> + dm_register_for_event(char *dev_name, char *lib_name)
> + {
> +-#ifdef	DMRAID_AUTOREGISTER
> +-	dm_register_device(dev_name, lib_name);
> +-#endif
> + 	return 1;
> + }
> + 
> + static int
> + dm_unregister_for_event(char *dev_name, char *lib_name)
> + {
> +-#ifdef	DMRAID_AUTOREGISTER
> +-	dm_unregister_device(dev_name, lib_name);
> +-#endif
> + 	return 1;
> + }
> + 
> +@@ -874,6 +868,8 @@ do_device(struct lib_context *lc, struct
> + 	if (OPT_TEST(lc))
> + 		return 1;
> + 
> ++	return 1;
> ++
> +         struct dmraid_format *fmt = get_format(rs);
> + 
> +         if (fmt->name != NULL) {
> +--- 1.0.0.rc16.orig/lib/metadata/reconfig.c
> ++++ 1.0.0.rc16/lib/metadata/reconfig.c
> +@@ -242,20 +242,16 @@ add_dev_to_raid(struct lib_context *lc, 
> + 		 * metadata on disks to OK state.
> + 		 */
> + 		/* Create lib-events library name */
> +-		if (fmt->name) {
> ++		/*if (fmt->name) {
> + 			strncpy(lib_name, "libdmraid-events-", LIB_NAME_LENGTH);
> + 			strncat(lib_name, fmt->name,
> + 				LIB_NAME_LENGTH-strlen(fmt->name)-3);
> + 			strncat(lib_name, ".so", 3);
> + 		} else
> + 			goto err;
> +-
> +-		/* Check registration */
> +-		if (!dm_monitored_events(&pending, sub_rs->name, lib_name)) {
> +-			/* If NOT registered update metadata to OK state. */
> ++*/
> + 			if (check_rd->fmt->metadata_handler)
> + 				check_rd->fmt->metadata_handler(lc, UPDATE_REBUILD_STATE, NULL, (void *) rs);
> +-		}
> + 	}
> + #endif
> + 
> diff --git a/meta-oe/recipes-extended/dmraid/files/03_fix_hyphen-used-as-minus-sign.patch b/meta-oe/recipes-extended/dmraid/files/03_fix_hyphen-used-as-minus-sign.patch
> new file mode 100644
> index 0000000..8c8c0de
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/03_fix_hyphen-used-as-minus-sign.patch
> @@ -0,0 +1,291 @@
> +Author: Giuseppe Iuculano <giuseppe@iuculano.it>
> +Description: Fix hyphen-used-as-minus-sign
> +--- 1.0.0.rc16.orig/man/dmraid.8
> ++++ 1.0.0.rc16/man/dmraid.8
> +@@ -4,20 +4,20 @@ dmraid \- discover, configure and activa
> + .SH SYNOPSIS
> + .B dmraid
> +  {-a|--activate} {y|n|yes|no} 
> +- [-d|--debug]... [-v|--verbose]... [-i|--ignorelocking]
> +- [-f|--format FORMAT[,FORMAT...]]
> ++ [\-d|--debug]... [\-v|--verbose]... [\-i|--ignorelocking]
> ++ [\-f|--format FORMAT[,FORMAT...]]
> +  [{-P|--partchar} CHAR]
> +- [-p|--no_partitions]
> +- [-Z|--rm_partitions]
> ++ [\-p|--no_partitions]
> ++ [\-Z|--rm_partitions]
> +  [--separator SEPARATOR]
> +- [-t|--test]
> ++ [\-t|--test]
> +  [RAID-set...]
> + 
> + .B dmraid
> +  {-b|--block_devices}
> +- [-c|--display_columns][FIELD[,FIELD...]]...
> +- [-d|--debug]... [-v|--verbose]...
> +- [--separator SEPARATOR]
> ++ [\-c|--display_columns][FIELD[,FIELD...]]...
> ++ [\-d|--debug]... [\-v|--verbose]...
> ++ [\--separator SEPARATOR]
> +  [device-path...]
> + 
> + .B dmraid
> +@@ -25,60 +25,60 @@ dmraid \- discover, configure and activa
> + 
> + .B dmraid
> +  {-l|--list_formats}
> +- [-d|--debug]... [-v|--verbose]...
> ++ [\-d|--debug]... [\-v|--verbose]...
> + 
> + .B dmraid
> +  {-n|--native_log}
> +- [-d|--debug]... [-v|--verbose]... [-i|--ignorelocking]
> +- [-f|--format FORMAT[,FORMAT...]]
> +- [--separator SEPARATOR]
> ++ [\-d|--debug]... [\-v|--verbose]... [\-i|--ignorelocking]
> ++ [\-f|--format FORMAT[,FORMAT...]]
> ++ [\--separator SEPARATOR]
> +  [device-path...]
> + 
> + .B dmraid
> +- {-R| --rebuild}
> ++ {-R| \--rebuild}
> +  RAID-set
> +  [device-path]
> + 
> + .B dmraid
> +- {-x| --remove}
> ++ {-x| \--remove}
> +  [RAID-set]
> + 
> + .B dmraid
> +- -f FORMAT-handler
> +-{-C| --create} set 
> +- --type raidlevel
> +- [--size=setsize --strip stridesize] 
> +- --disk "device-path, device-path [, device-path ...]"
> ++ \-f FORMAT-handler
> ++{-C| \--create} set 
> ++ \--type raidlevel
> ++ [\--size=setsize \--strip stridesize] 
> ++ \--disk "device-path, device-path [, device-path ...]"
> + 
> + .B dmraid
> +-[ -f|--format FORMAT-handler]
> +--S|--spare [RAID-set]
> +--M|--media  "device-path"
> ++[ \-f|--format FORMAT-handler]
> ++\-S|--spare [RAID-set]
> ++\-M|--media  "device-path"
> + 
> + .B dmraid
> +  {-r|--raid_devices}
> +- [-c|--display_columns][FIELD[,FIELD...]]...
> +- [-d|--debug]... [-v|--verbose]... [-i|--ignorelocking]
> +- [-D|--dump_metadata]
> +- [-f|--format FORMAT[,FORMAT...]]
> +- [--separator SEPARATOR]
> ++ [\-c|--display_columns][FIELD[,FIELD...]]...
> ++ [\-d|--debug]... [\-v|--verbose]... [\-i|--ignorelocking]
> ++ [\-D|--dump_metadata]
> ++ [\-f|--format FORMAT[,FORMAT...]]
> ++ [\--separator SEPARATOR]
> +  [device-path...]
> + 
> + .B dmraid
> +  {-r|--raid_devices}
> +- [-d|--debug]... [-v|--verbose]... [-i|--ignorelocking]
> +- [-E|--erase_metadata]
> +- [-f|--format FORMAT[,FORMAT...]]
> +- [--separator SEPARATOR]
> ++ [\-d|--debug]... [\-v|--verbose]... [\-i|--ignorelocking]
> ++ [\-E|--erase_metadata]
> ++ [\-f|--format FORMAT[,FORMAT...]]
> ++ [\--separator SEPARATOR]
> +  [device-path...]
> + 
> + .B dmraid
> +  {-s|--sets}...[a|i|active|inactive]
> +- [-c|--display_columns][FIELD[,FIELD...]]...
> +- [-d|--debug]... [-v|--verbose]... [-i|--ignorelocking]
> +- [-f|--format FORMAT[,FORMAT...]]
> +- [-g|--display_group]
> +- [--separator SEPARATOR]
> ++ [\-c|--display_columns][FIELD[,FIELD...]]...
> ++ [\-d|--debug]... [\-v|--verbose]... [\-i|--ignorelocking]
> ++ [\-f|--format FORMAT[,FORMAT...]]
> ++ [\-g|--display_group]
> ++ [\--separator SEPARATOR]
> +  [RAID-set...]
> + 
> + .B dmraid
> +@@ -117,7 +117,7 @@ will make dmraid tell the kernel to remo
> + underlying the set, ie if sda is part of the set, remove sda1, sda2, etc.
> + This prevents applications from directly accessiong the disks bypassing dmraid.
> + RAID set names given on command line don't need to be fully specified
> +-(eg, "dmraid -ay sil" would activate all discovered Silicon Image Medley
> ++(eg, "dmraid \-ay sil" would activate all discovered Silicon Image Medley
> + RAID sets).
> + 
> + .TP
> +@@ -134,7 +134,7 @@ See description of
> + below for FIELD identifiers.
> + 
> + .TP
> +-.I [-d|--debug]...
> ++.I [\-d|--debug]...
> + Enable debugging output. Opion can be given multiple times
> + increasing the debug output level.
> + 
> +@@ -214,18 +214,18 @@ is added to the system.
> +     During system reboot, enter OROM and mark the new drive as the rebuild drive.  
> +     After booting to the OS, use the dmraid command to rebuild.
> + 
> +-    Example: dmraid -R raid_set 
> ++    Example: dmraid \-R raid_set 
> + 
> + 2. Using dmraid to identify a new drive
> +     Boot to the OS and use the dmraid command with the new drive as
> + the second parameter.
> + 
> +-    Example: dmraid -R raid_set /dev/sdc
> ++    Example: dmraid \-R raid_set /dev/sdc
> + 
> + 3. Using hot spare drive
> +-    Mark a drive as hot spare using the "dmraid -f isw -S" command. Then use the dmraid command to start the rebuild.
> ++    Mark a drive as hot spare using the "dmraid \-f isw \-S" command. Then use the dmraid command to start the rebuild.
> + 
> +-    Example: dmraid -R raid_set
> ++    Example: dmraid \-R raid_set
> + 
> + .TP
> + .I {-x|--remove} [RAID-set]
> +@@ -235,11 +235,11 @@ Delete one or all existing software RAID
> + .I -f FORMAT-handler {-C|--create} --type raidlevel [--size=setsize --strip stripsize] --disk "device-path, device-path [,device-path]"
> + Delete one or all existing Configure a software RAID device  and store the configuration data in a group of hard drive devices consisting of this array. This command requires the following options:
> + 
> +--f FORMAT-handler
> ++\-f FORMAT-handler
> + .br
> +-	metadata format (see "dmraid -l")
> ++	metadata format (see "dmraid \-l")
> + .br		
> +---type digit[digit...]
> ++\--type digit[digit...]
> + .br
> + 	specify the raid level of the software RAID set. 
> + .br
> +@@ -251,7 +251,7 @@ Delete one or all existing Configure a s
> + .br
> + 		01: raid01 (isw raid10)
> + .br
> +---size: [digits[k|K|m|M|g|G][b|B]]
> ++\--size: [digits[k|K|m|M|g|G][b|B]]
> + .br
> + 	specify the size of the RAID set.The number is an integer followed by [kKmMgG] and/or [bB].
> + .br
> +@@ -267,11 +267,11 @@ Delete one or all existing Configure a s
> + .br
> + If this option is missing, it's set to the default value pre-configured by the vendor. Note that different vendors may apply different constraints on the granularity of the size or the minimal value.
> + .br
> +---strip: [digits[k|K|m|M|g|G][b|B]]
> ++\--strip: [digits[k|K|m|M|g|G][b|B]]
> + .br
> + 	specify the strip size of a RAID1, RAID5, and RAID10 RAID set (as above)
> + .br
> +---disk: device-path[{,| }device-path...]
> ++\--disk: device-path[{,| }device-path...]
> + .br
> + 	specify the array of the hard drives, e.g. /dev/sda.
> + 
> +@@ -349,7 +349,7 @@ Use SEPARATOR as a delimiter for all opt
> + .TP
> + .I -s... [a|i] [RAID-set...]
> + Display properties of RAID sets. Multiple RAID set names can be given
> +-on the command line which don't need to be fully specified (eg, "dmraid -s hpt"
> ++on the command line which don't need to be fully specified (eg, "dmraid \-s hpt"
> + would display all discovered Highpoint RAID sets). Enter
> + .B -s
> + twice to display RAID subsets too.
> +@@ -377,7 +377,7 @@ Enable verbose runtime information outpu
> + increasing the verbosity level.
> + 
> + .SH EXAMPLES
> +-"dmraid -l" lists all supported metadata formats with their names along with
> ++"dmraid \-l" lists all supported metadata formats with their names along with
> + some descriptive information, eg:
> + .br
> + hpt37x : (+) Highpoint HPT37X
> +@@ -400,16 +400,16 @@ dos    : (+) DOS partitions on SW RAIDs
> + .br
> + (0): Discover, (+): Discover+Activate
> + 
> +-"dmraid -ay" activates all software RAID sets discovered.
> ++"dmraid \-ay" activates all software RAID sets discovered.
> + 
> +-"dmraid -an" deactivates all active software RAID sets which are not open
> ++"dmraid \-an" deactivates all active software RAID sets which are not open
> + (eg, mounted filesystem on them).
> + 
> +-"dmraid -ay -f pdc" (pdc looked up from "dmraid -l") activates all
> ++"dmraid \-ay \-f pdc" (pdc looked up from "dmraid \-l") activates all
> + software RAID sets with Promise format discovered and ignores all other
> + supported formats.
> + 
> +-"dmraid -r" discovers all software RAID devices supported on your system, eg:
> ++"dmraid \-r" discovers all software RAID devices supported on your system, eg:
> + .br
> + /dev/dm-46: hpt45x, "hpt45x_chidjhaiaa-0", striped, ok, 320172928 sectors, data@ 0
> + .br
> +@@ -420,7 +420,7 @@ supported formats.
> + /dev/dm-58: hpt45x, "hpt45x_chidjhaiaa-1", striped, ok, 320172928 sectors, data@ 0
> + 
> + 
> +-"dmraid -s -s hpt45x_chidjhaiaa" displays properties of
> ++"dmraid \-s \-s hpt45x_chidjhaiaa" displays properties of
> + set "hpt45x_chidjhaiaa", eg:
> + .br
> + *** Superset
> +@@ -478,7 +478,7 @@ dev    : 2
> + spare  : 0
> + .br
> + 
> +-"dmraid -s -ccs hpt45" displays properties in column format of all sets
> ++"dmraid \-s \-ccs hpt45" displays properties in column format of all sets
> + and subsets with hpt45* format, eg:
> + .br
> + hpt45x_chidjhaiaa,640345856,128,raid10,ok,4,0
> +@@ -487,7 +487,7 @@ hpt45x_chidjhaiaa-a,640345856,128,stripe
> + .br
> + hpt45x_chidjhaiaa-b,640345856,128,stripe,ok,2,0
> + 
> +-"dmraid -r --sep : -cpath:size" display paths and sizes in sectors for
> ++"dmraid \-r \--sep : \-cpath:size" display paths and sizes in sectors for
> + RAID devices in column format using ':' as a delimiter, eg:
> + .br
> + /dev/dm-8:320173055
> +@@ -518,18 +518,18 @@ RAID devices in column format using ':' 
> + .br
> + /dev/dm-66:390624896
> + 
> +-"dmraid -f isw -C Raid0 --type 0 --strip 8k --size 20g --disk "/dev/sdb /dev/sdc"" creates an ISW volume with
> ++"dmraid \-f isw \-C Raid0 \--type 0 \--strip 8k \--size 20g \--disk "/dev/sdb /dev/sdc"" creates an ISW volume with
> + a name of "Raid0", 20Gig bytes in total, and 8kilo bytes strip size on two disks.
> + 
> +-"dmraid -f isw -C Test0 --type 0 --disk "/dev/sdd /dev/sde"" creates an ISW volume with the default size and strip size.
> ++"dmraid \-f isw \-C Test0 \--type 0 \--disk "/dev/sdd /dev/sde"" creates an ISW volume with the default size and strip size.
> + 
> +-"dmraid -f isw -C Test10 --type 01 --strip 128B --disk "/dev/sda /dev/sdb /dev/sdc /dev/sdd" creates a stacked
> ++"dmraid \-f isw \-C Test10 \--type 01 \--strip 128B \--disk "/dev/sda /dev/sdb /dev/sdc /dev/sdd" creates a stacked
> + RAID device, RAID10 (isw format), with a name of "Test10", 128 blocks (512bytes) strip size , and the default volume size on
> + 4 disks.
> + 
> +-"dmraid -f isw -S -M /dev/sde" marks the device /dev/sde as a hot spare for rebuild
> ++"dmraid \-f isw \-S \-M /dev/sde" marks the device /dev/sde as a hot spare for rebuild
> + 
> +-"dmraid -R isw_djaggchdde_RAID1 /dev/sde" starts rebuild of the RAID volume on device /dev/sde
> ++"dmraid \-R isw_djaggchdde_RAID1 /dev/sde" starts rebuild of the RAID volume on device /dev/sde
> + 
> + .SH DIAGNOSTICS
> + dmraid returns an exit code of 0 for success or 1 for error.
> diff --git a/meta-oe/recipes-extended/dmraid/files/04_promise-add-offsets.patch b/meta-oe/recipes-extended/dmraid/files/04_promise-add-offsets.patch
> new file mode 100644
> index 0000000..1f07da5
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/04_promise-add-offsets.patch
> @@ -0,0 +1,13 @@
> +Author: Luke Yelavich <themuso@ubuntu.com>
> +Description: Add extra offsets where promise metadata can be found.
> +--- 1.0.0.rc16.orig/lib/format/ataraid/pdc.h
> ++++ 1.0.0.rc16/lib/format/ataraid/pdc.h
> +@@ -13,7 +13,7 @@
> + 
> + #include <stdint.h>
> + 
> +-#define PDC_CONFIGOFFSETS	63,255,256,16,399,591,675,735,974,991
> ++#define PDC_CONFIGOFFSETS	63,255,256,16,399,591,675,735,974,991,911,951
> + #define	PDC_DATAOFFSET 0
> + 
> + /*
> diff --git a/meta-oe/recipes-extended/dmraid/files/05_exit_code.patch b/meta-oe/recipes-extended/dmraid/files/05_exit_code.patch
> new file mode 100644
> index 0000000..5c0b036
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/05_exit_code.patch
> @@ -0,0 +1,22 @@
> +Author: Giuseppe Iuculano <giuseppe@iuculano.it>
> +Description: Fix exit-code for "No RAID disks" and "no block devices found" errors (LP: #300825)
> +--- 1.0.0.rc16.orig/lib/metadata/metadata.c
> ++++ 1.0.0.rc16/lib/metadata/metadata.c
> +@@ -2096,7 +2096,7 @@ get_metadata(struct lib_context *lc, enu
> + 
> + 	if (!count_devices(lc, DEVICE)) {
> + 		log_print(lc, "no block devices found");
> +-		return 1;
> ++		return 0;
> + 	}
> + 
> + 	if (!(M_RAID & p->metadata))
> +@@ -2118,7 +2118,7 @@ get_metadata(struct lib_context *lc, enu
> + 	if (!OPT_HOT_SPARE_SET(lc) && !OPT_CREATE(lc)
> + 	    && !count_devices(lc, RAID)) {
> + 		format_error(lc, "disks", argv);
> +-		return 1;
> ++		return 0;
> + 	}
> + 
> + 	if (M_SET & p->metadata) {
> diff --git a/meta-oe/recipes-extended/dmraid/files/06_support_virtio_devices.patch b/meta-oe/recipes-extended/dmraid/files/06_support_virtio_devices.patch
> new file mode 100644
> index 0000000..2863219
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/06_support_virtio_devices.patch
> @@ -0,0 +1,13 @@
> +Author: Luke Yelavich <themuso@ubuntu.com>
> +Description: Support for checking virtio devices for dmraid metadata.
> +--- 1.0.0.rc16.orig/lib/device/scan.c
> ++++ 1.0.0.rc16/lib/device/scan.c
> +@@ -174,7 +174,7 @@ interested(struct lib_context *lc, char 
> + 	 * Whole IDE and SCSI disks only.
> + 	 */
> + 	return (!isdigit(name[strlen(name) - 1]) &&
> +-		(*(name + 1) == 'd' && (*name == 'h' || *name == 's')))
> ++		(*(name + 1) == 'd' && (*name == 'h' || *name == 's' || *name == 'v')))
> + #ifdef	DMRAID_TEST
> + 		/*
> + 		 * Include dm devices for testing.
> diff --git a/meta-oe/recipes-extended/dmraid/files/07_isw-probe-hpa.patch b/meta-oe/recipes-extended/dmraid/files/07_isw-probe-hpa.patch
> new file mode 100644
> index 0000000..289604f
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/07_isw-probe-hpa.patch
> @@ -0,0 +1,144 @@
> +Probe isw disks with [some] HPA awareness, thanks to Robert Collins <robert@ubuntu.com>. (LP: #372170)
> +--- 1.0.0.rc16.orig/lib/format/ataraid/isw.c
> ++++ 1.0.0.rc16/lib/format/ataraid/isw.c
> +@@ -353,6 +353,7 @@ raiddev(struct isw *isw, unsigned i)
> + enum convert { FULL, FIRST, LAST };
> + #if	BYTE_ORDER == LITTLE_ENDIAN
> + #  define	to_cpu(x, y)
> ++#  define       CVT16(x)
> + #else
> + /*
> +  * We can differ from the read_raid_dev template here,
> +@@ -547,15 +548,16 @@ disk_ok(struct lib_context *lc, struct d
> + }
> + 
> + static void *
> +-isw_read_metadata(struct lib_context *lc, struct dev_info *di,
> +-		  size_t * sz, uint64_t * offset, union read_info *info)
> ++isw_try_sboffset(struct lib_context *lc, struct dev_info *di,
> ++		 size_t * sz, uint64_t * offset, union read_info *info,
> ++		 uint64_t const isw_sboffset)
> + {
> + 	size_t size = ISW_DISK_BLOCK_SIZE;
> +-	uint64_t isw_sboffset = ISW_CONFIGOFFSET(di);
> + 	struct isw *isw;
> ++	uint64_t temp_isw_sboffset = isw_sboffset;
> + 
> + 	if (!(isw = alloc_private_and_read(lc, handler, size,
> +-					   di->path, isw_sboffset)))
> ++					   di->path, temp_isw_sboffset)))
> + 		goto out;
> + 
> + 	/*
> +@@ -565,9 +567,15 @@ isw_read_metadata(struct lib_context *lc
> + 	to_cpu(isw, FIRST);
> + 
> + 	/* Check Signature and read optional extended metadata. */
> +-	if (!is_isw(lc, di, isw) ||
> +-	    !isw_read_extended(lc, di, &isw, &isw_sboffset, &size))
> ++	if (!is_isw(lc, di, isw)) {
> ++		log_dbg(lc, "not isw at %ld", isw_sboffset);
> + 		goto bad;
> ++	}
> ++	if (!isw_read_extended(lc, di, &isw, &temp_isw_sboffset, &size)) {
> ++		log_err(lc, "isw metadata, but extended read failed at %ld",
> ++			isw_sboffset);
> ++		goto bad;
> ++	}
> + 
> + 	/*
> + 	 * Now that we made sure, that we've got all the
> +@@ -578,6 +586,8 @@ isw_read_metadata(struct lib_context *lc
> + 	if (disk_ok(lc, di, isw)) {
> + 		*sz = size;
> + 		*offset = info->u64 = isw_sboffset;
> ++		log_dbg(lc, "isw metadata found at %ld from probe at %ld\n",
> ++			*offset, isw_sboffset);
> + 		goto out;
> + 	}
> + 
> +@@ -589,6 +599,54 @@ out:
> + 	return (void *) isw;
> + }
> + 
> ++/* HPA on a disk shifts everything down. This is a 'works-enough' approach to
> ++ * handling that. There is a better long term approach requiring kernel
> ++ * patches - see the lkml patches for alt_size.
> ++ */
> ++static void *
> ++isw_try_hpa(struct lib_context *lc, struct dev_info *di,
> ++	   size_t * sz, uint64_t * offset, union read_info *info)
> ++{
> ++	struct isw10 *isw10;
> ++	void *result = NULL;
> ++	uint64_t actual_offset;
> ++	if (!(isw10 = alloc_private_and_read(lc, handler, ISW_DISK_BLOCK_SIZE,
> ++		di->path, ISW_10_CONFIGOFFSET(di))))
> ++		goto out;
> ++	if (strncmp((const char *)isw10->sig, ISW10_SIGNATURE, ISW10_SIGNATURE_SIZE))
> ++		goto out_free;
> ++	log_dbg(lc, "Found isw 10 gafr signature.");
> ++	CVT16(isw10->offset);
> ++	actual_offset = isw10->offset + 2;
> ++	log_dbg(lc, "isw 10 sector offset calculated at %hd.", actual_offset);
> ++	if (actual_offset > di->sectors)
> ++		goto out_free;
> ++	result = isw_try_sboffset(lc, di, sz, offset, info,
> ++		ISW_SECTOR_TO_OFFSET(di->sectors - actual_offset));
> ++      out_free:
> ++	dbg_free(isw10);
> ++      out:
> ++	return result;
> ++}
> ++
> ++
> ++static void *
> ++isw_read_metadata(struct lib_context *lc, struct dev_info *di,
> ++		  size_t * sz, uint64_t * offset, union read_info *info)
> ++{
> ++	void *result;
> ++	if ((result = isw_try_sboffset(
> ++		lc, di, sz, offset, info, ISW_CONFIGOFFSET(di))))
> ++		return result;
> ++	if ((result = isw_try_hpa(lc, di, sz, offset, info)))
> ++		return result;
> ++        log_dbg(lc, "isw trying hard coded -2115 offset.");
> ++	if ((result = isw_try_sboffset(
> ++		lc, di, sz, offset, info, (di->sectors - 2115)*512)))
> ++		return result;
> ++	return NULL;
> ++}
> ++
> + static int setup_rd(struct lib_context *lc, struct raid_dev *rd,
> + 		    struct dev_info *di, void *meta, union read_info *info);
> + static struct raid_dev *
> +--- 1.0.0.rc16.orig/lib/format/ataraid/isw.h
> ++++ 1.0.0.rc16/lib/format/ataraid/isw.h
> +@@ -36,8 +36,11 @@
> + 
> + /* Intel metadata offset in bytes */
> + #define	ISW_CONFIGSECTOR(di)	((di)->sectors - 2)
> +-#define	ISW_CONFIGOFFSET(di)	(ISW_CONFIGSECTOR(di) << 9)
> ++#define ISW_SECTOR_TO_OFFSET(sector) ((sector) << 9)
> ++#define	ISW_CONFIGOFFSET(di)	(ISW_SECTOR_TO_OFFSET(ISW_CONFIGSECTOR(di)))
> + #define	ISW_DATAOFFSET		0	/* Data offset in sectors */
> ++#define ISW_10_CONFIGSECTOR(di) ((di)->sectors - 1)
> ++#define ISW_10_CONFIGOFFSET(di) (ISW_SECTOR_TO_OFFSET(ISW_10_CONFIGSECTOR(di)))
> + 
> + #define MPB_SIGNATURE	     "Intel Raid ISM Cfg Sig. "
> + #define MPB_SIGNATURE_SIZE	(sizeof(MPB_SIGNATURE) - 1)
> +@@ -222,6 +225,14 @@ struct isw {
> + 	// here comes isw_dev[num_raid_devs]
> + } __attribute__ ((packed));
> + 
> ++#define ISW10_SIGNATURE "$GAFR\x10"
> ++#define ISW10_SIGNATURE_SIZE (sizeof(ISW10_SIGNATURE) - 1)
> ++struct isw10 {
> ++	int8_t sig[ISW10_SIGNATURE_SIZE];
> ++	uint32_t offset; /* offset to real data, in sectors back */
> ++} __attribute__ ((packed));
> ++
> ++
> + #endif
> + 
> + int register_isw(struct lib_context *lc);
> diff --git a/meta-oe/recipes-extended/dmraid/files/08_activate_multiple_raid_sets.patch b/meta-oe/recipes-extended/dmraid/files/08_activate_multiple_raid_sets.patch
> new file mode 100644
> index 0000000..807ceac
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/08_activate_multiple_raid_sets.patch
> @@ -0,0 +1,12 @@
> +Continue onto all raid sets instead of returning after processing the first. (LP: #401713)
> +--- 1.0.0.rc16.orig/lib/metadata/metadata.c
> ++++ 1.0.0.rc16/lib/metadata/metadata.c
> +@@ -839,7 +839,7 @@ _discover_partitions(struct lib_context 
> + 		 */
> + 		if (T_GROUP(rs)) {
> + 			_discover_partitions(lc, &rs->sets);
> +-			return;
> ++			continue;
> + 		}
> + 
> + 		/*
> diff --git a/meta-oe/recipes-extended/dmraid/files/09_pdc_raid10_failure..patch b/meta-oe/recipes-extended/dmraid/files/09_pdc_raid10_failure..patch
> new file mode 100644
> index 0000000..62b2f36
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/09_pdc_raid10_failure..patch
> @@ -0,0 +1,14 @@
> +fix pdc metadata format handler to report the proper number of devices in a subset
> +--- 1.0.0.rc16.orig/lib/format/ataraid/pdc.c
> ++++ 1.0.0.rc16/lib/format/ataraid/pdc.c
> +@@ -490,7 +490,9 @@ devices(struct raid_dev *rd, void *conte
> + 	if (context && pdc->raid.type != PDC_T_SPAN)
> + 		*((uint64_t *) context) += rd->sectors;
> + 
> +-	return pdc->raid.total_disks;
> ++	return is_raid10(pdc) ? 
> ++		pdc->raid.total_disks / 2 :
> ++		pdc->raid.total_disks;
> + }
> + 
> + static int
> diff --git a/meta-oe/recipes-extended/dmraid/files/10_ddf1_lsi_persistent_name.patch b/meta-oe/recipes-extended/dmraid/files/10_ddf1_lsi_persistent_name.patch
> new file mode 100644
> index 0000000..6e085e7
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/10_ddf1_lsi_persistent_name.patch
> @@ -0,0 +1,20 @@
> +Using a dummy string for the timestamp in the LSI metadata
> +--- 1.0.0.rc16.orig/lib/format/ddf/ddf1.c
> ++++ 1.0.0.rc16/lib/format/ddf/ddf1.c
> +@@ -696,6 +696,16 @@ name(struct lib_context *lc, struct ddf1
> + 			sprintf(b, "%02x%02x%02x%02x",
> + 				vd->guid[i], vd->guid[i + 1],
> + 				vd->guid[i + 2], vd->guid[i + 3]);
> ++
> ++		/*
> ++		 * Because the LSI bios changes the timestamp in the
> ++		 * metadata on every boot, we have to neutralize it
> ++		 * in order to allow for persistent names.
> ++		 *
> ++		 * Using a dummy string "47114711" for that.
> ++		 */
> ++		if (!strncmp((char *) vd->guid, "LSI", 3))
> ++			strncpy(buf + prefix + 32, "47114711", 8);
> + 	}
> + 
> + out:
> diff --git a/meta-oe/recipes-extended/dmraid/files/11_fix_isw_sectors_calculation.patch b/meta-oe/recipes-extended/dmraid/files/11_fix_isw_sectors_calculation.patch
> new file mode 100644
> index 0000000..8087904
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/11_fix_isw_sectors_calculation.patch
> @@ -0,0 +1,14 @@
> +Fix isw raid0 incorrect  sectors calculation, thanks to Valentin Pavlyuchenko
> +--- 1.0.0.rc16.orig/lib/format/ataraid/isw.c
> ++++ 1.0.0.rc16/lib/format/ataraid/isw.c
> +@@ -776,7 +776,9 @@ _create_rd(struct lib_context *lc,
> + 	r->di = rd->di;
> + 	r->fmt = rd->fmt;
> + 	r->offset = dev->vol.map[0].pba_of_lba0;
> +-	if ((r->sectors = dev->vol.map[0].blocks_per_member - RAID_DS_JOURNAL))
> ++	//fix bugs on ICH10R
> ++	//if ((r->sectors = dev->vol.map[0].blocks_per_member - RAID_DS_JOURNAL))
> ++	if ((r->sectors = dev->vol.map[0].blocks_per_member))
> + 		goto out;
> + 
> + 	log_zero_sectors(lc, rd->di->path, handler);
> diff --git a/meta-oe/recipes-extended/dmraid/files/12_jmicron_namefix.patch b/meta-oe/recipes-extended/dmraid/files/12_jmicron_namefix.patch
> new file mode 100644
> index 0000000..a0ed1eb
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/12_jmicron_namefix.patch
> @@ -0,0 +1,20 @@
> +From: Phillip Susi <psusi@cfl.rr.com>
> +Author: Danny Wood <danwood76@gmail.com>
> +Subject: Fix jmicron names again
> +Bug-Ubuntu: http://launchpad.net/bugs/576289
> +Last-Update: 2011-03-08
> +Description: Uninitialized variable prevented code from working
> + as intended.
> +Index: 1.0.0.rc16/lib/format/ataraid/jm.c
> +===================================================================
> +--- 1.0.0.rc16.orig/lib/format/ataraid/jm.c
> ++++ 1.0.0.rc16/lib/format/ataraid/jm.c
> +@@ -25,7 +25,7 @@
> + static char *
> + name(struct lib_context *lc, struct raid_dev *rd, unsigned int subset)
> + {
> +-	size_t i, len;
> ++	size_t i = JM_NAME_LEN - 1, len;
> + 	struct jm *jm = META(rd, jm);
> + 	char *ret, *name = (char *) jm->name;
> + 	char buf[JM_NAME_LEN + 1] = { '\0' };
> diff --git a/meta-oe/recipes-extended/dmraid/files/13_fix_testing.patch b/meta-oe/recipes-extended/dmraid/files/13_fix_testing.patch
> new file mode 100644
> index 0000000..48c2ed4
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/13_fix_testing.patch
> @@ -0,0 +1,24 @@
> +From: Phillip Susi <psusi@cfl.rr.com>
> +Last-Update: 2011-03-08
> +Forwarded: yes
> +Description: Testing with dm devices was failing on Ubuntu because
> + /dev/dm-X is the actual device node, but the code wanted it to be
> + a symlink.  Fixed dm_test_device() to test that the file ( or node
> + it points to ) is a block device, which seems a much more
> + appropriate test.
> +
> +Index: 1.0.0.rc16/lib/device/scan.c
> +===================================================================
> +--- 1.0.0.rc16.orig/lib/device/scan.c
> ++++ 1.0.0.rc16/lib/device/scan.c
> +@@ -86,8 +86,8 @@
> + {
> + 	struct stat s;
> + 
> +-	return !lstat(path, &s) &&
> +-		S_ISLNK(s.st_mode) &&
> ++	return !stat(path, &s) &&
> ++		S_ISBLK(s.st_mode) &&
> + 		!strncmp(get_basename(lc, path), "dm-", 3);
> + }
> + 
> diff --git a/meta-oe/recipes-extended/dmraid/files/14_pdc_dump_extended_metadata.patch b/meta-oe/recipes-extended/dmraid/files/14_pdc_dump_extended_metadata.patch
> new file mode 100644
> index 0000000..a821195
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/14_pdc_dump_extended_metadata.patch
> @@ -0,0 +1,147 @@
> +From: Phillip Susi <psusi@cfl.rr.com>
> +Last-Update: 2011-03-08
> +Forwarded: Yes
> +Description: PDC supports up to 4 sets of metadata to describe
> + different arrays. Only the first set was being dumped with
> + dmraid -rD or -n.  This patch corrects that.  Also fixes the
> + .offset file, which was always reporting 0.
> +
> +Index: 1.0.0.rc16/lib/format/ataraid/pdc.c
> +===================================================================
> +--- 1.0.0.rc16.orig/lib/format/ataraid/pdc.c
> ++++ 1.0.0.rc16/lib/format/ataraid/pdc.c
> +@@ -172,7 +172,6 @@
> + 	unsigned *s = end_sectors;
> + 	uint64_t sector;
> + 
> +-	*size = sizeof(*ret);
> + 	pdc_sectors_max = di->sectors - div_up(*size, 512);
> + 
> + 	if (!(ret = alloc_private(lc, handler,
> +@@ -219,7 +218,9 @@
> + 		dbg_free(ret);
> + 		ret = NULL;
> + 	}
> +-
> ++	*size = sizeof(*ret) * ma;
> ++	*offset = di->sectors - info->u32;
> ++	*offset <<= 9;
> + 	return ret;
> + }
> + 
> +@@ -544,60 +545,64 @@
> + static void
> + _pdc_log(struct lib_context *lc, struct dev_info *di, struct pdc *pdc)
> + {
> +-	unsigned i;
> ++	unsigned i, ma = count_meta_areas(pdc);
> + 	struct pdc_disk *disk;
> + 
> +-	log_print(lc, "%s (%s):", di->path, handler);
> +-	DP("promise_id: \"%s\"", pdc, pdc->promise_id);
> +-	P("unknown_0: 0x%x %u",
> +-	  pdc, pdc->unknown_0, pdc->unknown_0, pdc->unknown_0);
> +-	DP("magic_0: 0x%x", pdc, pdc->magic_0);
> +-	P("unknown_1: 0x%x %u",
> +-	  pdc, pdc->unknown_1, pdc->unknown_1, pdc->unknown_1);
> +-	DP("magic_1: 0x%x", pdc, pdc->magic_1);
> +-	P("unknown_2: 0x%x %u",
> +-	  pdc, pdc->unknown_2, pdc->unknown_2, pdc->unknown_2);
> +-	DP("raid.flags: 0x%x", pdc, pdc->raid.flags);
> +-	P("raid.unknown_0: 0x%x %d",
> +-	  pdc, pdc->raid.unknown_0, pdc->raid.unknown_0, pdc->raid.unknown_0);
> +-	DP("raid.disk_number: %u", pdc, pdc->raid.disk_number);
> +-	DP("raid.channel: %u", pdc, pdc->raid.channel);
> +-	DP("raid.device: %u", pdc, pdc->raid.device);
> +-	DP("raid.magic_0: 0x%x", pdc, pdc->raid.magic_0);
> +-	P("raid.unknown_1: 0x%x %u",
> +-	  pdc, pdc->raid.unknown_1, pdc->raid.unknown_1, pdc->raid.unknown_1);
> +-	P("raid.start: 0x%x %u",
> +-	  pdc, pdc->raid.start, pdc->raid.start, pdc->raid.start);
> +-	DP("raid.disk_secs: %u", pdc, pdc->raid.disk_secs);
> +-	P("raid.unknown_3: 0x%x %u",
> +-	  pdc, pdc->raid.unknown_3, pdc->raid.unknown_3, pdc->raid.unknown_3);
> +-	P("raid.unknown_4: 0x%x %u",
> +-	  pdc, pdc->raid.unknown_4, pdc->raid.unknown_4, pdc->raid.unknown_4);
> +-	DP("raid.status: 0x%x", pdc, pdc->raid.status);
> +-	DP("raid.type: 0x%x", pdc, pdc->raid.type);
> +-	DP("raid.total_disks: %u", pdc, pdc->raid.total_disks);
> +-	DP("raid.raid0_shift: %u", pdc, pdc->raid.raid0_shift);
> +-	DP("raid.raid0_disks: %u", pdc, pdc->raid.raid0_disks);
> +-	DP("raid.array_number: %u", pdc, pdc->raid.array_number);
> +-	DP("raid.total_secs: %u", pdc, pdc->raid.total_secs);
> +-	DP("raid.cylinders: %u", pdc, pdc->raid.cylinders);
> +-	DP("raid.heads: %u", pdc, pdc->raid.heads);
> +-	DP("raid.sectors: %u", pdc, pdc->raid.sectors);
> +-	DP("raid.magic_1: 0x%x", pdc, pdc->raid.magic_1);
> +-	P("raid.unknown_5: 0x%x %u",
> +-	  pdc, pdc->raid.unknown_5, pdc->raid.unknown_5, pdc->raid.unknown_5);
> +-
> +-	for (disk = pdc->raid.disk, i = 0;
> +-	     i < pdc->raid.total_disks; disk++, i++) {
> +-		P2("raid.disk[%d].unknown_0: 0x%x", pdc, i, disk->unknown_0);
> +-		P2("raid.disk[%d].channel: %u", pdc, i, disk->channel);
> +-		P2("raid.disk[%d].device: %u", pdc, i, disk->device);
> +-		P2("raid.disk[%d].magic_0: 0x%x", pdc, i, disk->magic_0);
> +-		P2("raid.disk[%d].disk_number: %u", pdc, i, disk->disk_number);
> +-	}
> ++	while (ma) {
> ++		log_print(lc, "%s (%s):", di->path, handler);
> ++		DP("promise_id: \"%s\"", pdc, pdc->promise_id);
> ++		P("unknown_0: 0x%x %u",
> ++		  pdc, pdc->unknown_0, pdc->unknown_0, pdc->unknown_0);
> ++		DP("magic_0: 0x%x", pdc, pdc->magic_0);
> ++		P("unknown_1: 0x%x %u",
> ++		  pdc, pdc->unknown_1, pdc->unknown_1, pdc->unknown_1);
> ++		DP("magic_1: 0x%x", pdc, pdc->magic_1);
> ++		P("unknown_2: 0x%x %u",
> ++		  pdc, pdc->unknown_2, pdc->unknown_2, pdc->unknown_2);
> ++		DP("raid.flags: 0x%x", pdc, pdc->raid.flags);
> ++		P("raid.unknown_0: 0x%x %d",
> ++		  pdc, pdc->raid.unknown_0, pdc->raid.unknown_0, pdc->raid.unknown_0);
> ++		DP("raid.disk_number: %u", pdc, pdc->raid.disk_number);
> ++		DP("raid.channel: %u", pdc, pdc->raid.channel);
> ++		DP("raid.device: %u", pdc, pdc->raid.device);
> ++		DP("raid.magic_0: 0x%x", pdc, pdc->raid.magic_0);
> ++		P("raid.unknown_1: 0x%x %u",
> ++		  pdc, pdc->raid.unknown_1, pdc->raid.unknown_1, pdc->raid.unknown_1);
> ++		P("raid.start: 0x%x %u",
> ++		  pdc, pdc->raid.start, pdc->raid.start, pdc->raid.start);
> ++		DP("raid.disk_secs: %u", pdc, pdc->raid.disk_secs);
> ++		P("raid.unknown_3: 0x%x %u",
> ++		  pdc, pdc->raid.unknown_3, pdc->raid.unknown_3, pdc->raid.unknown_3);
> ++		P("raid.unknown_4: 0x%x %u",
> ++		  pdc, pdc->raid.unknown_4, pdc->raid.unknown_4, pdc->raid.unknown_4);
> ++		DP("raid.status: 0x%x", pdc, pdc->raid.status);
> ++		DP("raid.type: 0x%x", pdc, pdc->raid.type);
> ++		DP("raid.total_disks: %u", pdc, pdc->raid.total_disks);
> ++		DP("raid.raid0_shift: %u", pdc, pdc->raid.raid0_shift);
> ++		DP("raid.raid0_disks: %u", pdc, pdc->raid.raid0_disks);
> ++		DP("raid.array_number: %u", pdc, pdc->raid.array_number);
> ++		DP("raid.total_secs: %u", pdc, pdc->raid.total_secs);
> ++		DP("raid.cylinders: %u", pdc, pdc->raid.cylinders);
> ++		DP("raid.heads: %u", pdc, pdc->raid.heads);
> ++		DP("raid.sectors: %u", pdc, pdc->raid.sectors);
> ++		DP("raid.magic_1: 0x%x", pdc, pdc->raid.magic_1);
> ++		P("raid.unknown_5: 0x%x %u",
> ++		  pdc, pdc->raid.unknown_5, pdc->raid.unknown_5, pdc->raid.unknown_5);
> ++
> ++		for (disk = pdc->raid.disk, i = 0;
> ++		     i < pdc->raid.total_disks; disk++, i++) {
> ++			P2("raid.disk[%d].unknown_0: 0x%x", pdc, i, disk->unknown_0);
> ++			P2("raid.disk[%d].channel: %u", pdc, i, disk->channel);
> ++			P2("raid.disk[%d].device: %u", pdc, i, disk->device);
> ++			P2("raid.disk[%d].magic_0: 0x%x", pdc, i, disk->magic_0);
> ++			P2("raid.disk[%d].disk_number: %u", pdc, i, disk->disk_number);
> ++		}
> + 
> +-	P("checksum: 0x%x %s", pdc, pdc->checksum, pdc->checksum,
> +-	  checksum(pdc) ? "Ok" : "BAD");
> ++		P("checksum: 0x%x %s", pdc, pdc->checksum, pdc->checksum,
> ++		  checksum(pdc) ? "Ok" : "BAD");
> ++		ma--;
> ++		pdc++;
> ++	}
> + }
> + 
> + static void
> diff --git a/meta-oe/recipes-extended/dmraid/files/15_drop_p_for_partition_conditional.patch b/meta-oe/recipes-extended/dmraid/files/15_drop_p_for_partition_conditional.patch
> new file mode 100644
> index 0000000..72e6237
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/15_drop_p_for_partition_conditional.patch
> @@ -0,0 +1,31 @@
> +From: Phillip Susi <psusi@cfl.rr.com>
> +Last-Update: 2011-03-08
> +Description: dmraid was changed at one point to insert a 'p' between
> + the base device name and the partition number.  For some time
> + debian and ubuntu reversed this change.  This patch modifies the
> + behavior to add the 'p' iff the last character of the base name is
> + a digit.  This makes dmraid comply with the behavior used by
> + kpartx and "by linux since the dawn of time".
> +Forwarded: Yes
> +
> +Index: 1.0.0.rc16/lib/format/partition/dos.c
> +===================================================================
> +--- 1.0.0.rc16.orig/lib/format/partition/dos.c
> ++++ 1.0.0.rc16/lib/format/partition/dos.c
> +@@ -31,8 +31,14 @@
> + {
> + 	const char *base = get_basename(lc, rd->di->path);
> + 
> +-	return type ? snprintf(str, len, "%s%s%u", base, OPT_STR_PARTCHAR(lc),
> +-			       partition) : snprintf(str, len, "%s", base);
> ++	if (type)
> ++	{
> ++		if (isdigit(base[strlen(base) - 1]))
> ++			return snprintf(str, len, "%s%s%u", base,
> ++					OPT_STR_PARTCHAR(lc), partition);
> ++		else return snprintf(str, len, "%s%u", base, partition);
> ++	}
> ++	else return snprintf(str, len, "%s", base);
> + }
> + 
> + static char *
> diff --git a/meta-oe/recipes-extended/dmraid/files/16_change-uuid.patch b/meta-oe/recipes-extended/dmraid/files/16_change-uuid.patch
> new file mode 100644
> index 0000000..12017d6
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/16_change-uuid.patch
> @@ -0,0 +1,77 @@
> +From: Phillip Susi <psusi@ubuntu.com>
> +Subject: Change uuid for partitions and internal devices
> +Description: Change the uuid for internal devices ( like
> + each half of a raid10 ) so that the rest of the system
> + can recognize that the internal device should not be
> + probed for partitions or filesystems or mounted.  Also
> + change partition's uuid to have the same "partNN-"
> + prefix that kpartx gives them.
> +
> +Index: 1.0.0.rc16/lib/activate/devmapper.c
> +===================================================================
> +--- 1.0.0.rc16.orig/lib/activate/devmapper.c
> ++++ 1.0.0.rc16/lib/activate/devmapper.c
> +@@ -171,8 +171,18 @@ dmraid_uuid(struct lib_context *lc, stru
> + 	/* Clear garbage data from uuid string */
> + 	memset(uuid, 0, uuid_len);
> + 
> +-	/* Create UUID string from subsystem prefix and RAID set name. */
> +-	r = snprintf(uuid, uuid_len, "DMRAID-%s", name) < uuid_len;
> ++	/* Create UUID string from subsystem prefix and RAID set name.  *
> ++	 * Prefix partitions with "partNN-" and add an 'I' for internal *
> ++	 * for stacked devices ( each half of a raid10 )                */
> ++
> ++	if (rs->type & t_partition) {
> ++		char *part;
> ++		for (part = name + strlen(name) - 1; isdigit(*part); part--);
> ++		part++;
> ++		r = snprintf(uuid, uuid_len, "part%s-DMRAID-%S", part, name) < uuid_len;
> ++	} else if (rs->flags & f_subset)
> ++		r = snprintf(uuid, uuid_len, "DMRAIDI-%s", name) < uuid_len;
> ++	else r = snprintf(uuid, uuid_len, "DMRAID-%s", name) < uuid_len;
> + 	return r < 0 ? 0 : (r < uuid_len);
> + }
> + 
> +Index: 1.0.0.rc16/include/dmraid/metadata.h
> +===================================================================
> +--- 1.0.0.rc16.orig/include/dmraid/metadata.h
> ++++ 1.0.0.rc16/include/dmraid/metadata.h
> +@@ -177,6 +177,7 @@ enum flags {
> + 	f_maximize = 0x01,	/* If set, maximize set capacity,
> + 				   if not set, limit to smallest device. */
> + 	f_partitions = 0x02,	/* Set has partitions. */
> ++	f_subset = 0x04,	/* Set is an internal subset ( half of raid10 ) */
> + };
> + 
> + #define	F_MAXIMIZE(rs)		((rs)->flags & f_maximize)
> +Index: 1.0.0.rc16/lib/format/ataraid/isw.c
> +===================================================================
> +--- 1.0.0.rc16.orig/lib/format/ataraid/isw.c
> ++++ 1.0.0.rc16/lib/format/ataraid/isw.c
> +@@ -877,7 +877,8 @@ group_rd(struct lib_context *lc,
> + 				free_raid_dev(lc, &rd);
> + 				return NULL;
> + 			}
> +-
> ++			if (is_raid10(dev))
> ++				rs->flags |= f_subset;
> + 			rs->status = s_ok;
> + 
> + 			/* Save and set to enable dev_sort(). */
> +Index: 1.0.0.rc16/lib/format/format.c
> +===================================================================
> +--- 1.0.0.rc16.orig/lib/format/format.c
> ++++ 1.0.0.rc16/lib/format/format.c
> +@@ -649,9 +649,10 @@ join_superset(struct lib_context *lc,
> + 	if ((n = f_name(lc, rd, 0))) {
> + 		if ((ret = find_or_alloc_raid_set(lc, n, FIND_TOP, NO_RD,
> + 						  LC_RS(lc), f_create, rd)) &&
> +-		    !find_set(lc, &ret->sets, rs->name, FIND_TOP))
> ++		    !find_set(lc, &ret->sets, rs->name, FIND_TOP)) {
> + 			list_add_sorted(lc, &ret->sets, &rs->list, f_set_sort);
> +-
> ++			rs->flags |= f_subset;
> ++		}
> + 		dbg_free(n);
> + 	}
> + 
> diff --git a/meta-oe/recipes-extended/dmraid/files/17_convert-dmraid45-to-dmraid.patch b/meta-oe/recipes-extended/dmraid/files/17_convert-dmraid45-to-dmraid.patch
> new file mode 100644
> index 0000000..285db15
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/17_convert-dmraid45-to-dmraid.patch
> @@ -0,0 +1,273 @@
> +From: Stefan Bader <stefan.bader@canonical.com>
> +Date: Mon, 13 Jan 2014 14:39:29 +0100
> +Subject: Convert dmraid to use dm-raid module for RAID4 and RAID5
> +
> +The dmraid library used the dm-raid45 target for RAID4 and RAID5 sets.
> +This module however was never upstream and is suffering constant issues
> +when the Linux kernel changes.
> +Upstream introduced the dm-raid/raid module/target in 2.6.38. This can be
> +used to create device-mapper targets which use the MD RAID disciplines
> +(though not showing up in /proc/mdstat).
> +
> +Most of the table constructor arguments can be mapped, only the member
> +devices may not have an offset.
> +
> +From the old code it seems that RAID5 would always be build by set
> +elements which will not have an offset. So potentially only RAID4
> +could cause issues. That could be worked around if needed by creating
> +additional linear mappings.
> +
> +NOTE: The event code is only compile tested. But we seem to have never
> +shipped the dmraid event tool which is needed to use this feature. And
> +we are about to remove support for ISW from dmraid (in favour of mdadm)
> +anyway.
> +
> +Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
> +
> +Index: 1.0.0.rc16/lib/activate/activate.c
> +===================================================================
> +--- 1.0.0.rc16.orig/lib/activate/activate.c	2014-01-14 15:41:29.872372693 +0100
> ++++ 1.0.0.rc16/lib/activate/activate.c	2014-01-14 15:41:59.692518476 +0100
> +@@ -118,6 +118,17 @@ _dm_path_offset(struct lib_context *lc,
> + 		     valid ? path : lc->path.error, offset);
> + }
> + 
> ++/* Push metadata and data device path onto a table */
> ++static int
> ++_dm_meta_data_path(struct lib_context *lc, char **table, int valid,
> ++		   const char *meta, const char *path)
> ++
> ++{
> ++	return p_fmt(lc, table, " %s %s",
> ++		     meta ? meta : "-",
> ++		     valid ? path : lc->path.error);
> ++}
> ++
> + /*
> +  * Create dm table for linear mapping.
> +  */
> +@@ -537,9 +548,10 @@ err:
> + /* Push begin of line onto a RAID5 table. */
> + /* FIXME: persistent dirty log. */
> + static int
> +-_dm_raid45_bol(struct lib_context *lc, char **table, struct raid_set *rs,
> ++_dm_raid_bol(struct lib_context *lc, char **table, struct raid_set *rs,
> + 	       uint64_t sectors, unsigned int members)
> + {
> ++	int rc;
> + 	int need_sync = rs_need_sync(rs);
> + 	struct handler_info rebuild_drive;
> + 
> +@@ -548,13 +560,31 @@ _dm_raid45_bol(struct lib_context *lc, c
> + 	if (need_sync && !get_rebuild_drive(lc, rs, &rebuild_drive))
> + 		return 0;
> + 
> +-	return p_fmt(lc, table, "0 %U %s core 2 %u %s %s 1 %u %u %d",
> +-		     sectors, get_dm_type(lc, rs->type),
> +-		     calc_region_size(lc,
> +-				      total_sectors(lc, rs) /
> +-				      _dm_raid_devs(lc, rs, 0)),
> +-		     (need_sync) ? "sync" : "nosync", get_type(lc, rs->type),
> +-		     rs->stride, members, rebuild_drive.data.i32);
> ++	if (rebuild_drive.data.i32 < 0) {
> ++		rc = p_fmt(lc, table,
> ++		           "0 %U %s %s 4 %u %s region_size %u %u",
> ++			   sectors,
> ++			   get_dm_type(lc, rs->type),
> ++			   get_type(lc, rs->type),
> ++			   rs->stride,
> ++			   (need_sync) ? "sync" : "nosync",
> ++			   calc_region_size(lc, total_sectors(lc, rs) /
> ++					    _dm_raid_devs(lc, rs, 0)),
> ++			   members);
> ++	} else {
> ++		rc = p_fmt(lc, table,
> ++			   "0 %U %s %s 6 %u %s rebuild %d region_size %u %u",
> ++			   sectors,
> ++			   get_dm_type(lc, rs->type),
> ++			   get_type(lc, rs->type),
> ++			   rs->stride,
> ++			   (need_sync) ? "sync" : "nosync",
> ++			   rebuild_drive.data.i32,
> ++			   calc_region_size(lc, total_sectors(lc, rs) /
> ++					    _dm_raid_devs(lc, rs, 0)),
> ++			   members);
> ++	}
> ++	return rc;
> + }
> + 
> + /* Create "error target" name based on raid set name. */
> +@@ -669,7 +699,7 @@ err:
> + }
> + 
> + static int
> +-dm_raid45(struct lib_context *lc, char **table, struct raid_set *rs)
> ++dm_raid(struct lib_context *lc, char **table, struct raid_set *rs)
> + {
> + 	int ret;
> + 	uint64_t sectors = 0;
> +@@ -749,7 +779,7 @@ dm_raid45(struct lib_context *lc, char *
> + 	 */
> + 	sectors *= members - 1;
> + 
> +-	if (!_dm_raid45_bol(lc, table, rs, sectors, members))
> ++	if (!_dm_raid_bol(lc, table, rs, sectors, members))
> + 		goto err;
> + 
> + 	/* Stacked RAID sets (for RAID50 etc.) */
> +@@ -759,7 +789,8 @@ dm_raid45(struct lib_context *lc, char *
> + 		if (!(path = mkdm_path(lc, r->name)))
> + 			goto err;
> + 
> +-		ret = _dm_path_offset(lc, table, valid_rs(r), path, 0);
> ++		log_dbg(lc, "%s: raid set device %s", __func__, path);
> ++		ret = _dm_meta_data_path(lc, table, valid_rs(r), NULL, path);
> + 		dbg_free(path);
> + 
> + 		if (!ret)
> +@@ -768,8 +799,11 @@ dm_raid45(struct lib_context *lc, char *
> + 
> + 	/* Lowest level RAID devices. */
> + 	list_for_each_entry(rd, &rs->devs, devs) {
> +-		if (!_dm_path_offset(lc, table, valid_rd(rd), 
> +-				     rd->di->path, rd->offset))
> ++		if (rd->offset)
> ++			goto err;
> ++		log_dbg(lc, "%s: low level dev %s", __func__, rd->di->path);
> ++		if (!_dm_meta_data_path(lc, table, valid_rd(rd), NULL,
> ++					rd->di->path))
> + 			goto err;
> + 	}
> + 
> +@@ -802,11 +836,11 @@ static struct type_handler {
> + 	{ t_linear, dm_linear },
> + 	{ t_raid0, dm_raid0 },
> + 	{ t_raid1, dm_raid1 },
> +-	{ t_raid4, dm_raid45 },
> +-	{ t_raid5_ls, dm_raid45 },
> +-	{ t_raid5_rs, dm_raid45 },
> +-	{ t_raid5_la, dm_raid45 },
> +-	{ t_raid5_ra, dm_raid45 },
> ++	{ t_raid4, dm_raid },
> ++	{ t_raid5_ls, dm_raid },
> ++	{ t_raid5_rs, dm_raid },
> ++	{ t_raid5_la, dm_raid },
> ++	{ t_raid5_ra, dm_raid },
> + 	/* RAID types below not supported (yet) */
> + 	{ t_raid6, dm_unsup },
> + };
> +Index: 1.0.0.rc16.orig/lib/metadata/metadata.c
> +===================================================================
> +--- 1.0.0.rc16.orig/lib/metadata/metadata.c	2014-01-14 15:41:29.908372863 +0100
> ++++ 1.0.0.rc16/lib/metadata/metadata.c	2014-01-14 15:41:59.692518476 +0100
> +@@ -31,11 +31,11 @@ static const struct {
> + 	{ t_linear, "linear", "linear"},
> + 	{ t_raid0, "stripe", "striped"},
> + 	{ t_raid1, "mirror", "mirror"},
> +-	{ t_raid4, "raid4", "raid45"},
> +-	{ t_raid5_ls, "raid5_ls", "raid45"},
> +-	{ t_raid5_rs, "raid5_rs", "raid45"},
> +-	{ t_raid5_la, "raid5_la", "raid45"},
> +-	{ t_raid5_ra, "raid5_ra", "raid45"},
> ++	{ t_raid4, "raid4", "raid"},
> ++	{ t_raid5_ls, "raid5_ls", "raid"},
> ++	{ t_raid5_rs, "raid5_rs", "raid"},
> ++	{ t_raid5_la, "raid5_la", "raid"},
> ++	{ t_raid5_ra, "raid5_ra", "raid"},
> + 	{ t_raid6, "raid6", NULL},
> + };
> + 
> +Index: 1.0.0.rc16/lib/events/libdmraid-events-isw.c
> +===================================================================
> +--- 1.0.0.rc16.orig/lib/events/libdmraid-events-isw.c	2014-01-14 10:20:23.598184676 +0100
> ++++ 1.0.0.rc16/lib/events/libdmraid-events-isw.c	2014-01-14 15:41:59.696518490 +0100
> +@@ -502,7 +502,7 @@ static int _get_num_devs_from_status(cha
> + 	int ret;
> + 
> + 	for (ret = 0; *status; status++) {
> +-		if (*status == 'A' || *status == 'D')
> ++		if (*status == 'A' || *status == 'a' || *status == 'D')
> + 			ret++;
> + 	}
> + 
> +@@ -1258,8 +1258,8 @@ err:
> + 	return D_IGNORE;
> + }
> + 
> +-/* Get the raid45 device(s) that caused the trigger. */
> +-static enum disk_state_type _process_raid45_event(struct dm_task *dmt,
> ++/* Get the raid device(s) that caused the trigger. */
> ++static enum disk_state_type _process_raid_event(struct dm_task *dmt,
> + 						  char *params)
> + {
> + 	int argc, i, num_devs, dead, ret = D_INSYNC;
> +@@ -1272,32 +1272,34 @@ static enum disk_state_type _process_rai
> + 		return D_IGNORE;
> + 
> + 	/*
> +-	 * dm core parms (NOT provided in @params):  	0 976783872 raid45 
> +-	 *
> +-	 * raid45 device parms:     	3 253:4 253:5 253:6
> +-	 * raid45 device status:	1 AAA
> ++	 * raid device status:	<type> 3 AAA <synced/total> <action> <rmm>
> + 	 */
> + 
> ++	/* Skip over the raid type */
> ++	if(!dm_split_words(params, 1, 0, &p))
> ++		goto err;
> ++	p += strlen(p) + 1;
> ++
> + 	/* Number of devices. */
> + 	num_devs = _get_num_devs(params, &p);
> + 	if (!num_devs)
> + 		goto err;
> + 
> +-	/* Devices names + "1" + "AA". */
> +-	argc = num_devs + 2;
> ++	/* AAA + <completeness> <action> <resync mismatches> */
> ++	argc = 4;
> + 	args = dm_malloc(argc * sizeof(*args));
> + 	if (!args ||
> + 	    dm_split_words(p, argc, 0, args) != argc)
> + 		goto err;
> + 
> +-	dev_status_str = args[num_devs + 1];
> ++	dev_status_str = args[0];
> + 
> + 	/* Consistency check on num_devs and status chars. */
> + 	i = _get_num_devs_from_status(dev_status_str);
> + 	if (i != num_devs)
> + 		goto err;
> + 
> +-	/* Check for bad raid45 devices. */
> ++	/* Check for bad raid devices. */
> + 	for (i = 0, p = dev_status_str; i < rs->num_devs; i++) {
> + 		/* Skip past any non active/dead identifiers. */
> + 		dead = *(p++) == 'D';
> +@@ -1324,7 +1326,7 @@ static enum disk_state_type _process_rai
> + 	return ret;
> + 
> + err:
> +-	_event_cleanup_and_log(args, "raid45");
> ++	_event_cleanup_and_log(args, "raid");
> + 	return D_IGNORE;
> + }
> + 
> +@@ -1341,7 +1343,7 @@ static void _process_event(char *target_
> + 	} *proc,  process[] = {
> + 		{ "striped", _process_stripe_event, 0 },
> + 		{ "mirror",  _process_mirror_event, 1 },
> +-		{ "raid45",  _process_raid45_event, 1 },
> ++		{ "raid",    _process_raid_event, 1 },
> + 	};
> + #ifdef	_LIBDMRAID_DSO_TESTING
> + 	struct dso_raid_set *rs;
> +@@ -1352,7 +1354,7 @@ static void _process_event(char *target_
> + 	 * stripe (raid 0),
> + 	 * mirror (raid 1)
> + 	 * or
> +-	 * raid45 (raid 4/5).
> ++	 * raid   (raid 4/5).
> + 	 */
> + 	for (proc = process; proc < ARRAY_END(process); proc++) {
> + 		if (!strcmp(target_type, proc->target_type))
> diff --git a/meta-oe/recipes-extended/dmraid/files/18_ignore-too-small-devices.patch b/meta-oe/recipes-extended/dmraid/files/18_ignore-too-small-devices.patch
> new file mode 100644
> index 0000000..ab500bb
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/18_ignore-too-small-devices.patch
> @@ -0,0 +1,39 @@
> +From: Stefan Bader <stefan.bader@canonical.com>
> +Date: Tue, 14 Jan 2014 15:26:50 +0100
> +Subject: Avoid meaningless error messages while probing for meta-data
> +
> +This happens as device-mapper volumes are checked and kpartx creates
> +a 2 sector mapping if a device contains an extended partition.
> +Offsetting from the last sector backwards some probes overflow and
> +end up trying to seek to a very large offset (which fails and emits
> +a visible error message during device scanning).
> +This message is useless as such a small device would be pointless as
> +a RAID set anyway.
> +To fix this without larger changes, pragmatically ignore devices smaller
> +than 8 sectors (4K).
> +
> +Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
> +
> +Index: 1.0.0.rc16/lib/format/format.c
> +===================================================================
> +--- 1.0.0.rc16.orig/lib/format/format.c	2014-01-14 15:50:17.554952405 +0100
> ++++ 1.0.0.rc16/lib/format/format.c	2014-01-14 15:50:35.319039242 +0100
> +@@ -533,6 +533,18 @@ read_raid_dev(struct lib_context *lc,
> + 	union read_info info;
> + 
> + 	/*
> ++	 * Kpartx will create a mapping for extended partitions which only
> ++	 * covers 2 sectors. That leads to error messages when looking for
> ++	 * meta-data as moving back from the last sector results in huge
> ++	 * offsets. Quick hack here to ignore any device smaller than 4K.
> ++	 */
> ++	if (di->sectors < 8) {
> ++		log_dbg(lc, "%s: Ignore device smaller than 4K (%s)",
> ++			handler, di->path);
> ++		return NULL;
> ++	}
> ++
> ++	/*
> + 	 * In case the metadata format handler provides a special
> + 	 * metadata read function, use that. If not, allocate and
> + 	 * read size from offset.
> diff --git a/meta-oe/recipes-extended/dmraid/files/19_compile-dmraid-in-subdir-tools.patch b/meta-oe/recipes-extended/dmraid/files/19_compile-dmraid-in-subdir-tools.patch
> new file mode 100644
> index 0000000..8318248
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/19_compile-dmraid-in-subdir-tools.patch
> @@ -0,0 +1,20 @@
> +Compile dmraid in subdir tools to avoid error as follows
> +
> +  | tools/dmraid.c:12:27: fatal error: dmraid/dmraid.h: No such file or directory
> +  |  #include <dmraid/dmraid.h>
> +  |                            ^
> +
> +Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
> +
> +diff -Nurp 1.0.0.rc16.orig/Makefile.in 1.0.0.rc16/Makefile.in
> +--- 1.0.0.rc16.orig/Makefile.in	2009-09-16 16:55:23.000000000 +0800
> ++++ 1.0.0.rc16/Makefile.in	2014-11-26 16:39:54.087815059 +0800
> +@@ -10,8 +10,6 @@ VPATH = @srcdir@
> + 
> + SUBDIRS = include lib man tools
> + 
> +-TARGETS = tools/dmraid
> +-
> + include make.tmpl
> + 
> + tools: lib
> diff --git a/meta-oe/recipes-extended/dmraid/files/20_specifies-install-dir-by-DESTDIR.patch b/meta-oe/recipes-extended/dmraid/files/20_specifies-install-dir-by-DESTDIR.patch
> new file mode 100644
> index 0000000..63f46ef
> --- /dev/null
> +++ b/meta-oe/recipes-extended/dmraid/files/20_specifies-install-dir-by-DESTDIR.patch
> @@ -0,0 +1,123 @@
> +Install all target into ${D} specified by DESTDIR.
> +
> +Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
> +
> +diff -Nurp 1.0.0.rc16.org/include/Makefile.in 1.0.0.rc16/include/Makefile.in
> +--- 1.0.0.rc16.org/include/Makefile.in	2009-09-16 16:55:23.000000000 +0800
> ++++ 1.0.0.rc16/include/Makefile.in	2014-11-27 15:05:06.108660939 +0800
> +@@ -16,15 +16,15 @@ include $(top_srcdir)/make.tmpl
> + .PHONY: install_dmraid_headers remove_dmraid_headers
> + 
> + install_dmraid_headers: $(HEADERS)
> +-	@echo "Installing $(HEADERS) in $(includedir)/dmraid"
> +-	mkdir -p $(includedir)/dmraid
> +-	$(INSTALL) $(STRIP) $(HEADERS) $(includedir)/dmraid
> ++	@echo "Installing $(HEADERS) in $(DESTDIR)/$(includedir)/dmraid"
> ++	mkdir -p $(DESTDIR)$(includedir)/dmraid
> ++	$(INSTALL) $(STRIP) $(HEADERS) $(DESTDIR)/$(includedir)/dmraid
> + 
> + install: install_dmraid_headers
> + 
> + remove_dmraid_headers:
> +-	@echo "Removing $(HEADERS) from $(includedir)/dmraid"
> +-	rm -f $(includedir)/dmraid
> ++	@echo "Removing $(HEADERS) from $(DESTDIR)/$(includedir)/dmraid"
> ++	rm -f $(DESTDIR)/$(includedir)/dmraid
> + 
> + remove:        remove_dmraid_headers
> + 
> +diff -Nurp 1.0.0.rc16.org/lib/Makefile.in 1.0.0.rc16/lib/Makefile.in
> +--- 1.0.0.rc16.org/lib/Makefile.in	2014-11-27 14:49:17.212698021 +0800
> ++++ 1.0.0.rc16/lib/Makefile.in	2014-11-27 15:07:33.008655199 +0800
> +@@ -78,30 +78,30 @@ $(LIB_EVENTS_SHARED):
> + .PHONY: install_dmraid_libs remove_dmraid_libs
> + 
> + install_dmraid_libs: $(INSTALL_TARGETS)
> +-	@echo "Installing $(INSTALL_TARGETS) in $(libdir)"; \
> +-	mkdir -p $(libdir); \
> ++	@echo "Installing $(INSTALL_TARGETS) in $(DESTDIR)/$(libdir)"; \
> ++	mkdir -p $(DESTDIR)/$(libdir); \
> + 	for f in $(INSTALL_TARGETS); \
> + 	do \
> + 		n=$$(basename $${f}) ; \
> + 		if echo "$$n" | grep -q '.so$$'; then \
> + 			$(INSTALL) -m 555 $(STRIP) \
> +-				$$f $(libdir)/$${n}.@DMRAID_LIB_VERSION@; \
> +-			mkdir -p $(prefix)/lib; \
> +-			cd $(prefix)/lib/ && $(LN_S) -f /lib/$${n}.@DMRAID_LIB_VERSION@ $${n}; \
> ++				$$f $(DESTDIR)/$(libdir)/$${n}.@DMRAID_LIB_VERSION@; \
> ++			mkdir -p $(DESTDIR)/$(prefix)/lib; \
> ++			cd $(DESTDIR)/$(prefix)/lib/ && $(LN_S) -f /lib/$${n}.@DMRAID_LIB_VERSION@ $${n}; \
> + 		else \
> +-			$(INSTALL) -m 555 $(STRIP) $$f $(libdir)/$${n}; \
> ++			$(INSTALL) -m 555 $(STRIP) $$f $(DESTDIR)/$(libdir)/$${n}; \
> + 		fi \
> + 	done
> + 
> + install: install_dmraid_libs
> + 
> + remove_dmraid_libs:
> +-	@echo "Removing $(INSTALL_TARGETS) from $(libdir)"; \
> ++	@echo "Removing $(INSTALL_TARGETS) from $(DESTDIR)/$(libdir)"; \
> + 	for f in $(INSTALL_TARGETS); \
> + 	do \
> + 		n=$$(basename $${f}) ; \
> +-		rm -f $(libdir)/$${n}.@DMRAID_LIB_VERSION@; \
> +-		rm -f $(libdir)/$${n}; \
> ++		rm -f $(DESTDIR)/$(libdir)/$${n}.@DMRAID_LIB_VERSION@; \
> ++		rm -f $(DESTDIR)/$(libdir)/$${n}; \
> + 	done
> + 
> + remove:	remove_dmraid_libs
> +diff -Nurp 1.0.0.rc16.org/make.tmpl.in 1.0.0.rc16/make.tmpl.in
> +--- 1.0.0.rc16.org/make.tmpl.in	2014-11-27 14:49:17.212698021 +0800
> ++++ 1.0.0.rc16/make.tmpl.in	2014-11-27 15:02:34.940666847 +0800
> +@@ -21,8 +21,8 @@ LD_DEPS += @LD_DEPS@
> + SOFLAG += @SOFLAG@
> + 
> + # Setup directory variables
> +-prefix = $(DESTDIR)@prefix@
> +-exec_prefix = $(DESTDIR)@exec_prefix@
> ++prefix = @prefix@
> ++exec_prefix = @exec_prefix@
> + bindir = @bindir@
> + ifeq ("@KLIBC@", "no")
> +   libdir = @libdir@
> +diff -Nurp 1.0.0.rc16.org/man/Makefile.in 1.0.0.rc16/man/Makefile.in
> +--- 1.0.0.rc16.org/man/Makefile.in	2009-09-16 16:55:23.000000000 +0800
> ++++ 1.0.0.rc16/man/Makefile.in	2014-11-27 15:08:35.924652740 +0800
> +@@ -9,7 +9,7 @@ top_srcdir = @top_srcdir@
> + VPATH = @srcdir@
> + 
> + MAN8=dmraid.8 dmevent_tool.8
> +-MAN8DIR=${mandir}/man8
> ++MAN8DIR=$(DESTDIR)/${mandir}/man8
> + 
> + include $(top_srcdir)/make.tmpl
> + 
> +diff -Nurp 1.0.0.rc16.org/tools/Makefile.in 1.0.0.rc16/tools/Makefile.in
> +--- 1.0.0.rc16.org/tools/Makefile.in	2014-11-27 14:49:17.212698021 +0800
> ++++ 1.0.0.rc16/tools/Makefile.in	2014-11-27 15:10:11.408649009 +0800
> +@@ -71,17 +71,17 @@ dmevent_tool: $(top_srcdir)/lib/libdmrai
> + 	      -L$(DESTDIR)$(libdir) $(DMRAIDLIBS) $(DMEVENTTOOLLIBS) $(DMRAIDLIBS) $(LIBS) 
> + 
> + install_dmraid_tools: $(TARGETS)
> +-	@echo "Installing $(TARGETS) in $(sbindir)"; \
> +-	mkdir -p $(sbindir); \
> +-	$(INSTALL) $(STRIP) $(TARGETS) $(sbindir)
> ++	@echo "Installing $(TARGETS) in $(DESTDIR)/$(sbindir)"; \
> ++	mkdir -p $(DESTDIR)/$(sbindir); \
> ++	$(INSTALL) $(STRIP) $(TARGETS) $(DESTDIR)/$(sbindir)
> + 
> + install: install_dmraid_tools
> + 
> + remove_dmraid_tools:
> +-	@echo "Removing $(TARGETS) from $(sbindir)"; \
> ++	@echo "Removing $(TARGETS) from $(DESTDIR)/$(sbindir)"; \
> + 	for f in $(TARGETS); \
> + 	do \
> +-		rm -f $(sbindir)/$$f; \
> ++		rm -f $(DESTDIR)/$(sbindir)/$$f; \
> + 	done
> + 
> + remove:	remove_dmraid_tools
> -- 
> 1.9.1
> 
> -- 
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 188 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 1/3] [meta-oe]daemontools: add recipe
  2014-11-28  8:49 ` [PATCH 1/3] [meta-oe]daemontools: add recipe Bian Naimeng
@ 2014-11-29 14:23   ` Koen Kooi
  0 siblings, 0 replies; 11+ messages in thread
From: Koen Kooi @ 2014-11-29 14:23 UTC (permalink / raw)
  To: openembedded-devel

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Bian Naimeng schreef op 28-11-14 09:49:
> daemontools is a collection of tools for managing UNIX services.
> 
> Though daemontools is a very old tool, but it still supported by some 
> distro such as ubuntu(trusty 14.04LTS).
> 
> Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com> --- 
> ...or.h-include-errno.h-instead-of-extern-int.diff | 25 ++++++++++++ 
> ....c-.-supervise-may-be-a-symlink-if-it-s-da.diff | 47
> ++++++++++++++++++++++ .../daemontools/daemontools/cross-compile.patch
> | 45 +++++++++++++++++++++ .../daemontools/daemontools_0.76.bb
> | 47 ++++++++++++++++++++++

[..]

All the patches are missing Upstream-status tags

> +++ b/meta-oe/recipes-support/daemontools/daemontools_0.76.bb @@ -0,0
> +1,47 @@ +SUMMARY = "DJB daemontools" +DESCRIPTION = "supervise monitors
> a service. It starts the service and restarts the \ +service if it dies.
> The companion svc program stops, pauses, or restarts \ +the service on
> sysadmin request. The svstat program prints a one-line \ +status report.
> \ +multilog saves error messages to one or more logs.  It optionally
> timestamps \ +each line and, for each log, includes or excludes lines
> matching specified \ +patterns.  It automatically rotates logs to limit
> the amount of disk space \ +used.  If the disk fills up, it pauses and
> tries again, without losing any \ +data." + +SECTION = "System/Servers" 
> + +LIC_FILES_CHKSUM =
> "file://${COMMON_LICENSE_DIR}/PD;md5=b3597d12946881e13cb3b548d1173851" 
> +LICENSE = "PD" + +SRC_URI =
> "http://cr.yp.to/daemontools/${BPN}-${PV}.tar.gz \ +
> file://0001-error.h-include-errno.h-instead-of-extern-int.diff \ +
> file://0002-supervise.c-.-supervise-may-be-a-symlink-if-it-s-da.diff " + 
> +SRC_URI_append_class-target = "file://cross-compile.patch"

This one looks safe enough to apply globally, especially because it will
otherwise ignore %{CC} in the non-target cases.


> + +SRC_URI[md5sum] = "1871af2453d6e464034968a0fbcb2bfc" 
> +SRC_URI[sha256sum] =
> "a55535012b2be7a52dcd9eccabb9a198b13be50d0384143bd3b32b8710df4c1f" + +S =
> "${WORKDIR}/admin/${BPN}-${PV}" + +DEPENDS += "daemontools-native"

There's no inherit or DEPENDS, so drop the '+'

> +DEPENDS_virtclass-native = "" + +do_compile() { +    ./package/compile 
> +} + +do_install() { +    install -d ${D}/${bindir} +} + 
> +do_install_append_class-native() { +    install -m 755
> ${S}/compile/chkshsgr ${D}/${bindir} +} + 
> +do_install_append_class-target() { +    install -m755 ${S}/command/*
> ${D}/${bindir} +}

Just collapse these into a single do_install, it doesn't hurt to install
extra binaries in the -native case.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)
Comment: GPGTools - http://gpgtools.org

iD8DBQFUedbeMkyGM64RGpERAoofAKCVG4s1OQo7QCHUT5SQQHjRFI6DVgCghQH2
n8cWsbFFXW3AbKD8K+2rjt4=
=fCRL
-----END PGP SIGNATURE-----


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/3] [meta-oe] dmraid: add recipe
  2014-11-28  8:49 ` [PATCH 2/3] [meta-oe] dmraid: " Bian Naimeng
  2014-11-28 12:50   ` Martin Jansa
@ 2014-11-29 14:25   ` Koen Kooi
  2014-12-02  5:06     ` Bian, Naimeng
  1 sibling, 1 reply; 11+ messages in thread
From: Koen Kooi @ 2014-11-29 14:25 UTC (permalink / raw)
  To: openembedded-devel

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Bian Naimeng schreef op 28-11-14 09:49:
> There is no update anymore since 2010, but is still supported by some
> distro such as Ubuntu(trusty 14.04LTS).
> 
> Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com> --- 
> .../recipes-extended/dmraid/dmraid_1.0.0.rc16.bb   |  71 +++++ 
> .../dmraid/files/01_fix_broken_linking.patch       | 121 +++++++++ 
> .../dmraid/files/02_disable_dmreg.patch            | 134 ++++++++++ 
> .../files/03_fix_hyphen-used-as-minus-sign.patch   | 291
> +++++++++++++++++++++ .../dmraid/files/04_promise-add-offsets.patch
> |  13 + .../dmraid/files/05_exit_code.patch                |  22 ++ 
> .../dmraid/files/06_support_virtio_devices.patch   |  13 + 
> .../dmraid/files/07_isw-probe-hpa.patch            | 144 ++++++++++ 
> .../files/08_activate_multiple_raid_sets.patch     |  12 + 
> .../dmraid/files/09_pdc_raid10_failure..patch      |  14 + 
> .../dmraid/files/10_ddf1_lsi_persistent_name.patch |  20 ++ 
> .../files/11_fix_isw_sectors_calculation.patch     |  14 + 
> .../dmraid/files/12_jmicron_namefix.patch          |  20 ++ 
> .../dmraid/files/13_fix_testing.patch              |  24 ++ 
> .../files/14_pdc_dump_extended_metadata.patch      | 147 +++++++++++ 
> .../15_drop_p_for_partition_conditional.patch      |  31 +++ 
> .../dmraid/files/16_change-uuid.patch              |  77 ++++++ 
> .../files/17_convert-dmraid45-to-dmraid.patch      | 273
> +++++++++++++++++++ .../dmraid/files/18_ignore-too-small-devices.patch |
> 39 +++ .../files/19_compile-dmraid-in-subdir-tools.patch  |  20 ++ 
> .../20_specifies-install-dir-by-DESTDIR.patch      | 123 +++++++++ 21
> files changed, 1623 insertions(+) create mode 100644
> meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb create mode 100644
> meta-oe/recipes-extended/dmraid/files/01_fix_broken_linking.patch create
> mode 100644 meta-oe/recipes-extended/dmraid/files/02_disable_dmreg.patch 
> create mode 100644
> meta-oe/recipes-extended/dmraid/files/03_fix_hyphen-used-as-minus-sign.patch
>
> 
create mode 100644
meta-oe/recipes-extended/dmraid/files/04_promise-add-offsets.patch
> create mode 100644
> meta-oe/recipes-extended/dmraid/files/05_exit_code.patch create mode
> 100644
> meta-oe/recipes-extended/dmraid/files/06_support_virtio_devices.patch 
> create mode 100644
> meta-oe/recipes-extended/dmraid/files/07_isw-probe-hpa.patch create mode
> 100644
> meta-oe/recipes-extended/dmraid/files/08_activate_multiple_raid_sets.patch
>
> 
create mode 100644
meta-oe/recipes-extended/dmraid/files/09_pdc_raid10_failure..patch
> create mode 100644
> meta-oe/recipes-extended/dmraid/files/10_ddf1_lsi_persistent_name.patch 
> create mode 100644
> meta-oe/recipes-extended/dmraid/files/11_fix_isw_sectors_calculation.patch
>
> 
create mode 100644 meta-oe/recipes-extended/dmraid/files/12_jmicron_namefix.patch
> create mode 100644
> meta-oe/recipes-extended/dmraid/files/13_fix_testing.patch create mode
> 100644
> meta-oe/recipes-extended/dmraid/files/14_pdc_dump_extended_metadata.patch
>
> 
create mode 100644
meta-oe/recipes-extended/dmraid/files/15_drop_p_for_partition_conditional.patch
> create mode 100644
> meta-oe/recipes-extended/dmraid/files/16_change-uuid.patch create mode
> 100644
> meta-oe/recipes-extended/dmraid/files/17_convert-dmraid45-to-dmraid.patch
>
> 
create mode 100644
meta-oe/recipes-extended/dmraid/files/18_ignore-too-small-devices.patch
> create mode 100644
> meta-oe/recipes-extended/dmraid/files/19_compile-dmraid-in-subdir-tools.patch
>
> 
create mode 100644
meta-oe/recipes-extended/dmraid/files/20_specifies-install-dir-by-DESTDIR.patch
> 
> diff --git a/meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb
> b/meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb new file mode
> 100644 index 0000000..281587d --- /dev/null +++
> b/meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb @@ -0,0 +1,71 @@ 
> +SUMMARY = "dmraid (Device-mapper RAID tool and library)" +DESCRIPTION =
> "DMRAID supports RAID device discovery, RAID set activation, \ +creation,
> removal, rebuild and display of properties for ATARAID/DDF1 \ +metadata
> on Linux >= 2.4 using device-mapper." +HOMEPAGE =
> "http://people.redhat.com/heinzm/sw/dmraid" +SECTION = "System
> Environment/Base" + +SRC_URI =
> "http://people.redhat.com/heinzm/sw/dmraid/src/old/${BPN}-${PV}.tar.bz2
> \ +           file://01_fix_broken_linking.patch \ +
> file://02_disable_dmreg.patch \ +
> file://03_fix_hyphen-used-as-minus-sign.patch \ +
> file://04_promise-add-offsets.patch \ +
> file://05_exit_code.patch \ +
> file://06_support_virtio_devices.patch \ +
> file://07_isw-probe-hpa.patch \ +
> file://08_activate_multiple_raid_sets.patch \ +
> file://09_pdc_raid10_failure..patch \ +
> file://10_ddf1_lsi_persistent_name.patch \ +
> file://11_fix_isw_sectors_calculation.patch \ +
> file://12_jmicron_namefix.patch \ +           file://13_fix_testing.patch
> \ +           file://14_pdc_dump_extended_metadata.patch \ +
> file://15_drop_p_for_partition_conditional.patch \ +
> file://16_change-uuid.patch \ +
> file://17_convert-dmraid45-to-dmraid.patch \ +
> file://18_ignore-too-small-devices.patch \ +
> file://19_compile-dmraid-in-subdir-tools.patch \ +
> file://20_specifies-install-dir-by-DESTDIR.patch \ +          " + 
> +SRC_URI[md5sum] = "32832c1dfd7e72cd4355490322fca68a" +SRC_URI[sha256sum]
> = "f849c44d041f8891c61419ddf906e6e34b44948939ae9e550be662ffc2492255" + 
> +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM =
> "file://LICENSE;md5=15b3012575eeffacc3cec27a6d3cb31f" + +DEPENDS =
> "lvm2" + +S = "${WORKDIR}/${BPN}/${PV}" + +CONFIGUREOPTS = "
> --build=${BUILD_SYS} \ +                  --host=${HOST_SYS} \ +
> --target=${TARGET_SYS} \ +                  --prefix=${prefix} \ +
> --exec_prefix=${exec_prefix} \ +                  --bindir=${bindir} \ +
> --sbindir=${sbindir} \ +                  --libexecdir=${libexecdir} \ +
> --datadir=${datadir} \ +                  --sysconfdir=${sysconfdir} \ +
> --sharedstatedir=${sharedstatedir} \ +
> --localstatedir=${localstatedir} \ +                  --libdir=${libdir}
> \ +                  --includedir=${includedir} \ +
> --oldincludedir=${oldincludedir} \ +
> --infodir=${infodir} \ +                  --mandir=${mandir} \ +
> " +EXTRA_OECONF += " --disable-static_link --enable-led
> --enable-intel_led --enable-debug  "

There's no previous EXTRA_OECONF, so drop the '+', but ...

> + +do_configure() { +    ./configure ${CONFIGUREOPTS} ${EXTRA_OECONF}

... what's the point of 2 vars instead of one?
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)
Comment: GPGTools - http://gpgtools.org

iD8DBQFUeddYMkyGM64RGpERAjuVAJ9My2Jhee0WVjd9NriDkH4qRxRaDwCgiVLQ
WugXoDwFtwyhcK2LwBDhv5g=
=VX2H
-----END PGP SIGNATURE-----



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 3/3] [meta-oe] drbd: add recipe
  2014-11-28  8:49 ` [PATCH 3/3] [meta-oe] drbd: " Bian Naimeng
@ 2014-11-29 14:27   ` Koen Kooi
  2014-12-09 10:17   ` Martin Jansa
  1 sibling, 0 replies; 11+ messages in thread
From: Koen Kooi @ 2014-11-29 14:27 UTC (permalink / raw)
  To: openembedded-devel

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Bian Naimeng schreef op 28-11-14 09:49:
> DRBD is a block device which is designed to build high availability
> clusters.
> 
> Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com> --- 
> meta-oe/recipes-extended/drbd/drbd_8.4.4.bb      | 57
> ++++++++++++++++++++++++ meta-oe/recipes-extended/drbd/files/drbd.service
> | 12 +++++ 2 files changed, 69 insertions(+) create mode 100644
> meta-oe/recipes-extended/drbd/drbd_8.4.4.bb create mode 100644
> meta-oe/recipes-extended/drbd/files/drbd.service
> 
> diff --git a/meta-oe/recipes-extended/drbd/drbd_8.4.4.bb
> b/meta-oe/recipes-extended/drbd/drbd_8.4.4.bb new file mode 100644 index
> 0000000..5439bac --- /dev/null +++
> b/meta-oe/recipes-extended/drbd/drbd_8.4.4.bb @@ -0,0 +1,57 @@ +SUMMARY =
> "BD driver for Linux" +DESCRIPTION = "DRBD mirrors a block device over
> the network to another machine.\ +DRBD mirrors a block device over the
> network to another machine.\ +Think of it as networked raid 1. It is a
> building block for\ +setting up high availability (HA) clusters." + 
> +HOMEPAGE = "http://www.drbd.org/" + +SECTION = "kernel/userland" + 
> +LICENSE = "GPLv2+" + +LIC_FILES_CHKSUM =
> "file://COPYING;md5=5574c6965ae5f583e55880e397fbb018" + +PR = "r0" +#PR =
> "r1001"

PR isn't used anumore

> + +SRC_URI = "http://oss.linbit.com/${BPN}/8.4/${BPN}-${PV}.tar.gz \ +
> file://drbd.service \ +          " + +#SRC_URI[md5sum] =
> "ef4e6db51cda1898c597a3d61fcb9e1e" +#SRC_URI[sha256sum] =
> "7c1558459614fbdc1b3209f1b9e5767a443d9bdfe681a49c652b5f392799d58d" +
Drop the commented lines

> +SRC_URI[md5sum] = "b51815343c1a9151e2936b3b97520388" +SRC_URI[sha256sum]
> = "a056219c5c23b079c3354179f7a1b9f55d47e573a4cd3178f2ef4c15604288f0" + 
> +inherit autotools-brokensep systemd + +EXTRA_OECONF = "--with-utils
> \ +                --without-km                  \ +
> --with-initdir=/etc/init.d    \ +                --without-pacemaker
> \ +                --without-rgmanager           \ +
> --without-bashcompletion      \ +                --with-distro debian
> \ +               " + +do_configure (){ +    oe_runconf +}

Please add a comment why the stock do_configure doesn't work. And at least
add a 'gnu-configize' to make it work on new architectures.

> + +SYSTEMD_SERVICE_${PN} = "drbd.service" +SYSTEMD_AUTO_ENABLE =
> "disable"

Move that below do_install

> + +do_install_append() { +    if
> ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then +
> install -d ${D}/${systemd_unitdir}/system +        install -m 644
> ${WORKDIR}/drbd.service ${D}/${systemd_unitdir}/system +        install
> -d ${D}/${libexecdir} +        install -m 755 ${D}/etc/init.d/drbd
> ${D}/${libexecdir}/drbd-helper +    fi +} + +FILES_${PN} += "run" 
> +FILES_${PN} += "${base_libdir}/drbd" +FILES_${PN}-dbg +=
> "${base_libdir}/drbd/.debug" diff --git
> a/meta-oe/recipes-extended/drbd/files/drbd.service
> b/meta-oe/recipes-extended/drbd/files/drbd.service new file mode 100644 
> index 0000000..22f853f --- /dev/null +++
> b/meta-oe/recipes-extended/drbd/files/drbd.service @@ -0,0 +1,12 @@ 
> +[Unit] +Description=DRBD Service +After=network.target + +[Service] 
> +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/lib/drbd/drbd-helper
> start +ExecStop=/usr/lib/drbd/drbd-helper stop

Hardcoded paths


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)
Comment: GPGTools - http://gpgtools.org

iD8DBQFUedfIMkyGM64RGpERAnGtAJ9Js9FqtaeaPcfOd/l6nzWMwnEkCgCdFYtk
BFdk3t9Rv7jnV78/C+wNmXw=
=wZiM
-----END PGP SIGNATURE-----



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 2/3] [meta-oe] dmraid: add recipe
  2014-11-29 14:25   ` Koen Kooi
@ 2014-12-02  5:06     ` Bian, Naimeng
  0 siblings, 0 replies; 11+ messages in thread
From: Bian, Naimeng @ 2014-12-02  5:06 UTC (permalink / raw)
  To: openembedded-devel



> -----Original Message-----
> From: openembedded-devel-bounces@lists.openembedded.org
> [mailto:openembedded-devel-bounces@lists.openembedded.org] On Behalf Of Koen
> Kooi
> Sent: Saturday, November 29, 2014 10:25 PM
> To: openembedded-devel@lists.openembedded.org
> Subject: Re: [oe] [PATCH 2/3] [meta-oe] dmraid: add recipe
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Bian Naimeng schreef op 28-11-14 09:49:
> > There is no update anymore since 2010, but is still supported by some
> > distro such as Ubuntu(trusty 14.04LTS).
> >
> > Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com> ---
> > .../recipes-extended/dmraid/dmraid_1.0.0.rc16.bb   |  71 +++++
> > .../dmraid/files/01_fix_broken_linking.patch       | 121 +++++++++
> > .../dmraid/files/02_disable_dmreg.patch            | 134 ++++++++++
> > .../files/03_fix_hyphen-used-as-minus-sign.patch   | 291
> > +++++++++++++++++++++ .../dmraid/files/04_promise-add-offsets.patch
> > |  13 + .../dmraid/files/05_exit_code.patch                |  22 ++
> > .../dmraid/files/06_support_virtio_devices.patch   |  13 +
> > .../dmraid/files/07_isw-probe-hpa.patch            | 144 ++++++++++
> > .../files/08_activate_multiple_raid_sets.patch     |  12 +
> > .../dmraid/files/09_pdc_raid10_failure..patch      |  14 +
> > .../dmraid/files/10_ddf1_lsi_persistent_name.patch |  20 ++
> > .../files/11_fix_isw_sectors_calculation.patch     |  14 +
> > .../dmraid/files/12_jmicron_namefix.patch          |  20 ++
> > .../dmraid/files/13_fix_testing.patch              |  24 ++
> > .../files/14_pdc_dump_extended_metadata.patch      | 147 +++++++++++
> > .../15_drop_p_for_partition_conditional.patch      |  31 +++
> > .../dmraid/files/16_change-uuid.patch              |  77 ++++++
> > .../files/17_convert-dmraid45-to-dmraid.patch      | 273
> > +++++++++++++++++++ .../dmraid/files/18_ignore-too-small-devices.patch
> > +++++++++++++++++++ |
> > 39 +++ .../files/19_compile-dmraid-in-subdir-tools.patch  |  20 ++
> > .../20_specifies-install-dir-by-DESTDIR.patch      | 123 +++++++++ 21
> > files changed, 1623 insertions(+) create mode 100644
> > meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb create mode
> > 100644
> > meta-oe/recipes-extended/dmraid/files/01_fix_broken_linking.patch
> > create mode 100644
> > meta-oe/recipes-extended/dmraid/files/02_disable_dmreg.patch
> > create mode 100644
> > meta-oe/recipes-extended/dmraid/files/03_fix_hyphen-used-as-minus-sign
> > .patch
> >
> >
> create mode 100644
> meta-oe/recipes-extended/dmraid/files/04_promise-add-offsets.patch
> > create mode 100644
> > meta-oe/recipes-extended/dmraid/files/05_exit_code.patch create mode
> > 100644
> > meta-oe/recipes-extended/dmraid/files/06_support_virtio_devices.patch
> > create mode 100644
> > meta-oe/recipes-extended/dmraid/files/07_isw-probe-hpa.patch create
> > mode
> > 100644
> > meta-oe/recipes-extended/dmraid/files/08_activate_multiple_raid_sets.p
> > atch
> >
> >
> create mode 100644
> meta-oe/recipes-extended/dmraid/files/09_pdc_raid10_failure..patch
> > create mode 100644
> > meta-oe/recipes-extended/dmraid/files/10_ddf1_lsi_persistent_name.patc
> > h
> > create mode 100644
> > meta-oe/recipes-extended/dmraid/files/11_fix_isw_sectors_calculation.p
> > atch
> >
> >
> create mode 100644
> meta-oe/recipes-extended/dmraid/files/12_jmicron_namefix.patch
> > create mode 100644
> > meta-oe/recipes-extended/dmraid/files/13_fix_testing.patch create mode
> > 100644
> > meta-oe/recipes-extended/dmraid/files/14_pdc_dump_extended_metadata.pa
> > tch
> >
> >
> create mode 100644
> meta-oe/recipes-extended/dmraid/files/15_drop_p_for_partition_conditional.
> patch
> > create mode 100644
> > meta-oe/recipes-extended/dmraid/files/16_change-uuid.patch create mode
> > 100644
> > meta-oe/recipes-extended/dmraid/files/17_convert-dmraid45-to-dmraid.pa
> > tch
> >
> >
> create mode 100644
> meta-oe/recipes-extended/dmraid/files/18_ignore-too-small-devices.patch
> > create mode 100644
> > meta-oe/recipes-extended/dmraid/files/19_compile-dmraid-in-subdir-tool
> > s.patch
> >
> >
> create mode 100644
> meta-oe/recipes-extended/dmraid/files/20_specifies-install-dir-by-DESTDIR.
> patch
> >
> > diff --git a/meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb
> > b/meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb new file mode
> > 100644 index 0000000..281587d --- /dev/null +++
> > b/meta-oe/recipes-extended/dmraid/dmraid_1.0.0.rc16.bb @@ -0,0 +1,71
> > @@
> > +SUMMARY = "dmraid (Device-mapper RAID tool and library)" +DESCRIPTION
> > +=
> > "DMRAID supports RAID device discovery, RAID set activation, \
> > +creation, removal, rebuild and display of properties for ATARAID/DDF1
> > \ +metadata on Linux >= 2.4 using device-mapper." +HOMEPAGE =
> > "http://people.redhat.com/heinzm/sw/dmraid" +SECTION = "System
> > Environment/Base" + +SRC_URI =
> > "http://people.redhat.com/heinzm/sw/dmraid/src/old/${BPN}-${PV}.tar.bz2
> > \ +           file://01_fix_broken_linking.patch \ +
> > file://02_disable_dmreg.patch \ +
> > file://03_fix_hyphen-used-as-minus-sign.patch \ +
> > file://04_promise-add-offsets.patch \ + file://05_exit_code.patch \ +
> > file://06_support_virtio_devices.patch \ +
> > file://07_isw-probe-hpa.patch \ +
> > file://08_activate_multiple_raid_sets.patch \ +
> > file://09_pdc_raid10_failure..patch \ +
> > file://10_ddf1_lsi_persistent_name.patch \ +
> > file://11_fix_isw_sectors_calculation.patch \ +
> > file://12_jmicron_namefix.patch \ +           file://13_fix_testing.patch
> > \ +           file://14_pdc_dump_extended_metadata.patch \ +
> > file://15_drop_p_for_partition_conditional.patch \ +
> > file://16_change-uuid.patch \ +
> > file://17_convert-dmraid45-to-dmraid.patch \ +
> > file://18_ignore-too-small-devices.patch \ +
> > file://19_compile-dmraid-in-subdir-tools.patch \ +
> > file://20_specifies-install-dir-by-DESTDIR.patch \ +          " +
> > +SRC_URI[md5sum] = "32832c1dfd7e72cd4355490322fca68a"
> > ++SRC_URI[sha256sum]
> > = "f849c44d041f8891c61419ddf906e6e34b44948939ae9e550be662ffc2492255" +
> > +LICENSE = "GPLv2+" +LIC_FILES_CHKSUM =
> > "file://LICENSE;md5=15b3012575eeffacc3cec27a6d3cb31f" + +DEPENDS =
> > "lvm2" + +S = "${WORKDIR}/${BPN}/${PV}" + +CONFIGUREOPTS = "
> > --build=${BUILD_SYS} \ +                  --host=${HOST_SYS} \ +
> > --target=${TARGET_SYS} \ +                  --prefix=${prefix} \ +
> > --exec_prefix=${exec_prefix} \ +                  --bindir=${bindir} \ +
> > --sbindir=${sbindir} \ +                  --libexecdir=${libexecdir} \ +
> > --datadir=${datadir} \ +                  --sysconfdir=${sysconfdir} \ +
> > --sharedstatedir=${sharedstatedir} \ +
> > --localstatedir=${localstatedir} \ +                  --libdir=${libdir}
> > \ +                  --includedir=${includedir} \ +
> > --oldincludedir=${oldincludedir} \ +
> > --infodir=${infodir} \ +                  --mandir=${mandir} \ +
> > " +EXTRA_OECONF += " --disable-static_link --enable-led
> > --enable-intel_led --enable-debug  "
> 
> There's no previous EXTRA_OECONF, so drop the '+', but ...
> 
> > + +do_configure() { +    ./configure ${CONFIGUREOPTS} ${EXTRA_OECONF}
> 
> ... what's the point of 2 vars instead of one?

Thanks for your review.
Fixed it in my V2 patch.

Thanks
 Bian


> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.5 (Darwin)
> Comment: GPGTools - http://gpgtools.org
> 
> iD8DBQFUeddYMkyGM64RGpERAjuVAJ9My2Jhee0WVjd9NriDkH4qRxRaDwCgiVLQ
> WugXoDwFtwyhcK2LwBDhv5g=
> =VX2H
> -----END PGP SIGNATURE-----
> 
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 3/3] [meta-oe] drbd: add recipe
  2014-11-28  8:49 ` [PATCH 3/3] [meta-oe] drbd: " Bian Naimeng
  2014-11-29 14:27   ` Koen Kooi
@ 2014-12-09 10:17   ` Martin Jansa
  2014-12-10  8:36     ` Bian, Naimeng
  1 sibling, 1 reply; 11+ messages in thread
From: Martin Jansa @ 2014-12-09 10:17 UTC (permalink / raw)
  To: openembedded-devel

[-- Attachment #1: Type: text/plain, Size: 3882 bytes --]

On Fri, Nov 28, 2014 at 04:49:45PM +0800, Bian Naimeng wrote:
> DRBD is a block device which is designed to build high availability clusters.
> 
> Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
> ---
>  meta-oe/recipes-extended/drbd/drbd_8.4.4.bb      | 57 ++++++++++++++++++++++++
>  meta-oe/recipes-extended/drbd/files/drbd.service | 12 +++++
>  2 files changed, 69 insertions(+)
>  create mode 100644 meta-oe/recipes-extended/drbd/drbd_8.4.4.bb
>  create mode 100644 meta-oe/recipes-extended/drbd/files/drbd.service

Causes 2 new QA warnings:

drbd-8.4.4: drbd requires /bin/bash, /usr/bin/perl, but no providers in
its RDEPENDS [file-rdeps]
drbd-8.4.4: drbd requires /usr/bin/perl, /bin/bash, but no providers in
its RDEPENDS [file-rdeps]

> 
> diff --git a/meta-oe/recipes-extended/drbd/drbd_8.4.4.bb b/meta-oe/recipes-extended/drbd/drbd_8.4.4.bb
> new file mode 100644
> index 0000000..5439bac
> --- /dev/null
> +++ b/meta-oe/recipes-extended/drbd/drbd_8.4.4.bb
> @@ -0,0 +1,57 @@
> +SUMMARY = "BD driver for Linux"
> +DESCRIPTION = "DRBD mirrors a block device over the network to another machine.\
> +DRBD mirrors a block device over the network to another machine.\
> +Think of it as networked raid 1. It is a building block for\
> +setting up high availability (HA) clusters."
> +
> +HOMEPAGE = "http://www.drbd.org/"
> +
> +SECTION = "kernel/userland"
> +
> +LICENSE = "GPLv2+"
> +
> +LIC_FILES_CHKSUM = "file://COPYING;md5=5574c6965ae5f583e55880e397fbb018"
> +
> +PR = "r0"
> +#PR = "r1001"
> +
> +SRC_URI = "http://oss.linbit.com/${BPN}/8.4/${BPN}-${PV}.tar.gz \
> +           file://drbd.service \
> +          "
> +
> +#SRC_URI[md5sum] = "ef4e6db51cda1898c597a3d61fcb9e1e"
> +#SRC_URI[sha256sum] = "7c1558459614fbdc1b3209f1b9e5767a443d9bdfe681a49c652b5f392799d58d"
> +
> +SRC_URI[md5sum] = "b51815343c1a9151e2936b3b97520388"
> +SRC_URI[sha256sum] = "a056219c5c23b079c3354179f7a1b9f55d47e573a4cd3178f2ef4c15604288f0"
> +
> +inherit autotools-brokensep systemd
> +
> +EXTRA_OECONF = "--with-utils                  \
> +                --without-km                  \
> +                --with-initdir=/etc/init.d    \
> +                --without-pacemaker           \
> +                --without-rgmanager           \
> +                --without-bashcompletion      \
> +                --with-distro debian          \
> +               "
> +
> +do_configure (){
> +    oe_runconf
> +}
> +
> +SYSTEMD_SERVICE_${PN} = "drbd.service"
> +SYSTEMD_AUTO_ENABLE = "disable"
> +
> +do_install_append() {
> +    if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)}; then
> +        install -d ${D}/${systemd_unitdir}/system
> +        install -m 644 ${WORKDIR}/drbd.service ${D}/${systemd_unitdir}/system
> +        install -d ${D}/${libexecdir}
> +        install -m 755 ${D}/etc/init.d/drbd ${D}/${libexecdir}/drbd-helper
> +    fi
> +}
> +
> +FILES_${PN} += "run"
> +FILES_${PN} += "${base_libdir}/drbd"
> +FILES_${PN}-dbg += "${base_libdir}/drbd/.debug"
> diff --git a/meta-oe/recipes-extended/drbd/files/drbd.service b/meta-oe/recipes-extended/drbd/files/drbd.service
> new file mode 100644
> index 0000000..22f853f
> --- /dev/null
> +++ b/meta-oe/recipes-extended/drbd/files/drbd.service
> @@ -0,0 +1,12 @@
> +[Unit]
> +Description=DRBD Service
> +After=network.target
> +
> +[Service]
> +Type=oneshot
> +RemainAfterExit=yes
> +ExecStart=/usr/lib/drbd/drbd-helper start
> +ExecStop=/usr/lib/drbd/drbd-helper stop
> +
> +[Install]
> +WantedBy=multi-user.target
> -- 
> 1.9.1
> 
> -- 
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 188 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 3/3] [meta-oe] drbd: add recipe
  2014-12-09 10:17   ` Martin Jansa
@ 2014-12-10  8:36     ` Bian, Naimeng
  0 siblings, 0 replies; 11+ messages in thread
From: Bian, Naimeng @ 2014-12-10  8:36 UTC (permalink / raw)
  To: openembedded-devel

> -----Original Message-----
> From: openembedded-devel-bounces@lists.openembedded.org
> [mailto:openembedded-devel-bounces@lists.openembedded.org] On Behalf Of
> Martin Jansa
> Sent: Tuesday, December 09, 2014 6:17 PM
> To: openembedded-devel@lists.openembedded.org
> Subject: Re: [oe] [PATCH 3/3] [meta-oe] drbd: add recipe
> 
> On Fri, Nov 28, 2014 at 04:49:45PM +0800, Bian Naimeng wrote:
> > DRBD is a block device which is designed to build high availability clusters.
> >
> > Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
> > ---
> >  meta-oe/recipes-extended/drbd/drbd_8.4.4.bb      | 57
> ++++++++++++++++++++++++
> >  meta-oe/recipes-extended/drbd/files/drbd.service | 12 +++++
> >  2 files changed, 69 insertions(+)
> >  create mode 100644 meta-oe/recipes-extended/drbd/drbd_8.4.4.bb
> >  create mode 100644 meta-oe/recipes-extended/drbd/files/drbd.service
> 
> Causes 2 new QA warnings:
> 
> drbd-8.4.4: drbd requires /bin/bash, /usr/bin/perl, but no providers in its
> RDEPENDS [file-rdeps]
> drbd-8.4.4: drbd requires /usr/bin/perl, /bin/bash, but no providers in its
> RDEPENDS [file-rdeps]
> 

Hi Martin, Joe

Will fix it in the next version.

As discussed at yocto@yoctoproject.org. 
https://lists.yoctoproject.org/pipermail/yocto/2014-December/022542.html
I will move drbd from meta-oe to meta-networking.

Thanks 
 Bian

> >
> > diff --git a/meta-oe/recipes-extended/drbd/drbd_8.4.4.bb
> > b/meta-oe/recipes-extended/drbd/drbd_8.4.4.bb
> > new file mode 100644
> > index 0000000..5439bac
> > --- /dev/null
> > +++ b/meta-oe/recipes-extended/drbd/drbd_8.4.4.bb
> > @@ -0,0 +1,57 @@
> > +SUMMARY = "BD driver for Linux"
> > +DESCRIPTION = "DRBD mirrors a block device over the network to
> > +another machine.\ DRBD mirrors a block device over the network to
> > +another machine.\ Think of it as networked raid 1. It is a building
> > +block for\ setting up high availability (HA) clusters."
> > +
> > +HOMEPAGE = "http://www.drbd.org/"
> > +
> > +SECTION = "kernel/userland"
> > +
> > +LICENSE = "GPLv2+"
> > +
> > +LIC_FILES_CHKSUM = "file://COPYING;md5=5574c6965ae5f583e55880e397fbb018"
> > +
> > +PR = "r0"
> > +#PR = "r1001"
> > +
> > +SRC_URI = "http://oss.linbit.com/${BPN}/8.4/${BPN}-${PV}.tar.gz \
> > +           file://drbd.service \
> > +          "
> > +
> > +#SRC_URI[md5sum] = "ef4e6db51cda1898c597a3d61fcb9e1e"
> > +#SRC_URI[sha256sum] =
> "7c1558459614fbdc1b3209f1b9e5767a443d9bdfe681a49c652b5f392799d58d"
> > +
> > +SRC_URI[md5sum] = "b51815343c1a9151e2936b3b97520388"
> > +SRC_URI[sha256sum] =
> "a056219c5c23b079c3354179f7a1b9f55d47e573a4cd3178f2ef4c15604288f0"
> > +
> > +inherit autotools-brokensep systemd
> > +
> > +EXTRA_OECONF = "--with-utils                  \
> > +                --without-km                  \
> > +                --with-initdir=/etc/init.d    \
> > +                --without-pacemaker           \
> > +                --without-rgmanager           \
> > +                --without-bashcompletion      \
> > +                --with-distro debian          \
> > +               "
> > +
> > +do_configure (){
> > +    oe_runconf
> > +}
> > +
> > +SYSTEMD_SERVICE_${PN} = "drbd.service"
> > +SYSTEMD_AUTO_ENABLE = "disable"
> > +
> > +do_install_append() {
> > +    if ${@base_contains('DISTRO_FEATURES','systemd','true','false',d)};
> then
> > +        install -d ${D}/${systemd_unitdir}/system
> > +        install -m 644 ${WORKDIR}/drbd.service
> ${D}/${systemd_unitdir}/system
> > +        install -d ${D}/${libexecdir}
> > +        install -m 755 ${D}/etc/init.d/drbd ${D}/${libexecdir}/drbd-helper
> > +    fi
> > +}
> > +
> > +FILES_${PN} += "run"
> > +FILES_${PN} += "${base_libdir}/drbd"
> > +FILES_${PN}-dbg += "${base_libdir}/drbd/.debug"
> > diff --git a/meta-oe/recipes-extended/drbd/files/drbd.service
> > b/meta-oe/recipes-extended/drbd/files/drbd.service
> > new file mode 100644
> > index 0000000..22f853f
> > --- /dev/null
> > +++ b/meta-oe/recipes-extended/drbd/files/drbd.service
> > @@ -0,0 +1,12 @@
> > +[Unit]
> > +Description=DRBD Service
> > +After=network.target
> > +
> > +[Service]
> > +Type=oneshot
> > +RemainAfterExit=yes
> > +ExecStart=/usr/lib/drbd/drbd-helper start
> > +ExecStop=/usr/lib/drbd/drbd-helper stop
> > +
> > +[Install]
> > +WantedBy=multi-user.target
> > --
> > 1.9.1
> >
> > --
> > _______________________________________________
> > Openembedded-devel mailing list
> > Openembedded-devel@lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-devel
> 
> --
> Martin 'JaMa' Jansa     jabber: Martin.Jansa@gmail.com

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2014-12-10  8:36 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-28  8:49 [PATCH 0/3] add some recipes Bian Naimeng
2014-11-28  8:49 ` [PATCH 1/3] [meta-oe]daemontools: add recipe Bian Naimeng
2014-11-29 14:23   ` Koen Kooi
2014-11-28  8:49 ` [PATCH 2/3] [meta-oe] dmraid: " Bian Naimeng
2014-11-28 12:50   ` Martin Jansa
2014-11-29 14:25   ` Koen Kooi
2014-12-02  5:06     ` Bian, Naimeng
2014-11-28  8:49 ` [PATCH 3/3] [meta-oe] drbd: " Bian Naimeng
2014-11-29 14:27   ` Koen Kooi
2014-12-09 10:17   ` Martin Jansa
2014-12-10  8:36     ` Bian, Naimeng

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.