All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: Christoph Hellwig <hch@lst.de>
Cc: linux-xfs@vger.kernel.org, david@fromorbit.com,
	Dave Chinner <dchinner@redhat.com>,
	Brian Foster <bfoster@redhat.com>
Subject: Re: [PATCH 2/8] xfs: re-order initial space accounting checks in xlog_write
Date: Tue, 24 Mar 2020 13:39:26 -0700	[thread overview]
Message-ID: <20200324203926.GI29339@magnolia> (raw)
In-Reply-To: <20200324174459.770999-3-hch@lst.de>

On Tue, Mar 24, 2020 at 06:44:53PM +0100, Christoph Hellwig wrote:
> From: Dave Chinner <dchinner@redhat.com>
> 
> Commit and unmount records records do not need start records to be
> written, so rearrange the logic in xlog_write() to remove the need
> to check for XLOG_TIC_INITED to determine if we should account for
> the space used by a start record.
> 
> Signed-off-by: Dave Chinner <dchinner@redhat.com>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> Reviewed-by: Brian Foster <bfoster@redhat.com>

Looks pretty straightforward,
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>

--D

> ---
>  fs/xfs/xfs_log.c | 38 ++++++++++++--------------------------
>  1 file changed, 12 insertions(+), 26 deletions(-)
> 
> diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c
> index bf071552094a..116f59b16b04 100644
> --- a/fs/xfs/xfs_log.c
> +++ b/fs/xfs/xfs_log.c
> @@ -2349,39 +2349,27 @@ xlog_write(
>  	uint			flags)
>  {
>  	struct xlog_in_core	*iclog = NULL;
> -	struct xfs_log_iovec	*vecp;
> -	struct xfs_log_vec	*lv;
> +	struct xfs_log_vec	*lv = log_vector;
> +	struct xfs_log_iovec	*vecp = lv->lv_iovecp;
> +	int			index = 0;
>  	int			len;
> -	int			index;
>  	int			partial_copy = 0;
>  	int			partial_copy_len = 0;
>  	int			contwr = 0;
>  	int			record_cnt = 0;
>  	int			data_cnt = 0;
>  	int			error = 0;
> -	bool			need_start_rec = true;
> -
> -	*start_lsn = 0;
> -
> +	bool			need_start_rec;
>  
>  	/*
> -	 * Region headers and bytes are already accounted for.
> -	 * We only need to take into account start records and
> -	 * split regions in this function.
> +	 * If this is a commit or unmount transaction, we don't need a start
> +	 * record to be written. We do, however, have to account for the
> +	 * commit or unmount header that gets written. Hence we always have
> +	 * to account for an extra xlog_op_header here.
>  	 */
> -	if (ticket->t_flags & XLOG_TIC_INITED) {
> -		ticket->t_curr_res -= sizeof(struct xlog_op_header);
> +	ticket->t_curr_res -= sizeof(struct xlog_op_header);
> +	if (ticket->t_flags & XLOG_TIC_INITED)
>  		ticket->t_flags &= ~XLOG_TIC_INITED;
> -	}
> -
> -	/*
> -	 * Commit record headers need to be accounted for. These
> -	 * come in as separate writes so are easy to detect.
> -	 */
> -	if (flags & (XLOG_COMMIT_TRANS | XLOG_UNMOUNT_TRANS)) {
> -		ticket->t_curr_res -= sizeof(struct xlog_op_header);
> -		need_start_rec = false;
> -	}
>  
>  	if (ticket->t_curr_res < 0) {
>  		xfs_alert_tag(log->l_mp, XFS_PTAG_LOGRES,
> @@ -2390,11 +2378,9 @@ xlog_write(
>  		xfs_force_shutdown(log->l_mp, SHUTDOWN_LOG_IO_ERROR);
>  	}
>  
> +	need_start_rec = !(flags & (XLOG_COMMIT_TRANS | XLOG_UNMOUNT_TRANS));
>  	len = xlog_write_calc_vec_length(ticket, log_vector, need_start_rec);
> -
> -	index = 0;
> -	lv = log_vector;
> -	vecp = lv->lv_iovecp;
> +	*start_lsn = 0;
>  	while (lv && (!lv->lv_niovecs || index < lv->lv_niovecs)) {
>  		void		*ptr;
>  		int		log_offset;
> -- 
> 2.25.1
> 

  reply	other threads:[~2020-03-24 20:39 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-24 17:44 xfs: clean up log tickets and record writes v3 Christoph Hellwig
2020-03-24 17:44 ` [PATCH 1/8] xfs: don't try to write a start record into every iclog Christoph Hellwig
2020-03-24 20:39   ` Darrick J. Wong
2020-03-25 12:33   ` Brian Foster
2020-03-25 23:25     ` Dave Chinner
2020-03-26 11:08       ` Brian Foster
2020-03-26 15:41         ` Darrick J. Wong
2020-03-24 17:44 ` [PATCH 2/8] xfs: re-order initial space accounting checks in xlog_write Christoph Hellwig
2020-03-24 20:39   ` Darrick J. Wong [this message]
2020-03-24 17:44 ` [PATCH 3/8] xfs: refactor and split xfs_log_done() Christoph Hellwig
2020-03-24 20:39   ` Darrick J. Wong
2020-03-25 12:33   ` Brian Foster
2020-03-24 17:44 ` [PATCH 4/8] xfs: kill XLOG_TIC_INITED Christoph Hellwig
2020-03-24 20:40   ` Darrick J. Wong
2020-03-24 17:44 ` [PATCH 5/8] xfs: split xlog_ticket_done Christoph Hellwig
2020-03-24 20:41   ` Darrick J. Wong
2020-03-25 12:34   ` Brian Foster
2020-03-24 17:44 ` [PATCH 6/8] xfs: merge xlog_commit_record with xlog_write_done() Christoph Hellwig
2020-03-24 20:41   ` Darrick J. Wong
2020-03-24 17:44 ` [PATCH 7/8] xfs: refactor unmount record writing Christoph Hellwig
2020-03-24 20:41   ` Darrick J. Wong
2020-03-24 17:44 ` [PATCH 8/8] xfs: remove some stale comments from the log code Christoph Hellwig
2020-03-24 20:42   ` Darrick J. Wong
  -- strict thread matches above, loose matches on Subject: below --
2020-03-25 18:42 xfs: clean up log tickets and record writes v4 Christoph Hellwig
2020-03-25 18:42 ` [PATCH 2/8] xfs: re-order initial space accounting checks in xlog_write Christoph Hellwig

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=20200324203926.GI29339@magnolia \
    --to=darrick.wong@oracle.com \
    --cc=bfoster@redhat.com \
    --cc=david@fromorbit.com \
    --cc=dchinner@redhat.com \
    --cc=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 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.