diff options
| author | Ingo Molnar <mingo@elte.hu> | 2010-08-12 15:38:56 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2010-08-12 15:39:04 -0400 |
| commit | f46a6804135795f77d096ab0128f27531c7d051c (patch) | |
| tree | 7cd33f69e3661327739ae4c96e5a8389e7fc912e /fs/bfs/file.c | |
| parent | b3e84ffa21f916e3354a12a7f19169c9febe96d0 (diff) | |
| parent | ad41a1e0cab07c5125456e8d38e5b1ab148d04aa (diff) | |
Merge branch 'linus' into perf/urgent
Merge reason: Fix upstream breakage introduced by:
de5d9bf: Move list types from <linux/list.h> to <linux/types.h>.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'fs/bfs/file.c')
| -rw-r--r-- | fs/bfs/file.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/fs/bfs/file.c b/fs/bfs/file.c index 88b9a3ff44e4..eb67edd0f8ea 100644 --- a/fs/bfs/file.c +++ b/fs/bfs/file.c | |||
| @@ -70,7 +70,6 @@ static int bfs_get_block(struct inode *inode, sector_t block, | |||
| 70 | struct super_block *sb = inode->i_sb; | 70 | struct super_block *sb = inode->i_sb; |
| 71 | struct bfs_sb_info *info = BFS_SB(sb); | 71 | struct bfs_sb_info *info = BFS_SB(sb); |
| 72 | struct bfs_inode_info *bi = BFS_I(inode); | 72 | struct bfs_inode_info *bi = BFS_I(inode); |
| 73 | struct buffer_head *sbh = info->si_sbh; | ||
| 74 | 73 | ||
| 75 | phys = bi->i_sblock + block; | 74 | phys = bi->i_sblock + block; |
| 76 | if (!create) { | 75 | if (!create) { |
| @@ -112,7 +111,6 @@ static int bfs_get_block(struct inode *inode, sector_t block, | |||
| 112 | info->si_freeb -= phys - bi->i_eblock; | 111 | info->si_freeb -= phys - bi->i_eblock; |
| 113 | info->si_lf_eblk = bi->i_eblock = phys; | 112 | info->si_lf_eblk = bi->i_eblock = phys; |
| 114 | mark_inode_dirty(inode); | 113 | mark_inode_dirty(inode); |
| 115 | mark_buffer_dirty(sbh); | ||
| 116 | err = 0; | 114 | err = 0; |
| 117 | goto out; | 115 | goto out; |
| 118 | } | 116 | } |
| @@ -147,7 +145,6 @@ static int bfs_get_block(struct inode *inode, sector_t block, | |||
| 147 | */ | 145 | */ |
| 148 | info->si_freeb -= bi->i_eblock - bi->i_sblock + 1 - inode->i_blocks; | 146 | info->si_freeb -= bi->i_eblock - bi->i_sblock + 1 - inode->i_blocks; |
| 149 | mark_inode_dirty(inode); | 147 | mark_inode_dirty(inode); |
| 150 | mark_buffer_dirty(sbh); | ||
| 151 | map_bh(bh_result, sb, phys); | 148 | map_bh(bh_result, sb, phys); |
| 152 | out: | 149 | out: |
| 153 | mutex_unlock(&info->bfs_lock); | 150 | mutex_unlock(&info->bfs_lock); |
| @@ -168,9 +165,17 @@ static int bfs_write_begin(struct file *file, struct address_space *mapping, | |||
| 168 | loff_t pos, unsigned len, unsigned flags, | 165 | loff_t pos, unsigned len, unsigned flags, |
| 169 | struct page **pagep, void **fsdata) | 166 | struct page **pagep, void **fsdata) |
| 170 | { | 167 | { |
| 171 | *pagep = NULL; | 168 | int ret; |
| 172 | return block_write_begin(file, mapping, pos, len, flags, | 169 | |
| 173 | pagep, fsdata, bfs_get_block); | 170 | ret = block_write_begin(mapping, pos, len, flags, pagep, |
| 171 | bfs_get_block); | ||
| 172 | if (unlikely(ret)) { | ||
| 173 | loff_t isize = mapping->host->i_size; | ||
| 174 | if (pos + len > isize) | ||
| 175 | vmtruncate(mapping->host, isize); | ||
| 176 | } | ||
| 177 | |||
| 178 | return ret; | ||
| 174 | } | 179 | } |
| 175 | 180 | ||
| 176 | static sector_t bfs_bmap(struct address_space *mapping, sector_t block) | 181 | static sector_t bfs_bmap(struct address_space *mapping, sector_t block) |
