* [PATCH] cxl: Unlock on error in probe
@ 2017-05-05 5:34 ` Dan Carpenter
0 siblings, 0 replies; 16+ messages in thread
From: Dan Carpenter @ 2017-05-05 5:34 UTC (permalink / raw)
To: Ian Munsie, Christophe Lombard
Cc: Frederic Barrat, linuxppc-dev, kernel-janitors
We should unlock if get_cxl_adapter() fails.
Fixes: 594ff7d067ca ("cxl: Support to flash a new image on the adapter from a guest")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
diff --git a/drivers/misc/cxl/flash.c b/drivers/misc/cxl/flash.c
index 7c61c70ba3f6..37475abea3e6 100644
--- a/drivers/misc/cxl/flash.c
+++ b/drivers/misc/cxl/flash.c
@@ -401,8 +401,10 @@ static int device_open(struct inode *inode, struct file *file)
if (down_interruptible(&sem) != 0)
return -EPERM;
- if (!(adapter = get_cxl_adapter(adapter_num)))
- return -ENODEV;
+ if (!(adapter = get_cxl_adapter(adapter_num))) {
+ rc = -ENODEV;
+ goto err_unlock;
+ }
file->private_data = adapter;
continue_token = 0;
@@ -446,6 +448,8 @@ static int device_open(struct inode *inode, struct file *file)
free_page((unsigned long) le);
err:
put_device(&adapter->dev);
+err_unlock:
+ up(&sem);
return rc;
}
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH] cxl: Unlock on error in probe
@ 2017-05-05 5:34 ` Dan Carpenter
0 siblings, 0 replies; 16+ messages in thread
From: Dan Carpenter @ 2017-05-05 5:34 UTC (permalink / raw)
To: Ian Munsie, Christophe Lombard
Cc: Frederic Barrat, linuxppc-dev, kernel-janitors
We should unlock if get_cxl_adapter() fails.
Fixes: 594ff7d067ca ("cxl: Support to flash a new image on the adapter from a guest")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
diff --git a/drivers/misc/cxl/flash.c b/drivers/misc/cxl/flash.c
index 7c61c70ba3f6..37475abea3e6 100644
--- a/drivers/misc/cxl/flash.c
+++ b/drivers/misc/cxl/flash.c
@@ -401,8 +401,10 @@ static int device_open(struct inode *inode, struct file *file)
if (down_interruptible(&sem) != 0)
return -EPERM;
- if (!(adapter = get_cxl_adapter(adapter_num)))
- return -ENODEV;
+ if (!(adapter = get_cxl_adapter(adapter_num))) {
+ rc = -ENODEV;
+ goto err_unlock;
+ }
file->private_data = adapter;
continue_token = 0;
@@ -446,6 +448,8 @@ static int device_open(struct inode *inode, struct file *file)
free_page((unsigned long) le);
err:
put_device(&adapter->dev);
+err_unlock:
+ up(&sem);
return rc;
}
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH] cxl: Unlock on error in probe
2017-05-05 5:34 ` Dan Carpenter
@ 2017-05-05 15:29 ` Frederic Barrat
-1 siblings, 0 replies; 16+ messages in thread
From: Frederic Barrat @ 2017-05-05 15:29 UTC (permalink / raw)
To: Dan Carpenter, Ian Munsie, Christophe Lombard
Cc: linuxppc-dev, kernel-janitors
Le 05/05/2017 à 07:34, Dan Carpenter a écrit :
> We should unlock if get_cxl_adapter() fails.
>
> Fixes: 594ff7d067ca ("cxl: Support to flash a new image on the adapter from a guest")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>
Acked-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
Thanks!
Fred
> diff --git a/drivers/misc/cxl/flash.c b/drivers/misc/cxl/flash.c
> index 7c61c70ba3f6..37475abea3e6 100644
> --- a/drivers/misc/cxl/flash.c
> +++ b/drivers/misc/cxl/flash.c
> @@ -401,8 +401,10 @@ static int device_open(struct inode *inode, struct file *file)
> if (down_interruptible(&sem) != 0)
> return -EPERM;
>
> - if (!(adapter = get_cxl_adapter(adapter_num)))
> - return -ENODEV;
> + if (!(adapter = get_cxl_adapter(adapter_num))) {
> + rc = -ENODEV;
> + goto err_unlock;
> + }
>
> file->private_data = adapter;
> continue_token = 0;
> @@ -446,6 +448,8 @@ static int device_open(struct inode *inode, struct file *file)
> free_page((unsigned long) le);
> err:
> put_device(&adapter->dev);
> +err_unlock:
> + up(&sem);
>
> return rc;
> }
>
--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] cxl: Unlock on error in probe
@ 2017-05-05 15:29 ` Frederic Barrat
0 siblings, 0 replies; 16+ messages in thread
From: Frederic Barrat @ 2017-05-05 15:29 UTC (permalink / raw)
To: Dan Carpenter, Ian Munsie, Christophe Lombard
Cc: linuxppc-dev, kernel-janitors
Le 05/05/2017 à 07:34, Dan Carpenter a écrit :
> We should unlock if get_cxl_adapter() fails.
>
> Fixes: 594ff7d067ca ("cxl: Support to flash a new image on the adapter from a guest")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>
Acked-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
Thanks!
Fred
> diff --git a/drivers/misc/cxl/flash.c b/drivers/misc/cxl/flash.c
> index 7c61c70ba3f6..37475abea3e6 100644
> --- a/drivers/misc/cxl/flash.c
> +++ b/drivers/misc/cxl/flash.c
> @@ -401,8 +401,10 @@ static int device_open(struct inode *inode, struct file *file)
> if (down_interruptible(&sem) != 0)
> return -EPERM;
>
> - if (!(adapter = get_cxl_adapter(adapter_num)))
> - return -ENODEV;
> + if (!(adapter = get_cxl_adapter(adapter_num))) {
> + rc = -ENODEV;
> + goto err_unlock;
> + }
>
> file->private_data = adapter;
> continue_token = 0;
> @@ -446,6 +448,8 @@ static int device_open(struct inode *inode, struct file *file)
> free_page((unsigned long) le);
> err:
> put_device(&adapter->dev);
> +err_unlock:
> + up(&sem);
>
> return rc;
> }
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cxl: Unlock on error in probe
2017-05-05 5:34 ` Dan Carpenter
@ 2017-06-08 4:07 ` Michael Ellerman
-1 siblings, 0 replies; 16+ messages in thread
From: Michael Ellerman @ 2017-06-08 4:07 UTC (permalink / raw)
To: Dan Carpenter, Ian Munsie, Christophe Lombard
Cc: kernel-janitors, linuxppc-dev, Frederic Barrat
On Fri, 2017-05-05 at 05:34:58 UTC, Dan Carpenter wrote:
> We should unlock if get_cxl_adapter() fails.
>
> Fixes: 594ff7d067ca ("cxl: Support to flash a new image on the adapter from a guest")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> Acked-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/58d876fa7181f2f393190c1d32c056
cheers
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: cxl: Unlock on error in probe
@ 2017-06-08 4:07 ` Michael Ellerman
0 siblings, 0 replies; 16+ messages in thread
From: Michael Ellerman @ 2017-06-08 4:07 UTC (permalink / raw)
To: Dan Carpenter, Ian Munsie, Christophe Lombard
Cc: kernel-janitors, linuxppc-dev, Frederic Barrat
On Fri, 2017-05-05 at 05:34:58 UTC, Dan Carpenter wrote:
> We should unlock if get_cxl_adapter() fails.
>
> Fixes: 594ff7d067ca ("cxl: Support to flash a new image on the adapter from a guest")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
> Acked-by: Frederic Barrat <fbarrat@linux.vnet.ibm.com>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/58d876fa7181f2f393190c1d32c056
cheers
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] cxl: Unlock on error in probe
[not found] ` <20170505073800.4F753124037@b01ledav002.gho.pok.ibm.com>
@ 2017-05-05 7:46 ` Andrew Donnellan
0 siblings, 0 replies; 16+ messages in thread
From: Andrew Donnellan @ 2017-05-05 7:46 UTC (permalink / raw)
To: Dan Carpenter
Cc: Ian Munsie, Christophe Lombard, kernel-janitors, linuxppc-dev,
Frederic Barrat
On 05/05/17 17:37, Dan Carpenter wrote:
> On Fri, May 05, 2017 at 05:14:15PM +1000, Andrew Donnellan wrote:
>> sem is a global and it looks like it's intended to be held after
>> device_open() returns and only released in device_close(), so this looks
>> wrong.
>>
>
> This doesn't affect the success path, it only means that if
> device_open() fails because we don't have enough free memory or whatever
> then we can try again later.
Argh, I completely missed the "return 0" above err1 and thought the
success path fell through. My mistake, that's what I get for trying to
review patches after staring at hardware simulation logs all day...
In that case, the patch looks fine to me.
Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
--
Andrew Donnellan OzLabs, ADL Canberra
andrew.donnellan@au1.ibm.com IBM Australia Limited
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] cxl: Unlock on error in probe
@ 2017-05-05 7:46 ` Andrew Donnellan
0 siblings, 0 replies; 16+ messages in thread
From: Andrew Donnellan @ 2017-05-05 7:46 UTC (permalink / raw)
To: Dan Carpenter
Cc: Ian Munsie, Christophe Lombard, kernel-janitors, linuxppc-dev,
Frederic Barrat
On 05/05/17 17:37, Dan Carpenter wrote:
> On Fri, May 05, 2017 at 05:14:15PM +1000, Andrew Donnellan wrote:
>> sem is a global and it looks like it's intended to be held after
>> device_open() returns and only released in device_close(), so this looks
>> wrong.
>>
>
> This doesn't affect the success path, it only means that if
> device_open() fails because we don't have enough free memory or whatever
> then we can try again later.
Argh, I completely missed the "return 0" above err1 and thought the
success path fell through. My mistake, that's what I get for trying to
review patches after staring at hardware simulation logs all day...
In that case, the patch looks fine to me.
Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
--
Andrew Donnellan OzLabs, ADL Canberra
andrew.donnellan@au1.ibm.com IBM Australia Limited
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] cxl: Unlock on error in probe
2017-05-05 7:23 ` walter harms
@ 2017-05-05 7:39 ` Dan Carpenter
-1 siblings, 0 replies; 16+ messages in thread
From: Dan Carpenter @ 2017-05-05 7:39 UTC (permalink / raw)
To: walter harms
Cc: Andrew Donnellan, Ian Munsie, Christophe Lombard,
kernel-janitors, linuxppc-dev, Frederic Barrat
On Fri, May 05, 2017 at 09:23:02AM +0200, walter harms wrote:
> > sem is a global and it looks like it's intended to be held after
> > device_open() returns and only released in device_close(), so this looks
> > wrong.
> >
>
> the patch relates to the error path, do you expect a close() after the open() failed ?
>
You can't close if open fails. Please don't ask rhetorical questions.
Just state everything in short sentences using simple words.
regards,
dan carpenter
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] cxl: Unlock on error in probe
@ 2017-05-05 7:39 ` Dan Carpenter
0 siblings, 0 replies; 16+ messages in thread
From: Dan Carpenter @ 2017-05-05 7:39 UTC (permalink / raw)
To: walter harms
Cc: Andrew Donnellan, Ian Munsie, Christophe Lombard,
kernel-janitors, linuxppc-dev, Frederic Barrat
On Fri, May 05, 2017 at 09:23:02AM +0200, walter harms wrote:
> > sem is a global and it looks like it's intended to be held after
> > device_open() returns and only released in device_close(), so this looks
> > wrong.
> >
>
> the patch relates to the error path, do you expect a close() after the open() failed ?
>
You can't close if open fails. Please don't ask rhetorical questions.
Just state everything in short sentences using simple words.
regards,
dan carpenter
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] cxl: Unlock on error in probe
2017-05-05 7:14 ` Andrew Donnellan
@ 2017-05-05 7:37 ` Dan Carpenter
-1 siblings, 0 replies; 16+ messages in thread
From: Dan Carpenter @ 2017-05-05 7:37 UTC (permalink / raw)
To: Andrew Donnellan
Cc: Ian Munsie, Christophe Lombard, kernel-janitors, linuxppc-dev,
Frederic Barrat
On Fri, May 05, 2017 at 05:14:15PM +1000, Andrew Donnellan wrote:
> sem is a global and it looks like it's intended to be held after
> device_open() returns and only released in device_close(), so this looks
> wrong.
>
This doesn't affect the success path, it only means that if
device_open() fails because we don't have enough free memory or whatever
then we can try again later.
regards,
dan carpenter
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] cxl: Unlock on error in probe
@ 2017-05-05 7:37 ` Dan Carpenter
0 siblings, 0 replies; 16+ messages in thread
From: Dan Carpenter @ 2017-05-05 7:37 UTC (permalink / raw)
To: Andrew Donnellan
Cc: Ian Munsie, Christophe Lombard, kernel-janitors, linuxppc-dev,
Frederic Barrat
On Fri, May 05, 2017 at 05:14:15PM +1000, Andrew Donnellan wrote:
> sem is a global and it looks like it's intended to be held after
> device_open() returns and only released in device_close(), so this looks
> wrong.
>
This doesn't affect the success path, it only means that if
device_open() fails because we don't have enough free memory or whatever
then we can try again later.
regards,
dan carpenter
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] cxl: Unlock on error in probe
2017-05-05 7:14 ` Andrew Donnellan
@ 2017-05-05 7:23 ` walter harms
-1 siblings, 0 replies; 16+ messages in thread
From: walter harms @ 2017-05-05 7:23 UTC (permalink / raw)
To: Andrew Donnellan
Cc: Dan Carpenter, Ian Munsie, Christophe Lombard, kernel-janitors,
linuxppc-dev, Frederic Barrat
Am 05.05.2017 09:14, schrieb Andrew Donnellan:
> On 05/05/17 15:34, Dan Carpenter wrote:
>> We should unlock if get_cxl_adapter() fails.
>>
>> Fixes: 594ff7d067ca ("cxl: Support to flash a new image on the adapter
>> from a guest")
>> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>>
>> diff --git a/drivers/misc/cxl/flash.c b/drivers/misc/cxl/flash.c
>> index 7c61c70ba3f6..37475abea3e6 100644
>> --- a/drivers/misc/cxl/flash.c
>> +++ b/drivers/misc/cxl/flash.c
>> @@ -401,8 +401,10 @@ static int device_open(struct inode *inode,
>> struct file *file)
>> if (down_interruptible(&sem) != 0)
>> return -EPERM;
>>
>> - if (!(adapter = get_cxl_adapter(adapter_num)))
>> - return -ENODEV;
>> + if (!(adapter = get_cxl_adapter(adapter_num))) {
>> + rc = -ENODEV;
>> + goto err_unlock;
>> + }
>>
>> file->private_data = adapter;
>> continue_token = 0;
>> @@ -446,6 +448,8 @@ static int device_open(struct inode *inode, struct
>> file *file)
>> free_page((unsigned long) le);
>> err:
>> put_device(&adapter->dev);
>> +err_unlock:
>> + up(&sem);
>>
>> return rc;
>> }
>
> sem is a global and it looks like it's intended to be held after
> device_open() returns and only released in device_close(), so this looks
> wrong.
>
the patch relates to the error path, do you expect a close() after the open() failed ?
re,
wh
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] cxl: Unlock on error in probe
@ 2017-05-05 7:23 ` walter harms
0 siblings, 0 replies; 16+ messages in thread
From: walter harms @ 2017-05-05 7:23 UTC (permalink / raw)
To: Andrew Donnellan
Cc: Dan Carpenter, Ian Munsie, Christophe Lombard, kernel-janitors,
linuxppc-dev, Frederic Barrat
Am 05.05.2017 09:14, schrieb Andrew Donnellan:
> On 05/05/17 15:34, Dan Carpenter wrote:
>> We should unlock if get_cxl_adapter() fails.
>>
>> Fixes: 594ff7d067ca ("cxl: Support to flash a new image on the adapter
>> from a guest")
>> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>>
>> diff --git a/drivers/misc/cxl/flash.c b/drivers/misc/cxl/flash.c
>> index 7c61c70ba3f6..37475abea3e6 100644
>> --- a/drivers/misc/cxl/flash.c
>> +++ b/drivers/misc/cxl/flash.c
>> @@ -401,8 +401,10 @@ static int device_open(struct inode *inode,
>> struct file *file)
>> if (down_interruptible(&sem) != 0)
>> return -EPERM;
>>
>> - if (!(adapter = get_cxl_adapter(adapter_num)))
>> - return -ENODEV;
>> + if (!(adapter = get_cxl_adapter(adapter_num))) {
>> + rc = -ENODEV;
>> + goto err_unlock;
>> + }
>>
>> file->private_data = adapter;
>> continue_token = 0;
>> @@ -446,6 +448,8 @@ static int device_open(struct inode *inode, struct
>> file *file)
>> free_page((unsigned long) le);
>> err:
>> put_device(&adapter->dev);
>> +err_unlock:
>> + up(&sem);
>>
>> return rc;
>> }
>
> sem is a global and it looks like it's intended to be held after
> device_open() returns and only released in device_close(), so this looks
> wrong.
>
the patch relates to the error path, do you expect a close() after the open() failed ?
re,
wh
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] cxl: Unlock on error in probe
[not found] <20170505053622.0670F124037@b01ledav002.gho.pok.ibm.com>
@ 2017-05-05 7:14 ` Andrew Donnellan
0 siblings, 0 replies; 16+ messages in thread
From: Andrew Donnellan @ 2017-05-05 7:14 UTC (permalink / raw)
To: Dan Carpenter, Ian Munsie, Christophe Lombard
Cc: kernel-janitors, linuxppc-dev, Frederic Barrat
On 05/05/17 15:34, Dan Carpenter wrote:
> We should unlock if get_cxl_adapter() fails.
>
> Fixes: 594ff7d067ca ("cxl: Support to flash a new image on the adapter from a guest")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>
> diff --git a/drivers/misc/cxl/flash.c b/drivers/misc/cxl/flash.c
> index 7c61c70ba3f6..37475abea3e6 100644
> --- a/drivers/misc/cxl/flash.c
> +++ b/drivers/misc/cxl/flash.c
> @@ -401,8 +401,10 @@ static int device_open(struct inode *inode, struct file *file)
> if (down_interruptible(&sem) != 0)
> return -EPERM;
>
> - if (!(adapter = get_cxl_adapter(adapter_num)))
> - return -ENODEV;
> + if (!(adapter = get_cxl_adapter(adapter_num))) {
> + rc = -ENODEV;
> + goto err_unlock;
> + }
>
> file->private_data = adapter;
> continue_token = 0;
> @@ -446,6 +448,8 @@ static int device_open(struct inode *inode, struct file *file)
> free_page((unsigned long) le);
> err:
> put_device(&adapter->dev);
> +err_unlock:
> + up(&sem);
>
> return rc;
> }
sem is a global and it looks like it's intended to be held after
device_open() returns and only released in device_close(), so this looks
wrong.
--
Andrew Donnellan OzLabs, ADL Canberra
andrew.donnellan@au1.ibm.com IBM Australia Limited
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] cxl: Unlock on error in probe
@ 2017-05-05 7:14 ` Andrew Donnellan
0 siblings, 0 replies; 16+ messages in thread
From: Andrew Donnellan @ 2017-05-05 7:14 UTC (permalink / raw)
To: Dan Carpenter, Ian Munsie, Christophe Lombard
Cc: kernel-janitors, linuxppc-dev, Frederic Barrat
On 05/05/17 15:34, Dan Carpenter wrote:
> We should unlock if get_cxl_adapter() fails.
>
> Fixes: 594ff7d067ca ("cxl: Support to flash a new image on the adapter from a guest")
> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
>
> diff --git a/drivers/misc/cxl/flash.c b/drivers/misc/cxl/flash.c
> index 7c61c70ba3f6..37475abea3e6 100644
> --- a/drivers/misc/cxl/flash.c
> +++ b/drivers/misc/cxl/flash.c
> @@ -401,8 +401,10 @@ static int device_open(struct inode *inode, struct file *file)
> if (down_interruptible(&sem) != 0)
> return -EPERM;
>
> - if (!(adapter = get_cxl_adapter(adapter_num)))
> - return -ENODEV;
> + if (!(adapter = get_cxl_adapter(adapter_num))) {
> + rc = -ENODEV;
> + goto err_unlock;
> + }
>
> file->private_data = adapter;
> continue_token = 0;
> @@ -446,6 +448,8 @@ static int device_open(struct inode *inode, struct file *file)
> free_page((unsigned long) le);
> err:
> put_device(&adapter->dev);
> +err_unlock:
> + up(&sem);
>
> return rc;
> }
sem is a global and it looks like it's intended to be held after
device_open() returns and only released in device_close(), so this looks
wrong.
--
Andrew Donnellan OzLabs, ADL Canberra
andrew.donnellan@au1.ibm.com IBM Australia Limited
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2017-06-08 4:07 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-05 5:34 [PATCH] cxl: Unlock on error in probe Dan Carpenter
2017-05-05 5:34 ` Dan Carpenter
2017-05-05 15:29 ` Frederic Barrat
2017-05-05 15:29 ` Frederic Barrat
2017-06-08 4:07 ` Michael Ellerman
2017-06-08 4:07 ` Michael Ellerman
[not found] <20170505053622.0670F124037@b01ledav002.gho.pok.ibm.com>
2017-05-05 7:14 ` [PATCH] " Andrew Donnellan
2017-05-05 7:14 ` Andrew Donnellan
2017-05-05 7:23 ` walter harms
2017-05-05 7:23 ` walter harms
2017-05-05 7:39 ` Dan Carpenter
2017-05-05 7:39 ` Dan Carpenter
2017-05-05 7:37 ` Dan Carpenter
2017-05-05 7:37 ` Dan Carpenter
[not found] ` <20170505073800.4F753124037@b01ledav002.gho.pok.ibm.com>
2017-05-05 7:46 ` Andrew Donnellan
2017-05-05 7:46 ` Andrew Donnellan
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.