From dfdf6a59e9af9df2ea54dcac4d367697f6451754 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 3 May 2011 12:52:05 -0700 Subject: [PATCH] --- yaml --- r: 251319 b: refs/heads/master c: 7662d8ff57d2b00ce8f7fe0b60a85efbb2c05652 h: refs/heads/master i: 251317: f0b1d3304a62d438d99664dd81b4e4f123370f17 251315: db0089ae5ab85e71ed0242dc3c16e6ef0c9071c2 251311: 352a7149c87d9dc19e92be256b98d3c1dcf33c01 v: v3 --- [refs] | 2 +- trunk/net/ceph/osdmap.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index c178cccc2109..633d5a4930ef 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9db4b3e32778400555d5cc6fb61d4058902d37f7 +refs/heads/master: 7662d8ff57d2b00ce8f7fe0b60a85efbb2c05652 diff --git a/trunk/net/ceph/osdmap.c b/trunk/net/ceph/osdmap.c index 94f068dda433..e97c3588c3ec 100644 --- a/trunk/net/ceph/osdmap.c +++ b/trunk/net/ceph/osdmap.c @@ -830,15 +830,20 @@ struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, map->osd_addr[osd] = addr; } - /* new_down */ + /* new_state */ ceph_decode_32_safe(p, end, len, bad); while (len--) { u32 osd; + u8 xorstate; ceph_decode_32_safe(p, end, osd, bad); + xorstate = **(u8 **)p; (*p)++; /* clean flag */ - pr_info("osd%d down\n", osd); + if (xorstate == 0) + xorstate = CEPH_OSD_UP; + if (xorstate & CEPH_OSD_UP) + pr_info("osd%d down\n", osd); if (osd < map->max_osd) - map->osd_state[osd] &= ~CEPH_OSD_UP; + map->osd_state[osd] ^= xorstate; } /* new_weight */