Commit 2145f447 authored by Chaitanya Kulkarni's avatar Chaitanya Kulkarni Committed by Carlos Maiolino
Browse files

xfs: ignore discard return value



__blkdev_issue_discard() always returns 0, making all error checking
in XFS discard functions dead code.

Change xfs_discard_extents() return type to void, remove error variable,
error checking, and error logging for the __blkdev_issue_discard() call
in same function.

Update xfs_trim_perag_extents() and xfs_trim_rtgroup_extents() to
ignore the xfs_discard_extents() return value and error checking
code.

Update xfs_discard_rtdev_extents() to ignore __blkdev_issue_discard()
return value and error checking code.

Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarChaitanya Kulkarni <ckulkarnilinux@gmail.com>
Signed-off-by: default avatarCarlos Maiolino <cem@kernel.org>
parent 8f0b4cce
Loading
Loading
Loading
Loading
+5 −22
Original line number Diff line number Diff line
@@ -108,7 +108,7 @@ xfs_discard_endio(
 * list. We plug and chain the bios so that we only need a single completion
 * call to clear all the busy extents once the discards are complete.
 */
int
void
xfs_discard_extents(
	struct xfs_mount	*mp,
	struct xfs_busy_extents	*extents)
@@ -116,7 +116,6 @@ xfs_discard_extents(
	struct xfs_extent_busy	*busyp;
	struct bio		*bio = NULL;
	struct blk_plug		plug;
	int			error = 0;

	blk_start_plug(&plug);
	list_for_each_entry(busyp, &extents->extent_list, list) {
@@ -126,18 +125,10 @@ xfs_discard_extents(

		trace_xfs_discard_extent(xg, busyp->bno, busyp->length);

		error = __blkdev_issue_discard(btp->bt_bdev,
		__blkdev_issue_discard(btp->bt_bdev,
				xfs_gbno_to_daddr(xg, busyp->bno),
				XFS_FSB_TO_BB(mp, busyp->length),
				GFP_KERNEL, &bio);
		if (error && error != -EOPNOTSUPP) {
			xfs_info(mp,
	 "discard failed for extent [0x%llx,%u], error %d",
				 (unsigned long long)busyp->bno,
				 busyp->length,
				 error);
			break;
		}
	}

	if (bio) {
@@ -148,8 +139,6 @@ xfs_discard_extents(
		xfs_discard_endio_work(&extents->endio_work);
	}
	blk_finish_plug(&plug);

	return error;
}

/*
@@ -385,9 +374,7 @@ xfs_trim_perag_extents(
		 * list  after this function call, as it may have been freed by
		 * the time control returns to us.
		 */
		error = xfs_discard_extents(pag_mount(pag), extents);
		if (error)
			break;
		xfs_discard_extents(pag_mount(pag), extents);

		if (xfs_trim_should_stop())
			break;
@@ -496,12 +483,10 @@ xfs_discard_rtdev_extents(

		trace_xfs_discard_rtextent(mp, busyp->bno, busyp->length);

		error = __blkdev_issue_discard(bdev,
		__blkdev_issue_discard(bdev,
				xfs_rtb_to_daddr(mp, busyp->bno),
				XFS_FSB_TO_BB(mp, busyp->length),
				GFP_NOFS, &bio);
		if (error)
			break;
	}
	xfs_discard_free_rtdev_extents(tr);

@@ -741,9 +726,7 @@ xfs_trim_rtgroup_extents(
		 * list  after this function call, as it may have been freed by
		 * the time control returns to us.
		 */
		error = xfs_discard_extents(rtg_mount(rtg), tr.extents);
		if (error)
			break;
		xfs_discard_extents(rtg_mount(rtg), tr.extents);

		low = tr.restart_rtx;
	} while (!xfs_trim_should_stop() && low <= high);
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ struct fstrim_range;
struct xfs_mount;
struct xfs_busy_extents;

int xfs_discard_extents(struct xfs_mount *mp, struct xfs_busy_extents *busy);
void xfs_discard_extents(struct xfs_mount *mp, struct xfs_busy_extents *busy);
int xfs_ioc_trim(struct xfs_mount *mp, struct fstrim_range __user *fstrim);

#endif /* XFS_DISCARD_H */