cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
* [Cluster-devel] [gfs2:gfs2-iopen 12/12] fs/gfs2/util.c:126:3: error: implicit declaration of function 'gfs2_glock_dq_wait'; did you mean 'gfs2_glock_nq_init'?
@ 2020-04-17  7:36 kbuild test robot
  2020-04-17 12:23 ` Andreas Gruenbacher
  0 siblings, 1 reply; 5+ messages in thread
From: kbuild test robot @ 2020-04-17  7:36 UTC (permalink / raw)
  To: cluster-devel.redhat.com

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git gfs2-iopen
head:   c748e1ec9bd20d71265a148042f6bc97ffc5f343
commit: c748e1ec9bd20d71265a148042f6bc97ffc5f343 [12/12] gfs2: Remove unused function gfs2_glock_dq_wait
config: s390-defconfig (attached as .config)
compiler: s390-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout c748e1ec9bd20d71265a148042f6bc97ffc5f343
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=s390 

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

All errors (new ones prefixed by >>):

   fs/gfs2/util.c: In function 'signal_our_withdraw':
>> fs/gfs2/util.c:126:3: error: implicit declaration of function 'gfs2_glock_dq_wait'; did you mean 'gfs2_glock_nq_init'? [-Werror=implicit-function-declaration]
     126 |   gfs2_glock_dq_wait(&sdp->sd_journal_gh);
         |   ^~~~~~~~~~~~~~~~~~
         |   gfs2_glock_nq_init
   cc1: some warnings being treated as errors

vim +126 fs/gfs2/util.c

0d91061a372671a Bob Peterson 2019-02-18   92  
601ef0d52e96175 Bob Peterson 2020-01-28   93  static void signal_our_withdraw(struct gfs2_sbd *sdp)
601ef0d52e96175 Bob Peterson 2020-01-28   94  {
601ef0d52e96175 Bob Peterson 2020-01-28   95  	struct gfs2_glock *gl = sdp->sd_live_gh.gh_gl;
601ef0d52e96175 Bob Peterson 2020-01-28   96  	struct inode *inode = sdp->sd_jdesc->jd_inode;
601ef0d52e96175 Bob Peterson 2020-01-28   97  	struct gfs2_inode *ip = GFS2_I(inode);
601ef0d52e96175 Bob Peterson 2020-01-28   98  	u64 no_formal_ino = ip->i_no_formal_ino;
601ef0d52e96175 Bob Peterson 2020-01-28   99  	int ret = 0;
601ef0d52e96175 Bob Peterson 2020-01-28  100  	int tries;
601ef0d52e96175 Bob Peterson 2020-01-28  101  
601ef0d52e96175 Bob Peterson 2020-01-28  102  	if (test_bit(SDF_NORECOVERY, &sdp->sd_flags))
601ef0d52e96175 Bob Peterson 2020-01-28  103  		return;
601ef0d52e96175 Bob Peterson 2020-01-28  104  
601ef0d52e96175 Bob Peterson 2020-01-28  105  	/* Prevent any glock dq until withdraw recovery is complete */
601ef0d52e96175 Bob Peterson 2020-01-28  106  	set_bit(SDF_WITHDRAW_RECOVERY, &sdp->sd_flags);
601ef0d52e96175 Bob Peterson 2020-01-28  107  	/*
601ef0d52e96175 Bob Peterson 2020-01-28  108  	 * Don't tell dlm we're bailing until we have no more buffers in the
601ef0d52e96175 Bob Peterson 2020-01-28  109  	 * wind. If journal had an IO error, the log code should just purge
601ef0d52e96175 Bob Peterson 2020-01-28  110  	 * the outstanding buffers rather than submitting new IO. Making the
601ef0d52e96175 Bob Peterson 2020-01-28  111  	 * file system read-only will flush the journal, etc.
601ef0d52e96175 Bob Peterson 2020-01-28  112  	 *
601ef0d52e96175 Bob Peterson 2020-01-28  113  	 * During a normal unmount, gfs2_make_fs_ro calls gfs2_log_shutdown
601ef0d52e96175 Bob Peterson 2020-01-28  114  	 * which clears SDF_JOURNAL_LIVE. In a withdraw, we must not write
601ef0d52e96175 Bob Peterson 2020-01-28  115  	 * any UNMOUNT log header, so we can't call gfs2_log_shutdown, and
601ef0d52e96175 Bob Peterson 2020-01-28  116  	 * therefore we need to clear SDF_JOURNAL_LIVE manually.
601ef0d52e96175 Bob Peterson 2020-01-28  117  	 */
601ef0d52e96175 Bob Peterson 2020-01-28  118  	clear_bit(SDF_JOURNAL_LIVE, &sdp->sd_flags);
601ef0d52e96175 Bob Peterson 2020-01-28  119  	if (!sb_rdonly(sdp->sd_vfs))
601ef0d52e96175 Bob Peterson 2020-01-28  120  		ret = gfs2_make_fs_ro(sdp);
601ef0d52e96175 Bob Peterson 2020-01-28  121  
601ef0d52e96175 Bob Peterson 2020-01-28  122  	/*
601ef0d52e96175 Bob Peterson 2020-01-28  123  	 * Drop the glock for our journal so another node can recover it.
601ef0d52e96175 Bob Peterson 2020-01-28  124  	 */
601ef0d52e96175 Bob Peterson 2020-01-28  125  	if (gfs2_holder_initialized(&sdp->sd_journal_gh)) {
601ef0d52e96175 Bob Peterson 2020-01-28 @126  		gfs2_glock_dq_wait(&sdp->sd_journal_gh);
601ef0d52e96175 Bob Peterson 2020-01-28  127  		gfs2_holder_uninit(&sdp->sd_journal_gh);
601ef0d52e96175 Bob Peterson 2020-01-28  128  	}
601ef0d52e96175 Bob Peterson 2020-01-28  129  	sdp->sd_jinode_gh.gh_flags |= GL_NOCACHE;
601ef0d52e96175 Bob Peterson 2020-01-28  130  	gfs2_glock_dq(&sdp->sd_jinode_gh);
601ef0d52e96175 Bob Peterson 2020-01-28  131  	if (test_bit(SDF_FS_FROZEN, &sdp->sd_flags)) {
601ef0d52e96175 Bob Peterson 2020-01-28  132  		/* Make sure gfs2_unfreeze works if partially-frozen */
601ef0d52e96175 Bob Peterson 2020-01-28  133  		flush_workqueue(gfs2_freeze_wq);
601ef0d52e96175 Bob Peterson 2020-01-28  134  		atomic_set(&sdp->sd_freeze_state, SFS_FROZEN);
601ef0d52e96175 Bob Peterson 2020-01-28  135  		thaw_super(sdp->sd_vfs);
601ef0d52e96175 Bob Peterson 2020-01-28  136  	} else {
601ef0d52e96175 Bob Peterson 2020-01-28  137  		wait_on_bit(&gl->gl_flags, GLF_DEMOTE, TASK_UNINTERRUPTIBLE);
601ef0d52e96175 Bob Peterson 2020-01-28  138  	}
601ef0d52e96175 Bob Peterson 2020-01-28  139  
601ef0d52e96175 Bob Peterson 2020-01-28  140  	/*
601ef0d52e96175 Bob Peterson 2020-01-28  141  	 * holder_uninit to force glock_put, to force dlm to let go
601ef0d52e96175 Bob Peterson 2020-01-28  142  	 */
601ef0d52e96175 Bob Peterson 2020-01-28  143  	gfs2_holder_uninit(&sdp->sd_jinode_gh);
601ef0d52e96175 Bob Peterson 2020-01-28  144  
601ef0d52e96175 Bob Peterson 2020-01-28  145  	/*
601ef0d52e96175 Bob Peterson 2020-01-28  146  	 * Note: We need to be careful here:
601ef0d52e96175 Bob Peterson 2020-01-28  147  	 * Our iput of jd_inode will evict it. The evict will dequeue its
601ef0d52e96175 Bob Peterson 2020-01-28  148  	 * glock, but the glock dq will wait for the withdraw unless we have
601ef0d52e96175 Bob Peterson 2020-01-28  149  	 * exception code in glock_dq.
601ef0d52e96175 Bob Peterson 2020-01-28  150  	 */
601ef0d52e96175 Bob Peterson 2020-01-28  151  	iput(inode);
601ef0d52e96175 Bob Peterson 2020-01-28  152  	/*
601ef0d52e96175 Bob Peterson 2020-01-28  153  	 * Wait until the journal inode's glock is freed. This allows try locks
601ef0d52e96175 Bob Peterson 2020-01-28  154  	 * on other nodes to be successful, otherwise we remain the owner of
601ef0d52e96175 Bob Peterson 2020-01-28  155  	 * the glock as far as dlm is concerned.
601ef0d52e96175 Bob Peterson 2020-01-28  156  	 */
601ef0d52e96175 Bob Peterson 2020-01-28  157  	if (gl->gl_ops->go_free) {
601ef0d52e96175 Bob Peterson 2020-01-28  158  		set_bit(GLF_FREEING, &gl->gl_flags);
601ef0d52e96175 Bob Peterson 2020-01-28  159  		wait_on_bit(&gl->gl_flags, GLF_FREEING, TASK_UNINTERRUPTIBLE);
601ef0d52e96175 Bob Peterson 2020-01-28  160  	}
601ef0d52e96175 Bob Peterson 2020-01-28  161  
601ef0d52e96175 Bob Peterson 2020-01-28  162  	if (sdp->sd_lockstruct.ls_ops->lm_lock == NULL) { /* lock_nolock */
601ef0d52e96175 Bob Peterson 2020-01-28  163  		clear_bit(SDF_WITHDRAW_RECOVERY, &sdp->sd_flags);
601ef0d52e96175 Bob Peterson 2020-01-28  164  		goto skip_recovery;
601ef0d52e96175 Bob Peterson 2020-01-28  165  	}
601ef0d52e96175 Bob Peterson 2020-01-28  166  	/*
601ef0d52e96175 Bob Peterson 2020-01-28  167  	 * Dequeue the "live" glock, but keep a reference so it's never freed.
601ef0d52e96175 Bob Peterson 2020-01-28  168  	 */
601ef0d52e96175 Bob Peterson 2020-01-28  169  	gfs2_glock_hold(gl);
601ef0d52e96175 Bob Peterson 2020-01-28  170  	gfs2_glock_dq_wait(&sdp->sd_live_gh);
601ef0d52e96175 Bob Peterson 2020-01-28  171  	/*
601ef0d52e96175 Bob Peterson 2020-01-28  172  	 * We enqueue the "live" glock in EX so that all other nodes
601ef0d52e96175 Bob Peterson 2020-01-28  173  	 * get a demote request and act on it. We don't really want the
601ef0d52e96175 Bob Peterson 2020-01-28  174  	 * lock in EX, so we send a "try" lock with 1CB to produce a callback.
601ef0d52e96175 Bob Peterson 2020-01-28  175  	 */
601ef0d52e96175 Bob Peterson 2020-01-28  176  	fs_warn(sdp, "Requesting recovery of jid %d.\n",
601ef0d52e96175 Bob Peterson 2020-01-28  177  		sdp->sd_lockstruct.ls_jid);
601ef0d52e96175 Bob Peterson 2020-01-28  178  	gfs2_holder_reinit(LM_ST_EXCLUSIVE, LM_FLAG_TRY_1CB | LM_FLAG_NOEXP,
601ef0d52e96175 Bob Peterson 2020-01-28  179  			   &sdp->sd_live_gh);
601ef0d52e96175 Bob Peterson 2020-01-28  180  	msleep(GL_GLOCK_MAX_HOLD);
601ef0d52e96175 Bob Peterson 2020-01-28  181  	/*
601ef0d52e96175 Bob Peterson 2020-01-28  182  	 * This will likely fail in a cluster, but succeed standalone:
601ef0d52e96175 Bob Peterson 2020-01-28  183  	 */
601ef0d52e96175 Bob Peterson 2020-01-28  184  	ret = gfs2_glock_nq(&sdp->sd_live_gh);
601ef0d52e96175 Bob Peterson 2020-01-28  185  
601ef0d52e96175 Bob Peterson 2020-01-28  186  	/*
601ef0d52e96175 Bob Peterson 2020-01-28  187  	 * If we actually got the "live" lock in EX mode, there are no other
601ef0d52e96175 Bob Peterson 2020-01-28  188  	 * nodes available to replay our journal. So we try to replay it
601ef0d52e96175 Bob Peterson 2020-01-28  189  	 * ourselves. We hold the "live" glock to prevent other mounters
601ef0d52e96175 Bob Peterson 2020-01-28  190  	 * during recovery, then just dequeue it and reacquire it in our
601ef0d52e96175 Bob Peterson 2020-01-28  191  	 * normal SH mode. Just in case the problem that caused us to
601ef0d52e96175 Bob Peterson 2020-01-28  192  	 * withdraw prevents us from recovering our journal (e.g. io errors
601ef0d52e96175 Bob Peterson 2020-01-28  193  	 * and such) we still check if the journal is clean before proceeding
601ef0d52e96175 Bob Peterson 2020-01-28  194  	 * but we may wait forever until another mounter does the recovery.
601ef0d52e96175 Bob Peterson 2020-01-28  195  	 */
601ef0d52e96175 Bob Peterson 2020-01-28  196  	if (ret == 0) {
601ef0d52e96175 Bob Peterson 2020-01-28  197  		fs_warn(sdp, "No other mounters found. Trying to recover our "
601ef0d52e96175 Bob Peterson 2020-01-28  198  			"own journal jid %d.\n", sdp->sd_lockstruct.ls_jid);
601ef0d52e96175 Bob Peterson 2020-01-28  199  		if (gfs2_recover_journal(sdp->sd_jdesc, 1))
601ef0d52e96175 Bob Peterson 2020-01-28  200  			fs_warn(sdp, "Unable to recover our journal jid %d.\n",
601ef0d52e96175 Bob Peterson 2020-01-28  201  				sdp->sd_lockstruct.ls_jid);
601ef0d52e96175 Bob Peterson 2020-01-28  202  		gfs2_glock_dq_wait(&sdp->sd_live_gh);
601ef0d52e96175 Bob Peterson 2020-01-28  203  		gfs2_holder_reinit(LM_ST_SHARED, LM_FLAG_NOEXP | GL_EXACT,
601ef0d52e96175 Bob Peterson 2020-01-28  204  				   &sdp->sd_live_gh);
601ef0d52e96175 Bob Peterson 2020-01-28  205  		gfs2_glock_nq(&sdp->sd_live_gh);
601ef0d52e96175 Bob Peterson 2020-01-28  206  	}
601ef0d52e96175 Bob Peterson 2020-01-28  207  
601ef0d52e96175 Bob Peterson 2020-01-28  208  	gfs2_glock_queue_put(gl); /* drop the extra reference we acquired */
601ef0d52e96175 Bob Peterson 2020-01-28  209  	clear_bit(SDF_WITHDRAW_RECOVERY, &sdp->sd_flags);
601ef0d52e96175 Bob Peterson 2020-01-28  210  
601ef0d52e96175 Bob Peterson 2020-01-28  211  	/*
601ef0d52e96175 Bob Peterson 2020-01-28  212  	 * At this point our journal is evicted, so we need to get a new inode
601ef0d52e96175 Bob Peterson 2020-01-28  213  	 * for it. Once done, we need to call gfs2_find_jhead which
601ef0d52e96175 Bob Peterson 2020-01-28  214  	 * calls gfs2_map_journal_extents to map it for us again.
601ef0d52e96175 Bob Peterson 2020-01-28  215  	 *
601ef0d52e96175 Bob Peterson 2020-01-28  216  	 * Note that we don't really want it to look up a FREE block. The
601ef0d52e96175 Bob Peterson 2020-01-28  217  	 * GFS2_BLKST_FREE simply overrides a block check in gfs2_inode_lookup
601ef0d52e96175 Bob Peterson 2020-01-28  218  	 * which would otherwise fail because it requires grabbing an rgrp
601ef0d52e96175 Bob Peterson 2020-01-28  219  	 * glock, which would fail with -EIO because we're withdrawing.
601ef0d52e96175 Bob Peterson 2020-01-28  220  	 */
601ef0d52e96175 Bob Peterson 2020-01-28  221  	inode = gfs2_inode_lookup(sdp->sd_vfs, DT_UNKNOWN,
601ef0d52e96175 Bob Peterson 2020-01-28  222  				  sdp->sd_jdesc->jd_no_addr, no_formal_ino,
601ef0d52e96175 Bob Peterson 2020-01-28  223  				  GFS2_BLKST_FREE);
601ef0d52e96175 Bob Peterson 2020-01-28  224  	if (IS_ERR(inode)) {
601ef0d52e96175 Bob Peterson 2020-01-28  225  		fs_warn(sdp, "Reprocessing of jid %d failed with %ld.\n",
601ef0d52e96175 Bob Peterson 2020-01-28  226  			sdp->sd_lockstruct.ls_jid, PTR_ERR(inode));
601ef0d52e96175 Bob Peterson 2020-01-28  227  		goto skip_recovery;
601ef0d52e96175 Bob Peterson 2020-01-28  228  	}
601ef0d52e96175 Bob Peterson 2020-01-28  229  	sdp->sd_jdesc->jd_inode = inode;
601ef0d52e96175 Bob Peterson 2020-01-28  230  
601ef0d52e96175 Bob Peterson 2020-01-28  231  	/*
601ef0d52e96175 Bob Peterson 2020-01-28  232  	 * Now wait until recovery is complete.
601ef0d52e96175 Bob Peterson 2020-01-28  233  	 */
601ef0d52e96175 Bob Peterson 2020-01-28  234  	for (tries = 0; tries < 10; tries++) {
7d9f9249580e05a Bob Peterson 2019-02-18  235  		ret = check_journal_clean(sdp, sdp->sd_jdesc, false);
601ef0d52e96175 Bob Peterson 2020-01-28  236  		if (!ret)
601ef0d52e96175 Bob Peterson 2020-01-28  237  			break;
601ef0d52e96175 Bob Peterson 2020-01-28  238  		msleep(HZ);
601ef0d52e96175 Bob Peterson 2020-01-28  239  		fs_warn(sdp, "Waiting for journal recovery jid %d.\n",
601ef0d52e96175 Bob Peterson 2020-01-28  240  			sdp->sd_lockstruct.ls_jid);
601ef0d52e96175 Bob Peterson 2020-01-28  241  	}
601ef0d52e96175 Bob Peterson 2020-01-28  242  skip_recovery:
601ef0d52e96175 Bob Peterson 2020-01-28  243  	if (!ret)
601ef0d52e96175 Bob Peterson 2020-01-28  244  		fs_warn(sdp, "Journal recovery complete for jid %d.\n",
601ef0d52e96175 Bob Peterson 2020-01-28  245  			sdp->sd_lockstruct.ls_jid);
601ef0d52e96175 Bob Peterson 2020-01-28  246  	else
601ef0d52e96175 Bob Peterson 2020-01-28  247  		fs_warn(sdp, "Journal recovery skipped for %d until next "
601ef0d52e96175 Bob Peterson 2020-01-28  248  			"mount.\n", sdp->sd_lockstruct.ls_jid);
601ef0d52e96175 Bob Peterson 2020-01-28  249  	fs_warn(sdp, "Glock dequeues delayed: %lu\n", sdp->sd_glock_dqs_held);
601ef0d52e96175 Bob Peterson 2020-01-28  250  	sdp->sd_glock_dqs_held = 0;
601ef0d52e96175 Bob Peterson 2020-01-28  251  	wake_up_bit(&sdp->sd_flags, SDF_WITHDRAW_RECOVERY);
601ef0d52e96175 Bob Peterson 2020-01-28  252  }
601ef0d52e96175 Bob Peterson 2020-01-28  253  

:::::: The code at line 126 was first introduced by commit
:::::: 601ef0d52e9617588fcff3df26953592f2eb44ac gfs2: Force withdraw to replay journals and wait for it to finish

:::::: TO: Bob Peterson <rpeterso@redhat.com>
:::::: CC: Bob Peterson <rpeterso@redhat.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all at lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 19349 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/cluster-devel/attachments/20200417/2336dfce/attachment.gz>

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-04-17 14:35 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-04-17  7:36 [Cluster-devel] [gfs2:gfs2-iopen 12/12] fs/gfs2/util.c:126:3: error: implicit declaration of function 'gfs2_glock_dq_wait'; did you mean 'gfs2_glock_nq_init'? kbuild test robot
2020-04-17 12:23 ` Andreas Gruenbacher
2020-04-17 13:09   ` Bob Peterson
2020-04-17 14:27     ` [Cluster-devel] [gfs2:gfs2-iopen 12/12] fs/gfs2/util.c:126:3: error: implicit declaration of function Andreas Gruenbacher
2020-04-17 14:35       ` Bob Peterson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).