On Fri, Nov 15, 2019 at 03:43:06PM -0500, Josef Bacik wrote:
> Testing with the new fsstress support for subvolumes uncovered a pretty
> bad problem with rename exchange on subvolumes. We're modifying two
> different subvolumes, but we only start the transaction on one of them,
> so the other one is not added to the dirty root list. This is caught by
> btrfs_cow_block() with a warning because the root has not been updated,
> however if we do not modify this root again we'll end up pointing at an
> invalid root because the root item is never updated.
>
> Fix this by making sure we add the destination root to the trans list,
> the same as we do with normal renames. This fixes the corruption.
>
> Fixes: cdd1fedf8261 ("btrfs: add support for RENAME_EXCHANGE and RENAME_WHITEOUT")
> Signed-off-by: Josef Bacik <josef@xxxxxxxxxxxxxx>
Added to misc-next, thanks.