Message ID | 20180314150311.20152-2-enadolski@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 14.03.2018 17:03, Edmund Nadolski wrote: > btrfs_check_shared calls find_parent_nodes in a loop. In each > iteration it passes in a share_check struct to request a check for > a shared extent. The share_check::share_count must be re-initialized > to zero for each iteration in order to avoid using a stale count > value from the previous iteration, thus causing a false > shared extent indication. > > Signed-off-by: Edmund Nadolski <enadolski@suse.com> Is there a particular commit which introduced this regression (i.e. one of the backref walking series)? It would be useful to know so that this can be tagged with a Fixes: tag and perhaps stable. Also your cover letter should go as a changelog in the patch so that we have a proper history of how this fix came to be :) > --- > fs/btrfs/backref.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c > index 4e89598..4a33448 100644 > --- a/fs/btrfs/backref.c > +++ b/fs/btrfs/backref.c > @@ -1519,6 +1519,7 @@ int btrfs_check_shared(struct btrfs_root *root, u64 inum, u64 bytenr) > if (!node) > break; > bytenr = node->val; > + shared.share_count = 0; > cond_resched(); > } > > -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, Mar 14, 2018 at 09:03:11AM -0600, Edmund Nadolski wrote: > btrfs_check_shared calls find_parent_nodes in a loop. In each > iteration it passes in a share_check struct to request a check for > a shared extent. The share_check::share_count must be re-initialized > to zero for each iteration in order to avoid using a stale count > value from the previous iteration, thus causing a false > shared extent indication. > > Signed-off-by: Edmund Nadolski <enadolski@suse.com> I've replaced the changelog with text from cover letter and added the Fixes: reference to 3ec4d3238ab that introduces 'shared'. -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c index 4e89598..4a33448 100644 --- a/fs/btrfs/backref.c +++ b/fs/btrfs/backref.c @@ -1519,6 +1519,7 @@ int btrfs_check_shared(struct btrfs_root *root, u64 inum, u64 bytenr) if (!node) break; bytenr = node->val; + shared.share_count = 0; cond_resched(); }
btrfs_check_shared calls find_parent_nodes in a loop. In each iteration it passes in a share_check struct to request a check for a shared extent. The share_check::share_count must be re-initialized to zero for each iteration in order to avoid using a stale count value from the previous iteration, thus causing a false shared extent indication. Signed-off-by: Edmund Nadolski <enadolski@suse.com> --- fs/btrfs/backref.c | 1 + 1 file changed, 1 insertion(+)