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

Commit f25784b3 authored by Yan Zheng's avatar Yan Zheng Committed by Chris Mason
Browse files

Btrfs: Fix async caching interaction with unmount



- don't stop the caching thread until btrfs_commit_super return.

- if caching is interrupted by umount, set last to (u64)-1.
  otherwise the un-scanned range of block group will be considered
  as free extent.

Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
parent 68b38550
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -2317,6 +2317,9 @@ int close_ctree(struct btrfs_root *root)
			printk(KERN_ERR "btrfs: commit super ret %d\n", ret);
	}

	fs_info->closing = 2;
	smp_mb();

	if (fs_info->delalloc_bytes) {
		printk(KERN_INFO "btrfs: at unmount delalloc count %llu\n",
		       (unsigned long long)fs_info->delalloc_bytes);
+3 −1
Original line number Diff line number Diff line
@@ -288,8 +288,10 @@ static int caching_kthread(void *data)

	while (1) {
		smp_mb();
		if (block_group->fs_info->closing)
		if (block_group->fs_info->closing > 1) {
			last = (u64)-1;
			break;
		}

		leaf = path->nodes[0];
		slot = path->slots[0];