Building the Linux kernel with Clang and LLVM
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Jeff Layton <jlayton@kernel.org>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev
Subject: Re: [PATCH v7 05/11] fs: tracepoints around multigrain timestamp events
Date: Sat, 14 Sep 2024 03:59:38 +0800	[thread overview]
Message-ID: <202409140329.Xi9OLY1D-lkp@intel.com> (raw)
In-Reply-To: <20240913-mgtime-v7-5-92d4020e3b00@kernel.org>

Hi Jeff,

kernel test robot noticed the following build warnings:

[auto build test WARNING on da3ea35007d0af457a0afc87e84fddaebc4e0b63]

url:    https://github.com/intel-lab-lkp/linux/commits/Jeff-Layton/timekeeping-move-multigrain-timestamp-floor-handling-into-timekeeper/20240913-215718
base:   da3ea35007d0af457a0afc87e84fddaebc4e0b63
patch link:    https://lore.kernel.org/r/20240913-mgtime-v7-5-92d4020e3b00%40kernel.org
patch subject: [PATCH v7 05/11] fs: tracepoints around multigrain timestamp events
config: x86_64-allnoconfig (https://download.01.org/0day-ci/archive/20240914/202409140329.Xi9OLY1D-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240914/202409140329.Xi9OLY1D-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202409140329.Xi9OLY1D-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> fs/inode.c:2691:3: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation]
    2691 |                 goto out;
         |                 ^
   fs/inode.c:2689:2: note: previous statement is here
    2689 |         if (cns == now.tv_nsec && inode->i_ctime_sec == now.tv_sec)
         |         ^
   fs/inode.c:2771:3: error: call to undeclared function 'mgtime_counter_inc'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    2771 |                 mgtime_counter_inc(mg_ctime_swaps);
         |                 ^
   fs/inode.c:2771:3: note: did you mean 'percpu_counter_inc'?
   include/linux/percpu_counter.h:265:20: note: 'percpu_counter_inc' declared here
     265 | static inline void percpu_counter_inc(struct percpu_counter *fbc)
         |                    ^
   fs/inode.c:2771:22: error: use of undeclared identifier 'mg_ctime_swaps'
    2771 |                 mgtime_counter_inc(mg_ctime_swaps);
         |                                    ^
   1 warning and 2 errors generated.


vim +/if +2691 fs/inode.c

50e17c000c467f Deepa Dinamani 2018-01-21  2642  
3cd886666ff19e Deepa Dinamani 2016-09-14  2643  /**
6190d23e434516 Jeff Layton    2024-09-13  2644   * inode_set_ctime_current - set the ctime to current_time
6190d23e434516 Jeff Layton    2024-09-13  2645   * @inode: inode
3cd886666ff19e Deepa Dinamani 2016-09-14  2646   *
6190d23e434516 Jeff Layton    2024-09-13  2647   * Set the inode's ctime to the current value for the inode. Returns the
6190d23e434516 Jeff Layton    2024-09-13  2648   * current value that was assigned. If this is not a multigrain inode, then we
6190d23e434516 Jeff Layton    2024-09-13  2649   * set it to the later of the coarse time and floor value.
3cd886666ff19e Deepa Dinamani 2016-09-14  2650   *
6190d23e434516 Jeff Layton    2024-09-13  2651   * If it is multigrain, then we first see if the coarse-grained timestamp is
6190d23e434516 Jeff Layton    2024-09-13  2652   * distinct from what we have. If so, then we'll just use that. If we have to
6190d23e434516 Jeff Layton    2024-09-13  2653   * get a fine-grained timestamp, then do so, and try to swap it into the floor.
6190d23e434516 Jeff Layton    2024-09-13  2654   * We accept the new floor value regardless of the outcome of the cmpxchg.
6190d23e434516 Jeff Layton    2024-09-13  2655   * After that, we try to swap the new value into i_ctime_nsec. Again, we take
6190d23e434516 Jeff Layton    2024-09-13  2656   * the resulting ctime, regardless of the outcome of the swap.
3cd886666ff19e Deepa Dinamani 2016-09-14  2657   */
6190d23e434516 Jeff Layton    2024-09-13  2658  struct timespec64 inode_set_ctime_current(struct inode *inode)
3cd886666ff19e Deepa Dinamani 2016-09-14  2659  {
d651d1607f22fd Arnd Bergmann  2018-12-05  2660  	struct timespec64 now;
6190d23e434516 Jeff Layton    2024-09-13  2661  	u32 cns, cur;
6190d23e434516 Jeff Layton    2024-09-13  2662  	u64 cookie;
d651d1607f22fd Arnd Bergmann  2018-12-05  2663  
6190d23e434516 Jeff Layton    2024-09-13  2664  	cookie = ktime_get_coarse_real_ts64_mg(&now);
6190d23e434516 Jeff Layton    2024-09-13  2665  
6190d23e434516 Jeff Layton    2024-09-13  2666  	/* Just return that if this is not a multigrain fs */
6190d23e434516 Jeff Layton    2024-09-13  2667  	if (!is_mgtime(inode)) {
6190d23e434516 Jeff Layton    2024-09-13  2668  		now = timestamp_truncate(now, inode);
6190d23e434516 Jeff Layton    2024-09-13  2669  		inode_set_ctime_to_ts(inode, now);
6190d23e434516 Jeff Layton    2024-09-13  2670  		goto out;
3cd886666ff19e Deepa Dinamani 2016-09-14  2671  	}
3cd886666ff19e Deepa Dinamani 2016-09-14  2672  
6190d23e434516 Jeff Layton    2024-09-13  2673  	/*
6190d23e434516 Jeff Layton    2024-09-13  2674  	 * We only need a fine-grained time if someone has queried it,
6190d23e434516 Jeff Layton    2024-09-13  2675  	 * and the current coarse grained time isn't later than what's
6190d23e434516 Jeff Layton    2024-09-13  2676  	 * already there.
9b6304c1d53745 Jeff Layton    2023-07-05  2677  	 */
6190d23e434516 Jeff Layton    2024-09-13  2678  	cns = smp_load_acquire(&inode->i_ctime_nsec);
6190d23e434516 Jeff Layton    2024-09-13  2679  	if (cns & I_CTIME_QUERIED) {
6190d23e434516 Jeff Layton    2024-09-13  2680  		struct timespec64 ctime = { .tv_sec = inode->i_ctime_sec,
6190d23e434516 Jeff Layton    2024-09-13  2681  					    .tv_nsec = cns & ~I_CTIME_QUERIED };
9b6304c1d53745 Jeff Layton    2023-07-05  2682  
6190d23e434516 Jeff Layton    2024-09-13  2683  		if (timespec64_compare(&now, &ctime) <= 0)
6190d23e434516 Jeff Layton    2024-09-13  2684  			ktime_get_real_ts64_mg(&now, cookie);
6190d23e434516 Jeff Layton    2024-09-13  2685  	}
6190d23e434516 Jeff Layton    2024-09-13  2686  	now = timestamp_truncate(now, inode);
6190d23e434516 Jeff Layton    2024-09-13  2687  
6190d23e434516 Jeff Layton    2024-09-13  2688  	/* No need to cmpxchg if it's exactly the same */
6190d23e434516 Jeff Layton    2024-09-13  2689  	if (cns == now.tv_nsec && inode->i_ctime_sec == now.tv_sec)
b5f00a1efab06a Jeff Layton    2024-09-13  2690  		trace_ctime_xchg_skip(inode, &now);
6190d23e434516 Jeff Layton    2024-09-13 @2691  		goto out;
6190d23e434516 Jeff Layton    2024-09-13  2692  	cur = cns;
6190d23e434516 Jeff Layton    2024-09-13  2693  retry:
6190d23e434516 Jeff Layton    2024-09-13  2694  	/* Try to swap the nsec value into place. */
6190d23e434516 Jeff Layton    2024-09-13  2695  	if (try_cmpxchg(&inode->i_ctime_nsec, &cur, now.tv_nsec)) {
6190d23e434516 Jeff Layton    2024-09-13  2696  		/* If swap occurred, then we're (mostly) done */
6190d23e434516 Jeff Layton    2024-09-13  2697  		inode->i_ctime_sec = now.tv_sec;
b5f00a1efab06a Jeff Layton    2024-09-13  2698  		trace_ctime_ns_xchg(inode, cns, now.tv_nsec, cur);
6190d23e434516 Jeff Layton    2024-09-13  2699  	} else {
6190d23e434516 Jeff Layton    2024-09-13  2700  		/*
6190d23e434516 Jeff Layton    2024-09-13  2701  		 * Was the change due to someone marking the old ctime QUERIED?
6190d23e434516 Jeff Layton    2024-09-13  2702  		 * If so then retry the swap. This can only happen once since
6190d23e434516 Jeff Layton    2024-09-13  2703  		 * the only way to clear I_CTIME_QUERIED is to stamp the inode
6190d23e434516 Jeff Layton    2024-09-13  2704  		 * with a new ctime.
6190d23e434516 Jeff Layton    2024-09-13  2705  		 */
6190d23e434516 Jeff Layton    2024-09-13  2706  		if (!(cns & I_CTIME_QUERIED) && (cns | I_CTIME_QUERIED) == cur) {
6190d23e434516 Jeff Layton    2024-09-13  2707  			cns = cur;
6190d23e434516 Jeff Layton    2024-09-13  2708  			goto retry;
6190d23e434516 Jeff Layton    2024-09-13  2709  		}
6190d23e434516 Jeff Layton    2024-09-13  2710  		/* Otherwise, keep the existing ctime */
6190d23e434516 Jeff Layton    2024-09-13  2711  		now.tv_sec = inode->i_ctime_sec;
6190d23e434516 Jeff Layton    2024-09-13  2712  		now.tv_nsec = cur & ~I_CTIME_QUERIED;
6190d23e434516 Jeff Layton    2024-09-13  2713  	}
6190d23e434516 Jeff Layton    2024-09-13  2714  out:
9b6304c1d53745 Jeff Layton    2023-07-05  2715  	return now;
9b6304c1d53745 Jeff Layton    2023-07-05  2716  }
9b6304c1d53745 Jeff Layton    2023-07-05  2717  EXPORT_SYMBOL(inode_set_ctime_current);
2b3416ceff5e6b Yang Xu        2022-07-14  2718  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

           reply	other threads:[~2024-09-13 20:00 UTC|newest]

Thread overview: expand[flat|nested]  mbox.gz  Atom feed
 [parent not found: <20240913-mgtime-v7-5-92d4020e3b00@kernel.org>]

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=202409140329.Xi9OLY1D-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=jlayton@kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox