@@ -2460,19 +2460,11 @@ xfs_da_shrink_inode(
2460
2460
return error ;
2461
2461
}
2462
2462
2463
- /*
2464
- * Map the block we are given ready for reading. There are three possible return
2465
- * values:
2466
- * -1 - will be returned if we land in a hole and mappedbno == -2 so the
2467
- * caller knows not to execute a subsequent read.
2468
- * 0 - if we mapped the block successfully
2469
- * >0 - positive error number if there was an error.
2470
- */
2471
2463
static int
2472
2464
xfs_dabuf_map (
2473
2465
struct xfs_inode * dp ,
2474
2466
xfs_dablk_t bno ,
2475
- xfs_daddr_t mappedbno ,
2467
+ unsigned int flags ,
2476
2468
int whichfork ,
2477
2469
struct xfs_buf_map * * mapp ,
2478
2470
int * nmaps )
@@ -2527,7 +2519,7 @@ xfs_dabuf_map(
2527
2519
2528
2520
invalid_mapping :
2529
2521
/* Caller ok with no mapping. */
2530
- if (XFS_IS_CORRUPT (mp , mappedbno != -2 )) {
2522
+ if (XFS_IS_CORRUPT (mp , !( flags & XFS_DABUF_MAP_HOLE_OK ) )) {
2531
2523
error = - EFSCORRUPTED ;
2532
2524
if (xfs_error_level >= XFS_ERRLEVEL_LOW ) {
2533
2525
xfs_alert (mp , "%s: bno %u inode %llu" ,
@@ -2575,13 +2567,11 @@ xfs_da_get_buf(
2575
2567
goto done ;
2576
2568
}
2577
2569
2578
- error = xfs_dabuf_map (dp , bno , mappedbno , whichfork , & mapp , & nmap );
2579
- if (error ) {
2580
- /* mapping a hole is not an error, but we don't continue */
2581
- if (error == -1 )
2582
- error = 0 ;
2570
+ error = xfs_dabuf_map (dp , bno ,
2571
+ mappedbno == -1 ? XFS_DABUF_MAP_HOLE_OK : 0 ,
2572
+ whichfork , & mapp , & nmap );
2573
+ if (error || nmap == 0 )
2583
2574
goto out_free ;
2584
- }
2585
2575
2586
2576
bp = xfs_trans_get_buf_map (tp , mp -> m_ddev_targp , mapp , nmap , 0 );
2587
2577
done :
@@ -2630,13 +2620,11 @@ xfs_da_read_buf(
2630
2620
goto done ;
2631
2621
}
2632
2622
2633
- error = xfs_dabuf_map (dp , bno , mappedbno , whichfork , & mapp , & nmap );
2634
- if (error ) {
2635
- /* mapping a hole is not an error, but we don't continue */
2636
- if (error == -1 )
2637
- error = 0 ;
2623
+ error = xfs_dabuf_map (dp , bno ,
2624
+ mappedbno == -1 ? XFS_DABUF_MAP_HOLE_OK : 0 ,
2625
+ whichfork , & mapp , & nmap );
2626
+ if (error || !nmap )
2638
2627
goto out_free ;
2639
- }
2640
2628
2641
2629
error = xfs_trans_read_buf_map (mp , tp , mp -> m_ddev_targp , mapp , nmap , 0 ,
2642
2630
& bp , ops );
@@ -2677,14 +2665,11 @@ xfs_da_reada_buf(
2677
2665
2678
2666
mapp = & map ;
2679
2667
nmap = 1 ;
2680
- error = xfs_dabuf_map (dp , bno , mappedbno , whichfork ,
2681
- & mapp , & nmap );
2682
- if (error ) {
2683
- /* mapping a hole is not an error, but we don't continue */
2684
- if (error == -1 )
2685
- error = 0 ;
2668
+ error = xfs_dabuf_map (dp , bno ,
2669
+ mappedbno == -1 ? XFS_DABUF_MAP_HOLE_OK : 0 ,
2670
+ whichfork , & mapp , & nmap );
2671
+ if (error || !nmap )
2686
2672
goto out_free ;
2687
- }
2688
2673
2689
2674
mappedbno = mapp [0 ].bm_bn ;
2690
2675
xfs_buf_readahead_map (dp -> i_mount -> m_ddev_targp , mapp , nmap , ops );
0 commit comments