Dan Magenheimer
2010-May-28 17:36 UTC
[PATCH V2 5/7] Cleancache (was Transcendent Memory): btrfs hooks
[PATCH V2 5/7] Cleancache (was Transcendent Memory): btrfs hooks Filesystems must explicitly enable cleancache. Also, btrfs uses its own readpage which must be hooked. Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com> Signed-off-by: Chris Mason <chris.mason@oracle.com> Diffstat: extent_io.c | 9 +++++++++ super.c | 2 ++ 2 files changed, 11 insertions(+) --- linux-2.6.34/fs/btrfs/super.c 2010-05-16 15:17:36.000000000 -0600 +++ linux-2.6.34-cleancache/fs/btrfs/super.c 2010-05-24 12:14:44.000000000 -0600 @@ -39,6 +39,7 @@ #include <linux/miscdevice.h> #include <linux/magic.h> #include <linux/slab.h> +#include <linux/cleancache.h> #include "compat.h" #include "ctree.h" #include "disk-io.h" @@ -477,6 +478,7 @@ static int btrfs_fill_super(struct super sb->s_root = root_dentry; save_mount_options(sb, data); + sb->cleancache_poolid = cleancache_init_fs(PAGE_SIZE); return 0; fail_close: --- linux-2.6.34/fs/btrfs/extent_io.c 2010-05-16 15:17:36.000000000 -0600 +++ linux-2.6.34-cleancache/fs/btrfs/extent_io.c 2010-05-24 12:31:01.000000000 -0600 @@ -10,6 +10,7 @@ #include <linux/swap.h> #include <linux/writeback.h> #include <linux/pagevec.h> +#include <linux/cleancache.h> #include "extent_io.h" #include "extent_map.h" #include "compat.h" @@ -2030,6 +2031,13 @@ static int __extent_read_full_page(struc set_page_extent_mapped(page); + if (!PageUptodate(page)) { + if (cleancache_get_page(page) == CLEANCACHE_GET_PAGE_SUCCESS) { + BUG_ON(blocksize != PAGE_SIZE); + goto out; + } + } + end = page_end; lock_extent(tree, start, end, GFP_NOFS); @@ -2146,6 +2154,7 @@ static int __extent_read_full_page(struc cur = cur + iosize; page_offset += iosize; } +out: if (!nr) { if (!PageError(page)) SetPageUptodate(page); -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html