Re: [PATCH 4.14.y] stable/btrfs: fix backport bug in d819d97ea025 ("btrfs: honor path->skip_locking in backref code")

Nikolay Borisov
2019-07-08T13:52:01Z

On 8.07.19 г. 15:01 ч., Stanislaw Gruszka wrote:
> Upstream commit 38e3eebff643 ("btrfs: honor path->skip_locking in
> backref code") was incorrectly backported to 4.14.y . It misses removal
> of two lines from original commit, what cause deadlock.
>
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=203993
> Reported-by: Olivier Mazouffre <olivier.mazouffre@ims-bordeaux.fr>
> Fixes: d819d97ea025 ("btrfs: honor path->skip_locking in backref code")
> Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
> ---
> I did not test the patch, not even compile, but backport looks
> obviously wrong compared to original commit.

I concur, it's indeed wrongly backported so:

Reviewed-by: Nikolay Borisov <nborisov@suse.com>

>
> fs/btrfs/backref.c | 2 --
> 1 file changed, 2 deletions(-)
>
> diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c
> index d826fbaf7d50..e4d5e6eae409 100644
> --- a/fs/btrfs/backref.c
> +++ b/fs/btrfs/backref.c
> @@ -1290,8 +1290,6 @@ static int find_parent_nodes(struct btrfs_trans_handle *trans,
> ret = -EIO;
> goto out;
> }
> - btrfs_tree_read_lock(eb);
> - btrfs_set_lock_blocking_rw(eb, BTRFS_READ_LOCK);
> if (!path->skip_locking) {
> btrfs_tree_read_lock(eb);
> btrfs_set_lock_blocking_rw(eb, BTRFS_READ_LOCK);
>