mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-22 23:04:43 +00:00
libceph: define ceph_decode_pgid() only once
There are two basically identical definitions of __decode_pgid() in libceph, one in "net/ceph/osdmap.c" and the other in "net/ceph/osd_client.c". Get rid of both, and instead define a single inline version in "include/linux/ceph/osdmap.h". Signed-off-by: Alex Elder <elder@inktank.com> Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
This commit is contained in:
parent
8058fd4503
commit
ef4859d647
3 changed files with 27 additions and 41 deletions
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include <linux/rbtree.h>
|
||||
#include <linux/ceph/types.h>
|
||||
#include <linux/ceph/decode.h>
|
||||
#include <linux/ceph/ceph_fs.h>
|
||||
#include <linux/crush/crush.h>
|
||||
|
||||
|
@ -119,6 +120,29 @@ static inline struct ceph_entity_addr *ceph_osd_addr(struct ceph_osdmap *map,
|
|||
return &map->osd_addr[osd];
|
||||
}
|
||||
|
||||
static inline int ceph_decode_pgid(void **p, void *end, struct ceph_pg *pgid)
|
||||
{
|
||||
__u8 version;
|
||||
|
||||
if (!ceph_has_room(p, end, 1 + 8 + 4 + 4)) {
|
||||
pr_warning("incomplete pg encoding");
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
version = ceph_decode_8(p);
|
||||
if (version > 1) {
|
||||
pr_warning("do not understand pg encoding %d > 1",
|
||||
(int)version);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pgid->pool = ceph_decode_64(p);
|
||||
pgid->seed = ceph_decode_32(p);
|
||||
*p += 4; /* skip deprecated preferred value */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern struct ceph_osdmap *osdmap_decode(void **p, void *end);
|
||||
extern struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end,
|
||||
struct ceph_osdmap *map,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue