Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp3794626ybz; Mon, 20 Apr 2020 09:34:10 -0700 (PDT) X-Google-Smtp-Source: APiQypJx02PGC6TgiCyllPfbgaKBges2Yy5ElNXM5dAZC0Kfnbl9T03tcPyzrsDdipk8uYwRXcTy X-Received: by 2002:aa7:c312:: with SMTP id l18mr15805361edq.161.1587400450363; Mon, 20 Apr 2020 09:34:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587400450; cv=none; d=google.com; s=arc-20160816; b=AMsQkQc+yutkOkIrrNMIMw4IjrUV5JW4k9f+4oeJ/VrPjhQ35HwXiIu3a6X6uRZWwv qU0WrtF0i6pWjo7aaRInxUJvjfeKI+TtaHMPuujeKEdluxjPUJQvJ6wZ5wF2fk3iWXGi mTtHqMvlbIauY2QZ4Wye2D7gURSo9HL56bJl4n2HreumviPhC7yx/BtXe2TlC2qTKoUd KHkZ03L3yRSpFSX4MGqRWl0kG5/gTVleqZ0rWP8j9bWxouDhJxzb/y1LXqta7TJok8u9 evXEiLwBhlZ2VCxKpmlI/GYz9rxVx7bGedhJrFHGys/eUCc0LWbzXe51viKeeGFdPVcv gnqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=N2C9nDcDAH5IXxf+HyA9ZVJjw6z4zMYAlZIrS2fBgEs=; b=XQPajIePl4SNLCjpncfoGz7TlGsAGXg8bw5HrIUrD8QA4pxwrUOmiCmV+nW088ibrd G2cncZj2HFl70wQLmZlBMPHGbifnB2S6maMhhVsSGuVQQEH2qFgrXr9bO8lX4xI1iLXm Kbh+zOl3XFTEwLnF+vvwNpCjiOmuIZI8gOvHb29FsCzbjg9+nP/8ypLC6wrUwcT9DJU0 /YWMEOBJzmmaxBOGteisfXmVWK+xWrIV5RZSZQKMIthgdhw05BzGuRs/L9txV+DnNjuz 2wPcVCoswrHsXgF/ZoFunTE6fEfGodgDJ4HGQwqnbbXAiOBq3BeBTE6DSYj2CpkDSYru fZig== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=zFMyEPRJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dg26si776234edb.497.2020.04.20.09.33.46; Mon, 20 Apr 2020 09:34:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=zFMyEPRJ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728771AbgDTMsw (ORCPT + 99 others); Mon, 20 Apr 2020 08:48:52 -0400 Received: from mail.kernel.org ([198.145.29.99]:45540 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729291AbgDTMsq (ORCPT ); Mon, 20 Apr 2020 08:48:46 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id AC5FE20736; Mon, 20 Apr 2020 12:48:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587386926; bh=a2o+7wxm1EjJaOtWR/GTY6328eM1fT4ITgPauq9wxso=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=zFMyEPRJRrPKMnmiM41ZmjdJnGIAEqXC2JV7WvHNaG98iTAUH0TOQtDV2xqaublCo U7U/bxWEF1L9aVhDBCHI72dWmb+sFz94t7LTbtWarl0XYWD5rfxC43EKLaq4YoiMiN oWQzuudjCRL4UDnwlqqGcThtE2lciIIRn2RNf8XU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Filipe Manana , Josef Bacik , David Sterba Subject: [PATCH 4.19 23/40] btrfs: check commit root generation in should_ignore_root Date: Mon, 20 Apr 2020 14:39:33 +0200 Message-Id: <20200420121500.696971642@linuxfoundation.org> X-Mailer: git-send-email 2.26.1 In-Reply-To: <20200420121444.178150063@linuxfoundation.org> References: <20200420121444.178150063@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Josef Bacik commit 4d4225fc228e46948486d8b8207955f0c031b92e upstream. Previously we would set the reloc root's last snapshot to transid - 1. However there was a problem with doing this, and we changed it to setting the last snapshot to the generation of the commit node of the fs root. This however broke should_ignore_root(). The assumption is that if we are in a generation newer than when the reloc root was created, then we would find the reloc root through normal backref lookups, and thus can ignore any fs roots we find with an old enough reloc root. Now that the last snapshot could be considerably further in the past than before, we'd end up incorrectly ignoring an fs root. Thus we'd find no nodes for the bytenr we were searching for, and we'd fail to relocate anything. We'd loop through the relocate code again and see that there were still used space in that block group, attempt to relocate those bytenr's again, fail in the same way, and just loop like this forever. This is tricky in that we have to not modify the fs root at all during this time, so we need to have a block group that has data in this fs root that is not shared by any other root, which is why this has been difficult to reproduce. Fixes: 054570a1dc94 ("Btrfs: fix relocation incorrectly dropping data references") CC: stable@vger.kernel.org # 4.9+ Reviewed-by: Filipe Manana Signed-off-by: Josef Bacik Signed-off-by: David Sterba Signed-off-by: Greg Kroah-Hartman --- fs/btrfs/relocation.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c @@ -525,8 +525,8 @@ static int should_ignore_root(struct btr if (!reloc_root) return 0; - if (btrfs_root_last_snapshot(&reloc_root->root_item) == - root->fs_info->running_transaction->transid - 1) + if (btrfs_header_generation(reloc_root->commit_root) == + root->fs_info->running_transaction->transid) return 0; /* * if there is reloc tree and it was created in previous