* [PATCH 1/4] mdadm: fix util-linux-lsblk ptest dependency
@ 2023-06-29 14:18 ovidiu.panait
2023-06-29 14:18 ` [PATCH 2/4] mdadm: fix 07revert-inplace ptest ovidiu.panait
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: ovidiu.panait @ 2023-06-29 14:18 UTC (permalink / raw)
To: openembedded-core
From: Ovidiu Panait <ovidiu.panait@windriver.com>
Trying to run mdadm-ptest in a core-image-minimal build will result in:
root@qemux86-64:~# ptest-runner mdadm
START: ptest-runner
BEGIN: /usr/lib/mdadm/ptest
which: no lsblk in (/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin)
lsblk command not found!
DURATION: 0
END: /usr/lib/mdadm/ptest
2023-06-28T10:14
STOP: ptest-runner
TOTAL: 1 FAIL: 0
To fix this, add util-linux-lsblk to RDEPENDS and remove util-linux from
RRECOMMENDS.
Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
---
meta/recipes-extended/mdadm/mdadm_4.2.bb | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/meta/recipes-extended/mdadm/mdadm_4.2.bb b/meta/recipes-extended/mdadm/mdadm_4.2.bb
index 14de9d88c2..0a122b0b01 100644
--- a/meta/recipes-extended/mdadm/mdadm_4.2.bb
+++ b/meta/recipes-extended/mdadm/mdadm_4.2.bb
@@ -101,10 +101,9 @@ do_install_ptest() {
}
RDEPENDS:${PN} += "bash"
-RDEPENDS:${PN}-ptest += "bash e2fsprogs-mke2fs"
+RDEPENDS:${PN}-ptest += "bash e2fsprogs-mke2fs util-linux-lsblk"
RRECOMMENDS:${PN}-ptest += " \
coreutils \
- util-linux \
kernel-module-loop \
kernel-module-linear \
kernel-module-raid0 \
--
2.39.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH 2/4] mdadm: fix 07revert-inplace ptest 2023-06-29 14:18 [PATCH 1/4] mdadm: fix util-linux-lsblk ptest dependency ovidiu.panait @ 2023-06-29 14:18 ` ovidiu.panait 2023-06-29 14:18 ` [PATCH 3/4] mdadm: fix segfaults when running ptests ovidiu.panait ` (2 subsequent siblings) 3 siblings, 0 replies; 8+ messages in thread From: ovidiu.panait @ 2023-06-29 14:18 UTC (permalink / raw) To: openembedded-core From: Ovidiu Panait <ovidiu.panait@windriver.com> Testcase 07revert-inplace fails if strace is not installed: ... strace -o /tmp/str ./mdadm -A /dev/md0 --update=revert-reshape /dev/<...> tests/07revert-inplace: line 40: strace: command not found Add strace to mdadm-ptest RDEPENDS to make sure the testcase passes even with a core-image-minimal build. Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> --- meta/recipes-extended/mdadm/mdadm_4.2.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta/recipes-extended/mdadm/mdadm_4.2.bb b/meta/recipes-extended/mdadm/mdadm_4.2.bb index 0a122b0b01..a5844b6726 100644 --- a/meta/recipes-extended/mdadm/mdadm_4.2.bb +++ b/meta/recipes-extended/mdadm/mdadm_4.2.bb @@ -101,7 +101,7 @@ do_install_ptest() { } RDEPENDS:${PN} += "bash" -RDEPENDS:${PN}-ptest += "bash e2fsprogs-mke2fs util-linux-lsblk" +RDEPENDS:${PN}-ptest += "bash e2fsprogs-mke2fs util-linux-lsblk strace" RRECOMMENDS:${PN}-ptest += " \ coreutils \ kernel-module-loop \ -- 2.39.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/4] mdadm: fix segfaults when running ptests 2023-06-29 14:18 [PATCH 1/4] mdadm: fix util-linux-lsblk ptest dependency ovidiu.panait 2023-06-29 14:18 ` [PATCH 2/4] mdadm: fix 07revert-inplace ptest ovidiu.panait @ 2023-06-29 14:18 ` ovidiu.panait 2023-06-29 14:18 ` [PATCH 4/4] mdadm: skip running known broken ptests ovidiu.panait 2023-07-02 21:44 ` [OE-core] [PATCH 1/4] mdadm: fix util-linux-lsblk ptest dependency Alexandre Belloni 3 siblings, 0 replies; 8+ messages in thread From: ovidiu.panait @ 2023-06-29 14:18 UTC (permalink / raw) To: openembedded-core From: Ovidiu Panait <ovidiu.panait@windriver.com> Currently, some segfaults are reported when running ptest: mdadm[12333]: segfault at 0 ip 00007fe855924060 sp 00007ffc4d6caf88 error 4 in libc.so.6[7f) Code: d2 0f 84 b7 0f 00 00 48 83 fa 01 0f 84 b9 0f 00 00 49 89 d3 89 f1 89 f8 48 83 e1 3f 4f Backport the following upstream commits to fix them: 679bd9508a30 ("DDF: Cleanup validate_geometry_ddf_container()") 2b93288a5650 ("DDF: Fix NULL pointer dereference in validate_geometry_ddf()") 548e9b916f86 ("mdadm/Grow: Fix use after close bug by closing after fork") 9ae62977b51d ("monitor: Avoid segfault when calling NULL get_bad_blocks") The fixes are part of the "Bug fixes and testing improvments" patchset [1]. [1] https://www.spinics.net/lists/raid/msg70621.html Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> --- ...anup-validate_geometry_ddf_container.patch | 148 ++++++++++++++++++ ...nter-dereference-in-validate_geometr.patch | 56 +++++++ ...se-after-close-bug-by-closing-after-.patch | 91 +++++++++++ ...gfault-when-calling-NULL-get_bad_blo.patch | 42 +++++ meta/recipes-extended/mdadm/mdadm_4.2.bb | 4 + 5 files changed, 341 insertions(+) create mode 100644 meta/recipes-extended/mdadm/files/0001-DDF-Cleanup-validate_geometry_ddf_container.patch create mode 100644 meta/recipes-extended/mdadm/files/0002-DDF-Fix-NULL-pointer-dereference-in-validate_geometr.patch create mode 100644 meta/recipes-extended/mdadm/files/0003-mdadm-Grow-Fix-use-after-close-bug-by-closing-after-.patch create mode 100644 meta/recipes-extended/mdadm/files/0004-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch diff --git a/meta/recipes-extended/mdadm/files/0001-DDF-Cleanup-validate_geometry_ddf_container.patch b/meta/recipes-extended/mdadm/files/0001-DDF-Cleanup-validate_geometry_ddf_container.patch new file mode 100644 index 0000000000..cea435f83b --- /dev/null +++ b/meta/recipes-extended/mdadm/files/0001-DDF-Cleanup-validate_geometry_ddf_container.patch @@ -0,0 +1,148 @@ +From ca458f4dcc4de9403298f67543466ce4bbc8f8ae Mon Sep 17 00:00:00 2001 +From: Logan Gunthorpe <logang@deltatee.com> +Date: Wed, 22 Jun 2022 14:25:07 -0600 +Subject: [PATCH 1/4] DDF: Cleanup validate_geometry_ddf_container() + +Move the function up so that the function declaration is not necessary +and remove the unused arguments to the function. + +No functional changes are intended but will help with a bug fix in the +next patch. + +Signed-off-by: Logan Gunthorpe <logang@deltatee.com> +Acked-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> +Signed-off-by: Jes Sorensen <jes@trained-monkey.org> + +Upstream-Status: Backport + +Reference to upstream patch: +https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=679bd9508a30 + +Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> +--- + super-ddf.c | 88 ++++++++++++++++++++++++----------------------------- + 1 file changed, 39 insertions(+), 49 deletions(-) + +diff --git a/super-ddf.c b/super-ddf.c +index 3f304cd..65cf727 100644 +--- a/super-ddf.c ++++ b/super-ddf.c +@@ -503,13 +503,6 @@ struct ddf_super { + static int load_super_ddf_all(struct supertype *st, int fd, + void **sbp, char *devname); + static int get_svd_state(const struct ddf_super *, const struct vcl *); +-static int +-validate_geometry_ddf_container(struct supertype *st, +- int level, int layout, int raiddisks, +- int chunk, unsigned long long size, +- unsigned long long data_offset, +- char *dev, unsigned long long *freesize, +- int verbose); + + static int validate_geometry_ddf_bvd(struct supertype *st, + int level, int layout, int raiddisks, +@@ -3322,6 +3315,42 @@ static int reserve_space(struct supertype *st, int raiddisks, + return 1; + } + ++static int ++validate_geometry_ddf_container(struct supertype *st, ++ int level, int raiddisks, ++ unsigned long long data_offset, ++ char *dev, unsigned long long *freesize, ++ int verbose) ++{ ++ int fd; ++ unsigned long long ldsize; ++ ++ if (level != LEVEL_CONTAINER) ++ return 0; ++ if (!dev) ++ return 1; ++ ++ fd = dev_open(dev, O_RDONLY|O_EXCL); ++ if (fd < 0) { ++ if (verbose) ++ pr_err("ddf: Cannot open %s: %s\n", ++ dev, strerror(errno)); ++ return 0; ++ } ++ if (!get_dev_size(fd, dev, &ldsize)) { ++ close(fd); ++ return 0; ++ } ++ close(fd); ++ if (freesize) { ++ *freesize = avail_size_ddf(st, ldsize >> 9, INVALID_SECTORS); ++ if (*freesize == 0) ++ return 0; ++ } ++ ++ return 1; ++} ++ + static int validate_geometry_ddf(struct supertype *st, + int level, int layout, int raiddisks, + int *chunk, unsigned long long size, +@@ -3347,11 +3376,9 @@ static int validate_geometry_ddf(struct supertype *st, + level = LEVEL_CONTAINER; + if (level == LEVEL_CONTAINER) { + /* Must be a fresh device to add to a container */ +- return validate_geometry_ddf_container(st, level, layout, +- raiddisks, *chunk, +- size, data_offset, dev, +- freesize, +- verbose); ++ return validate_geometry_ddf_container(st, level, raiddisks, ++ data_offset, dev, ++ freesize, verbose); + } + + if (!dev) { +@@ -3449,43 +3476,6 @@ static int validate_geometry_ddf(struct supertype *st, + return 1; + } + +-static int +-validate_geometry_ddf_container(struct supertype *st, +- int level, int layout, int raiddisks, +- int chunk, unsigned long long size, +- unsigned long long data_offset, +- char *dev, unsigned long long *freesize, +- int verbose) +-{ +- int fd; +- unsigned long long ldsize; +- +- if (level != LEVEL_CONTAINER) +- return 0; +- if (!dev) +- return 1; +- +- fd = dev_open(dev, O_RDONLY|O_EXCL); +- if (fd < 0) { +- if (verbose) +- pr_err("ddf: Cannot open %s: %s\n", +- dev, strerror(errno)); +- return 0; +- } +- if (!get_dev_size(fd, dev, &ldsize)) { +- close(fd); +- return 0; +- } +- close(fd); +- if (freesize) { +- *freesize = avail_size_ddf(st, ldsize >> 9, INVALID_SECTORS); +- if (*freesize == 0) +- return 0; +- } +- +- return 1; +-} +- + static int validate_geometry_ddf_bvd(struct supertype *st, + int level, int layout, int raiddisks, + int *chunk, unsigned long long size, +-- +2.39.1 + diff --git a/meta/recipes-extended/mdadm/files/0002-DDF-Fix-NULL-pointer-dereference-in-validate_geometr.patch b/meta/recipes-extended/mdadm/files/0002-DDF-Fix-NULL-pointer-dereference-in-validate_geometr.patch new file mode 100644 index 0000000000..fafe88b49c --- /dev/null +++ b/meta/recipes-extended/mdadm/files/0002-DDF-Fix-NULL-pointer-dereference-in-validate_geometr.patch @@ -0,0 +1,56 @@ +From 14f110f0286d38e29ef5e51d7f72e049c2f18323 Mon Sep 17 00:00:00 2001 +From: Logan Gunthorpe <logang@deltatee.com> +Date: Wed, 22 Jun 2022 14:25:08 -0600 +Subject: [PATCH 2/4] DDF: Fix NULL pointer dereference in + validate_geometry_ddf() + +A relatively recent patch added a call to validate_geometry() in +Manage_add() that has level=LEVEL_CONTAINER and chunk=NULL. + +This causes some ddf tests to segfault which aborts the test suite. + +To fix this, avoid dereferencing chunk when the level is +LEVEL_CONTAINER or LEVEL_NONE. + +Fixes: 1f5d54a06df0 ("Manage: Call validate_geometry when adding drive to external container") +Signed-off-by: Logan Gunthorpe <logang@deltatee.com> +Acked-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> +Signed-off-by: Jes Sorensen <jes@trained-monkey.org> + +Upstream-Status: Backport + +Reference to upstream patch: +https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=2b93288a5650 + +Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> +--- + super-ddf.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/super-ddf.c b/super-ddf.c +index 65cf727..3ef1293 100644 +--- a/super-ddf.c ++++ b/super-ddf.c +@@ -3369,9 +3369,6 @@ static int validate_geometry_ddf(struct supertype *st, + * If given BVDs, we make an SVD, changing all the GUIDs in the process. + */ + +- if (*chunk == UnSet) +- *chunk = DEFAULT_CHUNK; +- + if (level == LEVEL_NONE) + level = LEVEL_CONTAINER; + if (level == LEVEL_CONTAINER) { +@@ -3381,6 +3378,9 @@ static int validate_geometry_ddf(struct supertype *st, + freesize, verbose); + } + ++ if (*chunk == UnSet) ++ *chunk = DEFAULT_CHUNK; ++ + if (!dev) { + mdu_array_info_t array = { + .level = level, +-- +2.39.1 + diff --git a/meta/recipes-extended/mdadm/files/0003-mdadm-Grow-Fix-use-after-close-bug-by-closing-after-.patch b/meta/recipes-extended/mdadm/files/0003-mdadm-Grow-Fix-use-after-close-bug-by-closing-after-.patch new file mode 100644 index 0000000000..a954ab027a --- /dev/null +++ b/meta/recipes-extended/mdadm/files/0003-mdadm-Grow-Fix-use-after-close-bug-by-closing-after-.patch @@ -0,0 +1,91 @@ +From bd064da1469a6a07331b076a0294a8c6c3c38526 Mon Sep 17 00:00:00 2001 +From: Logan Gunthorpe <logang@deltatee.com> +Date: Wed, 22 Jun 2022 14:25:09 -0600 +Subject: [PATCH 3/4] mdadm/Grow: Fix use after close bug by closing after fork + +The test 07reshape-grow fails most of the time. But it succeeds around +1 in 5 times. When it does succeed, it causes the tests to die because +mdadm has segfaulted. + +The segfault was caused by mdadm attempting to repoen a file +descriptor that was already closed. The backtrace of the segfault +was: + + #0 __strncmp_avx2 () at ../sysdeps/x86_64/multiarch/strcmp-avx2.S:101 + #1 0x000056146e31d44b in devnm2devid (devnm=0x0) at util.c:956 + #2 0x000056146e31dab4 in open_dev_flags (devnm=0x0, flags=0) + at util.c:1072 + #3 0x000056146e31db22 in open_dev (devnm=0x0) at util.c:1079 + #4 0x000056146e3202e8 in reopen_mddev (mdfd=4) at util.c:2244 + #5 0x000056146e329f36 in start_array (mdfd=4, + mddev=0x7ffc55342450 "/dev/md0", content=0x7ffc55342860, + st=0x56146fc78660, ident=0x7ffc55342f70, best=0x56146fc6f5d0, + bestcnt=10, chosen_drive=0, devices=0x56146fc706b0, okcnt=5, + sparecnt=0, rebuilding_cnt=0, journalcnt=0, c=0x7ffc55342e90, + clean=1, avail=0x56146fc78720 "\001\001\001\001\001", + start_partial_ok=0, err_ok=0, was_forced=0) + at Assemble.c:1206 + #6 0x000056146e32c36e in Assemble (st=0x56146fc78660, + mddev=0x7ffc55342450 "/dev/md0", ident=0x7ffc55342f70, + devlist=0x56146fc6e2d0, c=0x7ffc55342e90) + at Assemble.c:1914 + #7 0x000056146e312ac9 in main (argc=11, argv=0x7ffc55343238) + at mdadm.c:1510 + +The file descriptor was closed early in Grow_continue(). The noted commit +moved the close() call to close the fd above the fork which caused the +parent process to return with a closed fd. + +This meant reshape_array() and Grow_continue() would return in the parent +with the fd forked. The fd would eventually be passed to reopen_mddev() +which returned an unhandled NULL from fd2devnm() which would then be +dereferenced in devnm2devid. + +Fix this by moving the close() call below the fork. This appears to +fix the 07revert-grow test. While we're at it, switch to using +close_fd() to invalidate the file descriptor. + +Fixes: 77b72fa82813 ("mdadm/Grow: prevent md's fd from being occupied during delayed time") +Cc: Alex Wu <alexwu@synology.com> +Cc: BingJing Chang <bingjingc@synology.com> +Cc: Danny Shih <dannyshih@synology.com> +Cc: ChangSyun Peng <allenpeng@synology.com> +Signed-off-by: Logan Gunthorpe <logang@deltatee.com> +Acked-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> +Signed-off-by: Jes Sorensen <jes@trained-monkey.org> + +Upstream-Status: Backport + +Reference to upstream patch: +https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=548e9b916f86 + +Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> +--- + Grow.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/Grow.c b/Grow.c +index 9c6fc95..a8e4e83 100644 +--- a/Grow.c ++++ b/Grow.c +@@ -3501,7 +3501,6 @@ started: + return 0; + } + +- close(fd); + /* Now we just need to kick off the reshape and watch, while + * handling backups of the data... + * This is all done by a forked background process. +@@ -3522,6 +3521,9 @@ started: + break; + } + ++ /* Close unused file descriptor in the forked process */ ++ close_fd(&fd); ++ + /* If another array on the same devices is busy, the + * reshape will wait for them. This would mean that + * the first section that we suspend will stay suspended +-- +2.39.1 + diff --git a/meta/recipes-extended/mdadm/files/0004-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch b/meta/recipes-extended/mdadm/files/0004-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch new file mode 100644 index 0000000000..72cb40f782 --- /dev/null +++ b/meta/recipes-extended/mdadm/files/0004-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch @@ -0,0 +1,42 @@ +From 2296a4a441b4b8546e2eb32403930f1bb8f3ee4a Mon Sep 17 00:00:00 2001 +From: Logan Gunthorpe <logang@deltatee.com> +Date: Wed, 22 Jun 2022 14:25:10 -0600 +Subject: [PATCH 4/4] monitor: Avoid segfault when calling NULL get_bad_blocks + +Not all struct superswitch implement a get_bad_blocks() function, +yet mdmon seems to call it without checking for NULL and thus +occasionally segfaults in the test 10ddf-geometry. + +Fix this by checking for NULL before calling it. + +Signed-off-by: Logan Gunthorpe <logang@deltatee.com> +Acked-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com> +Signed-off-by: Jes Sorensen <jes@trained-monkey.org> + +Upstream-Status: Backport + +Reference to upstream patch: +https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=9ae62977b51d + +Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> +--- + monitor.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/monitor.c b/monitor.c +index afc3e50..8e43c0d 100644 +--- a/monitor.c ++++ b/monitor.c +@@ -312,6 +312,9 @@ static int check_for_cleared_bb(struct active_array *a, struct mdinfo *mdi) + struct md_bb *bb; + int i; + ++ if (!ss->get_bad_blocks) ++ return -1; ++ + /* + * Get a list of bad blocks for an array, then read list of + * acknowledged bad blocks from kernel and compare it against metadata +-- +2.39.1 + diff --git a/meta/recipes-extended/mdadm/mdadm_4.2.bb b/meta/recipes-extended/mdadm/mdadm_4.2.bb index a5844b6726..033766dc89 100644 --- a/meta/recipes-extended/mdadm/mdadm_4.2.bb +++ b/meta/recipes-extended/mdadm/mdadm_4.2.bb @@ -32,6 +32,10 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/raid/mdadm/${BPN}-${PV}.tar.xz \ file://0001-tests-fix-raid0-tests-for-0.90-metadata.patch \ file://0001-tests-00readonly-Run-udevadm-settle-before-setting-r.patch \ file://0001-tests-04update-metadata-avoid-passing-chunk-size-to.patch \ + file://0001-DDF-Cleanup-validate_geometry_ddf_container.patch \ + file://0002-DDF-Fix-NULL-pointer-dereference-in-validate_geometr.patch \ + file://0003-mdadm-Grow-Fix-use-after-close-bug-by-closing-after-.patch \ + file://0004-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch \ " SRC_URI[sha256sum] = "461c215670864bb74a4d1a3620684aa2b2f8296dffa06743f26dda5557acf01d" -- 2.39.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/4] mdadm: skip running known broken ptests 2023-06-29 14:18 [PATCH 1/4] mdadm: fix util-linux-lsblk ptest dependency ovidiu.panait 2023-06-29 14:18 ` [PATCH 2/4] mdadm: fix 07revert-inplace ptest ovidiu.panait 2023-06-29 14:18 ` [PATCH 3/4] mdadm: fix segfaults when running ptests ovidiu.panait @ 2023-06-29 14:18 ` ovidiu.panait 2023-06-29 14:54 ` [OE-core] " Alexander Kanavin 2023-07-02 21:44 ` [OE-core] [PATCH 1/4] mdadm: fix util-linux-lsblk ptest dependency Alexandre Belloni 3 siblings, 1 reply; 8+ messages in thread From: ovidiu.panait @ 2023-06-29 14:18 UTC (permalink / raw) To: openembedded-core From: Ovidiu Panait <ovidiu.panait@windriver.com> Upstream marked some testcases as "KNOWN BROKEN" and introduced the "--skip-broken" flag to ignore them when running the testsuite (commits [1] and [2]). Backport these two commits to get rid of the last remaining ptest failures. Also, add the "--skip-broken" option to the run-ptest script. [1] https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=28520bf114b3 [2] https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=daa86d663476 Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> --- ...Mark-and-ignore-broken-test-failures.patch | 128 +++++ ...dd-broken-files-for-all-broken-tests.patch | 454 ++++++++++++++++++ meta/recipes-extended/mdadm/files/run-ptest | 2 +- meta/recipes-extended/mdadm/mdadm_4.2.bb | 2 + 4 files changed, 585 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-extended/mdadm/files/0005-mdadm-test-Mark-and-ignore-broken-test-failures.patch create mode 100644 meta/recipes-extended/mdadm/files/0006-tests-Add-broken-files-for-all-broken-tests.patch diff --git a/meta/recipes-extended/mdadm/files/0005-mdadm-test-Mark-and-ignore-broken-test-failures.patch b/meta/recipes-extended/mdadm/files/0005-mdadm-test-Mark-and-ignore-broken-test-failures.patch new file mode 100644 index 0000000000..c55bfb125b --- /dev/null +++ b/meta/recipes-extended/mdadm/files/0005-mdadm-test-Mark-and-ignore-broken-test-failures.patch @@ -0,0 +1,128 @@ +From feab1f72fcf032a4d21d0a69eb61b23a5ddb3352 Mon Sep 17 00:00:00 2001 +From: Logan Gunthorpe <logang@deltatee.com> +Date: Wed, 22 Jun 2022 14:25:18 -0600 +Subject: [PATCH 5/6] mdadm/test: Mark and ignore broken test failures + +Add functionality to continue if a test marked as broken fails. + +To mark a test as broken, a file with the same name but with the suffix +'.broken' should exist. The first line in the file will be printed with +a KNOWN BROKEN message; the rest of the file can describe the how the +test is broken. + +Also adds --skip-broken and --skip-always-broken to skip all the tests +that have a .broken file or to skip all tests whose .broken file's first +line contains the keyword always. + +Signed-off-by: Logan Gunthorpe <logang@deltatee.com> +Signed-off-by: Jes Sorensen <jes@trained-monkey.org> + +Upstream-Status: Backport + +Reference to upstream patch: +https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=28520bf114b3 + +[OP: adjusted context for mdadm-4.2] +Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> +--- + test | 37 +++++++++++++++++++++++++++++++++++-- + 1 file changed, 35 insertions(+), 2 deletions(-) + +diff --git a/test b/test +index 8f189d9..ee8fba1 100755 +--- a/test ++++ b/test +@@ -10,6 +10,8 @@ devlist= + + savelogs=0 + exitonerror=1 ++ctrl_c_error=0 ++skipbroken=0 + prefix='[0-9][0-9]' + + # use loop devices by default if doesn't specify --dev +@@ -35,6 +37,7 @@ die() { + + ctrl_c() { + exitonerror=1 ++ ctrl_c_error=1 + } + + # mdadm always adds --quiet, and we want to see any unexpected messages +@@ -79,8 +82,21 @@ mdadm() { + do_test() { + _script=$1 + _basename=`basename $_script` ++ _broken=0 ++ + if [ -f "$_script" ] + then ++ if [ -f "${_script}.broken" ]; then ++ _broken=1 ++ _broken_msg=$(head -n1 "${_script}.broken" | tr -d '\n') ++ if [ "$skipbroken" == "all" ]; then ++ return ++ elif [ "$skipbroken" == "always" ] && ++ [[ "$_broken_msg" == *always* ]]; then ++ return ++ fi ++ fi ++ + rm -f $targetdir/stderr + # this might have been reset: restore the default. + echo 2000 > /proc/sys/dev/raid/speed_limit_max +@@ -97,10 +113,15 @@ do_test() { + else + save_log fail + _fail=1 ++ if [ "$_broken" == "1" ]; then ++ echo " (KNOWN BROKEN TEST: $_broken_msg)" ++ fi + fi + [ "$savelogs" == "1" ] && + mv -f $targetdir/log $logdir/$_basename.log +- [ "$_fail" == "1" -a "$exitonerror" == "1" ] && exit 1 ++ [ "$ctrl_c_error" == "1" ] && exit 1 ++ [ "$_fail" == "1" -a "$exitonerror" == "1" \ ++ -a "$_broken" == "0" ] && exit 1 + fi + } + +@@ -117,6 +138,8 @@ do_help() { + --logdir=directory Directory to save all logfiles in + --save-logs Usually use with --logdir together + --keep-going | --no-error Don't stop on error, ie. run all tests ++ --skip-broken Skip tests that are known to be broken ++ --skip-always-broken Skip tests that are known to always fail + --dev=loop|lvm|ram|disk Use loop devices (default), LVM, RAM or disk + --disks= Provide a bunch of physical devices for test + --volgroup=name LVM volume group for LVM test +@@ -211,6 +234,12 @@ parse_args() { + --keep-going | --no-error ) + exitonerror=0 + ;; ++ --skip-broken ) ++ skipbroken=all ++ ;; ++ --skip-always-broken ) ++ skipbroken=always ++ ;; + --disable-multipath ) + unset MULTIPATH + ;; +@@ -275,7 +304,11 @@ main() { + if [ $script == "$testdir/11spare-migration" ];then + continue + fi +- do_test $script ++ case $script in ++ *.broken) ;; ++ *) ++ do_test $script ++ esac + done + fi + +-- +2.39.1 + diff --git a/meta/recipes-extended/mdadm/files/0006-tests-Add-broken-files-for-all-broken-tests.patch b/meta/recipes-extended/mdadm/files/0006-tests-Add-broken-files-for-all-broken-tests.patch new file mode 100644 index 0000000000..115b23bac5 --- /dev/null +++ b/meta/recipes-extended/mdadm/files/0006-tests-Add-broken-files-for-all-broken-tests.patch @@ -0,0 +1,454 @@ +From fd1c26ba129b069d9f73afaefdbe53683de3814a Mon Sep 17 00:00:00 2001 +From: Logan Gunthorpe <logang@deltatee.com> +Date: Wed, 22 Jun 2022 14:25:19 -0600 +Subject: [PATCH 6/6] tests: Add broken files for all broken tests + +Each broken file contains the rough frequency of brokeness as well +as a brief explanation of what happens when it breaks. Estimates +of failure rates are not statistically significant and can vary +run to run. + +This is really just a view from my window. Tests were done on a +small VM with the default loop devices, not real hardware. We've +seen different kernel configurations can cause bugs to appear as well +(ie. different block schedulers). It may also be that different race +conditions will be seen on machines with different performance +characteristics. + +These annotations were done with the kernel currently in md/md-next: + + facef3b96c5b ("md: Notify sysfs sync_completed in md_reap_sync_thread()") + +Signed-off-by: Logan Gunthorpe <logang@deltatee.com> +Signed-off-by: Jes Sorensen <jes@trained-monkey.org> + +Upstream-Status: Backport + +Reference to upstream patch: +https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=daa86d663476 + +Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> +--- + tests/01r5integ.broken | 7 ++++ + tests/01raid6integ.broken | 7 ++++ + tests/04r5swap.broken | 7 ++++ + tests/07autoassemble.broken | 8 ++++ + tests/07autodetect.broken | 5 +++ + tests/07changelevelintr.broken | 9 +++++ + tests/07changelevels.broken | 9 +++++ + tests/07reshape5intr.broken | 45 ++++++++++++++++++++++ + tests/07revert-grow.broken | 31 +++++++++++++++ + tests/07revert-shrink.broken | 9 +++++ + tests/07testreshape5.broken | 12 ++++++ + tests/09imsm-assemble.broken | 6 +++ + tests/09imsm-create-fail-rebuild.broken | 5 +++ + tests/09imsm-overlap.broken | 7 ++++ + tests/10ddf-assemble-missing.broken | 6 +++ + tests/10ddf-fail-create-race.broken | 7 ++++ + tests/10ddf-fail-two-spares.broken | 5 +++ + tests/10ddf-incremental-wrong-order.broken | 9 +++++ + tests/14imsm-r1_2d-grow-r1_3d.broken | 5 +++ + tests/14imsm-r1_2d-takeover-r0_2d.broken | 6 +++ + tests/18imsm-r10_4d-takeover-r0_2d.broken | 5 +++ + tests/18imsm-r1_2d-takeover-r0_1d.broken | 6 +++ + tests/19raid6auto-repair.broken | 5 +++ + tests/19raid6repair.broken | 5 +++ + 24 files changed, 226 insertions(+) + create mode 100644 tests/01r5integ.broken + create mode 100644 tests/01raid6integ.broken + create mode 100644 tests/04r5swap.broken + create mode 100644 tests/07autoassemble.broken + create mode 100644 tests/07autodetect.broken + create mode 100644 tests/07changelevelintr.broken + create mode 100644 tests/07changelevels.broken + create mode 100644 tests/07reshape5intr.broken + create mode 100644 tests/07revert-grow.broken + create mode 100644 tests/07revert-shrink.broken + create mode 100644 tests/07testreshape5.broken + create mode 100644 tests/09imsm-assemble.broken + create mode 100644 tests/09imsm-create-fail-rebuild.broken + create mode 100644 tests/09imsm-overlap.broken + create mode 100644 tests/10ddf-assemble-missing.broken + create mode 100644 tests/10ddf-fail-create-race.broken + create mode 100644 tests/10ddf-fail-two-spares.broken + create mode 100644 tests/10ddf-incremental-wrong-order.broken + create mode 100644 tests/14imsm-r1_2d-grow-r1_3d.broken + create mode 100644 tests/14imsm-r1_2d-takeover-r0_2d.broken + create mode 100644 tests/18imsm-r10_4d-takeover-r0_2d.broken + create mode 100644 tests/18imsm-r1_2d-takeover-r0_1d.broken + create mode 100644 tests/19raid6auto-repair.broken + create mode 100644 tests/19raid6repair.broken + +diff --git a/tests/01r5integ.broken b/tests/01r5integ.broken +new file mode 100644 +index 0000000..2073763 +--- /dev/null ++++ b/tests/01r5integ.broken +@@ -0,0 +1,7 @@ ++fails rarely ++ ++Fails about 1 in every 30 runs with a sha mismatch error: ++ ++ c49ab26e1b01def7874af9b8a6d6d0c29fdfafe6 /dev/md0 does not match ++ 15dc2f73262f811ada53c65e505ceec9cf025cb9 /dev/md0 with /dev/loop3 ++ missing +diff --git a/tests/01raid6integ.broken b/tests/01raid6integ.broken +new file mode 100644 +index 0000000..1df735f +--- /dev/null ++++ b/tests/01raid6integ.broken +@@ -0,0 +1,7 @@ ++fails infrequently ++ ++Fails about 1 in 5 with a sha mismatch: ++ ++ 8286c2bc045ae2cfe9f8b7ae3a898fa25db6926f /dev/md0 does not match ++ a083a0738b58caab37fd568b91b177035ded37df /dev/md0 with /dev/loop2 and ++ /dev/loop3 missing +diff --git a/tests/04r5swap.broken b/tests/04r5swap.broken +new file mode 100644 +index 0000000..e38987d +--- /dev/null ++++ b/tests/04r5swap.broken +@@ -0,0 +1,7 @@ ++always fails ++ ++Fails with errors: ++ ++ mdadm: /dev/loop0 has no superblock - assembly aborted ++ ++ ERROR: no recovery happening +diff --git a/tests/07autoassemble.broken b/tests/07autoassemble.broken +new file mode 100644 +index 0000000..8be0940 +--- /dev/null ++++ b/tests/07autoassemble.broken +@@ -0,0 +1,8 @@ ++always fails ++ ++Prints lots of messages, but the array doesn't assemble. Error ++possibly related to: ++ ++ mdadm: /dev/md/1 is busy - skipping ++ mdadm: no recogniseable superblock on /dev/md/testing:0 ++ mdadm: /dev/md/2 is busy - skipping +diff --git a/tests/07autodetect.broken b/tests/07autodetect.broken +new file mode 100644 +index 0000000..294954a +--- /dev/null ++++ b/tests/07autodetect.broken +@@ -0,0 +1,5 @@ ++always fails ++ ++Fails with error: ++ ++ ERROR: no resync happening +diff --git a/tests/07changelevelintr.broken b/tests/07changelevelintr.broken +new file mode 100644 +index 0000000..284b490 +--- /dev/null ++++ b/tests/07changelevelintr.broken +@@ -0,0 +1,9 @@ ++always fails ++ ++Fails with errors: ++ ++ mdadm: this change will reduce the size of the array. ++ use --grow --array-size first to truncate array. ++ e.g. mdadm --grow /dev/md0 --array-size 56832 ++ ++ ERROR: no reshape happening +diff --git a/tests/07changelevels.broken b/tests/07changelevels.broken +new file mode 100644 +index 0000000..9b930d9 +--- /dev/null ++++ b/tests/07changelevels.broken +@@ -0,0 +1,9 @@ ++always fails ++ ++Fails with errors: ++ ++ mdadm: /dev/loop0 is smaller than given size. 18976K < 19968K + metadata ++ mdadm: /dev/loop1 is smaller than given size. 18976K < 19968K + metadata ++ mdadm: /dev/loop2 is smaller than given size. 18976K < 19968K + metadata ++ ++ ERROR: /dev/md0 isn't a block device. +diff --git a/tests/07reshape5intr.broken b/tests/07reshape5intr.broken +new file mode 100644 +index 0000000..efe52a6 +--- /dev/null ++++ b/tests/07reshape5intr.broken +@@ -0,0 +1,45 @@ ++always fails ++ ++This patch, recently added to md-next causes the test to always fail: ++ ++7e6ba434cc60 ("md: don't unregister sync_thread with reconfig_mutex ++held") ++ ++The new error is simply: ++ ++ ERROR: no reshape happening ++ ++Before the patch, the error seen is below. ++ ++-- ++ ++fails infrequently ++ ++Fails roughly 1 in 4 runs with errors: ++ ++ mdadm: Merging with already-assembled /dev/md/0 ++ mdadm: cannot re-read metadata from /dev/loop6 - aborting ++ ++ ERROR: no reshape happening ++ ++Also have seen a random deadlock: ++ ++ INFO: task mdadm:109702 blocked for more than 30 seconds. ++ Not tainted 5.18.0-rc3-eid-vmlocalyes-dbg-00095-g3c2b5427979d #2040 ++ "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. ++ task:mdadm state:D stack: 0 pid:109702 ppid: 1 flags:0x00004000 ++ Call Trace: ++ <TASK> ++ __schedule+0x67e/0x13b0 ++ schedule+0x82/0x110 ++ mddev_suspend+0x2e1/0x330 ++ suspend_lo_store+0xbd/0x140 ++ md_attr_store+0xcb/0x130 ++ sysfs_kf_write+0x89/0xb0 ++ kernfs_fop_write_iter+0x202/0x2c0 ++ new_sync_write+0x222/0x330 ++ vfs_write+0x3bc/0x4d0 ++ ksys_write+0xd9/0x180 ++ __x64_sys_write+0x43/0x50 ++ do_syscall_64+0x3b/0x90 ++ entry_SYSCALL_64_after_hwframe+0x44/0xae +diff --git a/tests/07revert-grow.broken b/tests/07revert-grow.broken +new file mode 100644 +index 0000000..9b6db86 +--- /dev/null ++++ b/tests/07revert-grow.broken +@@ -0,0 +1,31 @@ ++always fails ++ ++This patch, recently added to md-next causes the test to always fail: ++ ++7e6ba434cc60 ("md: don't unregister sync_thread with reconfig_mutex held") ++ ++The errors are: ++ ++ mdadm: No active reshape to revert on /dev/loop0 ++ ERROR: active raid5 not found ++ ++Before the patch, the error seen is below. ++ ++-- ++ ++fails rarely ++ ++Fails about 1 in every 30 runs with errors: ++ ++ mdadm: Merging with already-assembled /dev/md/0 ++ mdadm: backup file /tmp/md-backup inaccessible: No such file or directory ++ mdadm: failed to add /dev/loop1 to /dev/md/0: Invalid argument ++ mdadm: failed to add /dev/loop2 to /dev/md/0: Invalid argument ++ mdadm: failed to add /dev/loop3 to /dev/md/0: Invalid argument ++ mdadm: failed to add /dev/loop0 to /dev/md/0: Invalid argument ++ mdadm: /dev/md/0 assembled from 1 drive - need all 5 to start it ++ (use --run to insist). ++ ++ grep: /sys/block/md*/md/sync_action: No such file or directory ++ ++ ERROR: active raid5 not found +diff --git a/tests/07revert-shrink.broken b/tests/07revert-shrink.broken +new file mode 100644 +index 0000000..c33c39e +--- /dev/null ++++ b/tests/07revert-shrink.broken +@@ -0,0 +1,9 @@ ++always fails ++ ++Fails with errors: ++ ++ mdadm: this change will reduce the size of the array. ++ use --grow --array-size first to truncate array. ++ e.g. mdadm --grow /dev/md0 --array-size 53760 ++ ++ ERROR: active raid5 not found +diff --git a/tests/07testreshape5.broken b/tests/07testreshape5.broken +new file mode 100644 +index 0000000..a8ce03e +--- /dev/null ++++ b/tests/07testreshape5.broken +@@ -0,0 +1,12 @@ ++always fails ++ ++Test seems to run 'test_stripe' at $dir directory, but $dir is never ++set. If $dir is adjusted to $PWD, the test still fails with: ++ ++ mdadm: /dev/loop2 is not suitable for this array. ++ mdadm: create aborted ++ ++ return 1 ++ ++ cmp -s -n 8192 /dev/md0 /tmp/RandFile ++ ++ echo cmp failed ++ cmp failed ++ ++ exit 2 +diff --git a/tests/09imsm-assemble.broken b/tests/09imsm-assemble.broken +new file mode 100644 +index 0000000..a6d4d5c +--- /dev/null ++++ b/tests/09imsm-assemble.broken +@@ -0,0 +1,6 @@ ++fails infrequently ++ ++Fails roughly 1 in 10 runs with errors: ++ ++ mdadm: /dev/loop2 is still in use, cannot remove. ++ /dev/loop2 removal from /dev/md/container should have succeeded +diff --git a/tests/09imsm-create-fail-rebuild.broken b/tests/09imsm-create-fail-rebuild.broken +new file mode 100644 +index 0000000..40c4b29 +--- /dev/null ++++ b/tests/09imsm-create-fail-rebuild.broken +@@ -0,0 +1,5 @@ ++always fails ++ ++Fails with error: ++ ++ **Error**: Array size mismatch - expected 3072, actual 16384 +diff --git a/tests/09imsm-overlap.broken b/tests/09imsm-overlap.broken +new file mode 100644 +index 0000000..e7ccab7 +--- /dev/null ++++ b/tests/09imsm-overlap.broken +@@ -0,0 +1,7 @@ ++always fails ++ ++Fails with errors: ++ ++ **Error**: Offset mismatch - expected 15360, actual 0 ++ **Error**: Offset mismatch - expected 15360, actual 0 ++ /dev/md/vol3 failed check +diff --git a/tests/10ddf-assemble-missing.broken b/tests/10ddf-assemble-missing.broken +new file mode 100644 +index 0000000..bfd8d10 +--- /dev/null ++++ b/tests/10ddf-assemble-missing.broken +@@ -0,0 +1,6 @@ ++always fails ++ ++Fails with errors: ++ ++ ERROR: /dev/md/vol0 has unexpected state on /dev/loop10 ++ ERROR: unexpected number of online disks on /dev/loop10 +diff --git a/tests/10ddf-fail-create-race.broken b/tests/10ddf-fail-create-race.broken +new file mode 100644 +index 0000000..6c0df02 +--- /dev/null ++++ b/tests/10ddf-fail-create-race.broken +@@ -0,0 +1,7 @@ ++usually fails ++ ++Fails about 9 out of 10 times with many errors: ++ ++ mdadm: cannot open MISSING: No such file or directory ++ ERROR: non-degraded array found ++ ERROR: disk 0 not marked as failed in meta data +diff --git a/tests/10ddf-fail-two-spares.broken b/tests/10ddf-fail-two-spares.broken +new file mode 100644 +index 0000000..eeea56d +--- /dev/null ++++ b/tests/10ddf-fail-two-spares.broken +@@ -0,0 +1,5 @@ ++fails infrequently ++ ++Fails roughly 1 in 3 with error: ++ ++ ERROR: /dev/md/vol1 should be optimal in meta data +diff --git a/tests/10ddf-incremental-wrong-order.broken b/tests/10ddf-incremental-wrong-order.broken +new file mode 100644 +index 0000000..a5af3ba +--- /dev/null ++++ b/tests/10ddf-incremental-wrong-order.broken +@@ -0,0 +1,9 @@ ++always fails ++ ++Fails with errors: ++ ERROR: sha1sum of /dev/md/vol0 has changed ++ ERROR: /dev/md/vol0 has unexpected state on /dev/loop10 ++ ERROR: unexpected number of online disks on /dev/loop10 ++ ERROR: /dev/md/vol0 has unexpected state on /dev/loop8 ++ ERROR: unexpected number of online disks on /dev/loop8 ++ ERROR: sha1sum of /dev/md/vol0 has changed +diff --git a/tests/14imsm-r1_2d-grow-r1_3d.broken b/tests/14imsm-r1_2d-grow-r1_3d.broken +new file mode 100644 +index 0000000..4ef1d40 +--- /dev/null ++++ b/tests/14imsm-r1_2d-grow-r1_3d.broken +@@ -0,0 +1,5 @@ ++always fails ++ ++Fails with error: ++ ++ mdadm/tests/func.sh: line 325: dvsize/chunk: division by 0 (error token is "chunk") +diff --git a/tests/14imsm-r1_2d-takeover-r0_2d.broken b/tests/14imsm-r1_2d-takeover-r0_2d.broken +new file mode 100644 +index 0000000..89cd4e5 +--- /dev/null ++++ b/tests/14imsm-r1_2d-takeover-r0_2d.broken +@@ -0,0 +1,6 @@ ++always fails ++ ++Fails with error: ++ ++ tests/func.sh: line 325: dvsize/chunk: division by 0 (error token ++ is "chunk") +diff --git a/tests/18imsm-r10_4d-takeover-r0_2d.broken b/tests/18imsm-r10_4d-takeover-r0_2d.broken +new file mode 100644 +index 0000000..a27399f +--- /dev/null ++++ b/tests/18imsm-r10_4d-takeover-r0_2d.broken +@@ -0,0 +1,5 @@ ++fails rarely ++ ++Fails about 1 run in 100 with message: ++ ++ ERROR: size is wrong for /dev/md/vol0: 2 * 5120 (chunk=128) = 20480, not 0 +diff --git a/tests/18imsm-r1_2d-takeover-r0_1d.broken b/tests/18imsm-r1_2d-takeover-r0_1d.broken +new file mode 100644 +index 0000000..aa1982e +--- /dev/null ++++ b/tests/18imsm-r1_2d-takeover-r0_1d.broken +@@ -0,0 +1,6 @@ ++always fails ++ ++Fails with error: ++ ++ tests/func.sh: line 325: dvsize/chunk: division by 0 (error token ++ is "chunk") +diff --git a/tests/19raid6auto-repair.broken b/tests/19raid6auto-repair.broken +new file mode 100644 +index 0000000..e91a142 +--- /dev/null ++++ b/tests/19raid6auto-repair.broken +@@ -0,0 +1,5 @@ ++always fails ++ ++Fails with: ++ ++ "should detect errors" +diff --git a/tests/19raid6repair.broken b/tests/19raid6repair.broken +new file mode 100644 +index 0000000..e91a142 +--- /dev/null ++++ b/tests/19raid6repair.broken +@@ -0,0 +1,5 @@ ++always fails ++ ++Fails with: ++ ++ "should detect errors" +-- +2.39.1 + diff --git a/meta/recipes-extended/mdadm/files/run-ptest b/meta/recipes-extended/mdadm/files/run-ptest index fae8071d43..2380c322a9 100644 --- a/meta/recipes-extended/mdadm/files/run-ptest +++ b/meta/recipes-extended/mdadm/files/run-ptest @@ -2,6 +2,6 @@ mkdir -p /mdadm-testing-dir # make the test continue to execute even one fail -dir=. ./test --keep-going --disable-integrity +dir=. ./test --keep-going --disable-integrity --skip-broken rm -rf /mdadm-testing-dir/* diff --git a/meta/recipes-extended/mdadm/mdadm_4.2.bb b/meta/recipes-extended/mdadm/mdadm_4.2.bb index 033766dc89..0d0e8f5922 100644 --- a/meta/recipes-extended/mdadm/mdadm_4.2.bb +++ b/meta/recipes-extended/mdadm/mdadm_4.2.bb @@ -36,6 +36,8 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/raid/mdadm/${BPN}-${PV}.tar.xz \ file://0002-DDF-Fix-NULL-pointer-dereference-in-validate_geometr.patch \ file://0003-mdadm-Grow-Fix-use-after-close-bug-by-closing-after-.patch \ file://0004-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch \ + file://0005-mdadm-test-Mark-and-ignore-broken-test-failures.patch \ + file://0006-tests-Add-broken-files-for-all-broken-tests.patch \ " SRC_URI[sha256sum] = "461c215670864bb74a4d1a3620684aa2b2f8296dffa06743f26dda5557acf01d" -- 2.39.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [OE-core] [PATCH 4/4] mdadm: skip running known broken ptests 2023-06-29 14:18 ` [PATCH 4/4] mdadm: skip running known broken ptests ovidiu.panait @ 2023-06-29 14:54 ` Alexander Kanavin 2023-06-30 9:17 ` Ovidiu Panait 0 siblings, 1 reply; 8+ messages in thread From: Alexander Kanavin @ 2023-06-29 14:54 UTC (permalink / raw) To: ovidiu.panait; +Cc: openembedded-core Thanks for working on reenabling this. mdadm is currently taken out of ptest lists because # mdadm \ # Tests rely on non-deterministic sleep() amounts Is this resolved, and can we re-add mdadm to SLOW or FAST lists? Alex On Thu, 29 Jun 2023 at 16:19, Ovidiu Panait via lists.openembedded.org <ovidiu.panait=windriver.com@lists.openembedded.org> wrote: > > From: Ovidiu Panait <ovidiu.panait@windriver.com> > > Upstream marked some testcases as "KNOWN BROKEN" and introduced the > "--skip-broken" flag to ignore them when running the testsuite (commits [1] > and [2]). Backport these two commits to get rid of the last remaining ptest > failures. > > Also, add the "--skip-broken" option to the run-ptest script. > > [1] https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=28520bf114b3 > [2] https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=daa86d663476 > > Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> > --- > ...Mark-and-ignore-broken-test-failures.patch | 128 +++++ > ...dd-broken-files-for-all-broken-tests.patch | 454 ++++++++++++++++++ > meta/recipes-extended/mdadm/files/run-ptest | 2 +- > meta/recipes-extended/mdadm/mdadm_4.2.bb | 2 + > 4 files changed, 585 insertions(+), 1 deletion(-) > create mode 100644 meta/recipes-extended/mdadm/files/0005-mdadm-test-Mark-and-ignore-broken-test-failures.patch > create mode 100644 meta/recipes-extended/mdadm/files/0006-tests-Add-broken-files-for-all-broken-tests.patch > > diff --git a/meta/recipes-extended/mdadm/files/0005-mdadm-test-Mark-and-ignore-broken-test-failures.patch b/meta/recipes-extended/mdadm/files/0005-mdadm-test-Mark-and-ignore-broken-test-failures.patch > new file mode 100644 > index 0000000000..c55bfb125b > --- /dev/null > +++ b/meta/recipes-extended/mdadm/files/0005-mdadm-test-Mark-and-ignore-broken-test-failures.patch > @@ -0,0 +1,128 @@ > +From feab1f72fcf032a4d21d0a69eb61b23a5ddb3352 Mon Sep 17 00:00:00 2001 > +From: Logan Gunthorpe <logang@deltatee.com> > +Date: Wed, 22 Jun 2022 14:25:18 -0600 > +Subject: [PATCH 5/6] mdadm/test: Mark and ignore broken test failures > + > +Add functionality to continue if a test marked as broken fails. > + > +To mark a test as broken, a file with the same name but with the suffix > +'.broken' should exist. The first line in the file will be printed with > +a KNOWN BROKEN message; the rest of the file can describe the how the > +test is broken. > + > +Also adds --skip-broken and --skip-always-broken to skip all the tests > +that have a .broken file or to skip all tests whose .broken file's first > +line contains the keyword always. > + > +Signed-off-by: Logan Gunthorpe <logang@deltatee.com> > +Signed-off-by: Jes Sorensen <jes@trained-monkey.org> > + > +Upstream-Status: Backport > + > +Reference to upstream patch: > +https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=28520bf114b3 > + > +[OP: adjusted context for mdadm-4.2] > +Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> > +--- > + test | 37 +++++++++++++++++++++++++++++++++++-- > + 1 file changed, 35 insertions(+), 2 deletions(-) > + > +diff --git a/test b/test > +index 8f189d9..ee8fba1 100755 > +--- a/test > ++++ b/test > +@@ -10,6 +10,8 @@ devlist= > + > + savelogs=0 > + exitonerror=1 > ++ctrl_c_error=0 > ++skipbroken=0 > + prefix='[0-9][0-9]' > + > + # use loop devices by default if doesn't specify --dev > +@@ -35,6 +37,7 @@ die() { > + > + ctrl_c() { > + exitonerror=1 > ++ ctrl_c_error=1 > + } > + > + # mdadm always adds --quiet, and we want to see any unexpected messages > +@@ -79,8 +82,21 @@ mdadm() { > + do_test() { > + _script=$1 > + _basename=`basename $_script` > ++ _broken=0 > ++ > + if [ -f "$_script" ] > + then > ++ if [ -f "${_script}.broken" ]; then > ++ _broken=1 > ++ _broken_msg=$(head -n1 "${_script}.broken" | tr -d '\n') > ++ if [ "$skipbroken" == "all" ]; then > ++ return > ++ elif [ "$skipbroken" == "always" ] && > ++ [[ "$_broken_msg" == *always* ]]; then > ++ return > ++ fi > ++ fi > ++ > + rm -f $targetdir/stderr > + # this might have been reset: restore the default. > + echo 2000 > /proc/sys/dev/raid/speed_limit_max > +@@ -97,10 +113,15 @@ do_test() { > + else > + save_log fail > + _fail=1 > ++ if [ "$_broken" == "1" ]; then > ++ echo " (KNOWN BROKEN TEST: $_broken_msg)" > ++ fi > + fi > + [ "$savelogs" == "1" ] && > + mv -f $targetdir/log $logdir/$_basename.log > +- [ "$_fail" == "1" -a "$exitonerror" == "1" ] && exit 1 > ++ [ "$ctrl_c_error" == "1" ] && exit 1 > ++ [ "$_fail" == "1" -a "$exitonerror" == "1" \ > ++ -a "$_broken" == "0" ] && exit 1 > + fi > + } > + > +@@ -117,6 +138,8 @@ do_help() { > + --logdir=directory Directory to save all logfiles in > + --save-logs Usually use with --logdir together > + --keep-going | --no-error Don't stop on error, ie. run all tests > ++ --skip-broken Skip tests that are known to be broken > ++ --skip-always-broken Skip tests that are known to always fail > + --dev=loop|lvm|ram|disk Use loop devices (default), LVM, RAM or disk > + --disks= Provide a bunch of physical devices for test > + --volgroup=name LVM volume group for LVM test > +@@ -211,6 +234,12 @@ parse_args() { > + --keep-going | --no-error ) > + exitonerror=0 > + ;; > ++ --skip-broken ) > ++ skipbroken=all > ++ ;; > ++ --skip-always-broken ) > ++ skipbroken=always > ++ ;; > + --disable-multipath ) > + unset MULTIPATH > + ;; > +@@ -275,7 +304,11 @@ main() { > + if [ $script == "$testdir/11spare-migration" ];then > + continue > + fi > +- do_test $script > ++ case $script in > ++ *.broken) ;; > ++ *) > ++ do_test $script > ++ esac > + done > + fi > + > +-- > +2.39.1 > + > diff --git a/meta/recipes-extended/mdadm/files/0006-tests-Add-broken-files-for-all-broken-tests.patch b/meta/recipes-extended/mdadm/files/0006-tests-Add-broken-files-for-all-broken-tests.patch > new file mode 100644 > index 0000000000..115b23bac5 > --- /dev/null > +++ b/meta/recipes-extended/mdadm/files/0006-tests-Add-broken-files-for-all-broken-tests.patch > @@ -0,0 +1,454 @@ > +From fd1c26ba129b069d9f73afaefdbe53683de3814a Mon Sep 17 00:00:00 2001 > +From: Logan Gunthorpe <logang@deltatee.com> > +Date: Wed, 22 Jun 2022 14:25:19 -0600 > +Subject: [PATCH 6/6] tests: Add broken files for all broken tests > + > +Each broken file contains the rough frequency of brokeness as well > +as a brief explanation of what happens when it breaks. Estimates > +of failure rates are not statistically significant and can vary > +run to run. > + > +This is really just a view from my window. Tests were done on a > +small VM with the default loop devices, not real hardware. We've > +seen different kernel configurations can cause bugs to appear as well > +(ie. different block schedulers). It may also be that different race > +conditions will be seen on machines with different performance > +characteristics. > + > +These annotations were done with the kernel currently in md/md-next: > + > + facef3b96c5b ("md: Notify sysfs sync_completed in md_reap_sync_thread()") > + > +Signed-off-by: Logan Gunthorpe <logang@deltatee.com> > +Signed-off-by: Jes Sorensen <jes@trained-monkey.org> > + > +Upstream-Status: Backport > + > +Reference to upstream patch: > +https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=daa86d663476 > + > +Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> > +--- > + tests/01r5integ.broken | 7 ++++ > + tests/01raid6integ.broken | 7 ++++ > + tests/04r5swap.broken | 7 ++++ > + tests/07autoassemble.broken | 8 ++++ > + tests/07autodetect.broken | 5 +++ > + tests/07changelevelintr.broken | 9 +++++ > + tests/07changelevels.broken | 9 +++++ > + tests/07reshape5intr.broken | 45 ++++++++++++++++++++++ > + tests/07revert-grow.broken | 31 +++++++++++++++ > + tests/07revert-shrink.broken | 9 +++++ > + tests/07testreshape5.broken | 12 ++++++ > + tests/09imsm-assemble.broken | 6 +++ > + tests/09imsm-create-fail-rebuild.broken | 5 +++ > + tests/09imsm-overlap.broken | 7 ++++ > + tests/10ddf-assemble-missing.broken | 6 +++ > + tests/10ddf-fail-create-race.broken | 7 ++++ > + tests/10ddf-fail-two-spares.broken | 5 +++ > + tests/10ddf-incremental-wrong-order.broken | 9 +++++ > + tests/14imsm-r1_2d-grow-r1_3d.broken | 5 +++ > + tests/14imsm-r1_2d-takeover-r0_2d.broken | 6 +++ > + tests/18imsm-r10_4d-takeover-r0_2d.broken | 5 +++ > + tests/18imsm-r1_2d-takeover-r0_1d.broken | 6 +++ > + tests/19raid6auto-repair.broken | 5 +++ > + tests/19raid6repair.broken | 5 +++ > + 24 files changed, 226 insertions(+) > + create mode 100644 tests/01r5integ.broken > + create mode 100644 tests/01raid6integ.broken > + create mode 100644 tests/04r5swap.broken > + create mode 100644 tests/07autoassemble.broken > + create mode 100644 tests/07autodetect.broken > + create mode 100644 tests/07changelevelintr.broken > + create mode 100644 tests/07changelevels.broken > + create mode 100644 tests/07reshape5intr.broken > + create mode 100644 tests/07revert-grow.broken > + create mode 100644 tests/07revert-shrink.broken > + create mode 100644 tests/07testreshape5.broken > + create mode 100644 tests/09imsm-assemble.broken > + create mode 100644 tests/09imsm-create-fail-rebuild.broken > + create mode 100644 tests/09imsm-overlap.broken > + create mode 100644 tests/10ddf-assemble-missing.broken > + create mode 100644 tests/10ddf-fail-create-race.broken > + create mode 100644 tests/10ddf-fail-two-spares.broken > + create mode 100644 tests/10ddf-incremental-wrong-order.broken > + create mode 100644 tests/14imsm-r1_2d-grow-r1_3d.broken > + create mode 100644 tests/14imsm-r1_2d-takeover-r0_2d.broken > + create mode 100644 tests/18imsm-r10_4d-takeover-r0_2d.broken > + create mode 100644 tests/18imsm-r1_2d-takeover-r0_1d.broken > + create mode 100644 tests/19raid6auto-repair.broken > + create mode 100644 tests/19raid6repair.broken > + > +diff --git a/tests/01r5integ.broken b/tests/01r5integ.broken > +new file mode 100644 > +index 0000000..2073763 > +--- /dev/null > ++++ b/tests/01r5integ.broken > +@@ -0,0 +1,7 @@ > ++fails rarely > ++ > ++Fails about 1 in every 30 runs with a sha mismatch error: > ++ > ++ c49ab26e1b01def7874af9b8a6d6d0c29fdfafe6 /dev/md0 does not match > ++ 15dc2f73262f811ada53c65e505ceec9cf025cb9 /dev/md0 with /dev/loop3 > ++ missing > +diff --git a/tests/01raid6integ.broken b/tests/01raid6integ.broken > +new file mode 100644 > +index 0000000..1df735f > +--- /dev/null > ++++ b/tests/01raid6integ.broken > +@@ -0,0 +1,7 @@ > ++fails infrequently > ++ > ++Fails about 1 in 5 with a sha mismatch: > ++ > ++ 8286c2bc045ae2cfe9f8b7ae3a898fa25db6926f /dev/md0 does not match > ++ a083a0738b58caab37fd568b91b177035ded37df /dev/md0 with /dev/loop2 and > ++ /dev/loop3 missing > +diff --git a/tests/04r5swap.broken b/tests/04r5swap.broken > +new file mode 100644 > +index 0000000..e38987d > +--- /dev/null > ++++ b/tests/04r5swap.broken > +@@ -0,0 +1,7 @@ > ++always fails > ++ > ++Fails with errors: > ++ > ++ mdadm: /dev/loop0 has no superblock - assembly aborted > ++ > ++ ERROR: no recovery happening > +diff --git a/tests/07autoassemble.broken b/tests/07autoassemble.broken > +new file mode 100644 > +index 0000000..8be0940 > +--- /dev/null > ++++ b/tests/07autoassemble.broken > +@@ -0,0 +1,8 @@ > ++always fails > ++ > ++Prints lots of messages, but the array doesn't assemble. Error > ++possibly related to: > ++ > ++ mdadm: /dev/md/1 is busy - skipping > ++ mdadm: no recogniseable superblock on /dev/md/testing:0 > ++ mdadm: /dev/md/2 is busy - skipping > +diff --git a/tests/07autodetect.broken b/tests/07autodetect.broken > +new file mode 100644 > +index 0000000..294954a > +--- /dev/null > ++++ b/tests/07autodetect.broken > +@@ -0,0 +1,5 @@ > ++always fails > ++ > ++Fails with error: > ++ > ++ ERROR: no resync happening > +diff --git a/tests/07changelevelintr.broken b/tests/07changelevelintr.broken > +new file mode 100644 > +index 0000000..284b490 > +--- /dev/null > ++++ b/tests/07changelevelintr.broken > +@@ -0,0 +1,9 @@ > ++always fails > ++ > ++Fails with errors: > ++ > ++ mdadm: this change will reduce the size of the array. > ++ use --grow --array-size first to truncate array. > ++ e.g. mdadm --grow /dev/md0 --array-size 56832 > ++ > ++ ERROR: no reshape happening > +diff --git a/tests/07changelevels.broken b/tests/07changelevels.broken > +new file mode 100644 > +index 0000000..9b930d9 > +--- /dev/null > ++++ b/tests/07changelevels.broken > +@@ -0,0 +1,9 @@ > ++always fails > ++ > ++Fails with errors: > ++ > ++ mdadm: /dev/loop0 is smaller than given size. 18976K < 19968K + metadata > ++ mdadm: /dev/loop1 is smaller than given size. 18976K < 19968K + metadata > ++ mdadm: /dev/loop2 is smaller than given size. 18976K < 19968K + metadata > ++ > ++ ERROR: /dev/md0 isn't a block device. > +diff --git a/tests/07reshape5intr.broken b/tests/07reshape5intr.broken > +new file mode 100644 > +index 0000000..efe52a6 > +--- /dev/null > ++++ b/tests/07reshape5intr.broken > +@@ -0,0 +1,45 @@ > ++always fails > ++ > ++This patch, recently added to md-next causes the test to always fail: > ++ > ++7e6ba434cc60 ("md: don't unregister sync_thread with reconfig_mutex > ++held") > ++ > ++The new error is simply: > ++ > ++ ERROR: no reshape happening > ++ > ++Before the patch, the error seen is below. > ++ > ++-- > ++ > ++fails infrequently > ++ > ++Fails roughly 1 in 4 runs with errors: > ++ > ++ mdadm: Merging with already-assembled /dev/md/0 > ++ mdadm: cannot re-read metadata from /dev/loop6 - aborting > ++ > ++ ERROR: no reshape happening > ++ > ++Also have seen a random deadlock: > ++ > ++ INFO: task mdadm:109702 blocked for more than 30 seconds. > ++ Not tainted 5.18.0-rc3-eid-vmlocalyes-dbg-00095-g3c2b5427979d #2040 > ++ "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. > ++ task:mdadm state:D stack: 0 pid:109702 ppid: 1 flags:0x00004000 > ++ Call Trace: > ++ <TASK> > ++ __schedule+0x67e/0x13b0 > ++ schedule+0x82/0x110 > ++ mddev_suspend+0x2e1/0x330 > ++ suspend_lo_store+0xbd/0x140 > ++ md_attr_store+0xcb/0x130 > ++ sysfs_kf_write+0x89/0xb0 > ++ kernfs_fop_write_iter+0x202/0x2c0 > ++ new_sync_write+0x222/0x330 > ++ vfs_write+0x3bc/0x4d0 > ++ ksys_write+0xd9/0x180 > ++ __x64_sys_write+0x43/0x50 > ++ do_syscall_64+0x3b/0x90 > ++ entry_SYSCALL_64_after_hwframe+0x44/0xae > +diff --git a/tests/07revert-grow.broken b/tests/07revert-grow.broken > +new file mode 100644 > +index 0000000..9b6db86 > +--- /dev/null > ++++ b/tests/07revert-grow.broken > +@@ -0,0 +1,31 @@ > ++always fails > ++ > ++This patch, recently added to md-next causes the test to always fail: > ++ > ++7e6ba434cc60 ("md: don't unregister sync_thread with reconfig_mutex held") > ++ > ++The errors are: > ++ > ++ mdadm: No active reshape to revert on /dev/loop0 > ++ ERROR: active raid5 not found > ++ > ++Before the patch, the error seen is below. > ++ > ++-- > ++ > ++fails rarely > ++ > ++Fails about 1 in every 30 runs with errors: > ++ > ++ mdadm: Merging with already-assembled /dev/md/0 > ++ mdadm: backup file /tmp/md-backup inaccessible: No such file or directory > ++ mdadm: failed to add /dev/loop1 to /dev/md/0: Invalid argument > ++ mdadm: failed to add /dev/loop2 to /dev/md/0: Invalid argument > ++ mdadm: failed to add /dev/loop3 to /dev/md/0: Invalid argument > ++ mdadm: failed to add /dev/loop0 to /dev/md/0: Invalid argument > ++ mdadm: /dev/md/0 assembled from 1 drive - need all 5 to start it > ++ (use --run to insist). > ++ > ++ grep: /sys/block/md*/md/sync_action: No such file or directory > ++ > ++ ERROR: active raid5 not found > +diff --git a/tests/07revert-shrink.broken b/tests/07revert-shrink.broken > +new file mode 100644 > +index 0000000..c33c39e > +--- /dev/null > ++++ b/tests/07revert-shrink.broken > +@@ -0,0 +1,9 @@ > ++always fails > ++ > ++Fails with errors: > ++ > ++ mdadm: this change will reduce the size of the array. > ++ use --grow --array-size first to truncate array. > ++ e.g. mdadm --grow /dev/md0 --array-size 53760 > ++ > ++ ERROR: active raid5 not found > +diff --git a/tests/07testreshape5.broken b/tests/07testreshape5.broken > +new file mode 100644 > +index 0000000..a8ce03e > +--- /dev/null > ++++ b/tests/07testreshape5.broken > +@@ -0,0 +1,12 @@ > ++always fails > ++ > ++Test seems to run 'test_stripe' at $dir directory, but $dir is never > ++set. If $dir is adjusted to $PWD, the test still fails with: > ++ > ++ mdadm: /dev/loop2 is not suitable for this array. > ++ mdadm: create aborted > ++ ++ return 1 > ++ ++ cmp -s -n 8192 /dev/md0 /tmp/RandFile > ++ ++ echo cmp failed > ++ cmp failed > ++ ++ exit 2 > +diff --git a/tests/09imsm-assemble.broken b/tests/09imsm-assemble.broken > +new file mode 100644 > +index 0000000..a6d4d5c > +--- /dev/null > ++++ b/tests/09imsm-assemble.broken > +@@ -0,0 +1,6 @@ > ++fails infrequently > ++ > ++Fails roughly 1 in 10 runs with errors: > ++ > ++ mdadm: /dev/loop2 is still in use, cannot remove. > ++ /dev/loop2 removal from /dev/md/container should have succeeded > +diff --git a/tests/09imsm-create-fail-rebuild.broken b/tests/09imsm-create-fail-rebuild.broken > +new file mode 100644 > +index 0000000..40c4b29 > +--- /dev/null > ++++ b/tests/09imsm-create-fail-rebuild.broken > +@@ -0,0 +1,5 @@ > ++always fails > ++ > ++Fails with error: > ++ > ++ **Error**: Array size mismatch - expected 3072, actual 16384 > +diff --git a/tests/09imsm-overlap.broken b/tests/09imsm-overlap.broken > +new file mode 100644 > +index 0000000..e7ccab7 > +--- /dev/null > ++++ b/tests/09imsm-overlap.broken > +@@ -0,0 +1,7 @@ > ++always fails > ++ > ++Fails with errors: > ++ > ++ **Error**: Offset mismatch - expected 15360, actual 0 > ++ **Error**: Offset mismatch - expected 15360, actual 0 > ++ /dev/md/vol3 failed check > +diff --git a/tests/10ddf-assemble-missing.broken b/tests/10ddf-assemble-missing.broken > +new file mode 100644 > +index 0000000..bfd8d10 > +--- /dev/null > ++++ b/tests/10ddf-assemble-missing.broken > +@@ -0,0 +1,6 @@ > ++always fails > ++ > ++Fails with errors: > ++ > ++ ERROR: /dev/md/vol0 has unexpected state on /dev/loop10 > ++ ERROR: unexpected number of online disks on /dev/loop10 > +diff --git a/tests/10ddf-fail-create-race.broken b/tests/10ddf-fail-create-race.broken > +new file mode 100644 > +index 0000000..6c0df02 > +--- /dev/null > ++++ b/tests/10ddf-fail-create-race.broken > +@@ -0,0 +1,7 @@ > ++usually fails > ++ > ++Fails about 9 out of 10 times with many errors: > ++ > ++ mdadm: cannot open MISSING: No such file or directory > ++ ERROR: non-degraded array found > ++ ERROR: disk 0 not marked as failed in meta data > +diff --git a/tests/10ddf-fail-two-spares.broken b/tests/10ddf-fail-two-spares.broken > +new file mode 100644 > +index 0000000..eeea56d > +--- /dev/null > ++++ b/tests/10ddf-fail-two-spares.broken > +@@ -0,0 +1,5 @@ > ++fails infrequently > ++ > ++Fails roughly 1 in 3 with error: > ++ > ++ ERROR: /dev/md/vol1 should be optimal in meta data > +diff --git a/tests/10ddf-incremental-wrong-order.broken b/tests/10ddf-incremental-wrong-order.broken > +new file mode 100644 > +index 0000000..a5af3ba > +--- /dev/null > ++++ b/tests/10ddf-incremental-wrong-order.broken > +@@ -0,0 +1,9 @@ > ++always fails > ++ > ++Fails with errors: > ++ ERROR: sha1sum of /dev/md/vol0 has changed > ++ ERROR: /dev/md/vol0 has unexpected state on /dev/loop10 > ++ ERROR: unexpected number of online disks on /dev/loop10 > ++ ERROR: /dev/md/vol0 has unexpected state on /dev/loop8 > ++ ERROR: unexpected number of online disks on /dev/loop8 > ++ ERROR: sha1sum of /dev/md/vol0 has changed > +diff --git a/tests/14imsm-r1_2d-grow-r1_3d.broken b/tests/14imsm-r1_2d-grow-r1_3d.broken > +new file mode 100644 > +index 0000000..4ef1d40 > +--- /dev/null > ++++ b/tests/14imsm-r1_2d-grow-r1_3d.broken > +@@ -0,0 +1,5 @@ > ++always fails > ++ > ++Fails with error: > ++ > ++ mdadm/tests/func.sh: line 325: dvsize/chunk: division by 0 (error token is "chunk") > +diff --git a/tests/14imsm-r1_2d-takeover-r0_2d.broken b/tests/14imsm-r1_2d-takeover-r0_2d.broken > +new file mode 100644 > +index 0000000..89cd4e5 > +--- /dev/null > ++++ b/tests/14imsm-r1_2d-takeover-r0_2d.broken > +@@ -0,0 +1,6 @@ > ++always fails > ++ > ++Fails with error: > ++ > ++ tests/func.sh: line 325: dvsize/chunk: division by 0 (error token > ++ is "chunk") > +diff --git a/tests/18imsm-r10_4d-takeover-r0_2d.broken b/tests/18imsm-r10_4d-takeover-r0_2d.broken > +new file mode 100644 > +index 0000000..a27399f > +--- /dev/null > ++++ b/tests/18imsm-r10_4d-takeover-r0_2d.broken > +@@ -0,0 +1,5 @@ > ++fails rarely > ++ > ++Fails about 1 run in 100 with message: > ++ > ++ ERROR: size is wrong for /dev/md/vol0: 2 * 5120 (chunk=128) = 20480, not 0 > +diff --git a/tests/18imsm-r1_2d-takeover-r0_1d.broken b/tests/18imsm-r1_2d-takeover-r0_1d.broken > +new file mode 100644 > +index 0000000..aa1982e > +--- /dev/null > ++++ b/tests/18imsm-r1_2d-takeover-r0_1d.broken > +@@ -0,0 +1,6 @@ > ++always fails > ++ > ++Fails with error: > ++ > ++ tests/func.sh: line 325: dvsize/chunk: division by 0 (error token > ++ is "chunk") > +diff --git a/tests/19raid6auto-repair.broken b/tests/19raid6auto-repair.broken > +new file mode 100644 > +index 0000000..e91a142 > +--- /dev/null > ++++ b/tests/19raid6auto-repair.broken > +@@ -0,0 +1,5 @@ > ++always fails > ++ > ++Fails with: > ++ > ++ "should detect errors" > +diff --git a/tests/19raid6repair.broken b/tests/19raid6repair.broken > +new file mode 100644 > +index 0000000..e91a142 > +--- /dev/null > ++++ b/tests/19raid6repair.broken > +@@ -0,0 +1,5 @@ > ++always fails > ++ > ++Fails with: > ++ > ++ "should detect errors" > +-- > +2.39.1 > + > diff --git a/meta/recipes-extended/mdadm/files/run-ptest b/meta/recipes-extended/mdadm/files/run-ptest > index fae8071d43..2380c322a9 100644 > --- a/meta/recipes-extended/mdadm/files/run-ptest > +++ b/meta/recipes-extended/mdadm/files/run-ptest > @@ -2,6 +2,6 @@ > > mkdir -p /mdadm-testing-dir > # make the test continue to execute even one fail > -dir=. ./test --keep-going --disable-integrity > +dir=. ./test --keep-going --disable-integrity --skip-broken > > rm -rf /mdadm-testing-dir/* > diff --git a/meta/recipes-extended/mdadm/mdadm_4.2.bb b/meta/recipes-extended/mdadm/mdadm_4.2.bb > index 033766dc89..0d0e8f5922 100644 > --- a/meta/recipes-extended/mdadm/mdadm_4.2.bb > +++ b/meta/recipes-extended/mdadm/mdadm_4.2.bb > @@ -36,6 +36,8 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/raid/mdadm/${BPN}-${PV}.tar.xz \ > file://0002-DDF-Fix-NULL-pointer-dereference-in-validate_geometr.patch \ > file://0003-mdadm-Grow-Fix-use-after-close-bug-by-closing-after-.patch \ > file://0004-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch \ > + file://0005-mdadm-test-Mark-and-ignore-broken-test-failures.patch \ > + file://0006-tests-Add-broken-files-for-all-broken-tests.patch \ > " > > SRC_URI[sha256sum] = "461c215670864bb74a4d1a3620684aa2b2f8296dffa06743f26dda5557acf01d" > -- > 2.39.1 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#183634): https://lists.openembedded.org/g/openembedded-core/message/183634 > Mute This Topic: https://lists.openembedded.org/mt/99851485/1686489 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [OE-core] [PATCH 4/4] mdadm: skip running known broken ptests 2023-06-29 14:54 ` [OE-core] " Alexander Kanavin @ 2023-06-30 9:17 ` Ovidiu Panait 2023-06-30 9:46 ` Alexander Kanavin 0 siblings, 1 reply; 8+ messages in thread From: Ovidiu Panait @ 2023-06-30 9:17 UTC (permalink / raw) To: Alexander Kanavin; +Cc: openembedded-core Hi Alex, On 6/29/23 17:54, Alexander Kanavin wrote: > CAUTION: This email comes from a non Wind River email account! > Do not click links or open attachments unless you recognize the sender and know the content is safe. > > Thanks for working on reenabling this. mdadm is currently taken out of > ptest lists because > # mdadm \ # Tests rely on non-deterministic sleep() amounts > > Is this resolved, and can we re-add mdadm to SLOW or FAST lists? I did multiple test runs with a qemu-x86-64 image and kvm and the results seem consistent - always ~12 min per run, no failures: # ptest-runner mdadm ... PASS: /usr/lib/mdadm/ptest/tests/21raid5cache DURATION: 724 END: /usr/lib/mdadm/ptest 2023-06-30T08:37 STOP: ptest-runner TOTAL: 1 FAIL: 0 I think mdadm-ptest can be added back to PTESTS_SLOW. Ovidiu > Alex > > On Thu, 29 Jun 2023 at 16:19, Ovidiu Panait via lists.openembedded.org > <ovidiu.panait=windriver.com@lists.openembedded.org> wrote: >> From: Ovidiu Panait <ovidiu.panait@windriver.com> >> >> Upstream marked some testcases as "KNOWN BROKEN" and introduced the >> "--skip-broken" flag to ignore them when running the testsuite (commits [1] >> and [2]). Backport these two commits to get rid of the last remaining ptest >> failures. >> >> Also, add the "--skip-broken" option to the run-ptest script. >> >> [1] https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=28520bf114b3 >> [2] https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=daa86d663476 >> >> Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> >> --- >> ...Mark-and-ignore-broken-test-failures.patch | 128 +++++ >> ...dd-broken-files-for-all-broken-tests.patch | 454 ++++++++++++++++++ >> meta/recipes-extended/mdadm/files/run-ptest | 2 +- >> meta/recipes-extended/mdadm/mdadm_4.2.bb | 2 + >> 4 files changed, 585 insertions(+), 1 deletion(-) >> create mode 100644 meta/recipes-extended/mdadm/files/0005-mdadm-test-Mark-and-ignore-broken-test-failures.patch >> create mode 100644 meta/recipes-extended/mdadm/files/0006-tests-Add-broken-files-for-all-broken-tests.patch >> >> diff --git a/meta/recipes-extended/mdadm/files/0005-mdadm-test-Mark-and-ignore-broken-test-failures.patch b/meta/recipes-extended/mdadm/files/0005-mdadm-test-Mark-and-ignore-broken-test-failures.patch >> new file mode 100644 >> index 0000000000..c55bfb125b >> --- /dev/null >> +++ b/meta/recipes-extended/mdadm/files/0005-mdadm-test-Mark-and-ignore-broken-test-failures.patch >> @@ -0,0 +1,128 @@ >> +From feab1f72fcf032a4d21d0a69eb61b23a5ddb3352 Mon Sep 17 00:00:00 2001 >> +From: Logan Gunthorpe <logang@deltatee.com> >> +Date: Wed, 22 Jun 2022 14:25:18 -0600 >> +Subject: [PATCH 5/6] mdadm/test: Mark and ignore broken test failures >> + >> +Add functionality to continue if a test marked as broken fails. >> + >> +To mark a test as broken, a file with the same name but with the suffix >> +'.broken' should exist. The first line in the file will be printed with >> +a KNOWN BROKEN message; the rest of the file can describe the how the >> +test is broken. >> + >> +Also adds --skip-broken and --skip-always-broken to skip all the tests >> +that have a .broken file or to skip all tests whose .broken file's first >> +line contains the keyword always. >> + >> +Signed-off-by: Logan Gunthorpe <logang@deltatee.com> >> +Signed-off-by: Jes Sorensen <jes@trained-monkey.org> >> + >> +Upstream-Status: Backport >> + >> +Reference to upstream patch: >> +https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=28520bf114b3 >> + >> +[OP: adjusted context for mdadm-4.2] >> +Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> >> +--- >> + test | 37 +++++++++++++++++++++++++++++++++++-- >> + 1 file changed, 35 insertions(+), 2 deletions(-) >> + >> +diff --git a/test b/test >> +index 8f189d9..ee8fba1 100755 >> +--- a/test >> ++++ b/test >> +@@ -10,6 +10,8 @@ devlist= >> + >> + savelogs=0 >> + exitonerror=1 >> ++ctrl_c_error=0 >> ++skipbroken=0 >> + prefix='[0-9][0-9]' >> + >> + # use loop devices by default if doesn't specify --dev >> +@@ -35,6 +37,7 @@ die() { >> + >> + ctrl_c() { >> + exitonerror=1 >> ++ ctrl_c_error=1 >> + } >> + >> + # mdadm always adds --quiet, and we want to see any unexpected messages >> +@@ -79,8 +82,21 @@ mdadm() { >> + do_test() { >> + _script=$1 >> + _basename=`basename $_script` >> ++ _broken=0 >> ++ >> + if [ -f "$_script" ] >> + then >> ++ if [ -f "${_script}.broken" ]; then >> ++ _broken=1 >> ++ _broken_msg=$(head -n1 "${_script}.broken" | tr -d '\n') >> ++ if [ "$skipbroken" == "all" ]; then >> ++ return >> ++ elif [ "$skipbroken" == "always" ] && >> ++ [[ "$_broken_msg" == *always* ]]; then >> ++ return >> ++ fi >> ++ fi >> ++ >> + rm -f $targetdir/stderr >> + # this might have been reset: restore the default. >> + echo 2000 > /proc/sys/dev/raid/speed_limit_max >> +@@ -97,10 +113,15 @@ do_test() { >> + else >> + save_log fail >> + _fail=1 >> ++ if [ "$_broken" == "1" ]; then >> ++ echo " (KNOWN BROKEN TEST: $_broken_msg)" >> ++ fi >> + fi >> + [ "$savelogs" == "1" ] && >> + mv -f $targetdir/log $logdir/$_basename.log >> +- [ "$_fail" == "1" -a "$exitonerror" == "1" ] && exit 1 >> ++ [ "$ctrl_c_error" == "1" ] && exit 1 >> ++ [ "$_fail" == "1" -a "$exitonerror" == "1" \ >> ++ -a "$_broken" == "0" ] && exit 1 >> + fi >> + } >> + >> +@@ -117,6 +138,8 @@ do_help() { >> + --logdir=directory Directory to save all logfiles in >> + --save-logs Usually use with --logdir together >> + --keep-going | --no-error Don't stop on error, ie. run all tests >> ++ --skip-broken Skip tests that are known to be broken >> ++ --skip-always-broken Skip tests that are known to always fail >> + --dev=loop|lvm|ram|disk Use loop devices (default), LVM, RAM or disk >> + --disks= Provide a bunch of physical devices for test >> + --volgroup=name LVM volume group for LVM test >> +@@ -211,6 +234,12 @@ parse_args() { >> + --keep-going | --no-error ) >> + exitonerror=0 >> + ;; >> ++ --skip-broken ) >> ++ skipbroken=all >> ++ ;; >> ++ --skip-always-broken ) >> ++ skipbroken=always >> ++ ;; >> + --disable-multipath ) >> + unset MULTIPATH >> + ;; >> +@@ -275,7 +304,11 @@ main() { >> + if [ $script == "$testdir/11spare-migration" ];then >> + continue >> + fi >> +- do_test $script >> ++ case $script in >> ++ *.broken) ;; >> ++ *) >> ++ do_test $script >> ++ esac >> + done >> + fi >> + >> +-- >> +2.39.1 >> + >> diff --git a/meta/recipes-extended/mdadm/files/0006-tests-Add-broken-files-for-all-broken-tests.patch b/meta/recipes-extended/mdadm/files/0006-tests-Add-broken-files-for-all-broken-tests.patch >> new file mode 100644 >> index 0000000000..115b23bac5 >> --- /dev/null >> +++ b/meta/recipes-extended/mdadm/files/0006-tests-Add-broken-files-for-all-broken-tests.patch >> @@ -0,0 +1,454 @@ >> +From fd1c26ba129b069d9f73afaefdbe53683de3814a Mon Sep 17 00:00:00 2001 >> +From: Logan Gunthorpe <logang@deltatee.com> >> +Date: Wed, 22 Jun 2022 14:25:19 -0600 >> +Subject: [PATCH 6/6] tests: Add broken files for all broken tests >> + >> +Each broken file contains the rough frequency of brokeness as well >> +as a brief explanation of what happens when it breaks. Estimates >> +of failure rates are not statistically significant and can vary >> +run to run. >> + >> +This is really just a view from my window. Tests were done on a >> +small VM with the default loop devices, not real hardware. We've >> +seen different kernel configurations can cause bugs to appear as well >> +(ie. different block schedulers). It may also be that different race >> +conditions will be seen on machines with different performance >> +characteristics. >> + >> +These annotations were done with the kernel currently in md/md-next: >> + >> + facef3b96c5b ("md: Notify sysfs sync_completed in md_reap_sync_thread()") >> + >> +Signed-off-by: Logan Gunthorpe <logang@deltatee.com> >> +Signed-off-by: Jes Sorensen <jes@trained-monkey.org> >> + >> +Upstream-Status: Backport >> + >> +Reference to upstream patch: >> +https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=daa86d663476 >> + >> +Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> >> +--- >> + tests/01r5integ.broken | 7 ++++ >> + tests/01raid6integ.broken | 7 ++++ >> + tests/04r5swap.broken | 7 ++++ >> + tests/07autoassemble.broken | 8 ++++ >> + tests/07autodetect.broken | 5 +++ >> + tests/07changelevelintr.broken | 9 +++++ >> + tests/07changelevels.broken | 9 +++++ >> + tests/07reshape5intr.broken | 45 ++++++++++++++++++++++ >> + tests/07revert-grow.broken | 31 +++++++++++++++ >> + tests/07revert-shrink.broken | 9 +++++ >> + tests/07testreshape5.broken | 12 ++++++ >> + tests/09imsm-assemble.broken | 6 +++ >> + tests/09imsm-create-fail-rebuild.broken | 5 +++ >> + tests/09imsm-overlap.broken | 7 ++++ >> + tests/10ddf-assemble-missing.broken | 6 +++ >> + tests/10ddf-fail-create-race.broken | 7 ++++ >> + tests/10ddf-fail-two-spares.broken | 5 +++ >> + tests/10ddf-incremental-wrong-order.broken | 9 +++++ >> + tests/14imsm-r1_2d-grow-r1_3d.broken | 5 +++ >> + tests/14imsm-r1_2d-takeover-r0_2d.broken | 6 +++ >> + tests/18imsm-r10_4d-takeover-r0_2d.broken | 5 +++ >> + tests/18imsm-r1_2d-takeover-r0_1d.broken | 6 +++ >> + tests/19raid6auto-repair.broken | 5 +++ >> + tests/19raid6repair.broken | 5 +++ >> + 24 files changed, 226 insertions(+) >> + create mode 100644 tests/01r5integ.broken >> + create mode 100644 tests/01raid6integ.broken >> + create mode 100644 tests/04r5swap.broken >> + create mode 100644 tests/07autoassemble.broken >> + create mode 100644 tests/07autodetect.broken >> + create mode 100644 tests/07changelevelintr.broken >> + create mode 100644 tests/07changelevels.broken >> + create mode 100644 tests/07reshape5intr.broken >> + create mode 100644 tests/07revert-grow.broken >> + create mode 100644 tests/07revert-shrink.broken >> + create mode 100644 tests/07testreshape5.broken >> + create mode 100644 tests/09imsm-assemble.broken >> + create mode 100644 tests/09imsm-create-fail-rebuild.broken >> + create mode 100644 tests/09imsm-overlap.broken >> + create mode 100644 tests/10ddf-assemble-missing.broken >> + create mode 100644 tests/10ddf-fail-create-race.broken >> + create mode 100644 tests/10ddf-fail-two-spares.broken >> + create mode 100644 tests/10ddf-incremental-wrong-order.broken >> + create mode 100644 tests/14imsm-r1_2d-grow-r1_3d.broken >> + create mode 100644 tests/14imsm-r1_2d-takeover-r0_2d.broken >> + create mode 100644 tests/18imsm-r10_4d-takeover-r0_2d.broken >> + create mode 100644 tests/18imsm-r1_2d-takeover-r0_1d.broken >> + create mode 100644 tests/19raid6auto-repair.broken >> + create mode 100644 tests/19raid6repair.broken >> + >> +diff --git a/tests/01r5integ.broken b/tests/01r5integ.broken >> +new file mode 100644 >> +index 0000000..2073763 >> +--- /dev/null >> ++++ b/tests/01r5integ.broken >> +@@ -0,0 +1,7 @@ >> ++fails rarely >> ++ >> ++Fails about 1 in every 30 runs with a sha mismatch error: >> ++ >> ++ c49ab26e1b01def7874af9b8a6d6d0c29fdfafe6 /dev/md0 does not match >> ++ 15dc2f73262f811ada53c65e505ceec9cf025cb9 /dev/md0 with /dev/loop3 >> ++ missing >> +diff --git a/tests/01raid6integ.broken b/tests/01raid6integ.broken >> +new file mode 100644 >> +index 0000000..1df735f >> +--- /dev/null >> ++++ b/tests/01raid6integ.broken >> +@@ -0,0 +1,7 @@ >> ++fails infrequently >> ++ >> ++Fails about 1 in 5 with a sha mismatch: >> ++ >> ++ 8286c2bc045ae2cfe9f8b7ae3a898fa25db6926f /dev/md0 does not match >> ++ a083a0738b58caab37fd568b91b177035ded37df /dev/md0 with /dev/loop2 and >> ++ /dev/loop3 missing >> +diff --git a/tests/04r5swap.broken b/tests/04r5swap.broken >> +new file mode 100644 >> +index 0000000..e38987d >> +--- /dev/null >> ++++ b/tests/04r5swap.broken >> +@@ -0,0 +1,7 @@ >> ++always fails >> ++ >> ++Fails with errors: >> ++ >> ++ mdadm: /dev/loop0 has no superblock - assembly aborted >> ++ >> ++ ERROR: no recovery happening >> +diff --git a/tests/07autoassemble.broken b/tests/07autoassemble.broken >> +new file mode 100644 >> +index 0000000..8be0940 >> +--- /dev/null >> ++++ b/tests/07autoassemble.broken >> +@@ -0,0 +1,8 @@ >> ++always fails >> ++ >> ++Prints lots of messages, but the array doesn't assemble. Error >> ++possibly related to: >> ++ >> ++ mdadm: /dev/md/1 is busy - skipping >> ++ mdadm: no recogniseable superblock on /dev/md/testing:0 >> ++ mdadm: /dev/md/2 is busy - skipping >> +diff --git a/tests/07autodetect.broken b/tests/07autodetect.broken >> +new file mode 100644 >> +index 0000000..294954a >> +--- /dev/null >> ++++ b/tests/07autodetect.broken >> +@@ -0,0 +1,5 @@ >> ++always fails >> ++ >> ++Fails with error: >> ++ >> ++ ERROR: no resync happening >> +diff --git a/tests/07changelevelintr.broken b/tests/07changelevelintr.broken >> +new file mode 100644 >> +index 0000000..284b490 >> +--- /dev/null >> ++++ b/tests/07changelevelintr.broken >> +@@ -0,0 +1,9 @@ >> ++always fails >> ++ >> ++Fails with errors: >> ++ >> ++ mdadm: this change will reduce the size of the array. >> ++ use --grow --array-size first to truncate array. >> ++ e.g. mdadm --grow /dev/md0 --array-size 56832 >> ++ >> ++ ERROR: no reshape happening >> +diff --git a/tests/07changelevels.broken b/tests/07changelevels.broken >> +new file mode 100644 >> +index 0000000..9b930d9 >> +--- /dev/null >> ++++ b/tests/07changelevels.broken >> +@@ -0,0 +1,9 @@ >> ++always fails >> ++ >> ++Fails with errors: >> ++ >> ++ mdadm: /dev/loop0 is smaller than given size. 18976K < 19968K + metadata >> ++ mdadm: /dev/loop1 is smaller than given size. 18976K < 19968K + metadata >> ++ mdadm: /dev/loop2 is smaller than given size. 18976K < 19968K + metadata >> ++ >> ++ ERROR: /dev/md0 isn't a block device. >> +diff --git a/tests/07reshape5intr.broken b/tests/07reshape5intr.broken >> +new file mode 100644 >> +index 0000000..efe52a6 >> +--- /dev/null >> ++++ b/tests/07reshape5intr.broken >> +@@ -0,0 +1,45 @@ >> ++always fails >> ++ >> ++This patch, recently added to md-next causes the test to always fail: >> ++ >> ++7e6ba434cc60 ("md: don't unregister sync_thread with reconfig_mutex >> ++held") >> ++ >> ++The new error is simply: >> ++ >> ++ ERROR: no reshape happening >> ++ >> ++Before the patch, the error seen is below. >> ++ >> ++-- >> ++ >> ++fails infrequently >> ++ >> ++Fails roughly 1 in 4 runs with errors: >> ++ >> ++ mdadm: Merging with already-assembled /dev/md/0 >> ++ mdadm: cannot re-read metadata from /dev/loop6 - aborting >> ++ >> ++ ERROR: no reshape happening >> ++ >> ++Also have seen a random deadlock: >> ++ >> ++ INFO: task mdadm:109702 blocked for more than 30 seconds. >> ++ Not tainted 5.18.0-rc3-eid-vmlocalyes-dbg-00095-g3c2b5427979d #2040 >> ++ "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. >> ++ task:mdadm state:D stack: 0 pid:109702 ppid: 1 flags:0x00004000 >> ++ Call Trace: >> ++ <TASK> >> ++ __schedule+0x67e/0x13b0 >> ++ schedule+0x82/0x110 >> ++ mddev_suspend+0x2e1/0x330 >> ++ suspend_lo_store+0xbd/0x140 >> ++ md_attr_store+0xcb/0x130 >> ++ sysfs_kf_write+0x89/0xb0 >> ++ kernfs_fop_write_iter+0x202/0x2c0 >> ++ new_sync_write+0x222/0x330 >> ++ vfs_write+0x3bc/0x4d0 >> ++ ksys_write+0xd9/0x180 >> ++ __x64_sys_write+0x43/0x50 >> ++ do_syscall_64+0x3b/0x90 >> ++ entry_SYSCALL_64_after_hwframe+0x44/0xae >> +diff --git a/tests/07revert-grow.broken b/tests/07revert-grow.broken >> +new file mode 100644 >> +index 0000000..9b6db86 >> +--- /dev/null >> ++++ b/tests/07revert-grow.broken >> +@@ -0,0 +1,31 @@ >> ++always fails >> ++ >> ++This patch, recently added to md-next causes the test to always fail: >> ++ >> ++7e6ba434cc60 ("md: don't unregister sync_thread with reconfig_mutex held") >> ++ >> ++The errors are: >> ++ >> ++ mdadm: No active reshape to revert on /dev/loop0 >> ++ ERROR: active raid5 not found >> ++ >> ++Before the patch, the error seen is below. >> ++ >> ++-- >> ++ >> ++fails rarely >> ++ >> ++Fails about 1 in every 30 runs with errors: >> ++ >> ++ mdadm: Merging with already-assembled /dev/md/0 >> ++ mdadm: backup file /tmp/md-backup inaccessible: No such file or directory >> ++ mdadm: failed to add /dev/loop1 to /dev/md/0: Invalid argument >> ++ mdadm: failed to add /dev/loop2 to /dev/md/0: Invalid argument >> ++ mdadm: failed to add /dev/loop3 to /dev/md/0: Invalid argument >> ++ mdadm: failed to add /dev/loop0 to /dev/md/0: Invalid argument >> ++ mdadm: /dev/md/0 assembled from 1 drive - need all 5 to start it >> ++ (use --run to insist). >> ++ >> ++ grep: /sys/block/md*/md/sync_action: No such file or directory >> ++ >> ++ ERROR: active raid5 not found >> +diff --git a/tests/07revert-shrink.broken b/tests/07revert-shrink.broken >> +new file mode 100644 >> +index 0000000..c33c39e >> +--- /dev/null >> ++++ b/tests/07revert-shrink.broken >> +@@ -0,0 +1,9 @@ >> ++always fails >> ++ >> ++Fails with errors: >> ++ >> ++ mdadm: this change will reduce the size of the array. >> ++ use --grow --array-size first to truncate array. >> ++ e.g. mdadm --grow /dev/md0 --array-size 53760 >> ++ >> ++ ERROR: active raid5 not found >> +diff --git a/tests/07testreshape5.broken b/tests/07testreshape5.broken >> +new file mode 100644 >> +index 0000000..a8ce03e >> +--- /dev/null >> ++++ b/tests/07testreshape5.broken >> +@@ -0,0 +1,12 @@ >> ++always fails >> ++ >> ++Test seems to run 'test_stripe' at $dir directory, but $dir is never >> ++set. If $dir is adjusted to $PWD, the test still fails with: >> ++ >> ++ mdadm: /dev/loop2 is not suitable for this array. >> ++ mdadm: create aborted >> ++ ++ return 1 >> ++ ++ cmp -s -n 8192 /dev/md0 /tmp/RandFile >> ++ ++ echo cmp failed >> ++ cmp failed >> ++ ++ exit 2 >> +diff --git a/tests/09imsm-assemble.broken b/tests/09imsm-assemble.broken >> +new file mode 100644 >> +index 0000000..a6d4d5c >> +--- /dev/null >> ++++ b/tests/09imsm-assemble.broken >> +@@ -0,0 +1,6 @@ >> ++fails infrequently >> ++ >> ++Fails roughly 1 in 10 runs with errors: >> ++ >> ++ mdadm: /dev/loop2 is still in use, cannot remove. >> ++ /dev/loop2 removal from /dev/md/container should have succeeded >> +diff --git a/tests/09imsm-create-fail-rebuild.broken b/tests/09imsm-create-fail-rebuild.broken >> +new file mode 100644 >> +index 0000000..40c4b29 >> +--- /dev/null >> ++++ b/tests/09imsm-create-fail-rebuild.broken >> +@@ -0,0 +1,5 @@ >> ++always fails >> ++ >> ++Fails with error: >> ++ >> ++ **Error**: Array size mismatch - expected 3072, actual 16384 >> +diff --git a/tests/09imsm-overlap.broken b/tests/09imsm-overlap.broken >> +new file mode 100644 >> +index 0000000..e7ccab7 >> +--- /dev/null >> ++++ b/tests/09imsm-overlap.broken >> +@@ -0,0 +1,7 @@ >> ++always fails >> ++ >> ++Fails with errors: >> ++ >> ++ **Error**: Offset mismatch - expected 15360, actual 0 >> ++ **Error**: Offset mismatch - expected 15360, actual 0 >> ++ /dev/md/vol3 failed check >> +diff --git a/tests/10ddf-assemble-missing.broken b/tests/10ddf-assemble-missing.broken >> +new file mode 100644 >> +index 0000000..bfd8d10 >> +--- /dev/null >> ++++ b/tests/10ddf-assemble-missing.broken >> +@@ -0,0 +1,6 @@ >> ++always fails >> ++ >> ++Fails with errors: >> ++ >> ++ ERROR: /dev/md/vol0 has unexpected state on /dev/loop10 >> ++ ERROR: unexpected number of online disks on /dev/loop10 >> +diff --git a/tests/10ddf-fail-create-race.broken b/tests/10ddf-fail-create-race.broken >> +new file mode 100644 >> +index 0000000..6c0df02 >> +--- /dev/null >> ++++ b/tests/10ddf-fail-create-race.broken >> +@@ -0,0 +1,7 @@ >> ++usually fails >> ++ >> ++Fails about 9 out of 10 times with many errors: >> ++ >> ++ mdadm: cannot open MISSING: No such file or directory >> ++ ERROR: non-degraded array found >> ++ ERROR: disk 0 not marked as failed in meta data >> +diff --git a/tests/10ddf-fail-two-spares.broken b/tests/10ddf-fail-two-spares.broken >> +new file mode 100644 >> +index 0000000..eeea56d >> +--- /dev/null >> ++++ b/tests/10ddf-fail-two-spares.broken >> +@@ -0,0 +1,5 @@ >> ++fails infrequently >> ++ >> ++Fails roughly 1 in 3 with error: >> ++ >> ++ ERROR: /dev/md/vol1 should be optimal in meta data >> +diff --git a/tests/10ddf-incremental-wrong-order.broken b/tests/10ddf-incremental-wrong-order.broken >> +new file mode 100644 >> +index 0000000..a5af3ba >> +--- /dev/null >> ++++ b/tests/10ddf-incremental-wrong-order.broken >> +@@ -0,0 +1,9 @@ >> ++always fails >> ++ >> ++Fails with errors: >> ++ ERROR: sha1sum of /dev/md/vol0 has changed >> ++ ERROR: /dev/md/vol0 has unexpected state on /dev/loop10 >> ++ ERROR: unexpected number of online disks on /dev/loop10 >> ++ ERROR: /dev/md/vol0 has unexpected state on /dev/loop8 >> ++ ERROR: unexpected number of online disks on /dev/loop8 >> ++ ERROR: sha1sum of /dev/md/vol0 has changed >> +diff --git a/tests/14imsm-r1_2d-grow-r1_3d.broken b/tests/14imsm-r1_2d-grow-r1_3d.broken >> +new file mode 100644 >> +index 0000000..4ef1d40 >> +--- /dev/null >> ++++ b/tests/14imsm-r1_2d-grow-r1_3d.broken >> +@@ -0,0 +1,5 @@ >> ++always fails >> ++ >> ++Fails with error: >> ++ >> ++ mdadm/tests/func.sh: line 325: dvsize/chunk: division by 0 (error token is "chunk") >> +diff --git a/tests/14imsm-r1_2d-takeover-r0_2d.broken b/tests/14imsm-r1_2d-takeover-r0_2d.broken >> +new file mode 100644 >> +index 0000000..89cd4e5 >> +--- /dev/null >> ++++ b/tests/14imsm-r1_2d-takeover-r0_2d.broken >> +@@ -0,0 +1,6 @@ >> ++always fails >> ++ >> ++Fails with error: >> ++ >> ++ tests/func.sh: line 325: dvsize/chunk: division by 0 (error token >> ++ is "chunk") >> +diff --git a/tests/18imsm-r10_4d-takeover-r0_2d.broken b/tests/18imsm-r10_4d-takeover-r0_2d.broken >> +new file mode 100644 >> +index 0000000..a27399f >> +--- /dev/null >> ++++ b/tests/18imsm-r10_4d-takeover-r0_2d.broken >> +@@ -0,0 +1,5 @@ >> ++fails rarely >> ++ >> ++Fails about 1 run in 100 with message: >> ++ >> ++ ERROR: size is wrong for /dev/md/vol0: 2 * 5120 (chunk=128) = 20480, not 0 >> +diff --git a/tests/18imsm-r1_2d-takeover-r0_1d.broken b/tests/18imsm-r1_2d-takeover-r0_1d.broken >> +new file mode 100644 >> +index 0000000..aa1982e >> +--- /dev/null >> ++++ b/tests/18imsm-r1_2d-takeover-r0_1d.broken >> +@@ -0,0 +1,6 @@ >> ++always fails >> ++ >> ++Fails with error: >> ++ >> ++ tests/func.sh: line 325: dvsize/chunk: division by 0 (error token >> ++ is "chunk") >> +diff --git a/tests/19raid6auto-repair.broken b/tests/19raid6auto-repair.broken >> +new file mode 100644 >> +index 0000000..e91a142 >> +--- /dev/null >> ++++ b/tests/19raid6auto-repair.broken >> +@@ -0,0 +1,5 @@ >> ++always fails >> ++ >> ++Fails with: >> ++ >> ++ "should detect errors" >> +diff --git a/tests/19raid6repair.broken b/tests/19raid6repair.broken >> +new file mode 100644 >> +index 0000000..e91a142 >> +--- /dev/null >> ++++ b/tests/19raid6repair.broken >> +@@ -0,0 +1,5 @@ >> ++always fails >> ++ >> ++Fails with: >> ++ >> ++ "should detect errors" >> +-- >> +2.39.1 >> + >> diff --git a/meta/recipes-extended/mdadm/files/run-ptest b/meta/recipes-extended/mdadm/files/run-ptest >> index fae8071d43..2380c322a9 100644 >> --- a/meta/recipes-extended/mdadm/files/run-ptest >> +++ b/meta/recipes-extended/mdadm/files/run-ptest >> @@ -2,6 +2,6 @@ >> >> mkdir -p /mdadm-testing-dir >> # make the test continue to execute even one fail >> -dir=. ./test --keep-going --disable-integrity >> +dir=. ./test --keep-going --disable-integrity --skip-broken >> >> rm -rf /mdadm-testing-dir/* >> diff --git a/meta/recipes-extended/mdadm/mdadm_4.2.bb b/meta/recipes-extended/mdadm/mdadm_4.2.bb >> index 033766dc89..0d0e8f5922 100644 >> --- a/meta/recipes-extended/mdadm/mdadm_4.2.bb >> +++ b/meta/recipes-extended/mdadm/mdadm_4.2.bb >> @@ -36,6 +36,8 @@ SRC_URI = "${KERNELORG_MIRROR}/linux/utils/raid/mdadm/${BPN}-${PV}.tar.xz \ >> file://0002-DDF-Fix-NULL-pointer-dereference-in-validate_geometr.patch \ >> file://0003-mdadm-Grow-Fix-use-after-close-bug-by-closing-after-.patch \ >> file://0004-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch \ >> + file://0005-mdadm-test-Mark-and-ignore-broken-test-failures.patch \ >> + file://0006-tests-Add-broken-files-for-all-broken-tests.patch \ >> " >> >> SRC_URI[sha256sum] = "461c215670864bb74a4d1a3620684aa2b2f8296dffa06743f26dda5557acf01d" >> -- >> 2.39.1 >> >> >> -=-=-=-=-=-=-=-=-=-=-=- >> Links: You receive all messages sent to this group. >> View/Reply Online (#183634): https://lists.openembedded.org/g/openembedded-core/message/183634 >> Mute This Topic: https://lists.openembedded.org/mt/99851485/1686489 >> Group Owner: openembedded-core+owner@lists.openembedded.org >> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com] >> -=-=-=-=-=-=-=-=-=-=-=- >> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [OE-core] [PATCH 4/4] mdadm: skip running known broken ptests 2023-06-30 9:17 ` Ovidiu Panait @ 2023-06-30 9:46 ` Alexander Kanavin 0 siblings, 0 replies; 8+ messages in thread From: Alexander Kanavin @ 2023-06-30 9:46 UTC (permalink / raw) To: Ovidiu Panait; +Cc: openembedded-core On Fri, 30 Jun 2023 at 11:17, Ovidiu Panait <ovidiu.panait@windriver.com> wrote: > > Thanks for working on reenabling this. mdadm is currently taken out of > > ptest lists because > > # mdadm \ # Tests rely on non-deterministic sleep() amounts > > > > Is this resolved, and can we re-add mdadm to SLOW or FAST lists? > I did multiple test runs with a qemu-x86-64 image and kvm and the > results seem consistent - always ~12 min per run, no failures: > # ptest-runner mdadm > ... > PASS: /usr/lib/mdadm/ptest/tests/21raid5cache > DURATION: 724 > END: /usr/lib/mdadm/ptest > 2023-06-30T08:37 > STOP: ptest-runner > TOTAL: 1 FAIL: 0 > > I think mdadm-ptest can be added back to PTESTS_SLOW. Cool, can you make a patch for this please? Alex ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [OE-core] [PATCH 1/4] mdadm: fix util-linux-lsblk ptest dependency 2023-06-29 14:18 [PATCH 1/4] mdadm: fix util-linux-lsblk ptest dependency ovidiu.panait ` (2 preceding siblings ...) 2023-06-29 14:18 ` [PATCH 4/4] mdadm: skip running known broken ptests ovidiu.panait @ 2023-07-02 21:44 ` Alexandre Belloni 3 siblings, 0 replies; 8+ messages in thread From: Alexandre Belloni @ 2023-07-02 21:44 UTC (permalink / raw) To: ovidiu.panait; +Cc: openembedded-core Hello, I had those failures on the AB: {'mdadm': ['/usr/lib/mdadm/ptest/tests/10ddf-createFAILED_-_see_/mdadm-testing-dir/10ddf-create.log_and_/mdadm-testing-dir/fail10ddf-create.log_for_details', '/usr/lib/mdadm/ptest/tests/10ddf-create-fail-rebuildFAILED_-_see_/mdadm-testing-dir/10ddf-create-fail-rebuild.log_and_/mdadm-testing-dir/fail10ddf-create-fail-rebuild.log_for_details', '/usr/lib/mdadm/ptest/tests/10ddf-fail-readdFAILED_-_see_/mdadm-testing-dir/10ddf-fail-readd.log_and_/mdadm-testing-dir/fail10ddf-fail-readd.log_for_details', '/usr/lib/mdadm/ptest/tests/10ddf-fail-readd-readonlyFAILED_-_see_/mdadm-testing-dir/10ddf-fail-readd-readonly.log_and_/mdadm-testing-dir/fail10ddf-fail-readd-readonly.log_for_details', '/usr/lib/mdadm/ptest/tests/10ddf-fail-spareFAILED_-_see_/mdadm-testing-dir/10ddf-fail-spare.log_and_/mdadm-testing-dir/fail10ddf-fail-spare.log_for_details', '/usr/lib/mdadm/ptest/tests/10ddf-fail-stop-readdFAILED_-_see_/mdadm-testing-dir/10ddf-fail-stop-readd.log_and_/mdadm-testing-dir/fail10ddf-fail-stop-readd.log_for_details', '/usr/lib/mdadm/ptest/tests/10ddf-fail-twiceFAILED_-_see_/mdadm-testing-dir/10ddf-fail-twice.log_and_/mdadm-testing-dir/fail10ddf-fail-twice.log_for_details', '/usr/lib/mdadm/ptest/tests/10ddf-sudden-degradedFAILED_-_see_/mdadm-testing-dir/10ddf-sudden-degraded.log_and_/mdadm-testing-dir/fail10ddf-sudden-degraded.log_for_details', '/usr/lib/mdadm/ptest/tests/21raid5cacheFAILED_-_see_/mdadm-testing-dir/21raid5cache.log_and_/mdadm-testing-dir/fail21raid5cache.log_for_details']} https://autobuilder.yoctoproject.org/typhoon/#/builders/82/builds/5106/steps/12/logs/stdio https://autobuilder.yoctoproject.org/typhoon/#/builders/81/builds/5292/steps/13/logs/stdio On 29/06/2023 17:18:33+0300, Ovidiu Panait via lists.openembedded.org wrote: > From: Ovidiu Panait <ovidiu.panait@windriver.com> > > Trying to run mdadm-ptest in a core-image-minimal build will result in: > root@qemux86-64:~# ptest-runner mdadm > START: ptest-runner > BEGIN: /usr/lib/mdadm/ptest > which: no lsblk in (/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin) > lsblk command not found! > DURATION: 0 > END: /usr/lib/mdadm/ptest > 2023-06-28T10:14 > STOP: ptest-runner > TOTAL: 1 FAIL: 0 > > To fix this, add util-linux-lsblk to RDEPENDS and remove util-linux from > RRECOMMENDS. > > Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com> > --- > meta/recipes-extended/mdadm/mdadm_4.2.bb | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/meta/recipes-extended/mdadm/mdadm_4.2.bb b/meta/recipes-extended/mdadm/mdadm_4.2.bb > index 14de9d88c2..0a122b0b01 100644 > --- a/meta/recipes-extended/mdadm/mdadm_4.2.bb > +++ b/meta/recipes-extended/mdadm/mdadm_4.2.bb > @@ -101,10 +101,9 @@ do_install_ptest() { > } > > RDEPENDS:${PN} += "bash" > -RDEPENDS:${PN}-ptest += "bash e2fsprogs-mke2fs" > +RDEPENDS:${PN}-ptest += "bash e2fsprogs-mke2fs util-linux-lsblk" > RRECOMMENDS:${PN}-ptest += " \ > coreutils \ > - util-linux \ > kernel-module-loop \ > kernel-module-linear \ > kernel-module-raid0 \ > -- > 2.39.1 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#183631): https://lists.openembedded.org/g/openembedded-core/message/183631 > Mute This Topic: https://lists.openembedded.org/mt/99851482/3617179 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com] > -=-=-=-=-=-=-=-=-=-=-=- > -- Alexandre Belloni, co-owner and COO, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-07-02 21:44 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-06-29 14:18 [PATCH 1/4] mdadm: fix util-linux-lsblk ptest dependency ovidiu.panait 2023-06-29 14:18 ` [PATCH 2/4] mdadm: fix 07revert-inplace ptest ovidiu.panait 2023-06-29 14:18 ` [PATCH 3/4] mdadm: fix segfaults when running ptests ovidiu.panait 2023-06-29 14:18 ` [PATCH 4/4] mdadm: skip running known broken ptests ovidiu.panait 2023-06-29 14:54 ` [OE-core] " Alexander Kanavin 2023-06-30 9:17 ` Ovidiu Panait 2023-06-30 9:46 ` Alexander Kanavin 2023-07-02 21:44 ` [OE-core] [PATCH 1/4] mdadm: fix util-linux-lsblk ptest dependency Alexandre Belloni
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox