All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: cros-kernel-buildreports@googlegroups.com
Cc: oe-kbuild-all@lists.linux.dev
Subject: [android-common:android15-6.6 0/1] include/linux/tracepoint.h:344:27: error: '__tracepoint_rcu_stall_warning' undeclared here (not in a function); did you mean '__tracepoint_rcu_utilization'?
Date: Sat, 18 Jul 2026 13:46:43 +0800	[thread overview]
Message-ID: <202607181332.gWeMA5PX-lkp@intel.com> (raw)

Hi Qinglin,

FYI, the error/warning still remains.

tree:   https://android.googlesource.com/kernel/common android15-6.6
head:   501d3d8ac1cdbcaa1ffdd48ab2c2f0e34184e79b
commit: 3750795f060bc2a41c082b911955dbe87e6f678d [0/1] ANDROID: rcu: allow hooks into rcu stall warning
config: i386-randconfig-012-20260716 (https://download.01.org/0day-ci/archive/20260718/202607181332.gWeMA5PX-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.4.0-5) 12.4.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260718/202607181332.gWeMA5PX-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/202607181332.gWeMA5PX-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from include/linux/linkage.h:7,
                    from include/linux/kernel.h:17,
                    from kernel/rcu/update.c:21:
>> include/linux/tracepoint.h:344:27: error: '__tracepoint_rcu_stall_warning' undeclared here (not in a function); did you mean '__tracepoint_rcu_utilization'?
     344 |         EXPORT_SYMBOL_GPL(__tracepoint_##name);                         \
         |                           ^~~~~~~~~~~~~
   include/linux/export.h:80:23: note: in definition of macro '__EXPORT_SYMBOL'
      80 |         extern typeof(sym) sym;                                 \
         |                       ^~~
   include/linux/export.h:93:41: note: in expansion of macro '_EXPORT_SYMBOL'
      93 | #define EXPORT_SYMBOL_GPL(sym)          _EXPORT_SYMBOL(sym, "GPL")
         |                                         ^~~~~~~~~~~~~~
   include/linux/tracepoint.h:344:9: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
     344 |         EXPORT_SYMBOL_GPL(__tracepoint_##name);                         \
         |         ^~~~~~~~~~~~~~~~~
   kernel/rcu/update.c:52:1: note: in expansion of macro 'EXPORT_TRACEPOINT_SYMBOL_GPL'
      52 | EXPORT_TRACEPOINT_SYMBOL_GPL(rcu_stall_warning);
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/tracepoint.h:345:27: error: '__traceiter_rcu_stall_warning' undeclared here (not in a function); did you mean '__tracepoint_rcu_stall_warning'?
     345 |         EXPORT_SYMBOL_GPL(__traceiter_##name);                          \
         |                           ^~~~~~~~~~~~
   include/linux/export.h:80:23: note: in definition of macro '__EXPORT_SYMBOL'
      80 |         extern typeof(sym) sym;                                 \
         |                       ^~~
   include/linux/export.h:93:41: note: in expansion of macro '_EXPORT_SYMBOL'
      93 | #define EXPORT_SYMBOL_GPL(sym)          _EXPORT_SYMBOL(sym, "GPL")
         |                                         ^~~~~~~~~~~~~~
   include/linux/tracepoint.h:345:9: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
     345 |         EXPORT_SYMBOL_GPL(__traceiter_##name);                          \
         |         ^~~~~~~~~~~~~~~~~
   kernel/rcu/update.c:52:1: note: in expansion of macro 'EXPORT_TRACEPOINT_SYMBOL_GPL'
      52 | EXPORT_TRACEPOINT_SYMBOL_GPL(rcu_stall_warning);
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/static_call_types.h:9:41: error: '__SCK__tp_func_rcu_stall_warning' undeclared here (not in a function); did you mean '__SCK__tp_func_rcu_utilization'?
       9 | #define STATIC_CALL_KEY_PREFIX          __SCK__
         |                                         ^~~~~~~
   include/linux/export.h:80:23: note: in definition of macro '__EXPORT_SYMBOL'
      80 |         extern typeof(sym) sym;                                 \
         |                       ^~~
   include/linux/export.h:93:41: note: in expansion of macro '_EXPORT_SYMBOL'
      93 | #define EXPORT_SYMBOL_GPL(sym)          _EXPORT_SYMBOL(sym, "GPL")
         |                                         ^~~~~~~~~~~~~~
   include/linux/static_call.h:277:9: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
     277 |         EXPORT_SYMBOL_GPL(STATIC_CALL_KEY(name));                       \
         |         ^~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:75:22: note: in expansion of macro '___PASTE'
      75 | #define __PASTE(a,b) ___PASTE(a,b)
         |                      ^~~~~~~~
   include/linux/static_call_types.h:12:41: note: in expansion of macro '__PASTE'
      12 | #define STATIC_CALL_KEY(name)           __PASTE(STATIC_CALL_KEY_PREFIX, name)
         |                                         ^~~~~~~
   include/linux/static_call_types.h:12:49: note: in expansion of macro 'STATIC_CALL_KEY_PREFIX'
      12 | #define STATIC_CALL_KEY(name)           __PASTE(STATIC_CALL_KEY_PREFIX, name)
         |                                                 ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/static_call.h:277:27: note: in expansion of macro 'STATIC_CALL_KEY'
     277 |         EXPORT_SYMBOL_GPL(STATIC_CALL_KEY(name));                       \
         |                           ^~~~~~~~~~~~~~~
   include/linux/tracepoint.h:346:9: note: in expansion of macro 'EXPORT_STATIC_CALL_GPL'
     346 |         EXPORT_STATIC_CALL_GPL(tp_func_##name)
         |         ^~~~~~~~~~~~~~~~~~~~~~
   kernel/rcu/update.c:52:1: note: in expansion of macro 'EXPORT_TRACEPOINT_SYMBOL_GPL'
      52 | EXPORT_TRACEPOINT_SYMBOL_GPL(rcu_stall_warning);
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/static_call_types.h:15:41: error: '__SCT__tp_func_rcu_stall_warning' undeclared here (not in a function); did you mean '__SCK__tp_func_rcu_stall_warning'?
      15 | #define STATIC_CALL_TRAMP_PREFIX        __SCT__
         |                                         ^~~~~~~
   include/linux/export.h:80:23: note: in definition of macro '__EXPORT_SYMBOL'
      80 |         extern typeof(sym) sym;                                 \
         |                       ^~~
   include/linux/export.h:93:41: note: in expansion of macro '_EXPORT_SYMBOL'
      93 | #define EXPORT_SYMBOL_GPL(sym)          _EXPORT_SYMBOL(sym, "GPL")
         |                                         ^~~~~~~~~~~~~~
   include/linux/static_call.h:278:9: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
     278 |         EXPORT_SYMBOL_GPL(STATIC_CALL_TRAMP(name))
         |         ^~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:75:22: note: in expansion of macro '___PASTE'
      75 | #define __PASTE(a,b) ___PASTE(a,b)
         |                      ^~~~~~~~
   include/linux/static_call_types.h:18:41: note: in expansion of macro '__PASTE'
      18 | #define STATIC_CALL_TRAMP(name)         __PASTE(STATIC_CALL_TRAMP_PREFIX, name)
         |                                         ^~~~~~~
   include/linux/static_call_types.h:18:49: note: in expansion of macro 'STATIC_CALL_TRAMP_PREFIX'
      18 | #define STATIC_CALL_TRAMP(name)         __PASTE(STATIC_CALL_TRAMP_PREFIX, name)
         |                                                 ^~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/static_call.h:278:27: note: in expansion of macro 'STATIC_CALL_TRAMP'
     278 |         EXPORT_SYMBOL_GPL(STATIC_CALL_TRAMP(name))
         |                           ^~~~~~~~~~~~~~~~~
   include/linux/tracepoint.h:346:9: note: in expansion of macro 'EXPORT_STATIC_CALL_GPL'
     346 |         EXPORT_STATIC_CALL_GPL(tp_func_##name)
         |         ^~~~~~~~~~~~~~~~~~~~~~
   kernel/rcu/update.c:52:1: note: in expansion of macro 'EXPORT_TRACEPOINT_SYMBOL_GPL'
      52 | EXPORT_TRACEPOINT_SYMBOL_GPL(rcu_stall_warning);
         | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~


vim +344 include/linux/tracepoint.h

7ece55a4a3a04a Josh Triplett             2012-09-04  239  
97e1c18e8d17bd Mathieu Desnoyers         2008-07-18  240  /*
97e1c18e8d17bd Mathieu Desnoyers         2008-07-18  241   * Make sure the alignment of the structure in the __tracepoints section will
97e1c18e8d17bd Mathieu Desnoyers         2008-07-18  242   * not add unwanted padding between the beginning of the section and the
97e1c18e8d17bd Mathieu Desnoyers         2008-07-18  243   * structure. Force alignment to the same alignment as the section start.
3a630178fd5f30 Dave Hansen               2014-08-07  244   *
c2679254b9c998 Steven Rostedt (Google    2023-03-10  245)  * When lockdep is enabled, we make sure to always test if RCU is
c2679254b9c998 Steven Rostedt (Google    2023-03-10  246)  * "watching" regardless if the tracepoint is enabled or not. Tracepoints
c2679254b9c998 Steven Rostedt (Google    2023-03-10  247)  * require RCU to be active, and it should always warn at the tracepoint
c2679254b9c998 Steven Rostedt (Google    2023-03-10  248)  * site if it is not watching, as it will need to be active when the
c2679254b9c998 Steven Rostedt (Google    2023-03-10  249)  * tracepoint is enabled.
97e1c18e8d17bd Mathieu Desnoyers         2008-07-18  250   */
1746fd4416ed55 Steven Rostedt (VMware    2021-02-08  251) #define __DECLARE_TRACE(name, proto, args, cond, data_proto)		\
de394e7568ce2c peterz@infradead.org      2020-09-08  252  	extern int __traceiter_##name(data_proto);			\
de394e7568ce2c peterz@infradead.org      2020-09-08  253  	DECLARE_STATIC_CALL(tp_func_##name, __traceiter_##name);	\
7e066fb870fcd1 Mathieu Desnoyers         2008-11-14  254  	extern struct tracepoint __tracepoint_##name;			\
97e1c18e8d17bd Mathieu Desnoyers         2008-07-18  255  	static inline void trace_##name(proto)				\
97e1c18e8d17bd Mathieu Desnoyers         2008-07-18  256  	{								\
c5905afb0ee655 Ingo Molnar               2012-02-24  257  		if (static_key_false(&__tracepoint_##name.key))		\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  258) 			__DO_TRACE(name,				\
1746fd4416ed55 Steven Rostedt (VMware    2021-02-08  259) 				TP_ARGS(args),				\
d54b6eeb553c89 Steven Rostedt (VMware    2017-04-07  260) 				TP_CONDITION(cond), 0);			\
a05d59a5673339 Steven Rostedt (Red Hat   2015-02-06  261) 		if (IS_ENABLED(CONFIG_LOCKDEP) && (cond)) {		\
c2679254b9c998 Steven Rostedt (Google    2023-03-10  262) 			WARN_ON_ONCE(!rcu_is_watching());		\
3a630178fd5f30 Dave Hansen               2014-08-07  263  		}							\
2fbb90db1b8fcc Steven Rostedt            2012-02-07  264  	}								\
7ece55a4a3a04a Josh Triplett             2012-09-04  265  	__DECLARE_TRACE_RCU(name, PARAMS(proto), PARAMS(args),		\
1746fd4416ed55 Steven Rostedt (VMware    2021-02-08  266) 			    PARAMS(cond))				\
38516ab59fbc5b Steven Rostedt            2010-04-20  267  	static inline int						\
38516ab59fbc5b Steven Rostedt            2010-04-20  268  	register_trace_##name(void (*probe)(data_proto), void *data)	\
97e1c18e8d17bd Mathieu Desnoyers         2008-07-18  269  	{								\
de7b2973903c6c Mathieu Desnoyers         2014-04-08  270  		return tracepoint_probe_register(&__tracepoint_##name,	\
de7b2973903c6c Mathieu Desnoyers         2014-04-08  271  						(void *)probe, data);	\
97e1c18e8d17bd Mathieu Desnoyers         2008-07-18  272  	}								\
38516ab59fbc5b Steven Rostedt            2010-04-20  273  	static inline int						\
7904b5c4988e18 Steven Rostedt (Red Hat   2015-09-22  274) 	register_trace_prio_##name(void (*probe)(data_proto), void *data,\
7904b5c4988e18 Steven Rostedt (Red Hat   2015-09-22  275) 				   int prio)				\
7904b5c4988e18 Steven Rostedt (Red Hat   2015-09-22  276) 	{								\
7904b5c4988e18 Steven Rostedt (Red Hat   2015-09-22  277) 		return tracepoint_probe_register_prio(&__tracepoint_##name, \
7904b5c4988e18 Steven Rostedt (Red Hat   2015-09-22  278) 					      (void *)probe, data, prio); \
7904b5c4988e18 Steven Rostedt (Red Hat   2015-09-22  279) 	}								\
7904b5c4988e18 Steven Rostedt (Red Hat   2015-09-22  280) 	static inline int						\
38516ab59fbc5b Steven Rostedt            2010-04-20  281  	unregister_trace_##name(void (*probe)(data_proto), void *data)	\
97e1c18e8d17bd Mathieu Desnoyers         2008-07-18  282  	{								\
de7b2973903c6c Mathieu Desnoyers         2014-04-08  283  		return tracepoint_probe_unregister(&__tracepoint_##name,\
de7b2973903c6c Mathieu Desnoyers         2014-04-08  284  						(void *)probe, data);	\
53da59aa6dd881 Mathieu Desnoyers         2010-04-30  285  	}								\
38516ab59fbc5b Steven Rostedt            2010-04-20  286  	static inline void						\
38516ab59fbc5b Steven Rostedt            2010-04-20  287  	check_trace_callback_type_##name(void (*cb)(data_proto))	\
53da59aa6dd881 Mathieu Desnoyers         2010-04-30  288  	{								\
7c65bbc7dcface Steven Rostedt (Red Hat   2014-05-06  289) 	}								\
7c65bbc7dcface Steven Rostedt (Red Hat   2014-05-06  290) 	static inline bool						\
7c65bbc7dcface Steven Rostedt (Red Hat   2014-05-06  291) 	trace_##name##_enabled(void)					\
7c65bbc7dcface Steven Rostedt (Red Hat   2014-05-06  292) 	{								\
7c65bbc7dcface Steven Rostedt (Red Hat   2014-05-06  293) 		return static_key_false(&__tracepoint_##name.key);	\
97e1c18e8d17bd Mathieu Desnoyers         2008-07-18  294  	}
97e1c18e8d17bd Mathieu Desnoyers         2008-07-18  295  
654986462939cd Mathieu Desnoyers         2011-01-26  296  /*
654986462939cd Mathieu Desnoyers         2011-01-26  297   * We have no guarantee that gcc and the linker won't up-align the tracepoint
654986462939cd Mathieu Desnoyers         2011-01-26  298   * structures, so we create an array of pointers that will be used for iteration
654986462939cd Mathieu Desnoyers         2011-01-26  299   * on the tracepoints.
654986462939cd Mathieu Desnoyers         2011-01-26  300   */
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  301) #define DEFINE_TRACE_FN(_name, _reg, _unreg, proto, args)		\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  302) 	static const char __tpstrtab_##_name[]				\
33def8498fdde1 Joe Perches               2020-10-21  303  	__section("__tracepoints_strings") = #_name;			\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  304) 	extern struct static_call_key STATIC_CALL_KEY(tp_func_##_name);	\
de394e7568ce2c peterz@infradead.org      2020-09-08  305  	int __traceiter_##_name(void *__data, proto);			\
e2d0d7b2f42dca Masami Hiramatsu (Google  2023-06-06  306) 	void __probestub_##_name(void *__data, proto);			\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  307) 	struct tracepoint __tracepoint_##_name	__used			\
33def8498fdde1 Joe Perches               2020-10-21  308  	__section("__tracepoints") = {					\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  309) 		.name = __tpstrtab_##_name,				\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  310) 		.key = STATIC_KEY_INIT_FALSE,				\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  311) 		.static_call_key = &STATIC_CALL_KEY(tp_func_##_name),	\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  312) 		.static_call_tramp = STATIC_CALL_TRAMP_ADDR(tp_func_##_name), \
de394e7568ce2c peterz@infradead.org      2020-09-08  313  		.iterator = &__traceiter_##_name,			\
e2d0d7b2f42dca Masami Hiramatsu (Google  2023-06-06  314) 		.probestub = &__probestub_##_name,			\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  315) 		.regfunc = _reg,					\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  316) 		.unregfunc = _unreg,					\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  317) 		.funcs = NULL };					\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  318) 	__TRACEPOINT_ENTRY(_name);					\
de394e7568ce2c peterz@infradead.org      2020-09-08  319  	int __traceiter_##_name(void *__data, proto)			\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  320) 	{								\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  321) 		struct tracepoint_func *it_func_ptr;			\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  322) 		void *it_func;						\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  323) 									\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  324) 		it_func_ptr =						\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  325) 			rcu_dereference_raw((&__tracepoint_##_name)->funcs); \
c8b186a8d54d7e Alexey Kardashevskiy      2021-02-02  326  		if (it_func_ptr) {					\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  327) 			do {						\
7211f0a25781ac Steven Rostedt (VMware    2021-02-04  328) 				it_func = READ_ONCE((it_func_ptr)->func); \
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  329) 				__data = (it_func_ptr)->data;		\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  330) 				((void(*)(void *, proto))(it_func))(__data, args); \
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  331) 			} while ((++it_func_ptr)->func);		\
c8b186a8d54d7e Alexey Kardashevskiy      2021-02-02  332  		}							\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  333) 		return 0;						\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  334) 	}								\
e2d0d7b2f42dca Masami Hiramatsu (Google  2023-06-06  335) 	void __probestub_##_name(void *__data, proto)			\
e2d0d7b2f42dca Masami Hiramatsu (Google  2023-06-06  336) 	{								\
e2d0d7b2f42dca Masami Hiramatsu (Google  2023-06-06  337) 	}								\
de394e7568ce2c peterz@infradead.org      2020-09-08  338  	DEFINE_STATIC_CALL(tp_func_##_name, __traceiter_##_name);
97419875865859 Josh Stone                2009-08-24  339  
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  340) #define DEFINE_TRACE(name, proto, args)		\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  341) 	DEFINE_TRACE_FN(name, NULL, NULL, PARAMS(proto), PARAMS(args));
7e066fb870fcd1 Mathieu Desnoyers         2008-11-14  342  
7e066fb870fcd1 Mathieu Desnoyers         2008-11-14  343  #define EXPORT_TRACEPOINT_SYMBOL_GPL(name)				\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18 @344) 	EXPORT_SYMBOL_GPL(__tracepoint_##name);				\
de394e7568ce2c peterz@infradead.org      2020-09-08 @345  	EXPORT_SYMBOL_GPL(__traceiter_##name);				\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  346) 	EXPORT_STATIC_CALL_GPL(tp_func_##name)
7e066fb870fcd1 Mathieu Desnoyers         2008-11-14  347  #define EXPORT_TRACEPOINT_SYMBOL(name)					\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  348) 	EXPORT_SYMBOL(__tracepoint_##name);				\
de394e7568ce2c peterz@infradead.org      2020-09-08  349  	EXPORT_SYMBOL(__traceiter_##name);				\
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  350) 	EXPORT_STATIC_CALL(tp_func_##name)
d25e37d89dd2f4 Steven Rostedt (VMware    2020-08-18  351) 
7e066fb870fcd1 Mathieu Desnoyers         2008-11-14  352  

:::::: The code at line 344 was first introduced by commit
:::::: d25e37d89dd2f41d7acae0429039d2f0ae8b4a07 tracepoint: Optimize using static_call()

:::::: TO: Steven Rostedt (VMware) <rostedt@goodmis.org>
:::::: CC: Ingo Molnar <mingo@kernel.org>

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

                 reply	other threads:[~2026-07-18  5:47 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=202607181332.gWeMA5PX-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=cros-kernel-buildreports@googlegroups.com \
    --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 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.