• Q
    btrfs: tree-checker: Try to detect missing INODE_ITEM · c18679eb
    Qu Wenruo 提交于
    For the following items, key->objectid is inode number:
    - DIR_ITEM
    - DIR_INDEX
    - XATTR_ITEM
    - EXTENT_DATA
    - INODE_REF
    
    So in the subvolume tree, such items must have its previous item share the
    same objectid, e.g.:
    
     (257 INODE_ITEM 0)
     (257 DIR_INDEX xxx)
     (257 DIR_ITEM xxx)
     (258 INODE_ITEM 0)
     (258 INODE_REF 0)
     (258 XATTR_ITEM 0)
     (258 EXTENT_DATA 0)
    
    But if we have the following sequence, then there is definitely
    something wrong, normally some INODE_ITEM is missing, like:
    
     (257 INODE_ITEM 0)
     (257 DIR_INDEX xxx)
     (257 DIR_ITEM xxx)
     (258 XATTR_ITEM 0)  <<< objecitd suddenly changed to 258
     (258 EXTENT_DATA 0)
    
    So just by checking the previous key for above inode based key types, we
    can detect a missing inode item.
    
    For INODE_REF key type, the check will be added along with INODE_REF
    checker.
    Reviewed-by: NNikolay Borisov <nborisov@suse.com>
    Signed-off-by: NQu Wenruo <wqu@suse.com>
    Reviewed-by: NDavid Sterba <dsterba@suse.com>
    Signed-off-by: NDavid Sterba <dsterba@suse.com>
    c18679eb
tree-checker.c 44.3 KB