From cd78a7d11690f3c2e5b6430a41d0e7661ae7029e Mon Sep 17 00:00:00 2001 From: Ricardo M. Correia Date: Mon, 24 May 2010 11:13:28 +0000 Subject: [PATCH] (local) Make Lustre use debug_vmalloc APIs. --- libcfs/include/libcfs/linux/linux-mem.h | 2 +- libcfs/libcfs/linux/linux-mem.c | 13 +++++++------ libcfs/libcfs/lwt.c | 6 +++--- lustre/dmu-osd/osd_handler.c | 6 +++--- lustre/obdclass/lprocfs_status.c | 5 +++-- 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/libcfs/include/libcfs/linux/linux-mem.h b/libcfs/include/libcfs/linux/linux-mem.h index 1769927..f6111f4 100644 --- a/libcfs/include/libcfs/linux/linux-mem.h +++ b/libcfs/include/libcfs/linux/linux-mem.h @@ -113,7 +113,7 @@ extern void __cfs_free_pages(cfs_page_t *page, unsigned int order); #define cfs_alloc_page(flags) cfs_alloc_pages(flags, 0) #define __cfs_free_page(page) __cfs_free_pages(page, 0) -#define cfs_free_page(p) __free_pages(p, 0) +#define cfs_free_page(p) __debug_free_pages(p, 0) #define libcfs_memory_pressure_get() (current->flags & PF_MEMALLOC) #define libcfs_memory_pressure_set() do { current->flags |= PF_MEMALLOC; } while (0) diff --git a/libcfs/libcfs/linux/linux-mem.c b/libcfs/libcfs/linux/linux-mem.c index b5a6129..5bd5bcb 100644 --- a/libcfs/libcfs/linux/linux-mem.c +++ b/libcfs/libcfs/linux/linux-mem.c @@ -37,6 +37,7 @@ #include #include +#include #include #include #include @@ -76,7 +77,7 @@ cfs_alloc(size_t nr_bytes, u_int32_t flags) { void *ptr = NULL; - ptr = kmalloc(nr_bytes, cfs_alloc_flags_to_gfp(flags)); + ptr = debug_vmalloc(nr_bytes, cfs_alloc_flags_to_gfp(flags)); if (ptr != NULL && (flags & CFS_ALLOC_ZERO)) memset(ptr, 0, nr_bytes); return ptr; @@ -85,19 +86,19 @@ cfs_alloc(size_t nr_bytes, u_int32_t flags) void cfs_free(void *addr) { - kfree(addr); + debug_vfree(addr); } void * cfs_alloc_large(size_t nr_bytes) { - return vmalloc(nr_bytes); + return debug_vmalloc(nr_bytes, GFP_KERNEL); } void cfs_free_large(void *addr) { - vfree(addr); + debug_vfree(addr); } cfs_page_t *cfs_alloc_pages(unsigned int flags, unsigned int order) @@ -106,12 +107,12 @@ cfs_page_t *cfs_alloc_pages(unsigned int flags, unsigned int order) * XXX nikita: do NOT call portals_debug_msg() (CDEBUG/ENTRY/EXIT) * from here: this will lead to infinite recursion. */ - return alloc_pages(cfs_alloc_flags_to_gfp(flags), order); + return debug_alloc_pages(cfs_alloc_flags_to_gfp(flags), order); } void __cfs_free_pages(cfs_page_t *page, unsigned int order) { - __free_pages(page, order); + __debug_free_pages(page, order); } cfs_mem_cache_t * diff --git a/libcfs/libcfs/lwt.c b/libcfs/libcfs/lwt.c index 3bc1118..0350441 100644 --- a/libcfs/libcfs/lwt.c +++ b/libcfs/libcfs/lwt.c @@ -197,7 +197,7 @@ lwt_init () for (i = 0; i < cfs_num_online_cpus(); i++) for (j = 0; j < lwt_pages_per_cpu; j++) { - struct page *page = alloc_page (GFP_KERNEL); + struct page *page = debug_alloc_page (GFP_KERNEL); lwt_page_t *lwtp; if (page == NULL) { @@ -209,7 +209,7 @@ lwt_init () LIBCFS_ALLOC(lwtp, sizeof (*lwtp)); if (lwtp == NULL) { CERROR ("Can't allocate lwtp\n"); - __free_page(page); + __debug_free_page(page); lwt_fini (); return (-ENOMEM); } @@ -256,7 +256,7 @@ lwt_fini () cfs_list_del (&lwtp->lwtp_list); } - __free_page (lwtp->lwtp_page); + __debug_free_page (lwtp->lwtp_page); LIBCFS_FREE (lwtp, sizeof (*lwtp)); } } diff --git a/lustre/dmu-osd/osd_handler.c b/lustre/dmu-osd/osd_handler.c index 86028bb..87eb00f 100644 --- a/lustre/dmu-osd/osd_handler.c +++ b/lustre/dmu-osd/osd_handler.c @@ -2421,7 +2421,7 @@ static int osd_get_bufs(const struct lu_env *env, struct dt_object *dt, } for (i = 0, lb = _lb; i< npages; i++, lb++) { - lb->page = alloc_page(GFP_NOFS | __GFP_HIGHMEM); + lb->page = debug_alloc_page(GFP_NOFS | __GFP_HIGHMEM); if (lb->page == NULL) goto out_err; lu_object_get(&dt->do_lu); @@ -2448,7 +2448,7 @@ out_err: while (--i >= 0) { LASSERT(lb->page); lu_object_put(env, &dt->do_lu); - __free_page(lb->page); + __debug_free_page(lb->page); lb->page = NULL; } return -ENOMEM; @@ -2468,7 +2468,7 @@ static int osd_put_bufs(const struct lu_env *env, struct dt_object *dt, if (lb->page == NULL) continue; lu_object_put(env, &dt->do_lu); - __free_page(lb->page); + __debug_free_page(lb->page); lb->page = NULL; } diff --git a/lustre/obdclass/lprocfs_status.c b/lustre/obdclass/lprocfs_status.c index da3410f..66a0ea6 100644 --- a/lustre/obdclass/lprocfs_status.c +++ b/lustre/obdclass/lprocfs_status.c @@ -52,6 +52,7 @@ #include #include #include +#include #if defined(LPROCFS) @@ -181,7 +182,7 @@ static ssize_t lprocfs_fops_read(struct file *f, char __user *buf, if (*ppos >= CFS_PAGE_SIZE) return 0; - page = (char *)__get_free_page(GFP_KERNEL); + page = (char *)__debug_get_free_page(GFP_KERNEL); if (page == NULL) return -ENOMEM; @@ -218,7 +219,7 @@ static ssize_t lprocfs_fops_read(struct file *f, char __user *buf, *ppos += count; out: - free_page((unsigned long)page); + debug_free_page((unsigned long)page); return rc; } -- 1.6.2.2