summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2016-02-04 19:52:07 -0900
committerKent Overstreet <kent.overstreet@gmail.com>2017-01-18 21:38:27 -0900
commit687567abd7eb3bbc5b6b081fb617f7fd68e90664 (patch)
tree1df4a4b3168b56f0a3721f034acd54efa9bf3cc4
parentf0e5fe448e8fd34a881fb0f081122c44004b2ef2 (diff)
bcachefs: Better assertions
-rw-r--r--drivers/md/bcache/fs-io.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/md/bcache/fs-io.c b/drivers/md/bcache/fs-io.c
index ba92857f3056..5a4f164b4211 100644
--- a/drivers/md/bcache/fs-io.c
+++ b/drivers/md/bcache/fs-io.c
@@ -79,8 +79,6 @@ static int check_make_i_size_dirty(struct bch_inode_info *ei, loff_t offset)
unsigned seq;
int ret = 0;
- BUG_ON(offset > round_up(ei->i_size, PAGE_SIZE) &&
- !atomic_long_read(&ei->i_size_dirty_count));
do {
seq = read_seqcount_begin(&ei->shadow_i_size_lock);
need_set_dirty = offset > round_up(ei->i_size, PAGE_SIZE) &&
@@ -98,6 +96,8 @@ static int check_make_i_size_dirty(struct bch_inode_info *ei, loff_t offset)
!(ei->i_flags & BCH_INODE_I_SIZE_DIRTY)) {
struct cache_set *c = ei->vfs_inode.i_sb->s_fs_info;
+ BUG_ON(!atomic_long_read(&ei->i_size_dirty_count));
+
ret = __bch_write_inode(c, ei, inode_set_dirty, NULL);
}
@@ -930,6 +930,8 @@ static int __bch_writepage(struct page *page, struct writeback_control *wbc,
loff_t i_size = i_size_read(inode);
pgoff_t end_index = i_size >> PAGE_SHIFT;
+ EBUG_ON(!PageUptodate(page));
+
/* Is the page fully inside i_size? */
if (page->index < end_index)
goto do_io;
@@ -1729,6 +1731,7 @@ int bch_releasepage(struct page *page, gfp_t gfp_mask)
{
BUG_ON(!PageLocked(page));
BUG_ON(PageWriteback(page));
+ BUG_ON(PageDirty(page));
bch_clear_page_bits(page);