summaryrefslogtreecommitdiff
path: root/ubifs-utils/fsck.ubifs/rebuild_fs.c
diff options
context:
space:
mode:
authorZhihao Cheng <chengzhihao1@huawei.com>2024-11-11 17:01:13 +0800
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2024-11-11 10:32:46 +0100
commit7ff702596bd5590a93ae55d217753fe4b671c6f4 (patch)
tree822b879f55e17ab6238ce2f9898e201c8e90215d /ubifs-utils/fsck.ubifs/rebuild_fs.c
parent5292e1cb94d038fe9588038f2bb8282b41efe12f (diff)
fsck.ubifs: rebuild_fs: Check and correct files' information
This is the 6/12 step of rebuilding. Correct the file information. Traverse all files and calculate information (nlink, size, xattr_cnt, etc.) for each file just like check_leaf() does, correct inode node based on the calculated information. Now, all files are consistent, and UBIFS will pass chk_fs after mounting. Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com> Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'ubifs-utils/fsck.ubifs/rebuild_fs.c')
-rw-r--r--ubifs-utils/fsck.ubifs/rebuild_fs.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/ubifs-utils/fsck.ubifs/rebuild_fs.c b/ubifs-utils/fsck.ubifs/rebuild_fs.c
index 669b61d..ecf6b0c 100644
--- a/ubifs-utils/fsck.ubifs/rebuild_fs.c
+++ b/ubifs-utils/fsck.ubifs/rebuild_fs.c
@@ -677,6 +677,12 @@ int ubifs_rebuild_filesystem(struct ubifs_info *c)
log_out(c, "Extract reachable files");
extract_dentry_tree(c);
+ /* Step 6: Check & correct files' information. */
+ log_out(c, "Check & correct file information");
+ err = check_and_correct_files(c);
+ if (err)
+ exit_code |= FSCK_ERROR;
+
out:
destroy_scanned_info(c, &si);
destroy_rebuild_info(c);