Loading fs/ceph/mds_client.c +3 −1 Original line number Original line Diff line number Diff line Loading @@ -2377,9 +2377,11 @@ static void check_new_map(struct ceph_mds_client *mdsc, oldstate = ceph_mdsmap_get_state(oldmap, i); oldstate = ceph_mdsmap_get_state(oldmap, i); newstate = ceph_mdsmap_get_state(newmap, i); newstate = ceph_mdsmap_get_state(newmap, i); dout("check_new_map mds%d state %s -> %s (session %s)\n", dout("check_new_map mds%d state %s%s -> %s%s (session %s)\n", i, ceph_mds_state_name(oldstate), i, ceph_mds_state_name(oldstate), ceph_mdsmap_is_laggy(oldmap, i) ? " (laggy)" : "", ceph_mds_state_name(newstate), ceph_mds_state_name(newstate), ceph_mdsmap_is_laggy(newmap, i) ? " (laggy)" : "", session_state_name(s->s_state)); session_state_name(s->s_state)); if (memcmp(ceph_mdsmap_get_addr(oldmap, i), if (memcmp(ceph_mdsmap_get_addr(oldmap, i), Loading fs/ceph/mdsmap.c +5 −1 Original line number Original line Diff line number Diff line Loading @@ -85,6 +85,7 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end) struct ceph_entity_addr addr; struct ceph_entity_addr addr; u32 num_export_targets; u32 num_export_targets; void *pexport_targets = NULL; void *pexport_targets = NULL; struct ceph_timespec laggy_since; ceph_decode_need(p, end, sizeof(u64)*2 + 1 + sizeof(u32), bad); ceph_decode_need(p, end, sizeof(u64)*2 + 1 + sizeof(u32), bad); global_id = ceph_decode_64(p); global_id = ceph_decode_64(p); Loading @@ -103,7 +104,7 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end) state_seq = ceph_decode_64(p); state_seq = ceph_decode_64(p); ceph_decode_copy(p, &addr, sizeof(addr)); ceph_decode_copy(p, &addr, sizeof(addr)); ceph_decode_addr(&addr); ceph_decode_addr(&addr); *p += sizeof(struct ceph_timespec); ceph_decode_copy(p, &laggy_since, sizeof(laggy_since)); *p += sizeof(u32); *p += sizeof(u32); ceph_decode_32_safe(p, end, namelen, bad); ceph_decode_32_safe(p, end, namelen, bad); *p += namelen; *p += namelen; Loading @@ -122,6 +123,9 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end) m->m_info[mds].global_id = global_id; m->m_info[mds].global_id = global_id; m->m_info[mds].state = state; m->m_info[mds].state = state; m->m_info[mds].addr = addr; m->m_info[mds].addr = addr; m->m_info[mds].laggy = (laggy_since.tv_sec != 0 || laggy_since.tv_nsec != 0); m->m_info[mds].num_export_targets = num_export_targets; m->m_info[mds].num_export_targets = num_export_targets; if (num_export_targets) { if (num_export_targets) { m->m_info[mds].export_targets = m->m_info[mds].export_targets = Loading fs/ceph/mdsmap.h +8 −0 Original line number Original line Diff line number Diff line Loading @@ -13,6 +13,7 @@ struct ceph_mds_info { struct ceph_entity_addr addr; struct ceph_entity_addr addr; s32 state; s32 state; int num_export_targets; int num_export_targets; bool laggy; u32 *export_targets; u32 *export_targets; }; }; Loading Loading @@ -47,6 +48,13 @@ static inline int ceph_mdsmap_get_state(struct ceph_mdsmap *m, int w) return m->m_info[w].state; return m->m_info[w].state; } } static inline bool ceph_mdsmap_is_laggy(struct ceph_mdsmap *m, int w) { if (w >= 0 && w < m->m_max_mds) return m->m_info[w].laggy; return false; } extern int ceph_mdsmap_get_random_mds(struct ceph_mdsmap *m); extern int ceph_mdsmap_get_random_mds(struct ceph_mdsmap *m); extern struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end); extern struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end); extern void ceph_mdsmap_destroy(struct ceph_mdsmap *m); extern void ceph_mdsmap_destroy(struct ceph_mdsmap *m); Loading Loading
fs/ceph/mds_client.c +3 −1 Original line number Original line Diff line number Diff line Loading @@ -2377,9 +2377,11 @@ static void check_new_map(struct ceph_mds_client *mdsc, oldstate = ceph_mdsmap_get_state(oldmap, i); oldstate = ceph_mdsmap_get_state(oldmap, i); newstate = ceph_mdsmap_get_state(newmap, i); newstate = ceph_mdsmap_get_state(newmap, i); dout("check_new_map mds%d state %s -> %s (session %s)\n", dout("check_new_map mds%d state %s%s -> %s%s (session %s)\n", i, ceph_mds_state_name(oldstate), i, ceph_mds_state_name(oldstate), ceph_mdsmap_is_laggy(oldmap, i) ? " (laggy)" : "", ceph_mds_state_name(newstate), ceph_mds_state_name(newstate), ceph_mdsmap_is_laggy(newmap, i) ? " (laggy)" : "", session_state_name(s->s_state)); session_state_name(s->s_state)); if (memcmp(ceph_mdsmap_get_addr(oldmap, i), if (memcmp(ceph_mdsmap_get_addr(oldmap, i), Loading
fs/ceph/mdsmap.c +5 −1 Original line number Original line Diff line number Diff line Loading @@ -85,6 +85,7 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end) struct ceph_entity_addr addr; struct ceph_entity_addr addr; u32 num_export_targets; u32 num_export_targets; void *pexport_targets = NULL; void *pexport_targets = NULL; struct ceph_timespec laggy_since; ceph_decode_need(p, end, sizeof(u64)*2 + 1 + sizeof(u32), bad); ceph_decode_need(p, end, sizeof(u64)*2 + 1 + sizeof(u32), bad); global_id = ceph_decode_64(p); global_id = ceph_decode_64(p); Loading @@ -103,7 +104,7 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end) state_seq = ceph_decode_64(p); state_seq = ceph_decode_64(p); ceph_decode_copy(p, &addr, sizeof(addr)); ceph_decode_copy(p, &addr, sizeof(addr)); ceph_decode_addr(&addr); ceph_decode_addr(&addr); *p += sizeof(struct ceph_timespec); ceph_decode_copy(p, &laggy_since, sizeof(laggy_since)); *p += sizeof(u32); *p += sizeof(u32); ceph_decode_32_safe(p, end, namelen, bad); ceph_decode_32_safe(p, end, namelen, bad); *p += namelen; *p += namelen; Loading @@ -122,6 +123,9 @@ struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end) m->m_info[mds].global_id = global_id; m->m_info[mds].global_id = global_id; m->m_info[mds].state = state; m->m_info[mds].state = state; m->m_info[mds].addr = addr; m->m_info[mds].addr = addr; m->m_info[mds].laggy = (laggy_since.tv_sec != 0 || laggy_since.tv_nsec != 0); m->m_info[mds].num_export_targets = num_export_targets; m->m_info[mds].num_export_targets = num_export_targets; if (num_export_targets) { if (num_export_targets) { m->m_info[mds].export_targets = m->m_info[mds].export_targets = Loading
fs/ceph/mdsmap.h +8 −0 Original line number Original line Diff line number Diff line Loading @@ -13,6 +13,7 @@ struct ceph_mds_info { struct ceph_entity_addr addr; struct ceph_entity_addr addr; s32 state; s32 state; int num_export_targets; int num_export_targets; bool laggy; u32 *export_targets; u32 *export_targets; }; }; Loading Loading @@ -47,6 +48,13 @@ static inline int ceph_mdsmap_get_state(struct ceph_mdsmap *m, int w) return m->m_info[w].state; return m->m_info[w].state; } } static inline bool ceph_mdsmap_is_laggy(struct ceph_mdsmap *m, int w) { if (w >= 0 && w < m->m_max_mds) return m->m_info[w].laggy; return false; } extern int ceph_mdsmap_get_random_mds(struct ceph_mdsmap *m); extern int ceph_mdsmap_get_random_mds(struct ceph_mdsmap *m); extern struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end); extern struct ceph_mdsmap *ceph_mdsmap_decode(void **p, void *end); extern void ceph_mdsmap_destroy(struct ceph_mdsmap *m); extern void ceph_mdsmap_destroy(struct ceph_mdsmap *m); Loading