* [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
* 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
* [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
* 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 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 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@lists.openembedded.org > -----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
* [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 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 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@lists.openembedded.org > -----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.