* [PATCH 0/3] libvhost-user: Add format attribute and fix format strings
@ 2022-04-22 7:01 Stefan Weil
2022-04-22 7:01 ` [PATCH 1/3] libvhost-user: Fix wrong type of argument to formatting function (reported by LGTM) Stefan Weil
` (3 more replies)
0 siblings, 4 replies; 11+ messages in thread
From: Stefan Weil @ 2022-04-22 7:01 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau, Raphael Norwitz
At least the 1st two patches could also be applied via qemu-trivial.
One of them missed release 7.0, so hopefully the fixes will be
included in the next QEMU release.
Stefan W.
[PATCH 1/3] libvhost-user: Fix wrong type of argument to formatting
[PATCH 2/3] libvhost-user: Fix format strings
[PATCH 3/3] libvhost-user: Add format attribute to local function
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/3] libvhost-user: Fix wrong type of argument to formatting function (reported by LGTM)
2022-04-22 7:01 [PATCH 0/3] libvhost-user: Add format attribute and fix format strings Stefan Weil
@ 2022-04-22 7:01 ` Stefan Weil
2022-11-02 18:19 ` Laurent Vivier
2022-04-22 7:01 ` [PATCH 2/3] libvhost-user: Fix format strings Stefan Weil
` (2 subsequent siblings)
3 siblings, 1 reply; 11+ messages in thread
From: Stefan Weil @ 2022-04-22 7:01 UTC (permalink / raw)
To: qemu-devel
Cc: Marc-André Lureau, Stefan Weil, Philippe Mathieu-Daudé,
Raphael Norwitz
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Stefan Weil <sw@weilnetz.de>
---
This patch was already sent to the list and got reviewed, but missed
release 7.0.0.
subprojects/libvhost-user/libvhost-user.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvhost-user/libvhost-user.c
index 47d2efc60f..2d29140a8f 100644
--- a/subprojects/libvhost-user/libvhost-user.c
+++ b/subprojects/libvhost-user/libvhost-user.c
@@ -651,7 +651,7 @@ generate_faults(VuDev *dev) {
if (ioctl(dev->postcopy_ufd, UFFDIO_REGISTER, ®_struct)) {
vu_panic(dev, "%s: Failed to userfault region %d "
- "@%p + size:%zx offset: %zx: (ufd=%d)%s\n",
+ "@%" PRIx64 " + size:%zx offset: %zx: (ufd=%d)%s\n",
__func__, i,
dev_region->mmap_addr,
dev_region->size, dev_region->mmap_offset,
--
2.30.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/3] libvhost-user: Fix format strings
2022-04-22 7:01 [PATCH 0/3] libvhost-user: Add format attribute and fix format strings Stefan Weil
2022-04-22 7:01 ` [PATCH 1/3] libvhost-user: Fix wrong type of argument to formatting function (reported by LGTM) Stefan Weil
@ 2022-04-22 7:01 ` Stefan Weil
2022-04-22 9:32 ` Marc-André Lureau
2022-11-02 18:22 ` Laurent Vivier
2022-04-22 7:01 ` [PATCH 3/3] libvhost-user: Add format attribute to local function vu_panic Stefan Weil
2022-10-29 4:52 ` [PATCH 0/3] libvhost-user: Add format attribute and fix format strings Stefan Weil via
3 siblings, 2 replies; 11+ messages in thread
From: Stefan Weil @ 2022-04-22 7:01 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau, Stefan Weil, Raphael Norwitz
Signed-off-by: Stefan Weil <sw@weilnetz.de>
---
subprojects/libvhost-user/libvhost-user.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvhost-user/libvhost-user.c
index 2d29140a8f..94645f9154 100644
--- a/subprojects/libvhost-user/libvhost-user.c
+++ b/subprojects/libvhost-user/libvhost-user.c
@@ -700,7 +700,7 @@ vu_add_mem_reg(VuDev *dev, VhostUserMsg *vmsg) {
if (vmsg->size < VHOST_USER_MEM_REG_SIZE) {
close(vmsg->fds[0]);
vu_panic(dev, "VHOST_USER_ADD_MEM_REG requires a message size of at "
- "least %d bytes and only %d bytes were received",
+ "least %zu bytes and only %d bytes were received",
VHOST_USER_MEM_REG_SIZE, vmsg->size);
return false;
}
@@ -833,7 +833,7 @@ vu_rem_mem_reg(VuDev *dev, VhostUserMsg *vmsg) {
if (vmsg->size < VHOST_USER_MEM_REG_SIZE) {
close(vmsg->fds[0]);
vu_panic(dev, "VHOST_USER_REM_MEM_REG requires a message size of at "
- "least %d bytes and only %d bytes were received",
+ "least %zu bytes and only %d bytes were received",
VHOST_USER_MEM_REG_SIZE, vmsg->size);
return false;
}
--
2.30.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/3] libvhost-user: Add format attribute to local function vu_panic
2022-04-22 7:01 [PATCH 0/3] libvhost-user: Add format attribute and fix format strings Stefan Weil
2022-04-22 7:01 ` [PATCH 1/3] libvhost-user: Fix wrong type of argument to formatting function (reported by LGTM) Stefan Weil
2022-04-22 7:01 ` [PATCH 2/3] libvhost-user: Fix format strings Stefan Weil
@ 2022-04-22 7:01 ` Stefan Weil
2022-04-22 9:35 ` Marc-André Lureau
2022-11-02 18:24 ` Laurent Vivier
2022-10-29 4:52 ` [PATCH 0/3] libvhost-user: Add format attribute and fix format strings Stefan Weil via
3 siblings, 2 replies; 11+ messages in thread
From: Stefan Weil @ 2022-04-22 7:01 UTC (permalink / raw)
To: qemu-devel; +Cc: Marc-André Lureau, Stefan Weil, Raphael Norwitz
Signed-off-by: Stefan Weil <sw@weilnetz.de>
---
It would be good to add format attributes to local functions, too (like
it is done here) to avoid future format bugs.
The changes here could be simplified by including a glib header,
but from the comments I assumed that is unwanted here?
subprojects/libvhost-user/libvhost-user.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvhost-user/libvhost-user.c
index 94645f9154..29ab85fc9d 100644
--- a/subprojects/libvhost-user/libvhost-user.c
+++ b/subprojects/libvhost-user/libvhost-user.c
@@ -45,6 +45,17 @@
#include "libvhost-user.h"
/* usually provided by GLib */
+#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
+#if !defined(__clang__) && (__GNUC__ == 4 && __GNUC_MINOR__ == 4)
+#define G_GNUC_PRINTF(format_idx, arg_idx) \
+ __attribute__((__format__(gnu_printf, format_idx, arg_idx)))
+#else
+#define G_GNUC_PRINTF(format_idx, arg_idx) \
+ __attribute__((__format__(__printf__, format_idx, arg_idx)))
+#endif
+#else /* !__GNUC__ */
+#define G_GNUC_PRINTF(format_idx, arg_idx)
+#endif /* !__GNUC__ */
#ifndef MIN
#define MIN(x, y) ({ \
typeof(x) _min1 = (x); \
@@ -151,7 +162,7 @@ vu_request_to_string(unsigned int req)
}
}
-static void
+static void G_GNUC_PRINTF(2, 3)
vu_panic(VuDev *dev, const char *msg, ...)
{
char *buf = NULL;
--
2.30.2
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 2/3] libvhost-user: Fix format strings
2022-04-22 7:01 ` [PATCH 2/3] libvhost-user: Fix format strings Stefan Weil
@ 2022-04-22 9:32 ` Marc-André Lureau
2022-11-02 18:22 ` Laurent Vivier
1 sibling, 0 replies; 11+ messages in thread
From: Marc-André Lureau @ 2022-04-22 9:32 UTC (permalink / raw)
To: Stefan Weil; +Cc: QEMU, Raphael Norwitz
[-- Attachment #1: Type: text/plain, Size: 1596 bytes --]
On Fri, Apr 22, 2022 at 11:07 AM Stefan Weil <sw@weilnetz.de> wrote:
> Signed-off-by: Stefan Weil <sw@weilnetz.de>
>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
> subprojects/libvhost-user/libvhost-user.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/subprojects/libvhost-user/libvhost-user.c
> b/subprojects/libvhost-user/libvhost-user.c
> index 2d29140a8f..94645f9154 100644
> --- a/subprojects/libvhost-user/libvhost-user.c
> +++ b/subprojects/libvhost-user/libvhost-user.c
> @@ -700,7 +700,7 @@ vu_add_mem_reg(VuDev *dev, VhostUserMsg *vmsg) {
> if (vmsg->size < VHOST_USER_MEM_REG_SIZE) {
> close(vmsg->fds[0]);
> vu_panic(dev, "VHOST_USER_ADD_MEM_REG requires a message size of
> at "
> - "least %d bytes and only %d bytes were received",
> + "least %zu bytes and only %d bytes were received",
> VHOST_USER_MEM_REG_SIZE, vmsg->size);
> return false;
> }
> @@ -833,7 +833,7 @@ vu_rem_mem_reg(VuDev *dev, VhostUserMsg *vmsg) {
> if (vmsg->size < VHOST_USER_MEM_REG_SIZE) {
> close(vmsg->fds[0]);
> vu_panic(dev, "VHOST_USER_REM_MEM_REG requires a message size of
> at "
> - "least %d bytes and only %d bytes were received",
> + "least %zu bytes and only %d bytes were received",
> VHOST_USER_MEM_REG_SIZE, vmsg->size);
> return false;
> }
> --
> 2.30.2
>
>
>
--
Marc-André Lureau
[-- Attachment #2: Type: text/html, Size: 2491 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/3] libvhost-user: Add format attribute to local function vu_panic
2022-04-22 7:01 ` [PATCH 3/3] libvhost-user: Add format attribute to local function vu_panic Stefan Weil
@ 2022-04-22 9:35 ` Marc-André Lureau
2022-11-02 18:24 ` Laurent Vivier
1 sibling, 0 replies; 11+ messages in thread
From: Marc-André Lureau @ 2022-04-22 9:35 UTC (permalink / raw)
To: Stefan Weil; +Cc: QEMU, Raphael Norwitz
[-- Attachment #1: Type: text/plain, Size: 1924 bytes --]
Hi
On Fri, Apr 22, 2022 at 11:08 AM Stefan Weil <sw@weilnetz.de> wrote:
> Signed-off-by: Stefan Weil <sw@weilnetz.de>
>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>
> It would be good to add format attributes to local functions, too (like
> it is done here) to avoid future format bugs.
>
> The changes here could be simplified by including a glib header,
> but from the comments I assumed that is unwanted here?
>
For historical reasons, libvhost-user.c doesn't depend on glib. Whether
this is useful to anyone isn't obvious :)
> subprojects/libvhost-user/libvhost-user.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/subprojects/libvhost-user/libvhost-user.c
> b/subprojects/libvhost-user/libvhost-user.c
> index 94645f9154..29ab85fc9d 100644
> --- a/subprojects/libvhost-user/libvhost-user.c
> +++ b/subprojects/libvhost-user/libvhost-user.c
> @@ -45,6 +45,17 @@
> #include "libvhost-user.h"
>
> /* usually provided by GLib */
> +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
> +#if !defined(__clang__) && (__GNUC__ == 4 && __GNUC_MINOR__ == 4)
> +#define G_GNUC_PRINTF(format_idx, arg_idx) \
> + __attribute__((__format__(gnu_printf, format_idx, arg_idx)))
> +#else
> +#define G_GNUC_PRINTF(format_idx, arg_idx) \
> + __attribute__((__format__(__printf__, format_idx, arg_idx)))
> +#endif
> +#else /* !__GNUC__ */
> +#define G_GNUC_PRINTF(format_idx, arg_idx)
> +#endif /* !__GNUC__ */
> #ifndef MIN
> #define MIN(x, y) ({ \
> typeof(x) _min1 = (x); \
> @@ -151,7 +162,7 @@ vu_request_to_string(unsigned int req)
> }
> }
>
> -static void
> +static void G_GNUC_PRINTF(2, 3)
> vu_panic(VuDev *dev, const char *msg, ...)
> {
> char *buf = NULL;
> --
> 2.30.2
>
>
>
--
Marc-André Lureau
[-- Attachment #2: Type: text/html, Size: 2940 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/3] libvhost-user: Add format attribute and fix format strings
2022-04-22 7:01 [PATCH 0/3] libvhost-user: Add format attribute and fix format strings Stefan Weil
` (2 preceding siblings ...)
2022-04-22 7:01 ` [PATCH 3/3] libvhost-user: Add format attribute to local function vu_panic Stefan Weil
@ 2022-10-29 4:52 ` Stefan Weil via
2022-10-29 17:38 ` Philippe Mathieu-Daudé
3 siblings, 1 reply; 11+ messages in thread
From: Stefan Weil via @ 2022-10-29 4:52 UTC (permalink / raw)
To: qemu-devel
Cc: Marc-André Lureau, Raphael Norwitz, Philippe Mathieu-Daudé
Am 22.04.22 um 09:01 schrieb Stefan Weil:
> At least the 1st two patches could also be applied via qemu-trivial.
> One of them missed release 7.0, so hopefully the fixes will be
> included in the next QEMU release.
>
> Stefan W.
>
> [PATCH 1/3] libvhost-user: Fix wrong type of argument to formatting
> [PATCH 2/3] libvhost-user: Fix format strings
> [PATCH 3/3] libvhost-user: Add format attribute to local function
Who will send a pull request? All patches were reviewed, but are still
missing in the master branch.
Stefan
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 0/3] libvhost-user: Add format attribute and fix format strings
2022-10-29 4:52 ` [PATCH 0/3] libvhost-user: Add format attribute and fix format strings Stefan Weil via
@ 2022-10-29 17:38 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 11+ messages in thread
From: Philippe Mathieu-Daudé @ 2022-10-29 17:38 UTC (permalink / raw)
To: Stefan Weil, qemu-devel, QEMU Trivial
Cc: Marc-André Lureau, Raphael Norwitz, Philippe Mathieu-Daudé
On 29/10/22 06:52, Stefan Weil via wrote:
> Am 22.04.22 um 09:01 schrieb Stefan Weil:
>> At least the 1st two patches could also be applied via qemu-trivial.
>> One of them missed release 7.0, so hopefully the fixes will be
>> included in the next QEMU release.
>>
>> Stefan W.
>>
>> [PATCH 1/3] libvhost-user: Fix wrong type of argument to formatting
>> [PATCH 2/3] libvhost-user: Fix format strings
>> [PATCH 3/3] libvhost-user: Add format attribute to local function
>
> Who will send a pull request? All patches were reviewed, but are still
> missing in the master branch.
qemu-trivial?
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/3] libvhost-user: Fix wrong type of argument to formatting function (reported by LGTM)
2022-04-22 7:01 ` [PATCH 1/3] libvhost-user: Fix wrong type of argument to formatting function (reported by LGTM) Stefan Weil
@ 2022-11-02 18:19 ` Laurent Vivier
0 siblings, 0 replies; 11+ messages in thread
From: Laurent Vivier @ 2022-11-02 18:19 UTC (permalink / raw)
To: Stefan Weil, qemu-devel
Cc: Marc-André Lureau, Philippe Mathieu-Daudé,
Raphael Norwitz, qemu-trivial
Le 22/04/2022 à 09:01, Stefan Weil a écrit :
> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> Signed-off-by: Stefan Weil <sw@weilnetz.de>
> ---
>
> This patch was already sent to the list and got reviewed, but missed
> release 7.0.0.
>
> subprojects/libvhost-user/libvhost-user.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvhost-user/libvhost-user.c
> index 47d2efc60f..2d29140a8f 100644
> --- a/subprojects/libvhost-user/libvhost-user.c
> +++ b/subprojects/libvhost-user/libvhost-user.c
> @@ -651,7 +651,7 @@ generate_faults(VuDev *dev) {
>
> if (ioctl(dev->postcopy_ufd, UFFDIO_REGISTER, ®_struct)) {
> vu_panic(dev, "%s: Failed to userfault region %d "
> - "@%p + size:%zx offset: %zx: (ufd=%d)%s\n",
> + "@%" PRIx64 " + size:%zx offset: %zx: (ufd=%d)%s\n",
> __func__, i,
> dev_region->mmap_addr,
> dev_region->size, dev_region->mmap_offset,
Applied to my trivial-patches branch.
Thanks,
Laurent
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/3] libvhost-user: Fix format strings
2022-04-22 7:01 ` [PATCH 2/3] libvhost-user: Fix format strings Stefan Weil
2022-04-22 9:32 ` Marc-André Lureau
@ 2022-11-02 18:22 ` Laurent Vivier
1 sibling, 0 replies; 11+ messages in thread
From: Laurent Vivier @ 2022-11-02 18:22 UTC (permalink / raw)
To: Stefan Weil, qemu-devel
Cc: Marc-André Lureau, Raphael Norwitz, qemu-trivial
Le 22/04/2022 à 09:01, Stefan Weil a écrit :
> Signed-off-by: Stefan Weil <sw@weilnetz.de>
> ---
> subprojects/libvhost-user/libvhost-user.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvhost-user/libvhost-user.c
> index 2d29140a8f..94645f9154 100644
> --- a/subprojects/libvhost-user/libvhost-user.c
> +++ b/subprojects/libvhost-user/libvhost-user.c
> @@ -700,7 +700,7 @@ vu_add_mem_reg(VuDev *dev, VhostUserMsg *vmsg) {
> if (vmsg->size < VHOST_USER_MEM_REG_SIZE) {
> close(vmsg->fds[0]);
> vu_panic(dev, "VHOST_USER_ADD_MEM_REG requires a message size of at "
> - "least %d bytes and only %d bytes were received",
> + "least %zu bytes and only %d bytes were received",
> VHOST_USER_MEM_REG_SIZE, vmsg->size);
> return false;
> }
> @@ -833,7 +833,7 @@ vu_rem_mem_reg(VuDev *dev, VhostUserMsg *vmsg) {
> if (vmsg->size < VHOST_USER_MEM_REG_SIZE) {
> close(vmsg->fds[0]);
> vu_panic(dev, "VHOST_USER_REM_MEM_REG requires a message size of at "
> - "least %d bytes and only %d bytes were received",
> + "least %zu bytes and only %d bytes were received",
> VHOST_USER_MEM_REG_SIZE, vmsg->size);
> return false;
> }
Applied to my trivial-patches branch.
Thanks,
Laurent
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/3] libvhost-user: Add format attribute to local function vu_panic
2022-04-22 7:01 ` [PATCH 3/3] libvhost-user: Add format attribute to local function vu_panic Stefan Weil
2022-04-22 9:35 ` Marc-André Lureau
@ 2022-11-02 18:24 ` Laurent Vivier
1 sibling, 0 replies; 11+ messages in thread
From: Laurent Vivier @ 2022-11-02 18:24 UTC (permalink / raw)
To: Stefan Weil, qemu-devel
Cc: Marc-André Lureau, Raphael Norwitz, qemu-trivial
Le 22/04/2022 à 09:01, Stefan Weil a écrit :
> Signed-off-by: Stefan Weil <sw@weilnetz.de>
> ---
>
> It would be good to add format attributes to local functions, too (like
> it is done here) to avoid future format bugs.
>
> The changes here could be simplified by including a glib header,
> but from the comments I assumed that is unwanted here?
>
> subprojects/libvhost-user/libvhost-user.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvhost-user/libvhost-user.c
> index 94645f9154..29ab85fc9d 100644
> --- a/subprojects/libvhost-user/libvhost-user.c
> +++ b/subprojects/libvhost-user/libvhost-user.c
> @@ -45,6 +45,17 @@
> #include "libvhost-user.h"
>
> /* usually provided by GLib */
> +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
> +#if !defined(__clang__) && (__GNUC__ == 4 && __GNUC_MINOR__ == 4)
> +#define G_GNUC_PRINTF(format_idx, arg_idx) \
> + __attribute__((__format__(gnu_printf, format_idx, arg_idx)))
> +#else
> +#define G_GNUC_PRINTF(format_idx, arg_idx) \
> + __attribute__((__format__(__printf__, format_idx, arg_idx)))
> +#endif
> +#else /* !__GNUC__ */
> +#define G_GNUC_PRINTF(format_idx, arg_idx)
> +#endif /* !__GNUC__ */
> #ifndef MIN
> #define MIN(x, y) ({ \
> typeof(x) _min1 = (x); \
> @@ -151,7 +162,7 @@ vu_request_to_string(unsigned int req)
> }
> }
>
> -static void
> +static void G_GNUC_PRINTF(2, 3)
> vu_panic(VuDev *dev, const char *msg, ...)
> {
> char *buf = NULL;
Applied to my trivial-patches branch.
Thanks,
Laurent
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2022-11-02 18:25 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-22 7:01 [PATCH 0/3] libvhost-user: Add format attribute and fix format strings Stefan Weil
2022-04-22 7:01 ` [PATCH 1/3] libvhost-user: Fix wrong type of argument to formatting function (reported by LGTM) Stefan Weil
2022-11-02 18:19 ` Laurent Vivier
2022-04-22 7:01 ` [PATCH 2/3] libvhost-user: Fix format strings Stefan Weil
2022-04-22 9:32 ` Marc-André Lureau
2022-11-02 18:22 ` Laurent Vivier
2022-04-22 7:01 ` [PATCH 3/3] libvhost-user: Add format attribute to local function vu_panic Stefan Weil
2022-04-22 9:35 ` Marc-André Lureau
2022-11-02 18:24 ` Laurent Vivier
2022-10-29 4:52 ` [PATCH 0/3] libvhost-user: Add format attribute and fix format strings Stefan Weil via
2022-10-29 17:38 ` Philippe Mathieu-Daudé
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.