All of lore.kernel.org
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@linux-foundation.org>
To: Mel Gorman <mgorman@suse.de>
Cc: Dave Chinner <david@fromorbit.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Ingo Molnar <mingo@kernel.org>,
	Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>,
	xfs@oss.sgi.com, ppc-dev <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH 1/4] mm: thp: Return the correct value for change_huge_pmd
Date: Sat, 7 Mar 2015 12:13:27 -0800	[thread overview]
Message-ID: <CA+55aFwGLOfmBMHsFzuqKbJqR43+SVydv5zxh-KWMPD=fQG1UQ@mail.gmail.com> (raw)
In-Reply-To: <1425741651-29152-2-git-send-email-mgorman@suse.de>

Looks obviously correct. The old code was just very wrong.

Acked-by: Linus Torvalds <torvalds@linux-foundation.org>

                     Linus


On Sat, Mar 7, 2015 at 7:20 AM, Mel Gorman <mgorman@suse.de> wrote:
> The wrong value is being returned by change_huge_pmd since commit
> 10c1045f28e8 ("mm: numa: avoid unnecessary TLB flushes when setting
> NUMA hinting entries") which allows a fallthrough that tries to adjust
> non-existent PTEs. This patch corrects it.
>
> Signed-off-by: Mel Gorman <mgorman@suse.de>
> ---
>  mm/huge_memory.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> index fc00c8cb5a82..194c0f019774 100644
> --- a/mm/huge_memory.c
> +++ b/mm/huge_memory.c
> @@ -1482,6 +1482,7 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
>
>         if (__pmd_trans_huge_lock(pmd, vma, &ptl) == 1) {
>                 pmd_t entry;
> +               ret = 1;
>
>                 /*
>                  * Avoid trapping faults against the zero page. The read-only
> @@ -1490,11 +1491,10 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
>                  */
>                 if (prot_numa && is_huge_zero_pmd(*pmd)) {
>                         spin_unlock(ptl);
> -                       return 0;
> +                       return ret;
>                 }
>
>                 if (!prot_numa || !pmd_protnone(*pmd)) {
> -                       ret = 1;
>                         entry = pmdp_get_and_clear_notify(mm, addr, pmd);
>                         entry = pmd_modify(entry, newprot);
>                         ret = HPAGE_PMD_NR;
> --
> 2.1.2
>

WARNING: multiple messages have this Message-ID (diff)
From: Linus Torvalds <torvalds@linux-foundation.org>
To: Mel Gorman <mgorman@suse.de>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	xfs@oss.sgi.com, Linux-MM <linux-mm@kvack.org>,
	Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	ppc-dev <linuxppc-dev@lists.ozlabs.org>,
	Ingo Molnar <mingo@kernel.org>
Subject: Re: [PATCH 1/4] mm: thp: Return the correct value for change_huge_pmd
Date: Sat, 7 Mar 2015 12:13:27 -0800	[thread overview]
Message-ID: <CA+55aFwGLOfmBMHsFzuqKbJqR43+SVydv5zxh-KWMPD=fQG1UQ@mail.gmail.com> (raw)
In-Reply-To: <1425741651-29152-2-git-send-email-mgorman@suse.de>

Looks obviously correct. The old code was just very wrong.

Acked-by: Linus Torvalds <torvalds@linux-foundation.org>

                     Linus


On Sat, Mar 7, 2015 at 7:20 AM, Mel Gorman <mgorman@suse.de> wrote:
> The wrong value is being returned by change_huge_pmd since commit
> 10c1045f28e8 ("mm: numa: avoid unnecessary TLB flushes when setting
> NUMA hinting entries") which allows a fallthrough that tries to adjust
> non-existent PTEs. This patch corrects it.
>
> Signed-off-by: Mel Gorman <mgorman@suse.de>
> ---
>  mm/huge_memory.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> index fc00c8cb5a82..194c0f019774 100644
> --- a/mm/huge_memory.c
> +++ b/mm/huge_memory.c
> @@ -1482,6 +1482,7 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
>
>         if (__pmd_trans_huge_lock(pmd, vma, &ptl) == 1) {
>                 pmd_t entry;
> +               ret = 1;
>
>                 /*
>                  * Avoid trapping faults against the zero page. The read-only
> @@ -1490,11 +1491,10 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
>                  */
>                 if (prot_numa && is_huge_zero_pmd(*pmd)) {
>                         spin_unlock(ptl);
> -                       return 0;
> +                       return ret;
>                 }
>
>                 if (!prot_numa || !pmd_protnone(*pmd)) {
> -                       ret = 1;
>                         entry = pmdp_get_and_clear_notify(mm, addr, pmd);
>                         entry = pmd_modify(entry, newprot);
>                         ret = HPAGE_PMD_NR;
> --
> 2.1.2
>

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

WARNING: multiple messages have this Message-ID (diff)
From: Linus Torvalds <torvalds@linux-foundation.org>
To: Mel Gorman <mgorman@suse.de>
Cc: Dave Chinner <david@fromorbit.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Ingo Molnar <mingo@kernel.org>,
	Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>,
	xfs@oss.sgi.com, ppc-dev <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH 1/4] mm: thp: Return the correct value for change_huge_pmd
Date: Sat, 7 Mar 2015 12:13:27 -0800	[thread overview]
Message-ID: <CA+55aFwGLOfmBMHsFzuqKbJqR43+SVydv5zxh-KWMPD=fQG1UQ@mail.gmail.com> (raw)
In-Reply-To: <1425741651-29152-2-git-send-email-mgorman@suse.de>

Looks obviously correct. The old code was just very wrong.

Acked-by: Linus Torvalds <torvalds@linux-foundation.org>

                     Linus


On Sat, Mar 7, 2015 at 7:20 AM, Mel Gorman <mgorman@suse.de> wrote:
> The wrong value is being returned by change_huge_pmd since commit
> 10c1045f28e8 ("mm: numa: avoid unnecessary TLB flushes when setting
> NUMA hinting entries") which allows a fallthrough that tries to adjust
> non-existent PTEs. This patch corrects it.
>
> Signed-off-by: Mel Gorman <mgorman@suse.de>
> ---
>  mm/huge_memory.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> index fc00c8cb5a82..194c0f019774 100644
> --- a/mm/huge_memory.c
> +++ b/mm/huge_memory.c
> @@ -1482,6 +1482,7 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
>
>         if (__pmd_trans_huge_lock(pmd, vma, &ptl) == 1) {
>                 pmd_t entry;
> +               ret = 1;
>
>                 /*
>                  * Avoid trapping faults against the zero page. The read-only
> @@ -1490,11 +1491,10 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
>                  */
>                 if (prot_numa && is_huge_zero_pmd(*pmd)) {
>                         spin_unlock(ptl);
> -                       return 0;
> +                       return ret;
>                 }
>
>                 if (!prot_numa || !pmd_protnone(*pmd)) {
> -                       ret = 1;
>                         entry = pmdp_get_and_clear_notify(mm, addr, pmd);
>                         entry = pmd_modify(entry, newprot);
>                         ret = HPAGE_PMD_NR;
> --
> 2.1.2
>

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Linus Torvalds <torvalds@linux-foundation.org>
To: Mel Gorman <mgorman@suse.de>
Cc: Dave Chinner <david@fromorbit.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	xfs@oss.sgi.com, Linux-MM <linux-mm@kvack.org>,
	Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	ppc-dev <linuxppc-dev@lists.ozlabs.org>,
	Ingo Molnar <mingo@kernel.org>
Subject: Re: [PATCH 1/4] mm: thp: Return the correct value for change_huge_pmd
Date: Sat, 7 Mar 2015 12:13:27 -0800	[thread overview]
Message-ID: <CA+55aFwGLOfmBMHsFzuqKbJqR43+SVydv5zxh-KWMPD=fQG1UQ@mail.gmail.com> (raw)
In-Reply-To: <1425741651-29152-2-git-send-email-mgorman@suse.de>

Looks obviously correct. The old code was just very wrong.

Acked-by: Linus Torvalds <torvalds@linux-foundation.org>

                     Linus


On Sat, Mar 7, 2015 at 7:20 AM, Mel Gorman <mgorman@suse.de> wrote:
> The wrong value is being returned by change_huge_pmd since commit
> 10c1045f28e8 ("mm: numa: avoid unnecessary TLB flushes when setting
> NUMA hinting entries") which allows a fallthrough that tries to adjust
> non-existent PTEs. This patch corrects it.
>
> Signed-off-by: Mel Gorman <mgorman@suse.de>
> ---
>  mm/huge_memory.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/mm/huge_memory.c b/mm/huge_memory.c
> index fc00c8cb5a82..194c0f019774 100644
> --- a/mm/huge_memory.c
> +++ b/mm/huge_memory.c
> @@ -1482,6 +1482,7 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
>
>         if (__pmd_trans_huge_lock(pmd, vma, &ptl) == 1) {
>                 pmd_t entry;
> +               ret = 1;
>
>                 /*
>                  * Avoid trapping faults against the zero page. The read-only
> @@ -1490,11 +1491,10 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
>                  */
>                 if (prot_numa && is_huge_zero_pmd(*pmd)) {
>                         spin_unlock(ptl);
> -                       return 0;
> +                       return ret;
>                 }
>
>                 if (!prot_numa || !pmd_protnone(*pmd)) {
> -                       ret = 1;
>                         entry = pmdp_get_and_clear_notify(mm, addr, pmd);
>                         entry = pmd_modify(entry, newprot);
>                         ret = HPAGE_PMD_NR;
> --
> 2.1.2
>

  reply	other threads:[~2015-03-07 20:13 UTC|newest]

Thread overview: 195+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-07 15:20 [RFC PATCH 0/4] Automatic NUMA balancing and PROT_NONE handling followup v2r8 Mel Gorman
2015-03-07 15:20 ` Mel Gorman
2015-03-07 15:20 ` Mel Gorman
2015-03-07 15:20 ` Mel Gorman
2015-03-07 15:20 ` [PATCH 1/4] mm: thp: Return the correct value for change_huge_pmd Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 20:13   ` Linus Torvalds [this message]
2015-03-07 20:13     ` Linus Torvalds
2015-03-07 20:13     ` Linus Torvalds
2015-03-07 20:13     ` Linus Torvalds
2015-03-07 20:31   ` Linus Torvalds
2015-03-07 20:31     ` Linus Torvalds
2015-03-07 20:31     ` Linus Torvalds
2015-03-07 20:31     ` Linus Torvalds
2015-03-07 20:56     ` Mel Gorman
2015-03-07 20:56       ` Mel Gorman
2015-03-07 20:56       ` Mel Gorman
2015-03-07 20:56       ` Mel Gorman
2015-03-07 15:20 ` [PATCH 2/4] mm: numa: Remove migrate_ratelimited Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20 ` [PATCH 3/4] mm: numa: Mark huge PTEs young when clearing NUMA hinting faults Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 18:33   ` Linus Torvalds
2015-03-07 18:33     ` Linus Torvalds
2015-03-07 18:33     ` Linus Torvalds
2015-03-07 18:33     ` Linus Torvalds
2015-03-07 18:42     ` Linus Torvalds
2015-03-07 18:42       ` Linus Torvalds
2015-03-07 18:42       ` Linus Torvalds
2015-03-07 18:42       ` Linus Torvalds
2015-03-07 15:20 ` [PATCH 4/4] mm: numa: Slow PTE scan rate if migration failures occur Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 15:20   ` Mel Gorman
2015-03-07 16:36   ` Ingo Molnar
2015-03-07 16:36     ` Ingo Molnar
2015-03-07 16:36     ` Ingo Molnar
2015-03-07 16:36     ` Ingo Molnar
2015-03-07 17:37     ` Mel Gorman
2015-03-07 17:37       ` Mel Gorman
2015-03-07 17:37       ` Mel Gorman
2015-03-07 17:37       ` Mel Gorman
2015-03-08  9:54       ` Ingo Molnar
2015-03-08  9:54         ` Ingo Molnar
2015-03-08  9:54         ` Ingo Molnar
2015-03-08  9:54         ` Ingo Molnar
2015-03-07 19:12     ` Linus Torvalds
2015-03-07 19:12       ` Linus Torvalds
2015-03-07 19:12       ` Linus Torvalds
2015-03-07 19:12       ` Linus Torvalds
2015-03-08 10:02       ` Ingo Molnar
2015-03-08 10:02         ` Ingo Molnar
2015-03-08 10:02         ` Ingo Molnar
2015-03-08 10:02         ` Ingo Molnar
2015-03-08 18:35         ` Linus Torvalds
2015-03-08 18:35           ` Linus Torvalds
2015-03-08 18:35           ` Linus Torvalds
2015-03-08 18:35           ` Linus Torvalds
2015-03-08 18:46           ` Linus Torvalds
2015-03-08 18:46             ` Linus Torvalds
2015-03-08 18:46             ` Linus Torvalds
2015-03-08 18:46             ` Linus Torvalds
2015-03-09 11:29           ` Dave Chinner
2015-03-09 11:29             ` Dave Chinner
2015-03-09 11:29             ` Dave Chinner
2015-03-09 11:29             ` Dave Chinner
2015-03-09 16:52             ` Linus Torvalds
2015-03-09 16:52               ` Linus Torvalds
2015-03-09 16:52               ` Linus Torvalds
2015-03-09 16:52               ` Linus Torvalds
2015-03-09 19:19               ` Dave Chinner
2015-03-09 19:19                 ` Dave Chinner
2015-03-09 19:19                 ` Dave Chinner
2015-03-10 23:55                 ` Linus Torvalds
2015-03-10 23:55                   ` Linus Torvalds
2015-03-10 23:55                   ` Linus Torvalds
2015-03-10 23:55                   ` Linus Torvalds
2015-03-12 13:10                   ` Mel Gorman
2015-03-12 13:10                     ` Mel Gorman
2015-03-12 13:10                     ` Mel Gorman
2015-03-12 13:10                     ` Mel Gorman
2015-03-12 16:20                     ` Linus Torvalds
2015-03-12 16:20                       ` Linus Torvalds
2015-03-12 16:20                       ` Linus Torvalds
2015-03-12 16:20                       ` Linus Torvalds
2015-03-12 18:49                       ` Mel Gorman
2015-03-12 18:49                         ` Mel Gorman
2015-03-12 18:49                         ` Mel Gorman
2015-03-12 18:49                         ` Mel Gorman
2015-03-17  7:06                         ` Dave Chinner
2015-03-17  7:06                           ` Dave Chinner
2015-03-17  7:06                           ` Dave Chinner
2015-03-17  7:06                           ` Dave Chinner
2015-03-17 16:53                           ` Linus Torvalds
2015-03-17 16:53                             ` Linus Torvalds
2015-03-17 16:53                             ` Linus Torvalds
2015-03-17 16:53                             ` Linus Torvalds
2015-03-17 20:51                             ` Dave Chinner
2015-03-17 20:51                               ` Dave Chinner
2015-03-17 20:51                               ` Dave Chinner
2015-03-17 20:51                               ` Dave Chinner
2015-03-17 21:30                               ` Linus Torvalds
2015-03-17 21:30                                 ` Linus Torvalds
2015-03-17 21:30                                 ` Linus Torvalds
2015-03-17 21:30                                 ` Linus Torvalds
2015-03-17 22:08                                 ` Dave Chinner
2015-03-17 22:08                                   ` Dave Chinner
2015-03-17 22:08                                   ` Dave Chinner
2015-03-17 22:08                                   ` Dave Chinner
2015-03-18 16:08                                   ` Linus Torvalds
2015-03-18 16:08                                     ` Linus Torvalds
2015-03-18 16:08                                     ` Linus Torvalds
2015-03-18 16:08                                     ` Linus Torvalds
2015-03-18 17:31                                     ` Linus Torvalds
2015-03-18 17:31                                       ` Linus Torvalds
2015-03-18 17:31                                       ` Linus Torvalds
2015-03-18 17:31                                       ` Linus Torvalds
2015-03-18 22:23                                       ` Dave Chinner
2015-03-18 22:23                                         ` Dave Chinner
2015-03-18 22:23                                         ` Dave Chinner
2015-03-18 22:23                                         ` Dave Chinner
2015-03-19 14:10                                       ` Mel Gorman
2015-03-19 14:10                                         ` Mel Gorman
2015-03-19 14:10                                         ` Mel Gorman
2015-03-19 14:10                                         ` Mel Gorman
2015-03-19 18:09                                         ` Linus Torvalds
2015-03-19 18:09                                           ` Linus Torvalds
2015-03-19 18:09                                           ` Linus Torvalds
2015-03-19 18:09                                           ` Linus Torvalds
2015-03-19 21:41                                       ` Linus Torvalds
2015-03-19 21:41                                         ` Linus Torvalds
2015-03-19 21:41                                         ` Linus Torvalds
2015-03-19 21:41                                         ` Linus Torvalds
2015-03-19 22:41                                         ` Dave Chinner
2015-03-19 22:41                                           ` Dave Chinner
2015-03-19 22:41                                           ` Dave Chinner
2015-03-19 22:41                                           ` Dave Chinner
2015-03-19 23:05                                           ` Linus Torvalds
2015-03-19 23:05                                             ` Linus Torvalds
2015-03-19 23:05                                             ` Linus Torvalds
2015-03-19 23:05                                             ` Linus Torvalds
2015-03-19 23:23                                             ` Dave Chinner
2015-03-19 23:23                                               ` Dave Chinner
2015-03-19 23:23                                               ` Dave Chinner
2015-03-19 23:23                                               ` Dave Chinner
2015-03-20  0:23                                             ` Dave Chinner
2015-03-20  0:23                                               ` Dave Chinner
2015-03-20  0:23                                               ` Dave Chinner
2015-03-20  0:23                                               ` Dave Chinner
2015-03-20  1:29                                               ` Linus Torvalds
2015-03-20  1:29                                                 ` Linus Torvalds
2015-03-20  1:29                                                 ` Linus Torvalds
2015-03-20  1:29                                                 ` Linus Torvalds
2015-03-20  4:13                                                 ` Dave Chinner
2015-03-20  4:13                                                   ` Dave Chinner
2015-03-20  4:13                                                   ` Dave Chinner
2015-03-20  4:13                                                   ` Dave Chinner
2015-03-20 17:02                                                   ` Linus Torvalds
2015-03-20 17:02                                                     ` Linus Torvalds
2015-03-20 17:02                                                     ` Linus Torvalds
2015-03-20 17:02                                                     ` Linus Torvalds
2015-03-23 12:01                                                     ` Mel Gorman
2015-03-23 12:01                                                       ` Mel Gorman
2015-03-23 12:01                                                       ` Mel Gorman
2015-03-23 12:01                                                       ` Mel Gorman
2015-03-20 10:12                                                 ` Mel Gorman
2015-03-20 10:12                                                   ` Mel Gorman
2015-03-20 10:12                                                   ` Mel Gorman
2015-03-20 10:12                                                   ` Mel Gorman
2015-03-20  9:56                                             ` Mel Gorman
2015-03-20  9:56                                               ` Mel Gorman
2015-03-20  9:56                                               ` Mel Gorman
2015-03-20  9:56                                               ` Mel Gorman
2015-03-08 20:40         ` Mel Gorman
2015-03-08 20:40           ` Mel Gorman
2015-03-08 20:40           ` Mel Gorman
2015-03-08 20:40           ` Mel Gorman
2015-03-09 21:02           ` Mel Gorman
2015-03-09 21:02             ` Mel Gorman
2015-03-09 21:02             ` Mel Gorman
2015-03-09 21:02             ` Mel Gorman
2015-03-10 13:08             ` Mel Gorman
2015-03-10 13:08               ` Mel Gorman
2015-03-10 13:08               ` Mel Gorman
2015-03-10 13:08               ` Mel Gorman
2015-03-08  9:41   ` Ingo Molnar
2015-03-08  9:41     ` Ingo Molnar
2015-03-08  9:41     ` Ingo Molnar
2015-03-08  9:41     ` Ingo Molnar

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='CA+55aFwGLOfmBMHsFzuqKbJqR43+SVydv5zxh-KWMPD=fQG1UQ@mail.gmail.com' \
    --to=torvalds@linux-foundation.org \
    --cc=akpm@linux-foundation.org \
    --cc=aneesh.kumar@linux.vnet.ibm.com \
    --cc=david@fromorbit.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mgorman@suse.de \
    --cc=mingo@kernel.org \
    --cc=xfs@oss.sgi.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.