Revert "ext4: enforce buffer head state assertion in ext4_da_map_blocks"
commit 3eda41df05d6ad5c825cbc7fef03d563597b1afa upstream. This reverts commit948ca5f30e
. Two crash reports from users running variations on 5.15-rc4 kernels suggest that it is premature to enforce the state assertion in the original commit. Both crashes were triggered by BUG calls in that code, indicating that under some rare circumstance the buffer head state did not match a delayed allocated block at the time the block was written out. No reproducer is available. Resolving this problem will require more time than remains in the current release cycle, so reverting the original patch for the time being is necessary to avoid any instability it may cause. Signed-off-by: Eric Whitney <enwlinux@gmail.com> Link: https://lore.kernel.org/r/20211012171901.5352-1-enwlinux@gmail.com Fixes:948ca5f30e
("ext4: enforce buffer head state assertion in ext4_da_map_blocks") Signed-off-by: Theodore Ts'o <tytso@mit.edu> Cc: stable@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d90b9f8796
commit
46fd62b268
|
@ -1711,16 +1711,13 @@ static int ext4_da_map_blocks(struct inode *inode, sector_t iblock,
|
|||
}
|
||||
|
||||
/*
|
||||
* the buffer head associated with a delayed and not unwritten
|
||||
* block found in the extent status cache must contain an
|
||||
* invalid block number and have its BH_New and BH_Delay bits
|
||||
* set, reflecting the state assigned when the block was
|
||||
* initially delayed allocated
|
||||
* Delayed extent could be allocated by fallocate.
|
||||
* So we need to check it.
|
||||
*/
|
||||
if (ext4_es_is_delonly(&es)) {
|
||||
BUG_ON(bh->b_blocknr != invalid_block);
|
||||
BUG_ON(!buffer_new(bh));
|
||||
BUG_ON(!buffer_delay(bh));
|
||||
if (ext4_es_is_delayed(&es) && !ext4_es_is_unwritten(&es)) {
|
||||
map_bh(bh, inode->i_sb, invalid_block);
|
||||
set_buffer_new(bh);
|
||||
set_buffer_delay(bh);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue