summaryrefslogtreecommitdiff
path: root/fs/xfs/linux-2.6/xfs_aops.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@infradead.org>2010-04-28 12:28:55 +0000
committerAlex Elder <aelder@sgi.com>2010-05-19 09:58:17 -0500
commite513182d4d7ec8f1870ae368c549ef2838e2c105 (patch)
tree1dc543b7f798c4826684bf2a0a5d83bd363f246f /fs/xfs/linux-2.6/xfs_aops.c
parent8699bb0a480193e62d5ccb9c86e2c26b407090a8 (diff)
downloadlwn-e513182d4d7ec8f1870ae368c549ef2838e2c105.tar.gz
lwn-e513182d4d7ec8f1870ae368c549ef2838e2c105.zip
xfs: report iomap_bn in block base
Report the iomap_bn field of struct xfs_iomap in terms of filesystem blocks instead of in terms of bytes. Shift the byte conversions into the caller, and replace the IOMAP_DELAY and IOMAP_HOLE flag checks with checks for HOLESTARTBLOCK and DELAYSTARTBLOCK. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Alex Elder <aelder@sgi.com>
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_aops.c')
-rw-r--r--fs/xfs/linux-2.6/xfs_aops.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c
index 303a779406c0..2b09cc34dd07 100644
--- a/fs/xfs/linux-2.6/xfs_aops.c
+++ b/fs/xfs/linux-2.6/xfs_aops.c
@@ -568,10 +568,12 @@ xfs_map_buffer(
sector_t bn;
struct xfs_mount *m = XFS_I(inode)->i_mount;
xfs_off_t iomap_offset = XFS_FSB_TO_B(m, mp->iomap_offset);
+ xfs_daddr_t iomap_bn = xfs_fsb_to_db(XFS_I(inode), mp->iomap_bn);
- ASSERT(mp->iomap_bn != IOMAP_DADDR_NULL);
+ ASSERT(mp->iomap_bn != HOLESTARTBLOCK);
+ ASSERT(mp->iomap_bn != DELAYSTARTBLOCK);
- bn = (mp->iomap_bn >> (inode->i_blkbits - BBSHIFT)) +
+ bn = (iomap_bn >> (inode->i_blkbits - BBSHIFT)) +
((offset - iomap_offset) >> inode->i_blkbits);
ASSERT(bn || XFS_IS_REALTIME_INODE(XFS_I(inode)));
@@ -587,8 +589,8 @@ xfs_map_at_offset(
xfs_iomap_t *iomapp,
xfs_off_t offset)
{
- ASSERT(!(iomapp->iomap_flags & IOMAP_HOLE));
- ASSERT(!(iomapp->iomap_flags & IOMAP_DELAY));
+ ASSERT(iomapp->iomap_bn != HOLESTARTBLOCK);
+ ASSERT(iomapp->iomap_bn != DELAYSTARTBLOCK);
lock_buffer(bh);
xfs_map_buffer(inode, bh, iomapp, offset);
@@ -818,8 +820,8 @@ xfs_convert_page(
continue;
}
- ASSERT(!(mp->iomap_flags & IOMAP_HOLE));
- ASSERT(!(mp->iomap_flags & IOMAP_DELAY));
+ ASSERT(mp->iomap_bn != HOLESTARTBLOCK);
+ ASSERT(mp->iomap_bn != DELAYSTARTBLOCK);
xfs_map_at_offset(inode, bh, mp, offset);
if (startio) {
@@ -1478,7 +1480,8 @@ __xfs_get_blocks(
if (niomap == 0)
return 0;
- if (iomap.iomap_bn != IOMAP_DADDR_NULL) {
+ if (iomap.iomap_bn != HOLESTARTBLOCK &&
+ iomap.iomap_bn != DELAYSTARTBLOCK) {
/*
* For unwritten extents do not report a disk address on
* the read case (treat as if we're reading into a hole).
@@ -1513,7 +1516,7 @@ __xfs_get_blocks(
(iomap.iomap_flags & (IOMAP_NEW|IOMAP_UNWRITTEN))))
set_buffer_new(bh_result);
- if (iomap.iomap_flags & IOMAP_DELAY) {
+ if (iomap.iomap_bn == DELAYSTARTBLOCK) {
BUG_ON(direct);
if (create) {
set_buffer_uptodate(bh_result);