瀏覽代碼

Btrfs: Add extra checks to avoid removing extent_state from pages we can't free

Signed-off-by: Chris Mason <chris.mason@oracle.com>
Chris Mason 17 年之前
父節點
當前提交
3dd39914bc
共有 1 個文件被更改,包括 6 次插入0 次删除
  1. 6 0
      fs/btrfs/disk-io.c

+ 6 - 0
fs/btrfs/disk-io.c

@@ -436,6 +436,12 @@ static int btree_releasepage(struct page *page, gfp_t gfp_flags)
 	struct extent_map_tree *map;
 	int ret;
 
+	if (page_count(page) > 3) {
+		/* once for page->private, once for the caller, once
+		 * once for the page cache
+		 */
+		return 0;
+	}
 	tree = &BTRFS_I(page->mapping->host)->io_tree;
 	map = &BTRFS_I(page->mapping->host)->extent_tree;
 	ret = try_release_extent_mapping(map, tree, page, gfp_flags);