diff options
-rw-r--r-- | fs/xfs/xfs_aops.c | 8 | ||||
-rw-r--r-- | fs/xfs/xfs_attr.c | 30 | ||||
-rw-r--r-- | fs/xfs/xfs_attr_leaf.c | 5 | ||||
-rw-r--r-- | fs/xfs/xfs_bmap.c | 104 | ||||
-rw-r--r-- | fs/xfs/xfs_bmap.h | 4 | ||||
-rw-r--r-- | fs/xfs/xfs_da_btree.c | 9 | ||||
-rw-r--r-- | fs/xfs/xfs_dir2_leaf.c | 6 | ||||
-rw-r--r-- | fs/xfs/xfs_dquot.c | 5 | ||||
-rw-r--r-- | fs/xfs/xfs_file.c | 10 | ||||
-rw-r--r-- | fs/xfs/xfs_inode.c | 12 | ||||
-rw-r--r-- | fs/xfs/xfs_iomap.c | 4 | ||||
-rw-r--r-- | fs/xfs/xfs_qm.c | 7 | ||||
-rw-r--r-- | fs/xfs/xfs_vnodeops.c | 24 |
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 | */ | ||
4355 | int | ||
4356 | xfs_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 | ||
297 | int 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); |