* [RESEND take 2][PATCH 0/2] Add /proc/mempool to display mempools
@ 2008-11-30 0:04 Remi Colinet
2008-11-30 0:10 ` [RESEND take 2][PATCH 1/2] Implement /proc/mempool file " Remi Colinet
2008-11-30 0:13 ` [RESEND take 2][PATCH 2/2] Update mempool function calls Remi Colinet
0 siblings, 2 replies; 3+ messages in thread
From: Remi Colinet @ 2008-11-30 0:04 UTC (permalink / raw)
To: Kernel, Remi Colinet
This patch add a new /proc/mempool file to display mempools.
Patch againt 2.6.28-rc6.
Signed-off-by: Remi Colinet <remi.colinet@gmail.com>
---
Add /proc/mempool to display mempools.
Resend #1 : cosmetic cleaning.
Resend #2 : remove config option for /proc/mempool file. Add a missing
file (fs/proc/mempool.c). Correct mempool_XXX function calls by drivers
(s390, ibmvfs, qla4xxx). Cosmetic stuff found with
scripts/checkpatch.pl.
block/blk-core.c | 3 -
drivers/block/pktcdvd.c | 4 -
drivers/block/virtio_blk.c | 3 -
drivers/md/dm-crypt.c | 5 +-
drivers/md/dm-io.c | 3 -
drivers/md/dm-raid1.c | 2
drivers/md/dm-region-hash.c | 2
drivers/md/multipath.c | 2
drivers/md/raid1.c | 7 +-
drivers/md/raid10.c | 5 +-
drivers/s390/scsi/zfcp_aux.c | 2
drivers/scsi/ibmvscsi/ibmvfc.c | 2
drivers/scsi/lpfc/lpfc_mem.c | 5 +-
drivers/scsi/qla4xxx/ql4_os.c | 2
fs/bio.c | 2
fs/proc/Makefile | 1
fs/proc/mempool.c | 99 +++++++++++++++++++++++++++++++++
include/linux/mempool.h | 40 ++++++++++++----
mm/bounce.c | 4 -
mm/mempool.c | 43 ++++++++++++++++-
20 files changed, 200 insertions(+), 36 deletions(-)
^ permalink raw reply [flat|nested] 3+ messages in thread
* [RESEND take 2][PATCH 1/2] Implement /proc/mempool file to display mempools.
2008-11-30 0:04 [RESEND take 2][PATCH 0/2] Add /proc/mempool to display mempools Remi Colinet
@ 2008-11-30 0:10 ` Remi Colinet
2008-11-30 0:13 ` [RESEND take 2][PATCH 2/2] Update mempool function calls Remi Colinet
1 sibling, 0 replies; 3+ messages in thread
From: Remi Colinet @ 2008-11-30 0:10 UTC (permalink / raw)
To: Kernel
Implement /proc/mempool file to display mempools.
Signed-off-by: Remi Colinet <remi.colinet@gmail.com>
---
fs/proc/Makefile | 1
fs/proc/mempool.c | 99 ++++++++++++++++++++++++++++++++++++++++
include/linux/mempool.h | 40 +++++++++++++++----
mm/mempool.c | 43 +++++++++++++++++++-
4 files changed, 171 insertions(+), 12 deletions(-)
diff -uNrp linux/fs/proc/Makefile linux-mempool/fs/proc/Makefile
--- linux/fs/proc/Makefile 2008-11-29 23:42:26.000000000 +0100
+++ linux-mempool/fs/proc/Makefile 2008-11-29 22:52:40.000000000 +0100
@@ -15,6 +15,7 @@ proc-y += devices.o
proc-y += interrupts.o
proc-y += loadavg.o
proc-y += meminfo.o
+proc-y += mempool.o
proc-y += stat.o
proc-y += uptime.o
proc-y += version.o
diff -uNrp linux/fs/proc/mempool.c linux-mempool/fs/proc/mempool.c
--- linux/fs/proc/mempool.c 1970-01-01 01:00:00.000000000 +0100
+++ linux-mempool/fs/proc/mempool.c 2008-11-30 00:37:11.000000000 +0100
@@ -0,0 +1,99 @@
+/*
+ * mempool.c: Mempool tracking with proc filesystem.
+ *
+ * Written by Remi Colinet (remi.colinet@gmail.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ **/
+#include <linux/fs.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/mm.h>
+#include <linux/mman.h>
+#include <linux/mmzone.h>
+#include <linux/proc_fs.h>
+#include <linux/seq_file.h>
+#include <linux/mempool.h>
+#include <asm/atomic.h>
+#include <asm/page.h>
+#include <asm/pgtable.h>
+
+struct proc_dir_entry *mempool_entry;
+
+static char *mempool_type_name[MEMPOOL_NR_TYPES] = {
+ "slab",
+ "kmalloc",
+ "kzalloc",
+ "page",
+ "private"
+};
+
+static void *mempool_start(struct seq_file *m, loff_t *pos)
+{
+ read_lock(&mempool_lock);
+ if (*pos != 0)
+ return NULL;
+
+ if (list_empty(&mempool_list))
+ return NULL;
+
+ seq_printf(m, "name type size min curr\n");
+ return list_entry(mempool_list.next, mempool_t, list);
+}
+
+static void *mempool_next(struct seq_file *m, void *arg, loff_t *pos)
+{
+ mempool_t *mempool = (mempool_t *)arg;
+
+ (*pos)++;
+ if (mempool->list.next == &mempool_list)
+ return NULL;
+
+ return list_entry(mempool->list.next, mempool_t, list);
+}
+
+static void mempool_stop(struct seq_file *m, void *arg)
+{
+ read_unlock(&mempool_lock);
+}
+
+static int mempool_show(struct seq_file *m, void *arg)
+{
+ mempool_t *mempool = (mempool_t *)arg;
+
+ BUG_ON(mempool == NULL);
+
+ seq_printf(m, "%-15s %-8s %5d %4d %d\n", mempool->name,
+ mempool_type_name[mempool->type], mempool->size,
+ mempool->min_nr, mempool->curr_nr);
+ return 0;
+}
+
+static struct seq_operations mempool_seq_ops = {
+ .start = mempool_start,
+ .next = mempool_next,
+ .stop = mempool_stop,
+ .show = mempool_show,
+};
+
+static int mempool_open(struct inode *inode, struct file *filp)
+{
+ return seq_open(filp, &mempool_seq_ops);
+}
+
+static const struct file_operations proc_mempool_file_operations = {
+ .open = mempool_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = seq_release,
+};
+
+static int __init proc_mempool_init(void)
+{
+ proc_create("mempool", 0, NULL, &proc_mempool_file_operations);
+ return 0;
+}
+module_init(proc_mempool_init);
diff -uNrp linux/include/linux/mempool.h linux-mempool/include/linux/mempool.h
--- linux/include/linux/mempool.h 2008-11-29 23:42:26.000000000 +0100
+++ linux-mempool/include/linux/mempool.h 2008-11-29 23:23:40.000000000 +0100
@@ -18,15 +18,33 @@ typedef struct mempool_s {
void **elements;
void *pool_data;
+ struct list_head list;
+ char *name;
+ unsigned int size;
+ unsigned short type;
mempool_alloc_t *alloc;
mempool_free_t *free;
wait_queue_head_t wait;
} mempool_t;
+extern struct list_head mempool_list;
+extern rwlock_t mempool_lock;
+
+enum MEMPOOL_TYPE {
+ MEMPOOL_SLAB,
+ MEMPOOL_KMALLOC,
+ MEMPOOL_KZALLOC,
+ MEMPOOL_PAGE,
+ MEMPOOL_PRIVATE, /* For private or default usage */
+ MEMPOOL_NR_TYPES
+};
+
extern mempool_t *mempool_create(int min_nr, mempool_alloc_t *alloc_fn,
- mempool_free_t *free_fn, void *pool_data);
+ mempool_free_t *free_fn, void *pool_data, const char *name,
+ unsigned short type);
extern mempool_t *mempool_create_node(int min_nr, mempool_alloc_t *alloc_fn,
- mempool_free_t *free_fn, void *pool_data, int nid);
+ mempool_free_t *free_fn, void *pool_data, int nid, const char *name,
+ unsigned short type);
extern int mempool_resize(mempool_t *pool, int new_min_nr, gfp_t gfp_mask);
extern void mempool_destroy(mempool_t *pool);
@@ -42,8 +60,9 @@ void mempool_free_slab(void *element, vo
static inline mempool_t *
mempool_create_slab_pool(int min_nr, struct kmem_cache *kc)
{
+ const char *name = kmem_cache_name(kc);
return mempool_create(min_nr, mempool_alloc_slab, mempool_free_slab,
- (void *) kc);
+ (void *) kc, name, MEMPOOL_SLAB);
}
/*
@@ -53,15 +72,17 @@ mempool_create_slab_pool(int min_nr, str
void *mempool_kmalloc(gfp_t gfp_mask, void *pool_data);
void *mempool_kzalloc(gfp_t gfp_mask, void *pool_data);
void mempool_kfree(void *element, void *pool_data);
-static inline mempool_t *mempool_create_kmalloc_pool(int min_nr, size_t size)
+static inline mempool_t *mempool_create_kmalloc_pool(int min_nr, size_t size,
+ const char *name)
{
return mempool_create(min_nr, mempool_kmalloc, mempool_kfree,
- (void *) size);
+ (void *) size, name, MEMPOOL_KMALLOC);
}
-static inline mempool_t *mempool_create_kzalloc_pool(int min_nr, size_t size)
+static inline mempool_t *mempool_create_kzalloc_pool(int min_nr, size_t size,
+ const char *name)
{
return mempool_create(min_nr, mempool_kzalloc, mempool_kfree,
- (void *) size);
+ (void *) size, name, MEMPOOL_KMALLOC);
}
/*
@@ -70,10 +91,11 @@ static inline mempool_t *mempool_create_
*/
void *mempool_alloc_pages(gfp_t gfp_mask, void *pool_data);
void mempool_free_pages(void *element, void *pool_data);
-static inline mempool_t *mempool_create_page_pool(int min_nr, int order)
+static inline mempool_t *mempool_create_page_pool(int min_nr, int order,
+ const char *name)
{
return mempool_create(min_nr, mempool_alloc_pages, mempool_free_pages,
- (void *)(long)order);
+ (void *)(long)order, name, MEMPOOL_PAGE);
}
#endif /* _LINUX_MEMPOOL_H */
diff -uNrp linux/mm/mempool.c linux-mempool/mm/mempool.c
--- linux/mm/mempool.c 2008-11-29 23:42:26.000000000 +0100
+++ linux-mempool/mm/mempool.c 2008-11-29 22:40:53.000000000 +0100
@@ -15,6 +15,9 @@
#include <linux/blkdev.h>
#include <linux/writeback.h>
+LIST_HEAD(mempool_list);
+DEFINE_RWLOCK(mempool_lock);
+
static void add_element(mempool_t *pool, void *element)
{
BUG_ON(pool->curr_nr >= pool->min_nr);
@@ -44,6 +47,8 @@ static void free_pool(mempool_t *pool)
* @alloc_fn: user-defined element-allocation function.
* @free_fn: user-defined element-freeing function.
* @pool_data: optional private data available to the user-defined functions.
+ * @name: name of the mempool
+ * @type: type of the mempool (PAGE, SLAB, KMALLOC, KZALLOC, PRIVATE)
*
* this function creates and allocates a guaranteed size, preallocated
* memory pool. The pool can be used from the mempool_alloc() and mempool_free()
@@ -52,14 +57,17 @@ static void free_pool(mempool_t *pool)
* from IRQ contexts.
*/
mempool_t *mempool_create(int min_nr, mempool_alloc_t *alloc_fn,
- mempool_free_t *free_fn, void *pool_data)
+ mempool_free_t *free_fn, void *pool_data, const char *name,
+ unsigned short type)
{
- return mempool_create_node(min_nr,alloc_fn,free_fn, pool_data,-1);
+ return mempool_create_node(min_nr, alloc_fn, free_fn, pool_data, -1,
+ name, type);
}
EXPORT_SYMBOL(mempool_create);
mempool_t *mempool_create_node(int min_nr, mempool_alloc_t *alloc_fn,
- mempool_free_t *free_fn, void *pool_data, int node_id)
+ mempool_free_t *free_fn, void *pool_data, int node_id, const char *name,
+ unsigned short type)
{
mempool_t *pool;
pool = kmalloc_node(sizeof(*pool), GFP_KERNEL | __GFP_ZERO, node_id);
@@ -91,6 +99,35 @@ mempool_t *mempool_create_node(int min_n
}
add_element(pool, element);
}
+
+ /*
+ * Setup name of the mempool
+ */
+ pool->name = kmalloc(strlen(name), GFP_KERNEL);
+ if (pool->name == NULL) {
+ /* should release other memory allocations */
+ return ERR_PTR(-ENOMEM);
+ }
+
+ strcpy(pool->name, name);
+ pool->type = type;
+ if (type == MEMPOOL_KZALLOC || type == MEMPOOL_KMALLOC)
+ pool->size = (int)(long) pool_data;
+ if (type == MEMPOOL_PAGE)
+ pool->size = (int)(PAGE_SIZE << (int)(long) pool_data);
+ if (type == MEMPOOL_SLAB) {
+ struct kmem_cache *kc = pool_data;
+ pool->size = kmem_cache_size(kc);
+ }
+ if (type == MEMPOOL_PRIVATE)
+ pool->size = 0;
+
+ /*
+ * Add the mempool to the global list
+ */
+ write_lock(&mempool_lock);
+ list_add_tail(&pool->list, &mempool_list);
+ write_unlock(&mempool_lock);
return pool;
}
EXPORT_SYMBOL(mempool_create_node);
^ permalink raw reply [flat|nested] 3+ messages in thread
* [RESEND take 2][PATCH 2/2] Update mempool function calls.
2008-11-30 0:04 [RESEND take 2][PATCH 0/2] Add /proc/mempool to display mempools Remi Colinet
2008-11-30 0:10 ` [RESEND take 2][PATCH 1/2] Implement /proc/mempool file " Remi Colinet
@ 2008-11-30 0:13 ` Remi Colinet
1 sibling, 0 replies; 3+ messages in thread
From: Remi Colinet @ 2008-11-30 0:13 UTC (permalink / raw)
To: Kernel
Update mempool function calls.
Signed-off-by: Remi Colinet <remi.colinet@gmail.com>
---
block/blk-core.c | 3 ++-
drivers/block/pktcdvd.c | 4 ++--
drivers/block/virtio_blk.c | 3 ++-
drivers/md/dm-crypt.c | 5 +++--
drivers/md/dm-io.c | 3 ++-
drivers/md/dm-raid1.c | 2 +-
drivers/md/dm-region-hash.c | 2 +-
drivers/md/multipath.c | 2 +-
drivers/md/raid1.c | 7 +++----
drivers/md/raid10.c | 5 +++--
drivers/s390/scsi/zfcp_aux.c | 2 +-
drivers/scsi/ibmvscsi/ibmvfc.c | 2 +-
drivers/scsi/lpfc/lpfc_mem.c | 5 +++--
drivers/scsi/qla4xxx/ql4_os.c | 2 +-
fs/bio.c | 2 +-
mm/bounce.c | 4 ++--
16 files changed, 29 insertions(+), 24 deletions(-)
diff -uNrp linux/block/blk-core.c linux-mempool/block/blk-core.c
--- linux/block/blk-core.c 2008-11-29 23:42:26.000000000 +0100
+++ linux-mempool/block/blk-core.c 2008-11-29 23:21:06.000000000 +0100
@@ -479,7 +479,8 @@ static int blk_init_free_list(struct req
init_waitqueue_head(&rl->wait[WRITE]);
rl->rq_pool = mempool_create_node(BLKDEV_MIN_RQ, mempool_alloc_slab,
- mempool_free_slab, request_cachep, q->node);
+ mempool_free_slab, request_cachep, q->node, "blk_rq",
+ MEMPOOL_SLAB);
if (!rl->rq_pool)
return -ENOMEM;
diff -uNrp linux/drivers/block/pktcdvd.c
linux-mempool/drivers/block/pktcdvd.c
--- linux/drivers/block/pktcdvd.c 2008-11-29 23:42:26.000000000 +0100
+++ linux-mempool/drivers/block/pktcdvd.c 2008-11-29 22:24:38.000000000
+0100
@@ -2879,7 +2879,7 @@ static int pkt_setup_dev(dev_t dev, dev_
goto out_mutex;
pd->rb_pool = mempool_create_kmalloc_pool(PKT_RB_POOL_SIZE,
- sizeof(struct pkt_rb_node));
+ sizeof(struct pkt_rb_node), "pkt_rb");
if (!pd->rb_pool)
goto out_mem;
@@ -3070,7 +3070,7 @@ static int __init pkt_init(void)
mutex_init(&ctl_mutex);
psd_pool = mempool_create_kmalloc_pool(PSD_POOL_SIZE,
- sizeof(struct packet_stacked_data));
+ sizeof(struct packet_stacked_data), "pkt_psd");
if (!psd_pool)
return -ENOMEM;
diff -uNrp linux/drivers/block/virtio_blk.c
linux-mempool/drivers/block/virtio_blk.c
--- linux/drivers/block/virtio_blk.c 2008-11-29 23:42:26.000000000 +0100
+++ linux-mempool/drivers/block/virtio_blk.c 2008-11-29
22:25:15.000000000 +0100
@@ -218,7 +218,8 @@ static int virtblk_probe(struct virtio_d
goto out_free_vblk;
}
- vblk->pool = mempool_create_kmalloc_pool(1,sizeof(struct
virtblk_req));
+ vblk->pool = mempool_create_kmalloc_pool(1, sizeof(struct
virtblk_req),
+ "vblk");
if (!vblk->pool) {
err = -ENOMEM;
goto out_free_vq;
diff -uNrp linux/drivers/md/dm-crypt.c
linux-mempool/drivers/md/dm-crypt.c
--- linux/drivers/md/dm-crypt.c 2008-11-29 23:42:26.000000000 +0100
+++ linux-mempool/drivers/md/dm-crypt.c 2008-11-29 23:21:27.000000000
+0100
@@ -1047,14 +1047,15 @@ static int crypt_ctr(struct dm_target *t
~(crypto_tfm_ctx_alignment() - 1);
cc->req_pool = mempool_create_kmalloc_pool(MIN_IOS, cc->dmreq_start +
- sizeof(struct dm_crypt_request) + cc->iv_size);
+ sizeof(struct dm_crypt_request) + cc->iv_size, "dm-crypt_req");
if (!cc->req_pool) {
ti->error = "Cannot allocate crypt request mempool";
goto bad_req_pool;
}
cc->req = NULL;
- cc->page_pool = mempool_create_page_pool(MIN_POOL_PAGES, 0);
+ cc->page_pool = mempool_create_page_pool(MIN_POOL_PAGES, 0,
+ "dm-crypt_page");
if (!cc->page_pool) {
ti->error = "Cannot allocate page mempool";
goto bad_page_pool;
diff -uNrp linux/drivers/md/dm-io.c linux-mempool/drivers/md/dm-io.c
--- linux/drivers/md/dm-io.c 2008-11-29 23:42:26.000000000 +0100
+++ linux-mempool/drivers/md/dm-io.c 2008-11-29 23:21:48.000000000 +0100
@@ -52,7 +52,8 @@ struct dm_io_client *dm_io_client_create
if (!client)
return ERR_PTR(-ENOMEM);
- client->pool = mempool_create_kmalloc_pool(ios, sizeof(struct io));
+ client->pool = mempool_create_kmalloc_pool(ios, sizeof(struct io),
+ "dm-io_client");
if (!client->pool)
goto bad;
diff -uNrp linux/drivers/md/dm-raid1.c
linux-mempool/drivers/md/dm-raid1.c
--- linux/drivers/md/dm-raid1.c 2008-11-29 23:42:26.000000000 +0100
+++ linux-mempool/drivers/md/dm-raid1.c 2008-11-29 21:33:57.000000000
+0100
@@ -766,7 +766,7 @@ static struct mirror_set *alloc_context(
len = sizeof(struct dm_raid1_read_record);
ms->read_record_pool = mempool_create_kmalloc_pool(MIN_READ_RECORDS,
- len);
+ len, "dm-raid read record");
if (!ms->read_record_pool) {
ti->error = "Error creating mirror read_record_pool";
kfree(ms);
diff -uNrp linux/drivers/md/dm-region-hash.c
linux-mempool/drivers/md/dm-region-hash.c
--- linux/drivers/md/dm-region-hash.c 2008-11-29 23:42:26.000000000
+0100
+++ linux-mempool/drivers/md/dm-region-hash.c 2008-11-29
21:33:57.000000000 +0100
@@ -214,7 +214,7 @@ struct dm_region_hash *dm_region_hash_cr
INIT_LIST_HEAD(&rh->failed_recovered_regions);
rh->region_pool = mempool_create_kmalloc_pool(MIN_REGIONS,
- sizeof(struct dm_region));
+ sizeof(struct dm_region), "md-region-hash");
if (!rh->region_pool) {
vfree(rh->buckets);
kfree(rh);
diff -uNrp linux/drivers/md/multipath.c
linux-mempool/drivers/md/multipath.c
--- linux/drivers/md/multipath.c 2008-11-29 23:42:26.000000000 +0100
+++ linux-mempool/drivers/md/multipath.c 2008-11-29 22:26:47.000000000
+0100
@@ -476,7 +476,7 @@ static int multipath_run (mddev_t *mddev
mddev->degraded = conf->raid_disks - conf->working_disks;
conf->pool = mempool_create_kzalloc_pool(NR_RESERVED_BUFS,
- sizeof(struct multipath_bh));
+ sizeof(struct multipath_bh), "multipath_bh");
if (conf->pool == NULL) {
printk(KERN_ERR
"multipath: couldn't allocate memory for %s\n",
diff -uNrp linux/drivers/md/raid10.c linux-mempool/drivers/md/raid10.c
--- linux/drivers/md/raid10.c 2008-11-29 23:42:26.000000000 +0100
+++ linux-mempool/drivers/md/raid10.c 2008-11-29 23:22:12.000000000
+0100
@@ -1636,7 +1636,8 @@ static int init_resync(conf_t *conf)
buffs = RESYNC_WINDOW / RESYNC_BLOCK_SIZE;
BUG_ON(conf->r10buf_pool);
- conf->r10buf_pool = mempool_create(buffs, r10buf_pool_alloc,
r10buf_pool_free, conf);
+ conf->r10buf_pool = mempool_create(buffs, r10buf_pool_alloc,
+ r10buf_pool_free, conf, "md_r10buf", MEMPOOL_PRIVATE);
if (!conf->r10buf_pool)
return -ENOMEM;
conf->next_resync = 0;
@@ -2098,7 +2099,7 @@ static int run(mddev_t *mddev)
conf->stride = stride << conf->chunk_shift;
conf->r10bio_pool = mempool_create(NR_RAID10_BIOS, r10bio_pool_alloc,
- r10bio_pool_free, conf);
+ r10bio_pool_free, conf, "md_r10bio", MEMPOOL_PRIVATE);
if (!conf->r10bio_pool) {
printk(KERN_ERR "raid10: couldn't allocate memory for %s\n",
mdname(mddev));
diff -uNrp linux/drivers/md/raid1.c linux-mempool/drivers/md/raid1.c
--- linux/drivers/md/raid1.c 2008-11-29 23:42:26.000000000 +0100
+++ linux-mempool/drivers/md/raid1.c 2008-11-29 21:33:57.000000000 +0100
@@ -1678,7 +1678,7 @@ static int init_resync(conf_t *conf)
buffs = RESYNC_WINDOW / RESYNC_BLOCK_SIZE;
BUG_ON(conf->r1buf_pool);
conf->r1buf_pool = mempool_create(buffs, r1buf_pool_alloc,
r1buf_pool_free,
- conf->poolinfo);
+ conf->poolinfo, "md_r1buf", MEMPOOL_PRIVATE);
if (!conf->r1buf_pool)
return -ENOMEM;
conf->next_resync = 0;
@@ -1956,8 +1956,7 @@ static int run(mddev_t *mddev)
conf->poolinfo->mddev = mddev;
conf->poolinfo->raid_disks = mddev->raid_disks;
conf->r1bio_pool = mempool_create(NR_RAID1_BIOS, r1bio_pool_alloc,
- r1bio_pool_free,
- conf->poolinfo);
+ r1bio_pool_free, conf->poolinfo, "md_r1bio", MEMPOOL_PRIVATE);
if (!conf->r1bio_pool)
goto out_no_mem;
@@ -2171,7 +2170,7 @@ static int raid1_reshape(mddev_t *mddev)
newpoolinfo->raid_disks = raid_disks;
newpool = mempool_create(NR_RAID1_BIOS, r1bio_pool_alloc,
- r1bio_pool_free, newpoolinfo);
+ r1bio_pool_free, newpoolinfo, "md_raid1", MEMPOOL_PRIVATE);
if (!newpool) {
kfree(newpoolinfo);
return -ENOMEM;
diff -uNrp linux/drivers/s390/scsi/zfcp_aux.c
linux-mempool/drivers/s390/scsi/zfcp_aux.c
--- linux/drivers/s390/scsi/zfcp_aux.c 2008-11-29 23:42:26.000000000
+0100
+++ linux-mempool/drivers/s390/scsi/zfcp_aux.c 2008-11-29
21:55:55.000000000 +0100
@@ -372,7 +372,7 @@ static int zfcp_allocate_low_mem_buffers
adapter->pool.fsf_req_status_read =
mempool_create_kmalloc_pool(FSF_STATUS_READS_RECOM,
- sizeof(struct zfcp_fsf_req));
+ sizeof(struct zfcp_fsf_req), "zfcp_fsf_req");
if (!adapter->pool.fsf_req_status_read)
return -ENOMEM;
diff -uNrp linux/drivers/scsi/ibmvscsi/ibmvfc.c
linux-mempool/drivers/scsi/ibmvscsi/ibmvfc.c
--- linux/drivers/scsi/ibmvscsi/ibmvfc.c 2008-11-29 23:42:26.000000000
+0100
+++ linux-mempool/drivers/scsi/ibmvscsi/ibmvfc.c 2008-11-29
22:01:31.000000000 +0100
@@ -3809,7 +3809,7 @@ static int ibmvfc_alloc_mem(struct ibmvf
goto free_disc_buffer;
vhost->tgt_pool = mempool_create_kzalloc_pool(IBMVFC_TGT_MEMPOOL_SZ,
- sizeof(struct ibmvfc_target));
+ sizeof(struct ibmvfc_target), "ibmvfc_target");
if (!vhost->tgt_pool) {
dev_err(dev, "Couldn't allocate target memory pool\n");
diff -uNrp linux/drivers/scsi/lpfc/lpfc_mem.c
linux-mempool/drivers/scsi/lpfc/lpfc_mem.c
--- linux/drivers/scsi/lpfc/lpfc_mem.c 2008-11-29 23:42:26.000000000
+0100
+++ linux-mempool/drivers/scsi/lpfc/lpfc_mem.c 2008-11-29
23:40:37.000000000 +0100
@@ -19,6 +19,7 @@
* included with this package. *
*******************************************************************/
+#include <linux/slab.h>
#include <linux/mempool.h>
#include <linux/pci.h>
#include <linux/interrupt.h>
@@ -89,12 +90,12 @@ lpfc_mem_alloc(struct lpfc_hba * phba)
}
phba->mbox_mem_pool = mempool_create_kmalloc_pool(LPFC_MEM_POOL_SIZE,
- sizeof(LPFC_MBOXQ_t));
+ sizeof(LPFC_MBOXQ_t), "mbox_mem_pool");
if (!phba->mbox_mem_pool)
goto fail_free_mbuf_pool;
phba->nlp_mem_pool = mempool_create_kmalloc_pool(LPFC_MEM_POOL_SIZE,
- sizeof(struct lpfc_nodelist));
+ sizeof(struct lpfc_nodelist), "nlp_mem_pool");
if (!phba->nlp_mem_pool)
goto fail_free_mbox_pool;
diff -uNrp linux/drivers/scsi/qla4xxx/ql4_os.c
linux-mempool/drivers/scsi/qla4xxx/ql4_os.c
--- linux/drivers/scsi/qla4xxx/ql4_os.c 2008-11-29 23:42:26.000000000
+0100
+++ linux-mempool/drivers/scsi/qla4xxx/ql4_os.c 2008-11-29
22:28:06.000000000 +0100
@@ -563,7 +563,7 @@ static int qla4xxx_mem_alloc(struct scsi
/* Allocate memory for srb pool. */
ha->srb_mempool = mempool_create(SRB_MIN_REQ, mempool_alloc_slab,
- mempool_free_slab, srb_cachep);
+ mempool_free_slab, srb_cachep, "srb_mempool", MEMPOOL_PRIVATE);
if (ha->srb_mempool == NULL) {
dev_warn(&ha->pdev->dev,
"Memory Allocation failed - SRB Pool.\n");
diff -uNrp linux/fs/bio.c linux-mempool/fs/bio.c
--- linux/fs/bio.c 2008-11-29 23:42:26.000000000 +0100
+++ linux-mempool/fs/bio.c 2008-11-29 21:33:57.000000000 +0100
@@ -1428,7 +1428,7 @@ static int __init init_bio(void)
panic("bio: can't allocate bios\n");
bio_split_pool = mempool_create_kmalloc_pool(BIO_SPLIT_ENTRIES,
- sizeof(struct bio_pair));
+ sizeof(struct bio_pair), "bio_pair");
if (!bio_split_pool)
panic("bio: can't create split pool\n");
diff -uNrp linux/mm/bounce.c linux-mempool/mm/bounce.c
--- linux/mm/bounce.c 2008-11-29 23:42:26.000000000 +0100
+++ linux-mempool/mm/bounce.c 2008-11-29 21:33:57.000000000 +0100
@@ -31,7 +31,7 @@ static __init int init_emergency_pool(vo
if (!i.totalhigh)
return 0;
- page_pool = mempool_create_page_pool(POOL_SIZE, 0);
+ page_pool = mempool_create_page_pool(POOL_SIZE, 0, "highmem_bounce");
BUG_ON(!page_pool);
printk("highmem bounce pool size: %d pages\n", POOL_SIZE);
@@ -80,7 +80,7 @@ int init_emergency_isa_pool(void)
return 0;
isa_page_pool = mempool_create(ISA_POOL_SIZE, mempool_alloc_pages_isa,
- mempool_free_pages, (void *) 0);
+ mempool_free_pages, (void *) 0, "isa_page_pool", MEMPOOL_PAGE);
BUG_ON(!isa_page_pool);
printk("isa bounce pool size: %d pages\n", ISA_POOL_SIZE);
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-11-30 0:17 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-11-30 0:04 [RESEND take 2][PATCH 0/2] Add /proc/mempool to display mempools Remi Colinet
2008-11-30 0:10 ` [RESEND take 2][PATCH 1/2] Implement /proc/mempool file " Remi Colinet
2008-11-30 0:13 ` [RESEND take 2][PATCH 2/2] Update mempool function calls Remi Colinet
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome