OSDN Git Service

xfs: remove xfs_inode_ag_iterator_flags
authorDarrick J. Wong <darrick.wong@oracle.com>
Thu, 21 May 2020 20:08:47 +0000 (13:08 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Wed, 27 May 2020 15:49:26 +0000 (08:49 -0700)
Combine xfs_inode_ag_iterator_flags and xfs_inode_ag_iterator_tag into a
single wrapper function since there's only one caller of the _flags
variant.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
fs/xfs/xfs_icache.c
fs/xfs/xfs_icache.h
fs/xfs/xfs_qm_syscalls.c

index 89c935b..77dfbcf 100644 (file)
@@ -976,38 +976,22 @@ xfs_cowblocks_worker(
        xfs_queue_cowblocks(mp);
 }
 
-int
-xfs_inode_ag_iterator_flags(
+/* Fetch the next (possibly tagged) per-AG structure. */
+static inline struct xfs_perag *
+xfs_inode_walk_get_perag(
        struct xfs_mount        *mp,
-       int                     (*execute)(struct xfs_inode *ip, int flags,
-                                          void *args),
-       int                     flags,
-       void                    *args,
-       int                     iter_flags)
+       xfs_agnumber_t          agno,
+       int                     tag)
 {
-       struct xfs_perag        *pag;
-       int                     error = 0;
-       int                     last_error = 0;
-       xfs_agnumber_t          ag;
-
-       ag = 0;
-       while ((pag = xfs_perag_get(mp, ag))) {
-               ag = pag->pag_agno + 1;
-               error = xfs_inode_ag_walk(mp, pag, execute, flags, args,
-                               XFS_ICI_NO_TAG, iter_flags);
-               xfs_perag_put(pag);
-               if (error) {
-                       last_error = error;
-                       if (error == -EFSCORRUPTED)
-                               break;
-               }
-       }
-       return last_error;
+       if (tag == XFS_ICI_NO_TAG)
+               return xfs_perag_get(mp, agno);
+       return xfs_perag_get_tag(mp, agno, tag);
 }
 
 int
-xfs_inode_ag_iterator_tag(
+xfs_inode_ag_iterator(
        struct xfs_mount        *mp,
+       int                     iter_flags,
        int                     (*execute)(struct xfs_inode *ip, int flags,
                                           void *args),
        int                     flags,
@@ -1020,10 +1004,10 @@ xfs_inode_ag_iterator_tag(
        xfs_agnumber_t          ag;
 
        ag = 0;
-       while ((pag = xfs_perag_get_tag(mp, ag, tag))) {
+       while ((pag = xfs_inode_walk_get_perag(mp, ag, tag))) {
                ag = pag->pag_agno + 1;
                error = xfs_inode_ag_walk(mp, pag, execute, flags, args, tag,
-                                         0);
+                               iter_flags);
                xfs_perag_put(pag);
                if (error) {
                        last_error = error;
@@ -1543,8 +1527,7 @@ __xfs_icache_free_eofblocks(
        if (eofb && (eofb->eof_flags & XFS_EOF_FLAGS_SYNC))
                flags = SYNC_WAIT;
 
-       return xfs_inode_ag_iterator_tag(mp, execute, flags,
-                                        eofb, tag);
+       return xfs_inode_ag_iterator(mp, 0, execute, flags, eofb, tag);
 }
 
 int
index 0556fa3..2d5ab99 100644 (file)
@@ -71,10 +71,7 @@ int xfs_inode_free_quota_cowblocks(struct xfs_inode *ip);
 void xfs_cowblocks_worker(struct work_struct *);
 void xfs_queue_cowblocks(struct xfs_mount *);
 
-int xfs_inode_ag_iterator_flags(struct xfs_mount *mp,
-       int (*execute)(struct xfs_inode *ip, int flags, void *args),
-       int flags, void *args, int iter_flags);
-int xfs_inode_ag_iterator_tag(struct xfs_mount *mp,
+int xfs_inode_ag_iterator(struct xfs_mount *mp, int iter_flags,
        int (*execute)(struct xfs_inode *ip, int flags, void *args),
        int flags, void *args, int tag);
 
index 362ccec..6bcfc8f 100644 (file)
@@ -780,6 +780,6 @@ xfs_qm_dqrele_all_inodes(
        uint             flags)
 {
        ASSERT(mp->m_quotainfo);
-       xfs_inode_ag_iterator_flags(mp, xfs_dqrele_inode, flags, NULL,
-                                   XFS_AGITER_INEW_WAIT);
+       xfs_inode_ag_iterator(mp, XFS_AGITER_INEW_WAIT, xfs_dqrele_inode,
+                       flags, NULL, XFS_ICI_NO_TAG);
 }