* not implemented.
*/
if (err == UBI_IO_BAD_VID_HDR) {
- ubi_warn("bad VID header at PEB %d, LEB"
- "%d:%d", pnum, vol_id, lnum);
+ ubi_warn("corrupted VID header at PEB "
+ "%d, LEB %d:%d", pnum, vol_id,
+ lnum);
err = -EBADMSG;
} else
ubi_ro_mode(ubi);
if (err && err != UBI_IO_BITFLIPS) {
ubi_warn("error %d while reading data from PEB %d",
err, from);
+ if (err == -EIO)
+ err = MOVE_SOURCE_RD_ERR;
goto out_unlock_buf;
}
/* Read the VID header back and check if it was written correctly */
err = ubi_io_read_vid_hdr(ubi, to, vid_hdr, 1);
if (err) {
- if (err != UBI_IO_BITFLIPS)
+ if (err != UBI_IO_BITFLIPS) {
ubi_warn("cannot read VID header back from PEB %d", to);
- else
+ if (err == -EIO)
+ err = MOVE_TARGET_RD_ERR;
+ } else
err = MOVE_CANCEL_BITFLIPS;
goto out_unlock_buf;
}
err = ubi_io_read_data(ubi, ubi->peb_buf2, to, 0, aldata_size);
if (err) {
- if (err != UBI_IO_BITFLIPS)
+ if (err != UBI_IO_BITFLIPS) {
ubi_warn("cannot read data back from PEB %d",
to);
- else
+ if (err == -EIO)
+ err = MOVE_TARGET_RD_ERR;
+ } else
err = MOVE_CANCEL_BITFLIPS;
goto out_unlock_buf;
}