public inbox for linux-xfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: linux-xfs@vger.kernel.org
Subject: [PATCH 09/20] xfs: factor out iclog size calculation from xlog_sync
Date: Mon,  3 Jun 2019 19:29:34 +0200	[thread overview]
Message-ID: <20190603172945.13819-10-hch@lst.de> (raw)
In-Reply-To: <20190603172945.13819-1-hch@lst.de>

Split out another self-contained bit of code from xlog_sync.

Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 fs/xfs/xfs_log.c | 67 +++++++++++++++++++++++++++++-------------------
 1 file changed, 41 insertions(+), 26 deletions(-)

diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c
index 0d8805c9570a..02e9ab3af5ee 100644
--- a/fs/xfs/xfs_log.c
+++ b/fs/xfs/xfs_log.c
@@ -1830,6 +1830,39 @@ xlog_split_iclog(
 	return split_offset;
 }
 
+static int
+xlog_calc_iclog_size(
+	struct xlog		*log,
+	struct xlog_in_core	*iclog,
+	uint32_t		*roundoff)
+{
+	uint32_t		count_init, count;
+	bool			use_lsunit;
+
+	use_lsunit = xfs_sb_version_haslogv2(&log->l_mp->m_sb) &&
+			log->l_mp->m_sb.sb_logsunit > 1;
+
+	/* Add for LR header */
+	count_init = log->l_iclog_hsize + iclog->ic_offset;
+
+	/* Round out the log write size */
+	if (use_lsunit) {
+		/* we have a v2 stripe unit to use */
+		count = XLOG_LSUNITTOB(log, XLOG_BTOLSUNIT(log, count_init));
+	} else {
+		count = BBTOB(BTOBB(count_init));
+	}
+
+	ASSERT(count >= count_init);
+	*roundoff = count - count_init;
+
+	if (use_lsunit)
+		ASSERT(*roundoff < log->l_mp->m_sb.sb_logsunit);
+	else
+		ASSERT(*roundoff < BBTOB(1));
+	return count;
+}
+
 /*
  * Flush out the in-core log (iclog) to the on-disk log in an asynchronous 
  * fashion.  Previously, we should have moved the current iclog
@@ -1858,35 +1891,17 @@ xlog_sync(
 	struct xlog		*log,
 	struct xlog_in_core	*iclog)
 {
-	uint		count;		/* byte count of bwrite */
-	uint		count_init;	/* initial count before roundup */
-	int		roundoff;       /* roundoff to BB or stripe */
-	int		v2 = xfs_sb_version_haslogv2(&log->l_mp->m_sb);
-	uint64_t	bno;
-	unsigned int	split = 0;
-	int		size;
-	bool		need_flush = true;
+	unsigned int		count;		/* byte count of bwrite */
+	unsigned int		roundoff;       /* roundoff to BB or stripe */
+	uint64_t		bno;
+	unsigned int		split = 0;
+	unsigned int		size;
+	bool			need_flush = true;
 
 	XFS_STATS_INC(log->l_mp, xs_log_writes);
 	ASSERT(atomic_read(&iclog->ic_refcnt) == 0);
 
-	/* Add for LR header */
-	count_init = log->l_iclog_hsize + iclog->ic_offset;
-
-	/* Round out the log write size */
-	if (v2 && log->l_mp->m_sb.sb_logsunit > 1) {
-		/* we have a v2 stripe unit to use */
-		count = XLOG_LSUNITTOB(log, XLOG_BTOLSUNIT(log, count_init));
-	} else {
-		count = BBTOB(BTOBB(count_init));
-	}
-	roundoff = count - count_init;
-	ASSERT(roundoff >= 0);
-	ASSERT((v2 && log->l_mp->m_sb.sb_logsunit > 1 && 
-                roundoff < log->l_mp->m_sb.sb_logsunit)
-		|| 
-		(log->l_mp->m_sb.sb_logsunit <= 1 && 
-		 roundoff < BBTOB(1)));
+	count = xlog_calc_iclog_size(log, iclog, &roundoff);
 
 	/* move grant heads by roundoff in sync */
 	xlog_grant_add_space(log, &log->l_reserve_head.grant, roundoff);
@@ -1897,7 +1912,7 @@ xlog_sync(
 
 	/* real byte length */
 	size = iclog->ic_offset;
-	if (v2)
+	if (xfs_sb_version_haslogv2(&log->l_mp->m_sb))
 		size += roundoff;
 	iclog->ic_header.h_len = cpu_to_be32(size);
 
-- 
2.20.1

  parent reply	other threads:[~2019-06-03 17:30 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-03 17:29 use bios directly in the log code v2 Christoph Hellwig
2019-06-03 17:29 ` [PATCH 01/20] xfs: remove the no-op spinlock_destroy stub Christoph Hellwig
2019-06-03 17:29 ` [PATCH 02/20] xfs: remove the never used _XBF_COMPOUND flag Christoph Hellwig
2019-06-03 17:29 ` [PATCH 03/20] xfs: renumber XBF_WRITE_FAIL Christoph Hellwig
2019-06-03 17:29 ` [PATCH 04/20] xfs: make mem_to_page available outside of xfs_buf.c Christoph Hellwig
2019-06-03 17:29 ` [PATCH 05/20] xfs: reformat xlog_get_lowest_lsn Christoph Hellwig
2019-06-03 17:29 ` [PATCH 06/20] xfs: don't use REQ_PREFLUSH for split log writes Christoph Hellwig
2019-06-04 16:12   ` Brian Foster
2019-06-04 22:45     ` Dave Chinner
2019-06-05 10:51       ` Brian Foster
2019-06-05 15:14         ` Christoph Hellwig
2019-06-05 15:47           ` Brian Foster
2019-06-03 17:29 ` [PATCH 07/20] xfs: factor out log buffer writing from xlog_sync Christoph Hellwig
2019-06-04  2:20   ` Dave Chinner
2019-06-03 17:29 ` [PATCH 08/20] xfs: factor out splitting of an iclog " Christoph Hellwig
2019-06-04  2:21   ` Dave Chinner
2019-06-03 17:29 ` Christoph Hellwig [this message]
2019-06-04  2:23   ` [PATCH 09/20] xfs: factor out iclog size calculation " Dave Chinner
2019-06-03 17:29 ` [PATCH 10/20] xfs: update both stat counters together in xlog_sync Christoph Hellwig
2019-06-03 17:29 ` [PATCH 11/20] xfs: remove the syncing argument from xlog_verify_iclog Christoph Hellwig
2019-06-03 17:29 ` [PATCH 12/20] xfs: make use of the l_targ field in struct xlog Christoph Hellwig
2019-06-03 17:29 ` [PATCH 13/20] xfs: use bios directly to write log buffers Christoph Hellwig
2019-06-04  5:54   ` Dave Chinner
2019-06-04  6:10     ` Christoph Hellwig
2019-06-03 17:29 ` [PATCH 14/20] xfs: move the log ioend workqueue to struct xlog Christoph Hellwig
2019-06-19 12:19   ` Christoph Hellwig
2019-06-19 22:51     ` Darrick J. Wong
2019-06-20  6:08       ` Christoph Hellwig
2019-06-03 17:29 ` [PATCH 15/20] xfs: return an offset instead of a pointer from xlog_align Christoph Hellwig
2019-06-03 17:29 ` [PATCH 16/20] xfs: use bios directly to read and write the log recovery buffers Christoph Hellwig
2019-06-04  6:13   ` Dave Chinner
2019-06-05 15:09     ` Christoph Hellwig
2019-06-03 17:29 ` [PATCH 17/20] xfs: stop using bp naming for " Christoph Hellwig
2019-06-04  6:19   ` Dave Chinner
2019-06-03 17:29 ` [PATCH 18/20] xfs: remove unused buffer cache APIs Christoph Hellwig
2019-06-04  6:24   ` Dave Chinner
2019-06-05 15:12     ` Christoph Hellwig
2019-06-05 21:24       ` Dave Chinner
2019-06-03 17:29 ` [PATCH 19/20] xfs: properly type the b_log_item field in struct xfs_buf Christoph Hellwig
2019-06-04  6:25   ` Dave Chinner
2019-06-03 17:29 ` [PATCH 20/20] xfs: remove the b_io_length " Christoph Hellwig
2019-06-04  6:27   ` Dave Chinner
2019-06-03 17:35 ` use bios directly in the log code v2 Darrick J. Wong
2019-06-03 17:38   ` Christoph Hellwig
2019-06-04 17:25     ` Darrick J. Wong
2019-06-04 17:54       ` Christoph Hellwig
2019-06-04 18:42         ` Brian Foster
2019-06-04 18:58           ` Christoph Hellwig
  -- strict thread matches above, loose matches on Subject: below --
2019-05-23 17:37 Christoph Hellwig
2019-05-23 17:37 ` [PATCH 09/20] xfs: factor out iclog size calculation from xlog_sync Christoph Hellwig
2019-05-23 23:25   ` Dave Chinner

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=20190603172945.13819-10-hch@lst.de \
    --to=hch@lst.de \
    --cc=linux-xfs@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox