On 5/1/07, Nate Diller <[EMAIL PROTECTED]> wrote:
On 5/1/07, Christoph Lameter <[EMAIL PROTECTED]> wrote:
> On Tue, 1 May 2007, Andrew Morton wrote:
>
> > As Satyam said, this will sometimes cause us to map and unmap the page
> > twice, and to run flush_dcache_
On 5/1/07, Christoph Lameter <[EMAIL PROTECTED]> wrote:
On Tue, 1 May 2007, Andrew Morton wrote:
> As Satyam said, this will sometimes cause us to map and unmap the page
> twice, and to run flush_dcache_page() twice. In not-terribly-uncommon
> circumstances in very frequently called functions.
On 4/12/07, David Howells <[EMAIL PROTECTED]> wrote:
Nate Diller <[EMAIL PROTECTED]> wrote:
> Hmmm you're right. Is your security work going into the next -mm?
I don't know. Andrew hasn't said anything. Andrew? Are you waiting for it
to go through DaveM
On 4/12/07, Roman Zippel <[EMAIL PROTECTED]> wrote:
Hi,
On Thu, 12 Apr 2007, Christoph Hellwig wrote:
> On Wed, Apr 11, 2007 at 07:49:38PM -0700, Nate Diller wrote:
> > read_mapping_page_async() is going away, so convert its only user to
> > read_mapping_page(). Thi
On 4/12/07, Phillip Lougher <[EMAIL PROTECTED]> wrote:
Nate Diller wrote:
> + page = read_cache_page(OFNI_EDONI_2SFFJ(f)->i_mapping,
> + start >> PAGE_CACHE_SHIFT,
> + (void *)
On 4/12/07, David Howells <[EMAIL PROTECTED]> wrote:
Nate Diller <[EMAIL PROTECTED]> wrote:
> -static struct page *afs_dir_get_page(struct inode *dir, unsigned long index)
NAK. This conflicts with my AFS security patches, and eliminates any way of
passing the key through to rea
Now that read_mapping_page() does error checking internally, there is no
need to check PageError here.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/fs/hfs/bnode.c
linux-2.6.21-rc6-mm1-test/fs/hfs/bnode.c
--- linux-2.6.21-rc6-mm1/fs/hfs/b
Replace jffs2_gc_fetch_page() and jffs2_gc_release_page() using the
read_cache_page() and put_kmapped_page() calls, and update the call site
accordingly. Explicit calls to kmap()/kunmap() make the code more clear.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff
Replace ntfs_map_page() and ntfs_unmap_page() using the new read_kmap_page()
and put_kmapped_page() calls, and their locking variants, and remove
unneeded PageError checking.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc5-mm4/fs/ntfs/aops.h
: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/fs/cramfs/inode.c
linux-2.6.21-rc6-mm1-test/fs/cramfs/inode.c
--- linux-2.6.21-rc6-mm1/fs/cramfs/inode.c 2007-04-09 17:24:03.0
-0700
+++ linux-2.6.21-rc6-mm1-test/fs/cramfs/inode.c 2007-04-09
Now that read_mapping_page() does error checking internally, there is no
need to check PageError here.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/fs/hfsplus/bnode.c
linux-2.6.21-rc6-mm1-test/fs/hfsplus/bnode.c
--- linux-2.6.21-rc6-
Replace reiserfs_get_page() and reiserfs_put_page() using the new
read_kmap_page() and put_kmapped_page() calls and their locking variants.
Also, propagate the gfp_mask() deadlock comment to callsites.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.
Replace vxfs_get_page() with the new read_kmap_page().
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc5-mm4/fs/freevxfs/vxfs_extern.h
linux-2.6.21-rc5-mm4-test/fs/freevxfs/vxfs_extern.h
--- linux-2.6.21-rc5-mm4/fs/freevxfs/vxfs_extern.h 2007
Replace sysv dir_get_page() with the new read_kmap_page().
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc5-mm4/fs/sysv/dir.c
linux-2.6.21-rc5-mm4-test/fs/sysv/dir.c
--- linux-2.6.21-rc5-mm4/fs/sysv/dir.c 2007-04-05 17:14:25.0 -0700
+++
igned-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc5-mm4/fs/ufs/balloc.c
linux-2.6.21-rc5-mm4-test/fs/ufs/balloc.c
--- linux-2.6.21-rc5-mm4/fs/ufs/balloc.c2007-04-05 17:13:29.0
-0700
+++ linux-2.6.21-rc5-mm4-test/fs/ufs/balloc.c 2007-
read_mapping_page() is now fully synchronous, so there's no need wait for
the page lock or check for I/O errors.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff
linux-2.6.21-rc6-mm1/fs/reiser4/plugin/file/tail_conversion.c
linux-2.6.21-rc6-mm1-test/fs/rei
Remove unneeded PageError checking in read_dev_sector(), and clean up the
code a bit.
Can anyone point out why it's OK to use page_address() here on a page which
has not been kmapped? If it's not OK, then a good number of callers need to
be fixed.
Signed-off-by: Nate Diller <[EM
Replace minix dir_get_page() and dir_put_page() using the new
read_kmap_page() and put_kmapped_page()/put_locked_page() calls. Also, use
__read_kmap_page() instead of re-taking the page_lock.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc5-
Replace page_read() with read_kmap_page()/__read_kmap_page(). This probably
fixes behaviour on highmem systems, since page_address() was being used
without kmap(). Also eliminate the need to re-take the page lock during
writes to the page.
Signed-off-by: Nate Diller <[EMAIL PROTEC
Replace ext2_get_page() and ext2_put_page() using the new read_kmap_page()
and put_kmapped_page() calls. Also, change the ext2_check_page() call to
return the page's error status, and update the call sites accordingly.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN
Use the new locking variant of read_mapping_page to avoid doing extra work.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/fs/jfs/jfs_metapage.c
linux-2.6.21-rc6-mm1-test/fs/jfs/jfs_metapage.c
--- linux-2.6.21-rc6-mm1/fs/jfs/jfs_metapage.c
needing to keep the page locked. These changes collectively eliminate a
substantial amount of private fs logic in favor of generic code.
It also simplifies filemap.c significantly, by assuming that callers want
synchronous behavior, which is true for all callers anyway except one.
Signed-off-by: Nate
Replace afs_dir_get_page() and afs_dir_put_page() using the new
read_kmap_page() and put_kmapped_page() calls, and eliminate unnecessary
PageError checks. Also, change the afs_dir_check_page() call to return
the page's error status, and update the call site accordingly.
Signed-off-by:
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 <[EMAIL PROTECTED]>
---
drivers/mtd/d
On 4/10/07, Andrew Morton <[EMAIL PROTECTED]> wrote:
On Tue, 10 Apr 2007 20:36:00 -0700 Nate Diller <[EMAIL PROTECTED]> wrote:
> It's very common for file systems to need to zero part or all of a page, the
> simplist way is just to use kmap_atomic() and memset(). There
Use zero_user_page() instead of open-coding it.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/fs/ntfs/aops.c
linux-2.6.21-rc6-mm1-test/fs/ntfs/aops.c
--- linux-2.6.21-rc6-mm1/fs/ntfs/aops.c 2007-04-09 10:41:47.0 -0700
+++ linux-
Use zero_user_page() instead of open-coding it.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/fs/affs/file.c
linux-2.6.21-rc6-mm1-test/fs/affs/file.c
--- linux-2.6.21-rc6-mm1/fs/affs/file.c 2007-04-09 17:23:48.0 -0700
+++ linux-
Use zero_user_page() instead of open-coding it.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/fs/ext4/inode.c
linux-2.6.21-rc6-mm1-test/fs/ext4/inode.c
--- linux-2.6.21-rc6-mm1/fs/ext4/inode.c2007-04-10 17:15:04.0
Use zero_user_page() instead of open-coding it.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/fs/ext3/inode.c
linux-2.6.21-rc6-mm1-test/fs/ext3/inode.c
--- linux-2.6.21-rc6-mm1/fs/ext3/inode.c2007-04-09 17:24:03.0
Use zero_user_page() instead of open-coding it.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/fs/gfs2/bmap.c
linux-2.6.21-rc6-mm1-test/fs/gfs2/bmap.c
--- linux-2.6.21-rc6-mm1/fs/gfs2/bmap.c 2007-04-09 17:23:48.0 -0700
+++ linux-
Use zero_user_page() instead of open-coding it.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/fs/reiserfs/file.c
linux-2.6.21-rc6-mm1-test/fs/reiserfs/file.c
--- linux-2.6.21-rc6-mm1/fs/reiserfs/file.c 2007-04-09 17:24:03.0
Use zero_user_page() instead of open-coding it. Also replace the (mostly)
redundant zero_page() function.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff
linux-2.6.21-rc6-mm1/fs/reiser4/plugin/file/cryptcompress.c
linux-2.6.21-rc6-mm1-test/fs/reiser4/plugi
Use zero_user_page() instead of open-coding it.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/fs/ocfs2/aops.c
linux-2.6.21-rc6-mm1-test/fs/ocfs2/aops.c
--- linux-2.6.21-rc6-mm1/fs/ocfs2/aops.c2007-04-09 17:24:03.0
Use zero_user_page() instead of the newly deprecated memclear_highpage_flush().
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/fs/xfs/linux-2.6/xfs_lrw.c
linux-2.6.21-rc6-mm1-test/fs/xfs/linux-2.6/xfs_lrw.c
--- linux-2.6.21-rc6-mm1/fs/xfs
Now that all the in-tree users are converted over to zero_user_page(),
deprecate the old memclear_highpage_flush() call.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/include/linux/highmem.h
linux-2.6.21-rc6-mm1-test/include/linux/hig
Use zero_user_page() instead of the newly deprecated memclear_highpage_flush().
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/fs/nfs/read.c
linux-2.6.21-rc6-mm1-test/fs/nfs/read.c
--- linux-2.6.21-rc6-mm1/fs/nfs/read.c 2007-04-09
Use zero_user_page() instead of open-coding it.
Signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
diff -urpN -X dontdiff linux-2.6.21-rc6-mm1/fs/ecryptfs/mmap.c
linux-2.6.21-rc6-mm1-test/fs/ecryptfs/mmap.c
--- linux-2.6.21-rc6-mm1/fs/ecryptfs/mmap.c 2007-04-09 17:24:03.0
the open-coded ones and the old
memclear_highpage_flush() ones. Following this patch is a series of
conversions for each file system individually, per AKPM, and finally a patch
deprecating the old call. The diffstat below shows the entire patchset.
Compile tested in x86_64.
signed-off-by: Nate
On 4/10/07, Anton Altaparmakov <[EMAIL PROTECTED]> wrote:
On 10 Apr 2007, at 07:10, Andrew Morton wrote:
> On Mon, 09 Apr 2007 21:31:37 -0700 Nate Diller
> <[EMAIL PROTECTED]> wrote:
>> It's very common for file systems to need to zero part or all of a
>> page,
ed on x86_64.
signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
cifs/file.c |9 +
ext4/writeback.c | 17 +
reiser4/plugin/item/extent_file_ops.c | 13 +++--
3 files changed, 5 insertions(+), 3
descriptive of *how*
it does the work rather than what the *purpose* is. So this patch renames
the function to zero_page_data(), and calls it from the various places that
currently open code it.
Compile tested in x86_64.
signed-off-by: Nate Diller <[EMAIL PROTECTED]>
---
On 08 Apr 2007 06:32:26 +0200, Christer Weinigel <[EMAIL PROTECTED]> wrote:
[EMAIL PROTECTED] writes:
> Lennart. Tell me again that these results from
>
> http://linuxhelp.150m.com/resources/fs-benchmarks.htm and
> http://m.domaindlx.com/LinuxHelp/resources/fs-benchmarks.htm
>
> are not of inter
This little code snippet seems to have a page_lock recursion, in
addition to overall looking particularly fragile to me. It seems to
be handling the case where a page needs to be brought uptodate because
a partial page write is being done. The page gets locked as many as 3
times, each checking P
On 2/8/07, Nick Piggin <[EMAIL PROTECTED]> wrote:
On Thu, Feb 08, 2007 at 07:49:53PM +, Christoph Hellwig wrote:
> On Thu, Feb 08, 2007 at 02:07:24PM +0100, Nick Piggin wrote:
> > Add an iterator data structure to operate over an iovec. Add usercopy
> > operators needed by generic_file_buffer
On 2/7/07, Christoph Lameter <[EMAIL PROTECTED]> wrote:
On Tue, 6 Feb 2007, Nate Diller wrote:
> > The dirty ratio with the ZVCS would be
> >
> > NR_DIRTY + NR_UNSTABLE_NFS
> > /
> > NR_FREE_PAGES + NR_INACTIVE + NR_ACTIVE + NR_MLOCK
>
>
On 2/4/07, Christoph Lameter <[EMAIL PROTECTED]> wrote:
On Sun, 4 Feb 2007, Arjan van de Ven wrote:
>
> > Exclusion or inclusion of NR_MLOCK number is straightforward for the dirty
> > ratio calcuations. global_page_state(NR_MLOCK) f.e. would get us totals on
> > mlocked pages per zone. node_pag
On Wed, 17 Jan 2007, Benjamin LaHaise wrote:
On Mon, Jan 15, 2007 at 08:25:15PM -0800, Nate Diller wrote:
the right thing to do from a design perspective. Hopefully it enables
a new architecture that can reduce context switches in I/O completion,
and reduce overhead. That's the real m
On 1/15/07, David Brownell <[EMAIL PROTECTED]> wrote:
On Monday 15 January 2007 5:54 pm, Nate Diller wrote:
> --- a/drivers/usb/gadget/inode.c 2007-01-12 14:42:29.0 -0800
> +++ b/drivers/usb/gadget/inode.c 2007-01-12 14:25:34.0 -0800
> @@ -559,35 +559,3
On 1/15/07, David Brownell <[EMAIL PROTECTED]> wrote:
On Monday 15 January 2007 5:54 pm, Nate Diller wrote:
> This removes the aio implementation from the usb gadget file system.
NAK. I see a deep mis-understanding here.
> Aside
> from making very creative (!) use of the aio
On 1/15/07, Christoph Hellwig <[EMAIL PROTECTED]> wrote:
On Mon, Jan 15, 2007 at 05:54:50PM -0800, Nate Diller wrote:
> Convert code using iocb->ki_left to use the more generic iov_length() call.
No way. We need to reduce the numer of iovec traversals, not adding
more of them.
ok
On 1/15/07, Christoph Hellwig <[EMAIL PROTECTED]> wrote:
On Mon, Jan 15, 2007 at 05:54:50PM -0800, Nate Diller wrote:
> This series is an attempt to generalize the async I/O paths to be
> implementation agnostic. It completely eliminates knowledge of
> the kiocb structure in t
Remove unused arg from socket operations
The sendmsg and recvmsg socket operations take a kiocb pointer, but none of
the functions actually use it. There's really no need even theoretically,
it's really quite ugly having it there at all. Also, removing it will pave
the way for a more generic com
This converts the _locking variant of blockdev_direct_IO to use a generic
endio function, and updates all the FS callsites.
---
Documentation/filesystems/Locking |5 +++--
Documentation/filesystems/vfs.txt |5 +++--
fs/block_dev.c|9 -
fs/ext2/inode.c
This converts the internals of __blockdev_direct_IO in fs/direct-io.c to use
a generic endio function, instead of directly calling aio_complete. It also
changes the semantics of dio_iodone to be more friendly to its only users,
xfs and ocfs2. This allows the caller to know how to release locks an
This removes the aio implementation from the usb gadget file system. Aside
from making very creative (!) use of the aio retry path, it can't be of any
use performance-wise because it always kmalloc()s a bounce buffer for the
*whole* I/O size. Perhaps the only reason to keep it around is the abili
Convert code using iocb->ki_left to use the more generic iov_length() call.
---
diff -urpN -X dontdiff a/fs/ocfs2/file.c b/fs/ocfs2/file.c
--- a/fs/ocfs2/file.c 2007-01-10 11:50:26.0 -0800
+++ b/fs/ocfs2/file.c 2007-01-10 12:42:09.0 -0800
@@ -1157,7 +1157,7 @@ static ssize_t
This converts the iternals of nfs's directIO support to use a generic endio
function, instead of directly calling aio_complete. It's pretty easy
because it already has a pretty abstracted completion path.
---
diff -urpN -X dontdiff a/fs/nfs/direct.c b/fs/nfs/direct.c
--- a/fs/nfs/direct.c 2007
Define a new function typedef for I/O completion at the file/iovec level --
typedef void (file_endio_t)(void *endio_data, ssize_t count, int err);
and convert aio_complete and all its callers to this new prototype.
---
drivers/usb/gadget/inode.c | 24 +++---
fs/aio.c
Convert the internals of blkdev_direct_IO to use a generic endio function,
instead of directly calling aio_complete. This may also fix some bugs/races
in this code, for instance it checks bio->bi_size instead of assuming it's
zero, and it atomically accumulates the bytes_done counter (assuming tha
this patch removes struct sock_iocb
Its purpose seems to have dwindled to a mere container for struct
scm_cookie, and all of the users of scm_cookie seem to require
re-initializing it each time anyway. Besides, keeping such data around from
one call to the next seems to me like a layering violati
This series is an attempt to generalize the async I/O paths to be
implementation agnostic. It completely eliminates knowledge of
the kiocb structure in the generic code and makes it private within the
current aio code. Things get noticeably cleaner without that layering
violation.
The new interf
On 1/12/07, Andrew Morton <[EMAIL PROTECTED]> wrote:
On Fri, 12 Jan 2007 15:35:09 -0700
Erik Andersen <[EMAIL PROTECTED]> wrote:
> On Fri Jan 12, 2007 at 05:09:09PM -0500, Linus Torvalds wrote:
> > I suspect a lot of people actually have other reasons to avoid caches.
> >
> > For example, the re
So I'm trying to get an understanding of the interactions between the
various aio_read/aio_write paths, and I ran across this gem at the end
of generic_file_buffered_write:
/*
* For now, when the user asks for O_SYNC, we'll actually give O_DSYNC
*/
if (likely(status
On 12/7/06, Chen, Kenneth W <[EMAIL PROTECTED]> wrote:
Nate Diller wrote on Thursday, December 07, 2006 1:46 PM
> the current code is straightforward and obviously correct. you want
> to make the alloc/dealloc paths more complex, by special-casing for an
> arbitrary limit of &quo
On 12/7/06, Chen, Kenneth W <[EMAIL PROTECTED]> wrote:
Nate Diller wrote on Thursday, December 07, 2006 11:22 AM
> > > I still can't help but think we can do better than this, and that this
> > > is nothing more than optimizing for a benchmark. For high performance
On 12/6/06, Chen, Kenneth W <[EMAIL PROTECTED]> wrote:
Jens Axboe wrote on Wednesday, December 06, 2006 2:09 AM
> > > I will try that too. I'm a bit touchy about sharing a cache line for
> > > different bio. But given that there are 200,000 I/O per second we are
> > > currently pushing the kern
On 11/30/06, Wendy Cheng <[EMAIL PROTECTED]> wrote:
How about a simple and plain change with this uploaded patch
The idea is, instead of unconditionally dropping every buffer associated
with the particular mount point (that defeats the purpose of page
caching), base kernel exports the "drop
On 11/24/06, Fengguang Wu <[EMAIL PROTECTED]> wrote:
Andrew,
Here are some benchmarks for the latest adaptive readahead patchset.
Most benchmarks have 3+ runs and have the numbers averaged.
However some testing times are short and not quite stable.
Most of them are carried out on my PC:
e managed only to
> get to about 65 or 70.
>
> regards, Anthony
>
i need a vmstat trace ('vmstat 1 > logfile', then run the test, then
^c) before i can comment further. also, your filesystem and
scheduler would be interesting to know. you can find out the
scheduler with &
something)? it would obviously be much better to sustain
25MB/s to disk
> Or is this simply not possible with the current kernel I/O setup? Do I have
> to do something elaborate myself, like build a big RAM buffer, mount the
> disk synchronous, do the buffering myself in userland...??
&
On 9/9/05, Roger Heflin <[EMAIL PROTECTED]> wrote:
>
> I saw it mentioned before that the kernel only allows a certain
> percentage of total memory to be dirty, I thought the number was
> around 40%, and I have seen machines with large amounts of ram,
> hit the 40% and then put the writing applica
On 7/29/05, Jens Axboe <[EMAIL PROTECTED]> wrote:
> On Thu, Jul 28 2005, Nate Diller wrote:
> > Try benchmarking Anticipatory or Deadline against Noop, preferably
> > with your actual workload. Noop is probably what you want, since
> > there is not much use in avoiding
Try benchmarking Anticipatory or Deadline against Noop, preferably
with your actual workload. Noop is probably what you want, since
there is not much use in avoiding large "seeks". It could be though
that request merging, which the non-noop schedulers all perform, willl
cause Noop to lose. I hav
Neil Brown wrote:
On Tuesday July 5, [EMAIL PROTECTED] wrote:
I got it slightly wrong.
One can have hardlinks to a directory without cycles provided that one
does not have hardlinks from the children of that directory to any file
not a child of that directory. (Mountpoints currently implem
74 matches
Mail list logo