All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [djwong-xfs:scrub-rtsummary 23/25] fs/xfs/scrub/array.c:627:2: error: implicit declaration of function 'trace_xfbma_sort_stats'
Date: Tue, 23 Jun 2020 15:22:36 +0800	[thread overview]
Message-ID: <202006231534.GlSY4MJD%lkp@intel.com> (raw)

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git scrub-rtsummary
head:   6a3195f0b8086aa941c656f91b7a0498e15aad0d
commit: 6fdc49bc994d255e80d09aece3521849005b956a [23/25] xfs: create a big array data structure
config: x86_64-kexec (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce (this is a W=1 build):
        git checkout 6fdc49bc994d255e80d09aece3521849005b956a
        # save the attached .config to linux build tree
        make W=1 ARCH=x86_64 

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

All errors (new ones prefixed by >>):

   fs/xfs/scrub/array.c: In function 'xfbma_sort':
>> fs/xfs/scrub/array.c:627:2: error: implicit declaration of function 'trace_xfbma_sort_stats' [-Werror=implicit-function-declaration]
     627 |  trace_xfbma_sort_stats(array->nr, max_stack_depth, max_stack_used,
         |  ^~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +/trace_xfbma_sort_stats +627 fs/xfs/scrub/array.c

   468	
   469	/*
   470	 * For array subsets smaller than 4 elements, it's slightly faster to use
   471	 * insertion sort than quicksort's stack machine.
   472	 */
   473	#define ISORT_THRESHOLD		(4)
   474	int
   475	xfbma_sort(
   476		struct xfbma	*array,
   477		xfbma_cmp_fn	cmp_fn)
   478	{
   479		int64_t		*stack;
   480		int64_t		*beg;
   481		int64_t		*end;
   482		void		*pivot = xfbma_temp(array, 0);
   483		void		*temp = xfbma_temp(array, 1);
   484		int64_t		lo, mid, hi;
   485		const int	max_stack_depth = ilog2(array->nr) + 1;
   486		int		stack_depth = 0;
   487		int		max_stack_used = 0;
   488		int		error = 0;
   489	
   490		if (array->nr == 0)
   491			return 0;
   492		if (array->nr >= QSORT_MAX_RECS)
   493			return -E2BIG;
   494		if (array->nr <= ISORT_THRESHOLD)
   495			return xfbma_isort(array, cmp_fn, 0, array->nr - 1);
   496	
   497		/* Allocate our pointer stacks for sorting. */
   498		stack = kmem_alloc(sizeof(int64_t) * 2 * max_stack_depth,
   499				KM_NOFS | KM_MAYFAIL);
   500		if (!stack)
   501			return -ENOMEM;
   502		beg = stack;
   503		end = &stack[max_stack_depth];
   504	
   505		beg[0] = 0;
   506		end[0] = array->nr;
   507		while (stack_depth >= 0) {
   508			lo = beg[stack_depth];
   509			hi = end[stack_depth] - 1;
   510	
   511			/* Nothing left in this partition to sort; pop stack. */
   512			if (lo >= hi) {
   513				stack_depth--;
   514				continue;
   515			}
   516	
   517			/* Small enough for insertion sort? */
   518			if (hi - lo <= ISORT_THRESHOLD) {
   519				error = xfbma_isort(array, cmp_fn, lo, hi);
   520				if (error)
   521					goto out_free;
   522				stack_depth--;
   523				continue;
   524			}
   525	
   526			/* Pick a pivot, move it to a[lo] and stash it. */
   527			mid = lo + ((hi - lo) / 2);
   528			error = xfbma_qsort_pivot(array, cmp_fn, lo, mid, hi);
   529			if (error)
   530				goto out_free;
   531	
   532			error = xfbma_get(array, lo, pivot);
   533			if (error)
   534				goto out_free;
   535	
   536			/*
   537			 * Rearrange a[lo..hi] such that everything smaller than the
   538			 * pivot is on the left side of the range and everything larger
   539			 * than the pivot is on the right side of the range.
   540			 */
   541			while (lo < hi) {
   542				/*
   543				 * Decrement hi until it finds an a[hi] less than the
   544				 * pivot value.
   545				 */
   546				error = xfbma_get(array, hi, temp);
   547				if (error)
   548					goto out_free;
   549				while (cmp_fn(temp, pivot) >= 0 && lo < hi) {
   550					hi--;
   551					error = xfbma_get(array, hi, temp);
   552					if (error)
   553						goto out_free;
   554				}
   555	
   556				/* Copy that item (a[hi]) to a[lo]. */
   557				if (lo < hi) {
   558					error = xfbma_set(array, lo++, temp);
   559					if (error)
   560						goto out_free;
   561				}
   562	
   563				/*
   564				 * Increment lo until it finds an a[lo] greater than
   565				 * the pivot value.
   566				 */
   567				error = xfbma_get(array, lo, temp);
   568				if (error)
   569					goto out_free;
   570				while (cmp_fn(temp, pivot) <= 0 && lo < hi) {
   571					lo++;
   572					error = xfbma_get(array, lo, temp);
   573					if (error)
   574						goto out_free;
   575				}
   576	
   577				/* Copy that item (a[lo]) to a[hi]. */
   578				if (lo < hi) {
   579					error = xfbma_set(array, hi--, temp);
   580					if (error)
   581						goto out_free;
   582				}
   583			}
   584	
   585			/*
   586			 * Put our pivot value in the correct place@a[lo].  All
   587			 * values between a[beg[i]] and a[lo - 1] should be less than
   588			 * the pivot; and all values between a[lo + 1] and a[end[i]-1]
   589			 * should be greater than the pivot.
   590			 */
   591			error = xfbma_set(array, lo, pivot);
   592			if (error)
   593				goto out_free;
   594	
   595			/*
   596			 * Set up the pointers for the next iteration.  We push onto
   597			 * the stack all of the unsorted values between a[lo + 1] and
   598			 * a[end[i]], and we tweak the current stack frame to point to
   599			 * the unsorted values between a[beg[i]] and a[lo] so that
   600			 * those values will be sorted when we pop the stack.
   601			 */
   602			beg[stack_depth + 1] = lo + 1;
   603			end[stack_depth + 1] = end[stack_depth];
   604			end[stack_depth++] = lo;
   605	
   606			/* Check our stack usage. */
   607			max_stack_used = max(max_stack_used, stack_depth);
   608			if (stack_depth >= max_stack_depth) {
   609				ASSERT(0);
   610				error = -EFSCORRUPTED;
   611				goto out_free;
   612			}
   613	
   614			/*
   615			 * Always start with the smaller of the two partitions to keep
   616			 * the amount of recursion in check.
   617			 */
   618			if (end[stack_depth] - beg[stack_depth] >
   619			    end[stack_depth - 1] - beg[stack_depth - 1]) {
   620				swap(beg[stack_depth], beg[stack_depth - 1]);
   621				swap(end[stack_depth], end[stack_depth - 1]);
   622			}
   623		}
   624	
   625	out_free:
   626		kfree(stack);
 > 627		trace_xfbma_sort_stats(array->nr, max_stack_depth, max_stack_used,
   628				error);
   629		return error;
   630	}
   631	

---
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: 28075 bytes --]

                 reply	other threads:[~2020-06-23  7:22 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=202006231534.GlSY4MJD%lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.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.