Commit | Line | Data |
---|---|---|
8fc91fd8 SW |
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 | */ | |
10 | struct 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 | ||
19 | extern int ceph_msgpool_init(struct ceph_msgpool *pool, | |
20 | int front_len, int size, bool blocking); | |
21 | extern void ceph_msgpool_destroy(struct ceph_msgpool *pool); | |
22 | extern int ceph_msgpool_resv(struct ceph_msgpool *, int delta); | |
8f3bc053 SW |
23 | extern struct ceph_msg *ceph_msgpool_get(struct ceph_msgpool *, |
24 | int front_len); | |
8fc91fd8 SW |
25 | extern void ceph_msgpool_put(struct ceph_msgpool *, struct ceph_msg *); |
26 | ||
27 | #endif |