diff options
author | Zhihao Cheng <chengzhihao1@huawei.com> | 2024-11-11 17:08:04 +0800 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2024-11-11 10:32:46 +0100 |
commit | c5ca3893ea854e8d8b5916bc492db8523db70122 (patch) | |
tree | 5817c717593cfb28fc54eb8991f541ea88429bcc /ubifs-utils/fsck.ubifs/rebuild_fs.c | |
parent | e708c6f33e51d9cd5565e16c76af2c4180341499 (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.c | 4 |
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); } |