]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: cleanup use of the XFS_ALLOC_ flags
authorChristoph Hellwig <hch@lst.de>
Thu, 16 Jan 2020 22:13:33 +0000 (17:13 -0500)
committerEric Sandeen <sandeen@redhat.com>
Thu, 16 Jan 2020 22:13:33 +0000 (17:13 -0500)
Source kernel commit: c34d570d158699c6c812f5df653aaf2e3a83acca

Always set XFS_ALLOC_USERDATA for data fork allocations, and check it
in xfs_alloc_is_userdata instead of the current obsfucated check.
Also remove the xfs_alloc_is_userdata and xfs_alloc_allow_busy_reuse
helpers to make the code a little easier to understand.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
libxfs/xfs_alloc.c
libxfs/xfs_alloc.h
libxfs/xfs_bmap.c

index 571a13624246f4770fda6331abf88a73031e6d4f..7cb5159e3e4695a21cb46f61d5394b67faa721af 100644 (file)
@@ -326,7 +326,7 @@ xfs_alloc_compute_diff(
        xfs_extlen_t    newlen1=0;      /* length with newbno1 */
        xfs_extlen_t    newlen2=0;      /* length with newbno2 */
        xfs_agblock_t   wantend;        /* end of target extent */
-       bool            userdata = xfs_alloc_is_userdata(datatype);
+       bool            userdata = datatype & XFS_ALLOC_USERDATA;
 
        ASSERT(freelen >= wantlen);
        freeend = freebno + freelen;
@@ -1036,9 +1036,9 @@ xfs_alloc_ag_vextent_small(
                goto out;
 
        xfs_extent_busy_reuse(args->mp, args->agno, fbno, 1,
-                             xfs_alloc_allow_busy_reuse(args->datatype));
+                             (args->datatype & XFS_ALLOC_NOBUSY));
 
-       if (xfs_alloc_is_userdata(args->datatype)) {
+       if (args->datatype & XFS_ALLOC_USERDATA) {
                struct xfs_buf  *bp;
 
                bp = xfs_btree_get_bufs(args->mp, args->tp, args->agno, fbno);
@@ -2376,7 +2376,7 @@ xfs_alloc_fix_freelist(
         * somewhere else if we are not being asked to try harder at this
         * point
         */
-       if (pag->pagf_metadata && xfs_alloc_is_userdata(args->datatype) &&
+       if (pag->pagf_metadata && (args->datatype & XFS_ALLOC_USERDATA) &&
            (flags & XFS_ALLOC_FLAG_TRYLOCK)) {
                ASSERT(!(flags & XFS_ALLOC_FLAG_FREEING));
                goto out_agbp_relse;
index 626384d75c9c1186fa8036d71a870f50b8f92f23..7380fbe4a3fffd68e382ccd31c149a3cfd0880cb 100644 (file)
@@ -84,18 +84,6 @@ typedef struct xfs_alloc_arg {
 #define XFS_ALLOC_INITIAL_USER_DATA    (1 << 1)/* special case start of file */
 #define XFS_ALLOC_NOBUSY               (1 << 2)/* Busy extents not allowed */
 
-static inline bool
-xfs_alloc_is_userdata(int datatype)
-{
-       return (datatype & ~XFS_ALLOC_NOBUSY) != 0;
-}
-
-static inline bool
-xfs_alloc_allow_busy_reuse(int datatype)
-{
-       return (datatype & XFS_ALLOC_NOBUSY) == 0;
-}
-
 /* freespace limit calculations */
 #define XFS_ALLOC_AGFL_RESERVE 4
 unsigned int xfs_alloc_set_aside(struct xfs_mount *mp);
index cfa2a4b8e08eb16752d7431eaed1edbb4c1907f1..d43f18afb811653f07f3cd9531c3c7f3679dd364 100644 (file)
@@ -3014,7 +3014,7 @@ xfs_bmap_adjacent(
        mp = ap->ip->i_mount;
        nullfb = ap->tp->t_firstblock == NULLFSBLOCK;
        rt = XFS_IS_REALTIME_INODE(ap->ip) &&
-               xfs_alloc_is_userdata(ap->datatype);
+               (ap->datatype & XFS_ALLOC_USERDATA);
        fb_agno = nullfb ? NULLAGNUMBER : XFS_FSB_TO_AGNO(mp,
                                                        ap->tp->t_firstblock);
        /*
@@ -3367,7 +3367,7 @@ xfs_bmap_btalloc(
 
        if (ap->flags & XFS_BMAPI_COWFORK)
                align = xfs_get_cowextsz_hint(ap->ip);
-       else if (xfs_alloc_is_userdata(ap->datatype))
+       else if (ap->datatype & XFS_ALLOC_USERDATA)
                align = xfs_get_extsz_hint(ap->ip);
        if (align) {
                error = xfs_bmap_extsize_align(mp, &ap->got, &ap->prev,
@@ -3382,7 +3382,7 @@ xfs_bmap_btalloc(
        fb_agno = nullfb ? NULLAGNUMBER : XFS_FSB_TO_AGNO(mp,
                                                        ap->tp->t_firstblock);
        if (nullfb) {
-               if (xfs_alloc_is_userdata(ap->datatype) &&
+               if ((ap->datatype & XFS_ALLOC_USERDATA) &&
                    xfs_inode_is_filestream(ap->ip)) {
                        ag = xfs_filestream_lookup_ag(ap->ip);
                        ag = (ag != NULLAGNUMBER) ? ag : 0;
@@ -3422,7 +3422,7 @@ xfs_bmap_btalloc(
                 * enough for the request.  If one isn't found, then adjust
                 * the minimum allocation size to the largest space found.
                 */
-               if (xfs_alloc_is_userdata(ap->datatype) &&
+               if ((ap->datatype & XFS_ALLOC_USERDATA) &&
                    xfs_inode_is_filestream(ap->ip))
                        error = xfs_bmap_btalloc_filestreams(ap, &args, &blen);
                else
@@ -3965,10 +3965,9 @@ xfs_bmap_alloc_userdata(
         */
        bma->datatype = XFS_ALLOC_NOBUSY;
        if (whichfork == XFS_DATA_FORK) {
+               bma->datatype |= XFS_ALLOC_USERDATA;
                if (bma->offset == 0)
                        bma->datatype |= XFS_ALLOC_INITIAL_USER_DATA;
-               else
-                       bma->datatype |= XFS_ALLOC_USERDATA;
 
                if (mp->m_dalign && bma->length >= mp->m_dalign) {
                        error = xfs_bmap_isaeof(bma, whichfork);