UBI: improve messages in ubi_eba_read_leb()
Subsystems (2)
PATCH 1/1 UBI: improve messages in ubi_eba_read_leb()
If an error occur while reading from PEBs, for example, an ECC error, ubi_io_read() will print some error messages. But it's not enough for debugging. These messages don't show the mapping info for a read from UBIFS layer.
Although UBIFS will soon print its error messages after catching the return value from UBI layer, multi-path reading will confuse the relationship between LEBs and PEBs showed by these messages, like:
[ 38.442770] UBI error: ubi_io_read: error -74 (ECC error) while reading 26624 bytes from PEB 54:104448, read 26624 bytes [ 38.852461] UBI error: ubi_io_read: error -74 (ECC error) while reading 77824 bytes from PEB 346:53248, read 77824 bytes [ 38.864142] UBIFS error (pid 1444): ubifs_recover_leb: corruption -3 [ 38.870487] UBIFS error (pid 1444): ubifs_scanned_corruption: corruption at LEB 928:55280 [ 38.878625] UBIFS error (pid 1444): ubifs_scanned_corruption: first 8192 bytes from LEB 928:55280 [ 38.892117] UBIFS error (pid 1444): ubifs_recover_leb: LEB 928 scanning failed
mount: mounting ubi1:bak on /mountpoint: failed: Structure needs cleaning
This patch improve the output of ubi_eba_read_leb() by printing the mapping of LEB and PEB if an ECC error occur. And also, print PEB and LEB number if a CRC error occur.
--- drivers/mtd/ubi/eba.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-)
drivers/mtd/ubi/eba.c +6 -3
@@ -445,8 +445,11 @@ retry:if (err ==UBI_IO_BITFLIPS ) scrub =1 ;else if (mtd_is_eccerr (err)) { -if (vol->vol_type ==UBI_DYNAMIC_VOLUME ) +if (vol->vol_type ==UBI_DYNAMIC_VOLUME ) { +ubi_warn (ubi,"ECC error while reading %d bytes from offset %d of LEB %d:%d, PEB %d" , + len, offset, vol_id, lnum, pnum); goto out_unlock; + } scrub =1 ;if (!check) {ubi_msg (ubi,"force data checking" );
@@ -460,8 +463,8 @@ retry:if (check) {uint32_t crc1 =crc32 (UBI_CRC32_INIT , buf, len);if (crc1 != crc) { -ubi_warn (ubi,"CRC error: calculated %#08x, must be %#08x" , - crc1, crc); +ubi_warn (ubi,"CRC error at PEB %d, LEB %d:%d: calculated %#08x, must be %#08x" , + pnum, vol_id, lnum, crc1, crc); err = -EBADMSG ; goto out_unlock; }
Signature · 1 line
1.6.0.2
Quoted 15 lines · hujianyang
If an error occur while reading from PEBs, for example, an ECC error,
ubi_io_read()will print some error messages. But it's not enough for debugging. These messages don't show the mapping info for a read from UBIFS layer.Although UBIFS will soon print its error messages after catching the return value from UBI layer, multi-path reading will confuse the relationship between LEBs and PEBs showed by these messages, like:
[ 38.442770] UBI error: ubi_io_read: error -74 (ECC error) while reading 26624 bytes from PEB 54:104448, read 26624 bytes [ 38.852461] UBI error: ubi_io_read: error -74 (ECC error) while reading 77824 bytes from PEB 346:53248, read 77824 bytes [ 38.864142] UBIFS error (pid 1444): ubifs_recover_leb: corruption -3 [ 38.870487] UBIFS error (pid 1444): ubifs_scanned_corruption: corruption at LEB 928:55280 [ 38.878625] UBIFS error (pid 1444): ubifs_scanned_corruption: first 8192 bytes from LEB 928:55280 [ 38.892117] UBIFS error (pid 1444): ubifs_recover_leb: LEB 928 scanning failed
Quoted 7 lines
mount: mounting ubi1:bak on /mountpoint: failed: Structure needs cleaning
This patch improve the output of
ubi_eba_read_leb()by printing the mapping of LEB and PEB if an ECC error occur. And also, print PEB and LEB number if a CRC error occur.Signed-off-by hujianyang <[email protected]>
Quoted 18 lines · Artem Bityutskiy
Quoted 17 lines · hujianyang
If an error occur while reading from PEBs, for example, an ECC error,
ubi_io_read()will print some error messages. But it's not enough for debugging. These messages don't show the mapping info for a read from UBIFS layer.Although UBIFS will soon print its error messages after catching the return value from UBI layer, multi-path reading will confuse the relationship between LEBs and PEBs showed by these messages, like:
[ 38.442770] UBI error: ubi_io_read: error -74 (ECC error) while reading 26624 bytes from PEB 54:104448, read 26624 bytes [ 38.852461] UBI error: ubi_io_read: error -74 (ECC error) while reading 77824 bytes from PEB 346:53248, read 77824 bytes [ 38.864142] UBIFS error (pid 1444): ubifs_recover_leb: corruption -3 [ 38.870487] UBIFS error (pid 1444): ubifs_scanned_corruption: corruption at LEB 928:55280 [ 38.878625] UBIFS error (pid 1444): ubifs_scanned_corruption: first 8192 bytes from LEB 928:55280 [ 38.892117] UBIFS error (pid 1444): ubifs_recover_leb: LEB 928 scanning failedmount: mounting ubi1:bak on /mountpoint: failed: Structure needs cleaning
Quoted 7 lines
Quoted 5 lines
This patch improve the output of
ubi_eba_read_leb()by printing the mapping of LEB and PEB if an ECC error occur. And also, print PEB and LEB number if a CRC error occur.Signed-off-by hujianyang <[email protected]>Signed-off-by Artem Bityutskiy <[email protected]>
As the merge window is already open I'd wait until the next merge window with that patch.
Signature · 2 lines
Thanks, //richard
Quoted 23 lines · Richard Weinberger
Quoted 22 lines · Artem Bityutskiy
Quoted 21 lines · hujianyang
If an error occur while reading from PEBs, for example, an ECC error,
ubi_io_read()will print some error messages. But it's not enough for debugging. These messages don't show the mapping info for a read from UBIFS layer.Although UBIFS will soon print its error messages after catching the return value from UBI layer, multi-path reading will confuse the relationship between LEBs and PEBs showed by these messages, like:
[ 38.442770] UBI error: ubi_io_read: error -74 (ECC error) while reading 26624 bytes from PEB 54:104448, read 26624 bytes [ 38.852461] UBI error: ubi_io_read: error -74 (ECC error) while reading 77824 bytes from PEB 346:53248, read 77824 bytes [ 38.864142] UBIFS error (pid 1444): ubifs_recover_leb: corruption -3 [ 38.870487] UBIFS error (pid 1444): ubifs_scanned_corruption: corruption at LEB 928:55280 [ 38.878625] UBIFS error (pid 1444): ubifs_scanned_corruption: first 8192 bytes from LEB 928:55280 [ 38.892117] UBIFS error (pid 1444): ubifs_recover_leb: LEB 928 scanning failedmount: mounting ubi1:bak on /mountpoint: failed: Structure needs cleaning
This patch improve the output of
ubi_eba_read_leb()by printing the mapping of LEB and PEB if an ECC error occur. And also, print PEB and LEB number if a CRC error occur.
Quoted 7 lines
Quoted 3 lines
Quoted 1 line
Signed-off-by hujianyang <[email protected]>Signed-off-by Artem Bityutskiy <[email protected]>As the merge window is already open I'd wait until the next merge window with that patch.
Ping?