All of lore.kernel.org
 help / color / mirror / Atom feed
From: Liu Bo <bo.li.liu@oracle.com>
To: dsterba@suse.cz, linux-btrfs@vger.kernel.org,
	Dulshani Gunawardhana <dulshani.gunawardhana89@gmail.com>,
	stable@vger.kernel.org
Subject: Re: [PATCH] btrfs: fix reversed warning condition in btrfs_delayed_inode_reserve_metadata
Date: Fri, 4 Apr 2014 11:03:16 +0800	[thread overview]
Message-ID: <20140404030315.GA24064@localhost.localdomain> (raw)
In-Reply-To: <20140403161840.GL29256@suse.cz>

On Thu, Apr 03, 2014 at 06:18:40PM +0200, David Sterba wrote:
> On Thu, Apr 03, 2014 at 01:34:23PM +0800, Liu Bo wrote:
> > On Wed, Apr 02, 2014 at 07:13:00PM +0200, David Sterba wrote:
> > > Commit fae7f21cece9a4c181 ("btrfs: Use WARN_ON()'s return value in place of
> > > WARN_ON(1)") cleaned up WARN_ON usage and in one place reversed the condition
> > > that led to loads of warnings that were not supposed to occur.
> > > 
> > > WARN_ON will trigger because it sees 'ret' though in the previous code
> > > did not reach the WARN_ON below. The correct pattern is
> > > 
> > > -       if (condition)
> > > +       if (WARN_ON(condition))
> > > 
> > > CC: Dulshani Gunawardhana <dulshani.gunawardhana89@gmail.com>
> > > CC: <stable@vger.kernel.org> # 3.13
> > > Reported-by: Liu Bo <bo.li.liu@oracle.com>
> > > Signed-off-by: David Sterba <dsterba@suse.cz>
> > > ---
> > >  fs/btrfs/delayed-inode.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c
> > > index 451b00c86f6c..098af20abd88 100644
> > > --- a/fs/btrfs/delayed-inode.c
> > > +++ b/fs/btrfs/delayed-inode.c
> > > @@ -649,7 +649,7 @@ static int btrfs_delayed_inode_reserve_metadata(
> > >  			goto out;
> > >  
> > >  		ret = btrfs_block_rsv_migrate(src_rsv, dst_rsv, num_bytes);
> > > -		if (!WARN_ON(ret))
> > > +		if (WARN_ON(!ret))
> > >  			goto out;
> > 
> > Oh sorry, I'd have to get my Reviewed-by back and give a NACK instead.
> > 
> > With this patch, (ret = 0) triggers the WARNING, which is not right.
> 
> Thanks for catching this, you're right, my patch was wrong. I must say
> the patch (fae7f21ce) made the code harder to read at some places, I
> don't see much help in removing plain WARN_ON(1) at this cost.

I agree, I prefer the original code which is easier to understand,

if (!ret)
	goto out;
WARN_ON(1);

> 
> Back to the warning flood you observed, the comment under the warning
> says:
> 
> 655                 /*
> 656                  * Ok this is a problem, let's just steal from the global rsv
> 657                  * since this really shouldn't happen that often.
> 658                  */
> 659                 ret = btrfs_block_rsv_migrate(&root->fs_info->global_block_rsv,
> 660                                               dst_rsv, num_bytes);
> 
> so the question is why it does happen so often.
> 
> A WARN_ON_ONCE hides the severity of the problem, so I'd rather suggest
> to put it under enospc_debug option so we can debug it and it does not
> bother users. As this is closer to the way you were going to fix that,
> I'm not sending a patch, take this as a review comment.

The comment was based on some assumptions which could be wrong according to
my observation.

-liubo

  reply	other threads:[~2014-04-04  3:03 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-02 17:13 [PATCH] btrfs: fix reversed warning condition in btrfs_delayed_inode_reserve_metadata David Sterba
2014-04-03  1:49 ` Liu Bo
2014-04-03  5:34 ` Liu Bo
2014-04-03 16:18   ` David Sterba
2014-04-04  3:03     ` Liu Bo [this message]
2014-04-04 13:40       ` David Sterba

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140404030315.GA24064@localhost.localdomain \
    --to=bo.li.liu@oracle.com \
    --cc=dsterba@suse.cz \
    --cc=dulshani.gunawardhana89@gmail.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.