From: Sasha Levin <sashal@kernel.org> To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Emmanuel Nicolet <emmanuel.nicolet@gmail.com>, Geoff Levand <geoff@infradead.org>, Michael Ellerman <mpe@ellerman.id.au>, Sasha Levin <sashal@kernel.org>, linuxppc-dev@lists.ozlabs.org, linux-block@vger.kernel.org Subject: [PATCH AUTOSEL 4.4 10/60] ps3disk: use the default segment boundary Date: Wed, 17 Jun 2020 21:29:14 -0400 [thread overview] Message-ID: <20200618013004.610532-10-sashal@kernel.org> (raw) In-Reply-To: <20200618013004.610532-1-sashal@kernel.org> From: Emmanuel Nicolet <emmanuel.nicolet@gmail.com> [ Upstream commit 720bc316690bd27dea9d71510b50f0cd698ffc32 ] Since commit dcebd755926b ("block: use bio_for_each_bvec() to compute multi-page bvec count"), the kernel will bug_on on the PS3 because bio_split() is called with sectors == 0: kernel BUG at block/bio.c:1853! Oops: Exception in kernel mode, sig: 5 [#1] BE PAGE_SIZE=4K MMU=Hash PREEMPT SMP NR_CPUS=8 NUMA PS3 Modules linked in: firewire_sbp2 rtc_ps3(+) soundcore ps3_gelic(+) \ ps3rom(+) firewire_core ps3vram(+) usb_common crc_itu_t CPU: 0 PID: 97 Comm: blkid Not tainted 5.3.0-rc4 #1 NIP: c00000000027d0d0 LR: c00000000027d0b0 CTR: 0000000000000000 REGS: c00000000135ae90 TRAP: 0700 Not tainted (5.3.0-rc4) MSR: 8000000000028032 <SF,EE,IR,DR,RI> CR: 44008240 XER: 20000000 IRQMASK: 0 GPR00: c000000000289368 c00000000135b120 c00000000084a500 c000000004ff8300 GPR04: 0000000000000c00 c000000004c905e0 c000000004c905e0 000000000000ffff GPR08: 0000000000000000 0000000000000001 0000000000000000 000000000000ffff GPR12: 0000000000000000 c0000000008ef000 000000000000003e 0000000000080001 GPR16: 0000000000000100 000000000000ffff 0000000000000000 0000000000000004 GPR20: c00000000062fd7e 0000000000000001 000000000000ffff 0000000000000080 GPR24: c000000000781788 c00000000135b350 0000000000000080 c000000004c905e0 GPR28: c00000000135b348 c000000004ff8300 0000000000000000 c000000004c90000 NIP [c00000000027d0d0] .bio_split+0x28/0xac LR [c00000000027d0b0] .bio_split+0x8/0xac Call Trace: [c00000000135b120] [c00000000027d130] .bio_split+0x88/0xac (unreliable) [c00000000135b1b0] [c000000000289368] .__blk_queue_split+0x11c/0x53c [c00000000135b2d0] [c00000000028f614] .blk_mq_make_request+0x80/0x7d4 [c00000000135b3d0] [c000000000283a8c] .generic_make_request+0x118/0x294 [c00000000135b4b0] [c000000000283d34] .submit_bio+0x12c/0x174 [c00000000135b580] [c000000000205a44] .mpage_bio_submit+0x3c/0x4c [c00000000135b600] [c000000000206184] .mpage_readpages+0xa4/0x184 [c00000000135b750] [c0000000001ff8fc] .blkdev_readpages+0x24/0x38 [c00000000135b7c0] [c0000000001589f0] .read_pages+0x6c/0x1a8 [c00000000135b8b0] [c000000000158c74] .__do_page_cache_readahead+0x118/0x184 [c00000000135b9b0] [c0000000001591a8] .force_page_cache_readahead+0xe4/0xe8 [c00000000135ba50] [c00000000014fc24] .generic_file_read_iter+0x1d8/0x830 [c00000000135bb50] [c0000000001ffadc] .blkdev_read_iter+0x40/0x5c [c00000000135bbc0] [c0000000001b9e00] .new_sync_read+0x144/0x1a0 [c00000000135bcd0] [c0000000001bc454] .vfs_read+0xa0/0x124 [c00000000135bd70] [c0000000001bc7a4] .ksys_read+0x70/0xd8 [c00000000135be20] [c00000000000a524] system_call+0x5c/0x70 Instruction dump: 7fe3fb78 482e30dc 7c0802a6 482e3085 7c9e2378 f821ff71 7ca42b78 7d3e00d0 7c7d1b78 79290fe0 7cc53378 69290001 <0b090000> 81230028 7bca0020 7929ba62 [ end trace 313fec760f30aa1f ]--- The problem originates from setting the segment boundary of the request queue to -1UL. This makes get_max_segment_size() return zero when offset is zero, whatever the max segment size. The test with BLK_SEG_BOUNDARY_MASK fails and 'mask - (mask & offset) + 1' overflows to zero in the return statement. Not setting the segment boundary and using the default value (BLK_SEG_BOUNDARY_MASK) fixes the problem. Signed-off-by: Emmanuel Nicolet <emmanuel.nicolet@gmail.com> Signed-off-by: Geoff Levand <geoff@infradead.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/060a416c43138f45105c0540eff1a45539f7e2fc.1589049250.git.geoff@infradead.org Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/block/ps3disk.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/block/ps3disk.c b/drivers/block/ps3disk.c index c120d70d3fb3..fc7a20286090 100644 --- a/drivers/block/ps3disk.c +++ b/drivers/block/ps3disk.c @@ -464,7 +464,6 @@ static int ps3disk_probe(struct ps3_system_bus_device *_dev) blk_queue_bounce_limit(queue, BLK_BOUNCE_HIGH); blk_queue_max_hw_sectors(queue, dev->bounce_size >> 9); - blk_queue_segment_boundary(queue, -1UL); blk_queue_dma_alignment(queue, dev->blk_size-1); blk_queue_logical_block_size(queue, dev->blk_size); -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Sasha Levin <sashal@kernel.org> To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Sasha Levin <sashal@kernel.org>, Emmanuel Nicolet <emmanuel.nicolet@gmail.com>, Geoff Levand <geoff@infradead.org>, linux-block@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Subject: [PATCH AUTOSEL 4.4 10/60] ps3disk: use the default segment boundary Date: Wed, 17 Jun 2020 21:29:14 -0400 [thread overview] Message-ID: <20200618013004.610532-10-sashal@kernel.org> (raw) In-Reply-To: <20200618013004.610532-1-sashal@kernel.org> From: Emmanuel Nicolet <emmanuel.nicolet@gmail.com> [ Upstream commit 720bc316690bd27dea9d71510b50f0cd698ffc32 ] Since commit dcebd755926b ("block: use bio_for_each_bvec() to compute multi-page bvec count"), the kernel will bug_on on the PS3 because bio_split() is called with sectors == 0: kernel BUG at block/bio.c:1853! Oops: Exception in kernel mode, sig: 5 [#1] BE PAGE_SIZE=4K MMU=Hash PREEMPT SMP NR_CPUS=8 NUMA PS3 Modules linked in: firewire_sbp2 rtc_ps3(+) soundcore ps3_gelic(+) \ ps3rom(+) firewire_core ps3vram(+) usb_common crc_itu_t CPU: 0 PID: 97 Comm: blkid Not tainted 5.3.0-rc4 #1 NIP: c00000000027d0d0 LR: c00000000027d0b0 CTR: 0000000000000000 REGS: c00000000135ae90 TRAP: 0700 Not tainted (5.3.0-rc4) MSR: 8000000000028032 <SF,EE,IR,DR,RI> CR: 44008240 XER: 20000000 IRQMASK: 0 GPR00: c000000000289368 c00000000135b120 c00000000084a500 c000000004ff8300 GPR04: 0000000000000c00 c000000004c905e0 c000000004c905e0 000000000000ffff GPR08: 0000000000000000 0000000000000001 0000000000000000 000000000000ffff GPR12: 0000000000000000 c0000000008ef000 000000000000003e 0000000000080001 GPR16: 0000000000000100 000000000000ffff 0000000000000000 0000000000000004 GPR20: c00000000062fd7e 0000000000000001 000000000000ffff 0000000000000080 GPR24: c000000000781788 c00000000135b350 0000000000000080 c000000004c905e0 GPR28: c00000000135b348 c000000004ff8300 0000000000000000 c000000004c90000 NIP [c00000000027d0d0] .bio_split+0x28/0xac LR [c00000000027d0b0] .bio_split+0x8/0xac Call Trace: [c00000000135b120] [c00000000027d130] .bio_split+0x88/0xac (unreliable) [c00000000135b1b0] [c000000000289368] .__blk_queue_split+0x11c/0x53c [c00000000135b2d0] [c00000000028f614] .blk_mq_make_request+0x80/0x7d4 [c00000000135b3d0] [c000000000283a8c] .generic_make_request+0x118/0x294 [c00000000135b4b0] [c000000000283d34] .submit_bio+0x12c/0x174 [c00000000135b580] [c000000000205a44] .mpage_bio_submit+0x3c/0x4c [c00000000135b600] [c000000000206184] .mpage_readpages+0xa4/0x184 [c00000000135b750] [c0000000001ff8fc] .blkdev_readpages+0x24/0x38 [c00000000135b7c0] [c0000000001589f0] .read_pages+0x6c/0x1a8 [c00000000135b8b0] [c000000000158c74] .__do_page_cache_readahead+0x118/0x184 [c00000000135b9b0] [c0000000001591a8] .force_page_cache_readahead+0xe4/0xe8 [c00000000135ba50] [c00000000014fc24] .generic_file_read_iter+0x1d8/0x830 [c00000000135bb50] [c0000000001ffadc] .blkdev_read_iter+0x40/0x5c [c00000000135bbc0] [c0000000001b9e00] .new_sync_read+0x144/0x1a0 [c00000000135bcd0] [c0000000001bc454] .vfs_read+0xa0/0x124 [c00000000135bd70] [c0000000001bc7a4] .ksys_read+0x70/0xd8 [c00000000135be20] [c00000000000a524] system_call+0x5c/0x70 Instruction dump: 7fe3fb78 482e30dc 7c0802a6 482e3085 7c9e2378 f821ff71 7ca42b78 7d3e00d0 7c7d1b78 79290fe0 7cc53378 69290001 <0b090000> 81230028 7bca0020 7929ba62 [ end trace 313fec760f30aa1f ]--- The problem originates from setting the segment boundary of the request queue to -1UL. This makes get_max_segment_size() return zero when offset is zero, whatever the max segment size. The test with BLK_SEG_BOUNDARY_MASK fails and 'mask - (mask & offset) + 1' overflows to zero in the return statement. Not setting the segment boundary and using the default value (BLK_SEG_BOUNDARY_MASK) fixes the problem. Signed-off-by: Emmanuel Nicolet <emmanuel.nicolet@gmail.com> Signed-off-by: Geoff Levand <geoff@infradead.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/060a416c43138f45105c0540eff1a45539f7e2fc.1589049250.git.geoff@infradead.org Signed-off-by: Sasha Levin <sashal@kernel.org> --- drivers/block/ps3disk.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/block/ps3disk.c b/drivers/block/ps3disk.c index c120d70d3fb3..fc7a20286090 100644 --- a/drivers/block/ps3disk.c +++ b/drivers/block/ps3disk.c @@ -464,7 +464,6 @@ static int ps3disk_probe(struct ps3_system_bus_device *_dev) blk_queue_bounce_limit(queue, BLK_BOUNCE_HIGH); blk_queue_max_hw_sectors(queue, dev->bounce_size >> 9); - blk_queue_segment_boundary(queue, -1UL); blk_queue_dma_alignment(queue, dev->blk_size-1); blk_queue_logical_block_size(queue, dev->blk_size); -- 2.25.1
next prev parent reply other threads:[~2020-06-18 1:39 UTC|newest] Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-06-18 1:29 [PATCH AUTOSEL 4.4 01/60] clk: sunxi: Fix incorrect usage of round_down() Sasha Levin 2020-06-18 1:29 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 02/60] i2c: piix4: Detect secondary SMBus controller on AMD AM4 chipsets Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 03/60] iio: light: isl29125: fix iio_triggered_buffer_{predisable,postenable} positions Sasha Levin 2020-06-19 16:31 ` Jonathan Cameron 2020-06-22 0:07 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 04/60] clk: qcom: msm8916: Fix the address location of pll->config_reg Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 05/60] ALSA: isa/wavefront: prevent out of bounds write in ioctl Sasha Levin 2020-06-18 1:29 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 06/60] Smack: slab-out-of-bounds in vsscanf Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 07/60] scsi: qla2xxx: Fix issue with adapter's stopping state Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 08/60] i2c: pxa: clear all master action bits in i2c_pxa_stop_message() Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 09/60] usblp: poison URBs upon disconnect Sasha Levin 2020-06-18 1:29 ` Sasha Levin [this message] 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 10/60] ps3disk: use the default segment boundary Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 11/60] vfio/pci: fix memory leaks in alloc_perm_bits() Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 12/60] mfd: wm8994: Fix driver operation if loaded as modules Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 13/60] scsi: lpfc: Fix lpfc_nodelist leak when processing unsolicited event Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 14/60] powerpc/pseries: Update hv-24x7 information after migration Sasha Levin 2020-06-18 1:29 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 15/60] nfsd: Fix svc_xprt refcnt leak when setup callback client failed Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 16/60] powerpc/crashkernel: Take "mem=" option into account Sasha Levin 2020-06-18 1:29 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 17/60] yam: fix possible memory leak in yam_init_driver Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 18/60] fat: don't allow to mount if the FAT length == 0 Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 19/60] mksysmap: Fix the mismatch of '.L' symbols in System.map Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 20/60] scsi: sr: Fix sr_probe() missing deallocate of device minor Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 21/60] scsi: ibmvscsi: Don't send host info in adapter info MAD after LPM Sasha Levin 2020-06-18 1:29 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 22/60] staging: rtl8712: fix multiline derefernce warnings Sasha Levin 2020-06-18 1:29 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 23/60] iio: buffer: Don't allow buffers without any channels enabled to be activated Sasha Levin 2020-06-19 16:27 ` Jonathan Cameron 2020-06-22 0:07 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 24/60] ALSA: usb-audio: Improve frames size computation Sasha Levin 2020-06-18 1:29 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 25/60] s390/qdio: put thinint indicator after early error Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 26/60] tty: hvc: Fix data abort due to race in hvc_open Sasha Levin 2020-06-18 1:29 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 27/60] staging: sm750fb: add missing case while setting FB_VISUAL Sasha Levin 2020-06-18 1:29 ` Sasha Levin 2020-06-18 1:29 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 28/60] i2c: pxa: fix i2c_pxa_scream_blue_murder() debug output Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 29/60] serial: amba-pl011: Make sure we initialize the port.lock spinlock Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 30/60] drivers: base: Fix NULL pointer exception in __platform_driver_probe() if a driver developer is foolish Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 31/60] PCI/ASPM: Allow ASPM on links to PCIe-to-PCI/PCI-X Bridges Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 32/60] power: supply: smb347-charger: IRQSTAT_D is volatile Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 33/60] scsi: mpt3sas: Fix double free warnings Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 34/60] dlm: remove BUG() before panic() Sasha Levin 2020-06-18 1:29 ` [Cluster-devel] " Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 35/60] clk: ti: composite: fix memory leak Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 36/60] tty: n_gsm: Fix SOF skipping Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 37/60] tty: n_gsm: Fix waking up upper tty layer when room available Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 38/60] powerpc/pseries/ras: Fix FWNMI_VALID off by one Sasha Levin 2020-06-18 1:29 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 39/60] powerpc/ps3: Fix kexec shutdown hang Sasha Levin 2020-06-18 1:29 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 40/60] vfio-pci: Mask cap zero Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 41/60] usb/ohci-platform: Fix a warning when hibernating Sasha Levin 2020-06-18 1:29 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 42/60] USB: host: ehci-mxc: Add error handling in ehci_mxc_drv_probe() Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 43/60] tty: n_gsm: Fix bogus i++ in gsm_data_kick Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 44/60] clk: samsung: exynos5433: Add IGNORE_UNUSED flag to sclk_i2s1 Sasha Levin 2020-06-18 1:29 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 45/60] watchdog: da9062: No need to ping manually before setting timeout Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 46/60] usb: dwc2: gadget: move gadget resume after the core is in L0 state Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 47/60] USB: gadget: udc: s3c2410_udc: Remove pointless NULL check in s3c2410_udc_nuke Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 48/60] usb: gadget: lpc32xx_udc: don't dereference ep pointer before null check Sasha Levin 2020-06-18 1:29 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 49/60] usb: gadget: fix potential double-free in m66592_probe Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 50/60] vfio/pci: fix memory leaks of eventfd ctx Sasha Levin 2020-06-18 1:37 ` Alex Williamson 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 51/60] net: sunrpc: Fix off-by-one issues in 'rpc_ntop6' Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 52/60] ASoC: fsl_asrc_dma: Fix dma_chan leak when config DMA channel failed Sasha Levin 2020-06-18 1:29 ` Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 53/60] openrisc: Fix issue with argument clobbering for clone/fork Sasha Levin 2020-06-18 1:29 ` [OpenRISC] " Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 54/60] gfs2: Allow lock_nolock mount to specify jid=X Sasha Levin 2020-06-18 1:29 ` [Cluster-devel] " Sasha Levin 2020-06-18 1:29 ` [PATCH AUTOSEL 4.4 55/60] scsi: iscsi: Fix reference count leak in iscsi_boot_create_kobj Sasha Levin 2020-06-18 1:30 ` [PATCH AUTOSEL 4.4 56/60] lib/zlib: remove outdated and incorrect pre-increment optimization Sasha Levin 2020-06-18 1:30 ` [PATCH AUTOSEL 4.4 57/60] include/linux/bitops.h: avoid clang shift-count-overflow warnings Sasha Levin 2020-06-18 1:30 ` [PATCH AUTOSEL 4.4 58/60] elfnote: mark all .note sections SHF_ALLOC Sasha Levin 2020-06-18 1:30 ` [PATCH AUTOSEL 4.4 59/60] selftests/net: in timestamping, strncpy needs to preserve null byte Sasha Levin 2020-06-18 1:30 ` [PATCH AUTOSEL 4.4 60/60] scsi: acornscsi: Fix an error handling path in acornscsi_probe() Sasha Levin 2020-06-18 1:30 ` Sasha Levin
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=20200618013004.610532-10-sashal@kernel.org \ --to=sashal@kernel.org \ --cc=emmanuel.nicolet@gmail.com \ --cc=geoff@infradead.org \ --cc=linux-block@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linuxppc-dev@lists.ozlabs.org \ --cc=mpe@ellerman.id.au \ --cc=stable@vger.kernel.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: linkBe 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.