All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
To: Frank Li <Frank.Li@nxp.com>
Cc: "Jorge Marques" <jorge.marques@analog.com>,
	"Alexandre Belloni" <alexandre.belloni@bootlin.com>,
	"Przemysław Gaj" <pgaj@cadence.com>,
	"Wolfram Sang" <wsa+renesas@sang-engineering.com>,
	linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org,
	imx@lists.linux.dev
Subject: Re: [PATCH v2 1/2] i3c: master: switch to use new callback .i3c_xfers() from .priv_xfers()
Date: Thu, 4 Dec 2025 10:57:26 +0100	[thread overview]
Message-ID: <aTFbBtMwXQY7TK9P@tom-desktop> (raw)
In-Reply-To: <20251203-i3c_xfer_cleanup_master-v2-1-7dd94d04ee2d@nxp.com>

Hi Frank,
Thanks for your patch.

On Wed, Dec 03, 2025 at 03:45:50PM -0500, Frank Li wrote:
> Switch to use the new .i3c_xfers() callback, which supports all I3C
> transfer modes (SDR and HDR). Also replace struct i3c_priv_xfer with the
> new struct i3c_xfer, as i3c_priv_xfer is now an alias of i3c_xfer.
> 
> No functional changes.
> 
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
>  drivers/i3c/master/adi-i3c-master.c    | 8 ++++----
>  drivers/i3c/master/dw-i3c-master.c     | 8 ++++----
>  drivers/i3c/master/i3c-master-cdns.c   | 8 ++++----
>  drivers/i3c/master/mipi-i3c-hci/core.c | 8 ++++----
>  drivers/i3c/master/renesas-i3c.c       | 6 +++---

Tested-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>


Kind Regards,
Tommaso

>  5 files changed, 19 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/i3c/master/adi-i3c-master.c b/drivers/i3c/master/adi-i3c-master.c
> index 82ac0b3d057abddc78671ce973db12f528984ea1..00eb80e492afc736046f04fa454be16bb718004a 100644
> --- a/drivers/i3c/master/adi-i3c-master.c
> +++ b/drivers/i3c/master/adi-i3c-master.c
> @@ -365,9 +365,9 @@ static int adi_i3c_master_send_ccc_cmd(struct i3c_master_controller *m,
>  	return 0;
>  }
>  
> -static int adi_i3c_master_priv_xfers(struct i3c_dev_desc *dev,
> -				     struct i3c_priv_xfer *xfers,
> -				     int nxfers)
> +static int adi_i3c_master_i3c_xfers(struct i3c_dev_desc *dev,
> +				    struct i3c_xfer *xfers,
> +				    int nxfers, enum i3c_xfer_mode mode)
>  {
>  	struct i3c_master_controller *m = i3c_dev_get_master(dev);
>  	struct adi_i3c_master *master = to_adi_i3c_master(m);
> @@ -919,7 +919,7 @@ static const struct i3c_master_controller_ops adi_i3c_master_ops = {
>  	.do_daa = adi_i3c_master_do_daa,
>  	.supports_ccc_cmd = adi_i3c_master_supports_ccc_cmd,
>  	.send_ccc_cmd = adi_i3c_master_send_ccc_cmd,
> -	.priv_xfers = adi_i3c_master_priv_xfers,
> +	.i3c_xfers = adi_i3c_master_i3c_xfers,
>  	.i2c_xfers = adi_i3c_master_i2c_xfers,
>  	.request_ibi = adi_i3c_master_request_ibi,
>  	.enable_ibi = adi_i3c_master_enable_ibi,
> diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c
> index 276592a8222e7b098a2323e0f3f587e77fc789bd..889e2ed5bc830310c5555eeeab08674d0c579a0e 100644
> --- a/drivers/i3c/master/dw-i3c-master.c
> +++ b/drivers/i3c/master/dw-i3c-master.c
> @@ -902,9 +902,9 @@ static int dw_i3c_master_daa(struct i3c_master_controller *m)
>  	return ret;
>  }
>  
> -static int dw_i3c_master_priv_xfers(struct i3c_dev_desc *dev,
> -				    struct i3c_priv_xfer *i3c_xfers,
> -				    int i3c_nxfers)
> +static int dw_i3c_master_i3c_xfers(struct i3c_dev_desc *dev,
> +				   struct i3c_xfer *i3c_xfers,
> +				   int i3c_nxfers, enum i3c_xfer_mode mode)
>  {
>  	struct dw_i3c_i2c_dev_data *data = i3c_dev_get_master_data(dev);
>  	struct i3c_master_controller *m = i3c_dev_get_master(dev);
> @@ -1498,7 +1498,7 @@ static const struct i3c_master_controller_ops dw_mipi_i3c_ops = {
>  	.do_daa = dw_i3c_master_daa,
>  	.supports_ccc_cmd = dw_i3c_master_supports_ccc_cmd,
>  	.send_ccc_cmd = dw_i3c_master_send_ccc_cmd,
> -	.priv_xfers = dw_i3c_master_priv_xfers,
> +	.i3c_xfers = dw_i3c_master_i3c_xfers,
>  	.attach_i2c_dev = dw_i3c_master_attach_i2c_dev,
>  	.detach_i2c_dev = dw_i3c_master_detach_i2c_dev,
>  	.i2c_xfers = dw_i3c_master_i2c_xfers,
> diff --git a/drivers/i3c/master/i3c-master-cdns.c b/drivers/i3c/master/i3c-master-cdns.c
> index 97b151564d3d31092975cec14958a17ddcd91d13..8eb76b8ca2b00a46a65f3a6dc7416d8af7ca288d 100644
> --- a/drivers/i3c/master/i3c-master-cdns.c
> +++ b/drivers/i3c/master/i3c-master-cdns.c
> @@ -720,9 +720,9 @@ static int cdns_i3c_master_send_ccc_cmd(struct i3c_master_controller *m,
>  	return ret;
>  }
>  
> -static int cdns_i3c_master_priv_xfers(struct i3c_dev_desc *dev,
> -				      struct i3c_priv_xfer *xfers,
> -				      int nxfers)
> +static int cdns_i3c_master_i3c_xfers(struct i3c_dev_desc *dev,
> +				     struct i3c_xfer *xfers,
> +				     int nxfers, enum i3c_xfer_mode mode)
>  {
>  	struct i3c_master_controller *m = i3c_dev_get_master(dev);
>  	struct cdns_i3c_master *master = to_cdns_i3c_master(m);
> @@ -1519,7 +1519,7 @@ static const struct i3c_master_controller_ops cdns_i3c_master_ops = {
>  	.detach_i2c_dev = cdns_i3c_master_detach_i2c_dev,
>  	.supports_ccc_cmd = cdns_i3c_master_supports_ccc_cmd,
>  	.send_ccc_cmd = cdns_i3c_master_send_ccc_cmd,
> -	.priv_xfers = cdns_i3c_master_priv_xfers,
> +	.i3c_xfers = cdns_i3c_master_i3c_xfers,
>  	.i2c_xfers = cdns_i3c_master_i2c_xfers,
>  	.enable_ibi = cdns_i3c_master_enable_ibi,
>  	.disable_ibi = cdns_i3c_master_disable_ibi,
> diff --git a/drivers/i3c/master/mipi-i3c-hci/core.c b/drivers/i3c/master/mipi-i3c-hci/core.c
> index 47e42cb4dbe71edc5a022f4cb0fdf33a281eb4a7..607d77ab0e54691705845c33a79939820a83c9f0 100644
> --- a/drivers/i3c/master/mipi-i3c-hci/core.c
> +++ b/drivers/i3c/master/mipi-i3c-hci/core.c
> @@ -266,9 +266,9 @@ static int i3c_hci_daa(struct i3c_master_controller *m)
>  	return hci->cmd->perform_daa(hci);
>  }
>  
> -static int i3c_hci_priv_xfers(struct i3c_dev_desc *dev,
> -			      struct i3c_priv_xfer *i3c_xfers,
> -			      int nxfers)
> +static int i3c_hci_i3c_xfers(struct i3c_dev_desc *dev,
> +			     struct i3c_xfer *i3c_xfers, int nxfers,
> +			     enum i3c_xfer_mode mode)
>  {
>  	struct i3c_master_controller *m = i3c_dev_get_master(dev);
>  	struct i3c_hci *hci = to_i3c_hci(m);
> @@ -515,7 +515,7 @@ static const struct i3c_master_controller_ops i3c_hci_ops = {
>  	.bus_cleanup		= i3c_hci_bus_cleanup,
>  	.do_daa			= i3c_hci_daa,
>  	.send_ccc_cmd		= i3c_hci_send_ccc_cmd,
> -	.priv_xfers		= i3c_hci_priv_xfers,
> +	.i3c_xfers		= i3c_hci_i3c_xfers,
>  	.i2c_xfers		= i3c_hci_i2c_xfers,
>  	.attach_i3c_dev		= i3c_hci_attach_i3c_dev,
>  	.reattach_i3c_dev	= i3c_hci_reattach_i3c_dev,
> diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-i3c.c
> index 275f7b9242886ee77a647149a808e2f184fb0447..426a418f29b61256fbbfc50cf578bf04629ec391 100644
> --- a/drivers/i3c/master/renesas-i3c.c
> +++ b/drivers/i3c/master/renesas-i3c.c
> @@ -794,8 +794,8 @@ static int renesas_i3c_send_ccc_cmd(struct i3c_master_controller *m,
>  	return ret;
>  }
>  
> -static int renesas_i3c_priv_xfers(struct i3c_dev_desc *dev, struct i3c_priv_xfer *i3c_xfers,
> -					 int i3c_nxfers)
> +static int renesas_i3c_i3c_xfers(struct i3c_dev_desc *dev, struct i3c_xfer *i3c_xfers,
> +				 int i3c_nxfers, enum i3c_xfer_mode mode)
>  {
>  	struct i3c_master_controller *m = i3c_dev_get_master(dev);
>  	struct renesas_i3c *i3c = to_renesas_i3c(m);
> @@ -1282,7 +1282,7 @@ static const struct i3c_master_controller_ops renesas_i3c_ops = {
>  	.do_daa = renesas_i3c_daa,
>  	.supports_ccc_cmd = renesas_i3c_supports_ccc_cmd,
>  	.send_ccc_cmd = renesas_i3c_send_ccc_cmd,
> -	.priv_xfers = renesas_i3c_priv_xfers,
> +	.i3c_xfers = renesas_i3c_i3c_xfers,
>  	.attach_i2c_dev = renesas_i3c_attach_i2c_dev,
>  	.detach_i2c_dev = renesas_i3c_detach_i2c_dev,
>  	.i2c_xfers = renesas_i3c_i2c_xfers,
> 
> -- 
> 2.34.1
> 
> 

WARNING: multiple messages have this Message-ID (diff)
From: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
To: Frank Li <Frank.Li@nxp.com>
Cc: "Jorge Marques" <jorge.marques@analog.com>,
	"Alexandre Belloni" <alexandre.belloni@bootlin.com>,
	"Przemysław Gaj" <pgaj@cadence.com>,
	"Wolfram Sang" <wsa+renesas@sang-engineering.com>,
	linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org,
	imx@lists.linux.dev
Subject: Re: [PATCH v2 1/2] i3c: master: switch to use new callback .i3c_xfers() from .priv_xfers()
Date: Thu, 4 Dec 2025 10:57:26 +0100	[thread overview]
Message-ID: <aTFbBtMwXQY7TK9P@tom-desktop> (raw)
In-Reply-To: <20251203-i3c_xfer_cleanup_master-v2-1-7dd94d04ee2d@nxp.com>

Hi Frank,
Thanks for your patch.

On Wed, Dec 03, 2025 at 03:45:50PM -0500, Frank Li wrote:
> Switch to use the new .i3c_xfers() callback, which supports all I3C
> transfer modes (SDR and HDR). Also replace struct i3c_priv_xfer with the
> new struct i3c_xfer, as i3c_priv_xfer is now an alias of i3c_xfer.
> 
> No functional changes.
> 
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
>  drivers/i3c/master/adi-i3c-master.c    | 8 ++++----
>  drivers/i3c/master/dw-i3c-master.c     | 8 ++++----
>  drivers/i3c/master/i3c-master-cdns.c   | 8 ++++----
>  drivers/i3c/master/mipi-i3c-hci/core.c | 8 ++++----
>  drivers/i3c/master/renesas-i3c.c       | 6 +++---

Tested-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>


Kind Regards,
Tommaso

>  5 files changed, 19 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/i3c/master/adi-i3c-master.c b/drivers/i3c/master/adi-i3c-master.c
> index 82ac0b3d057abddc78671ce973db12f528984ea1..00eb80e492afc736046f04fa454be16bb718004a 100644
> --- a/drivers/i3c/master/adi-i3c-master.c
> +++ b/drivers/i3c/master/adi-i3c-master.c
> @@ -365,9 +365,9 @@ static int adi_i3c_master_send_ccc_cmd(struct i3c_master_controller *m,
>  	return 0;
>  }
>  
> -static int adi_i3c_master_priv_xfers(struct i3c_dev_desc *dev,
> -				     struct i3c_priv_xfer *xfers,
> -				     int nxfers)
> +static int adi_i3c_master_i3c_xfers(struct i3c_dev_desc *dev,
> +				    struct i3c_xfer *xfers,
> +				    int nxfers, enum i3c_xfer_mode mode)
>  {
>  	struct i3c_master_controller *m = i3c_dev_get_master(dev);
>  	struct adi_i3c_master *master = to_adi_i3c_master(m);
> @@ -919,7 +919,7 @@ static const struct i3c_master_controller_ops adi_i3c_master_ops = {
>  	.do_daa = adi_i3c_master_do_daa,
>  	.supports_ccc_cmd = adi_i3c_master_supports_ccc_cmd,
>  	.send_ccc_cmd = adi_i3c_master_send_ccc_cmd,
> -	.priv_xfers = adi_i3c_master_priv_xfers,
> +	.i3c_xfers = adi_i3c_master_i3c_xfers,
>  	.i2c_xfers = adi_i3c_master_i2c_xfers,
>  	.request_ibi = adi_i3c_master_request_ibi,
>  	.enable_ibi = adi_i3c_master_enable_ibi,
> diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c
> index 276592a8222e7b098a2323e0f3f587e77fc789bd..889e2ed5bc830310c5555eeeab08674d0c579a0e 100644
> --- a/drivers/i3c/master/dw-i3c-master.c
> +++ b/drivers/i3c/master/dw-i3c-master.c
> @@ -902,9 +902,9 @@ static int dw_i3c_master_daa(struct i3c_master_controller *m)
>  	return ret;
>  }
>  
> -static int dw_i3c_master_priv_xfers(struct i3c_dev_desc *dev,
> -				    struct i3c_priv_xfer *i3c_xfers,
> -				    int i3c_nxfers)
> +static int dw_i3c_master_i3c_xfers(struct i3c_dev_desc *dev,
> +				   struct i3c_xfer *i3c_xfers,
> +				   int i3c_nxfers, enum i3c_xfer_mode mode)
>  {
>  	struct dw_i3c_i2c_dev_data *data = i3c_dev_get_master_data(dev);
>  	struct i3c_master_controller *m = i3c_dev_get_master(dev);
> @@ -1498,7 +1498,7 @@ static const struct i3c_master_controller_ops dw_mipi_i3c_ops = {
>  	.do_daa = dw_i3c_master_daa,
>  	.supports_ccc_cmd = dw_i3c_master_supports_ccc_cmd,
>  	.send_ccc_cmd = dw_i3c_master_send_ccc_cmd,
> -	.priv_xfers = dw_i3c_master_priv_xfers,
> +	.i3c_xfers = dw_i3c_master_i3c_xfers,
>  	.attach_i2c_dev = dw_i3c_master_attach_i2c_dev,
>  	.detach_i2c_dev = dw_i3c_master_detach_i2c_dev,
>  	.i2c_xfers = dw_i3c_master_i2c_xfers,
> diff --git a/drivers/i3c/master/i3c-master-cdns.c b/drivers/i3c/master/i3c-master-cdns.c
> index 97b151564d3d31092975cec14958a17ddcd91d13..8eb76b8ca2b00a46a65f3a6dc7416d8af7ca288d 100644
> --- a/drivers/i3c/master/i3c-master-cdns.c
> +++ b/drivers/i3c/master/i3c-master-cdns.c
> @@ -720,9 +720,9 @@ static int cdns_i3c_master_send_ccc_cmd(struct i3c_master_controller *m,
>  	return ret;
>  }
>  
> -static int cdns_i3c_master_priv_xfers(struct i3c_dev_desc *dev,
> -				      struct i3c_priv_xfer *xfers,
> -				      int nxfers)
> +static int cdns_i3c_master_i3c_xfers(struct i3c_dev_desc *dev,
> +				     struct i3c_xfer *xfers,
> +				     int nxfers, enum i3c_xfer_mode mode)
>  {
>  	struct i3c_master_controller *m = i3c_dev_get_master(dev);
>  	struct cdns_i3c_master *master = to_cdns_i3c_master(m);
> @@ -1519,7 +1519,7 @@ static const struct i3c_master_controller_ops cdns_i3c_master_ops = {
>  	.detach_i2c_dev = cdns_i3c_master_detach_i2c_dev,
>  	.supports_ccc_cmd = cdns_i3c_master_supports_ccc_cmd,
>  	.send_ccc_cmd = cdns_i3c_master_send_ccc_cmd,
> -	.priv_xfers = cdns_i3c_master_priv_xfers,
> +	.i3c_xfers = cdns_i3c_master_i3c_xfers,
>  	.i2c_xfers = cdns_i3c_master_i2c_xfers,
>  	.enable_ibi = cdns_i3c_master_enable_ibi,
>  	.disable_ibi = cdns_i3c_master_disable_ibi,
> diff --git a/drivers/i3c/master/mipi-i3c-hci/core.c b/drivers/i3c/master/mipi-i3c-hci/core.c
> index 47e42cb4dbe71edc5a022f4cb0fdf33a281eb4a7..607d77ab0e54691705845c33a79939820a83c9f0 100644
> --- a/drivers/i3c/master/mipi-i3c-hci/core.c
> +++ b/drivers/i3c/master/mipi-i3c-hci/core.c
> @@ -266,9 +266,9 @@ static int i3c_hci_daa(struct i3c_master_controller *m)
>  	return hci->cmd->perform_daa(hci);
>  }
>  
> -static int i3c_hci_priv_xfers(struct i3c_dev_desc *dev,
> -			      struct i3c_priv_xfer *i3c_xfers,
> -			      int nxfers)
> +static int i3c_hci_i3c_xfers(struct i3c_dev_desc *dev,
> +			     struct i3c_xfer *i3c_xfers, int nxfers,
> +			     enum i3c_xfer_mode mode)
>  {
>  	struct i3c_master_controller *m = i3c_dev_get_master(dev);
>  	struct i3c_hci *hci = to_i3c_hci(m);
> @@ -515,7 +515,7 @@ static const struct i3c_master_controller_ops i3c_hci_ops = {
>  	.bus_cleanup		= i3c_hci_bus_cleanup,
>  	.do_daa			= i3c_hci_daa,
>  	.send_ccc_cmd		= i3c_hci_send_ccc_cmd,
> -	.priv_xfers		= i3c_hci_priv_xfers,
> +	.i3c_xfers		= i3c_hci_i3c_xfers,
>  	.i2c_xfers		= i3c_hci_i2c_xfers,
>  	.attach_i3c_dev		= i3c_hci_attach_i3c_dev,
>  	.reattach_i3c_dev	= i3c_hci_reattach_i3c_dev,
> diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-i3c.c
> index 275f7b9242886ee77a647149a808e2f184fb0447..426a418f29b61256fbbfc50cf578bf04629ec391 100644
> --- a/drivers/i3c/master/renesas-i3c.c
> +++ b/drivers/i3c/master/renesas-i3c.c
> @@ -794,8 +794,8 @@ static int renesas_i3c_send_ccc_cmd(struct i3c_master_controller *m,
>  	return ret;
>  }
>  
> -static int renesas_i3c_priv_xfers(struct i3c_dev_desc *dev, struct i3c_priv_xfer *i3c_xfers,
> -					 int i3c_nxfers)
> +static int renesas_i3c_i3c_xfers(struct i3c_dev_desc *dev, struct i3c_xfer *i3c_xfers,
> +				 int i3c_nxfers, enum i3c_xfer_mode mode)
>  {
>  	struct i3c_master_controller *m = i3c_dev_get_master(dev);
>  	struct renesas_i3c *i3c = to_renesas_i3c(m);
> @@ -1282,7 +1282,7 @@ static const struct i3c_master_controller_ops renesas_i3c_ops = {
>  	.do_daa = renesas_i3c_daa,
>  	.supports_ccc_cmd = renesas_i3c_supports_ccc_cmd,
>  	.send_ccc_cmd = renesas_i3c_send_ccc_cmd,
> -	.priv_xfers = renesas_i3c_priv_xfers,
> +	.i3c_xfers = renesas_i3c_i3c_xfers,
>  	.attach_i2c_dev = renesas_i3c_attach_i2c_dev,
>  	.detach_i2c_dev = renesas_i3c_detach_i2c_dev,
>  	.i2c_xfers = renesas_i3c_i2c_xfers,
> 
> -- 
> 2.34.1
> 
> 

-- 
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c

  reply	other threads:[~2025-12-04  9:57 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-03 20:45 [PATCH v2 0/2] i3c: master: switch to use new callback .i3c_xfers() from .priv_xfers() Frank Li
2025-12-03 20:45 ` Frank Li
2025-12-03 20:45 ` [PATCH v2 1/2] " Frank Li
2025-12-03 20:45   ` Frank Li
2025-12-04  9:57   ` Tommaso Merciai [this message]
2025-12-04  9:57     ` Tommaso Merciai
2025-12-03 20:45 ` [PATCH v2 2/2] i3c: master: cleanup callback .priv_xfers() Frank Li
2025-12-03 20:45   ` Frank Li
2025-12-04  9:58   ` Tommaso Merciai
2025-12-04  9:58     ` Tommaso Merciai
2025-12-12 23:07 ` [PATCH v2 0/2] i3c: master: switch to use new callback .i3c_xfers() from .priv_xfers() Alexandre Belloni
2025-12-12 23:07   ` Alexandre Belloni

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=aTFbBtMwXQY7TK9P@tom-desktop \
    --to=tommaso.merciai.xr@bp.renesas.com \
    --cc=Frank.Li@nxp.com \
    --cc=alexandre.belloni@bootlin.com \
    --cc=imx@lists.linux.dev \
    --cc=jorge.marques@analog.com \
    --cc=linux-i3c@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pgaj@cadence.com \
    --cc=wsa+renesas@sang-engineering.com \
    /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.