bcachefs: Convert a BUG_ON() to a warning
authorKent Overstreet <kent.overstreet@gmail.com>
Tue, 24 Sep 2019 17:33:11 +0000 (13:33 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:08:27 +0000 (17:08 -0400)
We shouldn't ever be writing past i_size - but, apparently there's still
a bug to track down.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/fs-io.c

index 2d7bab51b320d15f85631d7cbaf7c0e7f5ffaa04..e3f1d1dd06aedbb661c27a9d1ec8055b118ceab3 100644 (file)
@@ -757,6 +757,9 @@ static void bch2_set_page_dirty(struct bch_fs *c,
        struct bch_page_state *s = bch2_page_state(page);
        unsigned i, dirty_sectors = 0;
 
+       WARN_ON(page_offset(page) + offset + len >
+               round_up(i_size_read(&inode->v), block_bytes(c)));
+
        for (i = round_down(offset, block_bytes(c)) >> 9;
             i < round_up(offset + len, block_bytes(c)) >> 9;
             i++) {
@@ -1442,8 +1445,8 @@ do_io:
                                     sectors << 9, offset << 9));
 
                /* Check for writing past i_size: */
-               BUG_ON((bio_end_sector(&w->io->op.op.wbio.bio) << 9) >
-                      round_up(i_size, block_bytes(c)));
+               WARN_ON((bio_end_sector(&w->io->op.op.wbio.bio) << 9) >
+                       round_up(i_size, block_bytes(c)));
 
                w->io->op.op.res.sectors += reserved_sectors;
                w->io->op.new_i_size = i_size;