[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20100715181228.GC14554@infradead.org>
Date: Thu, 15 Jul 2010 14:12:28 -0400
From: Christoph Hellwig <hch@...radead.org>
To: Dave Chinner <david@...morbit.com>
Cc: xfs@....sgi.com, linux-kernel@...r.kernel.org,
linux-fsdevel@...r.kernel.org, linux-mm@...ck.org
Subject: Re: [PATCH 3/3] xfs: track AGs with reclaimable inodes in per-ag
radix tree
> + */
> +static struct xfs_perag *
> +xfs_inode_ag_iter_next_pag(
> + struct xfs_mount *mp,
> + xfs_agnumber_t *first,
> + int tag)
> +{
> + struct xfs_perag *pag = NULL;
> +
> + if (tag == XFS_ICI_RECLAIM_TAG) {
> + int found;
> + int ref;
> +
> + spin_lock(&mp->m_perag_lock);
> + found = radix_tree_gang_lookup_tag(&mp->m_perag_tree,
> + (void **)&pag, *first, 1, tag);
> + if (found <= 0) {
> + spin_unlock(&mp->m_perag_lock);
> + return NULL;
> + }
> + *first = pag->pag_agno + 1;
> + /* open coded pag reference increment */
> + ref = atomic_inc_return(&pag->pag_ref);
> + spin_unlock(&mp->m_perag_lock);
> + trace_xfs_perag_get_reclaim(mp, pag->pag_agno, ref, _RET_IP_);
> + } else {
> + pag = xfs_perag_get(mp, *first);
> + (*first)++;
> + }
I wonder if we should just split the AG iterator for inode reclaim vs
the rest. We now have this difference in addition to taking the per-AG
lock exclusive instead of shared.
Anyway, the patch looks good for now,
Reviewed-by: Christoph Hellwig <hch@....de>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists