All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Sterba <dsterba@suse.cz>
To: Tian Tao <tiantao6@hisilicon.com>
Cc: clm@fb.com, josef@toxicpanda.com, dsterba@suse.com,
	linux-btrfs@vger.kernel.org
Subject: Re: [PATCH] btrfs: delete unneeded assignments in btrfs_defrag_file
Date: Wed, 28 Apr 2021 20:02:43 +0200	[thread overview]
Message-ID: <20210428180243.GS7604@twin.jikos.cz> (raw)
In-Reply-To: <1619488221-29490-1-git-send-email-tiantao6@hisilicon.com>

On Tue, Apr 27, 2021 at 09:50:21AM +0800, Tian Tao wrote:
> ret is assigned -EAGAIN at line 1455 and then reassigned defrag_count
> at line 1547 after exiting the while loop, but the btrfs_defrag_file
> function returns a negative number indicating that the execution failed
> because it does not make sense to reassign defrag_count to ret, so
> delete it.

The line references are fragile, so the 1455 is after defrag is
cancelled.

> Signed-off-by: Tian Tao <tiantao6@hisilicon.com>
> ---
>  fs/btrfs/ioctl.c | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
> index ee1dbab..2b3b228 100644
> --- a/fs/btrfs/ioctl.c
> +++ b/fs/btrfs/ioctl.c
> @@ -1544,8 +1544,6 @@ int btrfs_defrag_file(struct inode *inode, struct file *file,
>  		btrfs_set_fs_incompat(fs_info, COMPRESS_ZSTD);
>  	}
>  
> -	ret = defrag_count;

But this would change semantics of the whole function, after deleting
this line any stale value of 'ret' would be returned, it's used for some
intermediate return values in the whole while loop.

1597                 if (btrfs_defrag_cancelled(fs_info)) {
1598                         btrfs_debug(fs_info, "defrag_file cancelled");
1599                         ret = -EAGAIN;
1600                         break;
1601                 }

Jumping to the 'out_ra' label looks like a candidate fix but that also
jumps around all the incompat bit setting, so that could in some cases
miss to set them properly. And actually this is a problem with all the
other error cases.

I'm not yet sure what's the proper fix, but the errors from within the
while loop should be returned and incompat bits set.

  reply	other threads:[~2021-04-28 18:05 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-27  1:50 [PATCH] btrfs: delete unneeded assignments in btrfs_defrag_file Tian Tao
2021-04-28 18:02 ` David Sterba [this message]
2021-04-29  1:16   ` tiantao (H)
2021-04-29 13:22     ` David Sterba
2021-04-30  1:27       ` tiantao (H)
2021-05-03 14:25         ` David Sterba
2021-04-27  8:03 kernel test robot
2021-04-29 13:15 ` Dan Carpenter
2021-04-29 13:15 ` Dan Carpenter

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=20210428180243.GS7604@twin.jikos.cz \
    --to=dsterba@suse.cz \
    --cc=clm@fb.com \
    --cc=dsterba@suse.com \
    --cc=josef@toxicpanda.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=tiantao6@hisilicon.com \
    /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.