tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git 
for-next.recovery13b
head:   cf2f68a84c174e525b7578e00c3eba466ff49069
commit: eb0e4ab2fe9e1b15eb5820b8e2989982f644ae28 [18/23] gfs2: Do log_flush in 
gfs2_ail_empty_gl even if ail list is empty
config: c6x-allyesconfig (attached as .config)
compiler: c6x-elf-gcc (GCC) 7.5.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 eb0e4ab2fe9e1b15eb5820b8e2989982f644ae28
        # save the attached .config to linux build tree
        GCC_VERSION=7.5.0 make.cross ARCH=c6x 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <[email protected]>

All errors (new ones prefixed by >>):

   fs/gfs2/glops.c: In function 'gfs2_ail_empty_gl':
>> fs/gfs2/glops.c:109:25: error: 'struct gfs2_sbd' has no member named 
>> 'sd_log_le_revoke'; did you mean 'sd_log_num_revoke'?
      if (!list_empty(&sdp->sd_log_le_revoke)) {
                            ^~~~~~~~~~~~~~~~
                            sd_log_num_revoke

vim +109 fs/gfs2/glops.c

    82  
    83  
    84  static void gfs2_ail_empty_gl(struct gfs2_glock *gl)
    85  {
    86          struct gfs2_sbd *sdp = gl->gl_name.ln_sbd;
    87          struct gfs2_trans tr;
    88  
    89          memset(&tr, 0, sizeof(tr));
    90          INIT_LIST_HEAD(&tr.tr_buf);
    91          INIT_LIST_HEAD(&tr.tr_databuf);
    92          set_bit(TR_ATTACHED, &tr.tr_flags); /* prevent gfs2_trans_end 
free */
    93          tr.tr_revokes = atomic_read(&gl->gl_ail_count);
    94  
    95          if (!tr.tr_revokes) {
    96                  /*
    97                   * We have nothing on the ail, but there could be 
revokes on
    98                   * the sdp revoke queue, in which case, we still want 
to flush
    99                   * the log and wait for it to finish.
   100                   *
   101                   * If the sdp revoke list is empty too, we might still 
have an
   102                   * io outstanding for writing revokes, so we should 
wait for
   103                   * it before returning.
   104                   *
   105                   * If none of these conditions are true, our revokes 
are all
   106                   * flushed and we can return.
   107                   */
   108                  gfs2_log_lock(sdp);
 > 109                  if (!list_empty(&sdp->sd_log_le_revoke)) {
   110                          gfs2_log_unlock(sdp);
   111                          goto flush;
   112                  } else if (atomic_read(&sdp->sd_log_in_flight)) {
   113                          gfs2_log_unlock(sdp);
   114                          log_flush_wait(sdp);
   115                  } else {
   116                          gfs2_log_unlock(sdp);
   117                  }
   118                  return;
   119          }
   120  
   121          /* A shortened, inline version of gfs2_trans_begin()
   122           * tr->alloced is not set since the transaction structure is
   123           * on the stack */
   124          tr.tr_reserved = 1 + gfs2_struct2blk(sdp, tr.tr_revokes, 
sizeof(u64));
   125          tr.tr_ip = _RET_IP_;
   126          if (gfs2_log_reserve(sdp, tr.tr_reserved) < 0)
   127                  return;
   128          WARN_ON_ONCE(current->journal_info);
   129          current->journal_info = &tr;
   130  
   131          __gfs2_ail_flush(gl, 0, tr.tr_revokes);
   132  
   133          gfs2_trans_end(sdp);
   134  flush:
   135          gfs2_log_flush(sdp, NULL, GFS2_LOG_HEAD_FLUSH_NORMAL |
   136                         GFS2_LFC_AIL_EMPTY_GL);
   137  }
   138  

---
0-DAY kernel test infrastructure                 Open Source Technology Center
https://lists.01.org/hyperkitty/list/[email protected] Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to