aboutsummaryrefslogtreecommitdiffstats
path: root/fs/exofs/inode.c
diff options
context:
space:
mode:
authorBoaz Harrosh <bharrosh@panasas.com>2012-08-02 14:59:57 +0300
committerBoaz Harrosh <bharrosh@panasas.com>2012-08-02 16:39:17 +0300
commitbe388f3d9af4155db0dc9e7e59dd49db90271c1c (patch)
treea7b5e4b47d82a88b03e197f6932209cad7f8714b /fs/exofs/inode.c
parent4b74f6ea8417e48bb1fc65880a0574134a8b4745 (diff)
downloadkernel_goldelico_gta04-be388f3d9af4155db0dc9e7e59dd49db90271c1c.zip
kernel_goldelico_gta04-be388f3d9af4155db0dc9e7e59dd49db90271c1c.tar.gz
kernel_goldelico_gta04-be388f3d9af4155db0dc9e7e59dd49db90271c1c.tar.bz2
exofs: Use proper max_IO calculations from ore
exofs_max_io_pages should just use the ORE's calculated layout->max_io_length, And avoid unnecessary BUGs, calculations made here were also a layering violation. Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Diffstat (limited to 'fs/exofs/inode.c')
-rw-r--r--fs/exofs/inode.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/fs/exofs/inode.c b/fs/exofs/inode.c
index 3b2ee72..1562c27 100644
--- a/fs/exofs/inode.c
+++ b/fs/exofs/inode.c
@@ -37,15 +37,12 @@
#define EXOFS_DBGMSG2(M...) do {} while (0)
-enum {MAX_PAGES_KMALLOC = PAGE_SIZE / sizeof(struct page *), };
-
unsigned exofs_max_io_pages(struct ore_layout *layout,
unsigned expected_pages)
{
- unsigned pages = min_t(unsigned, expected_pages, MAX_PAGES_KMALLOC);
+ unsigned pages = min_t(unsigned, expected_pages,
+ layout->max_io_length / PAGE_SIZE);
- /* TODO: easily support bio chaining */
- pages = min_t(unsigned, pages, layout->max_io_length / PAGE_SIZE);
return pages;
}
@@ -101,7 +98,8 @@ static void _pcol_reset(struct page_collect *pcol)
* it might not end here. don't be left with nothing
*/
if (!pcol->expected_pages)
- pcol->expected_pages = MAX_PAGES_KMALLOC;
+ pcol->expected_pages =
+ exofs_max_io_pages(&pcol->sbi->layout, ~0);
}
static int pcol_try_alloc(struct page_collect *pcol)