at v2.6.34 848 B view raw
1#ifndef _FS_CEPH_MSGPOOL 2#define _FS_CEPH_MSGPOOL 3 4#include "messenger.h" 5 6/* 7 * we use memory pools for preallocating messages we may receive, to 8 * avoid unexpected OOM conditions. 9 */ 10struct ceph_msgpool { 11 spinlock_t lock; 12 int front_len; /* preallocated payload size */ 13 struct list_head msgs; /* msgs in the pool; each has 1 ref */ 14 int num, min; /* cur, min # msgs in the pool */ 15 bool blocking; 16 wait_queue_head_t wait; 17}; 18 19extern int ceph_msgpool_init(struct ceph_msgpool *pool, 20 int front_len, int size, bool blocking); 21extern void ceph_msgpool_destroy(struct ceph_msgpool *pool); 22extern int ceph_msgpool_resv(struct ceph_msgpool *, int delta); 23extern struct ceph_msg *ceph_msgpool_get(struct ceph_msgpool *, 24 int front_len); 25extern void ceph_msgpool_put(struct ceph_msgpool *, struct ceph_msg *); 26 27#endif