diff mbox series

[v4] libceph: print fsid and client gid with osd id

Message ID bfc20d2c-9198-2cb3-506a-4bae09c6cd68@cybozu.co.jp (mailing list archive)
State New, archived
Headers show
Series [v4] libceph: print fsid and client gid with osd id | expand

Commit Message

Daichi Mukai June 6, 2022, 2:57 a.m. UTC
Print fsid and client gid in libceph log messages to distinct from which
each message come.

Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com>
Signed-off-by: Daichi Mukai <daichi-mukai@cybozu.co.jp>
---
  include/linux/ceph/osdmap.h |  2 +-
  net/ceph/osd_client.c       |  3 ++-
  net/ceph/osdmap.c           | 43 ++++++++++++++++++++++++++-----------
  3 files changed, 34 insertions(+), 14 deletions(-)

* Changes since v3

- Rebased to latest mainline

* Changes since v2

- Set scope of this patch to log message for osd
- Improved format of message

* Changes since v1

- Added client gid to log message

Comments

Ilya Dryomov June 14, 2022, 1:12 p.m. UTC | #1
On Mon, Jun 6, 2022 at 8:00 AM Daichi Mukai <daichi-mukai@cybozu.co.jp> wrote:
>
> Print fsid and client gid in libceph log messages to distinct from which
> each message come.
>
> Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com>
> Signed-off-by: Daichi Mukai <daichi-mukai@cybozu.co.jp>
> ---
>   include/linux/ceph/osdmap.h |  2 +-
>   net/ceph/osd_client.c       |  3 ++-
>   net/ceph/osdmap.c           | 43 ++++++++++++++++++++++++++-----------
>   3 files changed, 34 insertions(+), 14 deletions(-)
>
> * Changes since v3
>
> - Rebased to latest mainline
>
> * Changes since v2
>
> - Set scope of this patch to log message for osd
> - Improved format of message
>
> * Changes since v1
>
> - Added client gid to log message
>
> diff --git a/include/linux/ceph/osdmap.h b/include/linux/ceph/osdmap.h
> index 5553019c3f07..a9216c64350c 100644
> --- a/include/linux/ceph/osdmap.h
> +++ b/include/linux/ceph/osdmap.h
> @@ -253,7 +253,7 @@ static inline int ceph_decode_pgid(void **p, void *end, struct ceph_pg *pgid)
>   struct ceph_osdmap *ceph_osdmap_alloc(void);
>   struct ceph_osdmap *ceph_osdmap_decode(void **p, void *end, bool msgr2);
>   struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, bool msgr2,
> -                                            struct ceph_osdmap *map);
> +                                            struct ceph_osdmap *map, u64 gid);
>   extern void ceph_osdmap_destroy(struct ceph_osdmap *map);
>
>   struct ceph_osds {
> diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
> index 9d82bb42e958..e9bd6c27c5ad 100644
> --- a/net/ceph/osd_client.c
> +++ b/net/ceph/osd_client.c
> @@ -3945,7 +3945,8 @@ static int handle_one_map(struct ceph_osd_client *osdc,
>         if (incremental)
>                 newmap = osdmap_apply_incremental(&p, end,
>                                                   ceph_msgr2(osdc->client),
> -                                                 osdc->osdmap);
> +                                                 osdc->osdmap,
> +                                                 ceph_client_gid(osdc->client));
>         else
>                 newmap = ceph_osdmap_decode(&p, end, ceph_msgr2(osdc->client));
>         if (IS_ERR(newmap))
> diff --git a/net/ceph/osdmap.c b/net/ceph/osdmap.c
> index 2823bb3cff55..cd65677baff3 100644
> --- a/net/ceph/osdmap.c
> +++ b/net/ceph/osdmap.c
> @@ -1549,8 +1549,23 @@ static int decode_primary_affinity(void **p, void *end,
>         return -EINVAL;
>   }
>
> +static __printf(3, 4)
> +void print_osd_info(struct ceph_fsid *fsid, u64 gid, const char *fmt, ...)
> +{
> +       struct va_format vaf;
> +       va_list args;
> +
> +       va_start(args, fmt);
> +       vaf.fmt = fmt;
> +       vaf.va = &args;
> +
> +       printk(KERN_INFO "%s (%pU %lld): %pV", KBUILD_MODNAME, fsid, gid, &vaf);
> +
> +       va_end(args);
> +}
> +
>   static int decode_new_primary_affinity(void **p, void *end,
> -                                      struct ceph_osdmap *map)
> +                                      struct ceph_osdmap *map, u64 gid)
>   {
>         u32 n;
>
> @@ -1566,7 +1581,8 @@ static int decode_new_primary_affinity(void **p, void *end,
>                 if (ret)
>                         return ret;
>
> -               pr_info("osd%d primary-affinity 0x%x\n", osd, aff);
> +               print_osd_info(&map->fsid, gid, "osd%d primary-affinity 0x%x\n",
> +                              osd, aff);
>         }
>
>         return 0;
> @@ -1825,7 +1841,8 @@ struct ceph_osdmap *ceph_osdmap_decode(void **p, void *end, bool msgr2)
>    *     new_state: { osd=6, xorstate=EXISTS } # clear osd_state
>    */
>   static int decode_new_up_state_weight(void **p, void *end, u8 struct_v,
> -                                     bool msgr2, struct ceph_osdmap *map)
> +                                     bool msgr2, struct ceph_osdmap *map,
> +                                     u64 gid)
>   {
>         void *new_up_client;
>         void *new_state;
> @@ -1864,9 +1881,10 @@ static int decode_new_up_state_weight(void **p, void *end, u8 struct_v,
>                 osd = ceph_decode_32(p);
>                 w = ceph_decode_32(p);
>                 BUG_ON(osd >= map->max_osd);
> -               pr_info("osd%d weight 0x%x %s\n", osd, w,
> -                    w == CEPH_OSD_IN ? "(in)" :
> -                    (w == CEPH_OSD_OUT ? "(out)" : ""));
> +               print_osd_info(&map->fsid, gid, "osd%d weight 0x%x %s\n",
> +                              osd, w,
> +                              w == CEPH_OSD_IN ? "(in)" :
> +                              (w == CEPH_OSD_OUT ? "(out)" : ""));
>                 map->osd_weight[osd] = w;
>
>                 /*
> @@ -1898,10 +1916,11 @@ static int decode_new_up_state_weight(void **p, void *end, u8 struct_v,
>                 BUG_ON(osd >= map->max_osd);
>                 if ((map->osd_state[osd] & CEPH_OSD_UP) &&
>                     (xorstate & CEPH_OSD_UP))
> -                       pr_info("osd%d down\n", osd);
> +                       print_osd_info(&map->fsid, gid, "osd%d down\n", osd);
>                 if ((map->osd_state[osd] & CEPH_OSD_EXISTS) &&
>                     (xorstate & CEPH_OSD_EXISTS)) {
> -                       pr_info("osd%d does not exist\n", osd);
> +                       print_osd_info(&map->fsid, gid, "osd%d does not exist\n",
> +                                      osd);
>                         ret = set_primary_affinity(map, osd,
>                                                    CEPH_OSD_DEFAULT_PRIMARY_AFFINITY);
>                         if (ret)
> @@ -1931,7 +1950,7 @@ static int decode_new_up_state_weight(void **p, void *end, u8 struct_v,
>
>                 dout("%s osd%d addr %s\n", __func__, osd, ceph_pr_addr(&addr));
>
> -               pr_info("osd%d up\n", osd);
> +               print_osd_info(&map->fsid, gid, "osd%d up\n", osd);
>                 map->osd_state[osd] |= CEPH_OSD_EXISTS | CEPH_OSD_UP;
>                 map->osd_addr[osd] = addr;
>         }
> @@ -1947,7 +1966,7 @@ static int decode_new_up_state_weight(void **p, void *end, u8 struct_v,
>    * decode and apply an incremental map update.
>    */
>   struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, bool msgr2,
> -                                            struct ceph_osdmap *map)
> +                                            struct ceph_osdmap *map, u64 gid)
>   {
>         struct ceph_fsid fsid;
>         u32 epoch = 0;
> @@ -2033,7 +2052,7 @@ struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, bool msgr2,
>         }
>
>         /* new_up_client, new_state, new_weight */
> -       err = decode_new_up_state_weight(p, end, struct_v, msgr2, map);
> +       err = decode_new_up_state_weight(p, end, struct_v, msgr2, map, gid);
>         if (err)
>                 goto bad;
>
> @@ -2051,7 +2070,7 @@ struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, bool msgr2,
>
>         /* new_primary_affinity */
>         if (struct_v >= 2) {
> -               err = decode_new_primary_affinity(p, end, map);
> +               err = decode_new_primary_affinity(p, end, map, gid);
>                 if (err)
>                         goto bad;
>         }
> --
> 2.25.1

Hi Daichi,

I played with this a bit and decided that printing gid is not needed
after all, given that only osdmap messages are changed.  Instead,
I switched to printing epoch which can be very useful when debugging
stuck OSD requests.  Here is the patch I ended up with:

    https://github.com/ceph/ceph-client/commit/b5f9965fad5a4f3a8d17aa234167e8a85e1b9105

Could you please take a look and let me know if you are OK with it?

Thanks,

                Ilya
Daichi Mukai June 15, 2022, 9:21 a.m. UTC | #2
On 2022/06/14 22:12, Ilya Dryomov wrote:
> On Mon, Jun 6, 2022 at 8:00 AM Daichi Mukai <daichi-mukai@cybozu.co.jp> wrote:
>>
>> Print fsid and client gid in libceph log messages to distinct from which
>> each message come.
>>
>> Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com>
>> Signed-off-by: Daichi Mukai <daichi-mukai@cybozu.co.jp>
>> ---
>>    include/linux/ceph/osdmap.h |  2 +-
>>    net/ceph/osd_client.c       |  3 ++-
>>    net/ceph/osdmap.c           | 43 ++++++++++++++++++++++++++-----------
>>    3 files changed, 34 insertions(+), 14 deletions(-)
>>
>> * Changes since v3
>>
>> - Rebased to latest mainline
>>
>> * Changes since v2
>>
>> - Set scope of this patch to log message for osd
>> - Improved format of message
>>
>> * Changes since v1
>>
>> - Added client gid to log message
>>
>> diff --git a/include/linux/ceph/osdmap.h b/include/linux/ceph/osdmap.h
>> index 5553019c3f07..a9216c64350c 100644
>> --- a/include/linux/ceph/osdmap.h
>> +++ b/include/linux/ceph/osdmap.h
>> @@ -253,7 +253,7 @@ static inline int ceph_decode_pgid(void **p, void *end, struct ceph_pg *pgid)
>>    struct ceph_osdmap *ceph_osdmap_alloc(void);
>>    struct ceph_osdmap *ceph_osdmap_decode(void **p, void *end, bool msgr2);
>>    struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, bool msgr2,
>> -                                            struct ceph_osdmap *map);
>> +                                            struct ceph_osdmap *map, u64 gid);
>>    extern void ceph_osdmap_destroy(struct ceph_osdmap *map);
>>
>>    struct ceph_osds {
>> diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
>> index 9d82bb42e958..e9bd6c27c5ad 100644
>> --- a/net/ceph/osd_client.c
>> +++ b/net/ceph/osd_client.c
>> @@ -3945,7 +3945,8 @@ static int handle_one_map(struct ceph_osd_client *osdc,
>>          if (incremental)
>>                  newmap = osdmap_apply_incremental(&p, end,
>>                                                    ceph_msgr2(osdc->client),
>> -                                                 osdc->osdmap);
>> +                                                 osdc->osdmap,
>> +                                                 ceph_client_gid(osdc->client));
>>          else
>>                  newmap = ceph_osdmap_decode(&p, end, ceph_msgr2(osdc->client));
>>          if (IS_ERR(newmap))
>> diff --git a/net/ceph/osdmap.c b/net/ceph/osdmap.c
>> index 2823bb3cff55..cd65677baff3 100644
>> --- a/net/ceph/osdmap.c
>> +++ b/net/ceph/osdmap.c
>> @@ -1549,8 +1549,23 @@ static int decode_primary_affinity(void **p, void *end,
>>          return -EINVAL;
>>    }
>>
>> +static __printf(3, 4)
>> +void print_osd_info(struct ceph_fsid *fsid, u64 gid, const char *fmt, ...)
>> +{
>> +       struct va_format vaf;
>> +       va_list args;
>> +
>> +       va_start(args, fmt);
>> +       vaf.fmt = fmt;
>> +       vaf.va = &args;
>> +
>> +       printk(KERN_INFO "%s (%pU %lld): %pV", KBUILD_MODNAME, fsid, gid, &vaf);
>> +
>> +       va_end(args);
>> +}
>> +
>>    static int decode_new_primary_affinity(void **p, void *end,
>> -                                      struct ceph_osdmap *map)
>> +                                      struct ceph_osdmap *map, u64 gid)
>>    {
>>          u32 n;
>>
>> @@ -1566,7 +1581,8 @@ static int decode_new_primary_affinity(void **p, void *end,
>>                  if (ret)
>>                          return ret;
>>
>> -               pr_info("osd%d primary-affinity 0x%x\n", osd, aff);
>> +               print_osd_info(&map->fsid, gid, "osd%d primary-affinity 0x%x\n",
>> +                              osd, aff);
>>          }
>>
>>          return 0;
>> @@ -1825,7 +1841,8 @@ struct ceph_osdmap *ceph_osdmap_decode(void **p, void *end, bool msgr2)
>>     *     new_state: { osd=6, xorstate=EXISTS } # clear osd_state
>>     */
>>    static int decode_new_up_state_weight(void **p, void *end, u8 struct_v,
>> -                                     bool msgr2, struct ceph_osdmap *map)
>> +                                     bool msgr2, struct ceph_osdmap *map,
>> +                                     u64 gid)
>>    {
>>          void *new_up_client;
>>          void *new_state;
>> @@ -1864,9 +1881,10 @@ static int decode_new_up_state_weight(void **p, void *end, u8 struct_v,
>>                  osd = ceph_decode_32(p);
>>                  w = ceph_decode_32(p);
>>                  BUG_ON(osd >= map->max_osd);
>> -               pr_info("osd%d weight 0x%x %s\n", osd, w,
>> -                    w == CEPH_OSD_IN ? "(in)" :
>> -                    (w == CEPH_OSD_OUT ? "(out)" : ""));
>> +               print_osd_info(&map->fsid, gid, "osd%d weight 0x%x %s\n",
>> +                              osd, w,
>> +                              w == CEPH_OSD_IN ? "(in)" :
>> +                              (w == CEPH_OSD_OUT ? "(out)" : ""));
>>                  map->osd_weight[osd] = w;
>>
>>                  /*
>> @@ -1898,10 +1916,11 @@ static int decode_new_up_state_weight(void **p, void *end, u8 struct_v,
>>                  BUG_ON(osd >= map->max_osd);
>>                  if ((map->osd_state[osd] & CEPH_OSD_UP) &&
>>                      (xorstate & CEPH_OSD_UP))
>> -                       pr_info("osd%d down\n", osd);
>> +                       print_osd_info(&map->fsid, gid, "osd%d down\n", osd);
>>                  if ((map->osd_state[osd] & CEPH_OSD_EXISTS) &&
>>                      (xorstate & CEPH_OSD_EXISTS)) {
>> -                       pr_info("osd%d does not exist\n", osd);
>> +                       print_osd_info(&map->fsid, gid, "osd%d does not exist\n",
>> +                                      osd);
>>                          ret = set_primary_affinity(map, osd,
>>                                                     CEPH_OSD_DEFAULT_PRIMARY_AFFINITY);
>>                          if (ret)
>> @@ -1931,7 +1950,7 @@ static int decode_new_up_state_weight(void **p, void *end, u8 struct_v,
>>
>>                  dout("%s osd%d addr %s\n", __func__, osd, ceph_pr_addr(&addr));
>>
>> -               pr_info("osd%d up\n", osd);
>> +               print_osd_info(&map->fsid, gid, "osd%d up\n", osd);
>>                  map->osd_state[osd] |= CEPH_OSD_EXISTS | CEPH_OSD_UP;
>>                  map->osd_addr[osd] = addr;
>>          }
>> @@ -1947,7 +1966,7 @@ static int decode_new_up_state_weight(void **p, void *end, u8 struct_v,
>>     * decode and apply an incremental map update.
>>     */
>>    struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, bool msgr2,
>> -                                            struct ceph_osdmap *map)
>> +                                            struct ceph_osdmap *map, u64 gid)
>>    {
>>          struct ceph_fsid fsid;
>>          u32 epoch = 0;
>> @@ -2033,7 +2052,7 @@ struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, bool msgr2,
>>          }
>>
>>          /* new_up_client, new_state, new_weight */
>> -       err = decode_new_up_state_weight(p, end, struct_v, msgr2, map);
>> +       err = decode_new_up_state_weight(p, end, struct_v, msgr2, map, gid);
>>          if (err)
>>                  goto bad;
>>
>> @@ -2051,7 +2070,7 @@ struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, bool msgr2,
>>
>>          /* new_primary_affinity */
>>          if (struct_v >= 2) {
>> -               err = decode_new_primary_affinity(p, end, map);
>> +               err = decode_new_primary_affinity(p, end, map, gid);
>>                  if (err)
>>                          goto bad;
>>          }
>> --
>> 2.25.1
> 
> Hi Daichi,
> 
> I played with this a bit and decided that printing gid is not needed
> after all, given that only osdmap messages are changed.  Instead,
> I switched to printing epoch which can be very useful when debugging
> stuck OSD requests.  Here is the patch I ended up with:
> 
>      https://github.com/ceph/ceph-client/commit/b5f9965fad5a4f3a8d17aa234167e8a85e1b9105
> 
> Could you please take a look and let me know if you are OK with it?

Hi Ilya,

I have looked the patch and tried it. It looks good to me.
Thank you very much!

Best,
Daichi
diff mbox series

Patch

diff --git a/include/linux/ceph/osdmap.h b/include/linux/ceph/osdmap.h
index 5553019c3f07..a9216c64350c 100644
--- a/include/linux/ceph/osdmap.h
+++ b/include/linux/ceph/osdmap.h
@@ -253,7 +253,7 @@  static inline int ceph_decode_pgid(void **p, void *end, struct ceph_pg *pgid)
  struct ceph_osdmap *ceph_osdmap_alloc(void);
  struct ceph_osdmap *ceph_osdmap_decode(void **p, void *end, bool msgr2);
  struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, bool msgr2,
-					     struct ceph_osdmap *map);
+					     struct ceph_osdmap *map, u64 gid);
  extern void ceph_osdmap_destroy(struct ceph_osdmap *map);
  
  struct ceph_osds {
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
index 9d82bb42e958..e9bd6c27c5ad 100644
--- a/net/ceph/osd_client.c
+++ b/net/ceph/osd_client.c
@@ -3945,7 +3945,8 @@  static int handle_one_map(struct ceph_osd_client *osdc,
  	if (incremental)
  		newmap = osdmap_apply_incremental(&p, end,
  						  ceph_msgr2(osdc->client),
-						  osdc->osdmap);
+						  osdc->osdmap,
+						  ceph_client_gid(osdc->client));
  	else
  		newmap = ceph_osdmap_decode(&p, end, ceph_msgr2(osdc->client));
  	if (IS_ERR(newmap))
diff --git a/net/ceph/osdmap.c b/net/ceph/osdmap.c
index 2823bb3cff55..cd65677baff3 100644
--- a/net/ceph/osdmap.c
+++ b/net/ceph/osdmap.c
@@ -1549,8 +1549,23 @@  static int decode_primary_affinity(void **p, void *end,
  	return -EINVAL;
  }
  
+static __printf(3, 4)
+void print_osd_info(struct ceph_fsid *fsid, u64 gid, const char *fmt, ...)
+{
+	struct va_format vaf;
+	va_list args;
+
+	va_start(args, fmt);
+	vaf.fmt = fmt;
+	vaf.va = &args;
+
+	printk(KERN_INFO "%s (%pU %lld): %pV", KBUILD_MODNAME, fsid, gid, &vaf);
+
+	va_end(args);
+}
+
  static int decode_new_primary_affinity(void **p, void *end,
-				       struct ceph_osdmap *map)
+				       struct ceph_osdmap *map, u64 gid)
  {
  	u32 n;
  
@@ -1566,7 +1581,8 @@  static int decode_new_primary_affinity(void **p, void *end,
  		if (ret)
  			return ret;
  
-		pr_info("osd%d primary-affinity 0x%x\n", osd, aff);
+		print_osd_info(&map->fsid, gid, "osd%d primary-affinity 0x%x\n",
+			       osd, aff);
  	}
  
  	return 0;
@@ -1825,7 +1841,8 @@  struct ceph_osdmap *ceph_osdmap_decode(void **p, void *end, bool msgr2)
   *     new_state: { osd=6, xorstate=EXISTS } # clear osd_state
   */
  static int decode_new_up_state_weight(void **p, void *end, u8 struct_v,
-				      bool msgr2, struct ceph_osdmap *map)
+				      bool msgr2, struct ceph_osdmap *map,
+				      u64 gid)
  {
  	void *new_up_client;
  	void *new_state;
@@ -1864,9 +1881,10 @@  static int decode_new_up_state_weight(void **p, void *end, u8 struct_v,
  		osd = ceph_decode_32(p);
  		w = ceph_decode_32(p);
  		BUG_ON(osd >= map->max_osd);
-		pr_info("osd%d weight 0x%x %s\n", osd, w,
-		     w == CEPH_OSD_IN ? "(in)" :
-		     (w == CEPH_OSD_OUT ? "(out)" : ""));
+		print_osd_info(&map->fsid, gid, "osd%d weight 0x%x %s\n",
+			       osd, w,
+			       w == CEPH_OSD_IN ? "(in)" :
+			       (w == CEPH_OSD_OUT ? "(out)" : ""));
  		map->osd_weight[osd] = w;
  
  		/*
@@ -1898,10 +1916,11 @@  static int decode_new_up_state_weight(void **p, void *end, u8 struct_v,
  		BUG_ON(osd >= map->max_osd);
  		if ((map->osd_state[osd] & CEPH_OSD_UP) &&
  		    (xorstate & CEPH_OSD_UP))
-			pr_info("osd%d down\n", osd);
+			print_osd_info(&map->fsid, gid, "osd%d down\n", osd);
  		if ((map->osd_state[osd] & CEPH_OSD_EXISTS) &&
  		    (xorstate & CEPH_OSD_EXISTS)) {
-			pr_info("osd%d does not exist\n", osd);
+			print_osd_info(&map->fsid, gid, "osd%d does not exist\n",
+				       osd);
  			ret = set_primary_affinity(map, osd,
  						   CEPH_OSD_DEFAULT_PRIMARY_AFFINITY);
  			if (ret)
@@ -1931,7 +1950,7 @@  static int decode_new_up_state_weight(void **p, void *end, u8 struct_v,
  
  		dout("%s osd%d addr %s\n", __func__, osd, ceph_pr_addr(&addr));
  
-		pr_info("osd%d up\n", osd);
+		print_osd_info(&map->fsid, gid, "osd%d up\n", osd);
  		map->osd_state[osd] |= CEPH_OSD_EXISTS | CEPH_OSD_UP;
  		map->osd_addr[osd] = addr;
  	}
@@ -1947,7 +1966,7 @@  static int decode_new_up_state_weight(void **p, void *end, u8 struct_v,
   * decode and apply an incremental map update.
   */
  struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, bool msgr2,
-					     struct ceph_osdmap *map)
+					     struct ceph_osdmap *map, u64 gid)
  {
  	struct ceph_fsid fsid;
  	u32 epoch = 0;
@@ -2033,7 +2052,7 @@  struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, bool msgr2,
  	}
  
  	/* new_up_client, new_state, new_weight */
-	err = decode_new_up_state_weight(p, end, struct_v, msgr2, map);
+	err = decode_new_up_state_weight(p, end, struct_v, msgr2, map, gid);
  	if (err)
  		goto bad;
  
@@ -2051,7 +2070,7 @@  struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end, bool msgr2,
  
  	/* new_primary_affinity */
  	if (struct_v >= 2) {
-		err = decode_new_primary_affinity(p, end, map);
+		err = decode_new_primary_affinity(p, end, map, gid);
  		if (err)
  			goto bad;
  	}