diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2016-03-22 19:56:39 -0800 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2016-10-07 12:35:49 -0800 |
commit | 7e4ed6a922b0358d7950b3724dd0ac2d59e0f319 (patch) | |
tree | d0095f0fff09b2570cd3b4e9c8850fd2cbb2a064 | |
parent | c5133fe7a0ba3304c0e9a9d7c72f5d8745c65529 (diff) |
bcachefs: error handling fixups
-rw-r--r-- | drivers/md/bcache/fs-io.c | 5 | ||||
-rw-r--r-- | drivers/md/bcache/fs.c | 6 |
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)) { |