Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 91e1f56a authored by Robbie Ko's avatar Robbie Ko Committed by Filipe Manana
Browse files

Btrfs: fix leak of subvolume writers counter



When falling back from a nocow write to a regular cow write, we were
leaking the subvolume writers counter in 2 situations, preventing
snapshot creation from ever completing in the future, as it waits
for that counter to go down to zero before the snapshot creation
starts.

Signed-off-by: default avatarRobbie Ko <robbieko@synology.com>
Reviewed-by: default avatarFilipe Manana <fdmanana@suse.com>
[Improved changelog and subject]
Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
parent 6f546216
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -1331,10 +1331,16 @@ static noinline int run_delalloc_nocow(struct inode *inode,
			 * either valid or do not exist.
			 */
			if (csum_exist_in_range(fs_info, disk_bytenr,
						num_bytes))
						num_bytes)) {
				if (!nolock)
					btrfs_end_write_no_snapshoting(root);
				goto out_check;
			if (!btrfs_inc_nocow_writers(fs_info, disk_bytenr))
			}
			if (!btrfs_inc_nocow_writers(fs_info, disk_bytenr)) {
				if (!nolock)
					btrfs_end_write_no_snapshoting(root);
				goto out_check;
			}
			nocow = 1;
		} else if (extent_type == BTRFS_FILE_EXTENT_INLINE) {
			extent_end = found_key.offset +