* [Fwd: [REISER4 PATCH] recover read performance]
@ 2004-12-28 18:58 Hans Reiser
0 siblings, 0 replies; only message in thread
From: Hans Reiser @ 2004-12-28 18:58 UTC (permalink / raw)
To: Andrew Morton; +Cc: ReiserFS List
[-- Attachment #1: Type: text/plain, Size: 1 bytes --]
[-- Attachment #2: [REISER4 PATCH] recover read performance --]
[-- Type: message/rfc822, Size: 4629 bytes --]
[-- Attachment #2.1.1: Type: text/plain, Size: 107 bytes --]
Hello, Hans
This patch eliminates reiser4 read performance drop ffound by Elena.
Please send it to Andrew
[-- Attachment #2.1.2: reiser4-recover-read-performance.patch --]
[-- Type: text/plain, Size: 2822 bytes --]
This patch recovers reiser4 read performance which was caused by incorrect using
page_cache_readahead
fs/reiser4/plugin/file/file.c | 2 +-
fs/reiser4/plugin/item/extent_file_ops.c | 8 +++++---
2 files changed, 6 insertions(+), 4 deletions(-)
diff -puN fs/reiser4/plugin/file/file.c~reiser4-recover-read-performance fs/reiser4/plugin/file/file.c
--- linux-2.6.10-rc3-mm1/fs/reiser4/plugin/file/file.c~reiser4-recover-read-performance 2004-12-28 21:39:06.503209425 +0300
+++ linux-2.6.10-rc3-mm1-vs/fs/reiser4/plugin/file/file.c 2004-12-28 21:39:54.406304805 +0300
@@ -2929,7 +2929,7 @@ reiser4_internal ssize_t sendfile_common
index = *ppos >> PAGE_CACHE_SHIFT;
offset = *ppos & ~PAGE_CACHE_MASK;
- page_cache_readahead(inode->i_mapping, &file->f_ra, file, offset, 0);
+ page_cache_readahead(inode->i_mapping, &file->f_ra, file, offset, (file_size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT);
/* determine valid read request size. */
read_request_size = PAGE_CACHE_SIZE - offset;
diff -puN fs/reiser4/plugin/item/extent_file_ops.c~reiser4-recover-read-performance fs/reiser4/plugin/item/extent_file_ops.c
--- linux-2.6.10-rc3-mm1/fs/reiser4/plugin/item/extent_file_ops.c~reiser4-recover-read-performance 2004-12-28 21:39:16.473980410 +0300
+++ linux-2.6.10-rc3-mm1-vs/fs/reiser4/plugin/item/extent_file_ops.c 2004-12-28 21:39:54.410304312 +0300
@@ -1124,7 +1124,7 @@ read_readpages(struct address_space *map
static void
call_page_cache_readahead(struct address_space *mapping, struct file *file, unsigned long page_nr,
- const uf_coord_t *uf_coord)
+ const uf_coord_t *uf_coord, unsigned long ra_pages)
{
reiser4_file_fsdata *fsdata;
uf_coord_t ra_coord;
@@ -1135,7 +1135,7 @@ call_page_cache_readahead(struct address
fsdata->ra2.data = &ra_coord;
fsdata->ra2.readpages = read_readpages;
- page_cache_readahead(mapping, &file->f_ra, file, page_nr, 0);
+ page_cache_readahead(mapping, &file->f_ra, file, page_nr, ra_pages);
fsdata->ra2.readpages = NULL;
}
@@ -1171,6 +1171,7 @@ read_extent(struct file *file, flow_t *f
uf_coord_t *uf_coord;
coord_t *coord;
extent_coord_extension_t *ext_coord;
+ unsigned long ra_pages;
uf_coord = &hint->coord;
assert("vs-1318", coord_extension_is_ok(uf_coord));
@@ -1198,9 +1199,10 @@ read_extent(struct file *file, flow_t *f
page_off = (unsigned long)(file_off & (PAGE_CACHE_SIZE - 1));
count = PAGE_CACHE_SIZE - page_off;
+ ra_pages = (flow->length + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
do {
- call_page_cache_readahead(inode->i_mapping, file, page_nr, uf_coord);
+ call_page_cache_readahead(inode->i_mapping, file, page_nr, uf_coord, ra_pages);
/* this will return page if it exists and is uptodate, otherwise it will allocate page and call
extent_readpage to fill it */
_
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2004-12-28 18:58 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-12-28 18:58 [Fwd: [REISER4 PATCH] recover read performance] Hans Reiser
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.