xfs: don't bother reporting blocks trimmed via FITRIM

Don't bother reporting the number of bytes that we "trimmed" because the
underlying storage isn't required to do anything(!) and failed discard
IOs aren't reported to the caller anyway. It's not like userspace can
use the reported value for anything useful like adjusting the offset
parameter of the next call, and it's not like anyone ever wrote a
manpage about FITRIM's out parameters.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Tested-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>

authored by Darrick J. Wong and committed by Chandan Babu R 410e8a18 95179935

+11 -25
+11 -25
fs/xfs/xfs_discard.c
··· 158 xfs_trim_gather_extents( 159 struct xfs_perag *pag, 160 struct xfs_trim_cur *tcur, 161 - struct xfs_busy_extents *extents, 162 - uint64_t *blocks_trimmed) 163 { 164 struct xfs_mount *mp = pag->pag_mount; 165 struct xfs_trans *tp; ··· 279 280 xfs_extent_busy_insert_discard(pag, fbno, flen, 281 &extents->extent_list); 282 - *blocks_trimmed += flen; 283 next_extent: 284 if (tcur->by_bno) 285 error = xfs_btree_increment(cur, 0, &i); ··· 325 struct xfs_perag *pag, 326 xfs_agblock_t start, 327 xfs_agblock_t end, 328 - xfs_extlen_t minlen, 329 - uint64_t *blocks_trimmed) 330 { 331 struct xfs_trim_cur tcur = { 332 .start = start, ··· 351 extents->owner = extents; 352 INIT_LIST_HEAD(&extents->extent_list); 353 354 - error = xfs_trim_gather_extents(pag, &tcur, extents, 355 - blocks_trimmed); 356 if (error) { 357 kfree(extents); 358 break; ··· 385 struct xfs_mount *mp, 386 xfs_daddr_t start, 387 xfs_daddr_t end, 388 - xfs_extlen_t minlen, 389 - uint64_t *blocks_trimmed) 390 { 391 xfs_agnumber_t start_agno, end_agno; 392 xfs_agblock_t start_agbno, end_agbno; ··· 406 407 if (start_agno == end_agno) 408 agend = end_agbno; 409 - error = xfs_trim_perag_extents(pag, start_agbno, agend, minlen, 410 - blocks_trimmed); 411 if (error) 412 last_error = error; 413 ··· 424 struct xfs_trim_rtdev { 425 /* list of rt extents to free */ 426 struct list_head extent_list; 427 - 428 - /* pointer to count of blocks trimmed */ 429 - uint64_t *blocks_trimmed; 430 431 /* minimum length that caller allows us to trim */ 432 xfs_rtblock_t minlen_fsb; ··· 542 busyp->length = rlen; 543 INIT_LIST_HEAD(&busyp->list); 544 list_add_tail(&busyp->list, &tr->extent_list); 545 - *tr->blocks_trimmed += rlen; 546 547 tr->restart_rtx = rec->ar_startext + rec->ar_extcount; 548 return 0; ··· 552 struct xfs_mount *mp, 553 xfs_daddr_t start, 554 xfs_daddr_t end, 555 - xfs_daddr_t minlen, 556 - uint64_t *blocks_trimmed) 557 { 558 struct xfs_rtalloc_rec low = { }; 559 struct xfs_rtalloc_rec high = { }; 560 struct xfs_trim_rtdev tr = { 561 - .blocks_trimmed = blocks_trimmed, 562 .minlen_fsb = XFS_BB_TO_FSB(mp, minlen), 563 }; 564 struct xfs_trans *tp; ··· 622 return error; 623 } 624 #else 625 - # define xfs_trim_rtdev_extents(m,s,e,n,b) (-EOPNOTSUPP) 626 #endif /* CONFIG_XFS_RT */ 627 628 /* ··· 649 xfs_daddr_t start, end; 650 xfs_extlen_t minlen; 651 xfs_rfsblock_t max_blocks; 652 - uint64_t blocks_trimmed = 0; 653 int error, last_error = 0; 654 655 if (!capable(CAP_SYS_ADMIN)) ··· 693 end = start + BTOBBT(range.len) - 1; 694 695 if (bdev_max_discard_sectors(mp->m_ddev_targp->bt_bdev)) { 696 - error = xfs_trim_datadev_extents(mp, start, end, minlen, 697 - &blocks_trimmed); 698 if (error) 699 last_error = error; 700 } 701 702 if (rt_bdev && !xfs_trim_should_stop()) { 703 - error = xfs_trim_rtdev_extents(mp, start, end, minlen, 704 - &blocks_trimmed); 705 if (error) 706 last_error = error; 707 } ··· 707 if (last_error) 708 return last_error; 709 710 - range.len = XFS_FSB_TO_B(mp, blocks_trimmed); 711 if (copy_to_user(urange, &range, sizeof(range))) 712 return -EFAULT; 713 return 0;
··· 158 xfs_trim_gather_extents( 159 struct xfs_perag *pag, 160 struct xfs_trim_cur *tcur, 161 + struct xfs_busy_extents *extents) 162 { 163 struct xfs_mount *mp = pag->pag_mount; 164 struct xfs_trans *tp; ··· 280 281 xfs_extent_busy_insert_discard(pag, fbno, flen, 282 &extents->extent_list); 283 next_extent: 284 if (tcur->by_bno) 285 error = xfs_btree_increment(cur, 0, &i); ··· 327 struct xfs_perag *pag, 328 xfs_agblock_t start, 329 xfs_agblock_t end, 330 + xfs_extlen_t minlen) 331 { 332 struct xfs_trim_cur tcur = { 333 .start = start, ··· 354 extents->owner = extents; 355 INIT_LIST_HEAD(&extents->extent_list); 356 357 + error = xfs_trim_gather_extents(pag, &tcur, extents); 358 if (error) { 359 kfree(extents); 360 break; ··· 389 struct xfs_mount *mp, 390 xfs_daddr_t start, 391 xfs_daddr_t end, 392 + xfs_extlen_t minlen) 393 { 394 xfs_agnumber_t start_agno, end_agno; 395 xfs_agblock_t start_agbno, end_agbno; ··· 411 412 if (start_agno == end_agno) 413 agend = end_agbno; 414 + error = xfs_trim_perag_extents(pag, start_agbno, agend, minlen); 415 if (error) 416 last_error = error; 417 ··· 430 struct xfs_trim_rtdev { 431 /* list of rt extents to free */ 432 struct list_head extent_list; 433 434 /* minimum length that caller allows us to trim */ 435 xfs_rtblock_t minlen_fsb; ··· 551 busyp->length = rlen; 552 INIT_LIST_HEAD(&busyp->list); 553 list_add_tail(&busyp->list, &tr->extent_list); 554 555 tr->restart_rtx = rec->ar_startext + rec->ar_extcount; 556 return 0; ··· 562 struct xfs_mount *mp, 563 xfs_daddr_t start, 564 xfs_daddr_t end, 565 + xfs_daddr_t minlen) 566 { 567 struct xfs_rtalloc_rec low = { }; 568 struct xfs_rtalloc_rec high = { }; 569 struct xfs_trim_rtdev tr = { 570 .minlen_fsb = XFS_BB_TO_FSB(mp, minlen), 571 }; 572 struct xfs_trans *tp; ··· 634 return error; 635 } 636 #else 637 + # define xfs_trim_rtdev_extents(...) (-EOPNOTSUPP) 638 #endif /* CONFIG_XFS_RT */ 639 640 /* ··· 661 xfs_daddr_t start, end; 662 xfs_extlen_t minlen; 663 xfs_rfsblock_t max_blocks; 664 int error, last_error = 0; 665 666 if (!capable(CAP_SYS_ADMIN)) ··· 706 end = start + BTOBBT(range.len) - 1; 707 708 if (bdev_max_discard_sectors(mp->m_ddev_targp->bt_bdev)) { 709 + error = xfs_trim_datadev_extents(mp, start, end, minlen); 710 if (error) 711 last_error = error; 712 } 713 714 if (rt_bdev && !xfs_trim_should_stop()) { 715 + error = xfs_trim_rtdev_extents(mp, start, end, minlen); 716 if (error) 717 last_error = error; 718 } ··· 722 if (last_error) 723 return last_error; 724 725 + range.len = min_t(unsigned long long, range.len, 726 + XFS_FSB_TO_B(mp, max_blocks)); 727 if (copy_to_user(urange, &range, sizeof(range))) 728 return -EFAULT; 729 return 0;