aboutsummaryrefslogtreecommitdiff
path: root/ubifs-utils/fsck.ubifs/rebuild_fs.c
diff options
context:
space:
mode:
authorZhihao Cheng <chengzhihao1@huawei.com>2024-11-11 17:08:04 +0800
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2024-11-11 10:32:46 +0100
commitc5ca3893ea854e8d8b5916bc492db8523db70122 (patch)
tree5817c717593cfb28fc54eb8991f541ea88429bcc /ubifs-utils/fsck.ubifs/rebuild_fs.c
parente708c6f33e51d9cd5565e16c76af2c4180341499 (diff)
fsck.ubifs: Check and handle invalid files
This is the 8/18 step of fsck. Check and handle invalid files, the checking rule is same as rebuild mode which has been implemented in file_is_valid, but the methods of handling are different: 1. Move unattached(file has no dentries) regular file into disconnected list, let subsequent steps to handle them with lost+found. 2. Make file type be consistent between inode, detries and data nodes by deleting dentries or data blocks. 3. Delete file for other invalid cases(eg. file has no inode). 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.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ubifs-utils/fsck.ubifs/rebuild_fs.c b/ubifs-utils/fsck.ubifs/rebuild_fs.c
index f190517..8fc78ce 100644
--- a/ubifs-utils/fsck.ubifs/rebuild_fs.c
+++ b/ubifs-utils/fsck.ubifs/rebuild_fs.c
@@ -641,7 +641,7 @@ static void filter_invalid_files(struct ubifs_info *c)
list_del(&file->list);
rb_erase(&file->rb, tree);
- if (!file_is_valid(c, file, tree)) {
+ if (!file_is_valid(c, file, tree, NULL)) {
destroy_file_content(c, file);
kfree(file);
}
@@ -651,7 +651,7 @@ static void filter_invalid_files(struct ubifs_info *c)
for (node = rb_first(tree); node; node = rb_next(node)) {
file = rb_entry(node, struct scanned_file, rb);
- if (!file_is_valid(c, file, tree))
+ if (!file_is_valid(c, file, tree, NULL))
list_add(&file->list, &tmp_list);
}