From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 96AF2C2B9F4 for ; Thu, 17 Jun 2021 18:28:30 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 8FE40610A5 for ; Thu, 17 Jun 2021 18:28:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8FE40610A5 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=inria.fr Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id E14676B0070; Thu, 17 Jun 2021 14:28:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DC4E76B0071; Thu, 17 Jun 2021 14:28:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C17456B0072; Thu, 17 Jun 2021 14:28:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0219.hostedemail.com [216.40.44.219]) by kanga.kvack.org (Postfix) with ESMTP id 6F6536B0070 for ; Thu, 17 Jun 2021 14:28:28 -0400 (EDT) Received: from smtpin31.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 0F4F81D5E3 for ; Thu, 17 Jun 2021 18:28:28 +0000 (UTC) X-FDA: 78264051096.31.BF6FBB0 Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by imf03.hostedemail.com (Postfix) with ESMTP id B0052C009191 for ; Thu, 17 Jun 2021 18:28:26 +0000 (UTC) IronPort-HdrOrdr: =?us-ascii?q?A9a23=3AEXd+tqNWjF9+pMBcTrWjsMiBIKoaSvp037BF?= =?us-ascii?q?7StMoHBuH/Bw6frFoB1z73adtN97Yh4dcL67VJW9fQ=3D=3D?= X-IronPort-AV: E=Sophos;i="5.83,281,1616454000"; d="gz'50?scan'50,208,50";a="515274185" Received: from 173.121.68.85.rev.sfr.net (HELO hadrien) ([85.68.121.173]) by mail2-relais-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 Jun 2021 20:28:24 +0200 Date: Thu, 17 Jun 2021 20:28:24 +0200 (CEST) From: Julia Lawall X-X-Sender: jll@hadrien To: Dave Chinner cc: kbuild-all@lists.01.org, Linux Memory Management List , Chandan Babu R , "Darrick J. Wong" , Allison Henderson Subject: [linux-next:master 6373/10489] fs/xfs/xfs_log_cil.c:897:1-10: second lock on line 900 (fwd) Message-ID: User-Agent: Alpine 2.22 (DEB 394 2020-01-19) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="J/dobhs11T7y2rNN" Content-ID: Content-Disposition: inline Authentication-Results: imf03.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf03.hostedemail.com: domain of julia.lawall@inria.fr designates 192.134.164.83 as permitted sender) smtp.mailfrom=julia.lawall@inria.fr X-Rspamd-Server: rspam02 X-Stat-Signature: xtqsr8kgbtqie4ueqhemengyafr9yp9x X-Rspamd-Queue-Id: B0052C009191 X-HE-Tag: 1623954506-304416 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --J/dobhs11T7y2rNN Content-Type: text/plain; charset=US-ASCII Content-ID: Content-Disposition: inline Please check line 900. julia ---------- Forwarded message ---------- Date: Thu, 17 Jun 2021 20:02:22 +0800 From: kernel test robot To: kbuild@lists.01.org Cc: lkp@intel.com, Julia Lawall Subject: [linux-next:master 6373/10489] fs/xfs/xfs_log_cil.c:897:1-10: second lock on line 900 CC: kbuild-all@lists.01.org CC: Linux Memory Management List TO: Dave Chinner CC: Chandan Babu R CC: "Darrick J. Wong" CC: Allison Henderson tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: c7d4c1fd91ab4a6d2620497921a9c6bf54650ab8 commit: cb1acb3f324636856cb65bd4857c981a15b7f4d4 [6373/10489] xfs: journal IO cache flush reductions :::::: branch date: 23 hours ago :::::: commit date: 13 days ago config: nds32-randconfig-c003-20210617 (attached as .config) compiler: nds32le-linux-gcc (GCC) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Julia Lawall cocci warnings: (new ones prefixed by >>) >> fs/xfs/xfs_log_cil.c:897:1-10: second lock on line 900 vim +897 fs/xfs/xfs_log_cil.c 89ae379d564c5d Christoph Hellwig 2019-06-28 625 71e330b593905e Dave Chinner 2010-05-21 626 /* c7cc296ddd1f6d Christoph Hellwig 2020-03-20 627 * Push the Committed Item List to the log. c7cc296ddd1f6d Christoph Hellwig 2020-03-20 628 * c7cc296ddd1f6d Christoph Hellwig 2020-03-20 629 * If the current sequence is the same as xc_push_seq we need to do a flush. If c7cc296ddd1f6d Christoph Hellwig 2020-03-20 630 * xc_push_seq is less than the current sequence, then it has already been a44f13edf0ebb4 Dave Chinner 2010-08-24 631 * flushed and we don't need to do anything - the caller will wait for it to a44f13edf0ebb4 Dave Chinner 2010-08-24 632 * complete if necessary. a44f13edf0ebb4 Dave Chinner 2010-08-24 633 * c7cc296ddd1f6d Christoph Hellwig 2020-03-20 634 * xc_push_seq is checked unlocked against the sequence number for a match. c7cc296ddd1f6d Christoph Hellwig 2020-03-20 635 * Hence we can allow log forces to run racily and not issue pushes for the c7cc296ddd1f6d Christoph Hellwig 2020-03-20 636 * same sequence twice. If we get a race between multiple pushes for the same c7cc296ddd1f6d Christoph Hellwig 2020-03-20 637 * sequence they will block on the first one and then abort, hence avoiding c7cc296ddd1f6d Christoph Hellwig 2020-03-20 638 * needless pushes. c7cc296ddd1f6d Christoph Hellwig 2020-03-20 639 */ c7cc296ddd1f6d Christoph Hellwig 2020-03-20 640 static void c7cc296ddd1f6d Christoph Hellwig 2020-03-20 641 xlog_cil_push_work( c7cc296ddd1f6d Christoph Hellwig 2020-03-20 642 struct work_struct *work) 71e330b593905e Dave Chinner 2010-05-21 643 { c7cc296ddd1f6d Christoph Hellwig 2020-03-20 644 struct xfs_cil *cil = c7cc296ddd1f6d Christoph Hellwig 2020-03-20 645 container_of(work, struct xfs_cil, xc_push_work); c7cc296ddd1f6d Christoph Hellwig 2020-03-20 646 struct xlog *log = cil->xc_log; 71e330b593905e Dave Chinner 2010-05-21 647 struct xfs_log_vec *lv; 71e330b593905e Dave Chinner 2010-05-21 648 struct xfs_cil_ctx *ctx; 71e330b593905e Dave Chinner 2010-05-21 649 struct xfs_cil_ctx *new_ctx; 71e330b593905e Dave Chinner 2010-05-21 650 struct xlog_in_core *commit_iclog; 71e330b593905e Dave Chinner 2010-05-21 651 struct xlog_ticket *tic; 71e330b593905e Dave Chinner 2010-05-21 652 int num_iovecs; 71e330b593905e Dave Chinner 2010-05-21 653 int error = 0; 71e330b593905e Dave Chinner 2010-05-21 654 struct xfs_trans_header thdr; 71e330b593905e Dave Chinner 2010-05-21 655 struct xfs_log_iovec lhdr; 71e330b593905e Dave Chinner 2010-05-21 656 struct xfs_log_vec lvhdr = { NULL }; 71e330b593905e Dave Chinner 2010-05-21 657 xfs_lsn_t commit_lsn; 4c2d542f2e7865 Dave Chinner 2012-04-23 658 xfs_lsn_t push_seq; 0279bbbbc03f2c Dave Chinner 2021-06-03 659 struct bio bio; 0279bbbbc03f2c Dave Chinner 2021-06-03 660 DECLARE_COMPLETION_ONSTACK(bdev_flush); 71e330b593905e Dave Chinner 2010-05-21 661 707e0ddaf67e89 Tetsuo Handa 2019-08-26 662 new_ctx = kmem_zalloc(sizeof(*new_ctx), KM_NOFS); 71e330b593905e Dave Chinner 2010-05-21 663 new_ctx->ticket = xlog_cil_ticket_alloc(log); 71e330b593905e Dave Chinner 2010-05-21 664 71e330b593905e Dave Chinner 2010-05-21 665 down_write(&cil->xc_ctx_lock); 71e330b593905e Dave Chinner 2010-05-21 666 ctx = cil->xc_ctx; 71e330b593905e Dave Chinner 2010-05-21 667 4bb928cdb900d0 Dave Chinner 2013-08-12 668 spin_lock(&cil->xc_push_lock); 4c2d542f2e7865 Dave Chinner 2012-04-23 669 push_seq = cil->xc_push_seq; 4c2d542f2e7865 Dave Chinner 2012-04-23 670 ASSERT(push_seq <= ctx->sequence); 71e330b593905e Dave Chinner 2010-05-21 671 0e7ab7efe77451 Dave Chinner 2020-03-24 672 /* 0e7ab7efe77451 Dave Chinner 2020-03-24 673 * Wake up any background push waiters now this context is being pushed. 0e7ab7efe77451 Dave Chinner 2020-03-24 674 */ c7f87f3984cfa1 Dave Chinner 2020-06-16 675 if (ctx->space_used >= XLOG_CIL_BLOCKING_SPACE_LIMIT(log)) c7f87f3984cfa1 Dave Chinner 2020-06-16 676 wake_up_all(&cil->xc_push_wait); 0e7ab7efe77451 Dave Chinner 2020-03-24 677 4c2d542f2e7865 Dave Chinner 2012-04-23 678 /* 4c2d542f2e7865 Dave Chinner 2012-04-23 679 * Check if we've anything to push. If there is nothing, then we don't 4c2d542f2e7865 Dave Chinner 2012-04-23 680 * move on to a new sequence number and so we have to be able to push 4c2d542f2e7865 Dave Chinner 2012-04-23 681 * this sequence again later. 4c2d542f2e7865 Dave Chinner 2012-04-23 682 */ 4c2d542f2e7865 Dave Chinner 2012-04-23 683 if (list_empty(&cil->xc_cil)) { 4c2d542f2e7865 Dave Chinner 2012-04-23 684 cil->xc_push_seq = 0; 4bb928cdb900d0 Dave Chinner 2013-08-12 685 spin_unlock(&cil->xc_push_lock); a44f13edf0ebb4 Dave Chinner 2010-08-24 686 goto out_skip; 4c2d542f2e7865 Dave Chinner 2012-04-23 687 } 4c2d542f2e7865 Dave Chinner 2012-04-23 688 a44f13edf0ebb4 Dave Chinner 2010-08-24 689 cf085a1b5d2214 Joe Perches 2019-11-07 690 /* check for a previously pushed sequence */ 8af3dcd3c89aef Dave Chinner 2014-09-23 691 if (push_seq < cil->xc_ctx->sequence) { 8af3dcd3c89aef Dave Chinner 2014-09-23 692 spin_unlock(&cil->xc_push_lock); df806158b0f6eb Dave Chinner 2010-05-17 693 goto out_skip; 8af3dcd3c89aef Dave Chinner 2014-09-23 694 } 8af3dcd3c89aef Dave Chinner 2014-09-23 695 8af3dcd3c89aef Dave Chinner 2014-09-23 696 /* 8af3dcd3c89aef Dave Chinner 2014-09-23 697 * We are now going to push this context, so add it to the committing 8af3dcd3c89aef Dave Chinner 2014-09-23 698 * list before we do anything else. This ensures that anyone waiting on 8af3dcd3c89aef Dave Chinner 2014-09-23 699 * this push can easily detect the difference between a "push in 8af3dcd3c89aef Dave Chinner 2014-09-23 700 * progress" and "CIL is empty, nothing to do". 8af3dcd3c89aef Dave Chinner 2014-09-23 701 * 8af3dcd3c89aef Dave Chinner 2014-09-23 702 * IOWs, a wait loop can now check for: 8af3dcd3c89aef Dave Chinner 2014-09-23 703 * the current sequence not being found on the committing list; 8af3dcd3c89aef Dave Chinner 2014-09-23 704 * an empty CIL; and 8af3dcd3c89aef Dave Chinner 2014-09-23 705 * an unchanged sequence number 8af3dcd3c89aef Dave Chinner 2014-09-23 706 * to detect a push that had nothing to do and therefore does not need 8af3dcd3c89aef Dave Chinner 2014-09-23 707 * waiting on. If the CIL is not empty, we get put on the committing 8af3dcd3c89aef Dave Chinner 2014-09-23 708 * list before emptying the CIL and bumping the sequence number. Hence 8af3dcd3c89aef Dave Chinner 2014-09-23 709 * an empty CIL and an unchanged sequence number means we jumped out 8af3dcd3c89aef Dave Chinner 2014-09-23 710 * above after doing nothing. 8af3dcd3c89aef Dave Chinner 2014-09-23 711 * 8af3dcd3c89aef Dave Chinner 2014-09-23 712 * Hence the waiter will either find the commit sequence on the 8af3dcd3c89aef Dave Chinner 2014-09-23 713 * committing list or the sequence number will be unchanged and the CIL 8af3dcd3c89aef Dave Chinner 2014-09-23 714 * still dirty. In that latter case, the push has not yet started, and 8af3dcd3c89aef Dave Chinner 2014-09-23 715 * so the waiter will have to continue trying to check the CIL 8af3dcd3c89aef Dave Chinner 2014-09-23 716 * committing list until it is found. In extreme cases of delay, the 8af3dcd3c89aef Dave Chinner 2014-09-23 717 * sequence may fully commit between the attempts the wait makes to wait 8af3dcd3c89aef Dave Chinner 2014-09-23 718 * on the commit sequence. 8af3dcd3c89aef Dave Chinner 2014-09-23 719 */ 8af3dcd3c89aef Dave Chinner 2014-09-23 720 list_add(&ctx->committing, &cil->xc_committing); 8af3dcd3c89aef Dave Chinner 2014-09-23 721 spin_unlock(&cil->xc_push_lock); df806158b0f6eb Dave Chinner 2010-05-17 722 71e330b593905e Dave Chinner 2010-05-21 723 /* 0279bbbbc03f2c Dave Chinner 2021-06-03 724 * The CIL is stable at this point - nothing new will be added to it 0279bbbbc03f2c Dave Chinner 2021-06-03 725 * because we hold the flush lock exclusively. Hence we can now issue 0279bbbbc03f2c Dave Chinner 2021-06-03 726 * a cache flush to ensure all the completed metadata in the journal we 0279bbbbc03f2c Dave Chinner 2021-06-03 727 * are about to overwrite is on stable storage. 0279bbbbc03f2c Dave Chinner 2021-06-03 728 */ 0279bbbbc03f2c Dave Chinner 2021-06-03 729 xfs_flush_bdev_async(&bio, log->l_mp->m_ddev_targp->bt_bdev, 0279bbbbc03f2c Dave Chinner 2021-06-03 730 &bdev_flush); 0279bbbbc03f2c Dave Chinner 2021-06-03 731 0279bbbbc03f2c Dave Chinner 2021-06-03 732 /* 0279bbbbc03f2c Dave Chinner 2021-06-03 733 * Pull all the log vectors off the items in the CIL, and remove the 0279bbbbc03f2c Dave Chinner 2021-06-03 734 * items from the CIL. We don't need the CIL lock here because it's only 0279bbbbc03f2c Dave Chinner 2021-06-03 735 * needed on the transaction commit side which is currently locked out 0279bbbbc03f2c Dave Chinner 2021-06-03 736 * by the flush lock. 71e330b593905e Dave Chinner 2010-05-21 737 */ 71e330b593905e Dave Chinner 2010-05-21 738 lv = NULL; 71e330b593905e Dave Chinner 2010-05-21 739 num_iovecs = 0; 71e330b593905e Dave Chinner 2010-05-21 740 while (!list_empty(&cil->xc_cil)) { 71e330b593905e Dave Chinner 2010-05-21 741 struct xfs_log_item *item; 71e330b593905e Dave Chinner 2010-05-21 742 71e330b593905e Dave Chinner 2010-05-21 743 item = list_first_entry(&cil->xc_cil, 71e330b593905e Dave Chinner 2010-05-21 744 struct xfs_log_item, li_cil); 71e330b593905e Dave Chinner 2010-05-21 745 list_del_init(&item->li_cil); 71e330b593905e Dave Chinner 2010-05-21 746 if (!ctx->lv_chain) 71e330b593905e Dave Chinner 2010-05-21 747 ctx->lv_chain = item->li_lv; 71e330b593905e Dave Chinner 2010-05-21 748 else 71e330b593905e Dave Chinner 2010-05-21 749 lv->lv_next = item->li_lv; 71e330b593905e Dave Chinner 2010-05-21 750 lv = item->li_lv; 71e330b593905e Dave Chinner 2010-05-21 751 item->li_lv = NULL; 71e330b593905e Dave Chinner 2010-05-21 752 num_iovecs += lv->lv_niovecs; 71e330b593905e Dave Chinner 2010-05-21 753 } 71e330b593905e Dave Chinner 2010-05-21 754 71e330b593905e Dave Chinner 2010-05-21 755 /* 71e330b593905e Dave Chinner 2010-05-21 756 * initialise the new context and attach it to the CIL. Then attach c7f87f3984cfa1 Dave Chinner 2020-06-16 757 * the current context to the CIL committing list so it can be found 71e330b593905e Dave Chinner 2010-05-21 758 * during log forces to extract the commit lsn of the sequence that 71e330b593905e Dave Chinner 2010-05-21 759 * needs to be forced. 71e330b593905e Dave Chinner 2010-05-21 760 */ 71e330b593905e Dave Chinner 2010-05-21 761 INIT_LIST_HEAD(&new_ctx->committing); 71e330b593905e Dave Chinner 2010-05-21 762 INIT_LIST_HEAD(&new_ctx->busy_extents); 71e330b593905e Dave Chinner 2010-05-21 763 new_ctx->sequence = ctx->sequence + 1; 71e330b593905e Dave Chinner 2010-05-21 764 new_ctx->cil = cil; 71e330b593905e Dave Chinner 2010-05-21 765 cil->xc_ctx = new_ctx; 71e330b593905e Dave Chinner 2010-05-21 766 71e330b593905e Dave Chinner 2010-05-21 767 /* 71e330b593905e Dave Chinner 2010-05-21 768 * The switch is now done, so we can drop the context lock and move out 71e330b593905e Dave Chinner 2010-05-21 769 * of a shared context. We can't just go straight to the commit record, 71e330b593905e Dave Chinner 2010-05-21 770 * though - we need to synchronise with previous and future commits so 71e330b593905e Dave Chinner 2010-05-21 771 * that the commit records are correctly ordered in the log to ensure 71e330b593905e Dave Chinner 2010-05-21 772 * that we process items during log IO completion in the correct order. 71e330b593905e Dave Chinner 2010-05-21 773 * 71e330b593905e Dave Chinner 2010-05-21 774 * For example, if we get an EFI in one checkpoint and the EFD in the 71e330b593905e Dave Chinner 2010-05-21 775 * next (e.g. due to log forces), we do not want the checkpoint with 71e330b593905e Dave Chinner 2010-05-21 776 * the EFD to be committed before the checkpoint with the EFI. Hence 71e330b593905e Dave Chinner 2010-05-21 777 * we must strictly order the commit records of the checkpoints so 71e330b593905e Dave Chinner 2010-05-21 778 * that: a) the checkpoint callbacks are attached to the iclogs in the 71e330b593905e Dave Chinner 2010-05-21 779 * correct order; and b) the checkpoints are replayed in correct order 71e330b593905e Dave Chinner 2010-05-21 780 * in log recovery. 71e330b593905e Dave Chinner 2010-05-21 781 * 71e330b593905e Dave Chinner 2010-05-21 782 * Hence we need to add this context to the committing context list so 71e330b593905e Dave Chinner 2010-05-21 783 * that higher sequences will wait for us to write out a commit record 71e330b593905e Dave Chinner 2010-05-21 784 * before they do. f876e44603ad09 Dave Chinner 2014-02-27 785 * f876e44603ad09 Dave Chinner 2014-02-27 786 * xfs_log_force_lsn requires us to mirror the new sequence into the cil f876e44603ad09 Dave Chinner 2014-02-27 787 * structure atomically with the addition of this sequence to the f876e44603ad09 Dave Chinner 2014-02-27 788 * committing list. This also ensures that we can do unlocked checks f876e44603ad09 Dave Chinner 2014-02-27 789 * against the current sequence in log forces without risking f876e44603ad09 Dave Chinner 2014-02-27 790 * deferencing a freed context pointer. 71e330b593905e Dave Chinner 2010-05-21 791 */ 4bb928cdb900d0 Dave Chinner 2013-08-12 792 spin_lock(&cil->xc_push_lock); f876e44603ad09 Dave Chinner 2014-02-27 793 cil->xc_current_sequence = new_ctx->sequence; 4bb928cdb900d0 Dave Chinner 2013-08-12 794 spin_unlock(&cil->xc_push_lock); 71e330b593905e Dave Chinner 2010-05-21 795 up_write(&cil->xc_ctx_lock); 71e330b593905e Dave Chinner 2010-05-21 796 71e330b593905e Dave Chinner 2010-05-21 797 /* 71e330b593905e Dave Chinner 2010-05-21 798 * Build a checkpoint transaction header and write it to the log to 71e330b593905e Dave Chinner 2010-05-21 799 * begin the transaction. We need to account for the space used by the 71e330b593905e Dave Chinner 2010-05-21 800 * transaction header here as it is not accounted for in xlog_write(). 71e330b593905e Dave Chinner 2010-05-21 801 * 71e330b593905e Dave Chinner 2010-05-21 802 * The LSN we need to pass to the log items on transaction commit is 71e330b593905e Dave Chinner 2010-05-21 803 * the LSN reported by the first log vector write. If we use the commit 71e330b593905e Dave Chinner 2010-05-21 804 * record lsn then we can move the tail beyond the grant write head. 71e330b593905e Dave Chinner 2010-05-21 805 */ 71e330b593905e Dave Chinner 2010-05-21 806 tic = ctx->ticket; 71e330b593905e Dave Chinner 2010-05-21 807 thdr.th_magic = XFS_TRANS_HEADER_MAGIC; 71e330b593905e Dave Chinner 2010-05-21 808 thdr.th_type = XFS_TRANS_CHECKPOINT; 71e330b593905e Dave Chinner 2010-05-21 809 thdr.th_tid = tic->t_tid; 71e330b593905e Dave Chinner 2010-05-21 810 thdr.th_num_items = num_iovecs; 4e0d5f926b80b0 Christoph Hellwig 2010-06-23 811 lhdr.i_addr = &thdr; 71e330b593905e Dave Chinner 2010-05-21 812 lhdr.i_len = sizeof(xfs_trans_header_t); 71e330b593905e Dave Chinner 2010-05-21 813 lhdr.i_type = XLOG_REG_TYPE_TRANSHDR; 71e330b593905e Dave Chinner 2010-05-21 814 tic->t_curr_res -= lhdr.i_len + sizeof(xlog_op_header_t); 71e330b593905e Dave Chinner 2010-05-21 815 71e330b593905e Dave Chinner 2010-05-21 816 lvhdr.lv_niovecs = 1; 71e330b593905e Dave Chinner 2010-05-21 817 lvhdr.lv_iovecp = &lhdr; 71e330b593905e Dave Chinner 2010-05-21 818 lvhdr.lv_next = ctx->lv_chain; 71e330b593905e Dave Chinner 2010-05-21 819 0279bbbbc03f2c Dave Chinner 2021-06-03 820 /* 0279bbbbc03f2c Dave Chinner 2021-06-03 821 * Before we format and submit the first iclog, we have to ensure that 0279bbbbc03f2c Dave Chinner 2021-06-03 822 * the metadata writeback ordering cache flush is complete. 0279bbbbc03f2c Dave Chinner 2021-06-03 823 */ 0279bbbbc03f2c Dave Chinner 2021-06-03 824 wait_for_completion(&bdev_flush); 0279bbbbc03f2c Dave Chinner 2021-06-03 825 69d51e0e16864f Dave Chinner 2021-06-04 826 error = xlog_write(log, &lvhdr, tic, &ctx->start_lsn, NULL, 69d51e0e16864f Dave Chinner 2021-06-04 827 XLOG_START_TRANS); 71e330b593905e Dave Chinner 2010-05-21 828 if (error) 7db37c5e6575b2 Dave Chinner 2011-01-27 829 goto out_abort_free_ticket; 71e330b593905e Dave Chinner 2010-05-21 830 71e330b593905e Dave Chinner 2010-05-21 831 /* 71e330b593905e Dave Chinner 2010-05-21 832 * now that we've written the checkpoint into the log, strictly 71e330b593905e Dave Chinner 2010-05-21 833 * order the commit records so replay will get them in the right order. 71e330b593905e Dave Chinner 2010-05-21 834 */ 71e330b593905e Dave Chinner 2010-05-21 835 restart: 4bb928cdb900d0 Dave Chinner 2013-08-12 836 spin_lock(&cil->xc_push_lock); 71e330b593905e Dave Chinner 2010-05-21 837 list_for_each_entry(new_ctx, &cil->xc_committing, committing) { ac983517ec5941 Dave Chinner 2014-05-07 838 /* ac983517ec5941 Dave Chinner 2014-05-07 839 * Avoid getting stuck in this loop because we were woken by the ac983517ec5941 Dave Chinner 2014-05-07 840 * shutdown, but then went back to sleep once already in the ac983517ec5941 Dave Chinner 2014-05-07 841 * shutdown state. ac983517ec5941 Dave Chinner 2014-05-07 842 */ ac983517ec5941 Dave Chinner 2014-05-07 843 if (XLOG_FORCED_SHUTDOWN(log)) { ac983517ec5941 Dave Chinner 2014-05-07 844 spin_unlock(&cil->xc_push_lock); ac983517ec5941 Dave Chinner 2014-05-07 845 goto out_abort_free_ticket; ac983517ec5941 Dave Chinner 2014-05-07 846 } ac983517ec5941 Dave Chinner 2014-05-07 847 71e330b593905e Dave Chinner 2010-05-21 848 /* 71e330b593905e Dave Chinner 2010-05-21 849 * Higher sequences will wait for this one so skip them. ac983517ec5941 Dave Chinner 2014-05-07 850 * Don't wait for our own sequence, either. 71e330b593905e Dave Chinner 2010-05-21 851 */ 71e330b593905e Dave Chinner 2010-05-21 852 if (new_ctx->sequence >= ctx->sequence) 71e330b593905e Dave Chinner 2010-05-21 853 continue; 71e330b593905e Dave Chinner 2010-05-21 854 if (!new_ctx->commit_lsn) { 71e330b593905e Dave Chinner 2010-05-21 855 /* 71e330b593905e Dave Chinner 2010-05-21 856 * It is still being pushed! Wait for the push to 71e330b593905e Dave Chinner 2010-05-21 857 * complete, then start again from the beginning. 71e330b593905e Dave Chinner 2010-05-21 858 */ 4bb928cdb900d0 Dave Chinner 2013-08-12 859 xlog_wait(&cil->xc_commit_wait, &cil->xc_push_lock); 71e330b593905e Dave Chinner 2010-05-21 860 goto restart; 71e330b593905e Dave Chinner 2010-05-21 861 } 71e330b593905e Dave Chinner 2010-05-21 862 } 4bb928cdb900d0 Dave Chinner 2013-08-12 863 spin_unlock(&cil->xc_push_lock); 71e330b593905e Dave Chinner 2010-05-21 864 f10e925def9a6d Dave Chinner 2020-03-25 865 error = xlog_commit_record(log, tic, &commit_iclog, &commit_lsn); dd401770b0ff68 Dave Chinner 2020-03-25 866 if (error) dd401770b0ff68 Dave Chinner 2020-03-25 867 goto out_abort_free_ticket; dd401770b0ff68 Dave Chinner 2020-03-25 868 8b41e3f98e6ca1 Christoph Hellwig 2020-03-25 869 xfs_log_ticket_ungrant(log, tic); 71e330b593905e Dave Chinner 2010-05-21 870 89ae379d564c5d Christoph Hellwig 2019-06-28 871 spin_lock(&commit_iclog->ic_callback_lock); 1858bb0bec612d Christoph Hellwig 2019-10-14 872 if (commit_iclog->ic_state == XLOG_STATE_IOERROR) { 89ae379d564c5d Christoph Hellwig 2019-06-28 873 spin_unlock(&commit_iclog->ic_callback_lock); 71e330b593905e Dave Chinner 2010-05-21 874 goto out_abort; 89ae379d564c5d Christoph Hellwig 2019-06-28 875 } 89ae379d564c5d Christoph Hellwig 2019-06-28 876 ASSERT_ALWAYS(commit_iclog->ic_state == XLOG_STATE_ACTIVE || 89ae379d564c5d Christoph Hellwig 2019-06-28 877 commit_iclog->ic_state == XLOG_STATE_WANT_SYNC); 89ae379d564c5d Christoph Hellwig 2019-06-28 878 list_add_tail(&ctx->iclog_entry, &commit_iclog->ic_callbacks); 89ae379d564c5d Christoph Hellwig 2019-06-28 879 spin_unlock(&commit_iclog->ic_callback_lock); 71e330b593905e Dave Chinner 2010-05-21 880 71e330b593905e Dave Chinner 2010-05-21 881 /* 71e330b593905e Dave Chinner 2010-05-21 882 * now the checkpoint commit is complete and we've attached the 71e330b593905e Dave Chinner 2010-05-21 883 * callbacks to the iclog we can assign the commit LSN to the context 71e330b593905e Dave Chinner 2010-05-21 884 * and wake up anyone who is waiting for the commit to complete. 71e330b593905e Dave Chinner 2010-05-21 885 */ 4bb928cdb900d0 Dave Chinner 2013-08-12 886 spin_lock(&cil->xc_push_lock); 71e330b593905e Dave Chinner 2010-05-21 887 ctx->commit_lsn = commit_lsn; eb40a87500ac2f Dave Chinner 2010-12-21 888 wake_up_all(&cil->xc_commit_wait); 4bb928cdb900d0 Dave Chinner 2013-08-12 889 spin_unlock(&cil->xc_push_lock); 71e330b593905e Dave Chinner 2010-05-21 890 5fd9256ce156ef Dave Chinner 2021-06-03 891 /* 5fd9256ce156ef Dave Chinner 2021-06-03 892 * If the checkpoint spans multiple iclogs, wait for all previous cb1acb3f324636 Dave Chinner 2021-06-04 893 * iclogs to complete before we submit the commit_iclog. In this case, cb1acb3f324636 Dave Chinner 2021-06-04 894 * the commit_iclog write needs to issue a pre-flush so that the cb1acb3f324636 Dave Chinner 2021-06-04 895 * ordering is correctly preserved down to stable storage. 5fd9256ce156ef Dave Chinner 2021-06-03 896 */ 5fd9256ce156ef Dave Chinner 2021-06-03 @897 spin_lock(&log->l_icloglock); cb1acb3f324636 Dave Chinner 2021-06-04 898 if (ctx->start_lsn != commit_lsn) { 5fd9256ce156ef Dave Chinner 2021-06-03 899 xlog_wait_on_iclog(commit_iclog->ic_prev); cb1acb3f324636 Dave Chinner 2021-06-04 @900 spin_lock(&log->l_icloglock); cb1acb3f324636 Dave Chinner 2021-06-04 901 commit_iclog->ic_flags |= XLOG_ICL_NEED_FLUSH; 5fd9256ce156ef Dave Chinner 2021-06-03 902 } 5fd9256ce156ef Dave Chinner 2021-06-03 903 cb1acb3f324636 Dave Chinner 2021-06-04 904 /* cb1acb3f324636 Dave Chinner 2021-06-04 905 * The commit iclog must be written to stable storage to guarantee cb1acb3f324636 Dave Chinner 2021-06-04 906 * journal IO vs metadata writeback IO is correctly ordered on stable cb1acb3f324636 Dave Chinner 2021-06-04 907 * storage. cb1acb3f324636 Dave Chinner 2021-06-04 908 */ cb1acb3f324636 Dave Chinner 2021-06-04 909 commit_iclog->ic_flags |= XLOG_ICL_NEED_FUA; cb1acb3f324636 Dave Chinner 2021-06-04 910 xlog_state_release_iclog(log, commit_iclog); cb1acb3f324636 Dave Chinner 2021-06-04 911 spin_unlock(&log->l_icloglock); c7cc296ddd1f6d Christoph Hellwig 2020-03-20 912 return; 71e330b593905e Dave Chinner 2010-05-21 913 71e330b593905e Dave Chinner 2010-05-21 914 out_skip: 71e330b593905e Dave Chinner 2010-05-21 915 up_write(&cil->xc_ctx_lock); 71e330b593905e Dave Chinner 2010-05-21 916 xfs_log_ticket_put(new_ctx->ticket); 71e330b593905e Dave Chinner 2010-05-21 917 kmem_free(new_ctx); c7cc296ddd1f6d Christoph Hellwig 2020-03-20 918 return; 71e330b593905e Dave Chinner 2010-05-21 919 7db37c5e6575b2 Dave Chinner 2011-01-27 920 out_abort_free_ticket: 8b41e3f98e6ca1 Christoph Hellwig 2020-03-25 921 xfs_log_ticket_ungrant(log, tic); 71e330b593905e Dave Chinner 2010-05-21 922 out_abort: 12e6a0f449d585 Christoph Hellwig 2020-03-20 923 ASSERT(XLOG_FORCED_SHUTDOWN(log)); 12e6a0f449d585 Christoph Hellwig 2020-03-20 924 xlog_cil_committed(ctx); 4c2d542f2e7865 Dave Chinner 2012-04-23 925 } 4c2d542f2e7865 Dave Chinner 2012-04-23 926 :::::: The code at line 897 was first introduced by commit :::::: 5fd9256ce156ef7780f05c9ff0a5b9e2ed9f6679 xfs: separate CIL commit record IO :::::: TO: Dave Chinner :::::: CC: Dave Chinner --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org --J/dobhs11T7y2rNN Content-Type: application/gzip; CHARSET=US-ASCII Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=.config.gz 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 --J/dobhs11T7y2rNN--