summaryrefslogtreecommitdiff
path: root/ubifs-utils/libubifs/master.c
diff options
context:
space:
mode:
authorZhihao Cheng <chengzhihao1@huawei.com>2024-11-11 17:01:21 +0800
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2024-11-11 10:32:46 +0100
commit3f8ee068870a046b0dcf2921ed7ee375f405e49f (patch)
tree4e7f4059cb04e7c5216154e7235d2fc3edc92165 /ubifs-utils/libubifs/master.c
parent410f5bb08c0dd44358822031e59f64b4b840bd9e (diff)
fsck.ubifs: Read master node & init lpt
This is the 1/18 step of fsck. Read and check master node, init lpt. There could be following errors: 1. corrupted scanning data in master area or invalid master node: danger mode with rebuild_fs and normal mode with 'yes' answer will turn to rebuild filesystem, other modes will exit. 2. incorrect space statistics in master node: Set %FR_LPT_INCORRECT for for lpt status. Ignore the error. 3. corrupted lpt: Set %FR_LPT_CORRUPTED for lpt status. Ignore the error. Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com> Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'ubifs-utils/libubifs/master.c')
-rw-r--r--ubifs-utils/libubifs/master.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/ubifs-utils/libubifs/master.c b/ubifs-utils/libubifs/master.c
index 61ff4ce..54d2a78 100644
--- a/ubifs-utils/libubifs/master.c
+++ b/ubifs-utils/libubifs/master.c
@@ -323,7 +323,12 @@ out:
set_failure_reason_callback(c, reason);
ubifs_err(c, "bad master node at offset %d error %d", c->mst_offs, err);
ubifs_dump_node(c, c->mst_node, c->mst_node_alsz);
- return -EINVAL;
+ err = -EINVAL;
+ if (can_ignore_failure_callback(c, reason)) {
+ clear_failure_reason_callback(c);
+ err = 0;
+ }
+ return err;
}
/**