aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/xfs/xfs_aops.c8
-rw-r--r--fs/xfs/xfs_attr.c30
-rw-r--r--fs/xfs/xfs_attr_leaf.c5
-rw-r--r--fs/xfs/xfs_bmap.c104
-rw-r--r--fs/xfs/xfs_bmap.h4
-rw-r--r--fs/xfs/xfs_da_btree.c9
-rw-r--r--fs/xfs/xfs_dir2_leaf.c6
-rw-r--r--fs/xfs/xfs_dquot.c5
-rw-r--r--fs/xfs/xfs_file.c10
-rw-r--r--fs/xfs/xfs_inode.c12
-rw-r--r--fs/xfs/xfs_iomap.c4
-rw-r--r--fs/xfs/xfs_qm.c7
-rw-r--r--fs/xfs/xfs_vnodeops.c24
13 files changed, 151 insertions, 77 deletions
diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
index 22aadf667862..11b2aad982d4 100644
--- a/fs/xfs/xfs_aops.c
+++ b/fs/xfs/xfs_aops.c
@@ -315,8 +315,8 @@ xfs_map_blocks(
315 count = mp->m_maxioffset - offset; 315 count = mp->m_maxioffset - offset;
316 end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + count); 316 end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + count);
317 offset_fsb = XFS_B_TO_FSBT(mp, offset); 317 offset_fsb = XFS_B_TO_FSBT(mp, offset);
318 error = xfs_bmapi(NULL, ip, offset_fsb, end_fsb - offset_fsb, 318 error = xfs_bmapi_read(ip, offset_fsb, end_fsb - offset_fsb,
319 bmapi_flags, NULL, 0, imap, &nimaps, NULL); 319 imap, &nimaps, bmapi_flags);
320 xfs_iunlock(ip, XFS_ILOCK_SHARED); 320 xfs_iunlock(ip, XFS_ILOCK_SHARED);
321 321
322 if (error) 322 if (error)
@@ -1138,8 +1138,8 @@ __xfs_get_blocks(
1138 end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + size); 1138 end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)offset + size);
1139 offset_fsb = XFS_B_TO_FSBT(mp, offset); 1139 offset_fsb = XFS_B_TO_FSBT(mp, offset);
1140 1140
1141 error = xfs_bmapi(NULL, ip, offset_fsb, end_fsb - offset_fsb, 1141 error = xfs_bmapi_read(ip, offset_fsb, end_fsb - offset_fsb,
1142 XFS_BMAPI_ENTIRE, NULL, 0, &imap, &nimaps, NULL); 1142 &imap, &nimaps, XFS_BMAPI_ENTIRE);
1143 if (error) 1143 if (error)
1144 goto out_unlock; 1144 goto out_unlock;
1145 1145
diff --git a/fs/xfs/xfs_attr.c b/fs/xfs/xfs_attr.c
index c7dab0c0bdda..41ef02b7185a 100644
--- a/fs/xfs/xfs_attr.c
+++ b/fs/xfs/xfs_attr.c
@@ -1963,10 +1963,9 @@ xfs_attr_rmtval_get(xfs_da_args_t *args)
1963 lblkno = args->rmtblkno; 1963 lblkno = args->rmtblkno;
1964 while (valuelen > 0) { 1964 while (valuelen > 0) {
1965 nmap = ATTR_RMTVALUE_MAPSIZE; 1965 nmap = ATTR_RMTVALUE_MAPSIZE;
1966 error = xfs_bmapi(args->trans, args->dp, (xfs_fileoff_t)lblkno, 1966 error = xfs_bmapi_read(args->dp, (xfs_fileoff_t)lblkno,
1967 args->rmtblkcnt, 1967 args->rmtblkcnt, map, &nmap,
1968 XFS_BMAPI_ATTRFORK | XFS_BMAPI_METADATA, 1968 XFS_BMAPI_ATTRFORK);
1969 NULL, 0, map, &nmap, NULL);
1970 if (error) 1969 if (error)
1971 return(error); 1970 return(error);
1972 ASSERT(nmap >= 1); 1971 ASSERT(nmap >= 1);
@@ -2092,14 +2091,11 @@ xfs_attr_rmtval_set(xfs_da_args_t *args)
2092 */ 2091 */
2093 xfs_bmap_init(args->flist, args->firstblock); 2092 xfs_bmap_init(args->flist, args->firstblock);
2094 nmap = 1; 2093 nmap = 1;
2095 error = xfs_bmapi(NULL, dp, (xfs_fileoff_t)lblkno, 2094 error = xfs_bmapi_read(dp, (xfs_fileoff_t)lblkno,
2096 args->rmtblkcnt, 2095 args->rmtblkcnt, &map, &nmap,
2097 XFS_BMAPI_ATTRFORK | XFS_BMAPI_METADATA, 2096 XFS_BMAPI_ATTRFORK);
2098 args->firstblock, 0, &map, &nmap, 2097 if (error)
2099 NULL);
2100 if (error) {
2101 return(error); 2098 return(error);
2102 }
2103 ASSERT(nmap == 1); 2099 ASSERT(nmap == 1);
2104 ASSERT((map.br_startblock != DELAYSTARTBLOCK) && 2100 ASSERT((map.br_startblock != DELAYSTARTBLOCK) &&
2105 (map.br_startblock != HOLESTARTBLOCK)); 2101 (map.br_startblock != HOLESTARTBLOCK));
@@ -2155,16 +2151,12 @@ xfs_attr_rmtval_remove(xfs_da_args_t *args)
2155 /* 2151 /*
2156 * Try to remember where we decided to put the value. 2152 * Try to remember where we decided to put the value.
2157 */ 2153 */
2158 xfs_bmap_init(args->flist, args->firstblock);
2159 nmap = 1; 2154 nmap = 1;
2160 error = xfs_bmapi(NULL, args->dp, (xfs_fileoff_t)lblkno, 2155 error = xfs_bmapi_read(args->dp, (xfs_fileoff_t)lblkno,
2161 args->rmtblkcnt, 2156 args->rmtblkcnt, &map, &nmap,
2162 XFS_BMAPI_ATTRFORK | XFS_BMAPI_METADATA, 2157 XFS_BMAPI_ATTRFORK);
2163 args->firstblock, 0, &map, &nmap, 2158 if (error)
2164 args->flist);
2165 if (error) {
2166 return(error); 2159 return(error);
2167 }
2168 ASSERT(nmap == 1); 2160 ASSERT(nmap == 1);
2169 ASSERT((map.br_startblock != DELAYSTARTBLOCK) && 2161 ASSERT((map.br_startblock != DELAYSTARTBLOCK) &&
2170 (map.br_startblock != HOLESTARTBLOCK)); 2162 (map.br_startblock != HOLESTARTBLOCK));
diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c
index 58c3add07b65..d4906e7c9787 100644
--- a/fs/xfs/xfs_attr_leaf.c
+++ b/fs/xfs/xfs_attr_leaf.c
@@ -2926,9 +2926,8 @@ xfs_attr_leaf_freextent(xfs_trans_t **trans, xfs_inode_t *dp,
2926 * Try to remember where we decided to put the value. 2926 * Try to remember where we decided to put the value.
2927 */ 2927 */
2928 nmap = 1; 2928 nmap = 1;
2929 error = xfs_bmapi(*trans, dp, (xfs_fileoff_t)tblkno, tblkcnt, 2929 error = xfs_bmapi_read(dp, (xfs_fileoff_t)tblkno, tblkcnt,
2930 XFS_BMAPI_ATTRFORK | XFS_BMAPI_METADATA, 2930 &map, &nmap, XFS_BMAPI_ATTRFORK);
2931 NULL, 0, &map, &nmap, NULL);
2932 if (error) { 2931 if (error) {
2933 return(error); 2932 return(error);
2934 } 2933 }
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c
index 59f63949d3bc..fc5acf0b921e 100644
--- a/fs/xfs/xfs_bmap.c
+++ b/fs/xfs/xfs_bmap.c
@@ -4350,6 +4350,98 @@ xfs_bmapi_update_map(
4350} 4350}
4351 4351
4352/* 4352/*
4353 * Map file blocks to filesystem blocks without allocation.
4354 */
4355int
4356xfs_bmapi_read(
4357 struct xfs_inode *ip,
4358 xfs_fileoff_t bno,
4359 xfs_filblks_t len,
4360 struct xfs_bmbt_irec *mval,
4361 int *nmap,
4362 int flags)
4363{
4364 struct xfs_mount *mp = ip->i_mount;
4365 struct xfs_ifork *ifp;
4366 struct xfs_bmbt_irec got;
4367 struct xfs_bmbt_irec prev;
4368 xfs_fileoff_t obno;
4369 xfs_fileoff_t end;
4370 xfs_extnum_t lastx;
4371 int error;
4372 int eof;
4373 int n = 0;
4374 int whichfork = (flags & XFS_BMAPI_ATTRFORK) ?
4375 XFS_ATTR_FORK : XFS_DATA_FORK;
4376
4377 ASSERT(*nmap >= 1);
4378 ASSERT(!(flags & ~(XFS_BMAPI_ATTRFORK|XFS_BMAPI_ENTIRE|
4379 XFS_BMAPI_IGSTATE)));
4380
4381 if (unlikely(XFS_TEST_ERROR(
4382 (XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS &&
4383 XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE),
4384 mp, XFS_ERRTAG_BMAPIFORMAT, XFS_RANDOM_BMAPIFORMAT))) {
4385 XFS_ERROR_REPORT("xfs_bmapi_read", XFS_ERRLEVEL_LOW, mp);
4386 return XFS_ERROR(EFSCORRUPTED);
4387 }
4388
4389 if (XFS_FORCED_SHUTDOWN(mp))
4390 return XFS_ERROR(EIO);
4391
4392 XFS_STATS_INC(xs_blk_mapr);
4393
4394 ifp = XFS_IFORK_PTR(ip, whichfork);
4395 ASSERT(ifp->if_ext_max ==
4396 XFS_IFORK_SIZE(ip, whichfork) / (uint)sizeof(xfs_bmbt_rec_t));
4397
4398 if (!(ifp->if_flags & XFS_IFEXTENTS)) {
4399 error = xfs_iread_extents(NULL, ip, whichfork);
4400 if (error)
4401 return error;
4402 }
4403
4404 xfs_bmap_search_extents(ip, bno, whichfork, &eof, &lastx, &got, &prev);
4405 end = bno + len;
4406 obno = bno;
4407
4408 while (bno < end && n < *nmap) {
4409 /* Reading past eof, act as though there's a hole up to end. */
4410 if (eof)
4411 got.br_startoff = end;
4412 if (got.br_startoff > bno) {
4413 /* Reading in a hole. */
4414 mval->br_startoff = bno;
4415 mval->br_startblock = HOLESTARTBLOCK;
4416 mval->br_blockcount =
4417 XFS_FILBLKS_MIN(len, got.br_startoff - bno);
4418 mval->br_state = XFS_EXT_NORM;
4419 bno += mval->br_blockcount;
4420 len -= mval->br_blockcount;
4421 mval++;
4422 n++;
4423 continue;
4424 }
4425
4426 /* set up the extent map to return. */
4427 xfs_bmapi_trim_map(mval, &got, &bno, len, obno, end, n, flags);
4428 xfs_bmapi_update_map(&mval, &bno, &len, obno, end, &n, flags);
4429
4430 /* If we're done, stop now. */
4431 if (bno >= end || n >= *nmap)
4432 break;
4433
4434 /* Else go on to the next record. */
4435 if (++lastx < ifp->if_bytes / sizeof(xfs_bmbt_rec_t))
4436 xfs_bmbt_get_all(xfs_iext_get_ext(ifp, lastx), &got);
4437 else
4438 eof = 1;
4439 }
4440 *nmap = n;
4441 return 0;
4442}
4443
4444/*
4353 * Map file blocks to filesystem blocks. 4445 * Map file blocks to filesystem blocks.
4354 * File range is given by the bno/len pair. 4446 * File range is given by the bno/len pair.
4355 * Adds blocks to file if a write ("flags & XFS_BMAPI_WRITE" set) 4447 * Adds blocks to file if a write ("flags & XFS_BMAPI_WRITE" set)
@@ -5490,10 +5582,9 @@ xfs_getbmap(
5490 5582
5491 do { 5583 do {
5492 nmap = (nexleft > subnex) ? subnex : nexleft; 5584 nmap = (nexleft > subnex) ? subnex : nexleft;
5493 error = xfs_bmapi(NULL, ip, XFS_BB_TO_FSBT(mp, bmv->bmv_offset), 5585 error = xfs_bmapi_read(ip, XFS_BB_TO_FSBT(mp, bmv->bmv_offset),
5494 XFS_BB_TO_FSB(mp, bmv->bmv_length), 5586 XFS_BB_TO_FSB(mp, bmv->bmv_length),
5495 bmapi_flags, NULL, 0, map, &nmap, 5587 map, &nmap, bmapi_flags);
5496 NULL);
5497 if (error) 5588 if (error)
5498 goto out_free_map; 5589 goto out_free_map;
5499 ASSERT(nmap <= subnex); 5590 ASSERT(nmap <= subnex);
@@ -6084,9 +6175,8 @@ xfs_bmap_punch_delalloc_range(
6084 * trying to remove a real extent (which requires a 6175 * trying to remove a real extent (which requires a
6085 * transaction) or a hole, which is probably a bad idea... 6176 * transaction) or a hole, which is probably a bad idea...
6086 */ 6177 */
6087 error = xfs_bmapi(NULL, ip, start_fsb, 1, 6178 error = xfs_bmapi_read(ip, start_fsb, 1, &imap, &nimaps,
6088 XFS_BMAPI_ENTIRE, NULL, 0, &imap, 6179 XFS_BMAPI_ENTIRE);
6089 &nimaps, NULL);
6090 6180
6091 if (error) { 6181 if (error) {
6092 /* something screwed, just bail */ 6182 /* something screwed, just bail */
diff --git a/fs/xfs/xfs_bmap.h b/fs/xfs/xfs_bmap.h
index c62234bde053..16257c6eba71 100644
--- a/fs/xfs/xfs_bmap.h
+++ b/fs/xfs/xfs_bmap.h
@@ -294,6 +294,10 @@ xfs_bmapi(
294 int *nmap, /* i/o: mval size/count */ 294 int *nmap, /* i/o: mval size/count */
295 xfs_bmap_free_t *flist); /* i/o: list extents to free */ 295 xfs_bmap_free_t *flist); /* i/o: list extents to free */
296 296
297int xfs_bmapi_read(struct xfs_inode *ip, xfs_fileoff_t bno,
298 xfs_filblks_t len, struct xfs_bmbt_irec *mval,
299 int *nmap, int flags);
300
297/* 301/*
298 * Map file blocks to filesystem blocks, simple version. 302 * Map file blocks to filesystem blocks, simple version.
299 * One block only, read-only. 303 * One block only, read-only.
diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c
index ee9d5427fcd4..44dfa39099ef 100644
--- a/fs/xfs/xfs_da_btree.c
+++ b/fs/xfs/xfs_da_btree.c
@@ -1995,11 +1995,10 @@ xfs_da_do_buf(
1995 } else { 1995 } else {
1996 mapp = kmem_alloc(sizeof(*mapp) * nfsb, KM_SLEEP); 1996 mapp = kmem_alloc(sizeof(*mapp) * nfsb, KM_SLEEP);
1997 nmap = nfsb; 1997 nmap = nfsb;
1998 if ((error = xfs_bmapi(trans, dp, (xfs_fileoff_t)bno, 1998 error = xfs_bmapi_read(dp, (xfs_fileoff_t)bno, nfsb,
1999 nfsb, 1999 mapp, &nmap,
2000 XFS_BMAPI_METADATA | 2000 xfs_bmapi_aflag(whichfork));
2001 xfs_bmapi_aflag(whichfork), 2001 if (error)
2002 NULL, 0, mapp, &nmap, NULL)))
2003 goto exit0; 2002 goto exit0;
2004 } 2003 }
2005 } else { 2004 } else {
diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c
index ca2386d82cdf..66e108f561a3 100644
--- a/fs/xfs/xfs_dir2_leaf.c
+++ b/fs/xfs/xfs_dir2_leaf.c
@@ -888,12 +888,10 @@ xfs_dir2_leaf_getdents(
888 * we already have in the table. 888 * we already have in the table.
889 */ 889 */
890 nmap = map_size - map_valid; 890 nmap = map_size - map_valid;
891 error = xfs_bmapi(NULL, dp, 891 error = xfs_bmapi_read(dp, map_off,
892 map_off,
893 xfs_dir2_byte_to_da(mp, 892 xfs_dir2_byte_to_da(mp,
894 XFS_DIR2_LEAF_OFFSET) - map_off, 893 XFS_DIR2_LEAF_OFFSET) - map_off,
895 XFS_BMAPI_METADATA, NULL, 0, 894 &map[map_valid], &nmap, 0);
896 &map[map_valid], &nmap, NULL);
897 /* 895 /*
898 * Don't know if we should ignore this or 896 * Don't know if we should ignore this or
899 * try to return an error. 897 * try to return an error.
diff --git a/fs/xfs/xfs_dquot.c b/fs/xfs/xfs_dquot.c
index 0c5fe66ce92b..c377961657ee 100644
--- a/fs/xfs/xfs_dquot.c
+++ b/fs/xfs/xfs_dquot.c
@@ -488,9 +488,8 @@ xfs_qm_dqtobp(
488 /* 488 /*
489 * Find the block map; no allocations yet 489 * Find the block map; no allocations yet
490 */ 490 */
491 error = xfs_bmapi(NULL, quotip, dqp->q_fileoffset, 491 error = xfs_bmapi_read(quotip, dqp->q_fileoffset,
492 XFS_DQUOT_CLUSTER_SIZE_FSB, XFS_BMAPI_METADATA, 492 XFS_DQUOT_CLUSTER_SIZE_FSB, &map, &nmaps, 0);
493 NULL, 0, &map, &nmaps, NULL);
494 493
495 xfs_iunlock(quotip, XFS_ILOCK_SHARED); 494 xfs_iunlock(quotip, XFS_ILOCK_SHARED);
496 if (error) 495 if (error)
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index 06fe97e56e48..558543c146b3 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -509,11 +509,9 @@ xfs_zero_last_block(
509 509
510 last_fsb = XFS_B_TO_FSBT(mp, isize); 510 last_fsb = XFS_B_TO_FSBT(mp, isize);
511 nimaps = 1; 511 nimaps = 1;
512 error = xfs_bmapi(NULL, ip, last_fsb, 1, 0, NULL, 0, &imap, 512 error = xfs_bmapi_read(ip, last_fsb, 1, &imap, &nimaps, 0);
513 &nimaps, NULL); 513 if (error)
514 if (error) {
515 return error; 514 return error;
516 }
517 ASSERT(nimaps > 0); 515 ASSERT(nimaps > 0);
518 /* 516 /*
519 * If the block underlying isize is just a hole, then there 517 * If the block underlying isize is just a hole, then there
@@ -604,8 +602,8 @@ xfs_zero_eof(
604 while (start_zero_fsb <= end_zero_fsb) { 602 while (start_zero_fsb <= end_zero_fsb) {
605 nimaps = 1; 603 nimaps = 1;
606 zero_count_fsb = end_zero_fsb - start_zero_fsb + 1; 604 zero_count_fsb = end_zero_fsb - start_zero_fsb + 1;
607 error = xfs_bmapi(NULL, ip, start_zero_fsb, zero_count_fsb, 605 error = xfs_bmapi_read(ip, start_zero_fsb, zero_count_fsb,
608 0, NULL, 0, &imap, &nimaps, NULL); 606 &imap, &nimaps, 0);
609 if (error) { 607 if (error) {
610 ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_IOLOCK_EXCL)); 608 ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_IOLOCK_EXCL));
611 return error; 609 return error;
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
index d689253fdfda..f690d3a10b34 100644
--- a/fs/xfs/xfs_inode.c
+++ b/fs/xfs/xfs_inode.c
@@ -1187,6 +1187,7 @@ xfs_isize_check(
1187 xfs_fileoff_t map_first; 1187 xfs_fileoff_t map_first;
1188 int nimaps; 1188 int nimaps;
1189 xfs_bmbt_irec_t imaps[2]; 1189 xfs_bmbt_irec_t imaps[2];
1190 int error;
1190 1191
1191 if (!S_ISREG(ip->i_d.di_mode)) 1192 if (!S_ISREG(ip->i_d.di_mode))
1192 return; 1193 return;
@@ -1203,13 +1204,12 @@ xfs_isize_check(
1203 * The filesystem could be shutting down, so bmapi may return 1204 * The filesystem could be shutting down, so bmapi may return
1204 * an error. 1205 * an error.
1205 */ 1206 */
1206 if (xfs_bmapi(NULL, ip, map_first, 1207 error = xfs_bmapi_read(ip, map_first,
1207 (XFS_B_TO_FSB(mp, 1208 (XFS_B_TO_FSB(mp,
1208 (xfs_ufsize_t)XFS_MAXIOFFSET(mp)) - 1209 (xfs_ufsize_t)XFS_MAXIOFFSET(mp)) - map_first),
1209 map_first), 1210 imaps, &nimaps, XFS_BMAPI_ENTIRE);
1210 XFS_BMAPI_ENTIRE, NULL, 0, imaps, &nimaps, 1211 if (error)
1211 NULL)) 1212 return;
1212 return;
1213 ASSERT(nimaps == 1); 1213 ASSERT(nimaps == 1);
1214 ASSERT(imaps[0].br_startblock == HOLESTARTBLOCK); 1214 ASSERT(imaps[0].br_startblock == HOLESTARTBLOCK);
1215} 1215}
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
index 091d82b94c4d..544f053860f1 100644
--- a/fs/xfs/xfs_iomap.c
+++ b/fs/xfs/xfs_iomap.c
@@ -300,8 +300,8 @@ xfs_iomap_eof_want_preallocate(
300 while (count_fsb > 0) { 300 while (count_fsb > 0) {
301 imaps = nimaps; 301 imaps = nimaps;
302 firstblock = NULLFSBLOCK; 302 firstblock = NULLFSBLOCK;
303 error = xfs_bmapi(NULL, ip, start_fsb, count_fsb, 0, 303 error = xfs_bmapi_read(ip, start_fsb, count_fsb, imap, &imaps,
304 &firstblock, 0, imap, &imaps, NULL); 304 0);
305 if (error) 305 if (error)
306 return error; 306 return error;
307 for (n = 0; n < imaps; n++) { 307 for (n = 0; n < imaps; n++) {
diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c
index f51bef885e6d..ddaf97a57ec6 100644
--- a/fs/xfs/xfs_qm.c
+++ b/fs/xfs/xfs_qm.c
@@ -1347,11 +1347,8 @@ xfs_qm_dqiterate(
1347 * the inode is never added to the transaction. 1347 * the inode is never added to the transaction.
1348 */ 1348 */
1349 xfs_ilock(qip, XFS_ILOCK_SHARED); 1349 xfs_ilock(qip, XFS_ILOCK_SHARED);
1350 error = xfs_bmapi(NULL, qip, lblkno, 1350 error = xfs_bmapi_read(qip, lblkno, maxlblkcnt - lblkno,
1351 maxlblkcnt - lblkno, 1351 map, &nmaps, 0);
1352 XFS_BMAPI_METADATA,
1353 NULL,
1354 0, map, &nmaps, NULL);
1355 xfs_iunlock(qip, XFS_ILOCK_SHARED); 1352 xfs_iunlock(qip, XFS_ILOCK_SHARED);
1356 if (error) 1353 if (error)
1357 break; 1354 break;
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c
index 0d1caec873a1..63874a87b378 100644
--- a/fs/xfs/xfs_vnodeops.c
+++ b/fs/xfs/xfs_vnodeops.c
@@ -72,8 +72,8 @@ xfs_readlink_bmap(
72 xfs_buf_t *bp; 72 xfs_buf_t *bp;
73 int error = 0; 73 int error = 0;
74 74
75 error = xfs_bmapi(NULL, ip, 0, XFS_B_TO_FSB(mp, pathlen), 0, NULL, 0, 75 error = xfs_bmapi_read(ip, 0, XFS_B_TO_FSB(mp, pathlen), mval, &nmaps,
76 mval, &nmaps, NULL); 76 0);
77 if (error) 77 if (error)
78 goto out; 78 goto out;
79 79
@@ -178,8 +178,7 @@ xfs_free_eofblocks(
178 178
179 nimaps = 1; 179 nimaps = 1;
180 xfs_ilock(ip, XFS_ILOCK_SHARED); 180 xfs_ilock(ip, XFS_ILOCK_SHARED);
181 error = xfs_bmapi(NULL, ip, end_fsb, map_len, 0, 181 error = xfs_bmapi_read(ip, end_fsb, map_len, &imap, &nimaps, 0);
182 NULL, 0, &imap, &nimaps, NULL);
183 xfs_iunlock(ip, XFS_ILOCK_SHARED); 182 xfs_iunlock(ip, XFS_ILOCK_SHARED);
184 183
185 if (!error && (nimaps != 0) && 184 if (!error && (nimaps != 0) &&
@@ -297,9 +296,9 @@ xfs_inactive_symlink_rmt(
297 done = 0; 296 done = 0;
298 xfs_bmap_init(&free_list, &first_block); 297 xfs_bmap_init(&free_list, &first_block);
299 nmaps = ARRAY_SIZE(mval); 298 nmaps = ARRAY_SIZE(mval);
300 if ((error = xfs_bmapi(tp, ip, 0, XFS_B_TO_FSB(mp, size), 299 error = xfs_bmapi_read(ip, 0, XFS_B_TO_FSB(mp, size),
301 XFS_BMAPI_METADATA, &first_block, 0, mval, &nmaps, 300 mval, &nmaps, 0);
302 &free_list))) 301 if (error)
303 goto error0; 302 goto error0;
304 /* 303 /*
305 * Invalidate the block(s). 304 * Invalidate the block(s).
@@ -1981,8 +1980,7 @@ xfs_zero_remaining_bytes(
1981 for (offset = startoff; offset <= endoff; offset = lastoffset + 1) { 1980 for (offset = startoff; offset <= endoff; offset = lastoffset + 1) {
1982 offset_fsb = XFS_B_TO_FSBT(mp, offset); 1981 offset_fsb = XFS_B_TO_FSBT(mp, offset);
1983 nimap = 1; 1982 nimap = 1;
1984 error = xfs_bmapi(NULL, ip, offset_fsb, 1, 0, 1983 error = xfs_bmapi_read(ip, offset_fsb, 1, &imap, &nimap, 0);
1985 NULL, 0, &imap, &nimap, NULL);
1986 if (error || nimap < 1) 1984 if (error || nimap < 1)
1987 break; 1985 break;
1988 ASSERT(imap.br_blockcount >= 1); 1986 ASSERT(imap.br_blockcount >= 1);
@@ -2101,8 +2099,8 @@ xfs_free_file_space(
2101 */ 2099 */
2102 if (rt && !xfs_sb_version_hasextflgbit(&mp->m_sb)) { 2100 if (rt && !xfs_sb_version_hasextflgbit(&mp->m_sb)) {
2103 nimap = 1; 2101 nimap = 1;
2104 error = xfs_bmapi(NULL, ip, startoffset_fsb, 2102 error = xfs_bmapi_read(ip, startoffset_fsb, 1,
2105 1, 0, NULL, 0, &imap, &nimap, NULL); 2103 &imap, &nimap, 0);
2106 if (error) 2104 if (error)
2107 goto out_unlock_iolock; 2105 goto out_unlock_iolock;
2108 ASSERT(nimap == 0 || nimap == 1); 2106 ASSERT(nimap == 0 || nimap == 1);
@@ -2116,8 +2114,8 @@ xfs_free_file_space(
2116 startoffset_fsb += mp->m_sb.sb_rextsize - mod; 2114 startoffset_fsb += mp->m_sb.sb_rextsize - mod;
2117 } 2115 }
2118 nimap = 1; 2116 nimap = 1;
2119 error = xfs_bmapi(NULL, ip, endoffset_fsb - 1, 2117 error = xfs_bmapi_read(ip, endoffset_fsb - 1, 1,
2120 1, 0, NULL, 0, &imap, &nimap, NULL); 2118 &imap, &nimap, 0);
2121 if (error) 2119 if (error)
2122 goto out_unlock_iolock; 2120 goto out_unlock_iolock;
2123 ASSERT(nimap == 0 || nimap == 1); 2121 ASSERT(nimap == 0 || nimap == 1);