ceph: rewrite msgpool using mempool_t
Since we don't need to maintain large pools of messages, we can just use the standard mempool_t. We maintain a msgpool 'wrapper' because we need the mempool_t* in the alloc function, and mempool gives us only pool_data. Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#ifndef _FS_CEPH_MSGPOOL
|
||||
#define _FS_CEPH_MSGPOOL
|
||||
|
||||
#include <linux/mempool.h>
|
||||
#include "messenger.h"
|
||||
|
||||
/*
|
||||
@@ -8,18 +9,13 @@
|
||||
* avoid unexpected OOM conditions.
|
||||
*/
|
||||
struct ceph_msgpool {
|
||||
spinlock_t lock;
|
||||
mempool_t *pool;
|
||||
int front_len; /* preallocated payload size */
|
||||
struct list_head msgs; /* msgs in the pool; each has 1 ref */
|
||||
int num, min; /* cur, min # msgs in the pool */
|
||||
bool blocking;
|
||||
wait_queue_head_t wait;
|
||||
};
|
||||
|
||||
extern int ceph_msgpool_init(struct ceph_msgpool *pool,
|
||||
int front_len, int size, bool blocking);
|
||||
extern void ceph_msgpool_destroy(struct ceph_msgpool *pool);
|
||||
extern int ceph_msgpool_resv(struct ceph_msgpool *, int delta);
|
||||
extern struct ceph_msg *ceph_msgpool_get(struct ceph_msgpool *,
|
||||
int front_len);
|
||||
extern void ceph_msgpool_put(struct ceph_msgpool *, struct ceph_msg *);
|
||||
|
Reference in New Issue
Block a user