forked from Minki/linux
xfs: remove the mappedbno argument to xfs_da_get_buf
Use the xfs_da_get_buf_daddr function directly for the two callers that pass a mapped disk address, and then remove the mappedbno argument. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:
parent
cd2c9f1b54
commit
2911edb653
@ -1162,7 +1162,7 @@ xfs_attr3_leaf_to_node(
|
|||||||
if (error)
|
if (error)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
error = xfs_da_get_buf(args->trans, dp, blkno, -1, &bp2, XFS_ATTR_FORK);
|
error = xfs_da_get_buf(args->trans, dp, blkno, &bp2, XFS_ATTR_FORK);
|
||||||
if (error)
|
if (error)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
@ -1223,7 +1223,7 @@ xfs_attr3_leaf_create(
|
|||||||
|
|
||||||
trace_xfs_attr_leaf_create(args);
|
trace_xfs_attr_leaf_create(args);
|
||||||
|
|
||||||
error = xfs_da_get_buf(args->trans, args->dp, blkno, -1, &bp,
|
error = xfs_da_get_buf(args->trans, args->dp, blkno, &bp,
|
||||||
XFS_ATTR_FORK);
|
XFS_ATTR_FORK);
|
||||||
if (error)
|
if (error)
|
||||||
return error;
|
return error;
|
||||||
|
@ -429,7 +429,7 @@ xfs_da3_node_create(
|
|||||||
trace_xfs_da_node_create(args);
|
trace_xfs_da_node_create(args);
|
||||||
ASSERT(level <= XFS_DA_NODE_MAXDEPTH);
|
ASSERT(level <= XFS_DA_NODE_MAXDEPTH);
|
||||||
|
|
||||||
error = xfs_da_get_buf(tp, dp, blkno, -1, &bp, whichfork);
|
error = xfs_da_get_buf(tp, dp, blkno, &bp, whichfork);
|
||||||
if (error)
|
if (error)
|
||||||
return error;
|
return error;
|
||||||
bp->b_ops = &xfs_da3_node_buf_ops;
|
bp->b_ops = &xfs_da3_node_buf_ops;
|
||||||
@ -656,7 +656,7 @@ xfs_da3_root_split(
|
|||||||
|
|
||||||
dp = args->dp;
|
dp = args->dp;
|
||||||
tp = args->trans;
|
tp = args->trans;
|
||||||
error = xfs_da_get_buf(tp, dp, blkno, -1, &bp, args->whichfork);
|
error = xfs_da_get_buf(tp, dp, blkno, &bp, args->whichfork);
|
||||||
if (error)
|
if (error)
|
||||||
return error;
|
return error;
|
||||||
node = bp->b_addr;
|
node = bp->b_addr;
|
||||||
@ -2577,7 +2577,6 @@ xfs_da_get_buf(
|
|||||||
struct xfs_trans *tp,
|
struct xfs_trans *tp,
|
||||||
struct xfs_inode *dp,
|
struct xfs_inode *dp,
|
||||||
xfs_dablk_t bno,
|
xfs_dablk_t bno,
|
||||||
xfs_daddr_t mappedbno,
|
|
||||||
struct xfs_buf **bpp,
|
struct xfs_buf **bpp,
|
||||||
int whichfork)
|
int whichfork)
|
||||||
{
|
{
|
||||||
@ -2588,22 +2587,11 @@ xfs_da_get_buf(
|
|||||||
int error;
|
int error;
|
||||||
|
|
||||||
*bpp = NULL;
|
*bpp = NULL;
|
||||||
|
error = xfs_dabuf_map(dp, bno, 0, whichfork, &mapp, &nmap);
|
||||||
if (mappedbno >= 0) {
|
|
||||||
bp = xfs_trans_get_buf(tp, mp->m_ddev_targp, mappedbno,
|
|
||||||
XFS_FSB_TO_BB(mp,
|
|
||||||
xfs_dabuf_nfsb(mp, whichfork)), 0);
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
|
|
||||||
error = xfs_dabuf_map(dp, bno,
|
|
||||||
mappedbno == -1 ? XFS_DABUF_MAP_HOLE_OK : 0,
|
|
||||||
whichfork, &mapp, &nmap);
|
|
||||||
if (error || nmap == 0)
|
if (error || nmap == 0)
|
||||||
goto out_free;
|
goto out_free;
|
||||||
|
|
||||||
bp = xfs_trans_get_buf_map(tp, mp->m_ddev_targp, mapp, nmap, 0);
|
bp = xfs_trans_get_buf_map(tp, mp->m_ddev_targp, mapp, nmap, 0);
|
||||||
done:
|
|
||||||
error = bp ? bp->b_error : -EIO;
|
error = bp ? bp->b_error : -EIO;
|
||||||
if (error) {
|
if (error) {
|
||||||
if (bp)
|
if (bp)
|
||||||
|
@ -203,8 +203,7 @@ int xfs_da_grow_inode(xfs_da_args_t *args, xfs_dablk_t *new_blkno);
|
|||||||
int xfs_da_grow_inode_int(struct xfs_da_args *args, xfs_fileoff_t *bno,
|
int xfs_da_grow_inode_int(struct xfs_da_args *args, xfs_fileoff_t *bno,
|
||||||
int count);
|
int count);
|
||||||
int xfs_da_get_buf(struct xfs_trans *trans, struct xfs_inode *dp,
|
int xfs_da_get_buf(struct xfs_trans *trans, struct xfs_inode *dp,
|
||||||
xfs_dablk_t bno, xfs_daddr_t mappedbno,
|
xfs_dablk_t bno, struct xfs_buf **bp, int whichfork);
|
||||||
struct xfs_buf **bp, int whichfork);
|
|
||||||
int xfs_da_read_buf(struct xfs_trans *trans, struct xfs_inode *dp,
|
int xfs_da_read_buf(struct xfs_trans *trans, struct xfs_inode *dp,
|
||||||
xfs_dablk_t bno, unsigned int flags, struct xfs_buf **bpp,
|
xfs_dablk_t bno, unsigned int flags, struct xfs_buf **bpp,
|
||||||
int whichfork, const struct xfs_buf_ops *ops);
|
int whichfork, const struct xfs_buf_ops *ops);
|
||||||
|
@ -679,7 +679,7 @@ xfs_dir3_data_init(
|
|||||||
* Get the buffer set up for the block.
|
* Get the buffer set up for the block.
|
||||||
*/
|
*/
|
||||||
error = xfs_da_get_buf(tp, dp, xfs_dir2_db_to_da(args->geo, blkno),
|
error = xfs_da_get_buf(tp, dp, xfs_dir2_db_to_da(args->geo, blkno),
|
||||||
-1, &bp, XFS_DATA_FORK);
|
&bp, XFS_DATA_FORK);
|
||||||
if (error)
|
if (error)
|
||||||
return error;
|
return error;
|
||||||
bp->b_ops = &xfs_dir3_data_buf_ops;
|
bp->b_ops = &xfs_dir3_data_buf_ops;
|
||||||
|
@ -355,7 +355,7 @@ xfs_dir3_leaf_get_buf(
|
|||||||
bno < xfs_dir2_byte_to_db(args->geo, XFS_DIR2_FREE_OFFSET));
|
bno < xfs_dir2_byte_to_db(args->geo, XFS_DIR2_FREE_OFFSET));
|
||||||
|
|
||||||
error = xfs_da_get_buf(tp, dp, xfs_dir2_db_to_da(args->geo, bno),
|
error = xfs_da_get_buf(tp, dp, xfs_dir2_db_to_da(args->geo, bno),
|
||||||
-1, &bp, XFS_DATA_FORK);
|
&bp, XFS_DATA_FORK);
|
||||||
if (error)
|
if (error)
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
|
@ -324,7 +324,7 @@ xfs_dir3_free_get_buf(
|
|||||||
struct xfs_dir3_icfree_hdr hdr;
|
struct xfs_dir3_icfree_hdr hdr;
|
||||||
|
|
||||||
error = xfs_da_get_buf(tp, dp, xfs_dir2_db_to_da(args->geo, fbno),
|
error = xfs_da_get_buf(tp, dp, xfs_dir2_db_to_da(args->geo, fbno),
|
||||||
-1, &bp, XFS_DATA_FORK);
|
&bp, XFS_DATA_FORK);
|
||||||
if (error)
|
if (error)
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
|
@ -196,6 +196,7 @@ xfs_attr3_node_inactive(
|
|||||||
struct xfs_buf *bp,
|
struct xfs_buf *bp,
|
||||||
int level)
|
int level)
|
||||||
{
|
{
|
||||||
|
struct xfs_mount *mp = dp->i_mount;
|
||||||
struct xfs_da_blkinfo *info;
|
struct xfs_da_blkinfo *info;
|
||||||
xfs_dablk_t child_fsb;
|
xfs_dablk_t child_fsb;
|
||||||
xfs_daddr_t parent_blkno, child_blkno;
|
xfs_daddr_t parent_blkno, child_blkno;
|
||||||
@ -267,10 +268,16 @@ xfs_attr3_node_inactive(
|
|||||||
/*
|
/*
|
||||||
* Remove the subsidiary block from the cache and from the log.
|
* Remove the subsidiary block from the cache and from the log.
|
||||||
*/
|
*/
|
||||||
error = xfs_da_get_buf(*trans, dp, 0, child_blkno, &child_bp,
|
child_bp = xfs_trans_get_buf(*trans, mp->m_ddev_targp,
|
||||||
XFS_ATTR_FORK);
|
child_blkno,
|
||||||
if (error)
|
XFS_FSB_TO_BB(mp, mp->m_attr_geo->fsbcount), 0);
|
||||||
|
if (!child_bp)
|
||||||
|
return -EIO;
|
||||||
|
error = bp->b_error;
|
||||||
|
if (error) {
|
||||||
|
xfs_trans_brelse(*trans, child_bp);
|
||||||
return error;
|
return error;
|
||||||
|
}
|
||||||
xfs_trans_binval(*trans, child_bp);
|
xfs_trans_binval(*trans, child_bp);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -311,6 +318,7 @@ xfs_attr3_root_inactive(
|
|||||||
struct xfs_trans **trans,
|
struct xfs_trans **trans,
|
||||||
struct xfs_inode *dp)
|
struct xfs_inode *dp)
|
||||||
{
|
{
|
||||||
|
struct xfs_mount *mp = dp->i_mount;
|
||||||
struct xfs_da_blkinfo *info;
|
struct xfs_da_blkinfo *info;
|
||||||
struct xfs_buf *bp;
|
struct xfs_buf *bp;
|
||||||
xfs_daddr_t blkno;
|
xfs_daddr_t blkno;
|
||||||
@ -353,9 +361,15 @@ xfs_attr3_root_inactive(
|
|||||||
/*
|
/*
|
||||||
* Invalidate the incore copy of the root block.
|
* Invalidate the incore copy of the root block.
|
||||||
*/
|
*/
|
||||||
error = xfs_da_get_buf(*trans, dp, 0, blkno, &bp, XFS_ATTR_FORK);
|
bp = xfs_trans_get_buf(*trans, mp->m_ddev_targp, blkno,
|
||||||
if (error)
|
XFS_FSB_TO_BB(mp, mp->m_attr_geo->fsbcount), 0);
|
||||||
|
if (!bp)
|
||||||
|
return -EIO;
|
||||||
|
error = bp->b_error;
|
||||||
|
if (error) {
|
||||||
|
xfs_trans_brelse(*trans, bp);
|
||||||
return error;
|
return error;
|
||||||
|
}
|
||||||
xfs_trans_binval(*trans, bp); /* remove from cache */
|
xfs_trans_binval(*trans, bp); /* remove from cache */
|
||||||
/*
|
/*
|
||||||
* Commit the invalidate and start the next transaction.
|
* Commit the invalidate and start the next transaction.
|
||||||
|
Loading…
Reference in New Issue
Block a user