• Zhang Yi's avatar
    ext4: make the updating inode data procedure atomic · baaae979
    Zhang Yi authored
    Now that ext4_do_update_inode() return error before filling the whole
    inode data if we fail to set inode blocks in ext4_inode_blocks_set().
    This error should never happen in theory since sb->s_maxbytes should not
    have allowed this, we have already init sb->s_maxbytes according to this
    feature in ext4_fill_super(). So even through that could only happen due
    to the filesystem corruption, we'd better to return after we finish
    updating the inode because it may left an uninitialized buffer and we
    could read this buffer later in "errors=continue" mode.
    
    This patch make the updating inode data procedure atomic, call
    EXT4_ERROR_INODE() after we dropping i_raw_lock after something bad
    happened, make sure that the inode is integrated, and also drop a BUG_ON
    and do some small cleanups.
    Signed-off-by: default avatarZhang Yi <yi.zhang@huawei.com>
    Reviewed-by: default avatarJan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20210826130412.3921207-4-yi.zhang@huawei.comSigned-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    baaae979
inode.c 179 KB