All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.