linux/fs/ocfs2
Nick Piggin 54cb8821de mm: merge populate and nopage into fault (fixes nonlinear)
Nonlinear mappings are (AFAIKS) simply a virtual memory concept that encodes
the virtual address -> file offset differently from linear mappings.

->populate is a layering violation because the filesystem/pagecache code
should need to know anything about the virtual memory mapping.  The hitch here
is that the ->nopage handler didn't pass down enough information (ie.  pgoff).
 But it is more logical to pass pgoff rather than have the ->nopage function
calculate it itself anyway (because that's a similar layering violation).

Having the populate handler install the pte itself is likewise a nasty thing
to be doing.

This patch introduces a new fault handler that replaces ->nopage and
->populate and (later) ->nopfn.  Most of the old mechanism is still in place
so there is a lot of duplication and nice cleanups that can be removed if
everyone switches over.

The rationale for doing this in the first place is that nonlinear mappings are
subject to the pagefault vs invalidate/truncate race too, and it seemed stupid
to duplicate the synchronisation logic rather than just consolidate the two.

After this patch, MAP_NONBLOCK no longer sets up ptes for pages present in
pagecache.  Seems like a fringe functionality anyway.

NOPAGE_REFAULT is removed.  This should be implemented with ->fault, and no
users have hit mainline yet.

[akpm@linux-foundation.org: cleanup]
[randy.dunlap@oracle.com: doc. fixes for readahead]
[akpm@linux-foundation.org: build fix]
Signed-off-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Cc: Mark Fasheh <mark.fasheh@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-07-19 10:04:41 -07:00
..
cluster Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2 2007-07-16 10:52:55 -07:00
dlm [KJ PATCH] Replacing memset(<addr>,0,PAGE_SIZE) with clear_page() in fs/ocfs2/dlm/dlmrecovery.c 2007-07-10 17:19:52 -07:00
alloc.c ocfs2: support for removing file regions 2007-07-10 17:32:08 -07:00
alloc.h ocfs2: support for removing file regions 2007-07-10 17:32:08 -07:00
aops.c mm: merge populate and nopage into fault (fixes nonlinear) 2007-07-19 10:04:41 -07:00
aops.h ocfs2: shared writeable mmap 2007-07-10 17:31:51 -07:00
buffer_head_io.c ocfs2: implement directory read-ahead 2006-09-20 15:53:40 -07:00
buffer_head_io.h ocfs2: implement directory read-ahead 2006-09-20 15:53:40 -07:00
dcache.c ocfs2: Remove special casing for inode creation in ocfs2_dentry_attach_lock() 2006-09-24 13:50:45 -07:00
dcache.h ocfs2: Remove special casing for inode creation in ocfs2_dentry_attach_lock() 2006-09-24 13:50:45 -07:00
dir.c ocfs2: Support creation of unwritten extents 2007-07-10 17:32:04 -07:00
dir.h ocfs2: Remove struct ocfs2_journal_handle in favor of handle_t 2006-12-01 18:28:28 -08:00
dlmglue.c [PATCH] ocfs2: use list_for_each_entry where benefical 2007-07-10 17:19:49 -07:00
dlmglue.h [PATCH] fs/ocfs2/: make 3 functions static 2007-05-02 15:07:27 -07:00
endian.h ocfs2: btree changes for unwritten extents 2007-07-10 17:32:00 -07:00
export.c ocfs2: fix sparse warnings in fs/ocfs2 2007-05-02 15:08:08 -07:00
export.h knfsd: exportfs: add exportfs.h header 2007-07-17 10:23:06 -07:00
extent_map.c ocfs2: btree changes for unwritten extents 2007-07-10 17:32:00 -07:00
extent_map.h ocfs2: Cache extent records 2007-04-26 15:10:40 -07:00
file.c arch/i386/* fs/* ipc/*: mark variables with uninitialized_var() 2007-07-17 16:23:19 -04:00
file.h ocfs2: Support xfs style space reservation ioctls 2007-07-10 17:32:09 -07:00
heartbeat.c usermodehelper: Tidy up waiting 2007-07-18 08:47:40 -07:00
heartbeat.h [PATCH] OCFS2: The Second Oracle Cluster Filesystem 2006-01-03 11:45:47 -08:00
inode.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
inode.h [PATCH] Copy i_flags to ocfs2 inode flags on write 2007-05-02 15:07:58 -07:00
ioctl.c Introduce is_owner_or_cap() to wrap CAP_FOWNER use with fsuid check 2007-07-17 12:00:03 -07:00
ioctl.h ocfs2: Implement compat_ioctl() 2007-05-02 15:07:16 -07:00
journal.c [PATCH] ocfs2: use list_for_each_entry where benefical 2007-07-10 17:19:49 -07:00
journal.h ocfs2: support for removing file regions 2007-07-10 17:32:08 -07:00
localalloc.c ocfs2: fix inode leak 2007-05-25 11:00:46 -07:00
localalloc.h ocfs2: Remove struct ocfs2_journal_handle in favor of handle_t 2006-12-01 18:28:28 -08:00
Makefile ocfs2: add ext2 attributes 2006-09-20 15:48:39 -07:00
mmap.c mm: merge populate and nopage into fault (fixes nonlinear) 2007-07-19 10:04:41 -07:00
mmap.h [PATCH] OCFS2: The Second Oracle Cluster Filesystem 2006-01-03 11:45:47 -08:00
namei.c ocfs2: Support creation of unwritten extents 2007-07-10 17:32:04 -07:00
namei.h [PATCH] mark struct inode_operations const 2 2007-02-12 09:48:46 -08:00
ocfs1_fs_compat.h [PATCH] OCFS2: The Second Oracle Cluster Filesystem 2006-01-03 11:45:47 -08:00
ocfs2_fs.h ocfs2: Support xfs style space reservation ioctls 2007-07-10 17:32:09 -07:00
ocfs2_lockid.h ocfs2: Remove delete inode vote 2007-04-26 14:39:48 -07:00
ocfs2.h ocfs2: btree changes for unwritten extents 2007-07-10 17:32:00 -07:00
slot_map.c ocfs2: Add "preferred slot" mount option 2007-07-10 17:19:54 -07:00
slot_map.h [PATCH] OCFS2: The Second Oracle Cluster Filesystem 2006-01-03 11:45:47 -08:00
suballoc.c ocfs2: use all extent block suballocators 2007-07-10 17:31:56 -07:00
suballoc.h ocfs2: plug truncate into cached dealloc routines 2007-07-10 17:31:55 -07:00
super.c ocfs2: Support xfs style space reservation ioctls 2007-07-10 17:32:09 -07:00
super.h ocfs2: Support xfs style space reservation ioctls 2007-07-10 17:32:09 -07:00
symlink.c mm: make read_cache_page synchronous 2007-05-07 12:12:51 -07:00
symlink.h [PATCH] mark struct inode_operations const 2 2007-02-12 09:48:46 -08:00
sysfile.c ocfs2: Remove i_generation from inode lock names 2006-09-24 13:50:46 -07:00
sysfile.h [PATCH] OCFS2: The Second Oracle Cluster Filesystem 2006-01-03 11:45:47 -08:00
uptodate.c [PATCH] slab: remove kmem_cache_t 2006-12-07 08:39:25 -08:00
uptodate.h ocfs2: implement directory read-ahead 2006-09-20 15:53:40 -07:00
ver.c [PATCH] OCFS2: The Second Oracle Cluster Filesystem 2006-01-03 11:45:47 -08:00
ver.h [PATCH] OCFS2: The Second Oracle Cluster Filesystem 2006-01-03 11:45:47 -08:00
vote.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
vote.h ocfs2: remove unused code 2007-04-26 14:40:16 -07:00