* [PATCH] Btrfs: fix BUG_ON in btrfs_submit_compressed_write
@ 2016-06-23 1:32 Liu Bo
2016-06-23 9:09 ` David Sterba
0 siblings, 1 reply; 4+ messages in thread
From: Liu Bo @ 2016-06-23 1:32 UTC (permalink / raw)
To: linux-btrfs
This is similar to btrfs_submit_compressed_read(), if we fail after
bio is allocated, then we can use bio_endio() and errors are saved
in bio->bi_error. But please note that we don't return errors to
its caller because the caller assumes it won't call endio to cleanup
on error.
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
---
fs/btrfs/compression.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c
index 658c39b..7a4d9c8 100644
--- a/fs/btrfs/compression.c
+++ b/fs/btrfs/compression.c
@@ -402,7 +402,10 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start,
}
ret = btrfs_map_bio(root, WRITE, bio, 0, 1);
- BUG_ON(ret); /* -ENOMEM */
+ if (ret) {
+ bio->bi_error = ret;
+ bio_endio(bio);
+ }
bio_put(bio);
@@ -432,7 +435,10 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start,
}
ret = btrfs_map_bio(root, WRITE, bio, 0, 1);
- BUG_ON(ret); /* -ENOMEM */
+ if (ret) {
+ bio->bi_error = ret;
+ bio_endio(bio);
+ }
bio_put(bio);
return 0;
--
2.5.5
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] Btrfs: fix BUG_ON in btrfs_submit_compressed_write
2016-06-23 1:32 [PATCH] Btrfs: fix BUG_ON in btrfs_submit_compressed_write Liu Bo
@ 2016-06-23 9:09 ` David Sterba
2016-06-23 17:41 ` Liu Bo
0 siblings, 1 reply; 4+ messages in thread
From: David Sterba @ 2016-06-23 9:09 UTC (permalink / raw)
To: Liu Bo; +Cc: linux-btrfs
On Wed, Jun 22, 2016 at 06:32:06PM -0700, Liu Bo wrote:
> This is similar to btrfs_submit_compressed_read(), if we fail after
> bio is allocated, then we can use bio_endio() and errors are saved
> in bio->bi_error. But please note that we don't return errors to
> its caller because the caller assumes it won't call endio to cleanup
> on error.
This sounds strange, where do we notice that some of the bios failed?
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Btrfs: fix BUG_ON in btrfs_submit_compressed_write
2016-06-23 9:09 ` David Sterba
@ 2016-06-23 17:41 ` Liu Bo
2016-07-08 14:47 ` David Sterba
0 siblings, 1 reply; 4+ messages in thread
From: Liu Bo @ 2016-06-23 17:41 UTC (permalink / raw)
To: dsterba, linux-btrfs
On Thu, Jun 23, 2016 at 11:09:52AM +0200, David Sterba wrote:
> On Wed, Jun 22, 2016 at 06:32:06PM -0700, Liu Bo wrote:
> > This is similar to btrfs_submit_compressed_read(), if we fail after
> > bio is allocated, then we can use bio_endio() and errors are saved
> > in bio->bi_error. But please note that we don't return errors to
> > its caller because the caller assumes it won't call endio to cleanup
> > on error.
>
> This sounds strange, where do we notice that some of the bios failed?
bio_endio()
-> end_compressed_bio_write()
-> end_compressed_writeback()
-> mapping_set_error(inode->i_mapping, -EIO);
Thanks,
-liubo
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Btrfs: fix BUG_ON in btrfs_submit_compressed_write
2016-06-23 17:41 ` Liu Bo
@ 2016-07-08 14:47 ` David Sterba
0 siblings, 0 replies; 4+ messages in thread
From: David Sterba @ 2016-07-08 14:47 UTC (permalink / raw)
To: Liu Bo; +Cc: dsterba, linux-btrfs
On Thu, Jun 23, 2016 at 10:41:11AM -0700, Liu Bo wrote:
> On Thu, Jun 23, 2016 at 11:09:52AM +0200, David Sterba wrote:
> > On Wed, Jun 22, 2016 at 06:32:06PM -0700, Liu Bo wrote:
> > > This is similar to btrfs_submit_compressed_read(), if we fail after
> > > bio is allocated, then we can use bio_endio() and errors are saved
> > > in bio->bi_error. But please note that we don't return errors to
> > > its caller because the caller assumes it won't call endio to cleanup
> > > on error.
> >
> > This sounds strange, where do we notice that some of the bios failed?
>
> bio_endio()
> -> end_compressed_bio_write()
> -> end_compressed_writeback()
> -> mapping_set_error(inode->i_mapping, -EIO);
Thanks. We use the same logic in btrfs_submit_compressed_read as you
mention but I missed that first. Good riddance of the bug-ons.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-07-08 14:47 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-23 1:32 [PATCH] Btrfs: fix BUG_ON in btrfs_submit_compressed_write Liu Bo
2016-06-23 9:09 ` David Sterba
2016-06-23 17:41 ` Liu Bo
2016-07-08 14:47 ` David Sterba
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.