From: Boris Burkov <boris@bur.io>
To: Christoph Hellwig <hch@lst.de>
Cc: Chris Mason <clm@fb.com>, Josef Bacik <josef@toxicpanda.com>,
David Sterba <dsterba@suse.com>,
linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 3/6] btrfs: consolidate the error handling in run_delalloc_nocow
Date: Mon, 24 Jul 2023 11:27:37 -0700 [thread overview]
Message-ID: <20230724182737.GA587411@zen> (raw)
In-Reply-To: <20230724142243.5742-4-hch@lst.de>
On Mon, Jul 24, 2023 at 07:22:40AM -0700, Christoph Hellwig wrote:
> Share the calls to extent_clear_unlock_delalloc for btrfs_path allocation
> failure handling and the normal exit path.
>
> This relies on btrfs_free_path ignoring a NULL pointer, and the
> initialization of cur_offset to start at the beginning of the function.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> fs/btrfs/inode.c | 13 +++----------
> 1 file changed, 3 insertions(+), 10 deletions(-)
>
> diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
> index 212aca4eea442b..2d465b50c228ed 100644
> --- a/fs/btrfs/inode.c
> +++ b/fs/btrfs/inode.c
> @@ -1973,21 +1973,14 @@ static noinline int run_delalloc_nocow(struct btrfs_inode *inode,
> struct btrfs_path *path;
> u64 cow_start = (u64)-1;
> u64 cur_offset = start;
> - int ret;
> + int ret = -ENOMEM;
> bool check_prev = true;
> u64 ino = btrfs_ino(inode);
> struct can_nocow_file_extent_args nocow_args = { 0 };
>
> path = btrfs_alloc_path();
> - if (!path) {
> - extent_clear_unlock_delalloc(inode, start, end, locked_page,
> - EXTENT_LOCKED | EXTENT_DELALLOC |
> - EXTENT_DO_ACCOUNTING |
> - EXTENT_DEFRAG, PAGE_UNLOCK |
> - PAGE_START_WRITEBACK |
> - PAGE_END_WRITEBACK);
> - return -ENOMEM;
> - }
> + if (!path)
> + goto error;
nit: I think it's nicer to do ret = -ENOMEM here rather than relying on
initializion. It makes it less likely for a different change to
accidentally disrupt the implicit assumption that ret == -ENOMEM.
>
> nocow_args.end = end;
> nocow_args.writeback_path = true;
> --
> 2.39.2
>
next prev parent reply other threads:[~2023-07-24 18:29 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-24 14:22 btrfs NOCOW fix and cleanups Christoph Hellwig
2023-07-24 14:22 ` [PATCH 1/6] btrfs: fix error handling when in a COW window in run_delalloc_nocow Christoph Hellwig
2023-07-24 14:22 ` [PATCH 2/6] btrfs: cleanup the COW fallback logic " Christoph Hellwig
2023-07-24 14:22 ` [PATCH 3/6] btrfs: consolidate the error handling " Christoph Hellwig
2023-07-24 18:27 ` Boris Burkov [this message]
2023-07-24 19:48 ` Christoph Hellwig
2023-07-25 21:36 ` David Sterba
2023-07-24 14:22 ` [PATCH 4/6] btrfs: move the !zoned assert into run_delalloc_cow Christoph Hellwig
2023-07-24 14:22 ` [PATCH 5/6] btrfs: use nocow_end for the loop iteration in run_delalloc_cow Christoph Hellwig
2023-08-10 17:00 ` David Sterba
2023-07-24 14:22 ` [PATCH 6/6] btrfs: clone relocation checksums in btrfs_alloc_ordered_extent Christoph Hellwig
2023-08-10 17:07 ` David Sterba
2023-07-24 18:30 ` btrfs NOCOW fix and cleanups Boris Burkov
2023-07-24 19:49 ` Christoph Hellwig
2023-07-24 19:58 ` Christoph Hellwig
2023-07-25 21:42 ` David Sterba
2023-07-26 12:56 ` Christoph Hellwig
2023-07-27 11:50 ` David Sterba
2023-08-10 16:56 ` 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=20230724182737.GA587411@zen \
--to=boris@bur.io \
--cc=clm@fb.com \
--cc=dsterba@suse.com \
--cc=hch@lst.de \
--cc=josef@toxicpanda.com \
--cc=linux-btrfs@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.