From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nate Diller Subject: [PATCH 0/17] fs: cleanup single page synchronous read interface Date: Wed, 11 Apr 2007 19:49:38 -0700 Message-ID: <20070412024938.27380.54538.patchbomb.py@localhost> Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, reiserfs-dev@namesys.com To: Andrew Morton , Alexander Viro , Christoph Hellwig , Roman Zippel , Mikulas Patocka , David Woodhouse , Dave Kleikamp , Anton Altaparmakov , Evgeniy Dushistov Return-path: Received: from qb-out-0506.google.com ([72.14.204.224]:61978 "EHLO qb-out-0506.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1161489AbXDLCvL (ORCPT ); Wed, 11 Apr 2007 22:51:11 -0400 Received: by qb-out-0506.google.com with SMTP id q10so34039qbq for ; Wed, 11 Apr 2007 19:51:10 -0700 (PDT) Sender: linux-fsdevel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org Nick Piggin recently changed the read_cache_page interface to be synchronous, which is pretty much what the file systems want anyway. Turns out that they have more in common than that, though, and some of them want to be able to get an uptodate *locked* page. Many of them want a kmapped page, which is uptodate and unlocked, and they all have their own individual helper functions to achieve this. Since the helper functions are so similar, this patch just combines them into a small number of simple library functions, which call read_cache_page (renamed to __read_cache_page because it now returns a locked page). The immediate result is a vast reduction in the number of fs-specific helper functions. The secondary goal is to reduce the number of places the page lock is taken, and eliminate a lot of PageUptodate and PageError checks. The file systems that still use PageChecked now have checker functions that return an error if the page is corrupted or has some other error. This simplifies the logic since the checker function is not part of any helper function anymore. Compile tested on x86_64. Signed-off-by: Nate Diller --- drivers/mtd/devices/block2mtd.c | 28 +------ fs/afs/dir.c | 56 +++----------- fs/afs/mntpt.c | 10 -- fs/cramfs/inode.c | 3 fs/ext2/dir.c | 82 ++++++++------------- fs/freevxfs/vxfs_extern.h | 1 fs/freevxfs/vxfs_inode.c | 2 fs/freevxfs/vxfs_lookup.c | 4 - fs/freevxfs/vxfs_subr.c | 33 -------- fs/hfs/bnode.c | 4 - fs/hfsplus/bnode.c | 4 - fs/jffs2/fs.c | 27 ------- fs/jffs2/gc.c | 15 ++- fs/jfs/jfs_metapage.c | 5 - fs/minix/dir.c | 59 ++++----------- fs/ntfs/aops.h | 67 ----------------- fs/ntfs/bitmap.c | 8 +- fs/ntfs/dir.c | 65 ++++++----------- fs/ntfs/index.c | 12 +-- fs/ntfs/lcnalloc.c | 6 - fs/ntfs/logfile.c | 12 +-- fs/ntfs/mft.c | 53 +++++-------- fs/ntfs/super.c | 38 ++++----- fs/ntfs/usnjrnl.c | 4 - fs/partitions/check.c | 14 +-- fs/reiser4/plugin/file/tail_conversion.c | 8 -- fs/reiser4/plugin/item/extent_file_ops.c | 9 -- fs/reiserfs/xattr.c | 48 ++---------- fs/sysv/dir.c | 19 +--- fs/ufs/balloc.c | 8 +- fs/ufs/dir.c | 90 +++++++++-------------- fs/ufs/truncate.c | 8 +- fs/ufs/util.c | 52 ------------- fs/ufs/util.h | 10 -- include/linux/pagemap.h | 53 ++++++++++++- mm/filemap.c | 118 +++++++------------------------ 36 files changed, 315 insertions(+), 720 deletions(-)