Convert XIP to support non-struct page backed memory, using VM_MIXEDMAP
for the user mappings.
This requires the get_xip_page API to be changed to an address based one.
Improve the API layering a little bit too, while we're here.
(The kaddr->pfn conversion may not be quite right for all architect
Cc: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/jffs2/file.c | 105 +++-
1 file changed, 66 insertions(+), 39 deletions(-)
Index: linux-2.6/fs/jffs2/file.c
==
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/adfs/inode.c | 14 +-
1 file changed, 9 insertions(+), 5 deletions(-)
Index: linux-2.6/fs/adfs/inode.c
===
--- linux-2.6.or
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/sysv/dir.c | 51 +++
fs/sysv/itree.c | 23 +++
2 files changed, 50 insertions(+), 24 deletions(-)
Index: linux-2.6/fs/sysv/itre
This also gets rid of a lot of useless read_file stuff. And also
optimises the full page write case by marking a !uptodate page uptodate.
Cc: Jeff Dike <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/hostfs/hostfs_kern.c | 70 +++
Cc: Andries Brouwer <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/minix/dir.c | 50 --
fs/minix/inode.c | 23 +++
2 files changed, 51 insertions(+), 22 deletions(-)
Index: lin
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/hfsplus/extents.c | 21 +
fs/hfsplus/inode.c | 20
2 files changed, 21 insertions(+), 20 deletions(-)
Index: linux-2.6/fs/hfsplus/inode.c
From: Andrew Morton <[EMAIL PROTECTED]>
This patch fixed the following bug:
When prefaulting in the pages in generic_file_buffered_write(), we only
faulted in the pages for the firts segment of the iovec. If the second of
successive segment described a mmapping of the page into which we're
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/hfs/extent.c | 19 ---
fs/hfs/inode.c | 20
2 files changed, 20 insertions(+), 19 deletions(-)
Index: linux-2.6/fs/hfs/inode.c
Rework the generic block "cont" routines to handle the new aops.
Supporting cont_prepare_write would take quite a lot of code to support,
so remove it instead (and we later convert all filesystems to use it).
write_begin gets passed AOP_FLAG_CONT_EXPAND when called from
generic_cont_expand, so fil
Allow CONFIG_DEBUG_VM to switch off the prefaulting logic, to simulate the
difficult race where the page may be unmapped before calling copy_from_user.
Makes the race much easier to hit.
This is useful for demonstration and testing purposes, but is removed in a
subsequent patch.
Cc: Linux Memory
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/qnx4/inode.c | 21 +
1 file changed, 13 insertions(+), 8 deletions(-)
Index: linux-2.6/fs/qnx4/inode.c
===
--- linu
If prepare_write fails with AOP_TRUNCATED_PAGE, or if commit_write fails, then
we may have failed the write operation despite prepare_write having
instantiated blocks past i_size. Fix this, and consolidate the trimming into
one place.
Cc: Linux Memory Management <[EMAIL PROTECTED]>
Cc: Linux File
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/fat/inode.c | 27 ---
1 file changed, 16 insertions(+), 11 deletions(-)
Index: linux-2.6/fs/fat/inode.c
===
---
These are intended to replace prepare_write and commit_write with more
flexible alternatives that are also able to avoid the buffered write
deadlock problems efficiently (which prepare_write is unable to do).
Cc: Linux Memory Management <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-off-by: Nic
From: Andrew Morton <[EMAIL PROTECTED]>
This was a bugfix against 6527c2bdf1f833cc18e8f42bd97973d583e4aa83, which we
also revert.
Cc: Linux Memory Management <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
New buffers against uptodate pages are simply be marked uptodate, while the
buffer_new bit remains set. This causes error-case code to zero out parts
of those buffers because it thinks they contain stale data: wrong, they
are actually uptodate so this is a data loss situation.
Fix this by actuall
From: Vladimir Saveliev <[EMAIL PROTECTED]>
Make reiserfs to write via generic routines.
Original reiserfs write optimized for big writes is deadlock rone
Signed-off-by: Vladimir Saveliev <[EMAIL PROTECTED]>
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
---
---
fs/reiserfs/file.c | 1240 --
Modify the core write() code so that it won't take a pagefault while holding a
lock on the pagecache page. There are a number of different deadlocks possible
if we try to do such a thing:
1. generic_buffered_write
2. lock_page
3.prepare_write
4. unlock_page+vmtruncate
5. copy_from_
Quite a bit of code is used in maintaining these "cached pages" that are
probably pretty unlikely to get used. It would require a narrow race where
the page is inserted concurrently while this process is allocating a page
in order to create the spare page. Then a multi-page write into an uncached
Add an iterator data structure to operate over an iovec. Add usercopy
operators needed by generic_file_buffered_write, and convert that function
over.
Cc: Linux Memory Management <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
include/linux/fs.h | 33
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
---
fs/buffer.c | 20
include/linux/buffer_head.h |1 -
2 files changed, 21 deletions(-)
Index: linux-2.6/fs/buffer.c
===
--- linux-2.6.orig/f
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/hpfs/file.c | 20 ++--
1 file changed, 14 insertions(+), 6 deletions(-)
Index: linux-2.6/fs/hpfs/file.c
===
--- linux-2
From: Vladimir Saveliev <[EMAIL PROTECTED]>
Convert reiserfs to new aops
Signed-off-by: Vladimir Saveliev <[EMAIL PROTECTED]>
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
---
---
fs/reiserfs/inode.c | 177 +---
fs/reiserfs/ioctl.c | 10 +-
fs
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/smbfs/file.c | 34 +-
1 file changed, 25 insertions(+), 9 deletions(-)
Index: linux-2.6/fs/smbfs/file.c
===
--- linux-2.6.ori
From: Andrew Morton <[EMAIL PROTECTED]>
Rename some variables and fix some types.
Cc: Linux Memory Management <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
mm/filemap.c | 35 ++
Cc: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/jfs/inode.c | 19 +++
1 file changed, 11 insertions(+), 8 deletions(-)
Index: linux-2.6/fs/jfs/inode.c
==
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/ufs/dir.c | 56 +---
fs/ufs/inode.c | 23 +++
2 files changed, 56 insertions(+), 23 deletions(-)
Index: linux-2.6/fs/ufs/in
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Convert ext4 to use write_begin()/write_end() methods.
Signed-off-by: Badari Pulavarty <[EMAIL PROTECTED]>
fs/ext4/inode.c | 147 +++-
1 file changed, 93 insertions(+), 54 deletions(-)
Index: linux
Convert udf to new aops. Also seem to have fixed pagecache corruption in
udf_adinicb_commit_write -- page was marked uptodate when it is not. Also,
fixed the silly setup where prepare_write was doing a kmap to be used in
commit_write: just do kmap_atomic in write_end. Use libfs helpers to make
this
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/bfs/file.c | 12
1 file changed, 8 insertions(+), 4 deletions(-)
Index: linux-2.6/fs/bfs/file.c
===
--- linux-2.6.orig/fs/
Cc: Linux Filesystems
Acked-by: Trond Myklebust <[EMAIL PROTECTED]>
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/nfs/file.c | 49 -
1 file changed, 36 insertions(+), 13 deletions(-)
Index: linux-2.6/fs/nfs/file.c
===
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/block_dev.c | 26 +++---
1 file changed, 19 insertions(+), 7 deletions(-)
Index: linux-2.6/fs/block_dev.c
===
--- linux-2.6.orig/fs/block
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
Various fixes and improvements
Signed-off-by: Badari Pulavarty <[EMAIL PROTECTED]>
fs/ext3/inode.c | 136
1 file changed, 88 insertions(+), 48 d
[mszeredi]
- don't send zero length write requests
- it is not legal for the filesystem to return with zero written bytes
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
Signed-off-by: Miklos Szeredi <[EMAIL PROTECTED]>
fs/fuse/file.c | 48 +---
1 f
Implement new aops for some of the simpler filesystems.
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/configfs/inode.c |4 ++--
fs/hugetlbfs/inode.c | 16 ++--
fs/ramfs/file-mmu.c |4 ++--
fs/ramfs/file-nommu.c |4 ++--
fs/sysfs/inode.c
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/ext2/dir.c | 56 ++--
fs/ext2/ext2.h |3 +++
fs/ext2/inode.c | 24 +---
3 files changed, 54 insertions(+), 29 deletions
From: Vladimir Saveliev <[EMAIL PROTECTED]>
This patch makes reiserfs to use AOP_FLAG_CONT_EXPAND
in order to get rid of the special generic_cont_expand routine
Signed-off-by: Vladimir Saveliev <[EMAIL PROTECTED]>
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
---
---
fs/reiserfs/inode.c | 1
Hide some of the open-coded nr_segs tests into the iovec helpers. This is
all to simplify generic_file_buffered_write, because that gets more complex
in the next patch.
Cc: Linux Memory Management <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
mm/filem
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/xfs/linux-2.6/xfs_aops.c | 19 ---
fs/xfs/linux-2.6/xfs_lrw.c | 35 ---
2 files changed, 24 insertions(+), 30 deletions(-)
Index: linux-2.6/fs/xfs/l
Restore the KERNEL_DS optimisation, especially helpful to the 2copy write
path.
This may be a pretty questionable gain in most cases, especially after the
legacy 2copy write path is removed, but it doesn't cost much.
Cc: Linux Memory Management <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-of
Revert the patch from Neil Brown to optimise NFSD writev handling.
Cc: Linux Memory Management <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Cc: Neil Brown <[EMAIL PROTECTED]>
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
mm/filemap.c | 32 +---
1 file changed, 13 in
Hi,
This is a resync of the new aops patches to 2.6.22-rc2-mm1
Only one more conversion broken this time, so we're doing OK. AFFS
compile is broken due to cont_prepare_write disappearing, and me not
bringing the conversion patch uptodate (which I won't do again until
something happens with this p
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/sysv/dir.c | 45 +
fs/sysv/itree.c | 23 +++
2 files changed, 44 insertions(+), 24 deletions(-)
Index: linux-2.6/fs/sysv/itree.c
==
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/adfs/inode.c | 14 +-
1 file changed, 9 insertions(+), 5 deletions(-)
Index: linux-2.6/fs/adfs/inode.c
===
--- linux-2.6.or
Cc: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/jffs2/file.c | 105 +++-
1 file changed, 66 insertions(+), 39 deletions(-)
Index: linux-2.6/fs/jffs2/file.c
==
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/nfs/file.c | 49 -
1 file changed, 36 insertions(+), 13 deletions(-)
Index: linux-2.6/fs/nfs/file.c
===
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/fat/inode.c | 27 ---
1 file changed, 16 insertions(+), 11 deletions(-)
Index: linux-2.6/fs/fat/inode.c
===
---
Rework the generic block "cont" routines to handle the new aops.
Supporting cont_prepare_write would take quite a lot of code to support,
so remove it instead (and we later convert all filesystems to use it).
write_begin gets passed AOP_FLAG_CONT_EXPAND when called from
generic_cont_expand, so fil
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/hfsplus/extents.c | 21 +
fs/hfsplus/inode.c | 20
2 files changed, 21 insertions(+), 20 deletions(-)
Index: linux-2.6/fs/hfsplus/inode.c
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/hfs/extent.c | 19 ---
fs/hfs/inode.c | 20
2 files changed, 20 insertions(+), 19 deletions(-)
Index: linux-2.6/fs/hfs/inode.c
This also gets rid of a lot of useless read_file stuff. And also
optimises the full page write case by marking a !uptodate page uptodate.
Cc: Jeff Dike <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/hostfs/hostfs_kern.c | 70 +++
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/bfs/file.c | 12
1 file changed, 8 insertions(+), 4 deletions(-)
Index: linux-2.6/fs/bfs/file.c
===
--- linux-2.6.orig/fs/
From: Vladimir Saveliev <[EMAIL PROTECTED]>
Make reiserfs to write via generic routines.
Original reiserfs write optimized for big writes is deadlock rone
Signed-off-by: Vladimir Saveliev <[EMAIL PROTECTED]>
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
---
Index: linux-2.6/fs/reiserfs/file.c
=
Cc: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/jfs/inode.c | 19 +++
1 file changed, 11 insertions(+), 8 deletions(-)
Index: linux-2.6/fs/jfs/inode.c
==
Convert udf to new aops. Also seem to have fixed pagecache corruption in
udf_adinicb_commit_write -- page was marked uptodate when it is not. Also,
fixed the silly setup where prepare_write was doing a kmap to be used in
commit_write: just do kmap_atomic in write_end. Use libfs helpers to make
this
These are intended to replace prepare_write and commit_write with more
flexible alternatives that are also able to avoid the buffered write
deadlock problems efficiently (which prepare_write is unable to do).
Cc: Linux Memory Management <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-off-by: Nic
Cc: Andries Brouwer <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/minix/dir.c | 43 +--
fs/minix/inode.c | 23 +++
2 files changed, 44 insertions(+), 22 deletions(-)
Index: linux-2.6/
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/qnx4/inode.c | 21 +
1 file changed, 13 insertions(+), 8 deletions(-)
Index: linux-2.6/fs/qnx4/inode.c
===
--- linu
From: Vladimir Saveliev <[EMAIL PROTECTED]>
[EMAIL PROTECTED]: can't quite get rid of prepare_write/commit_write callbacks
yet! (xattrs and ioctl uses them), but this is a good start]
Signed-off-by: Vladimir Saveliev <[EMAIL PROTECTED]>
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
---
Index:
From: Steven Whitehouse <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-off-by: Steven Whitehouse <[EMAIL PROTECTED]>
fs/gfs2/ops_address.c | 209 +-
1 file changed, 125 insertions(+), 84 deletions(-)
Index: linux-2.6/fs/gfs2/ops_address.c
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/ufs/dir.c | 50 +++---
fs/ufs/inode.c | 23 +++
2 files changed, 50 insertions(+), 23 deletions(-)
Index: linux-2.6/fs/ufs/inode.c
Add an iterator data structure to operate over an iovec. Add usercopy
operators needed by generic_file_buffered_write, and convert that function
over.
Cc: Linux Memory Management <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
include/linux/fs.h | 33
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/smbfs/file.c | 34 +-
1 file changed, 25 insertions(+), 9 deletions(-)
Index: linux-2.6/fs/smbfs/file.c
===
--- linux-2.6.ori
[mszeredi]
- don't send zero length write requests
- it is not legal for the filesystem to return with zero written bytes
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
Signed-off-by: Miklos Szeredi <[EMAIL PROTECTED]>
fs/fuse/file.c | 48 +---
1 f
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Convert ext4 to use write_begin()/write_end() methods.
Signed-off-by: Badari Pulavarty <[EMAIL PROTECTED]>
fs/ext4/inode.c | 147 +++-
1 file changed, 93 insertions(+), 54 deletions(-)
Index: linux
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
Various fixes and improvements
Signed-off-by: Badari Pulavarty <[EMAIL PROTECTED]>
fs/ext3/inode.c | 136
1 file changed, 88 insertions(+), 48 d
Also clean up various little things.
I've got rid of the comment from akpm, because now that make_page_uptodate
is only called from 2 places, it is pretty easy to see that the buffers
are in an uptodate state at the time of the call. Actually, it was OK before
my patch as well, because the memset
Hide some of the open-coded nr_segs tests into the iovec helpers. This is
all to simplify generic_file_buffered_write, because that gets more complex
in the next patch.
Cc: Linux Memory Management <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
mm/filem
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/xfs/linux-2.6/xfs_aops.c | 19 ---
fs/xfs/linux-2.6/xfs_lrw.c | 35 ---
2 files changed, 24 insertions(+), 30 deletions(-)
Index: linux-2.6/fs/xfs/l
Implement new aops for some of the simpler filesystems.
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/configfs/inode.c |4 ++--
fs/hugetlbfs/inode.c | 16 ++--
fs/ramfs/file-mmu.c |4 ++--
fs/ramfs/file-nommu.c |4 ++--
fs/sysfs/inode.c
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/hpfs/file.c | 20 ++--
1 file changed, 14 insertions(+), 6 deletions(-)
Index: linux-2.6/fs/hpfs/file.c
===
--- linux-2
Cc: [EMAIL PROTECTED]
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/ext2/dir.c | 47 +--
fs/ext2/ext2.h |3 +++
fs/ext2/inode.c | 24 +---
3 files changed, 45 insertions(+), 29 deletions(-)
Inde
Quite a bit of code is used in maintaining these "cached pages" that are
probably pretty unlikely to get used. It would require a narrow race where
the page is inserted concurrently while this process is allocating a page
in order to create the spare page. Then a multi-page write into an uncached
Restore the KERNEL_DS optimisation, especially helpful to the 2copy write
path.
This may be a pretty questionable gain in most cases, especially after the
legacy 2copy write path is removed, but it doesn't cost much.
Cc: Linux Memory Management <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-of
Cc: Linux Filesystems
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
fs/block_dev.c | 26 +++---
1 file changed, 19 insertions(+), 7 deletions(-)
Index: linux-2.6/fs/block_dev.c
===
--- linux-2.6.orig/fs/block
Modify the core write() code so that it won't take a pagefault while holding a
lock on the pagecache page. There are a number of different deadlocks possible
if we try to do such a thing:
1. generic_buffered_write
2. lock_page
3.prepare_write
4. unlock_page+vmtruncate
5. copy_from_
From: Andrew Morton <[EMAIL PROTECTED]>
This patch fixed the following bug:
When prefaulting in the pages in generic_file_buffered_write(), we only
faulted in the pages for the firts segment of the iovec. If the second of
successive segment described a mmapping of the page into which we're
From: Andrew Morton <[EMAIL PROTECTED]>
Rename some variables and fix some types.
Cc: Linux Memory Management <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
mm/filemap.c | 35 ++
New buffers against uptodate pages are simply be marked uptodate, while the
buffer_new bit remains set. This causes error-case code to zero out parts
of those buffers because it thinks they contain stale data: wrong, they
are actually uptodate so this is a data loss situation.
Fix this by actuall
If prepare_write fails with AOP_TRUNCATED_PAGE, or if commit_write fails, then
we may have failed the write operation despite prepare_write having
instantiated blocks past i_size. Fix this, and consolidate the trimming into
one place.
Cc: Linux Memory Management <[EMAIL PROTECTED]>
Cc: Linux File
Revert the patch from Neil Brown to optimise NFSD writev handling.
Cc: Linux Memory Management <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Cc: Neil Brown <[EMAIL PROTECTED]>
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
mm/filemap.c | 32 +---
1 file changed, 13 in
Allow CONFIG_DEBUG_VM to switch off the prefaulting logic, to simulate the
difficult race where the page may be unmapped before calling copy_from_user.
Makes the race much easier to hit.
This is useful for demonstration and testing purposes, but is removed in a
subsequent patch.
Cc: Linux Memory
From: Andrew Morton <[EMAIL PROTECTED]>
This was a bugfix against 6527c2bdf1f833cc18e8f42bd97973d583e4aa83, which we
also revert.
Cc: Linux Memory Management <[EMAIL PROTECTED]>
Cc: Linux Filesystems
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
--
Here is an update against 2.6.21-mm2. Unfortunately UML broke for me, so
test coverage isn't so good as the last time I posted the series. Also,
several filesystems had significant clashes. Considering the amount of
time it took to get them working, I won't fix them again. They aren't
_broken_
85 matches
Mail list logo