diff options
-rw-r--r-- | fsck/dump.c | 2 | ||||
-rw-r--r-- | fsck/fsck.c | 58 | ||||
-rw-r--r-- | fsck/fsck.h | 4 | ||||
-rw-r--r-- | fsck/mount.c | 2 | ||||
-rw-r--r-- | fsck/xattr.c | 9 |
5 files changed, 7 insertions, 68 deletions
diff --git a/fsck/dump.c b/fsck/dump.c index 864a3c3..ecadfdd 100644 --- a/fsck/dump.c +++ b/fsck/dump.c @@ -359,7 +359,7 @@ static void dump_xattr(struct f2fs_sb_info *sbi, struct f2fs_node *node_blk) char xattr_name[F2FS_NAME_LEN] = {0}; int ret; - xattr = read_all_xattrs(sbi, node_blk, true); + xattr = read_all_xattrs(sbi, node_blk); if (!xattr) return; diff --git a/fsck/fsck.c b/fsck/fsck.c index d2492d8..99cface 100644 --- a/fsck/fsck.c +++ b/fsck/fsck.c @@ -826,61 +826,6 @@ void fsck_reada_all_direct_node_blocks(struct f2fs_sb_info *sbi, } } -static bool is_zeroed(const u8 *p, size_t size) -{ - size_t i; - - for (i = 0; i < size; i++) { - if (p[i]) - return false; - } - return true; -} - -int chk_extended_attributes(struct f2fs_sb_info *sbi, u32 nid, - struct f2fs_node *inode) -{ - void *xattr; - void *last_base_addr; - struct f2fs_xattr_entry *ent; - __u32 xattr_size = XATTR_SIZE(&inode->i); - bool need_fix = false; - - if (xattr_size == 0) - return 0; - - xattr = read_all_xattrs(sbi, inode, false); - ASSERT(xattr); - - last_base_addr = (void *)xattr + xattr_size; - - list_for_each_xattr(ent, xattr) { - if ((void *)(ent) + sizeof(__u32) > last_base_addr || - (void *)XATTR_NEXT_ENTRY(ent) > last_base_addr) { - ASSERT_MSG("[0x%x] last xattr entry (offset: %lx) " - "crosses the boundary", - nid, (long int)((void *)ent - xattr)); - need_fix = true; - break; - } - } - if (!need_fix && - !is_zeroed((u8 *)ent, (u8 *)last_base_addr - (u8 *)ent)) { - ASSERT_MSG("[0x%x] nonzero bytes in xattr space after " - "end of list", nid); - need_fix = true; - } - if (need_fix && c.fix_on) { - memset(ent, 0, (u8 *)last_base_addr - (u8 *)ent); - write_all_xattrs(sbi, inode, xattr_size, xattr); - FIX_MSG("[0x%x] nullify wrong xattr entries", nid); - free(xattr); - return 1; - } - free(xattr); - return 0; -} - /* start with valid nid and blkaddr */ void fsck_chk_inode_blk(struct f2fs_sb_info *sbi, u32 nid, enum FILE_TYPE ftype, struct f2fs_node *node_blk, @@ -1055,9 +1000,6 @@ check_next: } } - if (chk_extended_attributes(sbi, nid, node_blk)) - need_fix = 1; - if ((node_blk->i.i_inline & F2FS_INLINE_DATA)) { unsigned int inline_size = MAX_INLINE_DATA(node_blk); if (cur_qtype != -1) diff --git a/fsck/fsck.h b/fsck/fsck.h index c25f381..091b5d8 100644 --- a/fsck/fsck.h +++ b/fsck/fsck.h @@ -330,8 +330,6 @@ struct hardlink_cache_entry *f2fs_search_hardlink(struct f2fs_sb_info *sbi, struct dentry *de); /* xattr.c */ -void *read_all_xattrs(struct f2fs_sb_info *, struct f2fs_node *, bool); -void write_all_xattrs(struct f2fs_sb_info *sbi, - struct f2fs_node *inode, __u32 hsize, void *txattr_addr); +void *read_all_xattrs(struct f2fs_sb_info *, struct f2fs_node *); #endif /* _FSCK_H_ */ diff --git a/fsck/mount.c b/fsck/mount.c index b4f96ec..9d786ea 100644 --- a/fsck/mount.c +++ b/fsck/mount.c @@ -370,7 +370,7 @@ void print_inode_info(struct f2fs_sb_info *sbi, DISP_u32(F2FS_INODE_NIDS(inode), i_nid[3]); /* indirect */ DISP_u32(F2FS_INODE_NIDS(inode), i_nid[4]); /* double indirect */ - xattr_addr = read_all_xattrs(sbi, node, true); + xattr_addr = read_all_xattrs(sbi, node); if (!xattr_addr) goto out; diff --git a/fsck/xattr.c b/fsck/xattr.c index 9ccf361..fe28437 100644 --- a/fsck/xattr.c +++ b/fsck/xattr.c @@ -17,15 +17,14 @@ #include "node.h" #include "xattr.h" -void *read_all_xattrs(struct f2fs_sb_info *sbi, struct f2fs_node *inode, - bool sanity_check) +void *read_all_xattrs(struct f2fs_sb_info *sbi, struct f2fs_node *inode) { struct f2fs_xattr_header *header; void *txattr_addr; u64 inline_size = inline_xattr_size(&inode->i); nid_t xnid = le32_to_cpu(inode->i.i_xattr_nid); - if (c.func == FSCK && xnid && sanity_check) { + if (c.func == FSCK && xnid) { if (fsck_sanity_check_nid(sbi, xnid, F2FS_FT_XATTR, TYPE_XATTR)) return NULL; } @@ -79,7 +78,7 @@ static struct f2fs_xattr_entry *__find_xattr(void *base_addr, return entry; } -void write_all_xattrs(struct f2fs_sb_info *sbi, +static void write_all_xattrs(struct f2fs_sb_info *sbi, struct f2fs_node *inode, __u32 hsize, void *txattr_addr) { void *xattr_addr; @@ -166,7 +165,7 @@ int f2fs_setxattr(struct f2fs_sb_info *sbi, nid_t ino, int index, const char *na ret = dev_read_block(inode, ni.blk_addr); ASSERT(ret >= 0); - base_addr = read_all_xattrs(sbi, inode, true); + base_addr = read_all_xattrs(sbi, inode); ASSERT(base_addr); last_base_addr = (void *)base_addr + XATTR_SIZE(&inode->i); |