diff options
author | Boaz Harrosh <bharrosh@panasas.com> | 2012-08-02 14:59:57 +0300 |
---|---|---|
committer | Boaz Harrosh <bharrosh@panasas.com> | 2012-08-02 16:39:17 +0300 |
commit | be388f3d9af4155db0dc9e7e59dd49db90271c1c (patch) | |
tree | a7b5e4b47d82a88b03e197f6932209cad7f8714b /fs/exofs | |
parent | 4b74f6ea8417e48bb1fc65880a0574134a8b4745 (diff) | |
download | kernel_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')
-rw-r--r-- | fs/exofs/inode.c | 10 |
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) |