diff options
author | Martin Lund <malu@gomspace.com> | 2018-09-05 15:47:38 +0200 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2018-09-08 18:48:46 +0200 |
commit | 04d76bcda9e1a948070927e6c5357d9760c32367 (patch) | |
tree | 9bfb48394c83058225ac618b17101012298e515a /tests/ubi-tests/io_paral.c | |
parent | 6922b87e1b5190fce4db6ecc5b416672a8a4d6ba (diff) |
ubi-tests: io_paral: Fix error handling of update_volume()
The io_paral test returns success even in case it throws e.g. the
following error message:
[io_paral] update_volume():125: written and read data are different
This patch fixes so that the io_paral application returns a non-zero
error code when an error is detected.
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'tests/ubi-tests/io_paral.c')
-rw-r--r-- | tests/ubi-tests/io_paral.c | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/tests/ubi-tests/io_paral.c b/tests/ubi-tests/io_paral.c index b2b462e..6c77ec1 100644 --- a/tests/ubi-tests/io_paral.c +++ b/tests/ubi-tests/io_paral.c @@ -24,6 +24,7 @@ #include <errno.h> #include <string.h> #include <stdlib.h> +#include <stdint.h> #include <unistd.h> #include <pthread.h> #include <sys/types.h> @@ -149,22 +150,22 @@ static void *update_thread(void *ptr) if (ret) { failed("ubi_rmvol"); errorm("cannot remove volume %d", vol_id); - return NULL; + return (void *) -1; } ret = ubi_mkvol(libubi, node, &reqests[vol_id]); if (ret) { failed("ubi_mkvol"); errorm("cannot create volume %d", vol_id); - return NULL; + return (void *) -1; } } ret = update_volume(vol_id, bytes); - if (ret) - return NULL; + if (ret != 0) + return (void *) -1; } - return NULL; + return (void *) 0; } static void *write_thread(void *ptr) @@ -179,7 +180,7 @@ static void *write_thread(void *ptr) if (fd == -1) { failed("open"); errorm("cannot open \"%s\"\n", vol_node); - return NULL; + return (void *) -1; } ret = ubi_set_property(fd, UBI_VOL_PROP_DIRECT_WRITE, 1); @@ -228,12 +229,13 @@ static void *write_thread(void *ptr) } close(fd); - return NULL; + return (void *) 0; } int main(int argc, char * const argv[]) { - int i, ret; + int i, ret, error=false; + intptr_t thread_ret; pthread_t threads[THREADS_NUM]; if (initial_check(argc, argv)) @@ -301,8 +303,14 @@ int main(int argc, char * const argv[]) } } - for (i = 0; i < THREADS_NUM; i++) - pthread_join(threads[i], NULL); + for (i = 0; i < THREADS_NUM; i++) { + pthread_join(threads[i], (void **) &thread_ret); + if (thread_ret != 0) + error = true; + } + + if (error) + goto remove; for (i = 0; i <= THREADS_NUM; i++) { if (ubi_rmvol(libubi, node, i)) { |