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

Commit 9c2693c9 authored by Chris Mason's avatar Chris Mason
Browse files

Merge branch 'master' of...

parents 8aa38c31 fbf19087
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -4909,10 +4909,21 @@ int btrfs_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
		goto again;
	}

	/*
	 * XXX - page_mkwrite gets called every time the page is dirtied, even
	 * if it was already dirty, so for space accounting reasons we need to
	 * clear any delalloc bits for the range we are fixing to save.  There
	 * is probably a better way to do this, but for now keep consistent with
	 * prepare_pages in the normal write path.
	 */
	clear_extent_bits(&BTRFS_I(inode)->io_tree, page_start, page_end,
			  EXTENT_DIRTY | EXTENT_DELALLOC, GFP_NOFS);

	ret = btrfs_set_extent_delalloc(inode, page_start, page_end);
	if (ret) {
		unlock_extent(io_tree, page_start, page_end, GFP_NOFS);
		ret = VM_FAULT_SIGBUS;
		btrfs_free_reserved_data_space(root, inode, PAGE_CACHE_SIZE);
		goto out_unlock;
	}
	ret = 0;