All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@infradead.org>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: "<Andrew Morton" <akpm@osdl.org>,
	containers@lists.osdl.org, Oleg Nesterov <oleg@tv-sign.ru>,
	Christoph Hellwig <hch@infradead.org>,
	linux-kernel@vger.kernel.org,
	James.Bottomley@HansenPartnership.com
Subject: Re: [PATCH] i386 voyager: Convert the monitor thread to use the kthread API
Date: Sun, 22 Apr 2007 20:30:43 +0100	[thread overview]
Message-ID: <20070422193043.GA16567@infradead.org> (raw)
In-Reply-To: <117696576895-git-send-email-ebiederm@xmission.com>

On Thu, Apr 19, 2007 at 12:55:27AM -0600, Eric W. Biederman wrote:
> From: Eric W. Biederman <ebiederm@xmission.com> - unquoted
> 
> This patch just trivially replaces kernel_thread and daemonize
> with a single call to kthread_run.

Here's a better patch that does the full kthread conversion +
switch to wake_up_process.  Only compile tested of course due to
lack of voyager hardware.


Signed-off-by: Christoph Hellwig <hch@lst.de>

Index: linux-2.6/arch/i386/mach-voyager/voyager_cat.c
===================================================================
--- linux-2.6.orig/arch/i386/mach-voyager/voyager_cat.c	2007-04-22 15:19:28.000000000 +0200
+++ linux-2.6/arch/i386/mach-voyager/voyager_cat.c	2007-04-22 15:27:03.000000000 +0200
@@ -1111,7 +1111,7 @@ voyager_cat_do_common_interrupt(void)
 				printk(KERN_ERR "Voyager front panel switch turned off\n");
 				voyager_status.switch_off = 1;
 				voyager_status.request_from_kernel = 1;
-				up(&kvoyagerd_sem);
+				wake_up_process(voyager_thread);
 			}
 			/* Tell the hardware we're taking care of the
 			 * shutdown, otherwise it will power the box off
@@ -1157,7 +1157,7 @@ voyager_cat_do_common_interrupt(void)
 			outb(VOYAGER_CAT_END, CAT_CMD);
 			voyager_status.power_fail = 1;
 			voyager_status.request_from_kernel = 1;
-			up(&kvoyagerd_sem);
+			wake_up_process(voyager_thread);
 		}
 		
 		
Index: linux-2.6/arch/i386/mach-voyager/voyager_thread.c
===================================================================
--- linux-2.6.orig/arch/i386/mach-voyager/voyager_thread.c	2007-04-22 15:15:24.000000000 +0200
+++ linux-2.6/arch/i386/mach-voyager/voyager_thread.c	2007-04-22 15:25:51.000000000 +0200
@@ -24,33 +24,16 @@
 #include <linux/kmod.h>
 #include <linux/completion.h>
 #include <linux/sched.h>
+#include <linux/kthread.h>
 #include <asm/desc.h>
 #include <asm/voyager.h>
 #include <asm/vic.h>
 #include <asm/mtrr.h>
 #include <asm/msr.h>
 
-#define THREAD_NAME "kvoyagerd"
 
-/* external variables */
-int kvoyagerd_running = 0;
-DECLARE_MUTEX_LOCKED(kvoyagerd_sem);
-
-static int thread(void *);
-
-static __u8 set_timeout = 0;
-
-/* Start the machine monitor thread.  Return 1 if OK, 0 if fail */
-static int __init
-voyager_thread_start(void)
-{
-	if(kernel_thread(thread, NULL, CLONE_KERNEL) < 0) {
-		/* This is serious, but not fatal */
-		printk(KERN_ERR "Voyager: Failed to create system monitor thread!!!\n");
-		return 1;
-	}
-	return 0;
-}
+struct task_struct *voyager_thread;
+static __u8 set_timeout;
 
 static int
 execute(const char *string)
@@ -110,31 +93,15 @@ check_continuing_condition(void)
 	}
 }
 
-static void
-wakeup(unsigned long unused)
-{
-	up(&kvoyagerd_sem);
-}
-
 static int
 thread(void *unused)
 {
-	struct timer_list wakeup_timer;
-
-	kvoyagerd_running = 1;
-
-	daemonize(THREAD_NAME);
-
-	set_timeout = 0;
-
-	init_timer(&wakeup_timer);
-
-	sigfillset(&current->blocked);
-
 	printk(KERN_NOTICE "Voyager starting monitor thread\n");
 
-	for(;;) {
-		down_interruptible(&kvoyagerd_sem);
+	for (;;) {
+		set_current_state(TASK_INTERRUPTIBLE);
+		schedule_timeout(set_timeout ? HZ : MAX_SCHEDULE_TIMEOUT);
+
 		VDEBUG(("Voyager Daemon awoken\n"));
 		if(voyager_status.request_from_kernel == 0) {
 			/* probably awoken from timeout */
@@ -143,20 +110,26 @@ thread(void *unused)
 			check_from_kernel();
 			voyager_status.request_from_kernel = 0;
 		}
-		if(set_timeout) {
-			del_timer(&wakeup_timer);
-			wakeup_timer.expires = HZ + jiffies;
-			wakeup_timer.function = wakeup;
-			add_timer(&wakeup_timer);
-		}
 	}
 }
 
+static int __init
+voyager_thread_start(void)
+{
+	voyager_thread = kthread_run(thread, NULL, "kvoyagerd");
+	if (IS_ERR(voyager_thread)) {
+		printk(KERN_ERR "Voyager: Failed to create system monitor thread.\n");
+		return PTR_ERR(voyager_thread);
+	}
+	return 0;
+}
+
+
 static void __exit
 voyager_thread_stop(void)
 {
-	/* FIXME: do nothing at the moment */
+	kthread_stop(voyager_thread);
 }
 
 module_init(voyager_thread_start);
-//module_exit(voyager_thread_stop);
+module_exit(voyager_thread_stop);
Index: linux-2.6/include/asm-i386/voyager.h
===================================================================
--- linux-2.6.orig/include/asm-i386/voyager.h	2007-04-22 15:18:39.000000000 +0200
+++ linux-2.6/include/asm-i386/voyager.h	2007-04-22 15:24:13.000000000 +0200
@@ -487,15 +487,11 @@ extern struct voyager_qic_cpi *voyager_q
 extern struct voyager_SUS *voyager_SUS;
 
 /* variables exported always */
+extern struct task_struct *voyager_thread;
 extern int voyager_level;
-extern int kvoyagerd_running;
-extern struct semaphore kvoyagerd_sem;
 extern struct voyager_status voyager_status;
 
-
-
 /* functions exported by the voyager and voyager_smp modules */
-
 extern int voyager_cat_readb(__u8 module, __u8 asic, int reg);
 extern void voyager_cat_init(void);
 extern void voyager_detect(struct voyager_bios_info *);

  reply	other threads:[~2007-04-22 19:30 UTC|newest]

Thread overview: 237+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-19  6:52 Remaining straight forward kthread API conversions Eric W. Biederman
2007-04-19  6:55 ` [PATCH] i386 balance_irq: Convert to the kthread api Eric W. Biederman
2007-04-19  6:55 ` [PATCH] i386 voyager: Convert the monitor thread to use the kthread API Eric W. Biederman
2007-04-22 19:30   ` Christoph Hellwig [this message]
2007-04-19  6:55 ` [PATCH] mtd_blkdevs: Convert " Eric W. Biederman
2007-04-19 16:47   ` Christoph Hellwig
2007-04-19 19:13     ` Eric W. Biederman
2007-04-19 22:26       ` Andrew Morton
2007-04-22 12:24   ` Christoph Hellwig
2007-04-22 13:23     ` David Woodhouse
2007-04-22 19:26       ` Christoph Hellwig
2007-04-22 19:40     ` Christoph Hellwig
2007-04-19  6:55 ` [PATCH] cpci_hotplug: " Eric W. Biederman
2007-04-22 12:05   ` Christoph Hellwig
2007-04-23 16:19     ` Scott Murray
2007-04-27 22:07     ` Scott Murray
2007-05-04 11:12       ` Christoph Hellwig
2007-05-07 18:18         ` Scott Murray
2007-05-09 23:24           ` Andrew Morton
2007-05-10  0:00             ` Kristen Carlson Accardi
2007-05-10 18:29             ` Scott Murray
2007-05-10 19:30               ` Andrew Morton
2007-04-19  6:55 ` [PATCH] ibmphp: Convert to use the kthreads API Eric W. Biederman
2007-04-22 12:09   ` Christoph Hellwig
2007-04-19  6:55 ` [PATCH] cpqphp: Convert to use the kthread API Eric W. Biederman
2007-04-22 12:12   ` Christoph Hellwig
2007-04-19  6:55 ` [PATCH] pnpbios: Conert " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] sas_scsi_host: Convert " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] sparc64/power.c: " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] s390/net/lcs: Convert to " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] s390 qeth: Convert to use " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] s390/scsi/zfcp_erp: " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] arm ecard: Conver " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] ia64 sn xpc: Convert to use " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] powerpc pseries eeh: Convert to " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] powerpc pseries rtasd: " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] macintosh/therm_pm72.c: " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] macintosh/therm_windtunnel.c: " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] macintosh/adb: Convert to the " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] macintosh/mediabay: Convert to " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] bluetooth bnep: " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] bluetooth cmtp: Convert to use " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] bluetooth hidp: Convert to " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] bluetooth rfcomm: " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] fs/afs: " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] net/rxrpc: " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] ipv4/ipvs: " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] saa7134-tvaudio: " Eric W. Biederman
2007-04-20 12:48   ` Cedric Le Goater
2007-04-20 13:05     ` Christoph Hellwig
2007-04-19  6:55 ` [PATCH] nfs lockd reclaimer: " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] nfsv4 delegation: " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] nfsd/nfs4state: Remove unnecessary daemonize call Eric W. Biederman
2007-04-19  6:55 ` [PATCH] nfs4state reclaimer: Remove unnecessary allow_signal Eric W. Biederman
2007-04-19  6:55 ` [PATCH] smbfs: " Eric W. Biederman
2007-04-19  6:55 ` [PATCH] dvb_en_50221: Convert to kthread API Eric W. Biederman
2007-04-19  6:56 ` [PATCH] md: Remove broken SIGKILL support Eric W. Biederman
2007-04-19  6:56 ` [PATCH] synchro_test: Convert to the kthread API Eric W. Biederman
2007-04-19  6:56 ` Eric W. Biederman
2007-04-19  7:58 ` [PATCH] i386 balance_irq: Convert to the kthread api Eric W. Biederman
2007-04-19  7:58 ` [PATCH] i386 voyager: Convert the monitor thread to use the kthread API Eric W. Biederman
2007-04-19  7:58 ` [PATCH] mtd_blkdevs: Convert " Eric W. Biederman
2007-04-19  7:58 ` [PATCH] cpci_hotplug: " Eric W. Biederman
2007-04-19  7:58 ` [PATCH] ibmphp: Convert to use the kthreads API Eric W. Biederman
2007-04-19  7:58 ` [PATCH] cpqphp: Convert to use the kthread API Eric W. Biederman
2007-04-20  1:54   ` Andrew Morton
2007-04-19  7:58 ` [PATCH] pnpbios: Conert " Eric W. Biederman
2007-04-19  7:58 ` [PATCH] sas_scsi_host: Convert " Eric W. Biederman
2007-04-20  0:37   ` Andrew Morton
2007-04-22 19:38     ` Christoph Hellwig
2007-04-22 21:37       ` James Bottomley
2007-04-22 21:48         ` Eric W. Biederman
2007-04-19  7:58 ` [PATCH] sparc64/power.c: " Eric W. Biederman
2007-04-20  0:30   ` Andrew Morton
2007-04-19  7:58 ` [PATCH] s390/net/lcs: Convert to " Eric W. Biederman
2007-04-19  8:19   ` Frank Pavlic
2007-04-19  7:58 ` [PATCH] s390 qeth: Convert to use " Eric W. Biederman
2007-04-19  7:58 ` [PATCH] s390/scsi/zfcp_erp: " Eric W. Biederman
2007-04-22 20:17   ` Christoph Hellwig
2007-04-30 10:41     ` Swen Schillig
2007-04-19  7:58 ` [PATCH] arm ecard: Conver " Eric W. Biederman
2007-04-22 20:18   ` Christoph Hellwig
2007-04-19  7:58 ` [PATCH] ia64 sn xpc: Convert to use " Eric W. Biederman
2007-04-19 23:51   ` Andrew Morton
2007-04-20  6:23     ` Jes Sorensen
2007-04-20 14:21       ` Robin Holt
2007-04-21 19:53         ` Eric W. Biederman
2007-04-22 20:36   ` Christoph Hellwig
2007-04-23 17:11     ` Jes Sorensen
2007-04-23 17:11       ` Jes Sorensen
2007-04-23 17:36       ` Eric W. Biederman
2007-04-23 17:36         ` Eric W. Biederman
2007-04-23 19:03       ` Russ Anderson
2007-04-23 19:03         ` Russ Anderson
2007-04-27 17:41     ` Dean Nelson
2007-04-27 18:34       ` Eric W. Biederman
2007-04-27 20:12         ` Dean Nelson
2007-04-27 20:33           ` Eric W. Biederman
2007-04-30 15:22             ` Dean Nelson
2007-05-02 15:16               ` Dean Nelson
2007-05-02 15:44                 ` Eric W. Biederman
2007-05-17 13:44                   ` Dean Nelson
2007-04-26 20:00   ` Dean Nelson
2007-04-19  7:58 ` [PATCH] powerpc pseries eeh: Convert to " Eric W. Biederman
2007-04-19 23:47   ` Andrew Morton
2007-04-22 12:31   ` Christoph Hellwig
2007-04-22 12:31     ` Christoph Hellwig
2007-04-23 20:50     ` Linas Vepstas
2007-04-24  1:38       ` Benjamin Herrenschmidt
2007-04-24  1:38         ` Benjamin Herrenschmidt
2007-04-24  2:08         ` Eric W. Biederman
2007-04-24  2:08           ` Eric W. Biederman
2007-04-24  2:42           ` Benjamin Herrenschmidt
2007-04-24  2:42             ` Benjamin Herrenschmidt
2007-04-24  3:20             ` Eric W. Biederman
2007-04-24  3:20               ` Eric W. Biederman
2007-04-24  4:34               ` Paul Mackerras
2007-04-24  4:34                 ` Paul Mackerras
2007-04-24  4:34                 ` Paul Mackerras
2007-04-24  4:51                 ` Eric W. Biederman
2007-04-24  4:51                   ` Eric W. Biederman
2007-04-24  5:00               ` Benjamin Herrenschmidt
2007-04-24  5:00                 ` Benjamin Herrenschmidt
2007-04-24  5:43                 ` Eric W. Biederman
2007-04-24  5:43                   ` Eric W. Biederman
2007-04-24  5:58                   ` Benjamin Herrenschmidt
2007-04-24  5:58                     ` Benjamin Herrenschmidt
2007-04-24  6:17                   ` SOME STUFF ABOUT REISER4 lkml777
2007-04-24  6:17                     ` lkml777
2007-04-24 17:26                     ` Eric M. Hopper
2007-04-24  7:46                 ` [PATCH] powerpc pseries eeh: Convert to kthread API Cornelia Huck
2007-04-24  7:46                   ` Cornelia Huck
2007-04-24 17:24         ` Linas Vepstas
2007-04-24 17:24           ` Linas Vepstas
2007-04-24  5:55     ` Paul Mackerras
2007-04-24  5:55       ` Paul Mackerras
2007-04-24  8:37       ` Christoph Hellwig
2007-04-24  8:37         ` Christoph Hellwig
2007-04-24 17:35     ` Linas Vepstas
2007-04-19  7:58 ` [PATCH] powerpc pseries rtasd: " Eric W. Biederman
2007-04-22 12:34   ` Christoph Hellwig
2007-04-19  7:58 ` [PATCH] macintosh/therm_pm72.c: " Eric W. Biederman
2007-04-22 19:16   ` Christoph Hellwig
2007-04-22 22:46     ` Paul Mackerras
2007-04-19  7:58 ` [PATCH] macintosh/therm_windtunnel.c: " Eric W. Biederman
2007-04-19 23:37   ` Andrew Morton
2007-04-20  8:53     ` Benjamin Herrenschmidt
2007-04-19  7:58 ` [PATCH] macintosh/adb: Convert to the " Eric W. Biederman
2007-04-19  7:58 ` [PATCH] macintosh/mediabay: Convert to " Eric W. Biederman
2007-04-19 23:30   ` Andrew Morton
2007-04-20  8:51     ` Benjamin Herrenschmidt
2007-04-19  7:58 ` [PATCH] bluetooth bnep: " Eric W. Biederman
2007-04-19 23:24   ` Andrew Morton
2007-04-20 10:20     ` [Devel] " Cedric Le Goater
2007-04-20 12:37       ` Cedric Le Goater
2007-04-21 16:11         ` Satyam Sharma
2007-04-22 19:44     ` Christoph Hellwig
2007-04-23  3:12       ` [PATCH] kthread: Spontaneous exit support Eric W. Biederman
2007-04-23 11:25         ` Christoph Hellwig
2007-04-23 16:58           ` Oleg Nesterov
2007-04-23 17:45             ` Eric W. Biederman
2007-04-23 18:09               ` Christoph Hellwig
2007-04-23 18:20               ` Oleg Nesterov
2007-04-24 13:08           ` Jan Engelhardt
2007-04-24 13:34             ` Christoph Hellwig
2007-04-19  7:58 ` [PATCH] bluetooth cmtp: Convert to use kthread API Eric W. Biederman
2007-04-19  7:58 ` [PATCH] bluetooth hidp: Convert to " Eric W. Biederman
2007-04-19 23:20   ` Andrew Morton
2007-04-19  7:58 ` [PATCH] bluetooth rfcomm: " Eric W. Biederman
2007-04-19 23:12   ` Andrew Morton
2007-04-20 15:20     ` [Devel] " Cedric Le Goater
2007-04-22 20:14     ` Christoph Hellwig
2007-04-19  7:58 ` [PATCH] fs/afs: " Eric W. Biederman
2007-04-19  9:32   ` David Howells
2007-04-19  7:58 ` [PATCH] net/rxrpc: " Eric W. Biederman
2007-04-19  9:32   ` David Howells
2007-04-19 13:05     ` Eric W. Biederman
2007-04-19 14:18       ` Getting the new RxRPC patches upstream David Howells
2007-04-19 15:50         ` Eric W. Biederman
2007-04-19 16:18           ` David Howells
2007-04-19 19:14             ` Eric W. Biederman
2007-04-19 20:14         ` David Miller
2007-04-20  1:15           ` Herbert Xu
2007-04-20  8:02           ` David Howells
2007-04-20  8:58             ` David Miller
2007-04-20 10:41               ` David Howells
2007-04-20 18:38                 ` Andrew Morton
2007-04-20 21:28                   ` Oleg Nesterov
2007-04-23  8:32                     ` David Howells
2007-04-23 17:11                       ` Oleg Nesterov
2007-04-24 13:37                         ` David Howells
2007-04-24 14:22                           ` Oleg Nesterov
2007-04-24 15:51                             ` David Howells
2007-04-24 16:40                               ` Oleg Nesterov
2007-04-24 16:58                                 ` David Howells
2007-04-24 17:33                                   ` Oleg Nesterov
2007-04-24 18:22                                     ` David Howells
2007-04-24 19:34                                       ` Oleg Nesterov
2007-04-25  8:10                                         ` David Howells
2007-04-25 10:41                                           ` Oleg Nesterov
2007-04-25 10:45                                             ` David Howells
2007-04-25 13:48               ` David Howells
2007-04-19 23:05     ` [PATCH] net/rxrpc: Convert to kthread API Andrew Morton
2007-04-20  7:47       ` David Howells
2007-04-19  7:58 ` [PATCH] ipv4/ipvs: " Eric W. Biederman
2007-04-19  9:04   ` Simon Horman
2007-04-19 22:59     ` Andrew Morton
2007-04-22 19:50       ` Christoph Hellwig
2007-04-19  7:58 ` [PATCH] saa7134-tvaudio: " Eric W. Biederman
2007-04-19 22:52   ` Andrew Morton
2007-04-19  7:58 ` [PATCH] nfs lockd reclaimer: " Eric W. Biederman
2007-04-19 16:21   ` Trond Myklebust
2007-04-19 19:20     ` Eric W. Biederman
2007-04-19 21:19       ` Trond Myklebust
2007-04-19 21:25         ` Dave Hansen
2007-04-21 19:04           ` Eric W. Biederman
2007-04-19 21:40         ` Andrew Morton
2007-04-19 22:04           ` Trond Myklebust
2007-04-21 19:47             ` Eric W. Biederman
2007-04-19  7:59 ` [PATCH] nfsv4 delegation: " Eric W. Biederman
2007-04-19 16:22   ` Trond Myklebust
2007-04-19  7:59 ` [PATCH] nfsd/nfs4state: Remove unnecessary daemonize call Eric W. Biederman
2007-04-19  7:59 ` [PATCH] nfs4state reclaimer: Remove unnecessary allow_signal Eric W. Biederman
2007-04-19 16:26   ` Trond Myklebust
2007-04-19  7:59 ` [PATCH] smbfs: " Eric W. Biederman
2007-04-19 22:47   ` Andrew Morton
2007-04-19  7:59 ` [PATCH] dvb_en_50221: Convert to kthread API Eric W. Biederman
2007-04-19 22:34   ` Andrew Morton
2007-04-20  6:37     ` Christoph Hellwig
2007-04-20  6:48       ` Andrew Morton
2007-04-20  9:37         ` Cedric Le Goater
2007-04-19  7:59 ` [PATCH] md: Remove broken SIGKILL support Eric W. Biederman
2007-05-01  0:47   ` Neil Brown
2007-05-01  6:13     ` Eric W. Biederman
2007-04-19  7:59 ` [PATCH] synchro_test: Convert to the kthread API Eric W. Biederman
2007-04-19  7:59 ` Eric W. Biederman
2007-04-22 12:15 ` Remaining straight forward kthread API conversions Christoph Hellwig

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=20070422193043.GA16567@infradead.org \
    --to=hch@infradead.org \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=akpm@osdl.org \
    --cc=containers@lists.osdl.org \
    --cc=ebiederm@xmission.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=oleg@tv-sign.ru \
    /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.