mirror of https://gitee.com/openkylin/linux.git
ceph: name msgpools; useful error messages
Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
parent
8c6efb58a5
commit
4f48280ee1
|
@ -10,8 +10,12 @@
|
|||
static void *alloc_fn(gfp_t gfp_mask, void *arg)
|
||||
{
|
||||
struct ceph_msgpool *pool = arg;
|
||||
void *p;
|
||||
|
||||
return ceph_msg_new(0, pool->front_len);
|
||||
p = ceph_msg_new(0, pool->front_len);
|
||||
if (!p)
|
||||
pr_err("msgpool %s alloc failed\n", pool->name);
|
||||
return p;
|
||||
}
|
||||
|
||||
static void free_fn(void *element, void *arg)
|
||||
|
@ -20,12 +24,13 @@ static void free_fn(void *element, void *arg)
|
|||
}
|
||||
|
||||
int ceph_msgpool_init(struct ceph_msgpool *pool,
|
||||
int front_len, int size, bool blocking)
|
||||
int front_len, int size, bool blocking, const char *name)
|
||||
{
|
||||
pool->front_len = front_len;
|
||||
pool->pool = mempool_create(size, alloc_fn, free_fn, pool);
|
||||
if (!pool->pool)
|
||||
return -ENOMEM;
|
||||
pool->name = name;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -38,8 +43,8 @@ struct ceph_msg *ceph_msgpool_get(struct ceph_msgpool *pool,
|
|||
int front_len)
|
||||
{
|
||||
if (front_len > pool->front_len) {
|
||||
pr_err("msgpool_get pool %p need front %d, pool size is %d\n",
|
||||
pool, front_len, pool->front_len);
|
||||
pr_err("msgpool_get pool %s need front %d, pool size is %d\n",
|
||||
pool->name, front_len, pool->front_len);
|
||||
WARN_ON(1);
|
||||
|
||||
/* try to alloc a fresh message */
|
||||
|
|
|
@ -9,12 +9,14 @@
|
|||
* avoid unexpected OOM conditions.
|
||||
*/
|
||||
struct ceph_msgpool {
|
||||
const char *name;
|
||||
mempool_t *pool;
|
||||
int front_len; /* preallocated payload size */
|
||||
};
|
||||
|
||||
extern int ceph_msgpool_init(struct ceph_msgpool *pool,
|
||||
int front_len, int size, bool blocking);
|
||||
int front_len, int size, bool blocking,
|
||||
const char *name);
|
||||
extern void ceph_msgpool_destroy(struct ceph_msgpool *pool);
|
||||
extern struct ceph_msg *ceph_msgpool_get(struct ceph_msgpool *,
|
||||
int front_len);
|
||||
|
|
|
@ -1214,11 +1214,13 @@ int ceph_osdc_init(struct ceph_osd_client *osdc, struct ceph_client *client)
|
|||
if (!osdc->req_mempool)
|
||||
goto out;
|
||||
|
||||
err = ceph_msgpool_init(&osdc->msgpool_op, OSD_OP_FRONT_LEN, 10, true);
|
||||
err = ceph_msgpool_init(&osdc->msgpool_op, OSD_OP_FRONT_LEN, 10, true,
|
||||
"osd_op");
|
||||
if (err < 0)
|
||||
goto out_mempool;
|
||||
err = ceph_msgpool_init(&osdc->msgpool_op_reply,
|
||||
OSD_OPREPLY_FRONT_LEN, 10, true);
|
||||
OSD_OPREPLY_FRONT_LEN, 10, true,
|
||||
"osd_op_reply");
|
||||
if (err < 0)
|
||||
goto out_msgpool;
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue