diff options
author | Alexander Schmidt <alexs@linux.vnet.ibm.com> | 2007-06-29 12:46:11 +0200 |
---|---|---|
committer | Artem Bityutskiy <dedekind@infradead.org> | 2007-06-29 07:48:37 -0400 |
commit | 8496f75b4897056a1423e30a41649dbc11b421d4 (patch) | |
tree | fc031c2bb7dfec67232600d282af649d84e3b030 /ubi-utils/src | |
parent | c5a344503656bf5bb4ba813c3bd9aa2442c2ec6d (diff) |
UBI-Utils: ubimirror discards returncode
Ubimirror compares volumes before they are mirrored, but discards the
result of the comparison and alway copies volumes.
I've tested this code with equal and unequal volumes and it seems to work
fine now.
Signed-off-by: Alexander Schmidt <alexs@linux.vnet.ibm.com>
Signed-off-by: Artem Bityutskiy <dedekind@infradead.org>
Diffstat (limited to 'ubi-utils/src')
-rw-r--r-- | ubi-utils/src/libubimirror.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/ubi-utils/src/libubimirror.c b/ubi-utils/src/libubimirror.c index 2197260..e85f65d 100644 --- a/ubi-utils/src/libubimirror.c +++ b/ubi-utils/src/libubimirror.c @@ -190,11 +190,13 @@ int ubimirror(uint32_t devno, int seqnum, uint32_t *ids, ssize_t ids_size, if (rc < 0) { EBUF("compare error volume %d and %d", src_id, ids[i]); goto err; - } - rc = copy_files(fd_in, fd_out); - if (rc != 0) { - EBUF("mirror error volume %d to %d", src_id, ids[i]); - goto err; + } else if (rc == compare_different) { + rc = copy_files(fd_in, fd_out); + if (rc != 0) { + EBUF("mirror error volume %d to %d", src_id, + ids[i]); + goto err; + } } if ((rc = ubi_vol_close(fd_out)) == -1) { EBUF("close error volume %d", ids[i]); |