summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2016-03-22 19:56:39 -0800
committerKent Overstreet <kent.overstreet@gmail.com>2016-10-07 12:35:49 -0800
commit7e4ed6a922b0358d7950b3724dd0ac2d59e0f319 (patch)
treed0095f0fff09b2570cd3b4e9c8850fd2cbb2a064
parentc5133fe7a0ba3304c0e9a9d7c72f5d8745c65529 (diff)
bcachefs: error handling fixups
-rw-r--r--drivers/md/bcache/fs-io.c5
-rw-r--r--drivers/md/bcache/fs.c6
2 files changed, 8 insertions, 3 deletions
diff --git a/drivers/md/bcache/fs-io.c b/drivers/md/bcache/fs-io.c
index f140443c79c6..360bec8ae25c 100644
--- a/drivers/md/bcache/fs-io.c
+++ b/drivers/md/bcache/fs-io.c
@@ -2229,8 +2229,11 @@ static long bch_fcollapse(struct inode *inode, loff_t offset, loff_t len)
return ret;
err_unwind:
+ /*
+ * XXX: we've left data with multiple pointers... which isn't a _super_
+ * serious problem...
+ */
i_sectors_dirty_put(ei, &i_sectors_hook);
- BUG();
err:
bch_btree_iter_unlock(&src);
bch_btree_iter_unlock(&dst);
diff --git a/drivers/md/bcache/fs.c b/drivers/md/bcache/fs.c
index e04beed83f27..9c0d1cbcaa9a 100644
--- a/drivers/md/bcache/fs.c
+++ b/drivers/md/bcache/fs.c
@@ -1136,15 +1136,17 @@ static int bch_vfs_write_inode(struct inode *inode,
static void bch_evict_inode(struct inode *inode)
{
struct cache_set *c = inode->i_sb->s_fs_info;
- struct bch_inode_info *ei = to_bch_ei(inode);
truncate_inode_pages_final(&inode->i_data);
+#if 0
+ struct bch_inode_info *ei = to_bch_ei(inode);
+ /* XXX - we want to check this stuff iff there weren't IO errors: */
BUG_ON(!fifo_empty(&ei->i_size_updates));
BUG_ON(atomic_long_read(&ei->i_sectors_dirty_count));
BUG_ON(!is_bad_inode(inode) &&
atomic64_read(&ei->i_sectors) != inode->i_blocks);
-
+#endif
clear_inode(inode);
if (!inode->i_nlink && !is_bad_inode(inode)) {