summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Schmidt <alexs@linux.vnet.ibm.com>2007-06-29 12:46:11 +0200
committerArtem Bityutskiy <dedekind@infradead.org>2007-06-29 07:48:37 -0400
commit8496f75b4897056a1423e30a41649dbc11b421d4 (patch)
treefc031c2bb7dfec67232600d282af649d84e3b030
parentc5a344503656bf5bb4ba813c3bd9aa2442c2ec6d (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>
-rw-r--r--ubi-utils/src/libubimirror.c12
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]);