From patchwork Mon Jun 21 23:21:10 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dan Magenheimer X-Patchwork-Id: 107297 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter.kernel.org (8.14.4/8.14.3) with ESMTP id o5LNNBKU013911 for ; Mon, 21 Jun 2010 23:23:26 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758686Ab0FUXWO (ORCPT ); Mon, 21 Jun 2010 19:22:14 -0400 Received: from rcsinet10.oracle.com ([148.87.113.121]:47800 "EHLO rcsinet10.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758257Ab0FUXWI (ORCPT ); Mon, 21 Jun 2010 19:22:08 -0400 Received: from rcsinet15.oracle.com (rcsinet15.oracle.com [148.87.113.117]) by rcsinet10.oracle.com (Switch-3.4.2/Switch-3.4.2) with ESMTP id o5LNLFnZ002837 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 21 Jun 2010 23:21:17 GMT Received: from acsmt354.oracle.com (acsmt354.oracle.com [141.146.40.154]) by rcsinet15.oracle.com (Switch-3.4.2/Switch-3.4.1) with ESMTP id o5LMAS8R015900; Mon, 21 Jun 2010 23:21:13 GMT Received: from ca-server1.us.oracle.com by acsmt355.oracle.com with ESMTP id 361720851277162471; Mon, 21 Jun 2010 16:21:11 -0700 Received: from dmagenhe by ca-server1.us.oracle.com with local (Exim 4.69) (envelope-from ) id 1OQqIg-000573-DB; Mon, 21 Jun 2010 16:21:10 -0700 Date: Mon, 21 Jun 2010 16:21:10 -0700 From: Dan Magenheimer To: chris.mason@oracle.com, viro@zeniv.linux.org.uk, akpm@linux-foundation.org, adilger@sun.com, tytso@mit.edu, mfasheh@suse.com, joel.becker@oracle.com, matthew@wil.cx, linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, ocfs2-devel@oss.oracle.com, linux-mm@kvack.org, ngupta@vflare.org, jeremy@goop.org, JBeulich@novell.com, kurt.hackel@oracle.com, npiggin@suse.de, dave.mccracken@oracle.com, riel@redhat.com, avi@redhat.com, konrad.wilk@oracle.com, dan.magenheimer@oracle.com Subject: [PATCH V3 6/8] Cleancache: btrfs hooks for cleancache Message-ID: <20100621232110.GA19651@ca-server1.us.oracle.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.16 (2007-06-11) X-Auth-Type: Internal IP X-Source-IP: rcsinet15.oracle.com [148.87.113.117] X-CT-RefId: str=0001.0A090204.4C1FF3EE.00BF:SCFMA4539811,ss=1,fgs=0 Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter.kernel.org [140.211.167.41]); Mon, 21 Jun 2010 23:23:26 +0000 (UTC) --- linux-2.6.35-rc2/fs/btrfs/super.c 2010-06-05 21:43:24.000000000 -0600 +++ linux-2.6.35-rc2-cleancache/fs/btrfs/super.c 2010-06-11 09:01:37.000000000 -0600 @@ -39,6 +39,7 @@ #include #include #include +#include #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.35-rc2/fs/btrfs/extent_io.c 2010-06-05 21:43:24.000000000 -0600 +++ linux-2.6.35-rc2-cleancache/fs/btrfs/extent_io.c 2010-06-11 10:28:51.000000000 -0600 @@ -10,6 +10,7 @@ #include #include #include +#include #include "extent_io.h" #include "extent_map.h" #include "compat.h" @@ -2027,6 +2028,13 @@ static int __extent_read_full_page(struc set_page_extent_mapped(page); + if (!PageUptodate(page)) { + if (cleancache_get_page(page) == 0) { + BUG_ON(blocksize != PAGE_SIZE); + goto out; + } + } + end = page_end; while (1) { lock_extent(tree, start, end, GFP_NOFS); @@ -2151,6 +2159,7 @@ static int __extent_read_full_page(struc cur = cur + iosize; page_offset += iosize; } +out: if (!nr) { if (!PageError(page)) SetPageUptodate(page);