All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Dave Chinner <david@fromorbit.com>, linux-xfs@vger.kernel.org
Cc: kbuild-all@lists.01.org, clang-built-linux@googlegroups.com
Subject: Re: [PATCH 35/39] xfs: convert log vector chain to use list heads
Date: Thu, 3 Jun 2021 18:16:41 +0800	[thread overview]
Message-ID: <202106031844.nHvax4Cf-lkp@intel.com> (raw)
In-Reply-To: <20210603052240.171998-36-david@fromorbit.com>

[-- Attachment #1: Type: text/plain, Size: 28198 bytes --]

Hi Dave,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on xfs-linux/for-next]
[also build test WARNING on linus/master v5.13-rc4 next-20210602]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Dave-Chinner/xfs-CIL-and-log-optimisations/20210603-134113
base:   https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git for-next
config: arm-randconfig-r023-20210603 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project d8e0ae9a76a62bdc6117630d59bf9967ac9bb4ea)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://github.com/0day-ci/linux/commit/b9844caa1f30dfae6f4e78de2b70126ba2898eda
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Dave-Chinner/xfs-CIL-and-log-optimisations/20210603-134113
        git checkout b9844caa1f30dfae6f4e78de2b70126ba2898eda
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> fs/xfs/xfs_log_cil.c:836:31: warning: suggest braces around initialization of subobject [-Wmissing-braces]
           struct xfs_log_vec      lvhdr = { NULL };
                                             ^~~~
                                             {   }
   include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
   #define NULL ((void *)0)
                ^~~~~~~~~~~
   fs/xfs/xfs_log_cil.c:1550:30: error: invalid operands to binary expression ('void' and 'int')
           if (xlog_cil_pcp_hpadd(cil) < 0) {
               ~~~~~~~~~~~~~~~~~~~~~~~ ^ ~
   1 warning and 1 error generated.


vim +836 fs/xfs/xfs_log_cil.c

08a813aea7434e Dave Chinner      2021-06-03   806  
71e330b593905e Dave Chinner      2010-05-21   807  /*
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   808   * Push the Committed Item List to the log.
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   809   *
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   810   * If the current sequence is the same as xc_push_seq we need to do a flush. If
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   811   * xc_push_seq is less than the current sequence, then it has already been
a44f13edf0ebb4 Dave Chinner      2010-08-24   812   * flushed and we don't need to do anything - the caller will wait for it to
a44f13edf0ebb4 Dave Chinner      2010-08-24   813   * complete if necessary.
a44f13edf0ebb4 Dave Chinner      2010-08-24   814   *
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   815   * xc_push_seq is checked unlocked against the sequence number for a match.
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   816   * Hence we can allow log forces to run racily and not issue pushes for the
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   817   * same sequence twice.  If we get a race between multiple pushes for the same
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   818   * sequence they will block on the first one and then abort, hence avoiding
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   819   * needless pushes.
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   820   */
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   821  static void
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   822  xlog_cil_push_work(
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   823  	struct work_struct	*work)
71e330b593905e Dave Chinner      2010-05-21   824  {
61691dab98fb92 Dave Chinner      2021-06-03   825  	struct xfs_cil_ctx	*ctx =
61691dab98fb92 Dave Chinner      2021-06-03   826  		container_of(work, struct xfs_cil_ctx, push_work);
61691dab98fb92 Dave Chinner      2021-06-03   827  	struct xfs_cil		*cil = ctx->cil;
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   828  	struct xlog		*log = cil->xc_log;
71e330b593905e Dave Chinner      2010-05-21   829  	struct xfs_log_vec	*lv;
71e330b593905e Dave Chinner      2010-05-21   830  	struct xfs_cil_ctx	*new_ctx;
71e330b593905e Dave Chinner      2010-05-21   831  	struct xlog_in_core	*commit_iclog;
964c4f5053f0cd Dave Chinner      2021-06-03   832  	int			num_iovecs = 0;
964c4f5053f0cd Dave Chinner      2021-06-03   833  	int			num_bytes = 0;
71e330b593905e Dave Chinner      2010-05-21   834  	int			error = 0;
81be7bf64fac48 Dave Chinner      2021-06-03   835  	struct xlog_cil_trans_hdr thdr;
71e330b593905e Dave Chinner      2010-05-21  @836  	struct xfs_log_vec	lvhdr = { NULL };
71e330b593905e Dave Chinner      2010-05-21   837  	xfs_lsn_t		commit_lsn;
4c2d542f2e7865 Dave Chinner      2012-04-23   838  	xfs_lsn_t		push_seq;
395ce53dd09e23 Dave Chinner      2021-06-03   839  	struct bio		bio;
395ce53dd09e23 Dave Chinner      2021-06-03   840  	DECLARE_COMPLETION_ONSTACK(bdev_flush);
ed3d678659f2f3 Dave Chinner      2021-06-03   841  	bool			push_commit_stable;
71e330b593905e Dave Chinner      2010-05-21   842  
61691dab98fb92 Dave Chinner      2021-06-03   843  	new_ctx = xlog_cil_ctx_alloc();
71e330b593905e Dave Chinner      2010-05-21   844  	new_ctx->ticket = xlog_cil_ticket_alloc(log);
71e330b593905e Dave Chinner      2010-05-21   845  
71e330b593905e Dave Chinner      2010-05-21   846  	down_write(&cil->xc_ctx_lock);
71e330b593905e Dave Chinner      2010-05-21   847  
4bb928cdb900d0 Dave Chinner      2013-08-12   848  	spin_lock(&cil->xc_push_lock);
4c2d542f2e7865 Dave Chinner      2012-04-23   849  	push_seq = cil->xc_push_seq;
4c2d542f2e7865 Dave Chinner      2012-04-23   850  	ASSERT(push_seq <= ctx->sequence);
ed3d678659f2f3 Dave Chinner      2021-06-03   851  	push_commit_stable = cil->xc_push_commit_stable;
ed3d678659f2f3 Dave Chinner      2021-06-03   852  	cil->xc_push_commit_stable = false;
71e330b593905e Dave Chinner      2010-05-21   853  
0e7ab7efe77451 Dave Chinner      2020-03-24   854  	/*
1ac67445c59a8e Dave Chinner      2021-06-03   855  	 * As we are about to switch to a new, empty CIL context, we no longer
1ac67445c59a8e Dave Chinner      2021-06-03   856  	 * need to throttle tasks on CIL space overruns. Wake any waiters that
1ac67445c59a8e Dave Chinner      2021-06-03   857  	 * the hard push throttle may have caught so they can start committing
1ac67445c59a8e Dave Chinner      2021-06-03   858  	 * to the new context. The ctx->xc_push_lock provides the serialisation
1ac67445c59a8e Dave Chinner      2021-06-03   859  	 * necessary for safely using the lockless waitqueue_active() check in
1ac67445c59a8e Dave Chinner      2021-06-03   860  	 * this context.
1ac67445c59a8e Dave Chinner      2021-06-03   861  	 */
1ac67445c59a8e Dave Chinner      2021-06-03   862  	if (waitqueue_active(&cil->xc_push_wait))
c7f87f3984cfa1 Dave Chinner      2020-06-16   863  		wake_up_all(&cil->xc_push_wait);
0e7ab7efe77451 Dave Chinner      2020-03-24   864  
4c2d542f2e7865 Dave Chinner      2012-04-23   865  	/*
4c2d542f2e7865 Dave Chinner      2012-04-23   866  	 * Check if we've anything to push. If there is nothing, then we don't
4c2d542f2e7865 Dave Chinner      2012-04-23   867  	 * move on to a new sequence number and so we have to be able to push
4c2d542f2e7865 Dave Chinner      2012-04-23   868  	 * this sequence again later.
4c2d542f2e7865 Dave Chinner      2012-04-23   869  	 */
b8fab3c5759918 Dave Chinner      2021-06-03   870  	if (test_bit(XLOG_CIL_EMPTY, &cil->xc_flags)) {
4c2d542f2e7865 Dave Chinner      2012-04-23   871  		cil->xc_push_seq = 0;
4bb928cdb900d0 Dave Chinner      2013-08-12   872  		spin_unlock(&cil->xc_push_lock);
a44f13edf0ebb4 Dave Chinner      2010-08-24   873  		goto out_skip;
4c2d542f2e7865 Dave Chinner      2012-04-23   874  	}
4c2d542f2e7865 Dave Chinner      2012-04-23   875  
a44f13edf0ebb4 Dave Chinner      2010-08-24   876  
cf085a1b5d2214 Joe Perches       2019-11-07   877  	/* check for a previously pushed sequence */
61691dab98fb92 Dave Chinner      2021-06-03   878  	if (push_seq < ctx->sequence) {
8af3dcd3c89aef Dave Chinner      2014-09-23   879  		spin_unlock(&cil->xc_push_lock);
df806158b0f6eb Dave Chinner      2010-05-17   880  		goto out_skip;
8af3dcd3c89aef Dave Chinner      2014-09-23   881  	}
8af3dcd3c89aef Dave Chinner      2014-09-23   882  
8af3dcd3c89aef Dave Chinner      2014-09-23   883  	/*
8af3dcd3c89aef Dave Chinner      2014-09-23   884  	 * We are now going to push this context, so add it to the committing
8af3dcd3c89aef Dave Chinner      2014-09-23   885  	 * list before we do anything else. This ensures that anyone waiting on
8af3dcd3c89aef Dave Chinner      2014-09-23   886  	 * this push can easily detect the difference between a "push in
8af3dcd3c89aef Dave Chinner      2014-09-23   887  	 * progress" and "CIL is empty, nothing to do".
8af3dcd3c89aef Dave Chinner      2014-09-23   888  	 *
8af3dcd3c89aef Dave Chinner      2014-09-23   889  	 * IOWs, a wait loop can now check for:
8af3dcd3c89aef Dave Chinner      2014-09-23   890  	 *	the current sequence not being found on the committing list;
8af3dcd3c89aef Dave Chinner      2014-09-23   891  	 *	an empty CIL; and
8af3dcd3c89aef Dave Chinner      2014-09-23   892  	 *	an unchanged sequence number
8af3dcd3c89aef Dave Chinner      2014-09-23   893  	 * to detect a push that had nothing to do and therefore does not need
8af3dcd3c89aef Dave Chinner      2014-09-23   894  	 * waiting on. If the CIL is not empty, we get put on the committing
8af3dcd3c89aef Dave Chinner      2014-09-23   895  	 * list before emptying the CIL and bumping the sequence number. Hence
8af3dcd3c89aef Dave Chinner      2014-09-23   896  	 * an empty CIL and an unchanged sequence number means we jumped out
8af3dcd3c89aef Dave Chinner      2014-09-23   897  	 * above after doing nothing.
8af3dcd3c89aef Dave Chinner      2014-09-23   898  	 *
8af3dcd3c89aef Dave Chinner      2014-09-23   899  	 * Hence the waiter will either find the commit sequence on the
8af3dcd3c89aef Dave Chinner      2014-09-23   900  	 * committing list or the sequence number will be unchanged and the CIL
8af3dcd3c89aef Dave Chinner      2014-09-23   901  	 * still dirty. In that latter case, the push has not yet started, and
8af3dcd3c89aef Dave Chinner      2014-09-23   902  	 * so the waiter will have to continue trying to check the CIL
8af3dcd3c89aef Dave Chinner      2014-09-23   903  	 * committing list until it is found. In extreme cases of delay, the
8af3dcd3c89aef Dave Chinner      2014-09-23   904  	 * sequence may fully commit between the attempts the wait makes to wait
8af3dcd3c89aef Dave Chinner      2014-09-23   905  	 * on the commit sequence.
8af3dcd3c89aef Dave Chinner      2014-09-23   906  	 */
8af3dcd3c89aef Dave Chinner      2014-09-23   907  	list_add(&ctx->committing, &cil->xc_committing);
8af3dcd3c89aef Dave Chinner      2014-09-23   908  	spin_unlock(&cil->xc_push_lock);
df806158b0f6eb Dave Chinner      2010-05-17   909  
71e330b593905e Dave Chinner      2010-05-21   910  	/*
395ce53dd09e23 Dave Chinner      2021-06-03   911  	 * The CIL is stable at this point - nothing new will be added to it
395ce53dd09e23 Dave Chinner      2021-06-03   912  	 * because we hold the flush lock exclusively. Hence we can now issue
395ce53dd09e23 Dave Chinner      2021-06-03   913  	 * a cache flush to ensure all the completed metadata in the journal we
395ce53dd09e23 Dave Chinner      2021-06-03   914  	 * are about to overwrite is on stable storage.
395ce53dd09e23 Dave Chinner      2021-06-03   915  	 */
395ce53dd09e23 Dave Chinner      2021-06-03   916  	xfs_flush_bdev_async(&bio, log->l_mp->m_ddev_targp->bt_bdev,
395ce53dd09e23 Dave Chinner      2021-06-03   917  				&bdev_flush);
395ce53dd09e23 Dave Chinner      2021-06-03   918  
4da22b91f10349 Dave Chinner      2021-06-03   919  	xlog_cil_pcp_aggregate(cil, ctx);
4da22b91f10349 Dave Chinner      2021-06-03   920  
3bf44a60c84eae Dave Chinner      2021-06-03   921  	list_sort(NULL, &ctx->log_items, xlog_cil_order_cmp);
3bf44a60c84eae Dave Chinner      2021-06-03   922  	while (!list_empty(&ctx->log_items)) {
71e330b593905e Dave Chinner      2010-05-21   923  		struct xfs_log_item	*item;
71e330b593905e Dave Chinner      2010-05-21   924  
3bf44a60c84eae Dave Chinner      2021-06-03   925  		item = list_first_entry(&ctx->log_items,
71e330b593905e Dave Chinner      2010-05-21   926  					struct xfs_log_item, li_cil);
b9844caa1f30df Dave Chinner      2021-06-03   927  		lv = item->li_lv;
71e330b593905e Dave Chinner      2010-05-21   928  		list_del_init(&item->li_cil);
08a813aea7434e Dave Chinner      2021-06-03   929  		item->li_order_id = 0;
71e330b593905e Dave Chinner      2010-05-21   930  		item->li_lv = NULL;
964c4f5053f0cd Dave Chinner      2021-06-03   931  
b9844caa1f30df Dave Chinner      2021-06-03   932  		num_iovecs += lv->lv_niovecs;
964c4f5053f0cd Dave Chinner      2021-06-03   933  		/* we don't write ordered log vectors */
964c4f5053f0cd Dave Chinner      2021-06-03   934  		if (lv->lv_buf_len != XFS_LOG_VEC_ORDERED)
964c4f5053f0cd Dave Chinner      2021-06-03   935  			num_bytes += lv->lv_bytes;
b9844caa1f30df Dave Chinner      2021-06-03   936  
b9844caa1f30df Dave Chinner      2021-06-03   937  		list_add_tail(&lv->lv_list, &ctx->lv_chain);
b9844caa1f30df Dave Chinner      2021-06-03   938  
71e330b593905e Dave Chinner      2010-05-21   939  	}
71e330b593905e Dave Chinner      2010-05-21   940  
71e330b593905e Dave Chinner      2010-05-21   941  	/*
61691dab98fb92 Dave Chinner      2021-06-03   942  	 * Switch the contexts so we can drop the context lock and move out
71e330b593905e Dave Chinner      2010-05-21   943  	 * of a shared context. We can't just go straight to the commit record,
71e330b593905e Dave Chinner      2010-05-21   944  	 * though - we need to synchronise with previous and future commits so
71e330b593905e Dave Chinner      2010-05-21   945  	 * that the commit records are correctly ordered in the log to ensure
71e330b593905e Dave Chinner      2010-05-21   946  	 * that we process items during log IO completion in the correct order.
71e330b593905e Dave Chinner      2010-05-21   947  	 *
71e330b593905e Dave Chinner      2010-05-21   948  	 * For example, if we get an EFI in one checkpoint and the EFD in the
71e330b593905e Dave Chinner      2010-05-21   949  	 * next (e.g. due to log forces), we do not want the checkpoint with
71e330b593905e Dave Chinner      2010-05-21   950  	 * the EFD to be committed before the checkpoint with the EFI.  Hence
71e330b593905e Dave Chinner      2010-05-21   951  	 * we must strictly order the commit records of the checkpoints so
71e330b593905e Dave Chinner      2010-05-21   952  	 * that: a) the checkpoint callbacks are attached to the iclogs in the
71e330b593905e Dave Chinner      2010-05-21   953  	 * correct order; and b) the checkpoints are replayed in correct order
71e330b593905e Dave Chinner      2010-05-21   954  	 * in log recovery.
71e330b593905e Dave Chinner      2010-05-21   955  	 *
71e330b593905e Dave Chinner      2010-05-21   956  	 * Hence we need to add this context to the committing context list so
71e330b593905e Dave Chinner      2010-05-21   957  	 * that higher sequences will wait for us to write out a commit record
71e330b593905e Dave Chinner      2010-05-21   958  	 * before they do.
f876e44603ad09 Dave Chinner      2014-02-27   959  	 *
015de1f284aa49 Dave Chinner      2021-06-03   960  	 * xfs_log_force_seq requires us to mirror the new sequence into the cil
f876e44603ad09 Dave Chinner      2014-02-27   961  	 * structure atomically with the addition of this sequence to the
f876e44603ad09 Dave Chinner      2014-02-27   962  	 * committing list. This also ensures that we can do unlocked checks
f876e44603ad09 Dave Chinner      2014-02-27   963  	 * against the current sequence in log forces without risking
f876e44603ad09 Dave Chinner      2014-02-27   964  	 * deferencing a freed context pointer.
71e330b593905e Dave Chinner      2010-05-21   965  	 */
4bb928cdb900d0 Dave Chinner      2013-08-12   966  	spin_lock(&cil->xc_push_lock);
61691dab98fb92 Dave Chinner      2021-06-03   967  	xlog_cil_ctx_switch(cil, new_ctx);
4bb928cdb900d0 Dave Chinner      2013-08-12   968  	spin_unlock(&cil->xc_push_lock);
71e330b593905e Dave Chinner      2010-05-21   969  	up_write(&cil->xc_ctx_lock);
71e330b593905e Dave Chinner      2010-05-21   970  
71e330b593905e Dave Chinner      2010-05-21   971  	/*
71e330b593905e Dave Chinner      2010-05-21   972  	 * Build a checkpoint transaction header and write it to the log to
71e330b593905e Dave Chinner      2010-05-21   973  	 * begin the transaction. We need to account for the space used by the
71e330b593905e Dave Chinner      2010-05-21   974  	 * transaction header here as it is not accounted for in xlog_write().
b9844caa1f30df Dave Chinner      2021-06-03   975  	 * Add the lvhdr to the head of the lv chain we pass to xlog_write() so
b9844caa1f30df Dave Chinner      2021-06-03   976  	 * it gets written into the iclog first.
71e330b593905e Dave Chinner      2010-05-21   977  	 */
81be7bf64fac48 Dave Chinner      2021-06-03   978  	xlog_cil_build_trans_hdr(ctx, &thdr, &lvhdr, num_iovecs);
964c4f5053f0cd Dave Chinner      2021-06-03   979  	num_bytes += lvhdr.lv_bytes;
b9844caa1f30df Dave Chinner      2021-06-03   980  	list_add(&lvhdr.lv_list, &ctx->lv_chain);
71e330b593905e Dave Chinner      2010-05-21   981  
395ce53dd09e23 Dave Chinner      2021-06-03   982  	/*
395ce53dd09e23 Dave Chinner      2021-06-03   983  	 * Before we format and submit the first iclog, we have to ensure that
395ce53dd09e23 Dave Chinner      2021-06-03   984  	 * the metadata writeback ordering cache flush is complete.
395ce53dd09e23 Dave Chinner      2021-06-03   985  	 */
395ce53dd09e23 Dave Chinner      2021-06-03   986  	wait_for_completion(&bdev_flush);
395ce53dd09e23 Dave Chinner      2021-06-03   987  
81be7bf64fac48 Dave Chinner      2021-06-03   988  	/*
81be7bf64fac48 Dave Chinner      2021-06-03   989  	 * The LSN we need to pass to the log items on transaction commit is the
81be7bf64fac48 Dave Chinner      2021-06-03   990  	 * LSN reported by the first log vector write, not the commit lsn. If we
81be7bf64fac48 Dave Chinner      2021-06-03   991  	 * use the commit record lsn then we can move the tail beyond the grant
81be7bf64fac48 Dave Chinner      2021-06-03   992  	 * write head.
81be7bf64fac48 Dave Chinner      2021-06-03   993  	 */
b9844caa1f30df Dave Chinner      2021-06-03   994  	error = xlog_write(log, &ctx->lv_chain, ctx->ticket, &ctx->start_lsn,
b9844caa1f30df Dave Chinner      2021-06-03   995  				NULL, num_bytes);
b9844caa1f30df Dave Chinner      2021-06-03   996  
b9844caa1f30df Dave Chinner      2021-06-03   997  	/*
b9844caa1f30df Dave Chinner      2021-06-03   998  	 * Take the lvhdr back off the lv_chain as it should not be passed
b9844caa1f30df Dave Chinner      2021-06-03   999  	 * to log IO completion.
b9844caa1f30df Dave Chinner      2021-06-03  1000  	 */
b9844caa1f30df Dave Chinner      2021-06-03  1001  	list_del(&lvhdr.lv_list);
71e330b593905e Dave Chinner      2010-05-21  1002  	if (error)
7db37c5e6575b2 Dave Chinner      2011-01-27  1003  		goto out_abort_free_ticket;
71e330b593905e Dave Chinner      2010-05-21  1004  
71e330b593905e Dave Chinner      2010-05-21  1005  	/*
71e330b593905e Dave Chinner      2010-05-21  1006  	 * now that we've written the checkpoint into the log, strictly
71e330b593905e Dave Chinner      2010-05-21  1007  	 * order the commit records so replay will get them in the right order.
71e330b593905e Dave Chinner      2010-05-21  1008  	 */
71e330b593905e Dave Chinner      2010-05-21  1009  restart:
4bb928cdb900d0 Dave Chinner      2013-08-12  1010  	spin_lock(&cil->xc_push_lock);
71e330b593905e Dave Chinner      2010-05-21  1011  	list_for_each_entry(new_ctx, &cil->xc_committing, committing) {
ac983517ec5941 Dave Chinner      2014-05-07  1012  		/*
ac983517ec5941 Dave Chinner      2014-05-07  1013  		 * Avoid getting stuck in this loop because we were woken by the
ac983517ec5941 Dave Chinner      2014-05-07  1014  		 * shutdown, but then went back to sleep once already in the
ac983517ec5941 Dave Chinner      2014-05-07  1015  		 * shutdown state.
ac983517ec5941 Dave Chinner      2014-05-07  1016  		 */
ac983517ec5941 Dave Chinner      2014-05-07  1017  		if (XLOG_FORCED_SHUTDOWN(log)) {
ac983517ec5941 Dave Chinner      2014-05-07  1018  			spin_unlock(&cil->xc_push_lock);
ac983517ec5941 Dave Chinner      2014-05-07  1019  			goto out_abort_free_ticket;
ac983517ec5941 Dave Chinner      2014-05-07  1020  		}
ac983517ec5941 Dave Chinner      2014-05-07  1021  
71e330b593905e Dave Chinner      2010-05-21  1022  		/*
71e330b593905e Dave Chinner      2010-05-21  1023  		 * Higher sequences will wait for this one so skip them.
ac983517ec5941 Dave Chinner      2014-05-07  1024  		 * Don't wait for our own sequence, either.
71e330b593905e Dave Chinner      2010-05-21  1025  		 */
71e330b593905e Dave Chinner      2010-05-21  1026  		if (new_ctx->sequence >= ctx->sequence)
71e330b593905e Dave Chinner      2010-05-21  1027  			continue;
71e330b593905e Dave Chinner      2010-05-21  1028  		if (!new_ctx->commit_lsn) {
71e330b593905e Dave Chinner      2010-05-21  1029  			/*
71e330b593905e Dave Chinner      2010-05-21  1030  			 * It is still being pushed! Wait for the push to
71e330b593905e Dave Chinner      2010-05-21  1031  			 * complete, then start again from the beginning.
71e330b593905e Dave Chinner      2010-05-21  1032  			 */
4bb928cdb900d0 Dave Chinner      2013-08-12  1033  			xlog_wait(&cil->xc_commit_wait, &cil->xc_push_lock);
71e330b593905e Dave Chinner      2010-05-21  1034  			goto restart;
71e330b593905e Dave Chinner      2010-05-21  1035  		}
71e330b593905e Dave Chinner      2010-05-21  1036  	}
4bb928cdb900d0 Dave Chinner      2013-08-12  1037  	spin_unlock(&cil->xc_push_lock);
71e330b593905e Dave Chinner      2010-05-21  1038  
81be7bf64fac48 Dave Chinner      2021-06-03  1039  	error = xlog_commit_record(log, ctx->ticket, &commit_iclog, &commit_lsn);
dd401770b0ff68 Dave Chinner      2020-03-25  1040  	if (error)
dd401770b0ff68 Dave Chinner      2020-03-25  1041  		goto out_abort_free_ticket;
dd401770b0ff68 Dave Chinner      2020-03-25  1042  
81be7bf64fac48 Dave Chinner      2021-06-03  1043  	xfs_log_ticket_ungrant(log, ctx->ticket);
71e330b593905e Dave Chinner      2010-05-21  1044  
89ae379d564c5d Christoph Hellwig 2019-06-28  1045  	spin_lock(&commit_iclog->ic_callback_lock);
1858bb0bec612d Christoph Hellwig 2019-10-14  1046  	if (commit_iclog->ic_state == XLOG_STATE_IOERROR) {
89ae379d564c5d Christoph Hellwig 2019-06-28  1047  		spin_unlock(&commit_iclog->ic_callback_lock);
71e330b593905e Dave Chinner      2010-05-21  1048  		goto out_abort;
89ae379d564c5d Christoph Hellwig 2019-06-28  1049  	}
89ae379d564c5d Christoph Hellwig 2019-06-28  1050  	ASSERT_ALWAYS(commit_iclog->ic_state == XLOG_STATE_ACTIVE ||
89ae379d564c5d Christoph Hellwig 2019-06-28  1051  		      commit_iclog->ic_state == XLOG_STATE_WANT_SYNC);
89ae379d564c5d Christoph Hellwig 2019-06-28  1052  	list_add_tail(&ctx->iclog_entry, &commit_iclog->ic_callbacks);
89ae379d564c5d Christoph Hellwig 2019-06-28  1053  	spin_unlock(&commit_iclog->ic_callback_lock);
71e330b593905e Dave Chinner      2010-05-21  1054  
71e330b593905e Dave Chinner      2010-05-21  1055  	/*
71e330b593905e Dave Chinner      2010-05-21  1056  	 * now the checkpoint commit is complete and we've attached the
71e330b593905e Dave Chinner      2010-05-21  1057  	 * callbacks to the iclog we can assign the commit LSN to the context
71e330b593905e Dave Chinner      2010-05-21  1058  	 * and wake up anyone who is waiting for the commit to complete.
71e330b593905e Dave Chinner      2010-05-21  1059  	 */
4bb928cdb900d0 Dave Chinner      2013-08-12  1060  	spin_lock(&cil->xc_push_lock);
71e330b593905e Dave Chinner      2010-05-21  1061  	ctx->commit_lsn = commit_lsn;
eb40a87500ac2f Dave Chinner      2010-12-21  1062  	wake_up_all(&cil->xc_commit_wait);
4bb928cdb900d0 Dave Chinner      2013-08-12  1063  	spin_unlock(&cil->xc_push_lock);
71e330b593905e Dave Chinner      2010-05-21  1064  
bde964f7e822cc Dave Chinner      2021-06-03  1065  	/*
bde964f7e822cc Dave Chinner      2021-06-03  1066  	 * If the checkpoint spans multiple iclogs, wait for all previous
80d287de7b49ed Dave Chinner      2021-06-03  1067  	 * iclogs to complete before we submit the commit_iclog. In this case,
80d287de7b49ed Dave Chinner      2021-06-03  1068  	 * the commit_iclog write needs to issue a pre-flush so that the
80d287de7b49ed Dave Chinner      2021-06-03  1069  	 * ordering is correctly preserved down to stable storage.
bde964f7e822cc Dave Chinner      2021-06-03  1070  	 */
bde964f7e822cc Dave Chinner      2021-06-03  1071  	spin_lock(&log->l_icloglock);
80d287de7b49ed Dave Chinner      2021-06-03  1072  	if (ctx->start_lsn != commit_lsn) {
bde964f7e822cc Dave Chinner      2021-06-03  1073  		xlog_wait_on_iclog(commit_iclog->ic_prev);
80d287de7b49ed Dave Chinner      2021-06-03  1074  		spin_lock(&log->l_icloglock);
80d287de7b49ed Dave Chinner      2021-06-03  1075  		commit_iclog->ic_flags |= XLOG_ICL_NEED_FLUSH;
bde964f7e822cc Dave Chinner      2021-06-03  1076  	}
bde964f7e822cc Dave Chinner      2021-06-03  1077  
80d287de7b49ed Dave Chinner      2021-06-03  1078  	/*
80d287de7b49ed Dave Chinner      2021-06-03  1079  	 * The commit iclog must be written to stable storage to guarantee
80d287de7b49ed Dave Chinner      2021-06-03  1080  	 * journal IO vs metadata writeback IO is correctly ordered on stable
80d287de7b49ed Dave Chinner      2021-06-03  1081  	 * storage.
ed3d678659f2f3 Dave Chinner      2021-06-03  1082  	 *
ed3d678659f2f3 Dave Chinner      2021-06-03  1083  	 * If the push caller needs the commit to be immediately stable and the
ed3d678659f2f3 Dave Chinner      2021-06-03  1084  	 * commit_iclog is not yet marked as XLOG_STATE_WANT_SYNC to indicate it
ed3d678659f2f3 Dave Chinner      2021-06-03  1085  	 * will be written when released, switch it's state to WANT_SYNC right
ed3d678659f2f3 Dave Chinner      2021-06-03  1086  	 * now.
80d287de7b49ed Dave Chinner      2021-06-03  1087  	 */
80d287de7b49ed Dave Chinner      2021-06-03  1088  	commit_iclog->ic_flags |= XLOG_ICL_NEED_FUA;
ed3d678659f2f3 Dave Chinner      2021-06-03  1089  	if (push_commit_stable && commit_iclog->ic_state == XLOG_STATE_ACTIVE)
ed3d678659f2f3 Dave Chinner      2021-06-03  1090  		xlog_state_switch_iclogs(log, commit_iclog, 0);
80d287de7b49ed Dave Chinner      2021-06-03  1091  	xlog_state_release_iclog(log, commit_iclog);
80d287de7b49ed Dave Chinner      2021-06-03  1092  	spin_unlock(&log->l_icloglock);
c7cc296ddd1f6d Christoph Hellwig 2020-03-20  1093  	return;
71e330b593905e Dave Chinner      2010-05-21  1094  
71e330b593905e Dave Chinner      2010-05-21  1095  out_skip:
71e330b593905e Dave Chinner      2010-05-21  1096  	up_write(&cil->xc_ctx_lock);
71e330b593905e Dave Chinner      2010-05-21  1097  	xfs_log_ticket_put(new_ctx->ticket);
71e330b593905e Dave Chinner      2010-05-21  1098  	kmem_free(new_ctx);
c7cc296ddd1f6d Christoph Hellwig 2020-03-20  1099  	return;
71e330b593905e Dave Chinner      2010-05-21  1100  
7db37c5e6575b2 Dave Chinner      2011-01-27  1101  out_abort_free_ticket:
81be7bf64fac48 Dave Chinner      2021-06-03  1102  	xfs_log_ticket_ungrant(log, ctx->ticket);
71e330b593905e Dave Chinner      2010-05-21  1103  out_abort:
12e6a0f449d585 Christoph Hellwig 2020-03-20  1104  	ASSERT(XLOG_FORCED_SHUTDOWN(log));
12e6a0f449d585 Christoph Hellwig 2020-03-20  1105  	xlog_cil_committed(ctx);
4c2d542f2e7865 Dave Chinner      2012-04-23  1106  }
4c2d542f2e7865 Dave Chinner      2012-04-23  1107  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 31120 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 35/39] xfs: convert log vector chain to use list heads
Date: Thu, 03 Jun 2021 18:16:41 +0800	[thread overview]
Message-ID: <202106031844.nHvax4Cf-lkp@intel.com> (raw)
In-Reply-To: <20210603052240.171998-36-david@fromorbit.com>

[-- Attachment #1: Type: text/plain, Size: 28552 bytes --]

Hi Dave,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on xfs-linux/for-next]
[also build test WARNING on linus/master v5.13-rc4 next-20210602]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Dave-Chinner/xfs-CIL-and-log-optimisations/20210603-134113
base:   https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git for-next
config: arm-randconfig-r023-20210603 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project d8e0ae9a76a62bdc6117630d59bf9967ac9bb4ea)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://github.com/0day-ci/linux/commit/b9844caa1f30dfae6f4e78de2b70126ba2898eda
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Dave-Chinner/xfs-CIL-and-log-optimisations/20210603-134113
        git checkout b9844caa1f30dfae6f4e78de2b70126ba2898eda
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> fs/xfs/xfs_log_cil.c:836:31: warning: suggest braces around initialization of subobject [-Wmissing-braces]
           struct xfs_log_vec      lvhdr = { NULL };
                                             ^~~~
                                             {   }
   include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
   #define NULL ((void *)0)
                ^~~~~~~~~~~
   fs/xfs/xfs_log_cil.c:1550:30: error: invalid operands to binary expression ('void' and 'int')
           if (xlog_cil_pcp_hpadd(cil) < 0) {
               ~~~~~~~~~~~~~~~~~~~~~~~ ^ ~
   1 warning and 1 error generated.


vim +836 fs/xfs/xfs_log_cil.c

08a813aea7434e Dave Chinner      2021-06-03   806  
71e330b593905e Dave Chinner      2010-05-21   807  /*
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   808   * Push the Committed Item List to the log.
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   809   *
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   810   * If the current sequence is the same as xc_push_seq we need to do a flush. If
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   811   * xc_push_seq is less than the current sequence, then it has already been
a44f13edf0ebb4 Dave Chinner      2010-08-24   812   * flushed and we don't need to do anything - the caller will wait for it to
a44f13edf0ebb4 Dave Chinner      2010-08-24   813   * complete if necessary.
a44f13edf0ebb4 Dave Chinner      2010-08-24   814   *
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   815   * xc_push_seq is checked unlocked against the sequence number for a match.
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   816   * Hence we can allow log forces to run racily and not issue pushes for the
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   817   * same sequence twice.  If we get a race between multiple pushes for the same
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   818   * sequence they will block on the first one and then abort, hence avoiding
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   819   * needless pushes.
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   820   */
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   821  static void
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   822  xlog_cil_push_work(
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   823  	struct work_struct	*work)
71e330b593905e Dave Chinner      2010-05-21   824  {
61691dab98fb92 Dave Chinner      2021-06-03   825  	struct xfs_cil_ctx	*ctx =
61691dab98fb92 Dave Chinner      2021-06-03   826  		container_of(work, struct xfs_cil_ctx, push_work);
61691dab98fb92 Dave Chinner      2021-06-03   827  	struct xfs_cil		*cil = ctx->cil;
c7cc296ddd1f6d Christoph Hellwig 2020-03-20   828  	struct xlog		*log = cil->xc_log;
71e330b593905e Dave Chinner      2010-05-21   829  	struct xfs_log_vec	*lv;
71e330b593905e Dave Chinner      2010-05-21   830  	struct xfs_cil_ctx	*new_ctx;
71e330b593905e Dave Chinner      2010-05-21   831  	struct xlog_in_core	*commit_iclog;
964c4f5053f0cd Dave Chinner      2021-06-03   832  	int			num_iovecs = 0;
964c4f5053f0cd Dave Chinner      2021-06-03   833  	int			num_bytes = 0;
71e330b593905e Dave Chinner      2010-05-21   834  	int			error = 0;
81be7bf64fac48 Dave Chinner      2021-06-03   835  	struct xlog_cil_trans_hdr thdr;
71e330b593905e Dave Chinner      2010-05-21  @836  	struct xfs_log_vec	lvhdr = { NULL };
71e330b593905e Dave Chinner      2010-05-21   837  	xfs_lsn_t		commit_lsn;
4c2d542f2e7865 Dave Chinner      2012-04-23   838  	xfs_lsn_t		push_seq;
395ce53dd09e23 Dave Chinner      2021-06-03   839  	struct bio		bio;
395ce53dd09e23 Dave Chinner      2021-06-03   840  	DECLARE_COMPLETION_ONSTACK(bdev_flush);
ed3d678659f2f3 Dave Chinner      2021-06-03   841  	bool			push_commit_stable;
71e330b593905e Dave Chinner      2010-05-21   842  
61691dab98fb92 Dave Chinner      2021-06-03   843  	new_ctx = xlog_cil_ctx_alloc();
71e330b593905e Dave Chinner      2010-05-21   844  	new_ctx->ticket = xlog_cil_ticket_alloc(log);
71e330b593905e Dave Chinner      2010-05-21   845  
71e330b593905e Dave Chinner      2010-05-21   846  	down_write(&cil->xc_ctx_lock);
71e330b593905e Dave Chinner      2010-05-21   847  
4bb928cdb900d0 Dave Chinner      2013-08-12   848  	spin_lock(&cil->xc_push_lock);
4c2d542f2e7865 Dave Chinner      2012-04-23   849  	push_seq = cil->xc_push_seq;
4c2d542f2e7865 Dave Chinner      2012-04-23   850  	ASSERT(push_seq <= ctx->sequence);
ed3d678659f2f3 Dave Chinner      2021-06-03   851  	push_commit_stable = cil->xc_push_commit_stable;
ed3d678659f2f3 Dave Chinner      2021-06-03   852  	cil->xc_push_commit_stable = false;
71e330b593905e Dave Chinner      2010-05-21   853  
0e7ab7efe77451 Dave Chinner      2020-03-24   854  	/*
1ac67445c59a8e Dave Chinner      2021-06-03   855  	 * As we are about to switch to a new, empty CIL context, we no longer
1ac67445c59a8e Dave Chinner      2021-06-03   856  	 * need to throttle tasks on CIL space overruns. Wake any waiters that
1ac67445c59a8e Dave Chinner      2021-06-03   857  	 * the hard push throttle may have caught so they can start committing
1ac67445c59a8e Dave Chinner      2021-06-03   858  	 * to the new context. The ctx->xc_push_lock provides the serialisation
1ac67445c59a8e Dave Chinner      2021-06-03   859  	 * necessary for safely using the lockless waitqueue_active() check in
1ac67445c59a8e Dave Chinner      2021-06-03   860  	 * this context.
1ac67445c59a8e Dave Chinner      2021-06-03   861  	 */
1ac67445c59a8e Dave Chinner      2021-06-03   862  	if (waitqueue_active(&cil->xc_push_wait))
c7f87f3984cfa1 Dave Chinner      2020-06-16   863  		wake_up_all(&cil->xc_push_wait);
0e7ab7efe77451 Dave Chinner      2020-03-24   864  
4c2d542f2e7865 Dave Chinner      2012-04-23   865  	/*
4c2d542f2e7865 Dave Chinner      2012-04-23   866  	 * Check if we've anything to push. If there is nothing, then we don't
4c2d542f2e7865 Dave Chinner      2012-04-23   867  	 * move on to a new sequence number and so we have to be able to push
4c2d542f2e7865 Dave Chinner      2012-04-23   868  	 * this sequence again later.
4c2d542f2e7865 Dave Chinner      2012-04-23   869  	 */
b8fab3c5759918 Dave Chinner      2021-06-03   870  	if (test_bit(XLOG_CIL_EMPTY, &cil->xc_flags)) {
4c2d542f2e7865 Dave Chinner      2012-04-23   871  		cil->xc_push_seq = 0;
4bb928cdb900d0 Dave Chinner      2013-08-12   872  		spin_unlock(&cil->xc_push_lock);
a44f13edf0ebb4 Dave Chinner      2010-08-24   873  		goto out_skip;
4c2d542f2e7865 Dave Chinner      2012-04-23   874  	}
4c2d542f2e7865 Dave Chinner      2012-04-23   875  
a44f13edf0ebb4 Dave Chinner      2010-08-24   876  
cf085a1b5d2214 Joe Perches       2019-11-07   877  	/* check for a previously pushed sequence */
61691dab98fb92 Dave Chinner      2021-06-03   878  	if (push_seq < ctx->sequence) {
8af3dcd3c89aef Dave Chinner      2014-09-23   879  		spin_unlock(&cil->xc_push_lock);
df806158b0f6eb Dave Chinner      2010-05-17   880  		goto out_skip;
8af3dcd3c89aef Dave Chinner      2014-09-23   881  	}
8af3dcd3c89aef Dave Chinner      2014-09-23   882  
8af3dcd3c89aef Dave Chinner      2014-09-23   883  	/*
8af3dcd3c89aef Dave Chinner      2014-09-23   884  	 * We are now going to push this context, so add it to the committing
8af3dcd3c89aef Dave Chinner      2014-09-23   885  	 * list before we do anything else. This ensures that anyone waiting on
8af3dcd3c89aef Dave Chinner      2014-09-23   886  	 * this push can easily detect the difference between a "push in
8af3dcd3c89aef Dave Chinner      2014-09-23   887  	 * progress" and "CIL is empty, nothing to do".
8af3dcd3c89aef Dave Chinner      2014-09-23   888  	 *
8af3dcd3c89aef Dave Chinner      2014-09-23   889  	 * IOWs, a wait loop can now check for:
8af3dcd3c89aef Dave Chinner      2014-09-23   890  	 *	the current sequence not being found on the committing list;
8af3dcd3c89aef Dave Chinner      2014-09-23   891  	 *	an empty CIL; and
8af3dcd3c89aef Dave Chinner      2014-09-23   892  	 *	an unchanged sequence number
8af3dcd3c89aef Dave Chinner      2014-09-23   893  	 * to detect a push that had nothing to do and therefore does not need
8af3dcd3c89aef Dave Chinner      2014-09-23   894  	 * waiting on. If the CIL is not empty, we get put on the committing
8af3dcd3c89aef Dave Chinner      2014-09-23   895  	 * list before emptying the CIL and bumping the sequence number. Hence
8af3dcd3c89aef Dave Chinner      2014-09-23   896  	 * an empty CIL and an unchanged sequence number means we jumped out
8af3dcd3c89aef Dave Chinner      2014-09-23   897  	 * above after doing nothing.
8af3dcd3c89aef Dave Chinner      2014-09-23   898  	 *
8af3dcd3c89aef Dave Chinner      2014-09-23   899  	 * Hence the waiter will either find the commit sequence on the
8af3dcd3c89aef Dave Chinner      2014-09-23   900  	 * committing list or the sequence number will be unchanged and the CIL
8af3dcd3c89aef Dave Chinner      2014-09-23   901  	 * still dirty. In that latter case, the push has not yet started, and
8af3dcd3c89aef Dave Chinner      2014-09-23   902  	 * so the waiter will have to continue trying to check the CIL
8af3dcd3c89aef Dave Chinner      2014-09-23   903  	 * committing list until it is found. In extreme cases of delay, the
8af3dcd3c89aef Dave Chinner      2014-09-23   904  	 * sequence may fully commit between the attempts the wait makes to wait
8af3dcd3c89aef Dave Chinner      2014-09-23   905  	 * on the commit sequence.
8af3dcd3c89aef Dave Chinner      2014-09-23   906  	 */
8af3dcd3c89aef Dave Chinner      2014-09-23   907  	list_add(&ctx->committing, &cil->xc_committing);
8af3dcd3c89aef Dave Chinner      2014-09-23   908  	spin_unlock(&cil->xc_push_lock);
df806158b0f6eb Dave Chinner      2010-05-17   909  
71e330b593905e Dave Chinner      2010-05-21   910  	/*
395ce53dd09e23 Dave Chinner      2021-06-03   911  	 * The CIL is stable at this point - nothing new will be added to it
395ce53dd09e23 Dave Chinner      2021-06-03   912  	 * because we hold the flush lock exclusively. Hence we can now issue
395ce53dd09e23 Dave Chinner      2021-06-03   913  	 * a cache flush to ensure all the completed metadata in the journal we
395ce53dd09e23 Dave Chinner      2021-06-03   914  	 * are about to overwrite is on stable storage.
395ce53dd09e23 Dave Chinner      2021-06-03   915  	 */
395ce53dd09e23 Dave Chinner      2021-06-03   916  	xfs_flush_bdev_async(&bio, log->l_mp->m_ddev_targp->bt_bdev,
395ce53dd09e23 Dave Chinner      2021-06-03   917  				&bdev_flush);
395ce53dd09e23 Dave Chinner      2021-06-03   918  
4da22b91f10349 Dave Chinner      2021-06-03   919  	xlog_cil_pcp_aggregate(cil, ctx);
4da22b91f10349 Dave Chinner      2021-06-03   920  
3bf44a60c84eae Dave Chinner      2021-06-03   921  	list_sort(NULL, &ctx->log_items, xlog_cil_order_cmp);
3bf44a60c84eae Dave Chinner      2021-06-03   922  	while (!list_empty(&ctx->log_items)) {
71e330b593905e Dave Chinner      2010-05-21   923  		struct xfs_log_item	*item;
71e330b593905e Dave Chinner      2010-05-21   924  
3bf44a60c84eae Dave Chinner      2021-06-03   925  		item = list_first_entry(&ctx->log_items,
71e330b593905e Dave Chinner      2010-05-21   926  					struct xfs_log_item, li_cil);
b9844caa1f30df Dave Chinner      2021-06-03   927  		lv = item->li_lv;
71e330b593905e Dave Chinner      2010-05-21   928  		list_del_init(&item->li_cil);
08a813aea7434e Dave Chinner      2021-06-03   929  		item->li_order_id = 0;
71e330b593905e Dave Chinner      2010-05-21   930  		item->li_lv = NULL;
964c4f5053f0cd Dave Chinner      2021-06-03   931  
b9844caa1f30df Dave Chinner      2021-06-03   932  		num_iovecs += lv->lv_niovecs;
964c4f5053f0cd Dave Chinner      2021-06-03   933  		/* we don't write ordered log vectors */
964c4f5053f0cd Dave Chinner      2021-06-03   934  		if (lv->lv_buf_len != XFS_LOG_VEC_ORDERED)
964c4f5053f0cd Dave Chinner      2021-06-03   935  			num_bytes += lv->lv_bytes;
b9844caa1f30df Dave Chinner      2021-06-03   936  
b9844caa1f30df Dave Chinner      2021-06-03   937  		list_add_tail(&lv->lv_list, &ctx->lv_chain);
b9844caa1f30df Dave Chinner      2021-06-03   938  
71e330b593905e Dave Chinner      2010-05-21   939  	}
71e330b593905e Dave Chinner      2010-05-21   940  
71e330b593905e Dave Chinner      2010-05-21   941  	/*
61691dab98fb92 Dave Chinner      2021-06-03   942  	 * Switch the contexts so we can drop the context lock and move out
71e330b593905e Dave Chinner      2010-05-21   943  	 * of a shared context. We can't just go straight to the commit record,
71e330b593905e Dave Chinner      2010-05-21   944  	 * though - we need to synchronise with previous and future commits so
71e330b593905e Dave Chinner      2010-05-21   945  	 * that the commit records are correctly ordered in the log to ensure
71e330b593905e Dave Chinner      2010-05-21   946  	 * that we process items during log IO completion in the correct order.
71e330b593905e Dave Chinner      2010-05-21   947  	 *
71e330b593905e Dave Chinner      2010-05-21   948  	 * For example, if we get an EFI in one checkpoint and the EFD in the
71e330b593905e Dave Chinner      2010-05-21   949  	 * next (e.g. due to log forces), we do not want the checkpoint with
71e330b593905e Dave Chinner      2010-05-21   950  	 * the EFD to be committed before the checkpoint with the EFI.  Hence
71e330b593905e Dave Chinner      2010-05-21   951  	 * we must strictly order the commit records of the checkpoints so
71e330b593905e Dave Chinner      2010-05-21   952  	 * that: a) the checkpoint callbacks are attached to the iclogs in the
71e330b593905e Dave Chinner      2010-05-21   953  	 * correct order; and b) the checkpoints are replayed in correct order
71e330b593905e Dave Chinner      2010-05-21   954  	 * in log recovery.
71e330b593905e Dave Chinner      2010-05-21   955  	 *
71e330b593905e Dave Chinner      2010-05-21   956  	 * Hence we need to add this context to the committing context list so
71e330b593905e Dave Chinner      2010-05-21   957  	 * that higher sequences will wait for us to write out a commit record
71e330b593905e Dave Chinner      2010-05-21   958  	 * before they do.
f876e44603ad09 Dave Chinner      2014-02-27   959  	 *
015de1f284aa49 Dave Chinner      2021-06-03   960  	 * xfs_log_force_seq requires us to mirror the new sequence into the cil
f876e44603ad09 Dave Chinner      2014-02-27   961  	 * structure atomically with the addition of this sequence to the
f876e44603ad09 Dave Chinner      2014-02-27   962  	 * committing list. This also ensures that we can do unlocked checks
f876e44603ad09 Dave Chinner      2014-02-27   963  	 * against the current sequence in log forces without risking
f876e44603ad09 Dave Chinner      2014-02-27   964  	 * deferencing a freed context pointer.
71e330b593905e Dave Chinner      2010-05-21   965  	 */
4bb928cdb900d0 Dave Chinner      2013-08-12   966  	spin_lock(&cil->xc_push_lock);
61691dab98fb92 Dave Chinner      2021-06-03   967  	xlog_cil_ctx_switch(cil, new_ctx);
4bb928cdb900d0 Dave Chinner      2013-08-12   968  	spin_unlock(&cil->xc_push_lock);
71e330b593905e Dave Chinner      2010-05-21   969  	up_write(&cil->xc_ctx_lock);
71e330b593905e Dave Chinner      2010-05-21   970  
71e330b593905e Dave Chinner      2010-05-21   971  	/*
71e330b593905e Dave Chinner      2010-05-21   972  	 * Build a checkpoint transaction header and write it to the log to
71e330b593905e Dave Chinner      2010-05-21   973  	 * begin the transaction. We need to account for the space used by the
71e330b593905e Dave Chinner      2010-05-21   974  	 * transaction header here as it is not accounted for in xlog_write().
b9844caa1f30df Dave Chinner      2021-06-03   975  	 * Add the lvhdr to the head of the lv chain we pass to xlog_write() so
b9844caa1f30df Dave Chinner      2021-06-03   976  	 * it gets written into the iclog first.
71e330b593905e Dave Chinner      2010-05-21   977  	 */
81be7bf64fac48 Dave Chinner      2021-06-03   978  	xlog_cil_build_trans_hdr(ctx, &thdr, &lvhdr, num_iovecs);
964c4f5053f0cd Dave Chinner      2021-06-03   979  	num_bytes += lvhdr.lv_bytes;
b9844caa1f30df Dave Chinner      2021-06-03   980  	list_add(&lvhdr.lv_list, &ctx->lv_chain);
71e330b593905e Dave Chinner      2010-05-21   981  
395ce53dd09e23 Dave Chinner      2021-06-03   982  	/*
395ce53dd09e23 Dave Chinner      2021-06-03   983  	 * Before we format and submit the first iclog, we have to ensure that
395ce53dd09e23 Dave Chinner      2021-06-03   984  	 * the metadata writeback ordering cache flush is complete.
395ce53dd09e23 Dave Chinner      2021-06-03   985  	 */
395ce53dd09e23 Dave Chinner      2021-06-03   986  	wait_for_completion(&bdev_flush);
395ce53dd09e23 Dave Chinner      2021-06-03   987  
81be7bf64fac48 Dave Chinner      2021-06-03   988  	/*
81be7bf64fac48 Dave Chinner      2021-06-03   989  	 * The LSN we need to pass to the log items on transaction commit is the
81be7bf64fac48 Dave Chinner      2021-06-03   990  	 * LSN reported by the first log vector write, not the commit lsn. If we
81be7bf64fac48 Dave Chinner      2021-06-03   991  	 * use the commit record lsn then we can move the tail beyond the grant
81be7bf64fac48 Dave Chinner      2021-06-03   992  	 * write head.
81be7bf64fac48 Dave Chinner      2021-06-03   993  	 */
b9844caa1f30df Dave Chinner      2021-06-03   994  	error = xlog_write(log, &ctx->lv_chain, ctx->ticket, &ctx->start_lsn,
b9844caa1f30df Dave Chinner      2021-06-03   995  				NULL, num_bytes);
b9844caa1f30df Dave Chinner      2021-06-03   996  
b9844caa1f30df Dave Chinner      2021-06-03   997  	/*
b9844caa1f30df Dave Chinner      2021-06-03   998  	 * Take the lvhdr back off the lv_chain as it should not be passed
b9844caa1f30df Dave Chinner      2021-06-03   999  	 * to log IO completion.
b9844caa1f30df Dave Chinner      2021-06-03  1000  	 */
b9844caa1f30df Dave Chinner      2021-06-03  1001  	list_del(&lvhdr.lv_list);
71e330b593905e Dave Chinner      2010-05-21  1002  	if (error)
7db37c5e6575b2 Dave Chinner      2011-01-27  1003  		goto out_abort_free_ticket;
71e330b593905e Dave Chinner      2010-05-21  1004  
71e330b593905e Dave Chinner      2010-05-21  1005  	/*
71e330b593905e Dave Chinner      2010-05-21  1006  	 * now that we've written the checkpoint into the log, strictly
71e330b593905e Dave Chinner      2010-05-21  1007  	 * order the commit records so replay will get them in the right order.
71e330b593905e Dave Chinner      2010-05-21  1008  	 */
71e330b593905e Dave Chinner      2010-05-21  1009  restart:
4bb928cdb900d0 Dave Chinner      2013-08-12  1010  	spin_lock(&cil->xc_push_lock);
71e330b593905e Dave Chinner      2010-05-21  1011  	list_for_each_entry(new_ctx, &cil->xc_committing, committing) {
ac983517ec5941 Dave Chinner      2014-05-07  1012  		/*
ac983517ec5941 Dave Chinner      2014-05-07  1013  		 * Avoid getting stuck in this loop because we were woken by the
ac983517ec5941 Dave Chinner      2014-05-07  1014  		 * shutdown, but then went back to sleep once already in the
ac983517ec5941 Dave Chinner      2014-05-07  1015  		 * shutdown state.
ac983517ec5941 Dave Chinner      2014-05-07  1016  		 */
ac983517ec5941 Dave Chinner      2014-05-07  1017  		if (XLOG_FORCED_SHUTDOWN(log)) {
ac983517ec5941 Dave Chinner      2014-05-07  1018  			spin_unlock(&cil->xc_push_lock);
ac983517ec5941 Dave Chinner      2014-05-07  1019  			goto out_abort_free_ticket;
ac983517ec5941 Dave Chinner      2014-05-07  1020  		}
ac983517ec5941 Dave Chinner      2014-05-07  1021  
71e330b593905e Dave Chinner      2010-05-21  1022  		/*
71e330b593905e Dave Chinner      2010-05-21  1023  		 * Higher sequences will wait for this one so skip them.
ac983517ec5941 Dave Chinner      2014-05-07  1024  		 * Don't wait for our own sequence, either.
71e330b593905e Dave Chinner      2010-05-21  1025  		 */
71e330b593905e Dave Chinner      2010-05-21  1026  		if (new_ctx->sequence >= ctx->sequence)
71e330b593905e Dave Chinner      2010-05-21  1027  			continue;
71e330b593905e Dave Chinner      2010-05-21  1028  		if (!new_ctx->commit_lsn) {
71e330b593905e Dave Chinner      2010-05-21  1029  			/*
71e330b593905e Dave Chinner      2010-05-21  1030  			 * It is still being pushed! Wait for the push to
71e330b593905e Dave Chinner      2010-05-21  1031  			 * complete, then start again from the beginning.
71e330b593905e Dave Chinner      2010-05-21  1032  			 */
4bb928cdb900d0 Dave Chinner      2013-08-12  1033  			xlog_wait(&cil->xc_commit_wait, &cil->xc_push_lock);
71e330b593905e Dave Chinner      2010-05-21  1034  			goto restart;
71e330b593905e Dave Chinner      2010-05-21  1035  		}
71e330b593905e Dave Chinner      2010-05-21  1036  	}
4bb928cdb900d0 Dave Chinner      2013-08-12  1037  	spin_unlock(&cil->xc_push_lock);
71e330b593905e Dave Chinner      2010-05-21  1038  
81be7bf64fac48 Dave Chinner      2021-06-03  1039  	error = xlog_commit_record(log, ctx->ticket, &commit_iclog, &commit_lsn);
dd401770b0ff68 Dave Chinner      2020-03-25  1040  	if (error)
dd401770b0ff68 Dave Chinner      2020-03-25  1041  		goto out_abort_free_ticket;
dd401770b0ff68 Dave Chinner      2020-03-25  1042  
81be7bf64fac48 Dave Chinner      2021-06-03  1043  	xfs_log_ticket_ungrant(log, ctx->ticket);
71e330b593905e Dave Chinner      2010-05-21  1044  
89ae379d564c5d Christoph Hellwig 2019-06-28  1045  	spin_lock(&commit_iclog->ic_callback_lock);
1858bb0bec612d Christoph Hellwig 2019-10-14  1046  	if (commit_iclog->ic_state == XLOG_STATE_IOERROR) {
89ae379d564c5d Christoph Hellwig 2019-06-28  1047  		spin_unlock(&commit_iclog->ic_callback_lock);
71e330b593905e Dave Chinner      2010-05-21  1048  		goto out_abort;
89ae379d564c5d Christoph Hellwig 2019-06-28  1049  	}
89ae379d564c5d Christoph Hellwig 2019-06-28  1050  	ASSERT_ALWAYS(commit_iclog->ic_state == XLOG_STATE_ACTIVE ||
89ae379d564c5d Christoph Hellwig 2019-06-28  1051  		      commit_iclog->ic_state == XLOG_STATE_WANT_SYNC);
89ae379d564c5d Christoph Hellwig 2019-06-28  1052  	list_add_tail(&ctx->iclog_entry, &commit_iclog->ic_callbacks);
89ae379d564c5d Christoph Hellwig 2019-06-28  1053  	spin_unlock(&commit_iclog->ic_callback_lock);
71e330b593905e Dave Chinner      2010-05-21  1054  
71e330b593905e Dave Chinner      2010-05-21  1055  	/*
71e330b593905e Dave Chinner      2010-05-21  1056  	 * now the checkpoint commit is complete and we've attached the
71e330b593905e Dave Chinner      2010-05-21  1057  	 * callbacks to the iclog we can assign the commit LSN to the context
71e330b593905e Dave Chinner      2010-05-21  1058  	 * and wake up anyone who is waiting for the commit to complete.
71e330b593905e Dave Chinner      2010-05-21  1059  	 */
4bb928cdb900d0 Dave Chinner      2013-08-12  1060  	spin_lock(&cil->xc_push_lock);
71e330b593905e Dave Chinner      2010-05-21  1061  	ctx->commit_lsn = commit_lsn;
eb40a87500ac2f Dave Chinner      2010-12-21  1062  	wake_up_all(&cil->xc_commit_wait);
4bb928cdb900d0 Dave Chinner      2013-08-12  1063  	spin_unlock(&cil->xc_push_lock);
71e330b593905e Dave Chinner      2010-05-21  1064  
bde964f7e822cc Dave Chinner      2021-06-03  1065  	/*
bde964f7e822cc Dave Chinner      2021-06-03  1066  	 * If the checkpoint spans multiple iclogs, wait for all previous
80d287de7b49ed Dave Chinner      2021-06-03  1067  	 * iclogs to complete before we submit the commit_iclog. In this case,
80d287de7b49ed Dave Chinner      2021-06-03  1068  	 * the commit_iclog write needs to issue a pre-flush so that the
80d287de7b49ed Dave Chinner      2021-06-03  1069  	 * ordering is correctly preserved down to stable storage.
bde964f7e822cc Dave Chinner      2021-06-03  1070  	 */
bde964f7e822cc Dave Chinner      2021-06-03  1071  	spin_lock(&log->l_icloglock);
80d287de7b49ed Dave Chinner      2021-06-03  1072  	if (ctx->start_lsn != commit_lsn) {
bde964f7e822cc Dave Chinner      2021-06-03  1073  		xlog_wait_on_iclog(commit_iclog->ic_prev);
80d287de7b49ed Dave Chinner      2021-06-03  1074  		spin_lock(&log->l_icloglock);
80d287de7b49ed Dave Chinner      2021-06-03  1075  		commit_iclog->ic_flags |= XLOG_ICL_NEED_FLUSH;
bde964f7e822cc Dave Chinner      2021-06-03  1076  	}
bde964f7e822cc Dave Chinner      2021-06-03  1077  
80d287de7b49ed Dave Chinner      2021-06-03  1078  	/*
80d287de7b49ed Dave Chinner      2021-06-03  1079  	 * The commit iclog must be written to stable storage to guarantee
80d287de7b49ed Dave Chinner      2021-06-03  1080  	 * journal IO vs metadata writeback IO is correctly ordered on stable
80d287de7b49ed Dave Chinner      2021-06-03  1081  	 * storage.
ed3d678659f2f3 Dave Chinner      2021-06-03  1082  	 *
ed3d678659f2f3 Dave Chinner      2021-06-03  1083  	 * If the push caller needs the commit to be immediately stable and the
ed3d678659f2f3 Dave Chinner      2021-06-03  1084  	 * commit_iclog is not yet marked as XLOG_STATE_WANT_SYNC to indicate it
ed3d678659f2f3 Dave Chinner      2021-06-03  1085  	 * will be written when released, switch it's state to WANT_SYNC right
ed3d678659f2f3 Dave Chinner      2021-06-03  1086  	 * now.
80d287de7b49ed Dave Chinner      2021-06-03  1087  	 */
80d287de7b49ed Dave Chinner      2021-06-03  1088  	commit_iclog->ic_flags |= XLOG_ICL_NEED_FUA;
ed3d678659f2f3 Dave Chinner      2021-06-03  1089  	if (push_commit_stable && commit_iclog->ic_state == XLOG_STATE_ACTIVE)
ed3d678659f2f3 Dave Chinner      2021-06-03  1090  		xlog_state_switch_iclogs(log, commit_iclog, 0);
80d287de7b49ed Dave Chinner      2021-06-03  1091  	xlog_state_release_iclog(log, commit_iclog);
80d287de7b49ed Dave Chinner      2021-06-03  1092  	spin_unlock(&log->l_icloglock);
c7cc296ddd1f6d Christoph Hellwig 2020-03-20  1093  	return;
71e330b593905e Dave Chinner      2010-05-21  1094  
71e330b593905e Dave Chinner      2010-05-21  1095  out_skip:
71e330b593905e Dave Chinner      2010-05-21  1096  	up_write(&cil->xc_ctx_lock);
71e330b593905e Dave Chinner      2010-05-21  1097  	xfs_log_ticket_put(new_ctx->ticket);
71e330b593905e Dave Chinner      2010-05-21  1098  	kmem_free(new_ctx);
c7cc296ddd1f6d Christoph Hellwig 2020-03-20  1099  	return;
71e330b593905e Dave Chinner      2010-05-21  1100  
7db37c5e6575b2 Dave Chinner      2011-01-27  1101  out_abort_free_ticket:
81be7bf64fac48 Dave Chinner      2021-06-03  1102  	xfs_log_ticket_ungrant(log, ctx->ticket);
71e330b593905e Dave Chinner      2010-05-21  1103  out_abort:
12e6a0f449d585 Christoph Hellwig 2020-03-20  1104  	ASSERT(XLOG_FORCED_SHUTDOWN(log));
12e6a0f449d585 Christoph Hellwig 2020-03-20  1105  	xlog_cil_committed(ctx);
4c2d542f2e7865 Dave Chinner      2012-04-23  1106  }
4c2d542f2e7865 Dave Chinner      2012-04-23  1107  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 31120 bytes --]

  reply	other threads:[~2021-06-03 10:17 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-03  5:22 [PATCH 00/39 v5] xfs: CIL and log optimisations Dave Chinner
2021-06-03  5:22 ` [PATCH 01/39] xfs: log stripe roundoff is a property of the log Dave Chinner
2021-06-03  5:22 ` [PATCH 02/39] xfs: separate CIL commit record IO Dave Chinner
2021-06-03  5:22 ` [PATCH 03/39] xfs: remove xfs_blkdev_issue_flush Dave Chinner
2021-06-03  5:22 ` [PATCH 04/39] xfs: async blkdev cache flush Dave Chinner
2021-06-03  5:22 ` [PATCH 05/39] xfs: CIL checkpoint flushes caches unconditionally Dave Chinner
2021-06-03  5:22 ` [PATCH 06/39] xfs: remove need_start_rec parameter from xlog_write() Dave Chinner
2021-06-03 22:29   ` Allison Henderson
2021-06-03  5:22 ` [PATCH 07/39] xfs: journal IO cache flush reductions Dave Chinner
2021-06-03 22:29   ` Allison Henderson
2021-06-04  5:15   ` [xfs] 80d287de7b: stress-ng.dir.ops_per_sec 80.1% improvement kernel test robot
2021-06-04  5:15     ` kernel test robot
2021-06-03  5:22 ` [PATCH 08/39] xfs: Fix CIL throttle hang when CIL space used going backwards Dave Chinner
2021-06-03 22:29   ` Allison Henderson
2021-06-03  5:22 ` [PATCH 09/39] xfs: xfs_log_force_lsn isn't passed a LSN Dave Chinner
2021-06-03 22:29   ` Allison Henderson
2021-06-03  5:22 ` [PATCH 10/39] xfs: AIL needs asynchronous CIL forcing Dave Chinner
2021-06-03 22:29   ` Allison Henderson
2021-06-03  5:22 ` [PATCH 11/39] xfs: CIL work is serialised, not pipelined Dave Chinner
2021-06-03  5:22 ` [PATCH 12/39] xfs: factor out the CIL transaction header building Dave Chinner
2021-06-03  5:22 ` [PATCH 13/39] xfs: only CIL pushes require a start record Dave Chinner
2021-06-03  5:22 ` [PATCH 14/39] xfs: embed the xlog_op_header in the unmount record Dave Chinner
2021-06-03  5:22 ` [PATCH 15/39] xfs: embed the xlog_op_header in the commit record Dave Chinner
2021-06-03  5:22 ` [PATCH 16/39] xfs: log tickets don't need log client id Dave Chinner
2021-06-03  5:22 ` [PATCH 17/39] xfs: move log iovec alignment to preparation function Dave Chinner
2021-06-03  5:22 ` [PATCH 18/39] xfs: reserve space and initialise xlog_op_header in item formatting Dave Chinner
2021-06-03  5:22 ` [PATCH 19/39] xfs: log ticket region debug is largely useless Dave Chinner
2021-06-03  5:22 ` [PATCH 20/39] xfs: pass lv chain length into xlog_write() Dave Chinner
2021-06-03  5:22 ` [PATCH 21/39] xfs: introduce xlog_write_single() Dave Chinner
2021-06-03  5:22 ` [PATCH 22/39] xfs:_introduce xlog_write_partial() Dave Chinner
2021-06-03  5:22 ` [PATCH 23/39] xfs: xlog_write() no longer needs contwr state Dave Chinner
2021-06-03  5:22 ` [PATCH 24/39] xfs: xlog_write() doesn't need optype anymore Dave Chinner
2021-06-03  5:22 ` [PATCH 25/39] xfs: CIL context doesn't need to count iovecs Dave Chinner
2021-06-03  5:22 ` [PATCH 26/39] xfs: use the CIL space used counter for emptiness checks Dave Chinner
2021-06-03  5:22 ` [PATCH 27/39] xfs: lift init CIL reservation out of xc_cil_lock Dave Chinner
2021-06-03  5:22 ` [PATCH 28/39] xfs: rework per-iclog header CIL reservation Dave Chinner
2021-06-03  5:22 ` [PATCH 29/39] xfs: introduce per-cpu CIL tracking structure Dave Chinner
2021-06-03  9:18   ` kernel test robot
2021-06-03  9:18     ` kernel test robot
2021-06-03 10:08   ` kernel test robot
2021-06-03 10:08     ` kernel test robot
2021-06-03 16:49   ` Darrick J. Wong
2021-06-03  5:22 ` [PATCH 30/39] xfs: implement percpu cil space used calculation Dave Chinner
2021-06-03 16:44   ` Darrick J. Wong
2021-06-03  5:22 ` [PATCH 31/39] xfs: track CIL ticket reservation in percpu structure Dave Chinner
2021-06-03 16:43   ` Darrick J. Wong
2021-06-03  5:22 ` [PATCH 32/39] xfs: convert CIL busy extents to per-cpu Dave Chinner
2021-06-03  5:22 ` [PATCH 33/39] xfs: Add order IDs to log items in CIL Dave Chinner
2021-06-03  5:22 ` [PATCH 34/39] xfs: convert CIL to unordered per cpu lists Dave Chinner
2021-06-03  5:22 ` [PATCH 35/39] xfs: convert log vector chain to use list heads Dave Chinner
2021-06-03 10:16   ` kernel test robot [this message]
2021-06-03 10:16     ` kernel test robot
2021-06-03  5:22 ` [PATCH 36/39] xfs: move CIL ordering to the logvec chain Dave Chinner
2021-06-03  5:22 ` [PATCH 37/39] xfs: avoid cil push lock if possible Dave Chinner
2021-06-03  5:22 ` [PATCH 38/39] xfs: xlog_sync() manually adjusts grant head space Dave Chinner
2021-06-03  5:22 ` [PATCH 39/39] xfs: expanding delayed logging design with background material Dave Chinner
2021-06-03 17:05 ` [PATCH 00/39 v5] xfs: CIL and log optimisations Darrick J. Wong
2021-06-03 22:43   ` Dave Chinner
  -- strict thread matches above, loose matches on Subject: below --
2021-05-19 12:12 [PATCH 00/39 v4] " Dave Chinner
2021-05-19 12:13 ` [PATCH 35/39] xfs: convert log vector chain to use list heads Dave Chinner
2021-05-27 19:13   ` Darrick J. Wong
2021-06-03  0:38     ` Dave Chinner
2021-06-03  0:50       ` Darrick J. Wong

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=202106031844.nHvax4Cf-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=clang-built-linux@googlegroups.com \
    --cc=david@fromorbit.com \
    --cc=kbuild-all@lists.01.org \
    --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.