diff --git a/fs/xfs/libxfs/xfs_alloc.h b/fs/xfs/libxfs/xfs_alloc.h index 1dcac78586b46ede7d7e48a159feb35940badd36..46d48c6f83b7bad9100b4479b6bd02a1845338ec 100644 --- a/fs/xfs/libxfs/xfs_alloc.h +++ b/fs/xfs/libxfs/xfs_alloc.h @@ -210,17 +210,6 @@ xfs_free_extent( return __xfs_free_extent(tp, bno, len, oinfo, type, false); } -static inline int -xfs_free_extent_nodiscard( - struct xfs_trans *tp, - xfs_fsblock_t bno, - xfs_extlen_t len, - struct xfs_owner_info *oinfo, - enum xfs_ag_resv_type type) -{ - return __xfs_free_extent(tp, bno, len, oinfo, type, true); -} - int /* error */ xfs_alloc_lookup_le( struct xfs_btree_cur *cur, /* btree cursor */ diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c index c7ea3d6f89f138ffd8cf4a304c2365adf03cb9b7..0fd051064ff0b95a4549a8235d5d0bb8046e8772 100644 --- a/fs/xfs/libxfs/xfs_bmap.c +++ b/fs/xfs/libxfs/xfs_bmap.c @@ -5116,15 +5116,10 @@ xfs_bmap_del_extent_real( if (error) goto done; } else { - if ((bflags & XFS_BMAPI_NODISCARD) || - (del->br_state == XFS_EXT_UNWRITTEN)) { - xfs_bmap_add_free_nodiscard(mp, dfops, - del->br_startblock, del->br_blockcount, - NULL); - } else { - xfs_bmap_add_free(mp, dfops, del->br_startblock, - del->br_blockcount, NULL); - } + __xfs_bmap_add_free(mp, dfops, del->br_startblock, + del->br_blockcount, NULL, + (bflags & XFS_BMAPI_NODISCARD) || + del->br_state == XFS_EXT_UNWRITTEN); } } diff --git a/fs/xfs/libxfs/xfs_bmap.h b/fs/xfs/libxfs/xfs_bmap.h index c46b73d1cb5bbdc03843c5932a8dea78431a89b3..6046012674c87c49469065bd7df16608cccc2903 100644 --- a/fs/xfs/libxfs/xfs_bmap.h +++ b/fs/xfs/libxfs/xfs_bmap.h @@ -260,17 +260,6 @@ xfs_bmap_add_free( __xfs_bmap_add_free(mp, dfops, bno, len, oinfo, false); } -static inline void -xfs_bmap_add_free_nodiscard( - struct xfs_mount *mp, - struct xfs_defer_ops *dfops, - xfs_fsblock_t bno, - xfs_filblks_t len, - struct xfs_owner_info *oinfo) -{ - __xfs_bmap_add_free(mp, dfops, bno, len, oinfo, true); -} - enum xfs_bmap_intent_type { XFS_BMAP_MAP = 1, XFS_BMAP_UNMAP, diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c index 518627c1b412535234491eaa3ef97b87d5071c5b..06badcbadeb44ef5de30710d22428ccd08933b6b 100644 --- a/fs/xfs/xfs_bmap_util.c +++ b/fs/xfs/xfs_bmap_util.c @@ -871,8 +871,8 @@ xfs_free_eofblocks( * contents of the file are flushed to disk then the files * may be full of holes (ie NULL files bug). */ - error = xfs_itruncate_extents_nodiscard(&tp, ip, XFS_DATA_FORK, - XFS_ISIZE(ip)); + error = xfs_itruncate_extents_flags(&tp, ip, XFS_DATA_FORK, + XFS_ISIZE(ip), XFS_BMAPI_NODISCARD); if (error) { /* * If we get an error at this point we simply don't diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 74d5cbee8a7175793d37e9e630dc9d0aa3c14483..05207a64dd53cd25a3012b93e257c4af273eba38 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -1548,12 +1548,12 @@ xfs_itruncate_clear_reflink_flags( * dirty on error so that transactions can be easily aborted if possible. */ int -__xfs_itruncate_extents( +xfs_itruncate_extents_flags( struct xfs_trans **tpp, struct xfs_inode *ip, int whichfork, xfs_fsize_t new_size, - bool skip_discard) + int flags) { struct xfs_mount *mp = ip->i_mount; struct xfs_trans *tp = *tpp; @@ -1564,7 +1564,6 @@ __xfs_itruncate_extents( xfs_filblks_t unmap_len; int error = 0; int done = 0; - int flags; ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); ASSERT(!atomic_read(&VFS_I(ip)->i_count) || @@ -1577,9 +1576,7 @@ __xfs_itruncate_extents( trace_xfs_itruncate_extents_start(ip, new_size); - flags = xfs_bmapi_aflag(whichfork); - if (skip_discard) - flags |= XFS_BMAPI_NODISCARD; + flags |= xfs_bmapi_aflag(whichfork); /* * Since it is possible for space to become allocated beyond diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index 3dd3201f44095663db5ab9b3a2155328d4ea554e..00fee682474562d8cc18b91c01c6c56d3d55b281 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -415,8 +415,8 @@ uint xfs_ilock_attr_map_shared(struct xfs_inode *); uint xfs_ip2xflags(struct xfs_inode *); int xfs_ifree(struct xfs_trans *, xfs_inode_t *, struct xfs_defer_ops *); -int __xfs_itruncate_extents(struct xfs_trans **, struct xfs_inode *, - int, xfs_fsize_t, bool); +int xfs_itruncate_extents_flags(struct xfs_trans **, + struct xfs_inode *, int, xfs_fsize_t, int); void xfs_iext_realloc(xfs_inode_t *, int, int); void xfs_iunpin_wait(xfs_inode_t *); @@ -440,17 +440,7 @@ xfs_itruncate_extents( int whichfork, xfs_fsize_t new_size) { - return __xfs_itruncate_extents(tpp, ip, whichfork, new_size, false); -} - -static inline int -xfs_itruncate_extents_nodiscard( - struct xfs_trans **tpp, - struct xfs_inode *ip, - int whichfork, - xfs_fsize_t new_size) -{ - return __xfs_itruncate_extents(tpp, ip, whichfork, new_size, true); + return xfs_itruncate_extents_flags(tpp, ip, whichfork, new_size, 0); } /* from xfs_file.c */ diff --git a/fs/xfs/xfs_trans_extfree.c b/fs/xfs/xfs_trans_extfree.c index 28a1d5a0467cdf5045abfa7a6c483f6759313e36..2f44a08bdf65dd3914061a2af301dce283b96655 100644 --- a/fs/xfs/xfs_trans_extfree.c +++ b/fs/xfs/xfs_trans_extfree.c @@ -80,13 +80,8 @@ xfs_trans_free_extent( trace_xfs_bmap_free_deferred(tp->t_mountp, agno, 0, agbno, ext_len); - if (skip_discard) - error = xfs_free_extent_nodiscard(tp, start_block, ext_len, - oinfo, XFS_AG_RESV_NONE); - else - error = xfs_free_extent(tp, start_block, ext_len, oinfo, - XFS_AG_RESV_NONE); - + error = __xfs_free_extent(tp, start_block, ext_len, + oinfo, XFS_AG_RESV_NONE, skip_discard); /* * Mark the transaction dirty, even on error. This ensures the * transaction is aborted, which: