|
@@ -270,7 +270,8 @@ xfs_btree_dup_cursor(
|
|
|
if (bp) {
|
|
|
error = xfs_trans_read_buf(mp, tp, mp->m_ddev_targp,
|
|
|
XFS_BUF_ADDR(bp), mp->m_bsize,
|
|
|
- 0, &bp, NULL);
|
|
|
+ 0, &bp,
|
|
|
+ cur->bc_ops->read_verify);
|
|
|
if (error) {
|
|
|
xfs_btree_del_cursor(new, error);
|
|
|
*ncur = NULL;
|
|
@@ -612,23 +613,24 @@ xfs_btree_offsets(
|
|
|
* Get a buffer for the block, return it read in.
|
|
|
* Long-form addressing.
|
|
|
*/
|
|
|
-int /* error */
|
|
|
+int
|
|
|
xfs_btree_read_bufl(
|
|
|
- xfs_mount_t *mp, /* file system mount point */
|
|
|
- xfs_trans_t *tp, /* transaction pointer */
|
|
|
- xfs_fsblock_t fsbno, /* file system block number */
|
|
|
- uint lock, /* lock flags for read_buf */
|
|
|
- xfs_buf_t **bpp, /* buffer for fsbno */
|
|
|
- int refval) /* ref count value for buffer */
|
|
|
-{
|
|
|
- xfs_buf_t *bp; /* return value */
|
|
|
+ struct xfs_mount *mp, /* file system mount point */
|
|
|
+ struct xfs_trans *tp, /* transaction pointer */
|
|
|
+ xfs_fsblock_t fsbno, /* file system block number */
|
|
|
+ uint lock, /* lock flags for read_buf */
|
|
|
+ struct xfs_buf **bpp, /* buffer for fsbno */
|
|
|
+ int refval, /* ref count value for buffer */
|
|
|
+ xfs_buf_iodone_t verify)
|
|
|
+{
|
|
|
+ struct xfs_buf *bp; /* return value */
|
|
|
xfs_daddr_t d; /* real disk block address */
|
|
|
- int error;
|
|
|
+ int error;
|
|
|
|
|
|
ASSERT(fsbno != NULLFSBLOCK);
|
|
|
d = XFS_FSB_TO_DADDR(mp, fsbno);
|
|
|
error = xfs_trans_read_buf(mp, tp, mp->m_ddev_targp, d,
|
|
|
- mp->m_bsize, lock, &bp, NULL);
|
|
|
+ mp->m_bsize, lock, &bp, verify);
|
|
|
if (error)
|
|
|
return error;
|
|
|
ASSERT(!xfs_buf_geterror(bp));
|
|
@@ -645,15 +647,16 @@ xfs_btree_read_bufl(
|
|
|
/* ARGSUSED */
|
|
|
void
|
|
|
xfs_btree_reada_bufl(
|
|
|
- xfs_mount_t *mp, /* file system mount point */
|
|
|
- xfs_fsblock_t fsbno, /* file system block number */
|
|
|
- xfs_extlen_t count) /* count of filesystem blocks */
|
|
|
+ struct xfs_mount *mp, /* file system mount point */
|
|
|
+ xfs_fsblock_t fsbno, /* file system block number */
|
|
|
+ xfs_extlen_t count, /* count of filesystem blocks */
|
|
|
+ xfs_buf_iodone_t verify)
|
|
|
{
|
|
|
xfs_daddr_t d;
|
|
|
|
|
|
ASSERT(fsbno != NULLFSBLOCK);
|
|
|
d = XFS_FSB_TO_DADDR(mp, fsbno);
|
|
|
- xfs_buf_readahead(mp->m_ddev_targp, d, mp->m_bsize * count, NULL);
|
|
|
+ xfs_buf_readahead(mp->m_ddev_targp, d, mp->m_bsize * count, verify);
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -663,17 +666,18 @@ xfs_btree_reada_bufl(
|
|
|
/* ARGSUSED */
|
|
|
void
|
|
|
xfs_btree_reada_bufs(
|
|
|
- xfs_mount_t *mp, /* file system mount point */
|
|
|
- xfs_agnumber_t agno, /* allocation group number */
|
|
|
- xfs_agblock_t agbno, /* allocation group block number */
|
|
|
- xfs_extlen_t count) /* count of filesystem blocks */
|
|
|
+ struct xfs_mount *mp, /* file system mount point */
|
|
|
+ xfs_agnumber_t agno, /* allocation group number */
|
|
|
+ xfs_agblock_t agbno, /* allocation group block number */
|
|
|
+ xfs_extlen_t count, /* count of filesystem blocks */
|
|
|
+ xfs_buf_iodone_t verify)
|
|
|
{
|
|
|
xfs_daddr_t d;
|
|
|
|
|
|
ASSERT(agno != NULLAGNUMBER);
|
|
|
ASSERT(agbno != NULLAGBLOCK);
|
|
|
d = XFS_AGB_TO_DADDR(mp, agno, agbno);
|
|
|
- xfs_buf_readahead(mp->m_ddev_targp, d, mp->m_bsize * count, NULL);
|
|
|
+ xfs_buf_readahead(mp->m_ddev_targp, d, mp->m_bsize * count, verify);
|
|
|
}
|
|
|
|
|
|
STATIC int
|
|
@@ -687,12 +691,14 @@ xfs_btree_readahead_lblock(
|
|
|
xfs_dfsbno_t right = be64_to_cpu(block->bb_u.l.bb_rightsib);
|
|
|
|
|
|
if ((lr & XFS_BTCUR_LEFTRA) && left != NULLDFSBNO) {
|
|
|
- xfs_btree_reada_bufl(cur->bc_mp, left, 1);
|
|
|
+ xfs_btree_reada_bufl(cur->bc_mp, left, 1,
|
|
|
+ cur->bc_ops->read_verify);
|
|
|
rval++;
|
|
|
}
|
|
|
|
|
|
if ((lr & XFS_BTCUR_RIGHTRA) && right != NULLDFSBNO) {
|
|
|
- xfs_btree_reada_bufl(cur->bc_mp, right, 1);
|
|
|
+ xfs_btree_reada_bufl(cur->bc_mp, right, 1,
|
|
|
+ cur->bc_ops->read_verify);
|
|
|
rval++;
|
|
|
}
|
|
|
|
|
@@ -712,13 +718,13 @@ xfs_btree_readahead_sblock(
|
|
|
|
|
|
if ((lr & XFS_BTCUR_LEFTRA) && left != NULLAGBLOCK) {
|
|
|
xfs_btree_reada_bufs(cur->bc_mp, cur->bc_private.a.agno,
|
|
|
- left, 1);
|
|
|
+ left, 1, cur->bc_ops->read_verify);
|
|
|
rval++;
|
|
|
}
|
|
|
|
|
|
if ((lr & XFS_BTCUR_RIGHTRA) && right != NULLAGBLOCK) {
|
|
|
xfs_btree_reada_bufs(cur->bc_mp, cur->bc_private.a.agno,
|
|
|
- right, 1);
|
|
|
+ right, 1, cur->bc_ops->read_verify);
|
|
|
rval++;
|
|
|
}
|
|
|
|
|
@@ -1016,19 +1022,15 @@ xfs_btree_read_buf_block(
|
|
|
|
|
|
d = xfs_btree_ptr_to_daddr(cur, ptr);
|
|
|
error = xfs_trans_read_buf(mp, cur->bc_tp, mp->m_ddev_targp, d,
|
|
|
- mp->m_bsize, flags, bpp, NULL);
|
|
|
+ mp->m_bsize, flags, bpp,
|
|
|
+ cur->bc_ops->read_verify);
|
|
|
if (error)
|
|
|
return error;
|
|
|
|
|
|
ASSERT(!xfs_buf_geterror(*bpp));
|
|
|
-
|
|
|
xfs_btree_set_refs(cur, *bpp);
|
|
|
*block = XFS_BUF_TO_BLOCK(*bpp);
|
|
|
-
|
|
|
- error = xfs_btree_check_block(cur, *block, level, *bpp);
|
|
|
- if (error)
|
|
|
- xfs_trans_brelse(cur->bc_tp, *bpp);
|
|
|
- return error;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
/*
|