|
@@ -581,22 +581,21 @@ found:
|
|
|
* more hits than misses.
|
|
|
*/
|
|
|
struct xfs_buf *
|
|
|
-xfs_buf_get(
|
|
|
- xfs_buftarg_t *target,
|
|
|
- xfs_daddr_t blkno,
|
|
|
- size_t numblks,
|
|
|
+xfs_buf_get_map(
|
|
|
+ struct xfs_buftarg *target,
|
|
|
+ struct xfs_buf_map *map,
|
|
|
+ int nmaps,
|
|
|
xfs_buf_flags_t flags)
|
|
|
{
|
|
|
struct xfs_buf *bp;
|
|
|
struct xfs_buf *new_bp;
|
|
|
int error = 0;
|
|
|
- DEFINE_SINGLE_BUF_MAP(map, blkno, numblks);
|
|
|
|
|
|
- bp = _xfs_buf_find(target, &map, 1, flags, NULL);
|
|
|
+ bp = _xfs_buf_find(target, map, nmaps, flags, NULL);
|
|
|
if (likely(bp))
|
|
|
goto found;
|
|
|
|
|
|
- new_bp = _xfs_buf_alloc(target, &map, 1, flags);
|
|
|
+ new_bp = _xfs_buf_alloc(target, map, nmaps, flags);
|
|
|
if (unlikely(!new_bp))
|
|
|
return NULL;
|
|
|
|
|
@@ -606,7 +605,7 @@ xfs_buf_get(
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
- bp = _xfs_buf_find(target, &map, 1, flags, new_bp);
|
|
|
+ bp = _xfs_buf_find(target, map, nmaps, flags, new_bp);
|
|
|
if (!bp) {
|
|
|
xfs_buf_free(new_bp);
|
|
|
return NULL;
|
|
@@ -649,17 +648,17 @@ _xfs_buf_read(
|
|
|
}
|
|
|
|
|
|
xfs_buf_t *
|
|
|
-xfs_buf_read(
|
|
|
- xfs_buftarg_t *target,
|
|
|
- xfs_daddr_t blkno,
|
|
|
- size_t numblks,
|
|
|
+xfs_buf_read_map(
|
|
|
+ struct xfs_buftarg *target,
|
|
|
+ struct xfs_buf_map *map,
|
|
|
+ int nmaps,
|
|
|
xfs_buf_flags_t flags)
|
|
|
{
|
|
|
- xfs_buf_t *bp;
|
|
|
+ struct xfs_buf *bp;
|
|
|
|
|
|
flags |= XBF_READ;
|
|
|
|
|
|
- bp = xfs_buf_get(target, blkno, numblks, flags);
|
|
|
+ bp = xfs_buf_get_map(target, map, nmaps, flags);
|
|
|
if (bp) {
|
|
|
trace_xfs_buf_read(bp, flags, _RET_IP_);
|
|
|
|
|
@@ -687,15 +686,15 @@ xfs_buf_read(
|
|
|
* safe manner.
|
|
|
*/
|
|
|
void
|
|
|
-xfs_buf_readahead(
|
|
|
- xfs_buftarg_t *target,
|
|
|
- xfs_daddr_t blkno,
|
|
|
- size_t numblks)
|
|
|
+xfs_buf_readahead_map(
|
|
|
+ struct xfs_buftarg *target,
|
|
|
+ struct xfs_buf_map *map,
|
|
|
+ int nmaps)
|
|
|
{
|
|
|
if (bdi_read_congested(target->bt_bdi))
|
|
|
return;
|
|
|
|
|
|
- xfs_buf_read(target, blkno, numblks,
|
|
|
+ xfs_buf_read_map(target, map, nmaps,
|
|
|
XBF_TRYLOCK|XBF_ASYNC|XBF_READ_AHEAD);
|
|
|
}
|
|
|
|