diff options
| author | Grant Likely <grant.likely@secretlab.ca> | 2010-05-22 02:36:56 -0400 |
|---|---|---|
| committer | Grant Likely <grant.likely@secretlab.ca> | 2010-05-22 02:36:56 -0400 |
| commit | cf9b59e9d3e008591d1f54830f570982bb307a0d (patch) | |
| tree | 113478ce8fd8c832ba726ffdf59b82cb46356476 /fs/logfs/segment.c | |
| parent | 44504b2bebf8b5823c59484e73096a7d6574471d (diff) | |
| parent | f4b87dee923342505e1ddba8d34ce9de33e75050 (diff) | |
Merge remote branch 'origin' into secretlab/next-devicetree
Merging in current state of Linus' tree to deal with merge conflicts and
build failures in vio.c after merge.
Conflicts:
drivers/i2c/busses/i2c-cpm.c
drivers/i2c/busses/i2c-mpc.c
drivers/net/gianfar.c
Also fixed up one line in arch/powerpc/kernel/vio.c to use the
correct node pointer.
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Diffstat (limited to 'fs/logfs/segment.c')
| -rw-r--r-- | fs/logfs/segment.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/fs/logfs/segment.c b/fs/logfs/segment.c index 801a3a14162..a9657afb70a 100644 --- a/fs/logfs/segment.c +++ b/fs/logfs/segment.c | |||
| @@ -67,7 +67,7 @@ static struct page *get_mapping_page(struct super_block *sb, pgoff_t index, | |||
| 67 | return page; | 67 | return page; |
| 68 | } | 68 | } |
| 69 | 69 | ||
| 70 | void __logfs_buf_write(struct logfs_area *area, u64 ofs, void *buf, size_t len, | 70 | int __logfs_buf_write(struct logfs_area *area, u64 ofs, void *buf, size_t len, |
| 71 | int use_filler) | 71 | int use_filler) |
| 72 | { | 72 | { |
| 73 | pgoff_t index = ofs >> PAGE_SHIFT; | 73 | pgoff_t index = ofs >> PAGE_SHIFT; |
| @@ -81,8 +81,10 @@ void __logfs_buf_write(struct logfs_area *area, u64 ofs, void *buf, size_t len, | |||
| 81 | copylen = min((ulong)len, PAGE_SIZE - offset); | 81 | copylen = min((ulong)len, PAGE_SIZE - offset); |
| 82 | 82 | ||
| 83 | page = get_mapping_page(area->a_sb, index, use_filler); | 83 | page = get_mapping_page(area->a_sb, index, use_filler); |
| 84 | SetPageUptodate(page); | 84 | if (IS_ERR(page)) |
| 85 | return PTR_ERR(page); | ||
| 85 | BUG_ON(!page); /* FIXME: reserve a pool */ | 86 | BUG_ON(!page); /* FIXME: reserve a pool */ |
| 87 | SetPageUptodate(page); | ||
| 86 | memcpy(page_address(page) + offset, buf, copylen); | 88 | memcpy(page_address(page) + offset, buf, copylen); |
| 87 | SetPagePrivate(page); | 89 | SetPagePrivate(page); |
| 88 | page_cache_release(page); | 90 | page_cache_release(page); |
| @@ -92,6 +94,7 @@ void __logfs_buf_write(struct logfs_area *area, u64 ofs, void *buf, size_t len, | |||
| 92 | offset = 0; | 94 | offset = 0; |
| 93 | index++; | 95 | index++; |
| 94 | } while (len); | 96 | } while (len); |
| 97 | return 0; | ||
| 95 | } | 98 | } |
| 96 | 99 | ||
| 97 | static void pad_partial_page(struct logfs_area *area) | 100 | static void pad_partial_page(struct logfs_area *area) |
| @@ -183,14 +186,8 @@ static int btree_write_alias(struct super_block *sb, struct logfs_block *block, | |||
| 183 | return 0; | 186 | return 0; |
| 184 | } | 187 | } |
| 185 | 188 | ||
| 186 | static gc_level_t btree_block_level(struct logfs_block *block) | ||
| 187 | { | ||
| 188 | return expand_level(block->ino, block->level); | ||
| 189 | } | ||
| 190 | |||
| 191 | static struct logfs_block_ops btree_block_ops = { | 189 | static struct logfs_block_ops btree_block_ops = { |
| 192 | .write_block = btree_write_block, | 190 | .write_block = btree_write_block, |
| 193 | .block_level = btree_block_level, | ||
| 194 | .free_block = __free_block, | 191 | .free_block = __free_block, |
| 195 | .write_alias = btree_write_alias, | 192 | .write_alias = btree_write_alias, |
| 196 | }; | 193 | }; |
| @@ -919,7 +916,7 @@ err: | |||
| 919 | for (i--; i >= 0; i--) | 916 | for (i--; i >= 0; i--) |
| 920 | free_area(super->s_area[i]); | 917 | free_area(super->s_area[i]); |
| 921 | free_area(super->s_journal_area); | 918 | free_area(super->s_journal_area); |
| 922 | mempool_destroy(super->s_alias_pool); | 919 | logfs_mempool_destroy(super->s_alias_pool); |
| 923 | return -ENOMEM; | 920 | return -ENOMEM; |
| 924 | } | 921 | } |
| 925 | 922 | ||
