From: Mark Tinguely <tinguely@sgi.com>
To: Jeff Liu <jeff.liu@oracle.com>
Cc: "xfs@oss.sgi.com" <xfs@oss.sgi.com>
Subject: Re: [PATCH 6/10] xfs: introduce xfs_bulkstat_ichunk_ra
Date: Mon, 30 Dec 2013 10:57:27 -0600 [thread overview]
Message-ID: <52C1A5F7.2040604@sgi.com> (raw)
In-Reply-To: <52BEB459.7020202@oracle.com>
On 12/28/13 05:22, Jeff Liu wrote:
> From: Jie Liu<jeff.liu@oracle.com>
>
> Introduce xfs_bulkstat_ichunk_ra() to loop over all clusters in
> the next inode chunk, then performs readahead if there are any
> allocated inodes in that cluster.
>
> Refactor xfs_bulkstat() with it.
>
> Signed-off-by: Jie Liu<jeff.liu@oracle.com>
> ---
Had some problems applying this patch.
...
> +STATIC void
> +xfs_bulkstat_ichunk_ra(
> + struct xfs_mount *mp,
> + xfs_agnumber_t agno,
> + struct xfs_inobt_rec_incore *irec)
> +{
> + xfs_agblock_t agbno;
> + struct blk_plug plug;
> + int blks_per_cluster;
> + int inodes_per_cluster;
> + int i; /* inode chunk index */
> +
> + agbno = XFS_AGINO_TO_AGBNO(mp, irec->ir_startino);
> + blks_per_cluster = xfs_icluster_size_fsb(mp);
^^^^^
does not exist.
> @@ -187,7 +218,6 @@ xfs_bulkstat(
> char __user *ubuffer, /* buffer with inode stats */
> int *done) /* 1 if there are more stats to get */
> {
> - xfs_agblock_t agbno=0;/* allocation group block number */
> xfs_buf_t *agbp; /* agi header buffer */
> xfs_agi_t *agi; /* agi header data */
> xfs_agino_t agino; /* inode # in allocation group */
> @@ -206,8 +236,6 @@ xfs_bulkstat(
> xfs_inobt_rec_incore_t *irbuf; /* start of irec buffer */
> xfs_inobt_rec_incore_t *irbufend; /* end of good irec buffer entries */
> xfs_ino_t lastino; /* last inode number returned */
> - int blks_per_cluster; /* # of blocks per cluster */
> - int inodes_per_cluster;/* # of inodes per cluster */
> int nirbuf; /* size of irbuf */
> int rval; /* return value error code */
> int tmp; /* result value from btree calls */
> @@ -236,8 +264,6 @@ xfs_bulkstat(
> *done = 0;
> fmterror = 0;
> ubufp = ubuffer;
> - blks_per_cluster = xfs_icluster_size_fsb(mp);
> - inodes_per_cluster = blks_per_cluster<< mp->m_sb.sb_inopblog;
> irbuf = kmem_zalloc_greedy(&irbsize, PAGE_SIZE, PAGE_SIZE * 4);
> if (!irbuf)
> return ENOMEM;
> @@ -345,25 +371,7 @@ xfs_bulkstat(
> * Also start read-ahead now for this chunk.
> */
> if (r.ir_freecount< XFS_INODES_PER_CHUNK) {
> - struct blk_plug plug;
> - /*
> - * Loop over all clusters in the next chunk.
> - * Do a readahead if there are any allocated
> - * inodes in that cluster.
> - */
> - blk_start_plug(&plug);
> - agbno = XFS_AGINO_TO_AGBNO(mp, r.ir_startino);
> - for (chunkidx = 0;
> - chunkidx< XFS_INODES_PER_CHUNK;
> - chunkidx += inodes_per_cluster,
> - agbno += blks_per_cluster) {
> - if (xfs_inobt_maskn(chunkidx,
> - inodes_per_cluster)& ~r.ir_free)
> - xfs_btree_reada_bufs(mp, agno,
> - agbno, blks_per_cluster,
> - &xfs_inode_buf_ops);
> - }
> - blk_finish_plug(&plug);
> + xfs_bulkstat_ichunk_ra(mp, agno,&r);
> irbp->ir_startino = r.ir_startino;
> irbp->ir_freecount = r.ir_freecount;
> irbp->ir_free = r.ir_free;
last 3 chunks failed to apply because the sources have
nbcluster/nicluster (and nimask) instead of
blks_per_cluster/inodes_per_cluster.
--Mark.
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2013-12-30 16:57 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-28 11:22 [PATCH 6/10] xfs: introduce xfs_bulkstat_ichunk_ra Jeff Liu
2013-12-30 16:57 ` Mark Tinguely [this message]
2013-12-31 9:46 ` Jeff Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=52C1A5F7.2040604@sgi.com \
--to=tinguely@sgi.com \
--cc=jeff.liu@oracle.com \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.