diff options
author | Christoph Hellwig <hch@sgi.com> | 2006-01-11 20:49:16 +1100 |
---|---|---|
committer | Nathan Scott <nathans@sgi.com> | 2006-01-11 20:49:16 +1100 |
commit | 7336cea8c2737bbaf0296d67782f760828301d56 (patch) | |
tree | de5dd8666d4968b7f96204a3cdd8f070d3543124 /fs/xfs | |
parent | d5cb48aaac5bba1721bce3232e6fb022ade2c0b7 (diff) | |
download | linux-7336cea8c2737bbaf0296d67782f760828301d56.tar.bz2 |
[XFS] pass full 64bit offsets to xfs_add_to_ioend
SGI-PV: 947118
SGI-Modid: xfs-linux-melb:xfs-kern:203828a
Signed-off-by: Christoph Hellwig <hch@sgi.com>
Signed-off-by: Nathan Scott <nathans@sgi.com>
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_aops.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c index 98d26c8e0565..562867316639 100644 --- a/fs/xfs/linux-2.6/xfs_aops.c +++ b/fs/xfs/linux-2.6/xfs_aops.c @@ -414,7 +414,7 @@ STATIC void xfs_add_to_ioend( struct inode *inode, struct buffer_head *bh, - unsigned int p_offset, + xfs_off_t offset, unsigned int type, xfs_ioend_t **result, int need_ioend) @@ -423,10 +423,7 @@ xfs_add_to_ioend( if (!ioend || need_ioend || type != ioend->io_type) { xfs_ioend_t *previous = *result; - xfs_off_t offset; - offset = (xfs_off_t)bh->b_page->index << PAGE_CACHE_SHIFT; - offset += p_offset; ioend = xfs_alloc_ioend(inode, type); ioend->io_offset = offset; ioend->io_buffer_head = bh; @@ -666,7 +663,6 @@ xfs_convert_page( p_offset = p_offset ? roundup(p_offset, len) : PAGE_CACHE_SIZE; page_dirty = p_offset / len; - p_offset = 0; bh = head = page_buffers(page); do { if (offset >= end_offset) @@ -694,7 +690,7 @@ xfs_convert_page( xfs_map_at_offset(bh, offset, bbits, mp); if (startio) { - xfs_add_to_ioend(inode, bh, p_offset, + xfs_add_to_ioend(inode, bh, offset, type, ioendp, done); } else { set_buffer_dirty(bh); @@ -707,7 +703,7 @@ xfs_convert_page( type = 0; if (buffer_mapped(bh) && all_bh && startio) { lock_buffer(bh); - xfs_add_to_ioend(inode, bh, p_offset, + xfs_add_to_ioend(inode, bh, offset, type, ioendp, done); count++; page_dirty--; @@ -715,8 +711,7 @@ xfs_convert_page( done = 1; } } - } while (offset += len, p_offset += len, - (bh = bh->b_this_page) != head); + } while (offset += len, (bh = bh->b_this_page) != head); if (uptodate && bh == head) SetPageUptodate(page); @@ -914,7 +909,7 @@ xfs_page_state_convert( xfs_map_at_offset(bh, offset, inode->i_blkbits, &iomap); if (startio) { - xfs_add_to_ioend(inode, bh, p_offset, + xfs_add_to_ioend(inode, bh, offset, type, &ioend, !iomap_valid); } else { @@ -930,8 +925,7 @@ xfs_page_state_convert( if (!test_and_set_bit(BH_Lock, &bh->b_state)) { ASSERT(buffer_mapped(bh)); - xfs_add_to_ioend(inode, - bh, p_offset, type, + xfs_add_to_ioend(inode, bh, offset, type, &ioend, !iomap_valid); page_dirty--; count++; |