From: Jiang Liu <liuj97@gmail.com> To: Andrew Morton <akpm@linux-foundation.org>, David Rientjes <rientjes@google.com> Cc: Jiang Liu <jiang.liu@huawei.com>, Wen Congyang <wency@cn.fujitsu.com>, Mel Gorman <mgorman@suse.de>, Minchan Kim <minchan@kernel.org>, KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>, Michal Hocko <mhocko@suse.cz>, James Bottomley <James.Bottomley@HansenPartnership.com>, Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>, David Howells <dhowells@redhat.com>, Mark Salter <msalter@redhat.com>, Jianguo Wu <wujianguo@huawei.com>, linux-mm@kvack.org, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, Hirokazu Takata <takata@linux-m32r.org>, linux-m32r@ml.linux-m32r.org, linux-m32r-ja@ml.linux-m32r.org Subject: [PATCH v3, part4 21/39] mm/m32r: prepare for removing num_physpages and simplify mem_init() Date: Tue, 26 Mar 2013 23:54:40 +0800 [thread overview] Message-ID: <1364313298-17336-22-git-send-email-jiang.liu@huawei.com> (raw) In-Reply-To: <1364313298-17336-1-git-send-email-jiang.liu@huawei.com> Prepare for removing num_physpages and simplify mem_init(). Signed-off-by: Jiang Liu <jiang.liu@huawei.com> Cc: Hirokazu Takata <takata@linux-m32r.org> Cc: linux-m32r@ml.linux-m32r.org Cc: linux-m32r-ja@ml.linux-m32r.org Cc: linux-kernel@vger.kernel.org --- Hi all, Sorry for my mistake that my previous patch series has been screwed up. So I regenerate a third version and also set up a git tree at: git://github.com/jiangliu/linux.git mem_init Any help to review and test are welcomed! Regards! Gerry --- arch/m32r/mm/discontig.c | 6 +----- arch/m32r/mm/init.c | 49 +++++----------------------------------------- 2 files changed, 6 insertions(+), 49 deletions(-) diff --git a/arch/m32r/mm/discontig.c b/arch/m32r/mm/discontig.c index 2c468e8..2719630 100644 --- a/arch/m32r/mm/discontig.c +++ b/arch/m32r/mm/discontig.c @@ -129,11 +129,10 @@ unsigned long __init setup_memory(void) #define START_PFN(nid) (NODE_DATA(nid)->bdata->node_min_pfn) #define MAX_LOW_PFN(nid) (NODE_DATA(nid)->bdata->node_low_pfn) -unsigned long __init zone_sizes_init(void) +void __init zone_sizes_init(void) { unsigned long zones_size[MAX_NR_ZONES], zholes_size[MAX_NR_ZONES]; unsigned long low, start_pfn; - unsigned long holes = 0; int nid, i; mem_prof_t *mp; @@ -147,7 +146,6 @@ unsigned long __init zone_sizes_init(void) low = MAX_LOW_PFN(nid); zones_size[ZONE_DMA] = low - start_pfn; zholes_size[ZONE_DMA] = mp->holes; - holes += zholes_size[ZONE_DMA]; node_set_state(nid, N_NORMAL_MEMORY); free_area_init_node(nid, zones_size, start_pfn, zholes_size); @@ -161,6 +159,4 @@ unsigned long __init zone_sizes_init(void) NODE_DATA(1)->node_zones->watermark[WMARK_MIN] = 0; NODE_DATA(1)->node_zones->watermark[WMARK_LOW] = 0; NODE_DATA(1)->node_zones->watermark[WMARK_HIGH] = 0; - - return holes; } diff --git a/arch/m32r/mm/init.c b/arch/m32r/mm/init.c index c421c31..9c94839 100644 --- a/arch/m32r/mm/init.c +++ b/arch/m32r/mm/init.c @@ -40,7 +40,6 @@ unsigned long mmu_context_cache_dat; #else unsigned long mmu_context_cache_dat[NR_CPUS]; #endif -static unsigned long hole_pages; /* * function prototype @@ -57,7 +56,7 @@ void free_initrd_mem(unsigned long, unsigned long); #define MAX_LOW_PFN(nid) (NODE_DATA(nid)->bdata->node_low_pfn) #ifndef CONFIG_DISCONTIGMEM -unsigned long __init zone_sizes_init(void) +void __init zone_sizes_init(void) { unsigned long zones_size[MAX_NR_ZONES] = {0, }; unsigned long max_dma; @@ -83,11 +82,9 @@ unsigned long __init zone_sizes_init(void) #endif /* CONFIG_MMU */ free_area_init_node(0, zones_size, start_pfn, 0); - - return 0; } #else /* CONFIG_DISCONTIGMEM */ -extern unsigned long zone_sizes_init(void); +extern void zone_sizes_init(void); #endif /* CONFIG_DISCONTIGMEM */ /*======================================================================* @@ -105,24 +102,7 @@ void __init paging_init(void) for (i = 0 ; i < USER_PTRS_PER_PGD * 2 ; i++) pgd_val(pg_dir[i]) = 0; #endif /* CONFIG_MMU */ - hole_pages = zone_sizes_init(); -} - -int __init reservedpages_count(void) -{ - int reservedpages, nid, i; - - reservedpages = 0; - for_each_online_node(nid) { - unsigned long flags; - pgdat_resize_lock(NODE_DATA(nid), &flags); - for (i = 0 ; i < MAX_LOW_PFN(nid) - START_PFN(nid) ; i++) - if (PageReserved(nid_page_nr(nid, i))) - reservedpages++; - pgdat_resize_unlock(NODE_DATA(nid), &flags); - } - - return reservedpages; + zone_sizes_init(); } /*======================================================================* @@ -131,20 +111,13 @@ int __init reservedpages_count(void) *======================================================================*/ void __init mem_init(void) { - int codesize, reservedpages, datasize, initsize; int nid; #ifndef CONFIG_MMU extern unsigned long memory_end; #endif - num_physpages = 0; - for_each_online_node(nid) - num_physpages += MAX_LOW_PFN(nid) - START_PFN(nid) + 1; - - num_physpages -= hole_pages; - #ifndef CONFIG_DISCONTIGMEM - max_mapnr = num_physpages; + max_mapnr = get_num_physpages(); #endif /* CONFIG_DISCONTIGMEM */ #ifdef CONFIG_MMU @@ -160,19 +133,7 @@ void __init mem_init(void) for_each_online_node(nid) free_all_bootmem_node(NODE_DATA(nid)); - reservedpages = reservedpages_count() - hole_pages; - codesize = (unsigned long) &_etext - (unsigned long)&_text; - datasize = (unsigned long) &_edata - (unsigned long)&_etext; - initsize = (unsigned long) &__init_end - (unsigned long)&__init_begin; - - printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, " - "%dk reserved, %dk data, %dk init)\n", - nr_free_pages() << (PAGE_SHIFT-10), - num_physpages << (PAGE_SHIFT-10), - codesize >> 10, - reservedpages << (PAGE_SHIFT-10), - datasize >> 10, - initsize >> 10); + mem_init_print_info(NULL); } /*======================================================================* -- 1.7.9.5
WARNING: multiple messages have this Message-ID (diff)
From: Jiang Liu <liuj97@gmail.com> To: Andrew Morton <akpm@linux-foundation.org>, David Rientjes <rientjes@google.com> Cc: Jiang Liu <jiang.liu@huawei.com>, Wen Congyang <wency@cn.fujitsu.com>, Mel Gorman <mgorman@suse.de>, Minchan Kim <minchan@kernel.org>, KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>, Michal Hocko <mhocko@suse.cz>, James Bottomley <James.Bottomley@HansenPartnership.com>, Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>, David Howells <dhowells@redhat.com>, Mark Salter <msalter@redhat.com>, Jianguo Wu <wujianguo@huawei.com>, linux-mm@kvack.org, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, Hirokazu Takata <takata@linux-m32r.org>, linux-m32r@ml.linux-m32r.org, linux-m32r-ja@ml.linux-m32r.org Subject: [PATCH v3, part4 21/39] mm/m32r: prepare for removing num_physpages and simplify mem_init() Date: Tue, 26 Mar 2013 23:54:40 +0800 [thread overview] Message-ID: <1364313298-17336-22-git-send-email-jiang.liu@huawei.com> (raw) In-Reply-To: <1364313298-17336-1-git-send-email-jiang.liu@huawei.com> Prepare for removing num_physpages and simplify mem_init(). Signed-off-by: Jiang Liu <jiang.liu@huawei.com> Cc: Hirokazu Takata <takata@linux-m32r.org> Cc: linux-m32r@ml.linux-m32r.org Cc: linux-m32r-ja@ml.linux-m32r.org Cc: linux-kernel@vger.kernel.org --- Hi all, Sorry for my mistake that my previous patch series has been screwed up. So I regenerate a third version and also set up a git tree at: git://github.com/jiangliu/linux.git mem_init Any help to review and test are welcomed! Regards! Gerry --- arch/m32r/mm/discontig.c | 6 +----- arch/m32r/mm/init.c | 49 +++++----------------------------------------- 2 files changed, 6 insertions(+), 49 deletions(-) diff --git a/arch/m32r/mm/discontig.c b/arch/m32r/mm/discontig.c index 2c468e8..2719630 100644 --- a/arch/m32r/mm/discontig.c +++ b/arch/m32r/mm/discontig.c @@ -129,11 +129,10 @@ unsigned long __init setup_memory(void) #define START_PFN(nid) (NODE_DATA(nid)->bdata->node_min_pfn) #define MAX_LOW_PFN(nid) (NODE_DATA(nid)->bdata->node_low_pfn) -unsigned long __init zone_sizes_init(void) +void __init zone_sizes_init(void) { unsigned long zones_size[MAX_NR_ZONES], zholes_size[MAX_NR_ZONES]; unsigned long low, start_pfn; - unsigned long holes = 0; int nid, i; mem_prof_t *mp; @@ -147,7 +146,6 @@ unsigned long __init zone_sizes_init(void) low = MAX_LOW_PFN(nid); zones_size[ZONE_DMA] = low - start_pfn; zholes_size[ZONE_DMA] = mp->holes; - holes += zholes_size[ZONE_DMA]; node_set_state(nid, N_NORMAL_MEMORY); free_area_init_node(nid, zones_size, start_pfn, zholes_size); @@ -161,6 +159,4 @@ unsigned long __init zone_sizes_init(void) NODE_DATA(1)->node_zones->watermark[WMARK_MIN] = 0; NODE_DATA(1)->node_zones->watermark[WMARK_LOW] = 0; NODE_DATA(1)->node_zones->watermark[WMARK_HIGH] = 0; - - return holes; } diff --git a/arch/m32r/mm/init.c b/arch/m32r/mm/init.c index c421c31..9c94839 100644 --- a/arch/m32r/mm/init.c +++ b/arch/m32r/mm/init.c @@ -40,7 +40,6 @@ unsigned long mmu_context_cache_dat; #else unsigned long mmu_context_cache_dat[NR_CPUS]; #endif -static unsigned long hole_pages; /* * function prototype @@ -57,7 +56,7 @@ void free_initrd_mem(unsigned long, unsigned long); #define MAX_LOW_PFN(nid) (NODE_DATA(nid)->bdata->node_low_pfn) #ifndef CONFIG_DISCONTIGMEM -unsigned long __init zone_sizes_init(void) +void __init zone_sizes_init(void) { unsigned long zones_size[MAX_NR_ZONES] = {0, }; unsigned long max_dma; @@ -83,11 +82,9 @@ unsigned long __init zone_sizes_init(void) #endif /* CONFIG_MMU */ free_area_init_node(0, zones_size, start_pfn, 0); - - return 0; } #else /* CONFIG_DISCONTIGMEM */ -extern unsigned long zone_sizes_init(void); +extern void zone_sizes_init(void); #endif /* CONFIG_DISCONTIGMEM */ /*======================================================================* @@ -105,24 +102,7 @@ void __init paging_init(void) for (i = 0 ; i < USER_PTRS_PER_PGD * 2 ; i++) pgd_val(pg_dir[i]) = 0; #endif /* CONFIG_MMU */ - hole_pages = zone_sizes_init(); -} - -int __init reservedpages_count(void) -{ - int reservedpages, nid, i; - - reservedpages = 0; - for_each_online_node(nid) { - unsigned long flags; - pgdat_resize_lock(NODE_DATA(nid), &flags); - for (i = 0 ; i < MAX_LOW_PFN(nid) - START_PFN(nid) ; i++) - if (PageReserved(nid_page_nr(nid, i))) - reservedpages++; - pgdat_resize_unlock(NODE_DATA(nid), &flags); - } - - return reservedpages; + zone_sizes_init(); } /*======================================================================* @@ -131,20 +111,13 @@ int __init reservedpages_count(void) *======================================================================*/ void __init mem_init(void) { - int codesize, reservedpages, datasize, initsize; int nid; #ifndef CONFIG_MMU extern unsigned long memory_end; #endif - num_physpages = 0; - for_each_online_node(nid) - num_physpages += MAX_LOW_PFN(nid) - START_PFN(nid) + 1; - - num_physpages -= hole_pages; - #ifndef CONFIG_DISCONTIGMEM - max_mapnr = num_physpages; + max_mapnr = get_num_physpages(); #endif /* CONFIG_DISCONTIGMEM */ #ifdef CONFIG_MMU @@ -160,19 +133,7 @@ void __init mem_init(void) for_each_online_node(nid) free_all_bootmem_node(NODE_DATA(nid)); - reservedpages = reservedpages_count() - hole_pages; - codesize = (unsigned long) &_etext - (unsigned long)&_text; - datasize = (unsigned long) &_edata - (unsigned long)&_etext; - initsize = (unsigned long) &__init_end - (unsigned long)&__init_begin; - - printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, " - "%dk reserved, %dk data, %dk init)\n", - nr_free_pages() << (PAGE_SHIFT-10), - num_physpages << (PAGE_SHIFT-10), - codesize >> 10, - reservedpages << (PAGE_SHIFT-10), - datasize >> 10, - initsize >> 10); + mem_init_print_info(NULL); } /*======================================================================* -- 1.7.9.5 -- 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>
next prev parent reply other threads:[~2013-03-26 16:00 UTC|newest] Thread overview: 111+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-03-26 15:54 [PATCH v3, part4 00/39] Simplify mem_init() implementations and kill num_physpages Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 01/39] vmlinux.lds: add comments for global variables and clean up useless declarations Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 02/39] avr32: normalize global variables exported by vmlinux.lds Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 03/39] c6x: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 04/39] h8300: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 05/39] score: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 06/39] tile: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 07/39] UML: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 08/39] mm: introduce helper function mem_init_print_info() to simplify mem_init() Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 09/39] mm: use totalram_pages instead of num_physpages at runtime Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 10/39] mm/alpha: prepare for removing num_physpages and simplify mem_init() Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 11/39] mm/ARM: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 12/39] mm/ARM64: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 13/39] mm/AVR32: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 14/39] mm/blackfin: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 15/39] mm/c6x: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 16/39] mm/cris: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 17/39] mm/frv: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 18/39] mm/h8300: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 19/39] mm/hexagon: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 20/39] mm/IA64: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` Jiang Liu [this message] 2013-03-26 15:54 ` [PATCH v3, part4 21/39] mm/m32r: " Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 22/39] mm/m68k: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 23/39] mm/microblaze: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 24/39] mm/MIPS: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 25/39] mm/mn10300: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 26/39] mm/openrisc: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-04-02 5:31 ` Jonas Bonn 2013-04-02 5:31 ` Jonas Bonn 2013-04-02 5:31 ` Jonas Bonn 2013-04-02 5:31 ` Jonas Bonn 2013-04-02 14:38 ` Jiang Liu 2013-04-02 14:38 ` Jiang Liu 2013-04-02 14:38 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 27/39] mm/PARISC: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 28/39] mm/ppc: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 29/39] mm/s390: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 30/39] mm/score: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 31/39] mm/SH: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 32/39] mm/SPARC: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-29 16:17 ` Sam Ravnborg 2013-03-29 16:17 ` Sam Ravnborg 2013-03-29 16:17 ` Sam Ravnborg 2013-03-26 15:54 ` [PATCH v3, part4 33/39] mm/tile: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 34/39] mm/um: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 35/39] mm/unicore32: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 36/39] mm/x86: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 37/39] mm/xtensa: " Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 38/39] mm/hotplug: prepare for removing num_physpages Jiang Liu 2013-03-26 15:54 ` Jiang Liu 2013-03-29 11:18 ` Sam Ravnborg 2013-03-29 11:18 ` Sam Ravnborg 2013-03-29 15:36 ` Jiang Liu 2013-03-29 15:36 ` Jiang Liu 2013-03-29 16:17 ` Sam Ravnborg 2013-03-29 16:17 ` Sam Ravnborg 2013-03-29 16:30 ` Jiang Liu 2013-03-29 16:30 ` Jiang Liu 2013-03-29 16:40 ` Sam Ravnborg 2013-03-29 16:40 ` Sam Ravnborg 2013-03-29 16:42 ` Jiang Liu 2013-03-29 16:42 ` Jiang Liu 2013-03-26 15:54 ` [PATCH v3, part4 39/39] mm: kill global variable num_physpages Jiang Liu 2013-03-26 15:54 ` Jiang Liu
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=1364313298-17336-22-git-send-email-jiang.liu@huawei.com \ --to=liuj97@gmail.com \ --cc=James.Bottomley@HansenPartnership.com \ --cc=akpm@linux-foundation.org \ --cc=dhowells@redhat.com \ --cc=jiang.liu@huawei.com \ --cc=kamezawa.hiroyu@jp.fujitsu.com \ --cc=linux-arch@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-m32r-ja@ml.linux-m32r.org \ --cc=linux-m32r@ml.linux-m32r.org \ --cc=linux-mm@kvack.org \ --cc=mgorman@suse.de \ --cc=mhocko@suse.cz \ --cc=minchan@kernel.org \ --cc=msalter@redhat.com \ --cc=rientjes@google.com \ --cc=sergei.shtylyov@cogentembedded.com \ --cc=takata@linux-m32r.org \ --cc=wency@cn.fujitsu.com \ --cc=wujianguo@huawei.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: 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.