|
@@ -346,6 +346,15 @@ void ext4_da_update_reserve_space(struct inode *inode,
|
|
|
used = ei->i_reserved_data_blocks;
|
|
|
}
|
|
|
|
|
|
+ if (unlikely(ei->i_allocated_meta_blocks > ei->i_reserved_meta_blocks)) {
|
|
|
+ ext4_msg(inode->i_sb, KERN_NOTICE, "%s: ino %lu, allocated %d "
|
|
|
+ "with only %d reserved metadata blocks\n", __func__,
|
|
|
+ inode->i_ino, ei->i_allocated_meta_blocks,
|
|
|
+ ei->i_reserved_meta_blocks);
|
|
|
+ WARN_ON(1);
|
|
|
+ ei->i_allocated_meta_blocks = ei->i_reserved_meta_blocks;
|
|
|
+ }
|
|
|
+
|
|
|
/* Update per-inode reservations */
|
|
|
ei->i_reserved_data_blocks -= used;
|
|
|
ei->i_reserved_meta_blocks -= ei->i_allocated_meta_blocks;
|